summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glslang
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang')
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/.appveyor.yml52
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/.gitignore5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/.travis.yml93
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/CMakeLists.txt74
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/External/CMakeLists.txt69
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/CMakeLists.txt7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/InitializeDll.cpp34
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/InitializeDll.h4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/README.md21
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/CMakeLists.txt21
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h41
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/GlslangToSpv.cpp1023
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/GlslangToSpv.h17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/InReadableOrder.cpp16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/SPVRemapper.cpp194
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/SPVRemapper.h12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/SpvBuilder.cpp139
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/SpvBuilder.h48
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/doc.cpp41
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/doc.h2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/hex_float.h2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/spirv.hpp33
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/SPIRV/spvIR.h11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/StandAlone/CMakeLists.txt22
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/StandAlone/DirStackFileIncluder.h141
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/StandAlone/StandAlone.cpp998
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/StandAlone/Worklist.h13
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/100samplerExternal.frag41
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/300.vert17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/300samplerExternal.frag41
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/310.comp2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/320.comp5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/320.frag225
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/320.geom134
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/320.tesc150
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/320.tese114
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/320.vert255
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/400.frag10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/435.vert2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/450.comp5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/450.frag12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/450.geom5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/450.tesc9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/450.tese7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/450.vert20
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/460.frag17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/460.vert15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/bar.h1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.aliasOpaque.frag.out50
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaque.frag.out65
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out49
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out49
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset.frag.out48
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset2.frag.out37
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out91
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out38
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/100.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/100samplerExternal.frag.out172
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/120.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/150.tesc.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300.vert.out21
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300samplerExternal.frag.out197
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.comp.out12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.frag.out13
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.geom.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.tesc.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.tese.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.vert.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310AofA.vert.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310implicitSizeArrayError.vert.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.comp.out19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.frag.out576
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.geom.out251
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.tesc.out516
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.tese.out276
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.vert.out797
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/330.frag.out12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.frag.out46
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.geom.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.tesc.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.tese.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.vert.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.geom.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.tesc.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.comp.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.geom.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.tesc.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.tese.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.vert.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420_size_gl_in.geom.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430.comp.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430.vert.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430AofA.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430scope.vert.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/435.vert.out25
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/440.frag.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/440.vert.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.comp.out14
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.frag.out15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.geom.out113
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.tesc.out12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.tese.out25
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.vert.out55
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/460.frag.out55
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/460.vert.out51
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/atomic_uint.frag.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/badChars.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/badMacroArgs.frag.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/comment.frag.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/constFold.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/constFoldIntMin.frag.out51
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppBad.vert.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppDeepNest.frag.out20
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppIndent.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppIntMinOverNegativeOne.frag.out14
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppPassMacroName.frag.out67
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppSimple.vert.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/dce.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/functionSemantics.frag.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.-D-U.frag.out55
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.bad.out45
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.out43
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename2.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.esversion.vert.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.frag.out10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.version.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.vert.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.-D-U.frag.out65
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.aliasOpaque.frag.out207
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.amend.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.flatten.frag.out326
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.frag.out624
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.implicit-size.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.multidim.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.assoc.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attribute.expression.comp.out9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attribute.frag.out17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attributeC11.frag.out176
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out109
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.automap.frag.out29
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.basic.comp.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.basic.geom.out169
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.boolConv.vert.out363
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out404
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.calculatelod.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out20
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.cast.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.charLit.vert.out233
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clip.frag.out123
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out190
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out737
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out194
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out419
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out924
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out561
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.frag.out190
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.geom.out830
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.vert.out229
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out262
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.geom.out819
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out382
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out325
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out431
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out399
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out556
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out385
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out505
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out285
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out336
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out250
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out299
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.comparison.vec.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.conditional.frag.out1141
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constantbuffer.frag.out241
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructArray.vert.out381
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructexpr.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructimat.frag.out694
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.dashI.vert.out69
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.depthGreater.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.depthLess.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.discard.frag.out73
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.doLoop.frag.out243
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.1.tese.out457
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.2.tese.out447
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.3.tese.out424
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystruct.init.vert.out112
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.frag.out26
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.vert.out30
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry-in.frag.out118
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry-out.frag.out71
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry.rename.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out66
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet.frag.out66
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flatten.return.frag.out71
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaque.frag.out329
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInit.vert.out316
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out240
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenSubset.frag.out218
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenSubset2.frag.out207
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.float1.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.float4.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out299
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.fraggeom.frag.out112
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.function.frag.out119
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.array.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.vert.out33
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.offset.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out623
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.dx10.frag.out40
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.dx10.vert.out33
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out43
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getsampleposition.dx10.frag.out853
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.global-const-init.frag.out178
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gs-hs-mix.tesc.out1158
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hlslOffset.vert.out85
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.1.tesc.out171
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.2.tesc.out195
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.3.tesc.out373
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.4.tesc.out681
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.5.tesc.out190
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out604
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out625
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.void.tesc.out94
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.identifier.sample.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.if.frag.out135
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.implicitBool.frag.out541
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.include.vert.out75
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.includeNegative.vert.out10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.inf.vert.out172
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.init.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.init2.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.inoutquals.frag.out507
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsic.frexp.frag.out336
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsic.frexp.vert.out222
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.barriers.comp.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.comp.out583
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.double.frag.out79
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.evalfns.frag.out16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f1632.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f3216.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.frag.out10020
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.lit.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.comp.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out45
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.vert.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.down.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.frag.out50
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out30
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.vert.out6574
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.isfinite.frag.out293
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.layout.frag.out34
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.2dms.dx10.frag.out40
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.array.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.basic.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.basic.dx10.vert.out33
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.buffer.dx10.frag.out95
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out95
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.offset.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out25
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out41
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out41
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.localStructuredBuffer.comp.out64
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.binary.frag.out160
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.binary.vec.frag.out132
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.unary.frag.out151
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logicalConvert.frag.out342
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.loopattr.frag.out233
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matNx1.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.bool.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.int.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matpack-1.frag.out187
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matpack-pragma.frag.out268
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matrixSwizzle.vert.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matrixindex.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.max.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.memberFunCall.frag.out264
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mintypes.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.negative.frag.out68
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.negative2.frag.out74
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.operator.frag.out209
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiDescriptorSet.frag.out168
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiEntry.vert.out24
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiReturn.frag.out11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.namespace.frag.out181
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.nonint-index.frag.out152
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.numericsuffixes.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.numthreads.comp.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.opaque-type-bug.frag.out112
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.overload.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.params.default.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.params.default.negative.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialFlattenLocal.vert.out366
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialFlattenMixed.vert.out150
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialInit.frag.out71
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.pp.line.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.pp.vert.out61
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precedence.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precedence2.frag.out43
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precise.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.preprocessor.frag.out163
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.atomic.frag.out9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.binary.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.vec1.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promotions.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.reflection.vert.out32
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.atomics.frag.out27
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.bracket.frag.out25
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.register.frag.out27
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.scalar.bracket.frag.out25
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.swizzle.frag.out9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.vec2.bracket.frag.out25
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.array.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.basic.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.offset.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.array.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out602
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out578
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.dualmode.frag.out157
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.negative.frag.out98
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.negative2.frag.out80
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out469
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out493
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out604
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out580
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out471
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out495
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out33
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out33
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalar-length.frag.out112
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalar2matrix.frag.out506
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalarCast.vert.out493
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scope.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic-1.vert.out374
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic.geom.out400
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic.vert.out588
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semicolons.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shapeConv.frag.out209
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shapeConvRet.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shift.per-set.frag.out225
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sin.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.snorm.uav.comp.out212
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.staticMemberFunction.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.string.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.stringtoken.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.frag.out309
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split-1.vert.out135
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.array.geom.out37
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.assign.frag.out250
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.call.vert.out135
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.nested.geom.out374
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.trivial.geom.out129
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.trivial.vert.out49
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structIoFourWay.frag.out312
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structStructName.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structarray.flatten.frag.out276
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structarray.flatten.geom.out119
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.append.fn.frag.out286
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.append.frag.out224
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out18
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.floatidx.comp.out326
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out228
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn2.comp.out246
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.frag.out191
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.incdec.frag.out324
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structin.vert.out557
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.subpass.frag.out777
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.switch.frag.out27
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.swizzle.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.synthesizeInput.frag.out172
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.target.frag.out209
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.targetStruct1.frag.out298
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.targetStruct2.frag.out298
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.templatetypes.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texture.struct.frag.out1197
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texture.subvec4.frag.out544
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texturebuffer.frag.out153
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.this.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.tx.bracket.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.tx.overload.frag.out247
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.type.half.frag.out180
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.type.identifier.frag.out102
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.typeGraphCopy.vert.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.typedef.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.void.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.whileLoop.frag.out9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/implicitInnerAtomicUint.frag.out20
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/include.vert.out67
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/invalidSwizzle.vert.out38
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/lineContinuation.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/link1.vk.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/missingBodies.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/negativeArraySize.comp.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/newTexture.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/nonVulkan.frag.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/numeral.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/overlongLiteral.frag.out19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/precise.tesc.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/precise_struct_block.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.edge_cases.vert.err2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.errors.vert.err1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.extensions.vert.err1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.function_macro.vert.err2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.line.frag.err2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.pragma.vert.err2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.simple.vert.err2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/reflection.vert.out11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.dcefunc.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.everything.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.none.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.strip.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.none.frag.out19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.templatetypes.none.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.if.everything.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.if.none.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.invalid-spirv-1.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.invalid-spirv-2.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1a.everything.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1a.none.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1b.everything.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1b.none.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.specconst.comp.out31
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.switch.everything.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.switch.none.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.uniformarray.everything.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.uniformarray.none.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/specExamples.frag.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/specExamples.vert.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.100ops.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.130.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.140.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.150.geom.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.150.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300BuiltIns.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layout.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layout.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layoutp.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.310.bitcast.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.310.comp.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.330.geom.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.tesc.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.tese.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.420.geom.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.430.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.430.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.geom.out20
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.noRedecl.tesc.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.tesc.out165
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.comp.out33
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.frag.out51
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.vert.out45
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.AofA.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.GeometryShaderPassthrough.geom.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.OVR_multiview.vert.out57
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.accessChain.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.aggOps.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.always-discard.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.always-discard2.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.arbPostDepthCoverage.frag.out42
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.arbPostDepthCoverage_Error.frag.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.atomic.comp.out141
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.atomicInt64.comp.out215
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.bitCast.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.bool.vert.out16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.boolInBlock.frag.out30
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.branch-return.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.buffer.autoassign.frag.out11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.conditionalDiscard.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.conversion.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOut.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOutIndirect.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOutIndirect.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.debugInfo.frag.out280
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.deepRvalue.frag.out81
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.depthOut.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.discard-dce.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.do-simple.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.do-while-continue-break.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.doWhileLoop.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.double.comp.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.earlyReturnDiscard.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.extPostDepthCoverage.frag.out23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.extPostDepthCoverage_Error.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.float16.frag.out8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.flowControl.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-complex-condition.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-continue-break.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-nobody.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-notest.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-simple.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.forLoop.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.forwardFun.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionCall.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionNestedOpaque.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionSemantics.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glFragColor.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glsl.register.autoassign.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glsl.register.noautoassign.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.hlslDebugInfo.frag.out58
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.hlslOffsets.vert.out76
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.image.frag.out33
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.imageLoadStoreLod.frag.out135
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.int16.frag.out779
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.int64.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.intOps.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.interpOps.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.layoutNested.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.length.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.localAggregates.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.loops.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.loopsArtificial.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.looseUniformNoLoc.vert.out8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matFun.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matrix.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matrix2.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.memoryQualifier.frag.out10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.merge-unreachable.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiStruct.comp.out396
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiStructFuncall.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.newTexture.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noBuiltInLoc.vert.out74
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noDeadDecorations.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noLocation.vert.out10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noWorkgroup.comp.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.nonSquare.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.offsets.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.paramMemory.frag.out137
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precise.tesc.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precise.tese.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precision.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precisionNonESSamp.frag.out98
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.prepost.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.pushConstant.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.pushConstantAnon.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.qualifiers.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.queryL.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.autoassign-2.frag.out11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.autoassign.frag.out11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.noautoassign.frag.out11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.subpass.frag.out75
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.rw.autoassign.frag.out15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sample.frag.out32
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sampleId.frag.out52
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.samplePosition.frag.out55
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.separate.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.set.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderBallot.comp.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderBallotAMD.comp.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderDrawParams.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderFragMaskAMD.frag.out122
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderGroupVote.comp.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderStencilExport.frag.out28
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shiftOps.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shortCircuit.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.simpleFunctionCall.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.simpleMat.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sparseTexture.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sparseTextureClamp.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConst.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstant.comp.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstantComposite.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstantOperations.vert.out10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.ssbo.autoassign.frag.out161
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.ssboAlias.frag.out88
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out103
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.vert.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.storageBuffer.vert.out67
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structAssignment.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structDeref.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structure.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.subpass.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.switch.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.swizzle.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.swizzleInversion.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.test.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.test.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.sampler.transform.frag.out37
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.textureBuffer.vert.out64
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.textureGatherBiasLod.frag.out384
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.types.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.uint.frag.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.uniformArray.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.variableArrayIndex.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.varyingArray.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.varyingArrayIndirect.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out42
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.viewportArray2.vert.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.voidFunction.frag.out5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.while-continue-break.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.while-simple.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.whileLoop.frag.out3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/syntaxError.frag.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/versionsClean.vert.out2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/versionsErrors.vert.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.ast.vert.out4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.comp.out1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.frag.out11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.vert.out7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/constFoldIntMin.frag12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/cppDeepNest.frag117
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/cppIntMinOverNegativeOne.frag6
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/cppPassMacroName.frag12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/cppSimple.vert10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/foo.h1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/glsl.-D-U.frag32
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/glsl.entryPointRename.vert11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/glsl.entryPointRename2.vert6
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/glspv.frag15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.-D-U.frag31
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.aliasOpaque.frag29
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.array.frag15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.attributeC11.frag18
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.attributeGlobalBuffer.frag8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.automap.frag57
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.boolConv.vert20
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.buffer.frag39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.charLit.vert17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clip.frag12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.frag6
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.geom19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.vert8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.frag7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.geom19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.vert15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.frag6
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.geom20
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.vert13
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.frag9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.geom21
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.vert21
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-5.frag9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-5.vert21
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-6.frag10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-6.vert23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-7.frag10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-7.vert23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-8.frag10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-8.vert20
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-9.frag8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-9.vert19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.conditional.frag28
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constantbuffer.frag26
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constructArray.vert10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constructimat.frag52
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.dashI.vert13
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.doLoop.frag7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.1.tese32
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.2.tese35
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.3.tese31
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.emptystruct.init.vert8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.explicitDescriptorSet.frag15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaque.frag40
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaqueInit.vert23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaqueInitMix.vert13
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenSubset.frag36
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenSubset2.frag24
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.forLoop.frag14
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.fraggeom.frag17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.function.frag25
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.array.dx10.frag4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.basic.dx10.frag8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.offset.dx10.frag10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.offsetarray.dx10.frag4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.getsampleposition.dx10.frag6
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.global-const-init.frag14
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gs-hs-mix.tesc119
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hlslOffset.vert20
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.3.tesc39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.4.tesc43
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.5.tesc43
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.ctrlpt-1.tesc43
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.ctrlpt-2.tesc47
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.void.tesc2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.implicitBool.frag32
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.include.vert8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.includeNegative.vert8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.inf.vert11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.inoutquals.frag5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsic.frexp.frag37
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsic.frexp.vert28
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsics.frag9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsics.vert5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.isfinite.frag18
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.localStructuredBuffer.comp4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.logicalConvert.frag23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.loopattr.frag14
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.matpack-1.frag27
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.matpack-pragma.frag33
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.memberFunCall.frag16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.negative.frag9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.negative2.frag9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.operator.frag14
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.multiDescriptorSet.frag45
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.namespace.frag23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.nonint-index.frag9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.opaque-type-bug.frag16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.partialFlattenLocal.vert27
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.partialFlattenMixed.vert16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.pp.vert17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.preprocessor.frag13
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.reflection.vert45
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.dualmode.frag14
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.negative.frag13
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.negative2.frag10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalar-length.frag6
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalar2matrix.frag28
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalarCast.vert37
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic-1.vert24
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic.geom5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic.vert8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.shapeConv.frag19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.shift.per-set.frag59
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.snorm.uav.comp15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.struct.split.assign.frag2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.struct.split.nested.geom7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.append.fn.frag23
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.append.frag11
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.floatidx.comp19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.fn2.comp15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.incdec.frag19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structin.vert13
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.subpass.frag113
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.switch.frag2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.synthesizeInput.frag9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.target.frag10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.targetStruct1.frag19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.targetStruct2.frag19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texture.struct.frag55
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texture.subvec4.frag41
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texturebuffer.frag17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.tx.overload.frag17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.type.half.frag19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/hlsl.type.identifier.frag5
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/implicitInnerAtomicUint.frag2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc1/badInc.h1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc1/bar.h3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc1/foo.h3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/bar.h1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/local.h1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/notHere.h4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/bar.h1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/notHere.h1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/remote.h1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc2/bar.h2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/inc2/foo.h1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/include.vert16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/invalidSwizzle.vert10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/numeral.frag3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/overlongLiteral.frag1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/parent.h1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/parentBad3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/reflection.vert24
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/remap.invalid-spirv-1.spvbin0 -> 219 bytes
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/remap.invalid-spirv-2.spvbin0 -> 212 bytes
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/remap.specconst.comp7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/runtests128
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.450.geom2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.450.tesc3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.460.comp9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.460.frag17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.460.vert6
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.OVR_multiview.vert9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.arbPostDepthCoverage.frag13
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.arbPostDepthCoverage_Error.frag12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.atomicInt64.comp79
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.debugInfo.frag52
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.extPostDepthCoverage.frag9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.extPostDepthCoverage_Error.frag9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.hlslDebugInfo.vert4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.hlslOffsets.vert27
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.imageLoadStoreLod.frag36
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.int16.frag314
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.looseUniformNoLoc.vert15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.noBuiltInLoc.vert17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.noLocation.vert39
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.paramMemory.frag30
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.precisionNonESSamp.frag24
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.register.subpass.frag15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.sample.frag9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.sampleId.frag12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.samplePosition.frag12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.shaderFragMaskAMD.frag29
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.shaderStencilExport.frag8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.ssboAlias.frag10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.stereoViewRendering.tesc3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.storageBuffer.vert16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.targetOpenGL.vert10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.targetVulkan.vert9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.texture.sampler.transform.frag13
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.textureBuffer.vert17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.textureGatherBiasLod.frag88
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.viewportArray2.tesc8
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/tokenPaste.vert6
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/validate-shaders.sh269
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/vulkan.frag10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/vulkan.vert16
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/CMakeLists.txt21
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/Include/BaseTypes.h19
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/Include/Common.h12
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/Include/InitializeGlobals.h3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/Include/PoolAlloc.h9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/Include/ShHandle.h7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/Include/Types.h235
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/Include/arrays.h35
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/Include/intermediate.h247
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/Include/revision.h4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp66
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp683
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Initialize.h10
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp689
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/LiveTraverser.h2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp31
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp410
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h85
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/PoolAlloc.cpp62
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/RemoveTree.h2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp68
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Scan.h17
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ScanContext.h2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp387
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp21
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h22
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp62
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Versions.h42
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/gl_types.h2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang.y118
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp8423
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h639
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp226
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp447
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp40
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h277
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/parseConst.cpp6
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp87
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h20
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpMemory.cpp81
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp232
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpSymbols.cpp77
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp18
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h4
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/propagateNoContraction.h2
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/reflection.cpp49
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/reflection.h35
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Unix/CMakeLists.txt7
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Unix/ossource.cpp25
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Windows/CMakeLists.txt9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Windows/ossource.cpp15
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/osinclude.h3
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/Public/ShaderLang.h174
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/gtests/AST.FromFile.cpp18
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/gtests/CMakeLists.txt100
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/gtests/Hlsl.FromFile.cpp130
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/gtests/Link.FromFile.Vk.cpp1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/gtests/Remap.FromFile.cpp1
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/gtests/Spv.FromFile.cpp45
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/gtests/TestFixture.h46
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/hlsl/CMakeLists.txt9
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/hlsl/hlslAttributes.cpp80
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/hlsl/hlslAttributes.h21
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/hlsl/hlslGrammar.cpp892
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/hlsl/hlslGrammar.h28
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseHelper.cpp3890
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseHelper.h234
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseables.cpp87
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/hlsl/hlslScanContext.cpp94
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/hlsl/hlslTokens.h21
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/known_good.json18
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/update_glslang_sources.py151
916 files changed, 79668 insertions, 25723 deletions
diff --git a/3rdparty/bgfx/3rdparty/glslang/.appveyor.yml b/3rdparty/bgfx/3rdparty/glslang/.appveyor.yml
index 64e7ae64aff..07e269bedff 100644
--- a/3rdparty/bgfx/3rdparty/glslang/.appveyor.yml
+++ b/3rdparty/bgfx/3rdparty/glslang/.appveyor.yml
@@ -7,7 +7,7 @@ version: "{build}"
os: Visual Studio 2013
platform:
- - Any CPU
+ - x64
configuration:
- Debug
@@ -17,6 +17,13 @@ branches:
only:
- master
+# Travis advances the master-tot tag to current top of the tree after
+# each push into the master branch, because it relies on that tag to
+# upload build artifacts to the master-tot release. This will cause
+# double testing for each push on Appveyor: one for the push, one for
+# the tag advance. Disable testing tags.
+skip_tags: true
+
clone_depth: 5
matrix:
@@ -25,6 +32,7 @@ matrix:
# scripts that run after cloning repository
install:
- git clone https://github.com/google/googletest.git External/googletest
+ - C:/Python27/python.exe update_glslang_sources.py
build:
parallel: true # enable MSBuild parallel builds
@@ -38,3 +46,45 @@ build_script:
test_script:
- ctest -C %CONFIGURATION% --output-on-failure
- cd ../Test && bash runtests
+ - cd ../build
+
+after_test:
+ # For debug build, the generated dll has a postfix "d" in its name.
+ - ps: >-
+ If ($env:configuration -Match "Debug") {
+ $env:SUFFIX="d"
+ } Else {
+ $env:SUFFIX=""
+ }
+ - cd install
+ # Zip all glslang artifacts for uploading and deploying
+ - 7z a glslang-master-windows-"%PLATFORM%"-"%CONFIGURATION%".zip
+ bin\glslangValidator.exe
+ include\glslang\*
+ include\SPIRV\*
+ lib\glslang%SUFFIX%.lib
+ lib\HLSL%SUFFIX%.lib
+ lib\OGLCompiler%SUFFIX%.lib
+ lib\OSDependent%SUFFIX%.lib
+ lib\SPIRV%SUFFIX%.lib
+ lib\SPVRemapper%SUFFIX%.lib
+ lib\SPIRV-Tools%SUFFIX%.lib
+ lib\SPIRV-Tools-opt%SUFFIX%.lib
+
+artifacts:
+ - path: build\install\*.zip
+ name: artifacts-zip
+
+deploy:
+ - provider: GitHub
+ auth_token:
+ secure: YglcSYdl0TylEa59H4K6lylBEDr586NAt2EMgZquSo+iuPrwgZQuJLPCoihSm9y6
+ release: master-tot
+ description: "Continuous build of the latest master branch by Appveyor and Travis CI"
+ artifact: artifacts-zip
+ draft: false
+ prerelease: false
+ force_update: true
+ on:
+ branch: master
+ APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
diff --git a/3rdparty/bgfx/3rdparty/glslang/.gitignore b/3rdparty/bgfx/3rdparty/glslang/.gitignore
index 30889ac7d9f..a1fe3944b12 100644
--- a/3rdparty/bgfx/3rdparty/glslang/.gitignore
+++ b/3rdparty/bgfx/3rdparty/glslang/.gitignore
@@ -6,8 +6,5 @@ tags
TAGS
build/
Test/localResults/
-Test/multiThread.out
-Test/singleThread.out
-Test/vert.spv
-Test/frag.spv
External/googletest
+External/spirv-tools
diff --git a/3rdparty/bgfx/3rdparty/glslang/.travis.yml b/3rdparty/bgfx/3rdparty/glslang/.travis.yml
index 4a88dce5a9a..4fe4b5e5ba9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/.travis.yml
+++ b/3rdparty/bgfx/3rdparty/glslang/.travis.yml
@@ -7,12 +7,15 @@ os:
- osx
# Use Ubuntu 14.04 LTS (Trusty) as the Linux testing environment.
-sudo: required
+sudo: false
dist: trusty
env:
- - GLSLANG_BUILD_TYPE=Release
- - GLSLANG_BUILD_TYPE=Debug
+ global:
+ - secure: aGFrgzyKp+84hKrGkxVWg8cHV61uqrKEHT38gfSQK6+WS4GfLOyH83p7WnsEBb7AMhzU7LMNFdvOFr6+NaMpVnqRvc40CEG1Q+lNg9Pq9mhIZLowvDrfqTL9kQ+8Nbw5Q6/dg6CTvY7fvRfpfCEmKIUZBRkoKUuHeuM1uy3IupFcdNuL5bSYn3Beo+apSJginh9DI4BLDXFUgBzTRSLLyCX5g3cpaeGGOCr8quJlYx75W6HRck5g9SZuLtUoH9GFEV3l+ZEWB8noErW+J56L03bwNwFuuAh321evw++oQk5KFa8rlDvar3SJ3b1RHB8u/eq5DBYMyaK/fS8+Q7QbGr8diF/wDe68bKO7U9IhpNfExXmczCpExjHomW5TQv4rYdGhygPMfW97aIsPRYyNKcl4fkmb7NDrM8w0Jscdq2g5c2Kz0ItyZoBri/NXLwFQQjaVCs7Pf97TjuMA7mK0GJmDTRzi6SrDYlWMt5BQL3y0CCojyfLIRcTh0CQjQI29s97bLfQrYAxt9GNNFR+HTXRLLrkaAlJkPGEPwUywlSfEThnvHLesNxYqemolAYpQT4ithoL4GehGIHmaxsW295aKVhuRf8K9eBODNqrfblvM42UHhjntT+92ZnQ/Gkq80GqaMxnxi4PO5FyPIxt0r981b54YBkWi8YA4P7w5pNI=
+ matrix:
+ - GLSLANG_BUILD_TYPE=Release
+ - GLSLANG_BUILD_TYPE=Debug
compiler:
- clang
@@ -24,6 +27,9 @@ matrix:
# Skip GCC builds on Mac OS X.
- os: osx
compiler: gcc
+ include:
+ # Additional build using Android NDK.
+ - env: BUILD_NDK=ON
cache:
apt: true
@@ -36,25 +42,82 @@ addons:
apt:
packages:
- clang-3.6
- - ninja-build
install:
- # Install ninja on Mac OS X.
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update && brew install ninja; fi
- # Make sure that clang-3.6 is selected.
+ # Make sure that clang-3.6 is selected on Linux.
- if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "clang" ]]; then
export CC=clang-3.6 CXX=clang++-3.6;
fi
+ # Download Android NDK and Android CMake toolchain file.
+ - if [[ "$BUILD_NDK" == "ON" ]]; then
+ git clone --depth=1 https://github.com/urho3d/android-ndk.git $HOME/android-ndk;
+ export ANDROID_NDK=$HOME/android-ndk;
+ git clone --depth=1 https://github.com/taka-no-me/android-cmake.git $HOME/android-cmake;
+ export TOOLCHAIN_PATH=$HOME/android-cmake/android.toolchain.cmake;
+ fi
before_script:
- - git clone https://github.com/google/googletest.git External/googletest
+ - git clone --depth=1 https://github.com/google/googletest.git External/googletest
+ - ./update_glslang_sources.py
script:
- mkdir build && cd build
- # We need to install the compiled binaries so the paths in the runtests script can resolve correctly.
- - cmake -GNinja -DCMAKE_BUILD_TYPE=${GLSLANG_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
- - ninja install
- # Run Google-Test-based tests.
- - ctest --output-on-failure
- # Run runtests-based tests.
- - cd ../Test && ./runtests
+ # For Android, do release building using NDK without testing.
+ # For Linux and macOS, do debug/release building with testing.
+ - if [[ "$BUILD_NDK" == "ON" ]]; then
+ cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH}
+ -DANDROID_NATIVE_API_LEVEL=android-12
+ -DCMAKE_BUILD_TYPE=Release
+ -DANDROID_ABI="armeabi-v7a with NEON"
+ -DBUILD_TESTING=OFF ..;
+ make -j4;
+ else
+ cmake -DCMAKE_BUILD_TYPE=${GLSLANG_BUILD_TYPE}
+ -DCMAKE_INSTALL_PREFIX=`pwd`/install ..;
+ make -j4 install;
+ ctest --output-on-failure &&
+ cd ../Test && ./runtests;
+ fi
+
+after_success:
+ # For debug build, the generated dll has a postfix "d" in its name.
+ - if [[ "${GLSLANG_BUILD_TYPE}" == "Debug" ]]; then
+ export SUFFIX="d";
+ else
+ export SUFFIX="";
+ fi
+ # Create tarball for deployment
+ - if [[ ${CC} == clang* && "${BUILD_NDK}" != "ON" ]]; then
+ cd ../build/install;
+ export TARBALL=glslang-master-${TRAVIS_OS_NAME}-${GLSLANG_BUILD_TYPE}.zip;
+ zip ${TARBALL}
+ bin/glslangValidator
+ include/glslang/*
+ include/SPIRV/*
+ lib/libglslang${SUFFIX}.a
+ lib/libHLSL${SUFFIX}.a
+ lib/libOGLCompiler${SUFFIX}.a
+ lib/libOSDependent${SUFFIX}.a
+ lib/libSPIRV${SUFFIX}.a
+ lib/libSPVRemapper${SUFFIX}.a
+ lib/libSPIRV-Tools${SUFFIX}.a
+ lib/libSPIRV-Tools-opt${SUFFIX}.a;
+ fi
+
+before_deploy:
+ # Tag the current top of the tree as "master-tot".
+ # Travis CI replies on the tag name to properly push to GitHub Releases.
+ - git config --global user.name "Travis CI"
+ - git config --global user.email "builds@travis-ci.org"
+ - git tag -f master-tot
+ - git push -q -f https://${glslangtoken}@github.com/KhronosGroup/glslang --tags
+
+deploy:
+ provider: releases
+ api_key: ${glslangtoken}
+ on:
+ branch: master
+ condition: ${CC} == clang* && ${BUILD_NDK} != ON
+ file: ${TARBALL}
+ skip_cleanup: true
+ overwrite: true
diff --git a/3rdparty/bgfx/3rdparty/glslang/CMakeLists.txt b/3rdparty/bgfx/3rdparty/glslang/CMakeLists.txt
index 32395c05982..0d453cc6efd 100644
--- a/3rdparty/bgfx/3rdparty/glslang/CMakeLists.txt
+++ b/3rdparty/bgfx/3rdparty/glslang/CMakeLists.txt
@@ -1,6 +1,19 @@
-cmake_minimum_required(VERSION 2.8.11)
+# increase to 3.1 once all major distributions
+# include a version of CMake >= 3.1
+cmake_minimum_required(VERSION 2.8.12)
+if (POLICY CMP0048)
+ cmake_policy(SET CMP0048 NEW)
+endif()
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+# Adhere to GNU filesystem layout conventions
+include(GNUInstallDirs)
+
+option(SKIP_GLSLANG_INSTALL "Skip installation" ${SKIP_GLSLANG_INSTALL})
+if(NOT ${SKIP_GLSLANG_INSTALL})
+ set(ENABLE_GLSLANG_INSTALL ON)
+endif()
+
option(ENABLE_AMD_EXTENSIONS "Enables support of AMD-specific extensions" ON)
option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON)
@@ -8,11 +21,15 @@ option(ENABLE_NV_EXTENSIONS "Enables support of Nvidia-specific extensions" ON)
option(ENABLE_HLSL "Enables HLSL input support" ON)
-enable_testing()
+option(ENABLE_OPT "Enables spirv-opt capability if present" ON)
-set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "prefix")
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32)
+ set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE)
+endif()
project(glslang)
+# make testing optional
+include(CTest)
if(ENABLE_AMD_EXTENSIONS)
add_definitions(-DAMD_EXTENSIONS)
@@ -33,42 +50,59 @@ if(WIN32)
endif(MSVC)
add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
elseif(UNIX)
- add_definitions(-fPIC)
add_definitions(-DGLSLANG_OSINCLUDE_UNIX)
else(WIN32)
message("unknown platform")
endif(WIN32)
-if(CMAKE_COMPILER_IS_GNUCXX)
- add_definitions(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs
- -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable)
- add_definitions(-Wno-reorder) # disable this from -Wall, since it happens all over.
- add_definitions(-std=c++11)
+if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
+ add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs
+ -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions)
+ add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over.
elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
- add_definitions(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs
- -Wunused-parameter -Wunused-value -Wunused-variable)
- add_definitions(-Wno-reorder) # disable this from -Wall, since it happens all over.
- add_definitions(-std=c++11)
+ add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs
+ -Wunused-parameter -Wunused-value -Wunused-variable)
+ add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over.
+endif()
+
+# Request C++11
+if(${CMAKE_VERSION} VERSION_LESS 3.1)
+ # CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD
+ # remove this block once CMake >=3.1 has fixated in the ecosystem
+ add_compile_options(-std=c++11)
+else()
+ set(CMAKE_CXX_STANDARD 11)
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
+ set(CMAKE_CXX_EXTENSIONS OFF)
endif()
function(glslang_set_link_args TARGET)
# For MinGW compiles, statically link against the GCC and C++ runtimes.
# This avoids the need to ship those runtimes as DLLs.
- if(WIN32)
- if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
- set_target_properties(${TARGET} PROPERTIES
- LINK_FLAGS "-static -static-libgcc -static-libstdc++")
- endif()
- endif(WIN32)
+ if(WIN32 AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
+ set_target_properties(${TARGET} PROPERTIES
+ LINK_FLAGS "-static -static-libgcc -static-libstdc++")
+ endif()
endfunction(glslang_set_link_args)
# We depend on these for later projects, so they should come first.
add_subdirectory(External)
+if(NOT TARGET SPIRV-Tools-opt)
+ set(ENABLE_OPT OFF)
+endif()
+
+if(ENABLE_OPT)
+ message(STATUS "optimizer enabled")
+ add_definitions(-DENABLE_OPT)
+elseif(ENABLE_HLSL)
+ message(STATUS "spirv-tools not linked - illegal SPIRV may be generated for HLSL")
+endif()
+
add_subdirectory(glslang)
add_subdirectory(OGLCompilersDLL)
if(ENABLE_GLSLANG_BINARIES)
- add_subdirectory(StandAlone)
+ add_subdirectory(StandAlone)
endif()
add_subdirectory(SPIRV)
if(ENABLE_HLSL)
diff --git a/3rdparty/bgfx/3rdparty/glslang/External/CMakeLists.txt b/3rdparty/bgfx/3rdparty/glslang/External/CMakeLists.txt
index 5180ea56931..4d9690134ae 100644
--- a/3rdparty/bgfx/3rdparty/glslang/External/CMakeLists.txt
+++ b/3rdparty/bgfx/3rdparty/glslang/External/CMakeLists.txt
@@ -1,34 +1,43 @@
# Suppress all warnings from external projects.
set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w)
-if (TARGET gmock)
- message(STATUS "Google Mock already configured - use it")
-elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest)
- # We need to make sure Google Test does not mess up with the
- # global CRT settings on Windows.
- if(WIN32)
- set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
- endif(WIN32)
- add_subdirectory(googletest)
- set(GTEST_TARGETS
- gtest
- gtest_main
- gmock
- gmock_main
- )
- foreach(target ${GTEST_TARGETS})
- set_property(TARGET ${target} PROPERTY FOLDER gtest)
- endforeach()
- mark_as_advanced(gmock_build_tests
- BUILD_GMOCK
- BUILD_GTEST
- BUILD_SHARED_LIBS
- gtest_build_samples
- gtest_build_tests
- gtest_disable_pthreads
- gtest_force_shared_crt
- gtest_hide_internal_symbols)
-else()
- message(STATUS
- "Google Mock was not found - tests based on that will not build")
+if(BUILD_TESTING)
+ if(TARGET gmock)
+ message(STATUS "Google Mock already configured - use it")
+ elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest)
+ # We need to make sure Google Test does not mess up with the
+ # global CRT settings on Windows.
+ if(WIN32)
+ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+ endif(WIN32)
+ add_subdirectory(googletest)
+ set(GTEST_TARGETS
+ gtest
+ gtest_main
+ gmock
+ gmock_main)
+ foreach(target ${GTEST_TARGETS})
+ set_property(TARGET ${target} PROPERTY FOLDER gtest)
+ endforeach()
+ mark_as_advanced(gmock_build_tests
+ BUILD_GMOCK
+ BUILD_GTEST
+ BUILD_SHARED_LIBS
+ gtest_build_samples
+ gtest_build_tests
+ gtest_disable_pthreads
+ gtest_force_shared_crt
+ gtest_hide_internal_symbols)
+ else()
+ message(STATUS
+ "Google Mock was not found - tests based on that will not build")
+ endif()
endif()
+
+if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt)
+ if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools)
+ set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests")
+ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools spirv-tools)
+ endif()
+endif()
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/CMakeLists.txt b/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/CMakeLists.txt
index 4954db94584..5bb3f0ee696 100644
--- a/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/CMakeLists.txt
+++ b/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/CMakeLists.txt
@@ -2,10 +2,13 @@ set(SOURCES InitializeDll.cpp InitializeDll.h)
add_library(OGLCompiler STATIC ${SOURCES})
set_property(TARGET OGLCompiler PROPERTY FOLDER glslang)
+set_property(TARGET OGLCompiler PROPERTY POSITION_INDEPENDENT_CODE ON)
if(WIN32)
source_group("Source" FILES ${SOURCES})
endif(WIN32)
-install(TARGETS OGLCompiler
- ARCHIVE DESTINATION lib)
+if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS OGLCompiler
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/InitializeDll.cpp b/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/InitializeDll.cpp
index 2eb912c422f..abea9108b15 100644
--- a/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/InitializeDll.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/InitializeDll.cpp
@@ -38,13 +38,17 @@
#include "InitializeDll.h"
#include "../glslang/Include/InitializeGlobals.h"
-
#include "../glslang/Public/ShaderLang.h"
+#include "../glslang/Include/PoolAlloc.h"
namespace glslang {
OS_TLSIndex ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
+// Per-process initialization.
+// Needs to be called at least once before parsing, etc. is done.
+// Will also do thread initialization for the calling thread; other
+// threads will need to do that explicitly.
bool InitProcess()
{
glslang::GetGlobalLock();
@@ -85,7 +89,9 @@ bool InitProcess()
return true;
}
-
+// Per-thread scoped initialization.
+// Must be called at least once by each new thread sharing the
+// symbol tables, etc., needed to parse.
bool InitThread()
{
//
@@ -99,17 +105,21 @@ bool InitThread()
if (OS_GetTLSValue(ThreadInitializeIndex) != 0)
return true;
- InitializeMemoryPools();
-
if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) {
assert(0 && "InitThread(): Unable to set init flag.");
return false;
}
+ glslang::SetThreadPoolAllocator(nullptr);
+
return true;
}
-
+// Not necessary to call this: InitThread() is reentrant, and the need
+// to do per thread tear down has been removed.
+//
+// This is kept, with memory management removed, to satisfy any exiting
+// calls to it that rely on it.
bool DetachThread()
{
bool success = true;
@@ -125,14 +135,18 @@ bool DetachThread()
assert(0 && "DetachThread(): Unable to clear init flag.");
success = false;
}
-
- FreeGlobalPools();
-
}
return success;
}
+// Not necessary to call this: InitProcess() is reentrant.
+//
+// This is kept, with memory management removed, to satisfy any exiting
+// calls to it that rely on it.
+//
+// Users of glslang should call shFinalize() or glslang::FinalizeProcess() for
+// process-scoped memory tear down.
bool DetachProcess()
{
bool success = true;
@@ -140,12 +154,8 @@ bool DetachProcess()
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
return true;
- ShFinalize();
-
success = DetachThread();
- FreePoolIndex();
-
OS_FreeTLSIndex(ThreadInitializeIndex);
ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
diff --git a/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/InitializeDll.h b/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/InitializeDll.h
index 60b2b1593d6..661cee4d240 100644
--- a/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/InitializeDll.h
+++ b/3rdparty/bgfx/3rdparty/glslang/OGLCompilersDLL/InitializeDll.h
@@ -40,8 +40,8 @@ namespace glslang {
bool InitProcess();
bool InitThread();
-bool DetachThread();
-bool DetachProcess();
+bool DetachThread(); // not called from standalone, perhaps other tools rely on parts of it
+bool DetachProcess(); // not called from standalone, perhaps other tools rely on parts of it
} // end namespace glslang
diff --git a/3rdparty/bgfx/3rdparty/glslang/README.md b/3rdparty/bgfx/3rdparty/glslang/README.md
index 193e38da874..7ade2dcd972 100644
--- a/3rdparty/bgfx/3rdparty/glslang/README.md
+++ b/3rdparty/bgfx/3rdparty/glslang/README.md
@@ -49,9 +49,16 @@ There is also a non-shader extension
Building
--------
+Instead of building manually, you can also download the binaries for your
+platform directly from the [master-tot release][master-tot-release] on GitHub.
+Those binaries are automatically uploaded by the buildbots after successful
+testing and they always reflect the current top of the tree of the master
+branch.
+
### Dependencies
* [CMake][cmake]: for generating compilation targets.
+* [Python 2.7][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools.)
* [bison][bison]: _optional_, but needed when changing the grammar (glslang.y).
* [googletest][googletest]: _optional_, but should use if making any changes to glslang.
@@ -74,6 +81,18 @@ cd <the directory glslang was cloned to, "External" will be a subdirectory>
git clone https://github.com/google/googletest.git External/googletest
```
+If you wish to assure that SPIR-V generated from HLSL is legal for Vulkan,
+or wish to invoke -Os to reduce SPIR-V size from HLSL or GLSL, install
+spirv-tools with this:
+
+```bash
+./update_glslang_sources.py
+```
+
+For running the CMake GUI or Visual Studio with python dependencies, you will,
+in addition to python within the cygwin environment, need a Windows [python][python]
+installation, including selecting the `PATH` update.
+
#### 3) Configure
Assume the source directory is `$SOURCE_DIR` and
@@ -301,6 +320,8 @@ Basic Internal Operation
[cmake]: https://cmake.org/
+[python]: https://www.python.org/
[bison]: https://www.gnu.org/software/bison/
[googletest]: https://github.com/google/googletest
[bison-gnu-win32]: http://gnuwin32.sourceforge.net/packages/bison.htm
+[master-tot-release]: https://github.com/KhronosGroup/glslang/releases/tag/master-tot
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/CMakeLists.txt b/3rdparty/bgfx/3rdparty/glslang/SPIRV/CMakeLists.txt
index aaf117802fe..b1c02777961 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/CMakeLists.txt
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/CMakeLists.txt
@@ -41,17 +41,30 @@ endif(ENABLE_NV_EXTENSIONS)
add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
set_property(TARGET SPIRV PROPERTY FOLDER glslang)
-target_link_libraries(SPIRV glslang)
+set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
add_library(SPVRemapper STATIC ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
+set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)
+
+if(ENABLE_OPT)
+ target_include_directories(SPIRV
+ PRIVATE ${spirv-tools_SOURCE_DIR}/include
+ PRIVATE ${spirv-tools_SOURCE_DIR}/source
+ )
+ target_link_libraries(SPIRV glslang SPIRV-Tools-opt SPVRemapper)
+else()
+ target_link_libraries(SPIRV glslang)
+endif(ENABLE_OPT)
if(WIN32)
source_group("Source" FILES ${SOURCES} ${HEADERS})
source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
endif(WIN32)
-install(TARGETS SPIRV SPVRemapper
- ARCHIVE DESTINATION lib)
+if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS SPIRV SPVRemapper
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION include/SPIRV/)
+ install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/)
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h b/3rdparty/bgfx/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h
index d2098cc1af6..7e97be38fe7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h
@@ -28,24 +28,16 @@
#define GLSLextAMD_H
enum BuiltIn;
+enum Capability;
enum Decoration;
enum Op;
static const int GLSLextAMDVersion = 100;
-static const int GLSLextAMDRevision = 2;
+static const int GLSLextAMDRevision = 6;
// SPV_AMD_shader_ballot
static const char* const E_SPV_AMD_shader_ballot = "SPV_AMD_shader_ballot";
-static const Op OpGroupIAddNonUniformAMD = static_cast<Op>(5000);
-static const Op OpGroupFAddNonUniformAMD = static_cast<Op>(5001);
-static const Op OpGroupFMinNonUniformAMD = static_cast<Op>(5002);
-static const Op OpGroupUMinNonUniformAMD = static_cast<Op>(5003);
-static const Op OpGroupSMinNonUniformAMD = static_cast<Op>(5004);
-static const Op OpGroupFMaxNonUniformAMD = static_cast<Op>(5005);
-static const Op OpGroupUMaxNonUniformAMD = static_cast<Op>(5006);
-static const Op OpGroupSMaxNonUniformAMD = static_cast<Op>(5007);
-
enum ShaderBallotAMD {
ShaderBallotBadAMD = 0, // Don't use
@@ -79,16 +71,6 @@ enum ShaderTrinaryMinMaxAMD {
// SPV_AMD_shader_explicit_vertex_parameter
static const char* const E_SPV_AMD_shader_explicit_vertex_parameter = "SPV_AMD_shader_explicit_vertex_parameter";
-static const BuiltIn BuiltInBaryCoordNoPerspAMD = static_cast<BuiltIn>(4992);
-static const BuiltIn BuiltInBaryCoordNoPerspCentroidAMD = static_cast<BuiltIn>(4993);
-static const BuiltIn BuiltInBaryCoordNoPerspSampleAMD = static_cast<BuiltIn>(4994);
-static const BuiltIn BuiltInBaryCoordSmoothAMD = static_cast<BuiltIn>(4995);
-static const BuiltIn BuiltInBaryCoordSmoothCentroidAMD = static_cast<BuiltIn>(4996);
-static const BuiltIn BuiltInBaryCoordSmoothSampleAMD = static_cast<BuiltIn>(4997);
-static const BuiltIn BuiltInBaryCoordPullModelAMD = static_cast<BuiltIn>(4998);
-
-static const Decoration DecorationExplicitInterpAMD = static_cast<Decoration>(4999);
-
enum ShaderExplicitVertexParameterAMD {
ShaderExplicitVertexParameterBadAMD = 0, // Don't use
@@ -113,4 +95,23 @@ enum GcnShaderAMD {
// SPV_AMD_gpu_shader_half_float
static const char* const E_SPV_AMD_gpu_shader_half_float = "SPV_AMD_gpu_shader_half_float";
+// SPV_AMD_texture_gather_bias_lod
+static const char* const E_SPV_AMD_texture_gather_bias_lod = "SPV_AMD_texture_gather_bias_lod";
+
+// SPV_AMD_gpu_shader_int16
+static const char* const E_SPV_AMD_gpu_shader_int16 = "SPV_AMD_gpu_shader_int16";
+
+// SPV_AMD_shader_image_load_store_lod
+static const char* const E_SPV_AMD_shader_image_load_store_lod = "SPV_AMD_shader_image_load_store_lod";
+
+static const Capability CapabilityImageReadWriteLodAMD = static_cast<Capability>(5015);
+
+// SPV_AMD_shader_fragment_mask
+static const char* const E_SPV_AMD_shader_fragment_mask = "SPV_AMD_shader_fragment_mask";
+
+static const Capability CapabilityFragmentMaskAMD = static_cast<Capability>(5010);
+
+static const Op OpFragmentMaskFetchAMD = static_cast<Op>(5011);
+static const Op OpFragmentFetchAMD = static_cast<Op>(5012);
+
#endif // #ifndef GLSLextAMD_H
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h b/3rdparty/bgfx/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h
index a8f20c3514c..2eb10ae629a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h
@@ -32,12 +32,17 @@ enum Op;
enum Capability;
static const int GLSLextKHRVersion = 100;
-static const int GLSLextKHRRevision = 1;
+static const int GLSLextKHRRevision = 2;
-static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot";
-static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote";
-static const char* const E_SPV_KHR_device_group = "SPV_KHR_device_group";
-static const char* const E_SPV_KHR_multiview = "SPV_KHR_multiview";
-static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters";
+static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot";
+static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote";
+static const char* const E_SPV_KHR_device_group = "SPV_KHR_device_group";
+static const char* const E_SPV_KHR_multiview = "SPV_KHR_multiview";
+static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters";
+static const char* const E_SPV_KHR_16bit_storage = "SPV_KHR_16bit_storage";
+static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class";
+static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage";
+static const char* const E_SPV_EXT_shader_stencil_export = "SPV_EXT_shader_stencil_export";
+static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shader_viewport_index_layer";
#endif // #ifndef GLSLextKHR_H
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/GlslangToSpv.cpp b/3rdparty/bgfx/3rdparty/glslang/SPIRV/GlslangToSpv.cpp
index cdfb309b1bf..c23aa921863 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/GlslangToSpv.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/GlslangToSpv.cpp
@@ -52,6 +52,16 @@ namespace spv {
#endif
}
+#ifdef ENABLE_OPT
+ #include "spirv-tools/optimizer.hpp"
+ #include "message.h"
+ #include "SPVRemapper.h"
+#endif
+
+#ifdef ENABLE_OPT
+using namespace spvtools;
+#endif
+
// Glslang includes
#include "../glslang/MachineIndependent/localintermediate.h"
#include "../glslang/MachineIndependent/SymbolTable.h"
@@ -68,11 +78,6 @@ namespace spv {
namespace {
-// For low-order part of the generator's magic number. Bump up
-// when there is a change in the style (e.g., if SSA form changes,
-// or a different instruction sequence to do something gets used).
-const int GeneratorVersion = 1;
-
namespace {
class SpecConstantOpModeGuard {
public:
@@ -101,7 +106,7 @@ private:
//
class TGlslangToSpvTraverser : public glslang::TIntermTraverser {
public:
- TGlslangToSpvTraverser(const glslang::TIntermediate*, spv::SpvBuildLogger* logger);
+ TGlslangToSpvTraverser(const glslang::TIntermediate*, spv::SpvBuildLogger* logger, glslang::SpvOptions& options);
virtual ~TGlslangToSpvTraverser() { }
bool visitAggregate(glslang::TVisit, glslang::TIntermAggregate*);
@@ -122,6 +127,9 @@ protected:
spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier);
spv::BuiltIn TranslateBuiltInDecoration(glslang::TBuiltInVariable, bool memberDeclaration);
spv::ImageFormat TranslateImageFormat(const glslang::TType& type);
+ spv::SelectionControlMask TranslateSelectionControl(glslang::TSelectionControl) const;
+ spv::LoopControlMask TranslateLoopControl(glslang::TLoopControl) const;
+ spv::StorageClass TranslateStorageClass(const glslang::TType&);
spv::Id createSpvVariable(const glslang::TIntermSymbol*);
spv::Id getSampledType(const glslang::TSampler&);
spv::Id getInvertedSwizzleType(const glslang::TIntermTyped&);
@@ -145,6 +153,8 @@ protected:
void declareUseOfStructMember(const glslang::TTypeList& members, int glslangMember);
bool isShaderEntryPoint(const glslang::TIntermAggregate* node);
+ bool writableParam(glslang::TStorageQualifier);
+ bool originalParam(glslang::TStorageQualifier, const glslang::TType&, bool implicitThisParam);
void makeFunctions(const glslang::TIntermSequence&);
void makeGlobalInitializers(const glslang::TIntermSequence&);
void visitFunctions(const glslang::TIntermSequence&);
@@ -177,6 +187,7 @@ protected:
spv::Id createShortCircuit(glslang::TOperator, glslang::TIntermTyped& left, glslang::TIntermTyped& right);
spv::Id getExtBuiltins(const char* name);
+ glslang::SpvOptions& options;
spv::Function* shaderEntry;
spv::Function* currentFunction;
spv::Instruction* entryPoint;
@@ -222,8 +233,7 @@ spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile
return spv::SourceLanguageUnknown;
}
case glslang::EShSourceHlsl:
- // Use SourceLanguageUnknown instead of SourceLanguageHLSL for now, until Vulkan knows what HLSL is
- return spv::SourceLanguageUnknown;
+ return spv::SourceLanguageHLSL;
default:
return spv::SourceLanguageUnknown;
}
@@ -245,37 +255,6 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage)
}
}
-// Translate glslang type to SPIR-V storage class.
-spv::StorageClass TranslateStorageClass(const glslang::TType& type)
-{
- if (type.getQualifier().isPipeInput())
- return spv::StorageClassInput;
- else if (type.getQualifier().isPipeOutput())
- return spv::StorageClassOutput;
- else if (type.getBasicType() == glslang::EbtAtomicUint)
- return spv::StorageClassAtomicCounter;
- else if (type.containsOpaque())
- return spv::StorageClassUniformConstant;
- else if (type.getQualifier().isUniformOrBuffer()) {
- if (type.getQualifier().layoutPushConstant)
- return spv::StorageClassPushConstant;
- if (type.getBasicType() == glslang::EbtBlock)
- return spv::StorageClassUniform;
- else
- return spv::StorageClassUniformConstant;
- } else {
- switch (type.getQualifier().storage) {
- case glslang::EvqShared: return spv::StorageClassWorkgroup; break;
- case glslang::EvqGlobal: return spv::StorageClassPrivate;
- case glslang::EvqConstReadOnly: return spv::StorageClassFunction;
- case glslang::EvqTemporary: return spv::StorageClassFunction;
- default:
- assert(0);
- return spv::StorageClassFunction;
- }
- }
-}
-
// Translate glslang sampler type to SPIR-V dimensionality.
spv::Dim TranslateDimensionality(const glslang::TSampler& sampler)
{
@@ -311,12 +290,12 @@ spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type)
}
// Translate glslang type to SPIR-V block decorations.
-spv::Decoration TranslateBlockDecoration(const glslang::TType& type)
+spv::Decoration TranslateBlockDecoration(const glslang::TType& type, bool useStorageBuffer)
{
if (type.getBasicType() == glslang::EbtBlock) {
switch (type.getQualifier().storage) {
case glslang::EvqUniform: return spv::DecorationBlock;
- case glslang::EvqBuffer: return spv::DecorationBufferBlock;
+ case glslang::EvqBuffer: return useStorageBuffer ? spv::DecorationBlock : spv::DecorationBufferBlock;
case glslang::EvqVaryingIn: return spv::DecorationBlock;
case glslang::EvqVaryingOut: return spv::DecorationBlock;
default:
@@ -481,17 +460,13 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
return spv::BuiltInCullDistance;
case glslang::EbvViewportIndex:
- if (!memberDeclaration) {
- builder.addCapability(spv::CapabilityMultiViewport);
-#ifdef NV_EXTENSIONS
- if (glslangIntermediate->getStage() == EShLangVertex ||
- glslangIntermediate->getStage() == EShLangTessControl ||
- glslangIntermediate->getStage() == EShLangTessEvaluation) {
+ builder.addCapability(spv::CapabilityMultiViewport);
+ if (glslangIntermediate->getStage() == EShLangVertex ||
+ glslangIntermediate->getStage() == EShLangTessControl ||
+ glslangIntermediate->getStage() == EShLangTessEvaluation) {
- builder.addExtension(spv::E_SPV_NV_viewport_array2);
- builder.addCapability(spv::CapabilityShaderViewportIndexLayerNV);
- }
-#endif
+ builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer);
+ builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT);
}
return spv::BuiltInViewportIndex;
@@ -504,23 +479,17 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
return spv::BuiltInSamplePosition;
case glslang::EbvSampleMask:
- builder.addCapability(spv::CapabilitySampleRateShading);
return spv::BuiltInSampleMask;
case glslang::EbvLayer:
- if (!memberDeclaration) {
- builder.addCapability(spv::CapabilityGeometry);
-#ifdef NV_EXTENSIONS
- if (glslangIntermediate->getStage() == EShLangVertex ||
- glslangIntermediate->getStage() == EShLangTessControl ||
- glslangIntermediate->getStage() == EShLangTessEvaluation) {
+ builder.addCapability(spv::CapabilityGeometry);
+ if (glslangIntermediate->getStage() == EShLangVertex ||
+ glslangIntermediate->getStage() == EShLangTessControl ||
+ glslangIntermediate->getStage() == EShLangTessEvaluation) {
- builder.addExtension(spv::E_SPV_NV_viewport_array2);
- builder.addCapability(spv::CapabilityShaderViewportIndexLayerNV);
- }
-#endif
+ builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer);
+ builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT);
}
-
return spv::BuiltInLayer;
case glslang::EbvPosition: return spv::BuiltInPosition;
@@ -549,6 +518,11 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
builder.addCapability(spv::CapabilityGeometry);
return spv::BuiltInPrimitiveId;
+ case glslang::EbvFragStencilRef:
+ builder.addExtension(spv::E_SPV_EXT_shader_stencil_export);
+ builder.addCapability(spv::CapabilityStencilExportEXT);
+ return spv::BuiltInFragStencilRefEXT;
+
case glslang::EbvInvocationId: return spv::BuiltInInvocationId;
case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner;
case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter;
@@ -766,6 +740,70 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy
}
}
+spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSelectionControl(glslang::TSelectionControl selectionControl) const
+{
+ switch (selectionControl) {
+ case glslang::ESelectionControlNone: return spv::SelectionControlMaskNone;
+ case glslang::ESelectionControlFlatten: return spv::SelectionControlFlattenMask;
+ case glslang::ESelectionControlDontFlatten: return spv::SelectionControlDontFlattenMask;
+ default: return spv::SelectionControlMaskNone;
+ }
+}
+
+spv::LoopControlMask TGlslangToSpvTraverser::TranslateLoopControl(glslang::TLoopControl loopControl) const
+{
+ switch (loopControl) {
+ case glslang::ELoopControlNone: return spv::LoopControlMaskNone;
+ case glslang::ELoopControlUnroll: return spv::LoopControlUnrollMask;
+ case glslang::ELoopControlDontUnroll: return spv::LoopControlDontUnrollMask;
+ // TODO: DependencyInfinite
+ // TODO: DependencyLength
+ default: return spv::LoopControlMaskNone;
+ }
+}
+
+// Translate glslang type to SPIR-V storage class.
+spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::TType& type)
+{
+ if (type.getQualifier().isPipeInput())
+ return spv::StorageClassInput;
+ if (type.getQualifier().isPipeOutput())
+ return spv::StorageClassOutput;
+
+ if (glslangIntermediate->getSource() != glslang::EShSourceHlsl ||
+ type.getQualifier().storage == glslang::EvqUniform) {
+ if (type.getBasicType() == glslang::EbtAtomicUint)
+ return spv::StorageClassAtomicCounter;
+ if (type.containsOpaque())
+ return spv::StorageClassUniformConstant;
+ }
+
+ if (glslangIntermediate->usingStorageBuffer() && type.getQualifier().storage == glslang::EvqBuffer) {
+ builder.addExtension(spv::E_SPV_KHR_storage_buffer_storage_class);
+ return spv::StorageClassStorageBuffer;
+ }
+
+ if (type.getQualifier().isUniformOrBuffer()) {
+ if (type.getQualifier().layoutPushConstant)
+ return spv::StorageClassPushConstant;
+ if (type.getBasicType() == glslang::EbtBlock)
+ return spv::StorageClassUniform;
+ return spv::StorageClassUniformConstant;
+ }
+
+ switch (type.getQualifier().storage) {
+ case glslang::EvqShared: return spv::StorageClassWorkgroup;
+ case glslang::EvqGlobal: return spv::StorageClassPrivate;
+ case glslang::EvqConstReadOnly: return spv::StorageClassFunction;
+ case glslang::EvqTemporary: return spv::StorageClassFunction;
+ default:
+ assert(0);
+ break;
+ }
+
+ return spv::StorageClassFunction;
+}
+
// Return whether or not the given type is something that should be tied to a
// descriptor set.
bool IsDescriptorResource(const glslang::TType& type)
@@ -835,17 +873,44 @@ bool HasNonLayoutQualifiers(const glslang::TType& type, const glslang::TQualifie
// Implement the TGlslangToSpvTraverser class.
//
-TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* glslangIntermediate, spv::SpvBuildLogger* buildLogger)
- : TIntermTraverser(true, false, true), shaderEntry(nullptr), currentFunction(nullptr),
+TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* glslangIntermediate,
+ spv::SpvBuildLogger* buildLogger, glslang::SpvOptions& options)
+ : TIntermTraverser(true, false, true),
+ options(options),
+ shaderEntry(nullptr), currentFunction(nullptr),
sequenceDepth(0), logger(buildLogger),
- builder((glslang::GetKhronosToolId() << 16) | GeneratorVersion, logger),
+ builder((glslang::GetKhronosToolId() << 16) | glslang::GetSpirvGeneratorVersion(), logger),
inEntryPoint(false), entryPointTerminated(false), linkageOnly(false),
glslangIntermediate(glslangIntermediate)
{
spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage());
builder.clearAccessChain();
- builder.setSource(TranslateSourceLanguage(glslangIntermediate->getSource(), glslangIntermediate->getProfile()), glslangIntermediate->getVersion());
+ builder.setSource(TranslateSourceLanguage(glslangIntermediate->getSource(), glslangIntermediate->getProfile()),
+ glslangIntermediate->getVersion());
+
+ if (options.generateDebugInfo) {
+ builder.setEmitOpLines();
+ builder.setSourceFile(glslangIntermediate->getSourceFile());
+
+ // Set the source shader's text. If for SPV version 1.0, include
+ // a preamble in comments stating the OpModuleProcessed instructions.
+ // Otherwise, emit those as actual instructions.
+ std::string text;
+ const std::vector<std::string>& processes = glslangIntermediate->getProcesses();
+ for (int p = 0; p < (int)processes.size(); ++p) {
+ if (glslangIntermediate->getSpv().spv < 0x00010100) {
+ text.append("// OpModuleProcessed ");
+ text.append(processes[p]);
+ text.append("\n");
+ } else
+ builder.addModuleProcessed(processes[p]);
+ }
+ if (glslangIntermediate->getSpv().spv < 0x00010100 && (int)processes.size() > 0)
+ text.append("#line 1\n");
+ text.append(glslangIntermediate->getSourceText());
+ builder.setSourceText(text);
+ }
stdBuiltins = builder.import("GLSL.std.450");
builder.setMemoryModel(spv::AddressingModelLogical, spv::MemoryModelGLSL450);
shaderEntry = builder.makeEntryPoint(glslangIntermediate->getEntryPointName().c_str());
@@ -869,14 +934,20 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
builder.addCapability(spv::CapabilityShader);
break;
+ case EShLangTessEvaluation:
case EShLangTessControl:
builder.addCapability(spv::CapabilityTessellation);
- builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices());
- break;
- case EShLangTessEvaluation:
- builder.addCapability(spv::CapabilityTessellation);
- switch (glslangIntermediate->getInputPrimitive()) {
+ glslang::TLayoutGeometry primitive;
+
+ if (glslangIntermediate->getStage() == EShLangTessControl) {
+ builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices());
+ primitive = glslangIntermediate->getOutputPrimitive();
+ } else {
+ primitive = glslangIntermediate->getInputPrimitive();
+ }
+
+ switch (primitive) {
case glslang::ElgTriangles: mode = spv::ExecutionModeTriangles; break;
case glslang::ElgQuads: mode = spv::ExecutionModeQuads; break;
case glslang::ElgIsolines: mode = spv::ExecutionModeIsolines; break;
@@ -945,6 +1016,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
if (glslangIntermediate->getEarlyFragmentTests())
builder.addExecutionMode(shaderEntry, spv::ExecutionModeEarlyFragmentTests);
+ if (glslangIntermediate->getPostDepthCoverage()) {
+ builder.addCapability(spv::CapabilitySampleMaskPostDepthCoverage);
+ builder.addExecutionMode(shaderEntry, spv::ExecutionModePostDepthCoverage);
+ builder.addExtension(spv::E_SPV_KHR_post_depth_coverage);
+ }
+
switch(glslangIntermediate->getDepth()) {
case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break;
case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break;
@@ -1018,8 +1095,10 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
// Include all "static use" and "linkage only" interface variables on the OpEntryPoint instruction
if (builder.isPointer(id)) {
spv::StorageClass sc = builder.getStorageClass(id);
- if (sc == spv::StorageClassInput || sc == spv::StorageClassOutput)
- iOSet.insert(id);
+ if (sc == spv::StorageClassInput || sc == spv::StorageClassOutput) {
+ if (!symbol->getType().isStruct() || symbol->getType().getStruct()->size() > 0)
+ iOSet.insert(id);
+ }
}
// Only process non-linkage-only nodes for generating actual static uses
@@ -1047,6 +1126,8 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::TIntermBinary* node)
{
+ builder.setLine(node->getLoc().line);
+
SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder);
if (node->getType().getQualifier().isSpecConstant())
spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
@@ -1234,6 +1315,8 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T
bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node)
{
+ builder.setLine(node->getLoc().line);
+
SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder);
if (node->getType().getQualifier().isSpecConstant())
spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
@@ -1334,6 +1417,10 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
#endif
else if (node->getBasicType() == glslang::EbtInt64 || node->getBasicType() == glslang::EbtUint64)
one = builder.makeInt64Constant(1);
+#ifdef AMD_EXTENSIONS
+ else if (node->getBasicType() == glslang::EbtInt16 || node->getBasicType() == glslang::EbtUint16)
+ one = builder.makeInt16Constant(1);
+#endif
else
one = builder.makeIntConstant(1);
glslang::TOperator op;
@@ -1392,7 +1479,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
builder.setAccessChainRValue(result);
return false;
+#ifdef AMD_EXTENSIONS
+ } else if (node->getOp() == glslang::EOpImageStore || node->getOp() == glslang::EOpImageStoreLod) {
+#else
} else if (node->getOp() == glslang::EOpImageStore) {
+#endif
// "imageStore" is a special case, which has no result
return false;
}
@@ -1477,6 +1568,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
return false;
case glslang::EOpFunctionCall:
{
+ builder.setLine(node->getLoc().line);
if (node->isUserDefined())
result = handleUserFunctionCall(node);
// assert(result); // this can happen for bad shaders because the call graph completeness checking is not yet done
@@ -1506,6 +1598,33 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
case glslang::EOpConstructDMat4x2:
case glslang::EOpConstructDMat4x3:
case glslang::EOpConstructDMat4x4:
+ case glslang::EOpConstructIMat2x2:
+ case glslang::EOpConstructIMat2x3:
+ case glslang::EOpConstructIMat2x4:
+ case glslang::EOpConstructIMat3x2:
+ case glslang::EOpConstructIMat3x3:
+ case glslang::EOpConstructIMat3x4:
+ case glslang::EOpConstructIMat4x2:
+ case glslang::EOpConstructIMat4x3:
+ case glslang::EOpConstructIMat4x4:
+ case glslang::EOpConstructUMat2x2:
+ case glslang::EOpConstructUMat2x3:
+ case glslang::EOpConstructUMat2x4:
+ case glslang::EOpConstructUMat3x2:
+ case glslang::EOpConstructUMat3x3:
+ case glslang::EOpConstructUMat3x4:
+ case glslang::EOpConstructUMat4x2:
+ case glslang::EOpConstructUMat4x3:
+ case glslang::EOpConstructUMat4x4:
+ case glslang::EOpConstructBMat2x2:
+ case glslang::EOpConstructBMat2x3:
+ case glslang::EOpConstructBMat2x4:
+ case glslang::EOpConstructBMat3x2:
+ case glslang::EOpConstructBMat3x3:
+ case glslang::EOpConstructBMat3x4:
+ case glslang::EOpConstructBMat4x2:
+ case glslang::EOpConstructBMat4x3:
+ case glslang::EOpConstructBMat4x4:
#ifdef AMD_EXTENSIONS
case glslang::EOpConstructF16Mat2x2:
case glslang::EOpConstructF16Mat2x3:
@@ -1553,9 +1672,20 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
case glslang::EOpConstructU64Vec2:
case glslang::EOpConstructU64Vec3:
case glslang::EOpConstructU64Vec4:
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConstructInt16:
+ case glslang::EOpConstructI16Vec2:
+ case glslang::EOpConstructI16Vec3:
+ case glslang::EOpConstructI16Vec4:
+ case glslang::EOpConstructUint16:
+ case glslang::EOpConstructU16Vec2:
+ case glslang::EOpConstructU16Vec3:
+ case glslang::EOpConstructU16Vec4:
+#endif
case glslang::EOpConstructStruct:
case glslang::EOpConstructTextureSampler:
{
+ builder.setLine(node->getLoc().line);
std::vector<spv::Id> arguments;
translateArguments(*node, arguments);
spv::Id constructed;
@@ -1646,6 +1776,20 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
atomic = true;
break;
+ case glslang::EOpAtomicCounterAdd:
+ case glslang::EOpAtomicCounterSubtract:
+ case glslang::EOpAtomicCounterMin:
+ case glslang::EOpAtomicCounterMax:
+ case glslang::EOpAtomicCounterAnd:
+ case glslang::EOpAtomicCounterOr:
+ case glslang::EOpAtomicCounterXor:
+ case glslang::EOpAtomicCounterExchange:
+ case glslang::EOpAtomicCounterCompSwap:
+ builder.addExtension("SPV_KHR_shader_atomic_counter_ops");
+ builder.addCapability(spv::CapabilityAtomicStorageOps);
+ atomic = true;
+ break;
+
default:
break;
}
@@ -1666,6 +1810,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
right->traverse(this);
spv::Id rightId = accessChainLoad(right->getType());
+ builder.setLine(node->getLoc().line);
result = createBinaryOperation(binOp, precision, TranslateNoContractionDecoration(node->getType().getQualifier()),
resultType(), leftId, rightId,
left->getType().getBasicType(), reduceComparison);
@@ -1715,6 +1860,15 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
case glslang::EOpAtomicXor:
case glslang::EOpAtomicExchange:
case glslang::EOpAtomicCompSwap:
+ case glslang::EOpAtomicCounterAdd:
+ case glslang::EOpAtomicCounterSubtract:
+ case glslang::EOpAtomicCounterMin:
+ case glslang::EOpAtomicCounterMax:
+ case glslang::EOpAtomicCounterAnd:
+ case glslang::EOpAtomicCounterOr:
+ case glslang::EOpAtomicCounterXor:
+ case glslang::EOpAtomicCounterExchange:
+ case glslang::EOpAtomicCounterCompSwap:
if (arg == 0)
lvalue = true;
break;
@@ -1738,10 +1892,13 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
glslangOperands[arg]->traverse(this);
if (lvalue)
operands.push_back(builder.accessChainGetLValue());
- else
+ else {
+ builder.setLine(node->getLoc().line);
operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType()));
+ }
}
+ builder.setLine(node->getLoc().line);
if (atomic) {
// Handle all atomics
result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType());
@@ -1823,7 +1980,17 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang
node->getFalseBlock()->traverse(this);
spv::Id falseValue = accessChainLoad(node->getTrueBlock()->getAsTyped()->getType());
- spv::Id select = builder.createTriOp(spv::OpSelect, convertGlslangToSpvType(node->getType()), condition, trueValue, falseValue);
+ builder.setLine(node->getLoc().line);
+
+ // smear condition to vector, if necessary (AST is always scalar)
+ if (builder.isVector(trueValue))
+ condition = builder.smearScalar(spv::NoPrecision, condition,
+ builder.makeVectorType(builder.makeBoolType(),
+ builder.getNumComponents(trueValue)));
+
+ spv::Id select = builder.createTriOp(spv::OpSelect,
+ convertGlslangToSpvType(node->getType()), condition,
+ trueValue, falseValue);
builder.clearAccessChain();
builder.setAccessChainRValue(select);
};
@@ -1839,8 +2006,7 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang
return false;
}
- // Instead, emit control flow...
-
+ // Instead, emit control flow...
// Don't handle results as temporaries, because there will be two names
// and better to leave SSA to later passes.
spv::Id result = (node->getBasicType() == glslang::EbtVoid)
@@ -1850,8 +2016,11 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang
// emit the condition before doing anything with selection
node->getCondition()->traverse(this);
+ // Selection control:
+ const spv::SelectionControlMask control = TranslateSelectionControl(node->getSelectionControl());
+
// make an "if" based on the value created by the condition
- spv::Builder::If ifBuilder(accessChainLoad(node->getCondition()->getType()), builder);
+ spv::Builder::If ifBuilder(accessChainLoad(node->getCondition()->getType()), control, builder);
// emit the "then" statement
if (node->getTrueBlock() != nullptr) {
@@ -1889,6 +2058,9 @@ bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::T
node->getCondition()->traverse(this);
spv::Id selector = accessChainLoad(node->getCondition()->getAsTyped()->getType());
+ // Selection control:
+ const spv::SelectionControlMask control = TranslateSelectionControl(node->getSelectionControl());
+
// browse the children to sort out code segments
int defaultSegment = -1;
std::vector<TIntermNode*> codeSegments;
@@ -1914,7 +2086,7 @@ bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::T
// make the switch statement
std::vector<spv::Block*> segmentBlocks; // returned, as the blocks allocated in the call
- builder.makeSwitch(selector, (int)codeSegments.size(), caseValues, valueIndexToSegment, defaultSegment, segmentBlocks);
+ builder.makeSwitch(selector, control, (int)codeSegments.size(), caseValues, valueIndexToSegment, defaultSegment, segmentBlocks);
// emit all the code in the segments
breakForLoop.push(false);
@@ -1945,22 +2117,28 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
{
auto blocks = builder.makeNewLoop();
builder.createBranch(&blocks.head);
+
+ // Loop control:
+ const spv::LoopControlMask control = TranslateLoopControl(node->getLoopControl());
+
+ // TODO: dependency length
+
// Spec requires back edges to target header blocks, and every header block
// must dominate its merge block. Make a header block first to ensure these
// conditions are met. By definition, it will contain OpLoopMerge, followed
// by a block-ending branch. But we don't want to put any other body/test
// instructions in it, since the body/test may have arbitrary instructions,
// including merges of its own.
+ builder.setLine(node->getLoc().line);
builder.setBuildPoint(&blocks.head);
- builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone);
+ builder.createLoopMerge(&blocks.merge, &blocks.continue_target, control);
if (node->testFirst() && node->getTest()) {
spv::Block& test = builder.makeNewBlock();
builder.createBranch(&test);
builder.setBuildPoint(&test);
node->getTest()->traverse(this);
- spv::Id condition =
- accessChainLoad(node->getTest()->getType());
+ spv::Id condition = accessChainLoad(node->getTest()->getType());
builder.createConditionalBranch(condition, &blocks.body, &blocks.merge);
builder.setBuildPoint(&blocks.body);
@@ -1975,6 +2153,7 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
node->getTerminal()->traverse(this);
builder.createBranch(&blocks.head);
} else {
+ builder.setLine(node->getLoc().line);
builder.createBranch(&blocks.body);
breakForLoop.push(true);
@@ -2009,6 +2188,8 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T
if (node->getExpression())
node->getExpression()->traverse(this);
+ builder.setLine(node->getLoc().line);
+
switch (node->getFlowOp()) {
case glslang::EOpKill:
builder.makeDiscard();
@@ -2061,6 +2242,26 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol*
spv::StorageClass storageClass = TranslateStorageClass(node->getType());
spv::Id spvType = convertGlslangToSpvType(node->getType());
+#ifdef AMD_EXTENSIONS
+ const bool contains16BitType = node->getType().containsBasicType(glslang::EbtFloat16) ||
+ node->getType().containsBasicType(glslang::EbtInt16) ||
+ node->getType().containsBasicType(glslang::EbtUint16);
+ if (contains16BitType) {
+ if (storageClass == spv::StorageClassInput || storageClass == spv::StorageClassOutput) {
+ builder.addExtension(spv::E_SPV_KHR_16bit_storage);
+ builder.addCapability(spv::CapabilityStorageInputOutput16);
+ } else if (storageClass == spv::StorageClassPushConstant) {
+ builder.addExtension(spv::E_SPV_KHR_16bit_storage);
+ builder.addCapability(spv::CapabilityStoragePushConstant16);
+ } else if (storageClass == spv::StorageClassUniform) {
+ builder.addExtension(spv::E_SPV_KHR_16bit_storage);
+ builder.addCapability(spv::CapabilityStorageUniform16);
+ if (node->getType().getQualifier().storage == glslang::EvqBuffer)
+ builder.addCapability(spv::CapabilityStorageUniformBufferBlock16);
+ }
+ }
+#endif
+
const char* name = node->getName().c_str();
if (glslang::IsAnonymous(name))
name = "";
@@ -2157,13 +2358,21 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
spvType = builder.makeUintType(32);
break;
case glslang::EbtInt64:
- builder.addCapability(spv::CapabilityInt64);
spvType = builder.makeIntType(64);
break;
case glslang::EbtUint64:
- builder.addCapability(spv::CapabilityInt64);
spvType = builder.makeUintType(64);
break;
+#ifdef AMD_EXTENSIONS
+ case glslang::EbtInt16:
+ builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16);
+ spvType = builder.makeIntType(16);
+ break;
+ case glslang::EbtUint16:
+ builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16);
+ spvType = builder.makeUintType(16);
+ break;
+#endif
case glslang::EbtAtomicUint:
builder.addCapability(spv::CapabilityAtomicStorage);
spvType = builder.makeUintType(32);
@@ -2272,12 +2481,21 @@ bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member)
{
auto& extensions = glslangIntermediate->getRequestedExtensions();
+ if (member.getFieldName() == "gl_ViewportMask" &&
+ extensions.find("GL_NV_viewport_array2") == extensions.end())
+ return true;
+ if (member.getFieldName() == "gl_SecondaryViewportMaskNV" &&
+ extensions.find("GL_NV_stereo_view_rendering") == extensions.end())
+ return true;
if (member.getFieldName() == "gl_SecondaryPositionNV" &&
extensions.find("GL_NV_stereo_view_rendering") == extensions.end())
return true;
if (member.getFieldName() == "gl_PositionPerViewNV" &&
extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end())
return true;
+ if (member.getFieldName() == "gl_ViewportMaskPerViewNV" &&
+ extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end())
+ return true;
return false;
};
@@ -2293,7 +2511,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
// Create a vector of struct types for SPIR-V to consume
std::vector<spv::Id> spvMembers;
int memberDelta = 0; // how much the member's index changes from glslang to SPIR-V, normally 0, except sometimes for blocks
- int locationOffset = 0; // for use across struct members, when they are called recursively
for (int i = 0; i < (int)glslangMembers->size(); i++) {
glslang::TType& glslangMember = *(*glslangMembers)[i].type;
if (glslangMember.hiddenMember()) {
@@ -2310,11 +2527,9 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
InheritQualifiers(memberQualifier, qualifier);
- // manually inherit location; it's more complex
+ // manually inherit location
if (! memberQualifier.hasLocation() && qualifier.hasLocation())
- memberQualifier.layoutLocation = qualifier.layoutLocation + locationOffset;
- if (qualifier.hasLocation())
- locationOffset += glslangIntermediate->computeTypeLocationSize(glslangMember);
+ memberQualifier.layoutLocation = qualifier.layoutLocation;
// recurse
spvMembers.push_back(convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier));
@@ -2370,36 +2585,21 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
}
addMemberDecoration(spvType, member, TranslateInvariantDecoration(memberQualifier));
- if (qualifier.storage == glslang::EvqBuffer) {
+ if (type.getBasicType() == glslang::EbtBlock &&
+ qualifier.storage == glslang::EvqBuffer) {
+ // Add memory decorations only to top-level members of shader storage block
std::vector<spv::Decoration> memory;
TranslateMemoryDecoration(memberQualifier, memory);
for (unsigned int i = 0; i < memory.size(); ++i)
addMemberDecoration(spvType, member, memory[i]);
}
- // Compute location decoration; tricky based on whether inheritance is at play and
- // what kind of container we have, etc.
- // TODO: This algorithm (and it's cousin above doing almost the same thing) should
- // probably move to the linker stage of the front end proper, and just have the
- // answer sitting already distributed throughout the individual member locations.
- int location = -1; // will only decorate if present or inherited
+ // Location assignment was already completed correctly by the front end,
+ // just track whether a member needs to be decorated.
// Ignore member locations if the container is an array, as that's
- // ill-specified and decisions have been made to not allow this anyway.
- // The object itself must have a location, and that comes out from decorating the object,
- // not the type (this code decorates types).
- if (! type.isArray()) {
- if (memberQualifier.hasLocation()) { // no inheritance, or override of inheritance
- // struct members should not have explicit locations
- assert(type.getBasicType() != glslang::EbtStruct);
- location = memberQualifier.layoutLocation;
- } else if (type.getBasicType() != glslang::EbtBlock) {
- // If it is a not a Block, (...) Its members are assigned consecutive locations (...)
- // The members, and their nested types, must not themselves have Location decorations.
- } else if (qualifier.hasLocation()) // inheritance
- location = qualifier.layoutLocation + locationOffset;
- }
- if (location >= 0)
- builder.addMemberDecoration(spvType, member, spv::DecorationLocation, location);
+ // ill-specified and decisions have been made to not allow this.
+ if (! type.isArray() && memberQualifier.hasLocation())
+ builder.addMemberDecoration(spvType, member, spv::DecorationLocation, memberQualifier.layoutLocation);
if (qualifier.hasLocation()) // track for upcoming inheritance
locationOffset += glslangIntermediate->computeTypeLocationSize(glslangMember);
@@ -2451,7 +2651,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
// Decorate the structure
addDecoration(spvType, TranslateLayoutDecoration(type, qualifier.layoutMatrix));
- addDecoration(spvType, TranslateBlockDecoration(type));
+ addDecoration(spvType, TranslateBlockDecoration(type, glslangIntermediate->usingStorageBuffer()));
if (type.getQualifier().hasStream() && glslangIntermediate->isMultiStream()) {
builder.addCapability(spv::CapabilityGeometryStreams);
builder.addDecoration(spvType, spv::DecorationStream, type.getQualifier().layoutStream);
@@ -2528,19 +2728,24 @@ void TGlslangToSpvTraverser::accessChainStore(const glslang::TType& type, spv::I
// Conversion for bool
spv::Id boolType = builder.makeBoolType();
if (nominalTypeId != boolType) {
+ // keep these outside arguments, for determinant order-of-evaluation
+ spv::Id one = builder.makeUintConstant(1);
spv::Id zero = builder.makeUintConstant(0);
- spv::Id one = builder.makeUintConstant(1);
rvalue = builder.createTriOp(spv::OpSelect, nominalTypeId, rvalue, one, zero);
- }
+ } else if (builder.getTypeId(rvalue) != boolType)
+ rvalue = builder.createBinOp(spv::OpINotEqual, boolType, rvalue, builder.makeUintConstant(0));
} else if (builder.isVectorType(nominalTypeId)) {
// Conversion for bvec
int vecSize = builder.getNumTypeComponents(nominalTypeId);
spv::Id bvecType = builder.makeVectorType(builder.makeBoolType(), vecSize);
if (nominalTypeId != bvecType) {
+ // keep these outside arguments, for determinant order-of-evaluation
+ spv::Id one = makeSmearedConstant(builder.makeUintConstant(1), vecSize);
spv::Id zero = makeSmearedConstant(builder.makeUintConstant(0), vecSize);
- spv::Id one = makeSmearedConstant(builder.makeUintConstant(1), vecSize);
rvalue = builder.createTriOp(spv::OpSelect, nominalTypeId, rvalue, one, zero);
- }
+ } else if (builder.getTypeId(rvalue) != bvecType)
+ rvalue = builder.createBinOp(spv::OpINotEqual, bvecType, rvalue,
+ makeSmearedConstant(builder.makeUintConstant(0), vecSize));
}
}
@@ -2673,7 +2878,7 @@ int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, gl
// 'currentOffset' should be passed in already initialized, ready to modify, and reflecting
// the migration of data from nextOffset -> currentOffset. It should be -1 on the first call.
// -1 means a non-forced member offset (no decoration needed).
-void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& /*structType*/, const glslang::TType& memberType, int& currentOffset, int& nextOffset,
+void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset,
glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout)
{
// this will get a positive value when deemed necessary
@@ -2705,7 +2910,27 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& /*structTy
int memberSize;
int dummyStride;
int memberAlignment = glslangIntermediate->getBaseAlignment(memberType, memberSize, dummyStride, explicitLayout == glslang::ElpStd140, matrixLayout == glslang::ElmRowMajor);
+
+ // Adjust alignment for HLSL rules
+ // TODO: make this consistent in early phases of code:
+ // adjusting this late means inconsistencies with earlier code, which for reflection is an issue
+ // Until reflection is brought in sync with these adjustments, don't apply to $Global,
+ // which is the most likely to rely on reflection, and least likely to rely implicit layouts
+ if (glslangIntermediate->usingHlslOFfsets() &&
+ ! memberType.isArray() && memberType.isVector() && structType.getTypeName().compare("$Global") != 0) {
+ int dummySize;
+ int componentAlignment = glslangIntermediate->getBaseAlignmentScalar(memberType, dummySize);
+ if (componentAlignment <= 4)
+ memberAlignment = componentAlignment;
+ }
+
+ // Bump up to member alignment
glslang::RoundToPow2(currentOffset, memberAlignment);
+
+ // Bump up to vec4 if there is a bad straddle
+ if (glslangIntermediate->improperStraddle(memberType, memberSize, currentOffset))
+ glslang::RoundToPow2(currentOffset, 16);
+
nextOffset = currentOffset + memberSize;
}
@@ -2718,8 +2943,6 @@ void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList&
case glslang::EbvCullDistance:
case glslang::EbvPointSize:
#ifdef NV_EXTENSIONS
- case glslang::EbvLayer:
- case glslang::EbvViewportIndex:
case glslang::EbvViewportMaskNV:
case glslang::EbvSecondaryPositionNV:
case glslang::EbvSecondaryViewportMaskNV:
@@ -2742,9 +2965,34 @@ bool TGlslangToSpvTraverser::isShaderEntryPoint(const glslang::TIntermAggregate*
return node->getName().compare(glslangIntermediate->getEntryPointMangledName().c_str()) == 0;
}
+// Does parameter need a place to keep writes, separate from the original?
+bool TGlslangToSpvTraverser::writableParam(glslang::TStorageQualifier qualifier)
+{
+ return qualifier != glslang::EvqConstReadOnly;
+}
+
+// Is parameter pass-by-original?
+bool TGlslangToSpvTraverser::originalParam(glslang::TStorageQualifier qualifier, const glslang::TType& paramType,
+ bool implicitThisParam)
+{
+ if (implicitThisParam) // implicit this
+ return true;
+ if (glslangIntermediate->getSource() == glslang::EShSourceHlsl)
+ return false;
+ return paramType.containsOpaque() || // sampler, etc.
+ (paramType.getBasicType() == glslang::EbtBlock && qualifier == glslang::EvqBuffer); // SSBO
+}
+
// Make all the functions, skeletally, without actually visiting their bodies.
void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslFunctions)
{
+ const auto getParamDecorations = [](std::vector<spv::Decoration>& decorations, const glslang::TType& type) {
+ spv::Decoration paramPrecision = TranslatePrecisionDecoration(type);
+ if (paramPrecision != spv::NoPrecision)
+ decorations.push_back(paramPrecision);
+ TranslateMemoryDecoration(type.getQualifier(), decorations);
+ };
+
for (int f = 0; f < (int)glslFunctions.size(); ++f) {
glslang::TIntermAggregate* glslFunction = glslFunctions[f]->getAsAggregate();
if (! glslFunction || glslFunction->getOp() != glslang::EOpFunction || isShaderEntryPoint(glslFunction))
@@ -2765,32 +3013,31 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
// GLSL has copy-in/copy-out semantics. They can be handled though with a pointer to a copy.
std::vector<spv::Id> paramTypes;
- std::vector<spv::Decoration> paramPrecisions;
+ std::vector<std::vector<spv::Decoration>> paramDecorations; // list of decorations per parameter
glslang::TIntermSequence& parameters = glslFunction->getSequence()[0]->getAsAggregate()->getSequence();
- bool implicitThis = (int)parameters.size() > 0 && parameters[0]->getAsSymbolNode()->getName() == glslangIntermediate->implicitThisName;
+ bool implicitThis = (int)parameters.size() > 0 && parameters[0]->getAsSymbolNode()->getName() ==
+ glslangIntermediate->implicitThisName;
+ paramDecorations.resize(parameters.size());
for (int p = 0; p < (int)parameters.size(); ++p) {
const glslang::TType& paramType = parameters[p]->getAsTyped()->getType();
spv::Id typeId = convertGlslangToSpvType(paramType);
- // can we pass by reference?
- if (paramType.containsOpaque() || // sampler, etc.
- (paramType.getBasicType() == glslang::EbtBlock &&
- paramType.getQualifier().storage == glslang::EvqBuffer) || // SSBO
- p == 0 && implicitThis) // implicit 'this'
+ if (originalParam(paramType.getQualifier().storage, paramType, implicitThis && p == 0))
typeId = builder.makePointer(TranslateStorageClass(paramType), typeId);
- else if (paramType.getQualifier().storage != glslang::EvqConstReadOnly)
+ else if (writableParam(paramType.getQualifier().storage))
typeId = builder.makePointer(spv::StorageClassFunction, typeId);
else
rValueParameters.insert(parameters[p]->getAsSymbolNode()->getId());
- paramPrecisions.push_back(TranslatePrecisionDecoration(paramType));
+ getParamDecorations(paramDecorations[p], paramType);
paramTypes.push_back(typeId);
}
spv::Block* functionBlock;
spv::Function *function = builder.makeFunctionEntry(TranslatePrecisionDecoration(glslFunction->getType()),
convertGlslangToSpvType(glslFunction->getType()),
- glslFunction->getName().c_str(), paramTypes, paramPrecisions, &functionBlock);
+ glslFunction->getName().c_str(), paramTypes,
+ paramDecorations, &functionBlock);
if (implicitThis)
function->setImplicitThis();
@@ -2909,7 +3156,7 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate&
if (i == 6)
lvalue = true;
break;
- case glslang::EOpSparseTextureGather:
+ case glslang::EOpSparseTextureGather:
if ((sampler.shadow && i == 3) || (! sampler.shadow && i == 2))
lvalue = true;
break;
@@ -2918,6 +3165,21 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate&
if ((sampler.shadow && i == 4) || (! sampler.shadow && i == 3))
lvalue = true;
break;
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpSparseTextureGatherLod:
+ if (i == 3)
+ lvalue = true;
+ break;
+ case glslang::EOpSparseTextureGatherLodOffset:
+ case glslang::EOpSparseTextureGatherLodOffsets:
+ if (i == 4)
+ lvalue = true;
+ break;
+ case glslang::EOpSparseImageLoadLod:
+ if (i == 3)
+ lvalue = true;
+ break;
+#endif
default:
break;
}
@@ -2938,9 +3200,11 @@ void TGlslangToSpvTraverser::translateArguments(glslang::TIntermUnary& node, std
spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermOperator* node)
{
- if (! node->isImage() && ! node->isTexture()) {
+ if (! node->isImage() && ! node->isTexture())
return spv::NoResult;
- }
+
+ builder.setLine(node->getLoc().line);
+
auto resultType = [&node,this]{ return convertGlslangToSpvType(node->getType()); };
// Process a GLSL texturing op (will be SPV image)
@@ -2959,9 +3223,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
glslang::TCrackedTextureOp cracked;
node->crackTexture(sampler, cracked);
- const bool isUnsignedResult =
- node->getType().getBasicType() == glslang::EbtUint64 ||
- node->getType().getBasicType() == glslang::EbtUint;
+ const bool isUnsignedResult = node->getType().getBasicType() == glslang::EbtUint;
// Check for queries
if (cracked.query) {
@@ -3013,30 +3275,64 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
operands.push_back(spv::ImageOperandsSampleMask);
operands.push_back(*(opIt++));
}
- return builder.createOp(spv::OpImageRead, resultType(), operands);
+ spv::Id result = builder.createOp(spv::OpImageRead, resultType(), operands);
+ builder.setPrecision(result, precision);
+ return result;
}
operands.push_back(*(opIt++));
+#ifdef AMD_EXTENSIONS
+ if (node->getOp() == glslang::EOpImageLoad || node->getOp() == glslang::EOpImageLoadLod) {
+#else
if (node->getOp() == glslang::EOpImageLoad) {
+#endif
if (sampler.ms) {
operands.push_back(spv::ImageOperandsSampleMask);
operands.push_back(*opIt);
+#ifdef AMD_EXTENSIONS
+ } else if (cracked.lod) {
+ builder.addExtension(spv::E_SPV_AMD_shader_image_load_store_lod);
+ builder.addCapability(spv::CapabilityImageReadWriteLodAMD);
+
+ operands.push_back(spv::ImageOperandsLodMask);
+ operands.push_back(*opIt);
+#endif
}
if (builder.getImageTypeFormat(builder.getImageType(operands.front())) == spv::ImageFormatUnknown)
builder.addCapability(spv::CapabilityStorageImageReadWithoutFormat);
- return builder.createOp(spv::OpImageRead, resultType(), operands);
+
+ spv::Id result = builder.createOp(spv::OpImageRead, resultType(), operands);
+ builder.setPrecision(result, precision);
+ return result;
+#ifdef AMD_EXTENSIONS
+ } else if (node->getOp() == glslang::EOpImageStore || node->getOp() == glslang::EOpImageStoreLod) {
+#else
} else if (node->getOp() == glslang::EOpImageStore) {
+#endif
if (sampler.ms) {
operands.push_back(*(opIt + 1));
operands.push_back(spv::ImageOperandsSampleMask);
operands.push_back(*opIt);
+#ifdef AMD_EXTENSIONS
+ } else if (cracked.lod) {
+ builder.addExtension(spv::E_SPV_AMD_shader_image_load_store_lod);
+ builder.addCapability(spv::CapabilityImageReadWriteLodAMD);
+
+ operands.push_back(*(opIt + 1));
+ operands.push_back(spv::ImageOperandsLodMask);
+ operands.push_back(*opIt);
+#endif
} else
operands.push_back(*opIt);
builder.createNoResultOp(spv::OpImageWrite, operands);
if (builder.getImageTypeFormat(builder.getImageType(operands.front())) == spv::ImageFormatUnknown)
builder.addCapability(spv::CapabilityStorageImageWriteWithoutFormat);
return spv::NoResult;
+#ifdef AMD_EXTENSIONS
+ } else if (node->getOp() == glslang::EOpSparseImageLoad || node->getOp() == glslang::EOpSparseImageLoadLod) {
+#else
} else if (node->getOp() == glslang::EOpSparseImageLoad) {
+#endif
builder.addCapability(spv::CapabilitySparseResidency);
if (builder.getImageTypeFormat(builder.getImageType(operands.front())) == spv::ImageFormatUnknown)
builder.addCapability(spv::CapabilityStorageImageReadWithoutFormat);
@@ -3044,6 +3340,14 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
if (sampler.ms) {
operands.push_back(spv::ImageOperandsSampleMask);
operands.push_back(*opIt++);
+#ifdef AMD_EXTENSIONS
+ } else if (cracked.lod) {
+ builder.addExtension(spv::E_SPV_AMD_shader_image_load_store_lod);
+ builder.addCapability(spv::CapabilityImageReadWriteLodAMD);
+
+ operands.push_back(spv::ImageOperandsLodMask);
+ operands.push_back(*opIt++);
+#endif
}
// Create the return type that was a special structure
@@ -3076,16 +3380,67 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
}
}
+#ifdef AMD_EXTENSIONS
+ // Check for fragment mask functions other than queries
+ if (cracked.fragMask) {
+ assert(sampler.ms);
+
+ auto opIt = arguments.begin();
+ std::vector<spv::Id> operands;
+
+ // Extract the image if necessary
+ if (builder.isSampledImage(params.sampler))
+ params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
+
+ operands.push_back(params.sampler);
+ ++opIt;
+
+ if (sampler.isSubpass()) {
+ // add on the (0,0) coordinate
+ spv::Id zero = builder.makeIntConstant(0);
+ std::vector<spv::Id> comps;
+ comps.push_back(zero);
+ comps.push_back(zero);
+ operands.push_back(builder.makeCompositeConstant(builder.makeVectorType(builder.makeIntType(32), 2), comps));
+ }
+
+ for (; opIt != arguments.end(); ++opIt)
+ operands.push_back(*opIt);
+
+ spv::Op fragMaskOp = spv::OpNop;
+ if (node->getOp() == glslang::EOpFragmentMaskFetch)
+ fragMaskOp = spv::OpFragmentMaskFetchAMD;
+ else if (node->getOp() == glslang::EOpFragmentFetch)
+ fragMaskOp = spv::OpFragmentFetchAMD;
+
+ builder.addExtension(spv::E_SPV_AMD_shader_fragment_mask);
+ builder.addCapability(spv::CapabilityFragmentMaskAMD);
+ return builder.createOp(fragMaskOp, resultType(), operands);
+ }
+#endif
+
// Check for texture functions other than queries
bool sparse = node->isSparseTexture();
bool cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow;
// check for bias argument
bool bias = false;
+#ifdef AMD_EXTENSIONS
+ if (! cracked.lod && ! cracked.grad && ! cracked.fetch && ! cubeCompare) {
+#else
if (! cracked.lod && ! cracked.gather && ! cracked.grad && ! cracked.fetch && ! cubeCompare) {
+#endif
int nonBiasArgCount = 2;
+#ifdef AMD_EXTENSIONS
+ if (cracked.gather)
+ ++nonBiasArgCount; // comp argument should be present when bias argument is present
+#endif
if (cracked.offset)
++nonBiasArgCount;
+#ifdef AMD_EXTENSIONS
+ else if (cracked.offsets)
+ ++nonBiasArgCount;
+#endif
if (cracked.grad)
nonBiasArgCount += 2;
if (cracked.lodClamp)
@@ -3104,6 +3459,17 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
}
+#ifdef AMD_EXTENSIONS
+ if (cracked.gather) {
+ const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions();
+ if (bias || cracked.lod ||
+ sourceExtensions.find(glslang::E_GL_AMD_texture_gather_bias_lod) != sourceExtensions.end()) {
+ builder.addExtension(spv::E_SPV_AMD_texture_gather_bias_lod);
+ builder.addCapability(spv::CapabilityImageGatherBiasLodAMD);
+ }
+ }
+#endif
+
// set the rest of the arguments
params.coords = arguments[1];
@@ -3130,7 +3496,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
// lod
if (cracked.lod) {
- params.lod = arguments[2];
+ params.lod = arguments[2 + extraArgs];
++extraArgs;
} else if (glslangIntermediate->getStage() != EShLangFragment) {
// we need to invent the default lod for an explicit lod instruction for a non-fragment stage
@@ -3139,7 +3505,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
// multisample
if (sampler.ms) {
- params.sample = arguments[2]; // For MS, "sample" should be specified
+ params.sample = arguments[2 + extraArgs]; // For MS, "sample" should be specified
++extraArgs;
}
@@ -3171,21 +3537,20 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
++extraArgs;
}
- // bias
- if (bias) {
- params.bias = arguments[2 + extraArgs];
- ++extraArgs;
- }
-
// gather component
if (cracked.gather && ! sampler.shadow) {
// default component is 0, if missing, otherwise an argument
if (2 + extraArgs < (int)arguments.size()) {
params.component = arguments[2 + extraArgs];
++extraArgs;
- } else {
+ } else
params.component = builder.makeIntConstant(0);
- }
+ }
+
+ // bias
+ if (bias) {
+ params.bias = arguments[2 + extraArgs];
+ ++extraArgs;
}
// projective component (might not to move)
@@ -3243,8 +3608,9 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg
builder.clearAccessChain();
glslangArgs[a]->traverse(this);
argTypes.push_back(&paramType);
- // keep outputs and opaque objects as l-values, evaluate input-only as r-values
- if (qualifiers[a] != glslang::EvqConstReadOnly || paramType.containsOpaque()) {
+ // keep outputs and pass-by-originals as l-values, evaluate others as r-values
+ if (writableParam(qualifiers[a]) ||
+ originalParam(qualifiers[a], paramType, function->hasImplicitThis() && a == 0)) {
// save l-value
lValues.push_back(builder.getAccessChain());
} else {
@@ -3263,13 +3629,11 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg
for (int a = 0; a < (int)glslangArgs.size(); ++a) {
const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
spv::Id arg;
- if (paramType.containsOpaque() ||
- (paramType.getBasicType() == glslang::EbtBlock && qualifiers[a] == glslang::EvqBuffer) ||
- (a == 0 && function->hasImplicitThis())) {
+ if (originalParam(qualifiers[a], paramType, function->hasImplicitThis() && a == 0)) {
builder.setAccessChain(lValues[lValueCount]);
arg = builder.accessChainGetLValue();
++lValueCount;
- } else if (qualifiers[a] != glslang::EvqConstReadOnly) {
+ } else if (writableParam(qualifiers[a])) {
// need space to hold the copy
arg = builder.createVariable(spv::StorageClassFunction, convertGlslangToSpvType(paramType), "param");
if (qualifiers[a] == glslang::EvqIn || qualifiers[a] == glslang::EvqInOut) {
@@ -3296,7 +3660,9 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg
lValueCount = 0;
for (int a = 0; a < (int)glslangArgs.size(); ++a) {
const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
- if (qualifiers[a] != glslang::EvqConstReadOnly) {
+ if (originalParam(qualifiers[a], paramType, function->hasImplicitThis() && a == 0))
+ ++lValueCount;
+ else if (writableParam(qualifiers[a])) {
if (qualifiers[a] == glslang::EvqOut || qualifiers[a] == glslang::EvqInOut) {
spv::Id copy = builder.createLoad(spvArgs[a]);
builder.setAccessChain(lValues[lValueCount]);
@@ -3315,10 +3681,11 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
spv::Id typeId, spv::Id left, spv::Id right,
glslang::TBasicType typeProxy, bool reduceComparison)
{
- bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
#ifdef AMD_EXTENSIONS
+ bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64 || typeProxy == glslang::EbtUint16;
bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16;
#else
+ bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
#endif
bool isBool = typeProxy == glslang::EbtBool;
@@ -3645,10 +4012,11 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
spv::Op unaryOp = spv::OpNop;
int extBuiltins = -1;
int libCall = -1;
- bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
#ifdef AMD_EXTENSIONS
+ bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64 || typeProxy == glslang::EbtUint16;
bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16;
#else
+ bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
#endif
@@ -3787,6 +4155,12 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
case glslang::EOpDoubleBitsToUint64:
case glslang::EOpInt64BitsToDouble:
case glslang::EOpUint64BitsToDouble:
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpFloat16BitsToInt16:
+ case glslang::EOpFloat16BitsToUint16:
+ case glslang::EOpInt16BitsToFloat16:
+ case glslang::EOpUint16BitsToFloat16:
+#endif
unaryOp = spv::OpBitcast;
break;
@@ -3835,6 +4209,14 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
break;
#ifdef AMD_EXTENSIONS
+ case glslang::EOpPackInt2x16:
+ case glslang::EOpUnpackInt2x16:
+ case glslang::EOpPackUint2x16:
+ case glslang::EOpUnpackUint2x16:
+ case glslang::EOpPackInt4x16:
+ case glslang::EOpUnpackInt4x16:
+ case glslang::EOpPackUint4x16:
+ case glslang::EOpUnpackUint4x16:
case glslang::EOpPackFloat2x16:
case glslang::EOpUnpackFloat2x16:
unaryOp = spv::OpBitcast;
@@ -4034,8 +4416,18 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
case glslang::EOpConvUintToBool:
case glslang::EOpConvInt64ToBool:
case glslang::EOpConvUint64ToBool:
- zero = (op == glslang::EOpConvInt64ToBool ||
- op == glslang::EOpConvUint64ToBool) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0);
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvInt16ToBool:
+ case glslang::EOpConvUint16ToBool:
+#endif
+ if (op == glslang::EOpConvInt64ToBool || op == glslang::EOpConvUint64ToBool)
+ zero = builder.makeUint64Constant(0);
+#ifdef AMD_EXTENSIONS
+ else if (op == glslang::EOpConvInt16ToBool || op == glslang::EOpConvUint16ToBool)
+ zero = builder.makeUint16Constant(0);
+#endif
+ else
+ zero = builder.makeUintConstant(0);
zero = makeSmearedConstant(zero, vectorSize);
return builder.createBinOp(spv::OpINotEqual, destType, operand, zero);
@@ -4078,15 +4470,53 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
case glslang::EOpConvBoolToInt:
case glslang::EOpConvBoolToInt64:
- zero = (op == glslang::EOpConvBoolToInt64) ? builder.makeInt64Constant(0) : builder.makeIntConstant(0);
- one = (op == glslang::EOpConvBoolToInt64) ? builder.makeInt64Constant(1) : builder.makeIntConstant(1);
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvBoolToInt16:
+#endif
+ if (op == glslang::EOpConvBoolToInt64)
+ zero = builder.makeInt64Constant(0);
+#ifdef AMD_EXTENSIONS
+ else if (op == glslang::EOpConvBoolToInt16)
+ zero = builder.makeInt16Constant(0);
+#endif
+ else
+ zero = builder.makeIntConstant(0);
+
+ if (op == glslang::EOpConvBoolToInt64)
+ one = builder.makeInt64Constant(1);
+#ifdef AMD_EXTENSIONS
+ else if (op == glslang::EOpConvBoolToInt16)
+ one = builder.makeInt16Constant(1);
+#endif
+ else
+ one = builder.makeIntConstant(1);
+
convOp = spv::OpSelect;
break;
case glslang::EOpConvBoolToUint:
case glslang::EOpConvBoolToUint64:
- zero = (op == glslang::EOpConvBoolToUint64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0);
- one = (op == glslang::EOpConvBoolToUint64) ? builder.makeUint64Constant(1) : builder.makeUintConstant(1);
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvBoolToUint16:
+#endif
+ if (op == glslang::EOpConvBoolToUint64)
+ zero = builder.makeUint64Constant(0);
+#ifdef AMD_EXTENSIONS
+ else if (op == glslang::EOpConvBoolToUint16)
+ zero = builder.makeUint16Constant(0);
+#endif
+ else
+ zero = builder.makeUintConstant(0);
+
+ if (op == glslang::EOpConvBoolToUint64)
+ one = builder.makeUint64Constant(1);
+#ifdef AMD_EXTENSIONS
+ else if (op == glslang::EOpConvBoolToUint16)
+ one = builder.makeUint16Constant(1);
+#endif
+ else
+ one = builder.makeUintConstant(1);
+
convOp = spv::OpSelect;
break;
@@ -4095,6 +4525,9 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
case glslang::EOpConvInt64ToFloat:
case glslang::EOpConvInt64ToDouble:
#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvInt16ToFloat:
+ case glslang::EOpConvInt16ToDouble:
+ case glslang::EOpConvInt16ToFloat16:
case glslang::EOpConvIntToFloat16:
case glslang::EOpConvInt64ToFloat16:
#endif
@@ -4106,6 +4539,9 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
case glslang::EOpConvUint64ToFloat:
case glslang::EOpConvUint64ToDouble:
#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvUint16ToFloat:
+ case glslang::EOpConvUint16ToDouble:
+ case glslang::EOpConvUint16ToFloat16:
case glslang::EOpConvUintToFloat16:
case glslang::EOpConvUint64ToFloat16:
#endif
@@ -4130,6 +4566,9 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
case glslang::EOpConvFloatToInt64:
case glslang::EOpConvDoubleToInt64:
#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvFloatToInt16:
+ case glslang::EOpConvDoubleToInt16:
+ case glslang::EOpConvFloat16ToInt16:
case glslang::EOpConvFloat16ToInt:
case glslang::EOpConvFloat16ToInt64:
#endif
@@ -4140,10 +4579,21 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
case glslang::EOpConvIntToUint:
case glslang::EOpConvUint64ToInt64:
case glslang::EOpConvInt64ToUint64:
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvUint16ToInt16:
+ case glslang::EOpConvInt16ToUint16:
+#endif
if (builder.isInSpecConstCodeGenMode()) {
// Build zero scalar or vector for OpIAdd.
- zero = (op == glslang::EOpConvUint64ToInt64 ||
- op == glslang::EOpConvInt64ToUint64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0);
+ if (op == glslang::EOpConvUint64ToInt64 || op == glslang::EOpConvInt64ToUint64)
+ zero = builder.makeUint64Constant(0);
+#ifdef AMD_EXTENSIONS
+ else if (op == glslang::EOpConvUint16ToInt16 || op == glslang::EOpConvInt16ToUint16)
+ zero = builder.makeUint16Constant(0);
+#endif
+ else
+ zero = builder.makeUintConstant(0);
+
zero = makeSmearedConstant(zero, vectorSize);
// Use OpIAdd, instead of OpBitcast to do the conversion when
// generating for OpSpecConstantOp instruction.
@@ -4158,6 +4608,9 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
case glslang::EOpConvFloatToUint64:
case glslang::EOpConvDoubleToUint64:
#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvFloatToUint16:
+ case glslang::EOpConvDoubleToUint16:
+ case glslang::EOpConvFloat16ToUint16:
case glslang::EOpConvFloat16ToUint:
case glslang::EOpConvFloat16ToUint64:
#endif
@@ -4166,11 +4619,23 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
case glslang::EOpConvIntToInt64:
case glslang::EOpConvInt64ToInt:
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvIntToInt16:
+ case glslang::EOpConvInt16ToInt:
+ case glslang::EOpConvInt64ToInt16:
+ case glslang::EOpConvInt16ToInt64:
+#endif
convOp = spv::OpSConvert;
break;
case glslang::EOpConvUintToUint64:
case glslang::EOpConvUint64ToUint:
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvUintToUint16:
+ case glslang::EOpConvUint16ToUint:
+ case glslang::EOpConvUint64ToUint16:
+ case glslang::EOpConvUint16ToUint64:
+#endif
convOp = spv::OpUConvert;
break;
@@ -4178,24 +4643,58 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
case glslang::EOpConvInt64ToUint:
case glslang::EOpConvUint64ToInt:
case glslang::EOpConvUintToInt64:
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvInt16ToUint:
+ case glslang::EOpConvUintToInt16:
+ case glslang::EOpConvInt16ToUint64:
+ case glslang::EOpConvUint64ToInt16:
+ case glslang::EOpConvUint16ToInt:
+ case glslang::EOpConvIntToUint16:
+ case glslang::EOpConvUint16ToInt64:
+ case glslang::EOpConvInt64ToUint16:
+#endif
// OpSConvert/OpUConvert + OpBitCast
switch (op) {
case glslang::EOpConvIntToUint64:
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvInt16ToUint64:
+#endif
convOp = spv::OpSConvert;
type = builder.makeIntType(64);
break;
case glslang::EOpConvInt64ToUint:
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvInt16ToUint:
+#endif
convOp = spv::OpSConvert;
type = builder.makeIntType(32);
break;
case glslang::EOpConvUint64ToInt:
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvUint16ToInt:
+#endif
convOp = spv::OpUConvert;
type = builder.makeUintType(32);
break;
case glslang::EOpConvUintToInt64:
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvUint16ToInt64:
+#endif
convOp = spv::OpUConvert;
type = builder.makeUintType(64);
break;
+#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvUintToInt16:
+ case glslang::EOpConvUint64ToInt16:
+ convOp = spv::OpUConvert;
+ type = builder.makeUintType(16);
+ break;
+ case glslang::EOpConvIntToUint16:
+ case glslang::EOpConvInt64ToUint16:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(16);
+ break;
+#endif
default:
assert(0);
break;
@@ -4208,8 +4707,22 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
if (builder.isInSpecConstCodeGenMode()) {
// Build zero scalar or vector for OpIAdd.
- zero = (op == glslang::EOpConvIntToUint64 ||
- op == glslang::EOpConvUintToInt64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0);
+#ifdef AMD_EXTENSIONS
+ if (op == glslang::EOpConvIntToUint64 || op == glslang::EOpConvUintToInt64 ||
+ op == glslang::EOpConvInt16ToUint64 || op == glslang::EOpConvUint16ToInt64)
+ zero = builder.makeUint64Constant(0);
+ else if (op == glslang::EOpConvIntToUint16 || op == glslang::EOpConvUintToInt16 ||
+ op == glslang::EOpConvInt64ToUint16 || op == glslang::EOpConvUint64ToInt16)
+ zero = builder.makeUint16Constant(0);
+ else
+ zero = builder.makeUintConstant(0);
+#else
+ if (op == glslang::EOpConvIntToUint64 || op == glslang::EOpConvUintToInt64)
+ zero = builder.makeUint64Constant(0);
+ else
+ zero = builder.makeUintConstant(0);
+#endif
+
zero = makeSmearedConstant(zero, vectorSize);
// Use OpIAdd, instead of OpBitcast to do the conversion when
// generating for OpSpecConstantOp instruction.
@@ -4256,34 +4769,45 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv
switch (op) {
case glslang::EOpAtomicAdd:
case glslang::EOpImageAtomicAdd:
+ case glslang::EOpAtomicCounterAdd:
opCode = spv::OpAtomicIAdd;
break;
+ case glslang::EOpAtomicCounterSubtract:
+ opCode = spv::OpAtomicISub;
+ break;
case glslang::EOpAtomicMin:
case glslang::EOpImageAtomicMin:
- opCode = typeProxy == glslang::EbtUint ? spv::OpAtomicUMin : spv::OpAtomicSMin;
+ case glslang::EOpAtomicCounterMin:
+ opCode = (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) ? spv::OpAtomicUMin : spv::OpAtomicSMin;
break;
case glslang::EOpAtomicMax:
case glslang::EOpImageAtomicMax:
- opCode = typeProxy == glslang::EbtUint ? spv::OpAtomicUMax : spv::OpAtomicSMax;
+ case glslang::EOpAtomicCounterMax:
+ opCode = (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) ? spv::OpAtomicUMax : spv::OpAtomicSMax;
break;
case glslang::EOpAtomicAnd:
case glslang::EOpImageAtomicAnd:
+ case glslang::EOpAtomicCounterAnd:
opCode = spv::OpAtomicAnd;
break;
case glslang::EOpAtomicOr:
case glslang::EOpImageAtomicOr:
+ case glslang::EOpAtomicCounterOr:
opCode = spv::OpAtomicOr;
break;
case glslang::EOpAtomicXor:
case glslang::EOpImageAtomicXor:
+ case glslang::EOpAtomicCounterXor:
opCode = spv::OpAtomicXor;
break;
case glslang::EOpAtomicExchange:
case glslang::EOpImageAtomicExchange:
+ case glslang::EOpAtomicCounterExchange:
opCode = spv::OpAtomicExchange;
break;
case glslang::EOpAtomicCompSwap:
case glslang::EOpImageAtomicCompSwap:
+ case glslang::EOpAtomicCounterCompSwap:
opCode = spv::OpAtomicCompareExchange;
break;
case glslang::EOpAtomicCounterIncrement:
@@ -4300,11 +4824,15 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv
break;
}
+ if (typeProxy == glslang::EbtInt64 || typeProxy == glslang::EbtUint64)
+ builder.addCapability(spv::CapabilityInt64Atomics);
+
// Sort out the operands
// - mapping from glslang -> SPV
// - there are extra SPV operands with no glslang source
// - compare-exchange swaps the value and comparator
// - compare-exchange has an extra memory semantics
+ // - EOpAtomicCounterDecrement needs a post decrement
std::vector<spv::Id> spvAtomicOperands; // hold the spv operands
auto opIt = operands.begin(); // walk the glslang operands
spvAtomicOperands.push_back(*(opIt++));
@@ -4323,7 +4851,14 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv
for (; opIt != operands.end(); ++opIt)
spvAtomicOperands.push_back(*opIt);
- return builder.createOp(opCode, typeId, spvAtomicOperands);
+ spv::Id resultId = builder.createOp(opCode, typeId, spvAtomicOperands);
+
+ // GLSL and HLSL atomic-counter decrement return post-decrement value,
+ // while SPIR-V returns pre-decrement value. Translate between these semantics.
+ if (op == glslang::EOpAtomicCounterDecrement)
+ resultId = builder.createBinOp(spv::OpISub, typeId, resultId, builder.makeIntConstant(1));
+
+ return resultId;
}
// Create group invocation operations.
@@ -4595,10 +5130,11 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv
spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
{
- bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
#ifdef AMD_EXTENSIONS
+ bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64 || typeProxy == glslang::EbtUint16;
bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16;
#else
+ bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
#endif
@@ -4609,6 +5145,9 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
spv::Id typeId0 = 0;
if (consumedOperands > 0)
typeId0 = builder.getTypeId(operands[0]);
+ spv::Id typeId1 = 0;
+ if (consumedOperands > 1)
+ typeId1 = builder.getTypeId(operands[1]);
spv::Id frexpIntType = 0;
switch (op) {
@@ -4730,13 +5269,22 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
libCall = spv::GLSLstd450Fma;
break;
case glslang::EOpFrexp:
- libCall = spv::GLSLstd450FrexpStruct;
- if (builder.getNumComponents(operands[0]) == 1)
- frexpIntType = builder.makeIntegerType(32, true);
- else
- frexpIntType = builder.makeVectorType(builder.makeIntegerType(32, true), builder.getNumComponents(operands[0]));
- typeId = builder.makeStructResultType(typeId0, frexpIntType);
- consumedOperands = 1;
+ {
+ libCall = spv::GLSLstd450FrexpStruct;
+ assert(builder.isPointerType(typeId1));
+ typeId1 = builder.getContainedTypeId(typeId1);
+#ifdef AMD_EXTENSIONS
+ int width = builder.getScalarTypeWidth(typeId1);
+#else
+ int width = 32;
+#endif
+ if (builder.getNumComponents(operands[0]) == 1)
+ frexpIntType = builder.makeIntegerType(width, true);
+ else
+ frexpIntType = builder.makeVectorType(builder.makeIntegerType(width, true), builder.getNumComponents(operands[0]));
+ typeId = builder.makeStructResultType(typeId0, frexpIntType);
+ consumedOperands = 1;
+ }
break;
case glslang::EOpLdexp:
libCall = spv::GLSLstd450Ldexp;
@@ -4844,9 +5392,18 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
builder.createStore(builder.createCompositeExtract(id, typeId0, 1), operands[2]);
break;
case glslang::EOpFrexp:
- assert(operands.size() == 2);
- builder.createStore(builder.createCompositeExtract(id, frexpIntType, 1), operands[1]);
- id = builder.createCompositeExtract(id, typeId0, 0);
+ {
+ assert(operands.size() == 2);
+ if (builder.isFloatType(builder.getScalarTypeId(typeId1))) {
+ // "exp" is floating-point type (from HLSL intrinsic)
+ spv::Id member1 = builder.createCompositeExtract(id, frexpIntType, 1);
+ member1 = builder.createUnaryOp(spv::OpConvertSToF, typeId1, member1);
+ builder.createStore(member1, operands[1]);
+ } else
+ // "exp" is integer type (from GLSL built-in function)
+ builder.createStore(builder.createCompositeExtract(id, frexpIntType, 1), operands[1]);
+ id = builder.createCompositeExtract(id, typeId0, 0);
+ }
break;
default:
break;
@@ -5006,14 +5563,12 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
}
else if (builtIn == spv::BuiltInLayer) {
// SPV_NV_viewport_array2 extension
- if (symbol->getQualifier().layoutViewportRelative)
- {
+ if (symbol->getQualifier().layoutViewportRelative) {
addDecoration(id, (spv::Decoration)spv::DecorationViewportRelativeNV);
builder.addCapability(spv::CapabilityShaderViewportMaskNV);
builder.addExtension(spv::E_SPV_NV_viewport_array2);
}
- if(symbol->getQualifier().layoutSecondaryViewportRelativeOffset != -2048)
- {
+ if (symbol->getQualifier().layoutSecondaryViewportRelativeOffset != -2048) {
addDecoration(id, (spv::Decoration)spv::DecorationSecondaryViewportRelativeNV, symbol->getQualifier().layoutSecondaryViewportRelativeOffset);
builder.addCapability(spv::CapabilityShaderStereoViewNV);
builder.addExtension(spv::E_SPV_NV_stereo_view_rendering);
@@ -5162,6 +5717,14 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla
case glslang::EbtUint64:
spvConsts.push_back(builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const()));
break;
+#ifdef AMD_EXTENSIONS
+ case glslang::EbtInt16:
+ spvConsts.push_back(builder.makeInt16Constant(zero ? 0 : (short)consts[nextConst].getIConst()));
+ break;
+ case glslang::EbtUint16:
+ spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : (unsigned short)consts[nextConst].getUConst()));
+ break;
+#endif
case glslang::EbtFloat:
spvConsts.push_back(builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst()));
break;
@@ -5199,6 +5762,14 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla
case glslang::EbtUint64:
scalar = builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const(), specConstant);
break;
+#ifdef AMD_EXTENSIONS
+ case glslang::EbtInt16:
+ scalar = builder.makeInt16Constant(zero ? 0 : (short)consts[nextConst].getIConst(), specConstant);
+ break;
+ case glslang::EbtUint16:
+ scalar = builder.makeUint16Constant(zero ? 0 : (unsigned short)consts[nextConst].getUConst(), specConstant);
+ break;
+#endif
case glslang::EbtFloat:
scalar = builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant);
break;
@@ -5256,13 +5827,18 @@ bool TGlslangToSpvTraverser::isTrivialLeaf(const glslang::TIntermTyped* node)
}
// A node is trivial if it is a single operation with no side effects.
-// Error on the side of saying non-trivial.
+// HLSL (and/or vectors) are always trivial, as it does not short circuit.
+// Otherwise, error on the side of saying non-trivial.
// Return true if trivial.
bool TGlslangToSpvTraverser::isTrivial(const glslang::TIntermTyped* node)
{
if (node == nullptr)
return false;
+ // count non scalars as trivial, as well as anything coming from HLSL
+ if (! node->getType().isScalarOrVec1() || glslangIntermediate->getSource() == glslang::EShSourceHlsl)
+ return true;
+
// symbols and constants are trivial
if (isTrivialLeaf(node))
return true;
@@ -5333,7 +5909,7 @@ spv::Id TGlslangToSpvTraverser::createShortCircuit(glslang::TOperator op, glslan
leftId = builder.createUnaryOp(spv::OpLogicalNot, boolTypeId, leftId);
// make an "if" based on the left value
- spv::Builder::If ifBuilder(leftId, builder);
+ spv::Builder::If ifBuilder(leftId, spv::SelectionControlMaskNone, builder);
// emit right operand as the "then" part of the "if"
builder.clearAccessChain();
@@ -5377,6 +5953,14 @@ void GetSpirvVersion(std::string& version)
version = buf;
}
+// For low-order part of the generator's magic number. Bump up
+// when there is a change in the style (e.g., if SSA form changes,
+// or a different instruction sequence to do something gets used).
+int GetSpirvGeneratorVersion()
+{
+ return 2;
+}
+
// Write SPIR-V out to a binary file
void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName)
{
@@ -5421,29 +6005,84 @@ void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName,
out.close();
}
+#ifdef ENABLE_OPT
+void errHandler(const std::string& str) {
+ std::cerr << str << std::endl;
+}
+#endif
+
//
// Set up the glslang traversal
//
-void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv)
+void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, SpvOptions* options)
{
spv::SpvBuildLogger logger;
- GlslangToSpv(intermediate, spirv, &logger);
+ GlslangToSpv(intermediate, spirv, &logger, options);
}
-void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, spv::SpvBuildLogger* logger)
+void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
+ spv::SpvBuildLogger* logger, SpvOptions* options)
{
TIntermNode* root = intermediate.getTreeRoot();
if (root == 0)
return;
+ glslang::SpvOptions defaultOptions;
+ if (options == nullptr)
+ options = &defaultOptions;
+
glslang::GetThreadPoolAllocator().push();
- TGlslangToSpvTraverser it(&intermediate, logger);
+ TGlslangToSpvTraverser it(&intermediate, logger, *options);
root->traverse(&it);
it.finishSpv();
it.dumpSpv(spirv);
+#ifdef ENABLE_OPT
+ // If from HLSL, run spirv-opt to "legalize" the SPIR-V for Vulkan
+ // eg. forward and remove memory writes of opaque types.
+ if ((intermediate.getSource() == EShSourceHlsl ||
+ options->optimizeSize) &&
+ !options->disableOptimizer) {
+ spv_target_env target_env = SPV_ENV_UNIVERSAL_1_2;
+
+ spvtools::Optimizer optimizer(target_env);
+ optimizer.SetMessageConsumer([](spv_message_level_t level,
+ const char* source,
+ const spv_position_t& position,
+ const char* message) {
+ std::cerr << StringifyMessage(level, source, position, message)
+ << std::endl;
+ });
+
+ optimizer.RegisterPass(CreateInlineExhaustivePass());
+ optimizer.RegisterPass(CreateLocalAccessChainConvertPass());
+ optimizer.RegisterPass(CreateLocalSingleBlockLoadStoreElimPass());
+ optimizer.RegisterPass(CreateLocalSingleStoreElimPass());
+ optimizer.RegisterPass(CreateInsertExtractElimPass());
+ optimizer.RegisterPass(CreateAggressiveDCEPass());
+ optimizer.RegisterPass(CreateDeadBranchElimPass());
+ optimizer.RegisterPass(CreateCFGCleanupPass());
+ optimizer.RegisterPass(CreateBlockMergePass());
+ optimizer.RegisterPass(CreateLocalMultiStoreElimPass());
+ optimizer.RegisterPass(CreateInsertExtractElimPass());
+ optimizer.RegisterPass(CreateAggressiveDCEPass());
+ // TODO(greg-lunarg): Add this when AMD driver issues are resolved
+ // if (options->optimizeSize)
+ // optimizer.RegisterPass(CreateCommonUniformElimPass());
+
+ if (!optimizer.Run(spirv.data(), spirv.size(), &spirv))
+ return;
+
+ // Remove dead module-level objects: functions, types, vars
+ // TODO(greg-lunarg): Switch to spirv-opt versions when available
+ spv::spirvbin_t Remapper(0);
+ Remapper.registerErrorHandler(errHandler);
+ Remapper.remap(spirv, spv::spirvbin_t::DCE_ALL);
+ }
+#endif
+
glslang::GetThreadPoolAllocator().pop();
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/GlslangToSpv.h b/3rdparty/bgfx/3rdparty/glslang/SPIRV/GlslangToSpv.h
index 11e22f5888c..3a437137509 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/GlslangToSpv.h
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/GlslangToSpv.h
@@ -32,6 +32,8 @@
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
+#pragma once
+
#if _MSC_VER >= 1900
#pragma warning(disable : 4464) // relative include path contains '..'
#endif
@@ -45,9 +47,20 @@
namespace glslang {
+struct SpvOptions {
+ SpvOptions() : generateDebugInfo(false), disableOptimizer(true),
+ optimizeSize(false) { }
+ bool generateDebugInfo;
+ bool disableOptimizer;
+ bool optimizeSize;
+};
+
void GetSpirvVersion(std::string&);
-void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv);
-void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, spv::SpvBuildLogger* logger);
+int GetSpirvGeneratorVersion();
+void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
+ SpvOptions* options = nullptr);
+void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
+ spv::SpvBuildLogger* logger, SpvOptions* options = nullptr);
void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/InReadableOrder.cpp b/3rdparty/bgfx/3rdparty/glslang/SPIRV/InReadableOrder.cpp
index 4bb3d772c5d..52b29613a45 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/InReadableOrder.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/InReadableOrder.cpp
@@ -51,7 +51,7 @@
#include "spvIR.h"
#include <cassert>
-#include <unordered_map>
+#include <unordered_set>
using spv::Block;
using spv::Id;
@@ -69,33 +69,33 @@ public:
void visit(Block* block)
{
assert(block);
- if (visited_[block] || delayed_[block])
+ if (visited_.count(block) || delayed_.count(block))
return;
callback_(block);
- visited_[block] = true;
+ visited_.insert(block);
Block* mergeBlock = nullptr;
Block* continueBlock = nullptr;
auto mergeInst = block->getMergeInstruction();
if (mergeInst) {
Id mergeId = mergeInst->getIdOperand(0);
mergeBlock = block->getParent().getParent().getInstruction(mergeId)->getBlock();
- delayed_[mergeBlock] = true;
+ delayed_.insert(mergeBlock);
if (mergeInst->getOpCode() == spv::OpLoopMerge) {
Id continueId = mergeInst->getIdOperand(1);
continueBlock =
block->getParent().getParent().getInstruction(continueId)->getBlock();
- delayed_[continueBlock] = true;
+ delayed_.insert(continueBlock);
}
}
const auto successors = block->getSuccessors();
for (auto it = successors.cbegin(); it != successors.cend(); ++it)
visit(*it);
if (continueBlock) {
- delayed_[continueBlock] = false;
+ delayed_.erase(continueBlock);
visit(continueBlock);
}
if (mergeBlock) {
- delayed_[mergeBlock] = false;
+ delayed_.erase(mergeBlock);
visit(mergeBlock);
}
}
@@ -103,7 +103,7 @@ public:
private:
std::function<void(Block*)> callback_;
// Whether a block has already been visited or is being delayed.
- std::unordered_map<Block *, bool> visited_, delayed_;
+ std::unordered_set<Block *> visited_, delayed_;
};
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/SPVRemapper.cpp b/3rdparty/bgfx/3rdparty/glslang/SPIRV/SPVRemapper.cpp
index 9b1270501be..4e45cbb83ec 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/SPVRemapper.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/SPVRemapper.cpp
@@ -135,6 +135,9 @@ namespace spv {
const unsigned typeStart = idPos(id);
const spv::Op opCode = asOpCode(typeStart);
+ if (errorLatch)
+ return 0;
+
switch (opCode) {
case spv::OpTypeInt: // fall through...
case spv::OpTypeFloat: return (spv[typeStart+2]+31)/32;
@@ -148,8 +151,10 @@ namespace spv {
unsigned spirvbin_t::idTypeSizeInWords(spv::Id id) const
{
const auto tid_it = idTypeSizeMap.find(id);
- if (tid_it == idTypeSizeMap.end())
+ if (tid_it == idTypeSizeMap.end()) {
error("type size for ID not found");
+ return 0;
+ }
return tid_it->second;
}
@@ -215,14 +220,19 @@ namespace spv {
bool spirvbin_t::isConstOp(spv::Op opCode) const
{
switch (opCode) {
- case spv::OpConstantNull: error("unimplemented constant type");
- case spv::OpConstantSampler: error("unimplemented constant type");
+ case spv::OpConstantNull:
+ case spv::OpConstantSampler:
+ error("unimplemented constant type");
+ return true;
case spv::OpConstantTrue:
case spv::OpConstantFalse:
case spv::OpConstantComposite:
- case spv::OpConstant: return true;
- default: return false;
+ case spv::OpConstant:
+ return true;
+
+ default:
+ return false;
}
}
@@ -248,19 +258,31 @@ namespace spv {
{
assert(id != spv::NoResult && newId != spv::NoResult);
+ if (id > bound()) {
+ error(std::string("ID out of range: ") + std::to_string(id));
+ return spirvbin_t::unused;
+ }
+
if (id >= idMapL.size())
idMapL.resize(id+1, unused);
if (newId != unmapped && newId != unused) {
- if (isOldIdUnused(id))
+ if (isOldIdUnused(id)) {
error(std::string("ID unused in module: ") + std::to_string(id));
+ return spirvbin_t::unused;
+ }
- if (!isOldIdUnmapped(id))
+ if (!isOldIdUnmapped(id)) {
error(std::string("ID already mapped: ") + std::to_string(id) + " -> "
- + std::to_string(localId(id)));
+ + std::to_string(localId(id)));
- if (isNewIdMapped(newId))
+ return spirvbin_t::unused;
+ }
+
+ if (isNewIdMapped(newId)) {
error(std::string("ID already used in module: ") + std::to_string(newId));
+ return spirvbin_t::unused;
+ }
msg(4, 4, std::string("map: ") + std::to_string(id) + " -> " + std::to_string(newId));
setMapped(newId);
@@ -294,6 +316,10 @@ namespace spv {
process(inst_fn_nop, // ignore instructions
[this](spv::Id& id) {
id = localId(id);
+
+ if (errorLatch)
+ return;
+
assert(id != unused && id != unmapped);
}
);
@@ -312,14 +338,22 @@ namespace spv {
continue;
// Find a new mapping for any used but unmapped IDs
- if (isOldIdUnmapped(id))
+ if (isOldIdUnmapped(id)) {
localId(id, unusedId = nextUnusedId(unusedId));
+ if (errorLatch)
+ return;
+ }
- if (isOldIdUnmapped(id))
+ if (isOldIdUnmapped(id)) {
error(std::string("old ID not mapped: ") + std::to_string(id));
+ return;
+ }
// Track max bound
maxBound = std::max(maxBound, localId(id) + 1);
+
+ if (errorLatch)
+ return;
}
bound(maxBound); // reset header ID bound to as big as it now needs to be
@@ -401,6 +435,9 @@ namespace spv {
if (typeId != spv::NoResult) {
const unsigned idTypeSize = typeSizeInWords(typeId);
+ if (errorLatch)
+ return false;
+
if (idTypeSize != 0)
idTypeSizeMap[resultId] = idTypeSize;
}
@@ -416,17 +453,26 @@ namespace spv {
} else if (opCode == spv::Op::OpEntryPoint) {
entryPoint = asId(start + 2);
} else if (opCode == spv::Op::OpFunction) {
- if (fnStart != 0)
+ if (fnStart != 0) {
error("nested function found");
+ return false;
+ }
+
fnStart = start;
fnRes = asId(start + 2);
} else if (opCode == spv::Op::OpFunctionEnd) {
assert(fnRes != spv::NoResult);
- if (fnStart == 0)
+ if (fnStart == 0) {
error("function end without function start");
+ return false;
+ }
+
fnPos[fnRes] = range_t(fnStart, start + asWordCount(start));
fnStart = 0;
} else if (isConstOp(opCode)) {
+ if (errorLatch)
+ return false;
+
assert(asId(start + 2) != spv::NoResult);
typeConstPos.insert(start);
} else if (isTypeOp(opCode)) {
@@ -446,29 +492,37 @@ namespace spv {
{
msg(2, 2, std::string("validating: "));
- if (spv.size() < header_size)
+ if (spv.size() < header_size) {
error("file too short: ");
+ return;
+ }
- if (magic() != spv::MagicNumber)
+ if (magic() != spv::MagicNumber) {
error("bad magic number");
+ return;
+ }
// field 1 = version
// field 2 = generator magic
// field 3 = result <id> bound
- if (schemaNum() != 0)
+ if (schemaNum() != 0) {
error("bad schema, must be 0");
+ return;
+ }
}
int spirvbin_t::processInstruction(unsigned word, instfn_t instFn, idfn_t idFn)
{
const auto instructionStart = word;
const unsigned wordCount = asWordCount(instructionStart);
- const spv::Op opCode = asOpCode(instructionStart);
const int nextInst = word++ + wordCount;
+ spv::Op opCode = asOpCode(instructionStart);
- if (nextInst > int(spv.size()))
+ if (nextInst > int(spv.size())) {
error("spir instruction terminated too early");
+ return -1;
+ }
// Base for computing number of operands; will be updated as more is learned
unsigned numOperands = wordCount - 1;
@@ -506,6 +560,18 @@ namespace spv {
// Store IDs from instruction in our map
for (int op = 0; numOperands > 0; ++op, --numOperands) {
+ // SpecConstantOp is special: it includes the operands of another opcode which is
+ // given as a literal in the 3rd word. We will switch over to pretending that the
+ // opcode being processed is the literal opcode value of the SpecConstantOp. See the
+ // SPIRV spec for details. This way we will handle IDs and literals as appropriate for
+ // the embedded op.
+ if (opCode == spv::OpSpecConstantOp) {
+ if (op == 0) {
+ opCode = asOpCode(word++); // this is the opcode embedded in the SpecConstantOp.
+ --numOperands;
+ }
+ }
+
switch (spv::InstructionDesc[opCode].operands.getClass(op)) {
case spv::OperandId:
case spv::OperandScope:
@@ -538,6 +604,9 @@ namespace spv {
const unsigned literalSize = idTypeSizeInWords(idBuffer[literalSizePos]);
const unsigned numLiteralIdPairs = (nextInst-word) / (1+literalSize);
+ if (errorLatch)
+ return -1;
+
for (unsigned arg=0; arg<numLiteralIdPairs; ++arg) {
word += literalSize; // literal
idFn(asId(word++)); // label
@@ -614,9 +683,13 @@ namespace spv {
// basic parsing and InstructionDesc table borrowed from SpvDisassemble.cpp...
unsigned nextInst = unsigned(spv.size());
- for (unsigned word = begin; word < end; word = nextInst)
+ for (unsigned word = begin; word < end; word = nextInst) {
nextInst = processInstruction(word, instFn, idFn);
+ if (errorLatch)
+ return *this;
+ }
+
return *this;
}
@@ -631,8 +704,11 @@ namespace spv {
for (const char c : name.first)
hashval = hashval * 1009 + c;
- if (isOldIdUnmapped(name.second))
+ if (isOldIdUnmapped(name.second)) {
localId(name.second, nextUnusedId(hashval % softTypeIdLimit + firstMappedID));
+ if (errorLatch)
+ return;
+ }
}
}
@@ -654,6 +730,9 @@ namespace spv {
[&](spv::Op, unsigned start) { instPos.push_back(start); return true; },
op_fn_nop);
+ if (errorLatch)
+ return;
+
// Window size for context-sensitive canonicalization values
// Empirical best size from a single data set. TODO: Would be a good tunable.
// We essentially perform a little convolution around each instruction,
@@ -689,8 +768,12 @@ namespace spv {
hashval = hashval * 30103 + asOpCodeHash(instPos[i]); // 30103 = semiarbitrary prime
}
- if (isOldIdUnmapped(resId))
+ if (isOldIdUnmapped(resId)) {
localId(resId, nextUnusedId(hashval % softTypeIdLimit + firstMappedID));
+ if (errorLatch)
+ return;
+ }
+
}
}
}
@@ -783,6 +866,9 @@ namespace spv {
[&](spv::Id& id) { if (idMap.find(id) != idMap.end()) id = idMap[id]; }
);
+ if (errorLatch)
+ return;
+
// EXPERIMENTAL: Implicit output stores
fnLocalVars.clear();
idMap.clear();
@@ -803,11 +889,17 @@ namespace spv {
},
op_fn_nop);
+ if (errorLatch)
+ return;
+
process(
inst_fn_nop,
[&](spv::Id& id) { if (idMap.find(id) != idMap.end()) id = idMap[id]; }
);
+ if (errorLatch)
+ return;
+
strip(); // strip out data we decided to eliminate
}
@@ -907,6 +999,9 @@ namespace spv {
}
);
+ if (errorLatch)
+ return;
+
process(
[&](spv::Op opCode, unsigned start) {
if (opCode == spv::OpLoad && fnLocalVars.count(asId(start+3)) > 0)
@@ -915,6 +1010,9 @@ namespace spv {
},
op_fn_nop);
+ if (errorLatch)
+ return;
+
// Chase replacements to their origins, in case there is a chain such as:
// 2 = store 1
// 3 = load 2
@@ -948,6 +1046,9 @@ namespace spv {
}
);
+ if (errorLatch)
+ return;
+
strip(); // strip out data we decided to eliminate
}
@@ -991,6 +1092,9 @@ namespace spv {
fn->second.first,
fn->second.second);
+ if (errorLatch)
+ return;
+
fn = fnPos.erase(fn);
} else ++fn;
}
@@ -1023,6 +1127,9 @@ namespace spv {
[&](spv::Id& id) { if (varUseCount[id]) ++varUseCount[id]; }
);
+ if (errorLatch)
+ return;
+
// Remove single-use function variables + associated decorations and names
process(
[&](spv::Op opCode, unsigned start) {
@@ -1064,6 +1171,9 @@ namespace spv {
[&](spv::Id& id) { if (isType[id]) ++typeUseCount[id]; }
);
+ if (errorLatch)
+ return;
+
// Remove single reference types
for (const auto typeStart : typeConstPos) {
const spv::Id typeId = asTypeConstId(typeStart);
@@ -1073,6 +1183,9 @@ namespace spv {
stripInst(typeStart);
}
}
+
+ if (errorLatch)
+ return;
}
}
@@ -1151,8 +1264,10 @@ namespace spv {
unsigned spirvbin_t::idPos(spv::Id id) const
{
const auto tid_it = idPosR.find(id);
- if (tid_it == idPosR.end())
+ if (tid_it == idPosR.end()) {
error("ID not found");
+ return 0;
+ }
return tid_it->second;
}
@@ -1251,8 +1366,14 @@ namespace spv {
const spv::Id resId = asTypeConstId(typeStart);
const std::uint32_t hashval = hashType(typeStart);
- if (isOldIdUnmapped(resId))
+ if (errorLatch)
+ return;
+
+ if (isOldIdUnmapped(resId)) {
localId(resId, nextUnusedId(hashval % softTypeIdLimit + firstMappedID));
+ if (errorLatch)
+ return;
+ }
}
}
@@ -1271,7 +1392,7 @@ namespace spv {
int strippedPos = 0;
for (unsigned word = 0; word < unsigned(spv.size()); ++word) {
- if (strip_it != stripRange.end() && word >= strip_it->second)
+ while (strip_it != stripRange.end() && word >= strip_it->second)
++strip_it;
if (strip_it == stripRange.end() || word < strip_it->first || word >= strip_it->second)
@@ -1298,24 +1419,49 @@ namespace spv {
msg(3, 4, std::string("ID bound: ") + std::to_string(bound()));
if (options & STRIP) stripDebug();
+ if (errorLatch) return;
+
strip(); // strip out data we decided to eliminate
+ if (errorLatch) return;
+
if (options & OPT_LOADSTORE) optLoadStore();
+ if (errorLatch) return;
+
if (options & OPT_FWD_LS) forwardLoadStores();
+ if (errorLatch) return;
+
if (options & DCE_FUNCS) dceFuncs();
+ if (errorLatch) return;
+
if (options & DCE_VARS) dceVars();
+ if (errorLatch) return;
+
if (options & DCE_TYPES) dceTypes();
+ if (errorLatch) return;
strip(); // strip out data we decided to eliminate
+ if (errorLatch) return;
+
stripDeadRefs(); // remove references to things we DCEed
+ if (errorLatch) return;
+
// after the last strip, we must clean any debug info referring to now-deleted data
if (options & MAP_TYPES) mapTypeConst();
+ if (errorLatch) return;
+
if (options & MAP_NAMES) mapNames();
+ if (errorLatch) return;
+
if (options & MAP_FUNCS) mapFnBodies();
+ if (errorLatch) return;
if (options & MAP_ALL) {
mapRemainder(); // map any unmapped IDs
+ if (errorLatch) return;
+
applyMap(); // Now remap each shader to the new IDs we've come up with
+ if (errorLatch) return;
}
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/SPVRemapper.h b/3rdparty/bgfx/3rdparty/glslang/SPIRV/SPVRemapper.h
index f9f369a37c3..97e3f31fa65 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/SPVRemapper.h
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/SPVRemapper.h
@@ -39,6 +39,7 @@
#include <string>
#include <vector>
#include <cstdlib>
+#include <exception>
namespace spv {
@@ -111,7 +112,9 @@ namespace spv {
class spirvbin_t : public spirvbin_base_t
{
public:
- spirvbin_t(int verbose = 0) : entryPoint(spv::NoResult), largestNewId(0), verbose(verbose) { }
+ spirvbin_t(int verbose = 0) : entryPoint(spv::NoResult), largestNewId(0), verbose(verbose), errorLatch(false)
+ { }
+
virtual ~spirvbin_t() { }
// remap on an existing binary in memory
@@ -165,7 +168,7 @@ private:
typedef std::unordered_map<spv::Id, unsigned> typesize_map_t;
// handle error
- void error(const std::string& txt) const { errorHandler(txt); }
+ void error(const std::string& txt) const { errorLatch = true; errorHandler(txt); }
bool isConstOp(spv::Op opCode) const;
bool isTypeOp(spv::Op opCode) const;
@@ -286,6 +289,11 @@ private:
std::uint32_t options;
int verbose; // verbosity level
+ // Error latch: this is set if the error handler is ever executed. It would be better to
+ // use a try/catch block and throw, but that's not desired for certain environments, so
+ // this is the alternative.
+ mutable bool errorLatch;
+
static errorfn_t errorHandler;
static logfn_t logHandler;
};
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/SpvBuilder.cpp b/3rdparty/bgfx/3rdparty/glslang/SPIRV/SpvBuilder.cpp
index 0add1db40d9..c795ca8945c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/SpvBuilder.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/SpvBuilder.cpp
@@ -59,6 +59,9 @@ namespace spv {
Builder::Builder(unsigned int magicNumber, SpvBuildLogger* buildLogger) :
source(SourceLanguageUnknown),
sourceVersion(0),
+ sourceFileStringId(NoResult),
+ currentLine(0),
+ emitOpLines(false),
addressModel(AddressingModelLogical),
memoryModel(MemoryModelGLSL450),
builderNumber(magicNumber),
@@ -84,6 +87,26 @@ Id Builder::import(const char* name)
return import->getResultId();
}
+// Emit an OpLine if we've been asked to emit OpLines and the line number
+// has changed since the last time, and is a valid line number.
+void Builder::setLine(int lineNum)
+{
+ if (lineNum != 0 && lineNum != currentLine) {
+ currentLine = lineNum;
+ if (emitOpLines)
+ addLine(sourceFileStringId, currentLine, 0);
+ }
+}
+
+void Builder::addLine(Id fileName, int lineNum, int column)
+{
+ Instruction* line = new Instruction(OpLine);
+ line->addIdOperand(fileName);
+ line->addImmediateOperand(lineNum);
+ line->addImmediateOperand(column);
+ buildPoint->addInstruction(std::unique_ptr<Instruction>(line));
+}
+
// For creating new groupedTypes (will return old type if the requested one was already made).
Id Builder::makeVoidType()
{
@@ -379,6 +402,8 @@ Id Builder::makeFunctionType(Id returnType, const std::vector<Id>& paramTypes)
Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format)
{
+ assert(sampled == 1 || sampled == 2);
+
// try to find it
Instruction* type;
for (int t = 0; t < (int)groupedTypes[OpTypeImage].size(); ++t) {
@@ -410,27 +435,27 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
// deal with capabilities
switch (dim) {
case DimBuffer:
- if (sampled)
+ if (sampled == 1)
addCapability(CapabilitySampledBuffer);
else
addCapability(CapabilityImageBuffer);
break;
case Dim1D:
- if (sampled)
+ if (sampled == 1)
addCapability(CapabilitySampled1D);
else
addCapability(CapabilityImage1D);
break;
case DimCube:
if (arrayed) {
- if (sampled)
+ if (sampled == 1)
addCapability(CapabilitySampledCubeArray);
else
addCapability(CapabilityImageCubeArray);
}
break;
case DimRect:
- if (sampled)
+ if (sampled == 1)
addCapability(CapabilitySampledRect);
else
addCapability(CapabilityImageRect);
@@ -443,10 +468,14 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
}
if (ms) {
- if (arrayed)
- addCapability(CapabilityImageMSArray);
- if (! sampled)
- addCapability(CapabilityStorageImageMultisample);
+ if (sampled == 2) {
+ // Images used with subpass data are not storage
+ // images, so don't require the capability for them.
+ if (dim != Dim::DimSubpassData)
+ addCapability(CapabilityStorageImageMultisample);
+ if (arrayed)
+ addCapability(CapabilityImageMSArray);
+ }
}
return type->getResultId();
@@ -928,17 +957,6 @@ void Builder::addMemberName(Id id, int memberNumber, const char* string)
names.push_back(std::unique_ptr<Instruction>(name));
}
-void Builder::addLine(Id target, Id fileName, int lineNum, int column)
-{
- Instruction* line = new Instruction(OpLine);
- line->addIdOperand(target);
- line->addIdOperand(fileName);
- line->addImmediateOperand(lineNum);
- line->addImmediateOperand(column);
-
- lines.push_back(std::unique_ptr<Instruction>(line));
-}
-
void Builder::addDecoration(Id id, Decoration decoration, int num)
{
if (decoration == spv::DecorationMax)
@@ -971,16 +989,16 @@ Function* Builder::makeEntryPoint(const char* entryPoint)
Block* entry;
std::vector<Id> params;
- std::vector<Decoration> precisions;
+ std::vector<std::vector<Decoration>> decorations;
- entryPointFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, precisions, &entry);
+ entryPointFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, decorations, &entry);
return entryPointFunction;
}
// Comments in header
Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name,
- const std::vector<Id>& paramTypes, const std::vector<Decoration>& precisions, Block **entry)
+ const std::vector<Id>& paramTypes, const std::vector<std::vector<Decoration>>& decorations, Block **entry)
{
// Make the function and initial instructions in it
Id typeId = makeFunctionType(returnType, paramTypes);
@@ -989,8 +1007,10 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
// Set up the precisions
setPrecision(function->getId(), precision);
- for (unsigned p = 0; p < (unsigned)precisions.size(); ++p)
- setPrecision(firstParamId + p, precisions[p]);
+ for (unsigned p = 0; p < (unsigned)decorations.size(); ++p) {
+ for (int d = 0; d < (int)decorations[p].size(); ++d)
+ addDecoration(firstParamId + p, decorations[p][d]);
+ }
// CFG
if (entry) {
@@ -1997,9 +2017,10 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector<Id>&
}
// Comments in header
-Builder::If::If(Id cond, Builder& gb) :
+Builder::If::If(Id cond, unsigned int ctrl, Builder& gb) :
builder(gb),
condition(cond),
+ control(ctrl),
elseBlock(0)
{
function = &builder.getBuildPoint()->getParent();
@@ -2040,7 +2061,7 @@ void Builder::If::makeEndIf()
// Go back to the headerBlock and make the flow control split
builder.setBuildPoint(headerBlock);
- builder.createSelectionMerge(mergeBlock, SelectionControlMaskNone);
+ builder.createSelectionMerge(mergeBlock, control);
if (elseBlock)
builder.createConditionalBranch(condition, thenBlock, elseBlock);
else
@@ -2052,7 +2073,7 @@ void Builder::If::makeEndIf()
}
// Comments in header
-void Builder::makeSwitch(Id selector, int numSegments, const std::vector<int>& caseValues,
+void Builder::makeSwitch(Id selector, unsigned int control, int numSegments, const std::vector<int>& caseValues,
const std::vector<int>& valueIndexToSegment, int defaultSegment,
std::vector<Block*>& segmentBlocks)
{
@@ -2065,7 +2086,7 @@ void Builder::makeSwitch(Id selector, int numSegments, const std::vector<int>& c
Block* mergeBlock = new Block(getUniqueId(), function);
// make and insert the switch's selection-merge instruction
- createSelectionMerge(mergeBlock, SelectionControlMaskNone);
+ createSelectionMerge(mergeBlock, control);
// make the switch instruction
Instruction* switchInst = new Instruction(NoResult, NoType, OpSwitch);
@@ -2411,12 +2432,9 @@ void Builder::dump(std::vector<unsigned int>& out) const
dumpInstructions(out, executionModes);
// Debug instructions
- if (source != SourceLanguageUnknown) {
- Instruction sourceInst(0, 0, OpSource);
- sourceInst.addImmediateOperand(source);
- sourceInst.addImmediateOperand(sourceVersion);
- sourceInst.dump(out);
- }
+ dumpInstructions(out, strings);
+ dumpModuleProcesses(out);
+ dumpSourceInstructions(out);
for (int e = 0; e < (int)sourceExtensions.size(); ++e) {
Instruction sourceExtInst(0, 0, OpSourceExtension);
sourceExtInst.addStringOperand(sourceExtensions[e]);
@@ -2574,6 +2592,48 @@ void Builder::createConditionalBranch(Id condition, Block* thenBlock, Block* els
elseBlock->addPredecessor(buildPoint);
}
+// OpSource
+// [OpSourceContinued]
+// ...
+void Builder::dumpSourceInstructions(std::vector<unsigned int>& out) const
+{
+ const int maxWordCount = 0xFFFF;
+ const int opSourceWordCount = 4;
+ const int nonNullBytesPerInstruction = 4 * (maxWordCount - opSourceWordCount) - 1;
+
+ if (source != SourceLanguageUnknown) {
+ // OpSource Language Version File Source
+ Instruction sourceInst(NoResult, NoType, OpSource);
+ sourceInst.addImmediateOperand(source);
+ sourceInst.addImmediateOperand(sourceVersion);
+ // File operand
+ if (sourceFileStringId != NoResult) {
+ sourceInst.addIdOperand(sourceFileStringId);
+ // Source operand
+ if (sourceText.size() > 0) {
+ int nextByte = 0;
+ std::string subString;
+ while ((int)sourceText.size() - nextByte > 0) {
+ subString = sourceText.substr(nextByte, nonNullBytesPerInstruction);
+ if (nextByte == 0) {
+ // OpSource
+ sourceInst.addStringOperand(subString.c_str());
+ sourceInst.dump(out);
+ } else {
+ // OpSourcContinued
+ Instruction sourceContinuedInst(OpSourceContinued);
+ sourceContinuedInst.addStringOperand(subString.c_str());
+ sourceContinuedInst.dump(out);
+ }
+ nextByte += nonNullBytesPerInstruction;
+ }
+ } else
+ sourceInst.dump(out);
+ } else
+ sourceInst.dump(out);
+ }
+}
+
void Builder::dumpInstructions(std::vector<unsigned int>& out, const std::vector<std::unique_ptr<Instruction> >& instructions) const
{
for (int i = 0; i < (int)instructions.size(); ++i) {
@@ -2581,4 +2641,15 @@ void Builder::dumpInstructions(std::vector<unsigned int>& out, const std::vector
}
}
+void Builder::dumpModuleProcesses(std::vector<unsigned int>& out) const
+{
+ for (int i = 0; i < (int)moduleProcesses.size(); ++i) {
+ // TODO: switch this out for the 1.1 headers
+ const spv::Op OpModuleProcessed = (spv::Op)330;
+ Instruction moduleProcessed(OpModuleProcessed);
+ moduleProcessed.addStringOperand(moduleProcesses[i]);
+ moduleProcessed.dump(out);
+ }
+}
+
}; // end spv namespace
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/SpvBuilder.h b/3rdparty/bgfx/3rdparty/glslang/SPIRV/SpvBuilder.h
index 204d3e76940..59b1da2eec3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/SpvBuilder.h
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/SpvBuilder.h
@@ -70,7 +70,17 @@ public:
source = lang;
sourceVersion = version;
}
+ void setSourceFile(const std::string& file)
+ {
+ Instruction* fileString = new Instruction(getUniqueId(), NoType, OpString);
+ fileString->addStringOperand(file.c_str());
+ sourceFileStringId = fileString->getResultId();
+ strings.push_back(std::unique_ptr<Instruction>(fileString));
+ }
+ void setSourceText(const std::string& text) { sourceText = text; }
void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); }
+ void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); }
+ void setEmitOpLines() { emitOpLines = true; }
void addExtension(const char* ext) { extensions.insert(ext); }
Id import(const char*);
void setMemoryModel(spv::AddressingModel addr, spv::MemoryModel mem)
@@ -92,6 +102,12 @@ public:
return id;
}
+ // Log the current line, and if different than the last one,
+ // issue a new OpLine, using the current file name.
+ void setLine(int line);
+ // Low-level OpLine. See setLine() for a layered helper.
+ void addLine(Id fileName, int line, int column);
+
// For creating new types (will return old type if the requested one was already made).
Id makeVoidType();
Id makeBoolType();
@@ -134,6 +150,9 @@ public:
bool isSampledImage(Id resultId) const { return isSampledImageType(getTypeId(resultId)); }
bool isBoolType(Id typeId) const { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); }
+ bool isIntType(Id typeId) const { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) != 0; }
+ bool isUintType(Id typeId) const { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) == 0; }
+ bool isFloatType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat; }
bool isPointerType(Id typeId) const { return getTypeClass(typeId) == OpTypePointer; }
bool isScalarType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; }
bool isVectorType(Id typeId) const { return getTypeClass(typeId) == OpTypeVector; }
@@ -153,6 +172,13 @@ public:
unsigned int getConstantScalar(Id resultId) const { return module.getInstruction(resultId)->getImmediateOperand(0); }
StorageClass getStorageClass(Id resultId) const { return getTypeStorageClass(getTypeId(resultId)); }
+ int getScalarTypeWidth(Id typeId) const
+ {
+ Id scalarTypeId = getScalarTypeId(typeId);
+ assert(getTypeClass(scalarTypeId) == OpTypeInt || getTypeClass(scalarTypeId) == OpTypeFloat);
+ return module.getInstruction(scalarTypeId)->getImmediateOperand(0);
+ }
+
int getTypeNumColumns(Id typeId) const
{
assert(isMatrixType(typeId));
@@ -189,6 +215,10 @@ public:
Id makeUintConstant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(32), u, specConstant); }
Id makeInt64Constant(long long i, bool specConstant = false) { return makeInt64Constant(makeIntType(64), (unsigned long long)i, specConstant); }
Id makeUint64Constant(unsigned long long u, bool specConstant = false) { return makeInt64Constant(makeUintType(64), u, specConstant); }
+#ifdef AMD_EXTENSIONS
+ Id makeInt16Constant(short i, bool specConstant = false) { return makeIntConstant(makeIntType(16), (unsigned)((unsigned short)i), specConstant); }
+ Id makeUint16Constant(unsigned short u, bool specConstant = false) { return makeIntConstant(makeUintType(16), (unsigned)u, specConstant); }
+#endif
Id makeFloatConstant(float f, bool specConstant = false);
Id makeDoubleConstant(double d, bool specConstant = false);
#ifdef AMD_EXTENSIONS
@@ -203,7 +233,6 @@ public:
void addExecutionMode(Function*, ExecutionMode mode, int value1 = -1, int value2 = -1, int value3 = -1);
void addName(Id, const char* name);
void addMemberName(Id, int member, const char* name);
- void addLine(Id target, Id fileName, int line, int column);
void addDecoration(Id, Decoration, int num = -1);
void addMemberDecoration(Id, unsigned int member, Decoration, int num = -1);
@@ -219,7 +248,7 @@ public:
// Return the function, pass back the entry.
// The returned pointer is only valid for the lifetime of this builder.
Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, const std::vector<Id>& paramTypes,
- const std::vector<Decoration>& precisions, Block **entry = 0);
+ const std::vector<std::vector<Decoration>>& precisions, Block **entry = 0);
// Create a return. An 'implicit' return is one not appearing in the source
// code. In the case of an implicit return, no post-return block is inserted.
@@ -357,7 +386,7 @@ public:
// Helper to use for building nested control flow with if-then-else.
class If {
public:
- If(Id condition, Builder& builder);
+ If(Id condition, unsigned int ctrl, Builder& builder);
~If() {}
void makeBeginElse();
@@ -369,6 +398,7 @@ public:
Builder& builder;
Id condition;
+ unsigned int control;
Function* function;
Block* headerBlock;
Block* thenBlock;
@@ -388,7 +418,7 @@ public:
// Returns the right set of basic blocks to start each code segment with, so that the caller's
// recursion stack can hold the memory for it.
//
- void makeSwitch(Id condition, int numSegments, const std::vector<int>& caseValues,
+ void makeSwitch(Id condition, unsigned int control, int numSegments, const std::vector<int>& caseValues,
const std::vector<int>& valueToSegment, int defaultSegment, std::vector<Block*>& segmentBB); // return argument
// Add a branch to the innermost switch's merge block.
@@ -551,12 +581,19 @@ public:
void simplifyAccessChainSwizzle();
void createAndSetNoPredecessorBlock(const char*);
void createSelectionMerge(Block* mergeBlock, unsigned int control);
+ void dumpSourceInstructions(std::vector<unsigned int>&) const;
void dumpInstructions(std::vector<unsigned int>&, const std::vector<std::unique_ptr<Instruction> >&) const;
+ void dumpModuleProcesses(std::vector<unsigned int>&) const;
SourceLanguage source;
int sourceVersion;
+ spv::Id sourceFileStringId;
+ std::string sourceText;
+ int currentLine;
+ bool emitOpLines;
std::set<std::string> extensions;
std::vector<const char*> sourceExtensions;
+ std::vector<const char*> moduleProcesses;
AddressingModel addressModel;
MemoryModel memoryModel;
std::set<spv::Capability> capabilities;
@@ -569,6 +606,7 @@ public:
AccessChain accessChain;
// special blocks of instructions for output
+ std::vector<std::unique_ptr<Instruction> > strings;
std::vector<std::unique_ptr<Instruction> > imports;
std::vector<std::unique_ptr<Instruction> > entryPoints;
std::vector<std::unique_ptr<Instruction> > executionModes;
@@ -589,7 +627,7 @@ public:
// Our loop stack.
std::stack<LoopBlocks> loops;
- // The stream for outputing warnings and errors.
+ // The stream for outputting warnings and errors.
SpvBuildLogger* logger;
}; // end Builder class
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/doc.cpp b/3rdparty/bgfx/3rdparty/glslang/SPIRV/doc.cpp
index a99522b6fe5..f9d5254c7ec 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/doc.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/doc.cpp
@@ -68,9 +68,9 @@ namespace spv {
// Also, the ceilings are declared next to these, to help keep them in sync.
// Ceilings should be
// - one more than the maximum value an enumerant takes on, for non-mask enumerants
-// (for non-sparse enums, this is the number of enumurants)
+// (for non-sparse enums, this is the number of enumerants)
// - the number of bits consumed by the set of masks
-// (for non-sparse mask enums, this is the number of enumurants)
+// (for non-sparse mask enums, this is the number of enumerants)
//
const int SourceLanguageCeiling = 6; // HLSL todo: need official enumerant
@@ -175,12 +175,13 @@ const char* ExecutionModeString(int mode)
case 31: return "ContractionOff";
case 32: return "Bad";
+ case 4446: return "PostDepthCoverage";
case ExecutionModeCeiling:
default: return "Bad";
}
}
-const int StorageClassCeiling = 12;
+const int StorageClassCeiling = 13;
const char* StorageClassString(int StorageClass)
{
@@ -197,6 +198,7 @@ const char* StorageClassString(int StorageClass)
case 9: return "PushConstant";
case 10: return "AtomicCounter";
case 11: return "Image";
+ case 12: return "StorageBuffer";
case StorageClassCeiling:
default: return "Bad";
@@ -329,6 +331,7 @@ const char* BuiltInString(int builtIn)
case 4424: return "BaseVertex";
case 4425: return "BaseInstance";
case 4426: return "DrawIndex";
+ case 5014: return "FragStencilRefEXT";
#ifdef AMD_EXTENSIONS
case 4992: return "BaryCoordNoPerspAMD";
@@ -635,13 +638,15 @@ const char* SelectControlString(int cont)
}
}
-const int LoopControlCeiling = 2;
+const int LoopControlCeiling = 4;
const char* LoopControlString(int cont)
{
switch (cont) {
case 0: return "Unroll";
case 1: return "DontUnroll";
+ case 2: return "DependencyInfinite";
+ case 3: return "DependencyLength";
case LoopControlCeiling:
default: return "Bad";
@@ -830,9 +835,25 @@ const char* CapabilityString(int info)
case 4427: return "DrawParameters";
case 4431: return "SubgroupVoteKHR";
+ case 4433: return "StorageUniformBufferBlock16";
+ case 4434: return "StorageUniform16";
+ case 4435: return "StoragePushConstant16";
+ case 4436: return "StorageInputOutput16";
+
case 4437: return "DeviceGroup";
case 4439: return "MultiView";
+ case 5013: return "StencilExportEXT";
+
+#ifdef AMD_EXTENSIONS
+ case 5009: return "ImageGatherBiasLodAMD";
+ case 5010: return "FragmentMaskAMD";
+ case 5015: return "ImageReadWriteLodAMD";
+#endif
+
+ case 4445: return "AtomicStorageOps";
+
+ case 4447: return "SampleMaskPostDepthCoverage";
#ifdef NV_EXTENSIONS
case 5251: return "GeometryShaderPassthroughNV";
case 5254: return "ShaderViewportIndexLayerNV";
@@ -1187,6 +1208,9 @@ const char* OpcodeString(int op)
case 5005: return "OpGroupFMaxNonUniformAMD";
case 5006: return "OpGroupUMaxNonUniformAMD";
case 5007: return "OpGroupSMaxNonUniformAMD";
+
+ case 5011: return "OpFragmentMaskFetchAMD";
+ case 5012: return "OpFragmentFetchAMD";
#endif
case OpcodeCeiling:
@@ -2849,6 +2873,15 @@ void Parameterize()
InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X");
+
+ InstructionDesc[OpFragmentMaskFetchAMD].capabilities.push_back(CapabilityFragmentMaskAMD);
+ InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Coordinate'");
+
+ InstructionDesc[OpFragmentFetchAMD].capabilities.push_back(CapabilityFragmentMaskAMD);
+ InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'");
#endif
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/doc.h b/3rdparty/bgfx/3rdparty/glslang/SPIRV/doc.h
index 7dcc51dd354..710ca1a52be 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/doc.h
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/doc.h
@@ -36,6 +36,8 @@
// Parameterize the SPIR-V enumerants.
//
+#pragma once
+
#include "spirv.hpp"
#include <vector>
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/hex_float.h b/3rdparty/bgfx/3rdparty/glslang/SPIRV/hex_float.h
index 31b9f9ed89a..905b21a45ad 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/hex_float.h
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/hex_float.h
@@ -23,7 +23,7 @@
#include <limits>
#include <sstream>
-#if defined(_MSC_VER) && _MSC_VER < 1700
+#if defined(_MSC_VER) && _MSC_VER < 1800
namespace std {
bool isnan(double f)
{
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/spirv.hpp b/3rdparty/bgfx/3rdparty/glslang/SPIRV/spirv.hpp
index 5580c403a1f..8bddf7e503a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/spirv.hpp
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/spirv.hpp
@@ -47,11 +47,11 @@ namespace spv {
typedef unsigned int Id;
#define SPV_VERSION 0x10000
-#define SPV_REVISION 10
+#define SPV_REVISION 12
static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010000;
-static const unsigned int Revision = 10;
+static const unsigned int Revision = 12;
static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16;
@@ -61,6 +61,7 @@ enum SourceLanguage {
SourceLanguageGLSL = 2,
SourceLanguageOpenCL_C = 3,
SourceLanguageOpenCL_CPP = 4,
+ SourceLanguageHLSL = 5,
SourceLanguageMax = 0x7fffffff,
};
@@ -121,6 +122,7 @@ enum ExecutionMode {
ExecutionModeOutputTriangleStrip = 29,
ExecutionModeVecTypeHint = 30,
ExecutionModeContractionOff = 31,
+ ExecutionModePostDepthCoverage = 4446,
ExecutionModeMax = 0x7fffffff,
};
@@ -137,6 +139,7 @@ enum StorageClass {
StorageClassPushConstant = 9,
StorageClassAtomicCounter = 10,
StorageClassImage = 11,
+ StorageClassStorageBuffer = 12,
StorageClassMax = 0x7fffffff,
};
@@ -374,6 +377,7 @@ enum Decoration {
DecorationNoContraction = 42,
DecorationInputAttachmentIndex = 43,
DecorationAlignment = 44,
+ DecorationExplicitInterpAMD = 4999,
DecorationOverrideCoverageNV = 5248,
DecorationPassthroughNV = 5250,
DecorationViewportRelativeNV = 5252,
@@ -433,6 +437,14 @@ enum BuiltIn {
BuiltInDrawIndex = 4426,
BuiltInDeviceIndex = 4438,
BuiltInViewIndex = 4440,
+ BuiltInBaryCoordNoPerspAMD = 4992,
+ BuiltInBaryCoordNoPerspCentroidAMD = 4993,
+ BuiltInBaryCoordNoPerspSampleAMD = 4994,
+ BuiltInBaryCoordSmoothAMD = 4995,
+ BuiltInBaryCoordSmoothCentroidAMD = 4996,
+ BuiltInBaryCoordSmoothSampleAMD = 4997,
+ BuiltInBaryCoordPullModelAMD = 4998,
+ BuiltInFragStencilRefEXT = 5014,
BuiltInViewportMaskNV = 5253,
BuiltInSecondaryPositionNV = 5257,
BuiltInSecondaryViewportMaskNV = 5258,
@@ -616,14 +628,23 @@ enum Capability {
CapabilitySubgroupBallotKHR = 4423,
CapabilityDrawParameters = 4427,
CapabilitySubgroupVoteKHR = 4431,
+ CapabilityStorageBuffer16BitAccess = 4433,
CapabilityStorageUniformBufferBlock16 = 4433,
CapabilityStorageUniform16 = 4434,
+ CapabilityUniformAndStorageBuffer16BitAccess = 4434,
CapabilityStoragePushConstant16 = 4435,
CapabilityStorageInputOutput16 = 4436,
CapabilityDeviceGroup = 4437,
CapabilityMultiView = 4439,
+ CapabilityVariablePointersStorageBuffer = 4441,
+ CapabilityVariablePointers = 4442,
+ CapabilityAtomicStorageOps = 4445,
+ CapabilitySampleMaskPostDepthCoverage = 4447,
+ CapabilityImageGatherBiasLodAMD = 5009,
+ CapabilityStencilExportEXT = 5013,
CapabilitySampleMaskOverrideCoverageNV = 5249,
CapabilityGeometryShaderPassthroughNV = 5251,
+ CapabilityShaderViewportIndexLayerEXT = 5254,
CapabilityShaderViewportIndexLayerNV = 5254,
CapabilityShaderViewportMaskNV = 5255,
CapabilityShaderStereoViewNV = 5259,
@@ -932,6 +953,14 @@ enum Op {
OpSubgroupAnyKHR = 4429,
OpSubgroupAllEqualKHR = 4430,
OpSubgroupReadInvocationKHR = 4432,
+ OpGroupIAddNonUniformAMD = 5000,
+ OpGroupFAddNonUniformAMD = 5001,
+ OpGroupFMinNonUniformAMD = 5002,
+ OpGroupUMinNonUniformAMD = 5003,
+ OpGroupSMinNonUniformAMD = 5004,
+ OpGroupFMaxNonUniformAMD = 5005,
+ OpGroupUMaxNonUniformAMD = 5006,
+ OpGroupSMaxNonUniformAMD = 5007,
OpMax = 0x7fffffff,
};
diff --git a/3rdparty/bgfx/3rdparty/glslang/SPIRV/spvIR.h b/3rdparty/bgfx/3rdparty/glslang/SPIRV/spvIR.h
index ce8b4b8a062..6880595e9f6 100644
--- a/3rdparty/bgfx/3rdparty/glslang/SPIRV/spvIR.h
+++ b/3rdparty/bgfx/3rdparty/glslang/SPIRV/spvIR.h
@@ -65,6 +65,14 @@ const Id NoResult = 0;
const Id NoType = 0;
const Decoration NoPrecision = DecorationMax;
+
+#ifdef __GNUC__
+# define POTENTIALLY_UNUSED __attribute__((unused))
+#else
+# define POTENTIALLY_UNUSED
+#endif
+
+POTENTIALLY_UNUSED
const MemorySemanticsMask MemorySemanticsAllMemory =
(MemorySemanticsMask)(MemorySemanticsSequentiallyConsistentMask |
MemorySemanticsUniformMemoryMask |
@@ -87,7 +95,6 @@ public:
void addImmediateOperand(unsigned int immediate) { operands.push_back(immediate); }
void addStringOperand(const char* str)
{
- originalString = str;
unsigned int word;
char* wordString = (char*)&word;
char* wordPtr = wordString;
@@ -120,7 +127,6 @@ public:
Id getTypeId() const { return typeId; }
Id getIdOperand(int op) const { return operands[op]; }
unsigned int getImmediateOperand(int op) const { return operands[op]; }
- const char* getStringOperand() const { return originalString.c_str(); }
// Write out the binary form.
void dump(std::vector<unsigned int>& out) const
@@ -151,7 +157,6 @@ protected:
Id typeId;
Op opCode;
std::vector<Id> operands;
- std::string originalString; // could be optimized away; convenience for getting string operand
Block* block;
};
diff --git a/3rdparty/bgfx/3rdparty/glslang/StandAlone/CMakeLists.txt b/3rdparty/bgfx/3rdparty/glslang/StandAlone/CMakeLists.txt
index 2a9a3c47e35..b0d863d358a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/StandAlone/CMakeLists.txt
+++ b/3rdparty/bgfx/3rdparty/glslang/StandAlone/CMakeLists.txt
@@ -1,14 +1,13 @@
add_library(glslang-default-resource-limits
- ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp
-)
+ ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp)
set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
+set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON)
target_include_directories(glslang-default-resource-limits
- PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
- PUBLIC ${PROJECT_SOURCE_DIR}
-)
+ PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
+ PUBLIC ${PROJECT_SOURCE_DIR})
-set(SOURCES StandAlone.cpp)
+set(SOURCES StandAlone.cpp DirStackFileIncluder.h)
set(REMAPPER_SOURCES spirv-remap.cpp)
add_executable(glslangValidator ${SOURCES})
@@ -24,7 +23,6 @@ set(LIBRARIES
SPVRemapper
glslang-default-resource-limits)
-
if(WIN32)
set(LIBRARIES ${LIBRARIES} psapi)
elseif(UNIX)
@@ -40,8 +38,10 @@ if(WIN32)
source_group("Source" FILES ${SOURCES})
endif(WIN32)
-install(TARGETS glslangValidator
- RUNTIME DESTINATION bin)
+if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS glslangValidator
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
-install(TARGETS spirv-remap
- RUNTIME DESTINATION bin)
+ install(TARGETS spirv-remap
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/3rdparty/bgfx/3rdparty/glslang/StandAlone/DirStackFileIncluder.h b/3rdparty/bgfx/3rdparty/glslang/StandAlone/DirStackFileIncluder.h
new file mode 100644
index 00000000000..18734130e71
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/StandAlone/DirStackFileIncluder.h
@@ -0,0 +1,141 @@
+//
+// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
+// Copyright (C) 2017 Google, Inc.
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+// Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//
+// Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+//
+// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+
+#pragma once
+
+#include <vector>
+#include <string>
+#include <fstream>
+#include <algorithm>
+
+#include "./../glslang/Public/ShaderLang.h"
+
+// Default include class for normal include convention of search backward
+// through the stack of active include paths (for nested includes).
+// Can be overridden to customize.
+class DirStackFileIncluder : public glslang::TShader::Includer {
+public:
+ DirStackFileIncluder() : externalLocalDirectoryCount(0) { }
+
+ virtual IncludeResult* includeLocal(const char* headerName,
+ const char* includerName,
+ size_t inclusionDepth) override
+ {
+ return readLocalPath(headerName, includerName, (int)inclusionDepth);
+ }
+
+ virtual IncludeResult* includeSystem(const char* headerName,
+ const char* /*includerName*/,
+ size_t /*inclusionDepth*/) override
+ {
+ return readSystemPath(headerName);
+ }
+
+ // Externally set directories. E.g., from a command-line -I<dir>.
+ // - Most-recently pushed are checked first.
+ // - All these are checked after the parse-time stack of local directories
+ // is checked.
+ // - This only applies to the "local" form of #include.
+ // - Makes its own copy of the path.
+ virtual void pushExternalLocalDirectory(const std::string& dir)
+ {
+ directoryStack.push_back(dir);
+ externalLocalDirectoryCount = (int)directoryStack.size();
+ }
+
+ virtual void releaseInclude(IncludeResult* result) override
+ {
+ if (result != nullptr) {
+ delete [] static_cast<tUserDataElement*>(result->userData);
+ delete result;
+ }
+ }
+
+ virtual ~DirStackFileIncluder() override { }
+
+protected:
+ typedef char tUserDataElement;
+ std::vector<std::string> directoryStack;
+ int externalLocalDirectoryCount;
+
+ // Search for a valid "local" path based on combining the stack of include
+ // directories and the nominal name of the header.
+ virtual IncludeResult* readLocalPath(const char* headerName, const char* includerName, int depth)
+ {
+ // Discard popped include directories, and
+ // initialize when at parse-time first level.
+ directoryStack.resize(depth + externalLocalDirectoryCount);
+ if (depth == 1)
+ directoryStack.back() = getDirectory(includerName);
+
+ // Find a directory that works, using a reverse search of the include stack.
+ for (auto it = directoryStack.rbegin(); it != directoryStack.rend(); ++it) {
+ std::string path = *it + '/' + headerName;
+ std::replace(path.begin(), path.end(), '\\', '/');
+ std::ifstream file(path, std::ios_base::binary | std::ios_base::ate);
+ if (file) {
+ directoryStack.push_back(getDirectory(path));
+ return newIncludeResult(path, file, (int)file.tellg());
+ }
+ }
+
+ return nullptr;
+ }
+
+ // Search for a valid <system> path.
+ // Not implemented yet; returning nullptr signals failure to find.
+ virtual IncludeResult* readSystemPath(const char* /*headerName*/) const
+ {
+ return nullptr;
+ }
+
+ // Do actual reading of the file, filling in a new include result.
+ virtual IncludeResult* newIncludeResult(const std::string& path, std::ifstream& file, int length) const
+ {
+ char* content = new tUserDataElement [length];
+ file.seekg(0, file.beg);
+ file.read(content, length);
+ return new IncludeResult(path, content, length, content);
+ }
+
+ // If no path markers, return current working directory.
+ // Otherwise, strip file name and return path leading up to it.
+ virtual std::string getDirectory(const std::string path) const
+ {
+ size_t last = path.find_last_of("/\\");
+ return last == std::string::npos ? "." : path.substr(0, last);
+ }
+};
diff --git a/3rdparty/bgfx/3rdparty/glslang/StandAlone/StandAlone.cpp b/3rdparty/bgfx/3rdparty/glslang/StandAlone/StandAlone.cpp
index 0da690e9a81..e7844eb21f6 100644
--- a/3rdparty/bgfx/3rdparty/glslang/StandAlone/StandAlone.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/StandAlone/StandAlone.cpp
@@ -35,10 +35,13 @@
//
// this only applies to the standalone wrapper, not the front end in general
+#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
+#endif
#include "ResourceLimits.h"
#include "Worklist.h"
+#include "DirStackFileIncluder.h"
#include "./../glslang/Include/ShHandle.h"
#include "./../glslang/Include/revision.h"
#include "./../glslang/Public/ShaderLang.h"
@@ -46,11 +49,15 @@
#include "../SPIRV/GLSL.std.450.h"
#include "../SPIRV/doc.h"
#include "../SPIRV/disassemble.h"
+
#include <cstring>
#include <cstdlib>
#include <cctype>
#include <cmath>
#include <array>
+#include <map>
+#include <memory>
+#include <thread>
#include "../glslang/OSDependent/osinclude.h"
@@ -84,6 +91,13 @@ enum TOptions {
EOptionFlattenUniformArrays = (1 << 20),
EOptionNoStorageFormat = (1 << 21),
EOptionKeepUncalled = (1 << 22),
+ EOptionHlslOffsets = (1 << 23),
+ EOptionHlslIoMapping = (1 << 24),
+ EOptionAutoMapLocations = (1 << 25),
+ EOptionDebug = (1 << 26),
+ EOptionStdin = (1 << 27),
+ EOptionOptimizeDisable = (1 << 28),
+ EOptionOptimizeSize = (1 << 29),
};
//
@@ -105,17 +119,16 @@ enum TFailCode {
EShLanguage FindLanguage(const std::string& name, bool parseSuffix=true);
void CompileFile(const char* fileName, ShHandle);
void usage();
-void FreeFileData(char** data);
-char** ReadFileData(const char* fileName);
+char* ReadFileData(const char* fileName);
+void FreeFileData(char* data);
void InfoLogMsg(const char* msg, const char* name, const int num);
// Globally track if any compile or link failure.
bool CompileFailed = false;
bool LinkFailed = false;
-// Use to test breaking up a single shader file into multiple strings.
-// Set in ReadFileData().
-int NumShaderStrings;
+// array of unique places to leave the shader names and infologs for the asynchronous compiles
+std::vector<std::unique_ptr<glslang::TWorkItem>> WorkItems;
TBuiltInResource Resources;
std::string ConfigFile;
@@ -125,38 +138,15 @@ std::string ConfigFile;
//
void ProcessConfigFile()
{
- char** configStrings = 0;
- char* config = 0;
- if (ConfigFile.size() > 0) {
- configStrings = ReadFileData(ConfigFile.c_str());
- if (configStrings)
- config = *configStrings;
- else {
- printf("Error opening configuration file; will instead use the default configuration\n");
- usage();
- }
- }
-
- if (config == 0) {
+ if (ConfigFile.size() == 0)
Resources = glslang::DefaultTBuiltInResource;
- return;
+ else {
+ char* configString = ReadFileData(ConfigFile.c_str());
+ glslang::DecodeResourceLimits(&Resources, configString);
+ FreeFileData(configString);
}
-
- glslang::DecodeResourceLimits(&Resources, config);
-
- if (configStrings)
- FreeFileData(configStrings);
- else
- delete[] config;
}
-// thread-safe list of shaders to asynchronously grab and compile
-glslang::TWorklist Worklist;
-
-// array of unique places to leave the shader names and infologs for the asynchronous compiles
-glslang::TWorkItem** Work = 0;
-int NumWorkItems = 0;
-
int Options = 0;
const char* ExecutableName = nullptr;
const char* binaryFileName = nullptr;
@@ -164,12 +154,72 @@ const char* entryPointName = nullptr;
const char* sourceEntryPointName = nullptr;
const char* shaderStageName = nullptr;
const char* variableName = nullptr;
+std::vector<std::string> IncludeDirectoryList;
+int ClientInputSemanticsVersion = 100; // maps to, say, #define VULKAN 100
+int VulkanClientVersion = 100; // would map to, say, Vulkan 1.0
+int OpenGLClientVersion = 450; // doesn't influence anything yet, but maps to OpenGL 4.50
+unsigned int TargetVersion = 0x00001000; // maps to, say, SPIR-V 1.0
+std::vector<std::string> Processes; // what should be recorded by OpModuleProcessed, or equivalent
+
+// Per descriptor-set binding base data
+typedef std::map<unsigned int, unsigned int> TPerSetBaseBinding;
+
+std::array<std::array<unsigned int, EShLangCount>, glslang::EResCount> baseBinding;
+std::array<std::array<TPerSetBaseBinding, EShLangCount>, glslang::EResCount> baseBindingForSet;
+std::array<std::vector<std::string>, EShLangCount> baseResourceSetBinding;
+
+// Add things like "#define ..." to a preamble to use in the beginning of the shader.
+class TPreamble {
+public:
+ TPreamble() { }
+
+ bool isSet() const { return text.size() > 0; }
+ const char* get() const { return text.c_str(); }
+
+ // #define...
+ void addDef(std::string def)
+ {
+ text.append("#define ");
+ fixLine(def);
+
+ Processes.push_back("D");
+ Processes.back().append(def);
+
+ // The first "=" needs to turn into a space
+ const size_t equal = def.find_first_of("=");
+ if (equal != def.npos)
+ def[equal] = ' ';
+
+ text.append(def);
+ text.append("\n");
+ }
+
+ // #undef...
+ void addUndef(std::string undef)
+ {
+ text.append("#undef ");
+ fixLine(undef);
+
+ Processes.push_back("U");
+ Processes.back().append(undef);
+
+ text.append(undef);
+ text.append("\n");
+ }
+
+protected:
+ void fixLine(std::string& line)
+ {
+ // Can't go past a newline in the line
+ const size_t end = line.find_first_of("\n");
+ if (end != line.npos)
+ line = line.substr(0, end);
+ }
-std::array<unsigned int, EShLangCount> baseSamplerBinding;
-std::array<unsigned int, EShLangCount> baseTextureBinding;
-std::array<unsigned int, EShLangCount> baseImageBinding;
-std::array<unsigned int, EShLangCount> baseUboBinding;
-std::array<unsigned int, EShLangCount> baseSsboBinding;
+ std::string text; // contents of preamble
+};
+
+TPreamble UserPreamble;
//
// Create the default name for saving a binary if -o is not provided.
@@ -214,16 +264,63 @@ bool SetConfigFile(const std::string& name)
//
void Error(const char* message)
{
- printf("%s: Error %s (use -h for usage)\n", ExecutableName, message);
+ fprintf(stderr, "%s: Error %s (use -h for usage)\n", ExecutableName, message);
exit(EFailUsage);
}
//
-// Process an optional binding base of the form:
-// --argname [stage] base
+// Process an optional binding base of one the forms:
+// --argname [stage] base // base for stage (if given) or all stages (if not)
+// --argname [stage] [base set]... // set/base pairs: set the base for given binding set.
+
// Where stage is one of the forms accepted by FindLanguage, and base is an integer
//
-void ProcessBindingBase(int& argc, char**& argv, std::array<unsigned int, EShLangCount>& base)
+void ProcessBindingBase(int& argc, char**& argv, glslang::TResourceType res)
+{
+ if (argc < 2)
+ usage();
+
+ EShLanguage lang = EShLangCount;
+ int singleBase = 0;
+ TPerSetBaseBinding perSetBase;
+ int arg = 1;
+
+ // Parse stage, if given
+ if (!isdigit(argv[arg][0])) {
+ if (argc < 3) // this form needs one more argument
+ usage();
+
+ lang = FindLanguage(argv[arg++], false);
+ }
+
+ if ((argc - arg) > 2 && isdigit(argv[arg+0][0]) && isdigit(argv[arg+1][0])) {
+ // Parse a per-set binding base
+ while ((argc - arg) > 2 && isdigit(argv[arg+0][0]) && isdigit(argv[arg+1][0])) {
+ const int baseNum = atoi(argv[arg++]);
+ const int setNum = atoi(argv[arg++]);
+ perSetBase[setNum] = baseNum;
+ }
+ } else {
+ // Parse single binding base
+ singleBase = atoi(argv[arg++]);
+ }
+
+ argc -= (arg-1);
+ argv += (arg-1);
+
+ // Set one or all languages
+ const int langMin = (lang < EShLangCount) ? lang+0 : 0;
+ const int langMax = (lang < EShLangCount) ? lang+1 : EShLangCount;
+
+ for (int lang = langMin; lang < langMax; ++lang) {
+ if (!perSetBase.empty())
+ baseBindingForSet[res][lang] = perSetBase;
+ else
+ baseBinding[res][lang] = singleBase;
+ }
+}
+
+void ProcessResourceSetBindingBase(int& argc, char**& argv, std::array<std::vector<std::string>, EShLangCount>& base)
{
if (argc < 2)
usage();
@@ -232,15 +329,28 @@ void ProcessBindingBase(int& argc, char**& argv, std::array<unsigned int, EShLan
if (argc < 3) // this form needs one more argument
usage();
- // Parse form: --argname stage base
+ // Parse form: --argname stage [regname set base...], or:
+ // --argname stage set
const EShLanguage lang = FindLanguage(argv[1], false);
- base[lang] = atoi(argv[2]);
- argc-= 2;
- argv+= 2;
+
+ argc--;
+ argv++;
+
+ while (argc > 1 && argv[1] != nullptr && argv[1][0] != '-') {
+ base[lang].push_back(argv[1]);
+
+ argc--;
+ argv++;
+ }
+
+ // Must have one arg, or a multiple of three (for [regname set binding] triples)
+ if (base[lang].size() != 1 && (base[lang].size() % 3) != 0)
+ usage();
+
} else {
- // Parse form: --argname base
+ // Parse form: --argname set
for (int lang=0; lang<EShLangCount; ++lang)
- base[lang] = atoi(argv[1]);
+ base[lang].push_back(argv[1]);
argc--;
argv++;
@@ -253,23 +363,56 @@ void ProcessBindingBase(int& argc, char**& argv, std::array<unsigned int, EShLan
//
// Does not return (it exits) if command-line is fatally flawed.
//
-void ProcessArguments(int argc, char* argv[])
+void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItems, int argc, char* argv[])
{
- baseSamplerBinding.fill(0);
- baseTextureBinding.fill(0);
- baseImageBinding.fill(0);
- baseUboBinding.fill(0);
- baseSsboBinding.fill(0);
+ for (int res = 0; res < glslang::EResCount; ++res)
+ baseBinding[res].fill(0);
ExecutableName = argv[0];
- NumWorkItems = argc; // will include some empties where the '-' options were, but it doesn't matter, they'll be 0
- Work = new glslang::TWorkItem*[NumWorkItems];
- for (int w = 0; w < NumWorkItems; ++w)
- Work[w] = 0;
-
- argc--;
- argv++;
- for (; argc >= 1; argc--, argv++) {
+ workItems.reserve(argc);
+
+ const auto bumpArg = [&]() {
+ if (argc > 0) {
+ argc--;
+ argv++;
+ }
+ };
+
+ // read a string directly attached to a single-letter option
+ const auto getStringOperand = [&](const char* desc) {
+ if (argv[0][2] == 0) {
+ printf("%s must immediately follow option (no spaces)\n", desc);
+ exit(EFailUsage);
+ }
+ return argv[0] + 2;
+ };
+
+ // read a number attached to a single-letter option
+ const auto getAttachedNumber = [&](const char* desc) {
+ int num = atoi(argv[0] + 2);
+ if (num == 0) {
+ printf("%s: expected attached non-0 number\n", desc);
+ exit(EFailUsage);
+ }
+ return num;
+ };
+
+ // minimum needed (without overriding something else) to target Vulkan SPIR-V
+ const auto setVulkanSpv = []() {
+ Options |= EOptionSpv;
+ Options |= EOptionVulkanRules;
+ Options |= EOptionLinkProgram;
+ };
+
+ // minimum needed (without overriding something else) to target OpenGL SPIR-V
+ const auto setOpenGlSpv = []() {
+ Options |= EOptionSpv;
+ Options |= EOptionLinkProgram;
+ // undo a -H default to Vulkan
+ Options &= ~EOptionVulkanRules;
+ };
+
+ for (bumpArg(); argc >= 1; bumpArg()) {
if (argv[0][0] == '-') {
switch (argv[0][1]) {
case '-':
@@ -278,117 +421,179 @@ void ProcessArguments(int argc, char* argv[])
std::transform(lowerword.begin(), lowerword.end(), lowerword.begin(), ::tolower);
// handle --word style options
- if (lowerword == "shift-sampler-bindings" || // synonyms
+ if (lowerword == "auto-map-bindings" || // synonyms
+ lowerword == "auto-map-binding" ||
+ lowerword == "amb") {
+ Options |= EOptionAutoMapBindings;
+ } else if (lowerword == "auto-map-locations" || // synonyms
+ lowerword == "aml") {
+ Options |= EOptionAutoMapLocations;
+ } else if (lowerword == "client") {
+ if (argc > 1) {
+ if (strcmp(argv[1], "vulkan100") == 0)
+ setVulkanSpv();
+ else if (strcmp(argv[1], "opengl100") == 0)
+ setOpenGlSpv();
+ else
+ Error("--client expects vulkan100 or opengl100");
+ }
+ bumpArg();
+ } else if (lowerword == "flatten-uniform-arrays" || // synonyms
+ lowerword == "flatten-uniform-array" ||
+ lowerword == "fua") {
+ Options |= EOptionFlattenUniformArrays;
+ } else if (lowerword == "hlsl-offsets") {
+ Options |= EOptionHlslOffsets;
+ } else if (lowerword == "hlsl-iomap" ||
+ lowerword == "hlsl-iomapper" ||
+ lowerword == "hlsl-iomapping") {
+ Options |= EOptionHlslIoMapping;
+ } else if (lowerword == "keep-uncalled" || // synonyms
+ lowerword == "ku") {
+ Options |= EOptionKeepUncalled;
+ } else if (lowerword == "no-storage-format" || // synonyms
+ lowerword == "nsf") {
+ Options |= EOptionNoStorageFormat;
+ } else if (lowerword == "relaxed-errors") {
+ Options |= EOptionRelaxedErrors;
+ } else if (lowerword == "resource-set-bindings" || // synonyms
+ lowerword == "resource-set-binding" ||
+ lowerword == "rsb") {
+ ProcessResourceSetBindingBase(argc, argv, baseResourceSetBinding);
+ } else if (lowerword == "shift-image-bindings" || // synonyms
+ lowerword == "shift-image-binding" ||
+ lowerword == "sib") {
+ ProcessBindingBase(argc, argv, glslang::EResImage);
+ } else if (lowerword == "shift-sampler-bindings" || // synonyms
lowerword == "shift-sampler-binding" ||
lowerword == "ssb") {
- ProcessBindingBase(argc, argv, baseSamplerBinding);
+ ProcessBindingBase(argc, argv, glslang::EResSampler);
+ } else if (lowerword == "shift-uav-bindings" || // synonyms
+ lowerword == "shift-uav-binding" ||
+ lowerword == "suavb") {
+ ProcessBindingBase(argc, argv, glslang::EResUav);
} else if (lowerword == "shift-texture-bindings" || // synonyms
lowerword == "shift-texture-binding" ||
lowerword == "stb") {
- ProcessBindingBase(argc, argv, baseTextureBinding);
- } else if (lowerword == "shift-image-bindings" || // synonyms
- lowerword == "shift-image-binding" ||
- lowerword == "sib") {
- ProcessBindingBase(argc, argv, baseImageBinding);
+ ProcessBindingBase(argc, argv, glslang::EResTexture);
} else if (lowerword == "shift-ubo-bindings" || // synonyms
lowerword == "shift-ubo-binding" ||
- lowerword == "sub") {
- ProcessBindingBase(argc, argv, baseUboBinding);
+ lowerword == "shift-cbuffer-bindings" ||
+ lowerword == "shift-cbuffer-binding" ||
+ lowerword == "sub" ||
+ lowerword == "scb") {
+ ProcessBindingBase(argc, argv, glslang::EResUbo);
} else if (lowerword == "shift-ssbo-bindings" || // synonyms
lowerword == "shift-ssbo-binding" ||
lowerword == "sbb") {
- ProcessBindingBase(argc, argv, baseSsboBinding);
- } else if (lowerword == "auto-map-bindings" || // synonyms
- lowerword == "auto-map-binding" ||
- lowerword == "amb") {
- Options |= EOptionAutoMapBindings;
- } else if (lowerword == "flatten-uniform-arrays" || // synonyms
- lowerword == "flatten-uniform-array" ||
- lowerword == "fua") {
- Options |= EOptionFlattenUniformArrays;
- } else if (lowerword == "no-storage-format" || // synonyms
- lowerword == "nsf") {
- Options |= EOptionNoStorageFormat;
+ ProcessBindingBase(argc, argv, glslang::EResSsbo);
+ } else if (lowerword == "source-entrypoint" || // synonyms
+ lowerword == "sep") {
+ if (argc <= 1)
+ Error("no <entry-point> provided for --source-entrypoint");
+ sourceEntryPointName = argv[1];
+ bumpArg();
+ break;
+ } else if (lowerword == "stdin") {
+ Options |= EOptionStdin;
+ shaderStageName = argv[1];
+ } else if (lowerword == "suppress-warnings") {
+ Options |= EOptionSuppressWarnings;
+ } else if (lowerword == "target-env") {
+ if (argc > 1) {
+ if (strcmp(argv[1], "vulkan1.0") == 0) {
+ setVulkanSpv();
+ VulkanClientVersion = 100;
+ } else if (strcmp(argv[1], "opengl") == 0) {
+ setOpenGlSpv();
+ OpenGLClientVersion = 450;
+ } else
+ Error("--target-env expected vulkan1.0 or opengl");
+ }
+ bumpArg();
} else if (lowerword == "variable-name" || // synonyms
lowerword == "vn") {
Options |= EOptionOutputHexadecimal;
- variableName = argv[1];
- if (argc > 0) {
- argc--;
- argv++;
- } else
+ if (argc <= 1)
Error("no <C-variable-name> provided for --variable-name");
+ variableName = argv[1];
+ bumpArg();
break;
- }
- else if (lowerword == "source-entrypoint" || // synonyms
- lowerword == "sep") {
- sourceEntryPointName = argv[1];
- if (argc > 0) {
- argc--;
- argv++;
- } else
- Error("no <entry-point> provided for --source-entrypoint");
- break;
- } else if (lowerword == "keep-uncalled" || // synonyms
- lowerword == "ku") {
- Options |= EOptionKeepUncalled;
} else {
usage();
}
}
break;
+ case 'C':
+ Options |= EOptionCascadingErrors;
+ break;
+ case 'D':
+ if (argv[0][2] == 0)
+ Options |= EOptionReadHlsl;
+ else
+ UserPreamble.addDef(getStringOperand("-D<macro> macro name"));
+ break;
+ case 'E':
+ Options |= EOptionOutputPreprocessed;
+ break;
+ case 'G':
+ // OpenGL Client
+ setOpenGlSpv();
+ if (argv[0][2] != 0)
+ ClientInputSemanticsVersion = getAttachedNumber("-G<num> client input semantics");
+ break;
case 'H':
Options |= EOptionHumanReadableSpv;
if ((Options & EOptionSpv) == 0) {
// default to Vulkan
- Options |= EOptionSpv;
- Options |= EOptionVulkanRules;
- Options |= EOptionLinkProgram;
+ setVulkanSpv();
}
break;
- case 'V':
- Options |= EOptionSpv;
- Options |= EOptionVulkanRules;
- Options |= EOptionLinkProgram;
+ case 'I':
+ IncludeDirectoryList.push_back(getStringOperand("-I<dir> include path"));
+ break;
+ case 'O':
+ if (argv[0][2] == 'd')
+ Options |= EOptionOptimizeDisable;
+ else if (argv[0][2] == 's')
+#ifdef ENABLE_OPT
+ Options |= EOptionOptimizeSize;
+#else
+ Error("-Os not available; optimizer not linked");
+#endif
+ else
+ Error("unknown -O option");
break;
case 'S':
- shaderStageName = argv[1];
- if (argc > 0) {
- argc--;
- argv++;
- } else
+ if (argc <= 1)
Error("no <stage> specified for -S");
+ shaderStageName = argv[1];
+ bumpArg();
break;
- case 'G':
- Options |= EOptionSpv;
- Options |= EOptionLinkProgram;
- // undo a -H default to Vulkan
- Options &= ~EOptionVulkanRules;
+ case 'U':
+ UserPreamble.addUndef(getStringOperand("-U<macro>: macro name"));
break;
- case 'E':
- Options |= EOptionOutputPreprocessed;
+ case 'V':
+ setVulkanSpv();
+ if (argv[0][2] != 0)
+ ClientInputSemanticsVersion = getAttachedNumber("-G<num> client input semantics");
break;
case 'c':
Options |= EOptionDumpConfig;
break;
- case 'C':
- Options |= EOptionCascadingErrors;
- break;
case 'd':
Options |= EOptionDefaultDesktop;
break;
- case 'D':
- Options |= EOptionReadHlsl;
- break;
case 'e':
// HLSL todo: entry point handle needs much more sophistication.
// This is okay for one compilation unit with one entry point.
entryPointName = argv[1];
- if (argc > 0) {
- argc--;
- argv++;
- } else
- Error("no <entry-point> provided for -e");
+ if (argc <= 1)
+ Error("no <name> provided for -e");
+ bumpArg();
+ break;
+ case 'g':
+ Options |= EOptionDebug;
break;
case 'h':
usage();
@@ -403,12 +608,10 @@ void ProcessArguments(int argc, char* argv[])
Options |= EOptionMemoryLeakMode;
break;
case 'o':
- binaryFileName = argv[1];
- if (argc > 0) {
- argc--;
- argv++;
- } else
+ if (argc <= 1)
Error("no <file> provided for -o");
+ binaryFileName = argv[1];
+ bumpArg();
break;
case 'q':
Options |= EOptionDumpReflection;
@@ -420,9 +623,7 @@ void ProcessArguments(int argc, char* argv[])
Options |= EOptionSuppressInfolog;
break;
case 't':
- #ifdef _WIN32
- Options |= EOptionMultiThreaded;
- #endif
+ Options |= EOptionMultiThreaded;
break;
case 'v':
Options |= EOptionDumpVersions;
@@ -440,12 +641,15 @@ void ProcessArguments(int argc, char* argv[])
} else {
std::string name(argv[0]);
if (! SetConfigFile(name)) {
- Work[argc] = new glslang::TWorkItem(name);
- Worklist.add(Work[argc]);
+ workItems.push_back(std::unique_ptr<glslang::TWorkItem>(new glslang::TWorkItem(name)));
}
}
}
+ // Make sure that -S is always specified if --stdin is specified
+ if ((Options & EOptionStdin) && shaderStageName == nullptr)
+ Error("must provide -S when --stdin is given");
+
// Make sure that -E is not specified alongside linking (which includes SPV generation)
if ((Options & EOptionOutputPreprocessed) && (Options & EOptionLinkProgram))
Error("can't use -E when linking is selected");
@@ -482,30 +686,44 @@ void SetMessageOptions(EShMessages& messages)
messages = (EShMessages)(messages | EShMsgCascadingErrors);
if (Options & EOptionKeepUncalled)
messages = (EShMessages)(messages | EShMsgKeepUncalled);
+ if (Options & EOptionHlslOffsets)
+ messages = (EShMessages)(messages | EShMsgHlslOffsets);
+ if (Options & EOptionDebug)
+ messages = (EShMessages)(messages | EShMsgDebugInfo);
}
//
// Thread entry point, for non-linking asynchronous mode.
//
-// Return 0 for failure, 1 for success.
-//
-unsigned int CompileShaders(void*)
+void CompileShaders(glslang::TWorklist& worklist)
{
glslang::TWorkItem* workItem;
- while (Worklist.remove(workItem)) {
- ShHandle compiler = ShConstructCompiler(FindLanguage(workItem->name), Options);
+ if (Options & EOptionStdin) {
+ worklist.remove(workItem);
+ ShHandle compiler = ShConstructCompiler(FindLanguage("stdin"), Options);
if (compiler == 0)
- return 0;
+ return;
- CompileFile(workItem->name.c_str(), compiler);
+ CompileFile("stdin", compiler);
- if (! (Options & EOptionSuppressInfolog))
- workItem->results = ShGetInfoLog(compiler);
+ if (! (Options & EOptionSuppressInfolog))
+ workItem->results = ShGetInfoLog(compiler);
ShDestruct(compiler);
- }
+ } else {
+ while (worklist.remove(workItem)) {
+ ShHandle compiler = ShConstructCompiler(FindLanguage(workItem->name), Options);
+ if (compiler == 0)
+ return;
- return 0;
+ CompileFile(workItem->name.c_str(), compiler);
+
+ if (! (Options & EOptionSuppressInfolog))
+ workItem->results = ShGetInfoLog(compiler);
+
+ ShDestruct(compiler);
+ }
+ }
}
// Outputs the given string, but only if it is non-null and non-empty.
@@ -521,36 +739,41 @@ void PutsIfNonEmpty(const char* str)
// This prevents erroneous newlines from appearing.
void StderrIfNonEmpty(const char* str)
{
- if (str && str[0]) {
- fprintf(stderr, "%s\n", str);
- }
+ if (str && str[0])
+ fprintf(stderr, "%s\n", str);
}
// Simple bundling of what makes a compilation unit for ease in passing around,
// and separation of handling file IO versus API (programmatic) compilation.
struct ShaderCompUnit {
EShLanguage stage;
- std::string fileName;
- char** text; // memory owned/managed externally
- const char* fileNameList[1];
+ static const int maxCount = 1;
+ int count; // live number of strings/names
+ const char* text[maxCount]; // memory owned/managed externally
+ std::string fileName[maxCount]; // hold's the memory, but...
+ const char* fileNameList[maxCount]; // downstream interface wants pointers
- // Need to have a special constructors to adjust the fileNameList, since back end needs a list of ptrs
- ShaderCompUnit(EShLanguage istage, std::string &ifileName, char** itext)
- {
- stage = istage;
- fileName = ifileName;
- text = itext;
- fileNameList[0] = fileName.c_str();
- }
+ ShaderCompUnit(EShLanguage stage) : stage(stage), count(0) { }
- ShaderCompUnit(const ShaderCompUnit &rhs)
+ ShaderCompUnit(const ShaderCompUnit& rhs)
{
stage = rhs.stage;
- fileName = rhs.fileName;
- text = rhs.text;
- fileNameList[0] = fileName.c_str();
+ count = rhs.count;
+ for (int i = 0; i < count; ++i) {
+ fileName[i] = rhs.fileName[i];
+ text[i] = rhs.text[i];
+ fileNameList[i] = rhs.fileName[i].c_str();
+ }
}
+ void addString(std::string& ifileName, const char* itext)
+ {
+ assert(count < maxCount);
+ fileName[count] = ifileName;
+ text[count] = itext;
+ fileNameList[count] = fileName[count].c_str();
+ ++count;
+ }
};
//
@@ -577,30 +800,73 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) {
const auto &compUnit = *it;
glslang::TShader* shader = new glslang::TShader(compUnit.stage);
- shader->setStringsWithLengthsAndNames(compUnit.text, NULL, compUnit.fileNameList, 1);
+ shader->setStringsWithLengthsAndNames(compUnit.text, NULL, compUnit.fileNameList, compUnit.count);
if (entryPointName) // HLSL todo: this needs to be tracked per compUnits
shader->setEntryPoint(entryPointName);
- if (sourceEntryPointName)
+ if (sourceEntryPointName) {
+ if (entryPointName == nullptr)
+ printf("Warning: Changing source entry point name without setting an entry-point name.\n"
+ "Use '-e <name>'.\n");
shader->setSourceEntryPoint(sourceEntryPointName);
+ }
+ if (UserPreamble.isSet())
+ shader->setPreamble(UserPreamble.get());
+ shader->addProcesses(Processes);
+
+ // Set IO mapper binding shift values
+ for (int r = 0; r < glslang::EResCount; ++r) {
+ const glslang::TResourceType res = glslang::TResourceType(r);
+
+ // Set base bindings
+ shader->setShiftBinding(res, baseBinding[res][compUnit.stage]);
+
+ // Set bindings for particular resource sets
+ // TODO: use a range based for loop here, when available in all environments.
+ for (auto i = baseBindingForSet[res][compUnit.stage].begin();
+ i != baseBindingForSet[res][compUnit.stage].end(); ++i)
+ shader->setShiftBindingForSet(res, i->second, i->first);
+ }
- shader->setShiftSamplerBinding(baseSamplerBinding[compUnit.stage]);
- shader->setShiftTextureBinding(baseTextureBinding[compUnit.stage]);
- shader->setShiftImageBinding(baseImageBinding[compUnit.stage]);
- shader->setShiftUboBinding(baseUboBinding[compUnit.stage]);
- shader->setShiftSsboBinding(baseSsboBinding[compUnit.stage]);
shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0);
shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0);
+ shader->setResourceSetBinding(baseResourceSetBinding[compUnit.stage]);
+
+ if (Options & EOptionHlslIoMapping)
+ shader->setHlslIoMapping(true);
if (Options & EOptionAutoMapBindings)
shader->setAutoMapBindings(true);
+ if (Options & EOptionAutoMapLocations)
+ shader->setAutoMapLocations(true);
+
+ // Set up the environment, some subsettings take precedence over earlier
+ // ways of setting things.
+ if (Options & EOptionSpv) {
+ if (Options & EOptionVulkanRules) {
+ shader->setEnvInput((Options & EOptionReadHlsl) ? glslang::EShSourceHlsl
+ : glslang::EShSourceGlsl,
+ compUnit.stage, glslang::EShClientVulkan, ClientInputSemanticsVersion);
+ shader->setEnvClient(glslang::EShClientVulkan, VulkanClientVersion);
+ shader->setEnvTarget(glslang::EshTargetSpv, TargetVersion);
+ } else {
+ shader->setEnvInput((Options & EOptionReadHlsl) ? glslang::EShSourceHlsl
+ : glslang::EShSourceGlsl,
+ compUnit.stage, glslang::EShClientOpenGL, ClientInputSemanticsVersion);
+ shader->setEnvClient(glslang::EShClientOpenGL, OpenGLClientVersion);
+ shader->setEnvTarget(glslang::EshTargetSpv, TargetVersion);
+ }
+ }
+
shaders.push_back(shader);
- const int defaultVersion = Options & EOptionDefaultDesktop? 110: 100;
+ const int defaultVersion = Options & EOptionDefaultDesktop ? 110 : 100;
+ DirStackFileIncluder includer;
+ std::for_each(IncludeDirectoryList.rbegin(), IncludeDirectoryList.rend(), [&includer](const std::string& dir) {
+ includer.pushExternalLocalDirectory(dir); });
if (Options & EOptionOutputPreprocessed) {
std::string str;
- glslang::TShader::ForbidIncluder includer;
if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false,
messages, &str, includer)) {
PutsIfNonEmpty(str.c_str());
@@ -611,14 +877,14 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
StderrIfNonEmpty(shader->getInfoDebugLog());
continue;
}
- if (! shader->parse(&Resources, defaultVersion, false, messages))
+ if (! shader->parse(&Resources, defaultVersion, false, messages, includer))
CompileFailed = true;
program.addShader(shader);
if (! (Options & EOptionSuppressInfolog) &&
! (Options & EOptionMemoryLeakMode)) {
- PutsIfNonEmpty(compUnit.fileName.c_str());
+ PutsIfNonEmpty(compUnit.fileName[0].c_str());
PutsIfNonEmpty(shader->getInfoLog());
PutsIfNonEmpty(shader->getInfoDebugLog());
}
@@ -661,7 +927,12 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
std::vector<unsigned int> spirv;
std::string warningsErrors;
spv::SpvBuildLogger logger;
- glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv, &logger);
+ glslang::SpvOptions spvOptions;
+ if (Options & EOptionDebug)
+ spvOptions.generateDebugInfo = true;
+ spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0;
+ spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0;
+ glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv, &logger, &spvOptions);
// Dump the spv to a file or stdout, etc., but only if not doing
// memory/perf testing, as it's not internal to programmatic use.
@@ -705,29 +976,36 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
// performance and memory testing, the actual compile/link can be put in
// a loop, independent of processing the work items and file IO.
//
-void CompileAndLinkShaderFiles()
+void CompileAndLinkShaderFiles(glslang::TWorklist& Worklist)
{
std::vector<ShaderCompUnit> compUnits;
- // Transfer all the work items from to a simple list of
- // of compilation units. (We don't care about the thread
- // work-item distribution properties in this path, which
- // is okay due to the limited number of shaders, know since
- // they are all getting linked together.)
- glslang::TWorkItem* workItem;
- while (Worklist.remove(workItem)) {
- ShaderCompUnit compUnit(
- FindLanguage(workItem->name),
- workItem->name,
- ReadFileData(workItem->name.c_str())
- );
-
- if (! compUnit.text) {
- usage();
- return;
- }
-
+ // If this is using stdin, we can't really detect multiple different file
+ // units by input type. We need to assume that we're just being given one
+ // file of a certain type.
+ if ((Options & EOptionStdin) != 0) {
+ ShaderCompUnit compUnit(FindLanguage("stdin"));
+ std::istreambuf_iterator<char> begin(std::cin), end;
+ std::string tempString(begin, end);
+ char* fileText = strdup(tempString.c_str());
+ std::string fileName = "stdin";
+ compUnit.addString(fileName, fileText);
compUnits.push_back(compUnit);
+ } else {
+ // Transfer all the work items from to a simple list of
+ // of compilation units. (We don't care about the thread
+ // work-item distribution properties in this path, which
+ // is okay due to the limited number of shaders, know since
+ // they are all getting linked together.)
+ glslang::TWorkItem* workItem;
+ while (Worklist.remove(workItem)) {
+ ShaderCompUnit compUnit(FindLanguage(workItem->name));
+ char* fileText = ReadFileData(workItem->name.c_str());
+ if (fileText == nullptr)
+ usage();
+ compUnit.addString(workItem->name, fileText);
+ compUnits.push_back(compUnit);
+ }
}
// Actual call to programmatic processing of compile and link,
@@ -741,17 +1019,23 @@ void CompileAndLinkShaderFiles()
glslang::OS_DumpMemoryCounters();
}
+ // free memory from ReadFileData, which got stored in a const char*
+ // as the first string above
for (auto it = compUnits.begin(); it != compUnits.end(); ++it)
- FreeFileData(it->text);
+ FreeFileData(const_cast<char*>(it->text[0]));
}
-int C_DECL main(int argc, char* argv[])
+int singleMain()
{
- ProcessArguments(argc, argv);
+ glslang::TWorklist workList;
+ std::for_each(WorkItems.begin(), WorkItems.end(), [&workList](std::unique_ptr<glslang::TWorkItem>& item) {
+ assert(item);
+ workList.add(item.get());
+ });
if (Options & EOptionDumpConfig) {
printf("%s", glslang::GetDefaultTBuiltInResourceString().c_str());
- if (Worklist.empty())
+ if (workList.empty())
return ESuccess;
}
@@ -764,16 +1048,22 @@ int C_DECL main(int argc, char* argv[])
printf("SPIR-V Version %s\n", spirvVersion.c_str());
printf("GLSL.std.450 Version %d, Revision %d\n", GLSLstd450Version, GLSLstd450Revision);
printf("Khronos Tool ID %d\n", glslang::GetKhronosToolId());
+ printf("SPIR-V Generator Version %d\n", glslang::GetSpirvGeneratorVersion());
printf("GL_KHR_vulkan_glsl version %d\n", 100);
printf("ARB_GL_gl_spirv version %d\n", 100);
- if (Worklist.empty())
+ if (workList.empty())
return ESuccess;
}
- if (Worklist.empty()) {
+ if (workList.empty() && ((Options & EOptionStdin) == 0)) {
usage();
}
+ if (Options & EOptionStdin) {
+ WorkItems.push_back(std::unique_ptr<glslang::TWorkItem>{new glslang::TWorkItem("stdin")});
+ workList.add(WorkItems.back().get());
+ }
+
ProcessConfigFile();
//
@@ -784,47 +1074,45 @@ int C_DECL main(int argc, char* argv[])
if (Options & EOptionLinkProgram ||
Options & EOptionOutputPreprocessed) {
glslang::InitializeProcess();
- CompileAndLinkShaderFiles();
+ glslang::InitializeProcess(); // also test reference counting of users
+ glslang::InitializeProcess(); // also test reference counting of users
+ glslang::FinalizeProcess(); // also test reference counting of users
+ glslang::FinalizeProcess(); // also test reference counting of users
+ CompileAndLinkShaderFiles(workList);
glslang::FinalizeProcess();
- for (int w = 0; w < NumWorkItems; ++w) {
- if (Work[w]) {
- delete Work[w];
- }
- }
} else {
ShInitialize();
+ ShInitialize(); // also test reference counting of users
+ ShFinalize(); // also test reference counting of users
- bool printShaderNames = Worklist.size() > 1;
+ bool printShaderNames = workList.size() > 1;
if (Options & EOptionMultiThreaded) {
- const int NumThreads = 16;
- void* threads[NumThreads];
- for (int t = 0; t < NumThreads; ++t) {
- threads[t] = glslang::OS_CreateThread(&CompileShaders);
- if (! threads[t]) {
- printf("Failed to create thread\n");
+ std::array<std::thread, 16> threads;
+ for (unsigned int t = 0; t < threads.size(); ++t) {
+ threads[t] = std::thread(CompileShaders, std::ref(workList));
+ if (threads[t].get_id() == std::thread::id()) {
+ fprintf(stderr, "Failed to create thread\n");
return EFailThreadCreate;
}
}
- glslang::OS_WaitForAllThreads(threads, NumThreads);
+
+ std::for_each(threads.begin(), threads.end(), [](std::thread& t) { t.join(); });
} else
- CompileShaders(0);
+ CompileShaders(workList);
// Print out all the resulting infologs
- for (int w = 0; w < NumWorkItems; ++w) {
- if (Work[w]) {
- if (printShaderNames || Work[w]->results.size() > 0)
- PutsIfNonEmpty(Work[w]->name.c_str());
- PutsIfNonEmpty(Work[w]->results.c_str());
- delete Work[w];
+ for (size_t w = 0; w < WorkItems.size(); ++w) {
+ if (WorkItems[w]) {
+ if (printShaderNames || WorkItems[w]->results.size() > 0)
+ PutsIfNonEmpty(WorkItems[w]->name.c_str());
+ PutsIfNonEmpty(WorkItems[w]->results.c_str());
}
}
ShFinalize();
}
- delete[] Work;
-
if (CompileFailed)
return EFailCompile;
if (LinkFailed)
@@ -833,6 +1121,25 @@ int C_DECL main(int argc, char* argv[])
return 0;
}
+int C_DECL main(int argc, char* argv[])
+{
+ ProcessArguments(WorkItems, argc, argv);
+
+ int ret = 0;
+
+ // Loop over the entire init/finalize cycle to watch memory changes
+ const int iterations = 1;
+ if (iterations > 1)
+ glslang::OS_DumpMemoryCounters();
+ for (int i = 0; i < iterations; ++i) {
+ ret = singleMain();
+ if (iterations > 1)
+ glslang::OS_DumpMemoryCounters();
+ }
+
+ return ret;
+}
+
//
// Deduce the language from the filename. Files must end in one of the
// following extensions:
@@ -889,29 +1196,29 @@ EShLanguage FindLanguage(const std::string& name, bool parseSuffix)
void CompileFile(const char* fileName, ShHandle compiler)
{
int ret = 0;
- char** shaderStrings = ReadFileData(fileName);
- if (! shaderStrings) {
- usage();
+ char* shaderString;
+ if ((Options & EOptionStdin) != 0) {
+ std::istreambuf_iterator<char> begin(std::cin), end;
+ std::string tempString(begin, end);
+ shaderString = strdup(tempString.c_str());
+ } else {
+ shaderString = ReadFileData(fileName);
}
- int* lengths = new int[NumShaderStrings];
-
// move to length-based strings, rather than null-terminated strings
- for (int s = 0; s < NumShaderStrings; ++s)
- lengths[s] = (int)strlen(shaderStrings[s]);
-
- if (! shaderStrings) {
- CompileFailed = true;
- return;
- }
+ int* lengths = new int[1];
+ lengths[0] = (int)strlen(shaderString);
EShMessages messages = EShMsgDefault;
SetMessageOptions(messages);
+ if (UserPreamble.isSet())
+ Error("-D and -U options require -l (linking)\n");
+
for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) {
for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) {
// ret = ShCompile(compiler, shaderStrings, NumShaderStrings, lengths, EShOptNone, &Resources, Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages);
- ret = ShCompile(compiler, shaderStrings, NumShaderStrings, nullptr, EShOptNone, &Resources, Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages);
+ ret = ShCompile(compiler, &shaderString, 1, nullptr, EShOptNone, &Resources, Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages);
// const char* multi[12] = { "# ve", "rsion", " 300 e", "s", "\n#err",
// "or should be l", "ine 1", "string 5\n", "float glo", "bal",
// ";\n#error should be line 2\n void main() {", "global = 2.3;}" };
@@ -924,7 +1231,7 @@ void CompileFile(const char* fileName, ShHandle compiler)
}
delete [] lengths;
- FreeFileData(shaderStrings);
+ FreeFileData(shaderString);
if (ret == 0)
CompileFailed = true;
@@ -937,8 +1244,8 @@ void usage()
{
printf("Usage: glslangValidator [option]... [file]...\n"
"\n"
- "Where: each 'file' ends in .<stage>, where <stage> is one of\n"
- " .conf to provide an optional config file that replaces the default configuration\n"
+ "'file' can end in .<stage> for auto-stage classification, where <stage> is:\n"
+ " .conf to provide a config file that replaces the default configuration\n"
" (see -c option below for generating a template)\n"
" .vert for a vertex shader\n"
" .tesc for a tessellation control shader\n"
@@ -947,71 +1254,111 @@ void usage()
" .frag for a fragment shader\n"
" .comp for a compute shader\n"
"\n"
- "Compilation warnings and errors will be printed to stdout.\n"
- "\n"
- "To get other information, use one of the following options:\n"
- "Each option must be specified separately.\n"
- " -V create SPIR-V binary, under Vulkan semantics; turns on -l;\n"
- " default file name is <stage>.spv (-o overrides this)\n"
- " -G create SPIR-V binary, under OpenGL semantics; turns on -l;\n"
- " default file name is <stage>.spv (-o overrides this)\n"
- " -H print human readable form of SPIR-V; turns on -V\n"
+ "Options:\n"
+ " -C cascading errors; risk crash from accumulation of error recoveries\n"
+ " -D input is HLSL\n"
+ " -D<macro=def>\n"
+ " -D<macro> define a pre-processor macro\n"
" -E print pre-processed GLSL; cannot be used with -l;\n"
" errors will appear on stderr.\n"
+ " -G[ver] create SPIR-V binary, under OpenGL semantics; turns on -l;\n"
+ " default file name is <stage>.spv (-o overrides this)\n"
+ " 'ver', when present, is the version of the input semantics,\n"
+ " which will appear in #define GL_SPIRV ver\n"
+ " '--client opengl100' is the same as -G100\n"
+ " a '--target-env' for OpenGL will also imply '-G'\n"
+ " -H print human readable form of SPIR-V; turns on -V\n"
+ " -I<dir> add dir to the include search path; includer's directory\n"
+ " is searched first, followed by left-to-right order of -I\n"
+ " -Od disables optimization. May cause illegal SPIR-V for HLSL.\n"
+ " -Os optimizes SPIR-V to minimize size.\n"
" -S <stage> uses specified stage rather than parsing the file extension\n"
- " valid choices for <stage> are vert, tesc, tese, geom, frag, or comp\n"
+ " choices for <stage> are vert, tesc, tese, geom, frag, or comp\n"
+ " -U<macro> undefine a pre-processor macro\n"
+ " -V[ver] create SPIR-V binary, under Vulkan semantics; turns on -l;\n"
+ " default file name is <stage>.spv (-o overrides this)\n"
+ " 'ver', when present, is the version of the input semantics,\n"
+ " which will appear in #define VULKAN ver\n"
+ " '--client vulkan100' is the same as -V100\n"
+ " a '--target-env' for Vulkan will also imply '-V'\n"
" -c configuration dump;\n"
" creates the default configuration file (redirect to a .conf file)\n"
- " -C cascading errors; risks crashes from accumulation of error recoveries\n"
" -d default to desktop (#version 110) when there is no shader #version\n"
" (default is ES version 100)\n"
- " -D input is HLSL\n"
- " -e specify entry-point name\n"
+ " -e <name> specify <name> as the entry-point name\n"
+ " -g generate debug information\n"
" -h print this usage message\n"
" -i intermediate tree (glslang AST) is printed out\n"
" -l link all input files together to form a single module\n"
" -m memory leak mode\n"
- " -o <file> save binary to <file>, requires a binary option (e.g., -V)\n"
+ " -o <file> save binary to <file>, requires a binary option (e.g., -V)\n"
" -q dump reflection query database\n"
- " -r relaxed semantic error-checking mode\n"
- " -s silent mode\n"
+ " -r synonym for --relaxed-errors\n"
+ " -s silence syntax and semantic error reporting\n"
" -t multi-threaded mode\n"
" -v print version strings\n"
- " -w suppress warnings (except as required by #extension : warn)\n"
- " -x save 32-bit hexadecimal numbers as text, requires a binary option (e.g., -V)\n"
- "\n"
- " --shift-sampler-binding [stage] num set base binding number for samplers\n"
- " --ssb [stage] num synonym for --shift-sampler-binding\n"
- "\n"
- " --shift-texture-binding [stage] num set base binding number for textures\n"
- " --stb [stage] num synonym for --shift-texture-binding\n"
- "\n"
- " --shift-image-binding [stage] num set base binding number for images (uav)\n"
- " --sib [stage] num synonym for --shift-image-binding\n"
- "\n"
- " --shift-UBO-binding [stage] num set base binding number for UBOs\n"
- " --sub [stage] num synonym for --shift-UBO-binding\n"
- "\n"
- " --shift-ssbo-binding [stage] num set base binding number for SSBOs\n"
- " --sbb [stage] num synonym for --shift-ssbo-binding\n"
- "\n"
- " --auto-map-bindings automatically bind uniform variables without\n"
- " explicit bindings.\n"
- " --amb synonym for --auto-map-bindings\n"
- "\n"
- " --flatten-uniform-arrays flatten uniform texture & sampler arrays to scalars\n"
- " --fua synonym for --flatten-uniform-arrays\n"
- "\n"
- " --no-storage-format use Unknown image format\n"
- " --nsf synonym for --no-storage-format\n"
- "\n"
- " --source-entrypoint name the given shader source function is renamed to be the entry point given in -e\n"
- " --sep synonym for --source-entrypoint\n"
- "\n"
- " --keep-uncalled don't eliminate uncalled functions when linking\n"
- " --ku synonym for --keep-uncalled\n"
- " --variable-name <name> Creates a C header file that contains a uint32_t array named <name> initialized with the shader binary code.\n"
- " --vn <name> synonym for --variable-name <name>.\n"
+ " -w synonym for --suppress-warnings\n"
+ " -x save binary output as text-based 32-bit hexadecimal numbers\n"
+ " --auto-map-bindings automatically bind uniform variables\n"
+ " without explicit bindings.\n"
+ " --amb synonym for --auto-map-bindings\n"
+ " --auto-map-locations automatically locate input/output lacking\n"
+ " 'location' (fragile, not cross stage)\n"
+ " --aml synonym for --auto-map-locations\n"
+ " --client {vulkan<ver>|opengl<ver>} see -V and -G\n"
+ " --flatten-uniform-arrays flatten uniform texture/sampler arrays to\n"
+ " scalars\n"
+ " --fua synonym for --flatten-uniform-arrays\n"
+ " --hlsl-offsets Allow block offsets to follow HLSL rules\n"
+ " Works independently of source language\n"
+ " --hlsl-iomap Perform IO mapping in HLSL register space\n"
+ " --keep-uncalled don't eliminate uncalled functions\n"
+ " --ku synonym for --keep-uncalled\n"
+ " --no-storage-format use Unknown image format\n"
+ " --nsf synonym for --no-storage-format\n"
+ " --relaxed-errors relaxed GLSL semantic error-checking mode\n"
+ " --resource-set-binding [stage] name set binding\n"
+ " Set descriptor set and binding for individual resources\n"
+ " --resource-set-binding [stage] set\n"
+ " Set descriptor set for all resources\n"
+ " --rsb [stage] type set binding synonym for --resource-set-binding\n"
+ " --shift-image-binding [stage] num base binding number for images (uav)\n"
+ " --shift-image-binding [stage] [num set]... per-descriptor-set shift values\n"
+ " --sib [stage] num synonym for --shift-image-binding\n"
+ " --shift-sampler-binding [stage] num base binding number for samplers\n"
+ " --shift-sampler-binding [stage] [num set]... per-descriptor-set shift values\n"
+ " --ssb [stage] num synonym for --shift-sampler-binding\n"
+ " --shift-ssbo-binding [stage] num base binding number for SSBOs\n"
+ " --shift-ssbo-binding [stage] [num set]... per-descriptor-set shift values\n"
+ " --sbb [stage] num synonym for --shift-ssbo-binding\n"
+ " --shift-texture-binding [stage] num base binding number for textures\n"
+ " --shift-texture-binding [stage] [num set]... per-descriptor-set shift values\n"
+ " --stb [stage] num synonym for --shift-texture-binding\n"
+ " --shift-uav-binding [stage] num base binding number for UAVs\n"
+ " --shift-uav-binding [stage] [num set]... per-descriptor-set shift values\n"
+ " --suavb [stage] num synonym for --shift-uav-binding\n"
+ " --shift-UBO-binding [stage] num base binding number for UBOs\n"
+ " --shift-UBO-binding [stage] [num set]... per-descriptor-set shift values\n"
+ " --shift-cbuffer-binding [stage] num synonym for --shift-UBO-binding\n"
+ " --shift-cbuffer-binding [stage] [num set]... per-descriptor-set shift values\n"
+ " --sub [stage] num synonym for --shift-UBO-binding\n"
+ " --source-entrypoint <name> the given shader source function is\n"
+ " renamed to be the <name> given in -e\n"
+ " --sep synonym for --source-entrypoint\n"
+ " --stdin Read from stdin instead of from a file.\n"
+ " You'll have to provide the shader stage\n"
+ " using -S.\n"
+ " --suppress-warnings suppress GLSL warnings\n"
+ " (except as required by #extension : warn)\n"
+ " --target-env {vulkan1.0|opengl} set the execution environment code will\n"
+ " execute in (as opposed to language\n"
+ " semantics selected by --client) defaults:\n"
+ " 'vulkan1.0' under '--client vulkan<ver>'\n"
+ " 'opengl' under '--client opengl<ver>'\n"
+ " --variable-name <name> Creates a C header file that contains a\n"
+ " uint32_t array named <name>\n"
+ " initialized with the shader binary code.\n"
+ " --vn <name> synonym for --variable-name <name>\n"
);
exit(EFailUsage);
@@ -1049,76 +1396,33 @@ int fopen_s(
//
// Malloc a string of sufficient size and read a string into it.
//
-char** ReadFileData(const char* fileName)
+char* ReadFileData(const char* fileName)
{
FILE *in = nullptr;
int errorCode = fopen_s(&in, fileName, "r");
-
- int count = 0;
- const int maxSourceStrings = 5; // for testing splitting shader/tokens across multiple strings
- char** return_data = (char**)malloc(sizeof(char *) * (maxSourceStrings+1)); // freed in FreeFileData()
-
if (errorCode || in == nullptr)
Error("unable to open input file");
+ int count = 0;
while (fgetc(in) != EOF)
count++;
fseek(in, 0, SEEK_SET);
- char *fdata = (char*)malloc(count+2); // freed before return of this function
- if (! fdata)
- Error("can't allocate memory");
-
- if ((int)fread(fdata, 1, count, in) != count) {
- free(fdata);
+ char* return_data = (char*)malloc(count + 1); // freed in FreeFileData()
+ if ((int)fread(return_data, 1, count, in) != count) {
+ free(return_data);
Error("can't read input file");
}
- fdata[count] = '\0';
+ return_data[count] = '\0';
fclose(in);
- if (count == 0) {
- // recover from empty file
- return_data[0] = (char*)malloc(count+2); // freed in FreeFileData()
- return_data[0][0]='\0';
- NumShaderStrings = 0;
- free(fdata);
-
- return return_data;
- } else
- NumShaderStrings = 1; // Set to larger than 1 for testing multiple strings
-
- // compute how to split up the file into multiple strings, for testing multiple strings
- int len = (int)(ceil)((float)count/(float)NumShaderStrings);
- int ptr_len = 0;
- int i = 0;
- while (count > 0) {
- return_data[i] = (char*)malloc(len + 2); // freed in FreeFileData()
- memcpy(return_data[i], fdata + ptr_len, len);
- return_data[i][len] = '\0';
- count -= len;
- ptr_len += len;
- if (count < len) {
- if (count == 0) {
- NumShaderStrings = i + 1;
- break;
- }
- len = count;
- }
- ++i;
- }
-
- free(fdata);
-
return return_data;
}
-void FreeFileData(char** data)
+void FreeFileData(char* data)
{
- for(int i = 0; i < NumShaderStrings; i++)
- free(data[i]);
-
free(data);
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/StandAlone/Worklist.h b/3rdparty/bgfx/3rdparty/glslang/StandAlone/Worklist.h
index 2a14294e838..91b6f516be0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/StandAlone/Worklist.h
+++ b/3rdparty/bgfx/3rdparty/glslang/StandAlone/Worklist.h
@@ -36,8 +36,9 @@
#define WORKLIST_H_INCLUDED
#include "../glslang/OSDependent/osinclude.h"
-#include <string>
#include <list>
+#include <mutex>
+#include <string>
namespace glslang {
@@ -58,24 +59,19 @@ namespace glslang {
void add(TWorkItem* item)
{
- GetGlobalLock();
-
+ std::lock_guard<std::mutex> guard(mutex);
worklist.push_back(item);
-
- ReleaseGlobalLock();
}
bool remove(TWorkItem*& item)
{
- GetGlobalLock();
+ std::lock_guard<std::mutex> guard(mutex);
if (worklist.empty())
return false;
item = worklist.front();
worklist.pop_front();
- ReleaseGlobalLock();
-
return true;
}
@@ -90,6 +86,7 @@ namespace glslang {
}
protected:
+ std::mutex mutex;
std::list<TWorkItem*> worklist;
};
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/100samplerExternal.frag b/3rdparty/bgfx/3rdparty/glslang/Test/100samplerExternal.frag
new file mode 100644
index 00000000000..9f6f397e0dd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/100samplerExternal.frag
@@ -0,0 +1,41 @@
+#version 100
+
+#extension GL_OES_EGL_image_external : enable
+
+uniform samplerExternalOES sExt;
+precision mediump samplerExternalOES;
+uniform samplerExternalOES mediumExt;
+uniform highp samplerExternalOES highExt;
+
+void main()
+{
+ texture2D(sExt, vec2(0.2));
+ texture2D(mediumExt, vec2(0.2));
+ texture2D(highExt, vec2(0.2));
+ texture2DProj(sExt, vec3(0.3));
+ texture2DProj(sExt, vec4(0.3));
+
+ int lod = 0;
+ highp float bias = 0.01;
+ textureSize(sExt, lod); // ERROR
+ texture(sExt, vec2(0.2)); // ERROR
+ texture(sExt, vec2(0.2), bias); // ERROR
+ textureProj(sExt, vec3(0.2)); // ERROR
+ textureProj(sExt, vec3(0.2), bias); // ERROR
+ textureProj(sExt, vec4(0.2)); // ERROR
+ textureProj(sExt, vec4(0.2), bias); // ERROR
+ texelFetch(sExt, ivec2(4), lod); // ERROR
+
+ texture3D(sExt, vec3(0.3)); // ERROR
+ texture2DProjLod(sExt, vec3(0.3), 0.3); // ERROR
+ texture(sExt, vec3(0.3)); // ERROR
+ textureProjLod(sExt, vec3(0.3), 0.3); // ERROR
+}
+
+#extension GL_OES_EGL_image_external : disable
+
+#extension GL_OES_EGL_image_external_essl3 : enable
+uniform samplerExternalOES badExt; // ERROR
+#extension GL_OES_EGL_image_external_essl3 : disable
+
+uniform samplerExternalOES badExt; // ERROR
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/300.vert b/3rdparty/bgfx/3rdparty/glslang/Test/300.vert
index 83b9bb112aa..daf98b836f6 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/300.vert
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/300.vert
@@ -184,4 +184,21 @@ void fooDeeparray()
yp = y;
xp = y; // ERROR, wrong size
yp = x; // ERROR, wrong size
+}
+
+layout(num_views = 2) in; // ERROR, no extension
+
+void mwErr()
+{
+ gl_ViewID_OVR; // ERROR, no extension
+}
+
+#extension GL_OVR_multiview : enable
+
+layout(num_views = 2) uniform float mwUniform; // ERROR, must be global
+layout(num_views = 2) in; // OK
+
+void mwOk()
+{
+ gl_ViewID_OVR;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/300samplerExternal.frag b/3rdparty/bgfx/3rdparty/glslang/Test/300samplerExternal.frag
new file mode 100644
index 00000000000..3724f8e0a14
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/300samplerExternal.frag
@@ -0,0 +1,41 @@
+#version 300 es
+
+#extension GL_OES_EGL_image_external_essl3 : enable
+
+uniform samplerExternalOES sExt;
+precision mediump samplerExternalOES;
+uniform samplerExternalOES mediumExt;
+uniform highp samplerExternalOES highExt;
+
+void main()
+{
+ texture2D(sExt, vec2(0.2)); // ERROR
+ texture2D(mediumExt, vec2(0.2)); // ERROR
+ texture2D(highExt, vec2(0.2)); // ERROR
+ texture2DProj(sExt, vec3(0.3)); // ERROR
+ texture2DProj(sExt, vec4(0.3)); // ERROR
+
+ int lod = 0;
+ highp float bias = 0.01;
+ textureSize(sExt, lod);
+ texture(sExt, vec2(0.2));
+ texture(sExt, vec2(0.2), bias);
+ textureProj(sExt, vec3(0.2));
+ textureProj(sExt, vec3(0.2), bias);
+ textureProj(sExt, vec4(0.2));
+ textureProj(sExt, vec4(0.2), bias);
+ texelFetch(sExt, ivec2(4), lod);
+
+ texture3D(sExt, vec3(0.3)); // ERROR
+ texture2DProjLod(sExt, vec3(0.3), 0.3); // ERROR
+ texture(sExt, vec3(0.3)); // ERROR
+ textureProjLod(sExt, vec3(0.3), 0.3); // ERROR
+}
+
+#extension GL_OES_EGL_image_external_essl3 : disable
+
+#extension GL_OES_EGL_image_external : enable
+uniform samplerExternalOES badExt; // ERROR
+#extension GL_OES_EGL_image_external : disable
+
+uniform samplerExternalOES badExt; // ERROR
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/310.comp b/3rdparty/bgfx/3rdparty/glslang/Test/310.comp
index 9575b6f9db3..9ca8eaaa104 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/310.comp
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/310.comp
@@ -4,7 +4,7 @@ layout(local_size_x = 2) in;
layout(local_size_x = 16) in; // ERROR, changing
layout(local_size_z = 4096) in; // ERROR, too large
layout(local_size_x = 2) in;
-
+layout(local_size_y = 0) in; // ERROR, 0 not allowed
const int total = gl_MaxComputeWorkGroupCount.y
+ gl_MaxComputeUniformComponents
+ gl_MaxComputeTextureImageUnits
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/320.comp b/3rdparty/bgfx/3rdparty/glslang/Test/320.comp
new file mode 100644
index 00000000000..c31b047f5b0
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/320.comp
@@ -0,0 +1,5 @@
+#version 320 es
+
+void main()
+{
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/320.frag b/3rdparty/bgfx/3rdparty/glslang/Test/320.frag
new file mode 100644
index 00000000000..bed3f120397
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/320.frag
@@ -0,0 +1,225 @@
+#version 320 es
+
+out outbname { int a; } outbinst; // ERROR, not out block in fragment shader
+
+in inbname {
+ int a;
+ vec4 v;
+ struct { int b; } s; // ERROR, nested struct definition
+} inbinst;
+
+in inbname2 {
+ layout(location = 12) int aAnon;
+ layout(location = 13) centroid in vec4 vAnon;
+};
+
+in layout(location = 13) vec4 aliased; // ERROR, aliased
+
+in inbname2 { // ERROR, reuse of block name
+ int aAnon;
+ centroid in vec4 vAnon;
+};
+
+in badmember { // ERROR, aAnon already in global scope
+ int aAnon;
+};
+
+int inbname; // ERROR, redefinition of block name
+
+vec4 vAnon; // ERROR, anon in global scope; redefinition
+
+in arrayed {
+ float f;
+} arrayedInst[4];
+uniform int i;
+void fooIO()
+{
+ vec4 v = inbinst.v + vAnon;
+ v *= arrayedInst[2].f;
+ v *= arrayedInst[i].f;
+}
+
+in vec4 gl_FragCoord;
+layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR, non-ES
+
+layout(early_fragment_tests) in;
+out float gl_FragDepth;
+layout(depth_any) out float gl_FragDepth; // ERROR, non-ES
+
+void main()
+{
+ gl_FragDepth = 0.2; // ERROR, early_fragment_tests declared
+ bool f = gl_FrontFacing;
+}
+
+out float gl_FragDepth;
+
+void foo_GS()
+{
+ highp int l = gl_Layer;
+ highp int p = gl_PrimitiveID;
+}
+
+in vec2 inf, ing;
+uniform ivec2 offsets[4];
+uniform sampler2D sArray[4];
+uniform int sIndex;
+layout(binding = 0) uniform atomic_uint auArray[2];
+uniform ubName { int i; } ubInst[4];
+buffer bbName { int i; } bbInst[4];
+highp uniform writeonly image2D iArray[5];
+const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4));
+
+void pfoo()
+{
+ precise vec2 h;
+ h = fma(inf, ing, h);
+ textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf));
+ textureGatherOffsets(sArray[0], vec2(0.1), constOffsets);
+ textureGatherOffsets(sArray[0], vec2(0.1), offsets); // ERROR, offset not constant
+}
+
+precision highp imageCubeArray ;
+precision highp iimageCubeArray ;
+precision highp uimageCubeArray ;
+
+precision highp samplerCubeArray ;
+precision highp samplerCubeArrayShadow;
+precision highp isamplerCubeArray ;
+precision highp usamplerCubeArray ;
+
+uniform writeonly imageCubeArray CA1;
+uniform writeonly iimageCubeArray CA2;
+uniform writeonly uimageCubeArray CA3;
+
+#ifdef GL_EXT_texture_cube_map_array
+uniform samplerCubeArray CA4;
+uniform samplerCubeArrayShadow CA5;
+uniform isamplerCubeArray CA6;
+uniform usamplerCubeArray CA7;
+#endif
+
+void CAT()
+{
+ highp vec4 b4 = texture(CA4, vec4(0.5), 0.24);
+ highp ivec4 b6 = texture(CA6, vec4(0.5), 0.26);
+ highp uvec4 b7 = texture(CA7, vec4(0.5), 0.27);
+}
+
+void goodSample()
+{
+ lowp int a1 = gl_SampleID;
+ mediump vec2 a2 = gl_SamplePosition;
+ highp int a3 = gl_SampleMaskIn[0];
+ gl_SampleMask[0] = a3;
+ mediump int n1 = gl_MaxSamples;
+ mediump int n2 = gl_NumSamples;
+}
+
+uniform layout(r32f) highp image2D im2Df;
+uniform layout(r32ui) highp uimage2D im2Du;
+uniform layout(r32i) highp iimage2D im2Di;
+uniform ivec2 P;
+
+uniform layout(rgba32f) highp image2D badIm2Df; // ERROR, needs readonly or writeonly
+uniform layout(rgba8ui) highp uimage2D badIm2Du; // ERROR, needs readonly or writeonly
+uniform layout(rgba16i) highp iimage2D badIm2Di; // ERROR, needs readonly or writeonly
+
+void goodImageAtom()
+{
+ float datf;
+ int dati;
+ uint datu;
+
+ imageAtomicAdd( im2Di, P, dati);
+ imageAtomicAdd( im2Du, P, datu);
+ imageAtomicMin( im2Di, P, dati);
+ imageAtomicMin( im2Du, P, datu);
+ imageAtomicMax( im2Di, P, dati);
+ imageAtomicMax( im2Du, P, datu);
+ imageAtomicAnd( im2Di, P, dati);
+ imageAtomicAnd( im2Du, P, datu);
+ imageAtomicOr( im2Di, P, dati);
+ imageAtomicOr( im2Du, P, datu);
+ imageAtomicXor( im2Di, P, dati);
+ imageAtomicXor( im2Du, P, datu);
+ imageAtomicExchange(im2Di, P, dati);
+ imageAtomicExchange(im2Du, P, datu);
+ imageAtomicExchange(im2Df, P, datf);
+ imageAtomicCompSwap(im2Di, P, 3, dati);
+ imageAtomicCompSwap(im2Du, P, 5u, datu);
+
+ imageAtomicMax(badIm2Di, P, dati); // ERROR, not an allowed layout() on the image
+ imageAtomicMax(badIm2Du, P, datu); // ERROR, not an allowed layout() on the image
+ imageAtomicExchange(badIm2Df, P, datf); // ERROR, not an allowed layout() on the image
+}
+
+centroid out vec4 colorCentroidBad; // ERROR
+flat out vec4 colorBadFlat; // ERROR
+smooth out vec4 colorBadSmooth; // ERROR
+noperspective out vec4 colorBadNo; // ERROR
+flat centroid in vec2 colorfc;
+in float scalarIn;
+
+sample in vec4 colorSampIn;
+sample out vec4 colorSampleBad; // ERROR
+flat sample in vec4 colorfsi;
+sample in vec3 sampInArray[4];
+
+void interp()
+{
+ float res;
+ vec2 res2;
+ vec3 res3;
+ vec4 res4;
+
+ res2 = interpolateAtCentroid(colorfc);
+ res4 = interpolateAtCentroid(colorSampIn);
+ res4 = interpolateAtCentroid(colorfsi);
+ res = interpolateAtCentroid(scalarIn);
+ res3 = interpolateAtCentroid(sampInArray); // ERROR
+ res3 = interpolateAtCentroid(sampInArray[2]);
+ res2 = interpolateAtCentroid(sampInArray[2].xy); // ERROR
+
+ res3 = interpolateAtSample(sampInArray, 1); // ERROR
+ res3 = interpolateAtSample(sampInArray[i], 0);
+ res2 = interpolateAtSample(sampInArray[2].xy, 2); // ERROR
+ res = interpolateAtSample(scalarIn, 1);
+
+ res3 = interpolateAtOffset(sampInArray, vec2(0.2)); // ERROR
+ res3 = interpolateAtOffset(sampInArray[2], vec2(0.2));
+ res2 = interpolateAtOffset(sampInArray[2].xy, vec2(0.2)); // ERROR, no swizzle
+ res = interpolateAtOffset(scalarIn + scalarIn, vec2(0.2)); // ERROR, no binary ops other than dereference
+ res = interpolateAtOffset(scalarIn, vec2(0.2));
+
+ float f;
+ res = interpolateAtCentroid(f); // ERROR, not interpolant
+ res4 = interpolateAtSample(outp, 0); // ERROR, not interpolant
+}
+
+layout(blend_support_multiply) out;
+layout(blend_support_screen) out;
+layout(blend_support_overlay) out;
+layout(blend_support_darken, blend_support_lighten) out;
+layout(blend_support_colordodge) layout(blend_support_colorburn) out;
+layout(blend_support_hardlight) out;
+layout(blend_support_softlight) out;
+layout(blend_support_difference) out;
+layout(blend_support_exclusion) out;
+layout(blend_support_hsl_hue) out;
+layout(blend_support_hsl_saturation) out;
+layout(blend_support_hsl_color) out;
+layout(blend_support_hsl_luminosity) out;
+layout(blend_support_all_equations) out;
+
+layout(blend_support_hsl_luminosity) out; // okay to repeat
+
+layout(blend_support_hsl_luminosity) in; // ERROR, only on "out"
+layout(blend_support_hsl_luminosity) out vec4; // ERROR, only on standalone
+layout(blend_support_hsl_luminosity) out vec4 badout; // ERROR, only on standalone
+layout(blend_support_hsl_luminosity) struct badS {int i;}; // ERROR, only on standalone
+layout(blend_support_hsl_luminosity) void blendFoo() { } // ERROR, only on standalone
+void blendFoo(layout(blend_support_hsl_luminosity) vec3 v) { } // ERROR, only on standalone
+layout(blend_support_flizbit) out; // ERROR, no flizbit
+
+out vec4 outAA[2][2]; // ERROR
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/320.geom b/3rdparty/bgfx/3rdparty/glslang/Test/320.geom
new file mode 100644
index 00000000000..38d71c31421
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/320.geom
@@ -0,0 +1,134 @@
+#version 320 es
+
+precision mediump float;
+
+in fromVertex {
+ in vec3 color;
+} fromV[];
+
+in vec4 nonBlockUnsized[];
+
+out toFragment {
+ out vec3 color;
+} toF;
+
+out fromVertex { // okay to reuse a block name for another block name
+ vec3 color;
+};
+
+out fooB { // ERROR, cannot reuse block name as block instance
+ vec2 color;
+} fromVertex;
+
+int fromVertex; // ERROR, cannot reuse a block name for something else
+
+out fooC { // ERROR, cannot have same name for block and instance name
+ vec2 color;
+} fooC;
+
+void main()
+{
+ EmitVertex();
+ EndPrimitive();
+ EmitStreamVertex(1); // ERROR
+ EndStreamPrimitive(0); // ERROR
+
+ color = fromV[0].color;
+ gl_ClipDistance[3] = // ERROR, no ClipDistance
+ gl_in[1].gl_ClipDistance[2]; // ERROR, no ClipDistance
+ gl_Position = gl_in[0].gl_Position;
+
+ gl_PrimitiveID = gl_PrimitiveIDIn;
+ gl_Layer = 2;
+}
+
+layout(stream = 4) out vec4 ov4; // ERROR, no streams
+
+layout(line_strip, points, triangle_strip, points, triangle_strip) out; // just means triangle_strip"
+
+out ooutb { vec4 a; } ouuaa6;
+
+layout(max_vertices = 200) out;
+layout(max_vertices = 300) out; // ERROR, too big
+void foo(layout(max_vertices = 4) int a) // ERROR
+{
+ ouuaa6.a = vec4(1.0);
+}
+
+layout(line_strip, points, triangle_strip, points) out; // ERROR, changing output primitive
+layout(line_strip, points) out; // ERROR, changing output primitive
+layout(triangle_strip) in; // ERROR, not an input primitive
+layout(triangle_strip) uniform; // ERROR
+layout(triangle_strip) out vec4 badv4; // ERROR, not on a variable
+layout(triangle_strip) in vec4 bad2v4[]; // ERROR, not on a variable or input
+layout(invocations = 3) out outbn { int a; }; // 2 ERROR, not on a block, not until 4.0
+out outbn2 {
+ layout(invocations = 3) int a; // 2 ERRORs, not on a block member, not until 4.0
+ layout(max_vertices = 3) int b; // ERROR, not on a block member
+ layout(triangle_strip) int c; // ERROR, not on a block member
+} outbi;
+
+layout(lines) out; // ERROR, not on output
+layout(lines_adjacency) in;
+layout(triangles) in; // ERROR, can't change it
+layout(triangles_adjacency) in; // ERROR, can't change it
+layout(invocations = 4) in;
+
+in sameName {
+ int a15;
+} insn[];
+
+out sameName {
+ float f15;
+};
+
+uniform sameName {
+ bool b15;
+};
+
+const int summ = gl_MaxVertexAttribs +
+ gl_MaxGeometryInputComponents +
+ gl_MaxGeometryOutputComponents +
+ gl_MaxGeometryImageUniforms +
+ gl_MaxGeometryTextureImageUnits +
+ gl_MaxGeometryOutputVertices +
+ gl_MaxGeometryTotalOutputComponents +
+ gl_MaxGeometryUniformComponents +
+ gl_MaxGeometryAtomicCounters +
+ gl_MaxGeometryAtomicCounterBuffers +
+ gl_MaxVertexTextureImageUnits +
+ gl_MaxCombinedTextureImageUnits +
+ gl_MaxTextureImageUnits +
+ gl_MaxDrawBuffers;
+
+void fooe1()
+{
+ gl_ViewportIndex; // ERROR, not in ES
+ gl_MaxViewports; // ERROR, not in ES
+ insn.length(); // 4: lines_adjacency
+ int inv = gl_InvocationID;
+}
+
+in vec4 explArray[4];
+in vec4 explArrayBad[5]; // ERROR, wrong size
+in vec4 nonArrayed; // ERROR, not an array
+flat out vec3 myColor1;
+centroid out vec3 myColor2;
+centroid in vec3 centr[];
+sample out vec4 perSampleColor; // ERROR without sample extensions
+
+layout(max_vertices = 200) out; // matching redecl
+
+layout(location = 7, component = 2) in float comp[]; // ERROR, es has no component
+
+void notHere()
+{
+ gl_MaxGeometryVaryingComponents; // ERROR, not in ES
+ gl_VerticesIn; // ERROR, not in ES
+}
+
+void pointSize2()
+{
+ highp float ps = gl_in[3].gl_PointSize; // ERROR, need extension
+ gl_PointSize = ps; // ERROR, need extension
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/320.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/320.tesc
new file mode 100644
index 00000000000..4fa20f63844
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/320.tesc
@@ -0,0 +1,150 @@
+#version 320 es
+
+layout(vertices = 4) out;
+out int outa[gl_out.length()];
+
+layout(quads) in; // ERROR
+layout(ccw) out; // ERROR
+layout(fractional_even_spacing) in; // ERROR
+
+patch in vec4 patchIn; // ERROR
+patch out vec4 patchOut;
+
+void main()
+{
+ barrier();
+
+ int a = gl_MaxTessControlInputComponents +
+ gl_MaxTessControlOutputComponents +
+ gl_MaxTessControlTextureImageUnits +
+ gl_MaxTessControlUniformComponents +
+ gl_MaxTessControlTotalOutputComponents;
+
+ vec4 p = gl_in[1].gl_Position;
+ float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension
+ float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES
+
+ int pvi = gl_PatchVerticesIn;
+ int pid = gl_PrimitiveID;
+ int iid = gl_InvocationID;
+
+ gl_out[gl_InvocationID].gl_Position = p;
+ gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension
+ gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; // ERROR, not in ES
+
+ gl_TessLevelOuter[3] = 3.2;
+ gl_TessLevelInner[1] = 1.3;
+
+ if (a > 10)
+ barrier(); // ERROR
+ else
+ barrier(); // ERROR
+
+ barrier();
+
+ do {
+ barrier(); // ERROR
+ } while (a > 10);
+
+ switch (a) {
+ default:
+ barrier(); // ERROR
+ break;
+ }
+ a < 12 ? a : (barrier(), a); // ERROR
+ {
+ barrier();
+ }
+
+ return;
+
+ barrier(); // ERROR
+}
+
+layout(vertices = 4) in; // ERROR, not on in
+layout(vertices = 5) out; // ERROR, changing #
+
+void foo()
+{
+ gl_out[4].gl_Position; // ERROR, out of range
+
+ barrier(); // ERROR, not in main
+}
+
+in vec2 ina; // ERROR, not array
+in vec2 inb[];
+in vec2 inc[18]; // ERROR, wrong size
+in vec2 ind[gl_MaxPatchVertices];
+patch out float implA[]; // ERROR, not sized
+
+#extension GL_ARB_separate_shader_objects : enable
+
+layout(location = 3) in vec4 ivla[];
+layout(location = 4) in vec4 ivlb[];
+layout(location = 4) in vec4 ivlc[]; // ERROR, overlapping
+
+layout(location = 3) out vec4 ovla[];
+layout(location = 4) out vec4 ovlb[];
+layout(location = 4) out vec4 ovlc[]; // ERROR, overlapping
+
+patch out pinbn {
+ int a;
+} pinbi;
+
+centroid out vec3 myColor2[];
+centroid in vec3 centr[];
+sample out vec4 perSampleColor[];
+
+layout(vertices = 4) out float badlay[]; // ERROR, not on a variable
+out float misSized[5]; // ERROR, size doesn't match
+out float okaySize[4];
+
+void pointSize2()
+{
+ float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension
+ gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension
+}
+
+precise vec3 pv3;
+
+void goodfoop()
+{
+ precise float d;
+
+ pv3 *= pv3;
+ pv3 = fma(pv3, pv3, pv3);
+ d = fma(d, d, d);
+}
+
+void bb()
+{
+ gl_BoundingBoxOES[0] = vec4(0.0);
+ gl_BoundingBoxOES[1] = vec4(1.0);
+ gl_BoundingBoxOES[2] = vec4(2.0); // ERROR, overflow
+}
+
+out patch badpatchBName { // ERROR, array size required
+ float f;
+} badpatchIName[];
+
+out patch patchBName {
+ float f;
+} patchIName[4];
+
+void outputtingOutparam(out int a)
+{
+ a = 2;
+}
+
+void outputting()
+{
+ outa[gl_InvocationID] = 2;
+ outa[1] = 2; // ERROR, not gl_InvocationID
+ gl_out[0].gl_Position = vec4(1.0); // ERROR, not gl_InvocationID
+ outa[1];
+ gl_out[0];
+ outputtingOutparam(outa[0]); // ERROR, not gl_InvocationID
+ outputtingOutparam(outa[gl_InvocationID]);
+ patchIName[1].f = 3.14;
+ outa[(gl_InvocationID)] = 2;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/320.tese b/3rdparty/bgfx/3rdparty/glslang/Test/320.tese
new file mode 100644
index 00000000000..b1507d9f907
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/320.tese
@@ -0,0 +1,114 @@
+#version 320 es
+
+layout(vertices = 4) out; // ERROR
+layout(quads, cw) in;
+layout(triangles) in; // ERROR
+layout(isolines) in; // ERROR
+
+layout(ccw) in; // ERROR
+layout(cw) in;
+
+layout(fractional_odd_spacing) in;
+layout(equal_spacing) in; // ERROR
+layout(fractional_even_spacing) in; // ERROR
+
+layout(point_mode) in;
+
+patch in vec4 patchIn;
+patch out vec4 patchOut; // ERROR
+
+void main()
+{
+ barrier(); // ERROR
+
+ int a = gl_MaxTessEvaluationInputComponents +
+ gl_MaxTessEvaluationOutputComponents +
+ gl_MaxTessEvaluationTextureImageUnits +
+ gl_MaxTessEvaluationUniformComponents +
+ gl_MaxTessPatchComponents +
+ gl_MaxPatchVertices +
+ gl_MaxTessGenLevel;
+
+ vec4 p = gl_in[1].gl_Position;
+ float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension
+ float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES
+
+ int pvi = gl_PatchVerticesIn;
+ int pid = gl_PrimitiveID;
+ vec3 tc = gl_TessCoord;
+ float tlo = gl_TessLevelOuter[3];
+ float tli = gl_TessLevelInner[1];
+
+ gl_Position = p;
+ gl_PointSize = ps; // ERROR, need point_size extension
+ gl_ClipDistance[2] = cd; // ERROR, not in ES
+}
+
+smooth patch in vec4 badp1; // ERROR
+flat patch in vec4 badp2; // ERROR
+noperspective patch in vec4 badp3; // ERROR
+patch sample in vec3 badp4; // ERROR
+
+#extension GL_ARB_separate_shader_objects : enable
+
+in gl_PerVertex // ERROR, no size
+{
+ vec4 gl_Position;
+} gl_in[];
+
+in gl_PerVertex // ERROR, second redeclaration of gl_in
+{
+ vec4 gl_Position;
+} gl_in[];
+
+layout(quads, cw) out; // ERROR
+layout(triangles) out; // ERROR
+layout(isolines) out; // ERROR
+layout(cw) out; // ERROR
+layout(fractional_odd_spacing) out; // ERROR
+layout(equal_spacing) out; // ERROR
+layout(fractional_even_spacing) out; // ERROR
+layout(point_mode) out; // ERROR
+
+in vec2 ina; // ERROR, not array
+in vec2 inb[];
+in vec2 inc[18]; // ERROR, wrong size
+in vec2 ind[gl_MaxPatchVertices];
+
+in testbla { // ERROR, not array
+ int f;
+} bla;
+
+in testblb {
+ int f;
+} blb[];
+
+in testblc { // ERROR wrong size
+ int f;
+} blc[18];
+
+in testbld {
+ int f;
+} bld[gl_MaxPatchVertices];
+
+layout(location = 23) in vec4 ivla[];
+layout(location = 24) in vec4 ivlb[];
+layout(location = 24) in vec4 ivlc[]; // ERROR, overlap
+
+layout(location = 23) out vec4 ovla[2];
+layout(location = 24) out vec4 ovlb[2]; // ERROR, overlap
+
+in float gl_TessLevelOuter[4]; // ERROR, can't redeclare
+
+patch in pinbn {
+ int a;
+} pinbi;
+
+centroid out vec3 myColor2;
+centroid in vec3 centr[];
+sample out vec4 perSampleColor;
+
+void bbbad()
+{
+ gl_BoundingBoxOES; // ERROR, wrong stage
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/320.vert b/3rdparty/bgfx/3rdparty/glslang/Test/320.vert
new file mode 100644
index 00000000000..42f1515ccfd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/320.vert
@@ -0,0 +1,255 @@
+#version 320 es
+
+out outbname {
+ int a;
+ out vec4 v;
+ highp sampler2D s; // ERROR, opaque type
+} outbinst;
+
+out outbname2 {
+ layout(location = 12) int aAnon;
+ layout(location = 13) vec4 vAnon;
+};
+
+layout(location = 12) out highp int aliased; // ERROR, aliasing location
+
+in inbname { int a; } inbinst; // ERROR, no in block in vertex shader
+
+out gl_PerVertex { // ERROR, has extra member
+ highp vec4 gl_Position;
+ highp vec4 t;
+};
+
+void main()
+{
+ int sum = gl_VertexID +
+ gl_InstanceID;
+ gl_Position = vec4(1.0);
+ gl_PointSize = 2.0; // ERROR, removed by redeclaration
+}
+
+out gl_PerVertex { // ERROR, already used and already redeclared
+ highp vec4 gl_Position;
+ highp vec4 t;
+};
+
+smooth out smo { // ERROR, no smooth on a block
+ int i;
+} smon;
+
+flat out fmo { // ERROR, no flat on a block
+ int i;
+} fmon;
+
+centroid out cmo { // ERROR, no centroid on a block
+ int i;
+} cmon;
+
+invariant out imo { // ERROR, no invariant on a block
+ int i;
+} imon;
+
+in vec2 inf, ing;
+uniform ivec2 offsets[4];
+uniform sampler2D sArray[4];
+uniform int sIndex;
+layout(binding = 0) uniform atomic_uint auArray[2];
+uniform ubName { int i; } ubInst[4];
+buffer bbName { int i; } bbInst[4];
+highp uniform writeonly image2D iArray[5];
+const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4));
+
+void pfoo()
+{
+ precise vec2 h;
+ h = fma(inf, ing, h);
+ sArray[sIndex + 1];
+ ubInst[sIndex + 1];
+ bbInst[sIndex - 2]; // ERROR, still not supported
+ iArray[2];
+ iArray[sIndex - 2];
+ textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf));
+ textureGatherOffsets(sArray[0], vec2(0.1), constOffsets);
+ textureGatherOffsets(sArray[0], vec2(0.1), offsets); // ERROR, offset not constant
+}
+
+uniform samplerBuffer noPreSamp1; // ERROR, no default precision
+uniform isamplerBuffer noPreSamp2; // ERROR, no default precision
+uniform usamplerBuffer noPreSamp3; // ERROR, no default precision
+uniform writeonly imageBuffer noPreSamp4; // ERROR, no default precision
+uniform writeonly iimageBuffer noPreSamp5; // ERROR, no default precision
+uniform writeonly uimageBuffer noPreSamp6; // ERROR, no default precision
+
+precision highp samplerBuffer;
+precision highp isamplerBuffer;
+precision highp usamplerBuffer;
+precision highp imageBuffer;
+precision highp iimageBuffer;
+precision highp uimageBuffer;
+
+#ifdef GL_OES_texture_buffer
+uniform samplerBuffer bufSamp1;
+uniform isamplerBuffer bufSamp2;
+uniform usamplerBuffer bufSamp3;
+#endif
+#ifdef GL_EXT_texture_buffer
+uniform writeonly imageBuffer bufSamp4;
+uniform writeonly iimageBuffer bufSamp5;
+uniform writeonly uimageBuffer bufSamp6;
+#endif
+
+void bufferT()
+{
+ highp int s1 = textureSize(bufSamp1);
+ highp int s2 = textureSize(bufSamp2);
+ highp int s3 = textureSize(bufSamp3);
+
+ highp int s4 = imageSize(bufSamp4);
+ highp int s5 = imageSize(bufSamp5);
+ highp int s6 = imageSize(bufSamp6);
+
+ highp vec4 f1 = texelFetch(bufSamp1, s1);
+ highp ivec4 f2 = texelFetch(bufSamp2, s2);
+ highp uvec4 f3 = texelFetch(bufSamp3, s3);
+}
+
+uniform writeonly imageCubeArray noPreCA1; // ERROR, no default precision
+uniform writeonly iimageCubeArray noPreCA2; // ERROR, no default precision
+uniform writeonly uimageCubeArray noPreCA3; // ERROR, no default precision
+
+uniform samplerCubeArray noPreCA4; // ERROR, no default precision
+uniform samplerCubeArrayShadow noPreCA5; // ERROR, no default precision
+uniform isamplerCubeArray noPreCA6; // ERROR, no default precision
+uniform usamplerCubeArray noPreCA7; // ERROR, no default precision
+
+precision highp imageCubeArray ;
+precision highp iimageCubeArray ;
+precision highp uimageCubeArray ;
+
+precision highp samplerCubeArray ;
+precision highp samplerCubeArrayShadow;
+precision highp isamplerCubeArray ;
+precision highp usamplerCubeArray ;
+
+uniform writeonly imageCubeArray CA1;
+uniform writeonly iimageCubeArray CA2;
+uniform writeonly uimageCubeArray CA3;
+
+layout(rgba16f) uniform readonly imageCubeArray rCA1;
+layout(rgba32i) uniform readonly iimageCubeArray rCA2;
+layout(r32ui) uniform readonly uimageCubeArray rCA3;
+
+#ifdef GL_OES_texture_cube_map_array
+uniform samplerCubeArray CA4;
+uniform samplerCubeArrayShadow CA5;
+uniform isamplerCubeArray CA6;
+uniform usamplerCubeArray CA7;
+#endif
+
+void CAT()
+{
+ highp ivec3 s4 = textureSize(CA4, 1);
+ highp ivec3 s5 = textureSize(CA5, 1);
+ highp ivec3 s6 = textureSize(CA6, 1);
+ highp ivec3 s7 = textureSize(CA7, 1);
+
+ highp vec4 t4 = texture(CA4, vec4(0.5));
+ highp float t5 = texture(CA5, vec4(0.5), 3.0);
+ highp ivec4 t6 = texture(CA6, vec4(0.5));
+ highp uvec4 t7 = texture(CA7, vec4(0.5));
+
+ highp vec4 L4 = textureLod(CA4, vec4(0.5), 0.24);
+ highp ivec4 L6 = textureLod(CA6, vec4(0.5), 0.26);
+ highp uvec4 L7 = textureLod(CA7, vec4(0.5), 0.27);
+
+ highp vec4 g4 = textureGrad(CA4, vec4(0.5), vec3(0.1), vec3(0.2));
+ highp ivec4 g6 = textureGrad(CA6, vec4(0.5), vec3(0.1), vec3(0.2));
+ highp uvec4 g7 = textureGrad(CA7, vec4(0.5), vec3(0.1), vec3(0.2));
+
+ highp vec4 gath4 = textureGather(CA4, vec4(0.5));
+ highp vec4 gathC4 = textureGather(CA4, vec4(0.5), 2);
+ highp ivec4 gath6 = textureGather(CA6, vec4(0.5));
+ highp ivec4 gathC6 = textureGather(CA6, vec4(0.5), 1);
+ highp uvec4 gath7 = textureGather(CA7, vec4(0.5));
+ highp uvec4 gathC7 = textureGather(CA7, vec4(0.5), 0);
+
+ highp vec4 gath5 = textureGather(CA5, vec4(0.5), 2.5);
+
+ highp ivec3 s1 = imageSize(CA1);
+ highp ivec3 s2 = imageSize(CA2);
+ highp ivec3 s3 = imageSize(CA3);
+
+ imageStore(CA1, s3, vec4(1));
+ imageStore(CA2, s3, ivec4(1));
+ imageStore(CA3, s3, uvec4(1));
+
+ highp vec4 cl1 = imageLoad(rCA1, s3);
+ highp ivec4 cl2 = imageLoad(rCA2, s3);
+ highp uvec4 cl3 = imageLoad(rCA3, s3);
+}
+
+uniform sampler2DMSArray noPrec2DMS; // ERROR, no default
+uniform isampler2DMSArray noPrec2DMSi; // ERROR, no default
+uniform usampler2DMSArray noPrec2DMSu; // ERROR, no default
+
+precision highp sampler2DMSArray;
+precision highp isampler2DMSArray;
+precision highp usampler2DMSArray;
+
+uniform sampler2DMSArray samp2DMSA;
+uniform isampler2DMSArray samp2DMSAi;
+uniform usampler2DMSArray samp2DMSAu;
+
+void MSA()
+{
+ vec4 tf = texelFetch(samp2DMSA, ivec3(5), 2);
+ ivec4 tfi = texelFetch(samp2DMSAi, ivec3(5), 2);
+ uvec4 tfu = texelFetch(samp2DMSAu, ivec3(5), 2);
+
+ ivec3 tfs = textureSize(samp2DMSA);
+ ivec3 tfsi = textureSize(samp2DMSAi);
+ ivec3 tfsb = textureSize(samp2DMSAi, 4); // ERROR, no lod
+ ivec3 tfsu = textureSize(samp2DMSAu);
+}
+
+uniform layout(r32f) highp image2D im2Df;
+uniform layout(r32ui) highp uimage2D im2Du;
+uniform layout(r32i) highp iimage2D im2Di;
+uniform ivec2 P;
+
+void goodImageAtom()
+{
+ float datf;
+ int dati;
+ uint datu;
+
+ imageAtomicAdd( im2Di, P, dati);
+ imageAtomicAdd( im2Du, P, datu);
+ imageAtomicMin( im2Di, P, dati);
+ imageAtomicMin( im2Du, P, datu);
+ imageAtomicMax( im2Di, P, dati);
+ imageAtomicMax( im2Du, P, datu);
+ imageAtomicAnd( im2Di, P, dati);
+ imageAtomicAnd( im2Du, P, datu);
+ imageAtomicOr( im2Di, P, dati);
+ imageAtomicOr( im2Du, P, datu);
+ imageAtomicXor( im2Di, P, dati);
+ imageAtomicXor( im2Du, P, datu);
+ imageAtomicExchange(im2Di, P, dati);
+ imageAtomicExchange(im2Du, P, datu);
+ imageAtomicExchange(im2Df, P, datf);
+ imageAtomicCompSwap(im2Di, P, 3, dati);
+ imageAtomicCompSwap(im2Du, P, 5u, datu);
+}
+
+sample out vec4 colorSample;
+flat sample out vec4 colorfsi;
+sample out vec3 sampInArray[4];
+in vec4 inv4;
+
+void badInterp()
+{
+ interpolateAtCentroid(inv4); // ERROR, wrong stage
+ interpolateAtSample(inv4, 1); // ERROR, need extension
+ interpolateAtOffset(inv4, vec2(0.2)); // ERROR, need extension
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/400.frag b/3rdparty/bgfx/3rdparty/glslang/Test/400.frag
index b7460b4a077..039d4809f1c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/400.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/400.frag
@@ -184,10 +184,8 @@ void qlod()
lod = textureQueryLod(sampRect, pf2); // ERROR
}
-struct SKeyMem { int precise; } KeyMem; // ERROR, keyword can't be a member
-
uniform uint uu;
-out int iout;
+out uint iout;
void bitwiseConv()
{
@@ -195,3 +193,9 @@ void bitwiseConv()
iout += uu ^ i;
iout += i | uu;
}
+
+subroutine(subT1, subT2);
+subroutine float subT1() { return 1.0; }
+subroutine float subT2() { return 1.0; }
+
+struct SKeyMem { int precise; } KeyMem; // ERROR, keyword can't be a member
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/435.vert b/3rdparty/bgfx/3rdparty/glslang/Test/435.vert
new file mode 100644
index 00000000000..bf27ce9673c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/435.vert
@@ -0,0 +1,2 @@
+#version 435
+void main() {} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/450.comp b/3rdparty/bgfx/3rdparty/glslang/Test/450.comp
index 7f723ec0fe2..fb2b56a771f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/450.comp
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/450.comp
@@ -1 +1,6 @@
#version 450 core
+layout(local_size_x = 0) in; // ERROR, 0 not allowed
+void main()
+{
+ shared float f; // ERROR shared must be global
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/450.frag b/3rdparty/bgfx/3rdparty/glslang/Test/450.frag
index 04f3aa1ca25..076d0b3a965 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/450.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/450.frag
@@ -54,3 +54,15 @@ float cull(int i)
{
return (i >= 6) ? gl_CullDistance[5] : gl_CullDistance[i];
}
+
+layout(location = 6) in bName1 {
+ float f;
+ layout(location = 7) float g;
+ mat4 m;
+} bInst1;
+layout(location = 12) in bName2 {
+ float f;
+ layout(location = 13) float g; // ERROR, location on array
+} bInst2[3];
+
+layout(early_fragment_tests) in float f; // ERROR, must be standalone
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/450.geom b/3rdparty/bgfx/3rdparty/glslang/Test/450.geom
index af676813786..45cbecba566 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/450.geom
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/450.geom
@@ -8,7 +8,12 @@ out gl_PerVertex {
float gl_CullDistance[3];
};
+layout(triangles) in;
+
void main()
{
+ gl_in[3].gl_Position; // ERROR, out of range
gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
}
+
+layout(points) in float f[3]; // ERROR, must be standalone
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/450.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/450.tesc
index 75a9bf46926..bf5c08373b2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/450.tesc
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/450.tesc
@@ -12,3 +12,12 @@ void main()
{
gl_out[gl_InvocationID].gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
}
+
+layout(location = 4) out bName1 {
+ float f;
+ layout(location = 5) float g;
+} bInst1[2];
+layout(location = 6) out bName2 {
+ float f;
+ layout(location = 7) float g; // ERROR, location on array
+} bInst2[2][3];
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/450.tese b/3rdparty/bgfx/3rdparty/glslang/Test/450.tese
index 61447931c8d..8cdeb207221 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/450.tese
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/450.tese
@@ -12,3 +12,10 @@ void main()
{
gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
}
+
+layout(equal_spacing) in float f1[]; // ERROR, must be standalone
+layout(fractional_even_spacing) in float f2[]; // ERROR, must be standalone
+layout(fractional_odd_spacing) in float f3[]; // ERROR, must be standalone
+layout(cw) in float f4[]; // ERROR, must be standalone
+layout(ccw) in float f5[]; // ERROR, must be standalone
+layout(point_mode) in float f6[]; // ERROR, must be standalone
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/450.vert b/3rdparty/bgfx/3rdparty/glslang/Test/450.vert
index 0834d165e88..51e9b100430 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/450.vert
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/450.vert
@@ -22,7 +22,27 @@ out SA outSA;
struct SS { float f; S s; };
out SS outSS;
+layout(binding = 0) uniform atomic_uint aui;
+uint ui;
+
void foo()
{
SS::f;
+ atomicCounterAdd(aui, ui); // ERROR, need 4.6
+ atomicCounterSubtract(aui, ui); // ERROR, need 4.6
+ atomicCounterMin(aui, ui); // ERROR, need 4.6
+ atomicCounterMax(aui, ui); // ERROR, need 4.6
+ atomicCounterAnd(aui, ui); // ERROR, need 4.6
+ atomicCounterOr(aui, ui); // ERROR, need 4.6
+ atomicCounterXor(aui, ui); // ERROR, need 4.6
+ atomicCounterExchange(aui, ui); // ERROR, need 4.6
+ atomicCounterCompSwap(aui, ui, ui); // ERROR, need 4.6
+
+ int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID; // ERROR, need 4.6
+
+ bool b1;
+ anyInvocation(b1); // ERROR, need 4.6
+ allInvocations(b1); // ERROR, need 4.6
+ allInvocationsEqual(b1); // ERROR, need 4.6
}
+; // ERROR: no extraneous semicolons
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/460.frag b/3rdparty/bgfx/3rdparty/glslang/Test/460.frag
new file mode 100644
index 00000000000..43a7c3b3894
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/460.frag
@@ -0,0 +1,17 @@
+#version 460 core
+
+struct S {
+ float f;
+ vec4 v;
+};
+
+in S s;
+
+void main()
+{
+ interpolateAtCentroid(s.v);
+ bool b1;
+ b1 = anyInvocation(b1);
+ b1 = allInvocations(b1);
+ b1 = allInvocationsEqual(b1);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/460.vert b/3rdparty/bgfx/3rdparty/glslang/Test/460.vert
new file mode 100644
index 00000000000..fd87d8b1177
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/460.vert
@@ -0,0 +1,15 @@
+#version 460 core
+
+int i;
+; // extraneous semicolon okay
+float f;;;
+
+void main()
+{
+ bool b1;
+ b1 = anyInvocation(b1);
+ b1 = allInvocations(b1);
+ b1 = allInvocationsEqual(b1);
+}
+;
+;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/bar.h b/3rdparty/bgfx/3rdparty/glslang/Test/bar.h
new file mode 100644
index 00000000000..c206a325daa
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/bar.h
@@ -0,0 +1 @@
+float4 i1;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.aliasOpaque.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
new file mode 100644
index 00000000000..779d5e1d25a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
@@ -0,0 +1,50 @@
+hlsl.aliasOpaque.frag
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 81
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 57
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 37 "gss2"
+ Name 39 "gss"
+ Name 43 "gtex"
+ Name 57 "@entryPointOutput"
+ Decorate 37(gss2) DescriptorSet 0
+ Decorate 39(gss) DescriptorSet 0
+ Decorate 43(gtex) DescriptorSet 0
+ Decorate 57(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeSampler
+ 8: TypeFloat 32
+ 10: TypeImage 8(float) 2D sampled format:Unknown
+ 12: TypeVector 8(float) 4
+ 25: TypeSampledImage 10
+ 27: TypeVector 8(float) 2
+ 28: 8(float) Constant 1045220557
+ 29: 8(float) Constant 1050253722
+ 30: 27(fvec2) ConstantComposite 28 29
+ 36: TypePointer UniformConstant 6
+ 37(gss2): 36(ptr) Variable UniformConstant
+ 39(gss): 36(ptr) Variable UniformConstant
+ 42: TypePointer UniformConstant 10
+ 43(gtex): 42(ptr) Variable UniformConstant
+ 46: 8(float) Constant 1077936128
+ 56: TypePointer Output 12(fvec4)
+57(@entryPointOutput): 56(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 68: 6 Load 39(gss)
+ 69: 10 Load 43(gtex)
+ 78: 25 SampledImage 69 68
+ 79: 12(fvec4) ImageSampleImplicitLod 78 30
+ 80: 12(fvec4) VectorTimesScalar 79 46
+ Store 57(@entryPointOutput) 80
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaque.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
new file mode 100644
index 00000000000..3c7d19831b6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
@@ -0,0 +1,65 @@
+hlsl.flattenOpaque.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 144
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 97
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 38 "tex"
+ Name 70 "s.s2D"
+ Name 79 "s2.s2D"
+ Name 80 "s2.tex"
+ Name 97 "@entryPointOutput"
+ Decorate 38(tex) DescriptorSet 0
+ Decorate 70(s.s2D) DescriptorSet 0
+ Decorate 79(s2.s2D) DescriptorSet 0
+ Decorate 80(s2.tex) DescriptorSet 0
+ Decorate 97(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeSampler
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 4
+ 14: TypeVector 8(float) 2
+ 21: TypeImage 8(float) 2D sampled format:Unknown
+ 37: TypePointer UniformConstant 21
+ 38(tex): 37(ptr) Variable UniformConstant
+ 41: TypeSampledImage 21
+ 43: 8(float) Constant 1045220557
+ 44: 8(float) Constant 1050253722
+ 45: 14(fvec2) ConstantComposite 43 44
+ 69: TypePointer UniformConstant 6
+ 70(s.s2D): 69(ptr) Variable UniformConstant
+ 79(s2.s2D): 69(ptr) Variable UniformConstant
+ 80(s2.tex): 37(ptr) Variable UniformConstant
+ 96: TypePointer Output 9(fvec4)
+97(@entryPointOutput): 96(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 109: 6 Load 70(s.s2D)
+ 123: 21 Load 38(tex)
+ 125: 41 SampledImage 123 109
+ 126: 9(fvec4) ImageSampleImplicitLod 125 45
+ 111: 6 Load 70(s.s2D)
+ 128: 21 Load 38(tex)
+ 130: 41 SampledImage 128 111
+ 132: 9(fvec4) ImageSampleImplicitLod 130 45
+ 113: 9(fvec4) FAdd 126 132
+ 114: 6 Load 79(s2.s2D)
+ 115: 21 Load 80(s2.tex)
+ 136: 41 SampledImage 115 114
+ 137: 9(fvec4) ImageSampleImplicitLod 136 45
+ 117: 9(fvec4) FAdd 113 137
+ 118: 6 Load 79(s2.s2D)
+ 119: 21 Load 80(s2.tex)
+ 141: 41 SampledImage 119 118
+ 143: 9(fvec4) ImageSampleImplicitLod 141 45
+ 121: 9(fvec4) FAdd 117 143
+ Store 97(@entryPointOutput) 121
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
new file mode 100644
index 00000000000..4aef8741631
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
@@ -0,0 +1,49 @@
+hlsl.flattenOpaqueInit.vert
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 125
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 82
+ Source HLSL 500
+ Name 4 "main"
+ Name 17 "FxaaTex"
+ MemberName 17(FxaaTex) 0 "smpl"
+ MemberName 17(FxaaTex) 1 "tex"
+ Name 38 "g_tInputTexture_sampler"
+ Name 42 "g_tInputTexture"
+ Name 82 "@entryPointOutput"
+ Decorate 38(g_tInputTexture_sampler) DescriptorSet 0
+ Decorate 42(g_tInputTexture) DescriptorSet 0
+ Decorate 82(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeSampler
+ 8: TypeFloat 32
+ 9: TypeImage 8(float) 2D sampled format:Unknown
+ 11: TypeVector 8(float) 4
+ 17(FxaaTex): TypeStruct 6 9
+ 26: TypeSampledImage 9
+ 28: TypeVector 8(float) 2
+ 29: 8(float) Constant 1050253722
+ 30: 8(float) Constant 1053609165
+ 31: 28(fvec2) ConstantComposite 29 30
+ 32: 8(float) Constant 0
+ 37: TypePointer UniformConstant 6
+38(g_tInputTexture_sampler): 37(ptr) Variable UniformConstant
+ 41: TypePointer UniformConstant 9
+42(g_tInputTexture): 41(ptr) Variable UniformConstant
+ 81: TypePointer Output 11(fvec4)
+82(@entryPointOutput): 81(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 96: 6 Load 38(g_tInputTexture_sampler)
+ 97: 9 Load 42(g_tInputTexture)
+ 123: 26 SampledImage 97 96
+ 124: 11(fvec4) ImageSampleExplicitLod 123 31 Lod 32
+ Store 82(@entryPointOutput) 124
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
new file mode 100644
index 00000000000..0b056158271
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
@@ -0,0 +1,49 @@
+hlsl.flattenOpaqueInitMix.vert
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 100
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 68
+ Source HLSL 500
+ Name 4 "main"
+ Name 34 "FxaaTex"
+ MemberName 34(FxaaTex) 0 "smpl"
+ MemberName 34(FxaaTex) 1 "tex"
+ MemberName 34(FxaaTex) 2 "f"
+ Name 38 "g_tInputTexture_sampler"
+ Name 41 "g_tInputTexture"
+ Name 68 "@entryPointOutput"
+ Decorate 38(g_tInputTexture_sampler) DescriptorSet 0
+ Decorate 41(g_tInputTexture) DescriptorSet 0
+ Decorate 68(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeSampler
+ 8: TypeFloat 32
+ 9: TypeImage 8(float) 2D sampled format:Unknown
+ 12: TypeVector 8(float) 4
+ 24: TypeSampledImage 9
+ 28: TypeVector 8(float) 2
+ 30: 8(float) Constant 0
+ 34(FxaaTex): TypeStruct 6 9 8(float)
+ 37: TypePointer UniformConstant 6
+38(g_tInputTexture_sampler): 37(ptr) Variable UniformConstant
+ 40: TypePointer UniformConstant 9
+41(g_tInputTexture): 40(ptr) Variable UniformConstant
+ 43: 8(float) Constant 1056964608
+ 67: TypePointer Output 12(fvec4)
+68(@entryPointOutput): 67(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 79: 6 Load 38(g_tInputTexture_sampler)
+ 80: 9 Load 41(g_tInputTexture)
+ 95: 24 SampledImage 80 79
+ 98: 28(fvec2) CompositeConstruct 43 43
+ 99: 12(fvec4) ImageSampleExplicitLod 95 98 Lod 30
+ Store 68(@entryPointOutput) 99
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset.frag.out
new file mode 100644
index 00000000000..20aedec26f4
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset.frag.out
@@ -0,0 +1,48 @@
+hlsl.flattenSubset.frag
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 85
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 54 57
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 17 "samp"
+ Name 41 "tex"
+ Name 54 "vpos"
+ Name 57 "@entryPointOutput"
+ Decorate 17(samp) DescriptorSet 0
+ Decorate 41(tex) DescriptorSet 0
+ Decorate 54(vpos) Location 0
+ Decorate 57(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 13: TypeSampler
+ 16: TypePointer UniformConstant 13
+ 17(samp): 16(ptr) Variable UniformConstant
+ 39: TypeImage 6(float) 2D sampled format:Unknown
+ 40: TypePointer UniformConstant 39
+ 41(tex): 40(ptr) Variable UniformConstant
+ 44: TypeSampledImage 39
+ 46: TypeVector 6(float) 2
+ 47: 6(float) Constant 1056964608
+ 48: 46(fvec2) ConstantComposite 47 47
+ 53: TypePointer Input 7(fvec4)
+ 54(vpos): 53(ptr) Variable Input
+ 56: TypePointer Output 7(fvec4)
+57(@entryPointOutput): 56(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 74: 13 Load 17(samp)
+ 81: 39 Load 41(tex)
+ 83: 44 SampledImage 81 74
+ 84: 7(fvec4) ImageSampleImplicitLod 83 48
+ Store 57(@entryPointOutput) 84
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
new file mode 100644
index 00000000000..724ae7bf9b5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
@@ -0,0 +1,37 @@
+hlsl.flattenSubset2.frag
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 44
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 40 43
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 31 "someTex"
+ Name 40 "vpos"
+ Name 43 "@entryPointOutput"
+ Decorate 31(someTex) DescriptorSet 0
+ Decorate 40(vpos) Location 0
+ Decorate 43(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 17: TypeImage 6(float) 2D sampled format:Unknown
+ 30: TypePointer UniformConstant 17
+ 31(someTex): 30(ptr) Variable UniformConstant
+ 34: 6(float) Constant 0
+ 35: 7(fvec4) ConstantComposite 34 34 34 34
+ 39: TypePointer Input 7(fvec4)
+ 40(vpos): 39(ptr) Variable Input
+ 42: TypePointer Output 7(fvec4)
+43(@entryPointOutput): 42(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ Store 43(@entryPointOutput) 35
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
new file mode 100644
index 00000000000..ed3102e1810
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
@@ -0,0 +1,91 @@
+hlsl.partialFlattenLocal.vert
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 148
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 90 93
+ Source HLSL 500
+ Name 4 "main"
+ Name 17 "tex"
+ Name 90 "pos"
+ Name 93 "@entryPointOutput"
+ Decorate 17(tex) DescriptorSet 0
+ Decorate 90(pos) Location 0
+ Decorate 93(@entryPointOutput) BuiltIn Position
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 13: TypeImage 6(float) 2D sampled format:Unknown
+ 16: TypePointer UniformConstant 13
+ 17(tex): 16(ptr) Variable UniformConstant
+ 19: TypeVector 6(float) 3
+ 20: TypeInt 32 0
+ 21: 20(int) Constant 3
+ 22: TypeArray 19(fvec3) 21
+ 23: TypePointer Function 22
+ 25: TypeInt 32 1
+ 26: 25(int) Constant 0
+ 27: 6(float) Constant 0
+ 28: 19(fvec3) ConstantComposite 27 27 27
+ 29: TypePointer Function 19(fvec3)
+ 31: TypeVector 6(float) 2
+ 32: 20(int) Constant 2
+ 33: TypeArray 31(fvec2) 32
+ 34: TypePointer Function 33
+ 36: 6(float) Constant 1065353216
+ 37: 31(fvec2) ConstantComposite 27 36
+ 38: TypePointer Function 31(fvec2)
+ 52: 25(int) Constant 1
+ 53: TypeBool
+ 89: TypePointer Input 7(fvec4)
+ 90(pos): 89(ptr) Variable Input
+ 92: TypePointer Output 7(fvec4)
+93(@entryPointOutput): 92(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 98: 23(ptr) Variable Function
+ 99: 34(ptr) Variable Function
+ 91: 7(fvec4) Load 90(pos)
+ 110: 29(ptr) AccessChain 98 26
+ Store 110 28
+ 111: 38(ptr) AccessChain 99 26
+ Store 111 37
+ Branch 112
+ 112: Label
+ 147: 25(int) Phi 26 5 131 114
+ LoopMerge 113 114 None
+ Branch 115
+ 115: Label
+ 117: 53(bool) SLessThan 147 52
+ BranchConditional 117 118 113
+ 118: Label
+ 121: 38(ptr) AccessChain 99 147
+ 122: 31(fvec2) Load 121
+ 123: 29(ptr) AccessChain 98 147
+ 124: 19(fvec3) Load 123
+ 125: 31(fvec2) VectorShuffle 124 124 0 1
+ 126: 31(fvec2) FAdd 125 122
+ 127: 29(ptr) AccessChain 98 147
+ 128: 19(fvec3) Load 127
+ 129: 19(fvec3) VectorShuffle 128 126 3 4 2
+ Store 127 129
+ Branch 114
+ 114: Label
+ 131: 25(int) IAdd 147 52
+ Branch 112
+ 113: Label
+ 133: 22 Load 98
+ 146: 19(fvec3) CompositeExtract 133 0
+ 140: 6(float) CompositeExtract 146 0
+ 141: 6(float) CompositeExtract 146 1
+ 142: 6(float) CompositeExtract 146 2
+ 143: 7(fvec4) CompositeConstruct 140 141 142 27
+ 144: 7(fvec4) FAdd 91 143
+ Store 93(@entryPointOutput) 144
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out
new file mode 100644
index 00000000000..d57566b349e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out
@@ -0,0 +1,38 @@
+hlsl.partialFlattenMixed.vert
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 31
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 27 30
+ Source HLSL 500
+ Name 4 "main"
+ Name 20 "tex"
+ Name 27 "pos"
+ Name 30 "@entryPointOutput"
+ Decorate 20(tex) DescriptorSet 0
+ Decorate 27(pos) Location 0
+ Decorate 30(@entryPointOutput) BuiltIn Position
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 13: TypeImage 6(float) 2D sampled format:Unknown
+ 14: TypeInt 32 0
+ 15: 14(int) Constant 2
+ 16: TypeArray 13 15
+ 19: TypePointer UniformConstant 16
+ 20(tex): 19(ptr) Variable UniformConstant
+ 26: TypePointer Input 7(fvec4)
+ 27(pos): 26(ptr) Variable Input
+ 29: TypePointer Output 7(fvec4)
+30(@entryPointOutput): 29(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 28: 7(fvec4) Load 27(pos)
+ Store 30(@entryPointOutput) 28
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/100.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/100.frag.out
index 67be9e01e2b..3464dcb5699 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/100.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/100.frag.out
@@ -84,7 +84,7 @@ ERROR: 0:194: '.' : cannot apply to an array: method
ERROR: 0:194: 'a' : can't use function syntax on variable
ERROR: 0:214: 'non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)' : not supported for this version or the enabled extensions
ERROR: 0:3000: '#error' : line of this error should be 3000
-ERROR: 0:3002: '' : syntax error
+ERROR: 0:3002: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
ERROR: 77 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/100samplerExternal.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/100samplerExternal.frag.out
new file mode 100644
index 00000000000..8b689c76194
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/100samplerExternal.frag.out
@@ -0,0 +1,172 @@
+100samplerExternal.frag
+ERROR: 0:20: 'textureSize' : no matching overloaded function found
+ERROR: 0:21: 'texture' : no matching overloaded function found
+ERROR: 0:22: 'texture' : no matching overloaded function found
+ERROR: 0:23: 'textureProj' : no matching overloaded function found
+ERROR: 0:24: 'textureProj' : no matching overloaded function found
+ERROR: 0:25: 'textureProj' : no matching overloaded function found
+ERROR: 0:26: 'textureProj' : no matching overloaded function found
+ERROR: 0:27: 'texelFetch' : no matching overloaded function found
+ERROR: 0:29: 'texture3D' : no matching overloaded function found
+ERROR: 0:30: 'texture2DProjLod' : no matching overloaded function found
+ERROR: 0:31: 'texture' : no matching overloaded function found
+ERROR: 0:32: 'textureProjLod' : no matching overloaded function found
+ERROR: 0:38: 'samplerExternalOES' : required extension not requested: GL_OES_EGL_image_external
+ERROR: 0:41: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
+ERROR: 14 compilation errors. No code generated.
+
+
+Shader version: 100
+Requested GL_OES_EGL_image_external
+Requested GL_OES_EGL_image_external_essl3
+ERROR: node is still EOpNull!
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 texture ( global lowp 4-component vector of float)
+0:12 'sExt' ( uniform lowp samplerExternalOES)
+0:12 Constant:
+0:12 0.200000
+0:12 0.200000
+0:13 texture ( global mediump 4-component vector of float)
+0:13 'mediumExt' ( uniform mediump samplerExternalOES)
+0:13 Constant:
+0:13 0.200000
+0:13 0.200000
+0:14 texture ( global highp 4-component vector of float)
+0:14 'highExt' ( uniform highp samplerExternalOES)
+0:14 Constant:
+0:14 0.200000
+0:14 0.200000
+0:15 textureProj ( global lowp 4-component vector of float)
+0:15 'sExt' ( uniform lowp samplerExternalOES)
+0:15 Constant:
+0:15 0.300000
+0:15 0.300000
+0:15 0.300000
+0:16 textureProj ( global lowp 4-component vector of float)
+0:16 'sExt' ( uniform lowp samplerExternalOES)
+0:16 Constant:
+0:16 0.300000
+0:16 0.300000
+0:16 0.300000
+0:16 0.300000
+0:18 Sequence
+0:18 move second child to first child ( temp mediump int)
+0:18 'lod' ( temp mediump int)
+0:18 Constant:
+0:18 0 (const int)
+0:19 Sequence
+0:19 move second child to first child ( temp highp float)
+0:19 'bias' ( temp highp float)
+0:19 Constant:
+0:19 0.010000
+0:20 Constant:
+0:20 0.000000
+0:21 Constant:
+0:21 0.000000
+0:22 Constant:
+0:22 0.000000
+0:23 Constant:
+0:23 0.000000
+0:24 Constant:
+0:24 0.000000
+0:25 Constant:
+0:25 0.000000
+0:26 Constant:
+0:26 0.000000
+0:27 Constant:
+0:27 0.000000
+0:29 Constant:
+0:29 0.000000
+0:30 Constant:
+0:30 0.000000
+0:31 Constant:
+0:31 0.000000
+0:32 Constant:
+0:32 0.000000
+0:? Linker Objects
+0:? 'sExt' ( uniform lowp samplerExternalOES)
+0:? 'mediumExt' ( uniform mediump samplerExternalOES)
+0:? 'highExt' ( uniform highp samplerExternalOES)
+0:? 'badExt' ( uniform mediump samplerExternalOES)
+
+
+Linked fragment stage:
+
+
+Shader version: 100
+Requested GL_OES_EGL_image_external
+Requested GL_OES_EGL_image_external_essl3
+ERROR: node is still EOpNull!
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 texture ( global lowp 4-component vector of float)
+0:12 'sExt' ( uniform lowp samplerExternalOES)
+0:12 Constant:
+0:12 0.200000
+0:12 0.200000
+0:13 texture ( global mediump 4-component vector of float)
+0:13 'mediumExt' ( uniform mediump samplerExternalOES)
+0:13 Constant:
+0:13 0.200000
+0:13 0.200000
+0:14 texture ( global highp 4-component vector of float)
+0:14 'highExt' ( uniform highp samplerExternalOES)
+0:14 Constant:
+0:14 0.200000
+0:14 0.200000
+0:15 textureProj ( global lowp 4-component vector of float)
+0:15 'sExt' ( uniform lowp samplerExternalOES)
+0:15 Constant:
+0:15 0.300000
+0:15 0.300000
+0:15 0.300000
+0:16 textureProj ( global lowp 4-component vector of float)
+0:16 'sExt' ( uniform lowp samplerExternalOES)
+0:16 Constant:
+0:16 0.300000
+0:16 0.300000
+0:16 0.300000
+0:16 0.300000
+0:18 Sequence
+0:18 move second child to first child ( temp mediump int)
+0:18 'lod' ( temp mediump int)
+0:18 Constant:
+0:18 0 (const int)
+0:19 Sequence
+0:19 move second child to first child ( temp highp float)
+0:19 'bias' ( temp highp float)
+0:19 Constant:
+0:19 0.010000
+0:20 Constant:
+0:20 0.000000
+0:21 Constant:
+0:21 0.000000
+0:22 Constant:
+0:22 0.000000
+0:23 Constant:
+0:23 0.000000
+0:24 Constant:
+0:24 0.000000
+0:25 Constant:
+0:25 0.000000
+0:26 Constant:
+0:26 0.000000
+0:27 Constant:
+0:27 0.000000
+0:29 Constant:
+0:29 0.000000
+0:30 Constant:
+0:30 0.000000
+0:31 Constant:
+0:31 0.000000
+0:32 Constant:
+0:32 0.000000
+0:? Linker Objects
+0:? 'sExt' ( uniform lowp samplerExternalOES)
+0:? 'mediumExt' ( uniform mediump samplerExternalOES)
+0:? 'highExt' ( uniform highp samplerExternalOES)
+0:? 'badExt' ( uniform mediump samplerExternalOES)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/120.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/120.frag.out
index 6a635ecd85a..b5167247527 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/120.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/120.frag.out
@@ -52,7 +52,7 @@ ERROR: 0:209: 'assign' : cannot convert from ' const float' to ' temp 4-compone
ERROR: 0:212: 'sampler2DRect' : Reserved word.
ERROR: 0:244: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' global void' and a right operand of type ' const int' (or there is no acceptable conversion)
ERROR: 0:245: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' const int' and a right operand of type ' global void' (or there is no acceptable conversion)
-ERROR: 0:248: '' : syntax error
+ERROR: 0:248: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON
ERROR: 54 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/150.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/150.tesc.out
index 526b6e7d590..25e44eddaf8 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/150.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/150.tesc.out
@@ -210,7 +210,6 @@ ERROR: node is still EOpNull!
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
400.tesc
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
@@ -442,7 +441,6 @@ ERROR: node is still EOpNull!
0:? 'badOrder' ( invariant noContraction out 4-element array of 4-component vector of float)
400.tese
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value
ERROR: 0:5: 'triangles' : cannot change previously set input primitive
ERROR: 0:6: 'isolines' : cannot change previously set input primitive
@@ -612,7 +610,6 @@ ERROR: node is still EOpNull!
0:? 'pinbi' ( patch in block{ in int a})
410.tesc
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'length' : array must first be sized by a redeclaration or layout qualifier
ERROR: 1 compilation errors. No code generated.
@@ -628,7 +625,6 @@ ERROR: node is still EOpNull!
0:? 'patchOut' ( patch out 4-component vector of float)
420.tesc
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out
ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a
ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb
@@ -747,7 +743,6 @@ ERROR: node is still EOpNull!
0:? 'vs_tcs_last' (layout( location=12) in 32-element array of 2X4 matrix of double)
420.tese
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:7: '=' : cannot convert from ' const 3-element array of float' to ' global 2-element array of float'
ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): temp 2-component vector of float
ERROR: 0:9: 'initializer list' : wrong number of matrix columns: temp 3X3 matrix of float
@@ -759,7 +754,7 @@ ERROR: 0:29: 'constructor' : cannot convert parameter 2 from ' const 2X2 matrix
ERROR: 0:29: ' const 2-element array of 4-component vector of float' : cannot construct with these arguments
ERROR: 0:29: '=' : cannot convert from ' const float' to ' global 2-element array of 4-component vector of float'
ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float
-ERROR: 0:40: 'constructor' : cannot convert parameter 1 from ' temp float' to ' temp structure{ global float s, global float t}'
+ERROR: 0:40: 'constructor' : cannot convert parameter 1 from ' const structure{ global 4-component vector of float a, global 4-component vector of float b}' to ' temp structure{ global float s, global float t}'
ERROR: 0:70: 'initializer list' : wrong number of structure members
ERROR: 13 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300.frag.out
index 371d9c2a4d8..63abec1a562 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300.frag.out
@@ -43,7 +43,7 @@ ERROR: 0:156: 'invariant' : can only apply to an output
ERROR: 0:157: 'invariant' : can only apply to an output
ERROR: 0:158: 'invariant' : can only apply to an output
ERROR: 0:160: 'imageBuffer' : Reserved word.
-ERROR: 0:160: '' : syntax error
+ERROR: 0:160: '' : syntax error, unexpected IMAGEBUFFER, expecting COMMA or SEMICOLON
ERROR: 45 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300.vert.out
index ec5d5d0055b..507ad73b1e9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300.vert.out
@@ -43,10 +43,18 @@ ERROR: 0:172: 'std430' : requires the 'buffer' storage qualifier
ERROR: 0:175: '' : array size required
ERROR: 0:185: 'assign' : cannot convert from ' temp 4-element array of highp float' to ' temp 3-element array of highp float'
ERROR: 0:186: 'assign' : cannot convert from ' temp 3-element array of highp float' to ' temp 4-element array of highp float'
-ERROR: 44 compilation errors. No code generated.
+ERROR: 0:189: 'num_views' : required extension not requested: Possible extensions include:
+GL_OVR_multiview
+GL_OVR_multiview2
+ERROR: 0:193: 'gl_ViewID_OVR' : required extension not requested: Possible extensions include:
+GL_OVR_multiview
+GL_OVR_multiview2
+ERROR: 0:198: 'num_views' : can only apply to a standalone qualifier
+ERROR: 47 compilation errors. No code generated.
Shader version: 300
+Requested GL_OVR_multiview
ERROR: node is still EOpNull!
0:27 Function Definition: main( ( global void)
0:27 Function Parameters:
@@ -289,6 +297,14 @@ ERROR: node is still EOpNull!
0:184 'y' ( temp 4-element array of highp float)
0:185 'xp' ( temp 3-element array of highp float)
0:186 'yp' ( temp 4-element array of highp float)
+0:191 Function Definition: mwErr( ( global void)
+0:191 Function Parameters:
+0:193 Sequence
+0:193 'gl_ViewID_OVR' ( in highp uint ViewIndex)
+0:201 Function Definition: mwOk( ( global void)
+0:201 Function Parameters:
+0:203 Sequence
+0:203 'gl_ViewID_OVR' ( in highp uint ViewIndex)
0:? Linker Objects
0:? 'm43' ( uniform highp 4X3 matrix of float)
0:? 'm33' ( uniform highp 3X3 matrix of float)
@@ -323,6 +339,7 @@ ERROR: node is still EOpNull!
0:? 'Binst' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp int a})
0:? 'Bfoo' ( global highp int)
0:? 'B430i' (layout( column_major std430) uniform block{layout( column_major std430 offset=0) uniform highp int a})
+0:? 'mwUniform' ( uniform highp float)
0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
@@ -331,6 +348,7 @@ Linked vertex stage:
Shader version: 300
+Requested GL_OVR_multiview
ERROR: node is still EOpNull!
0:27 Function Definition: main( ( global void)
0:27 Function Parameters:
@@ -481,6 +499,7 @@ ERROR: node is still EOpNull!
0:? 'Binst' (layout( column_major shared) uniform block{layout( column_major shared) uniform highp int a})
0:? 'Bfoo' ( global highp int)
0:? 'B430i' (layout( column_major std430) uniform block{layout( column_major std430 offset=0) uniform highp int a})
+0:? 'mwUniform' ( uniform highp float)
0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300samplerExternal.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300samplerExternal.frag.out
new file mode 100644
index 00000000000..9074552e891
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/300samplerExternal.frag.out
@@ -0,0 +1,197 @@
+300samplerExternal.frag
+ERROR: 0:12: 'texture2D' : no matching overloaded function found
+ERROR: 0:13: 'texture2D' : no matching overloaded function found
+ERROR: 0:14: 'texture2D' : no matching overloaded function found
+ERROR: 0:15: 'texture2DProj' : no matching overloaded function found
+ERROR: 0:16: 'texture2DProj' : no matching overloaded function found
+ERROR: 0:29: 'texture3D' : no matching overloaded function found
+ERROR: 0:30: 'texture2DProjLod' : no matching overloaded function found
+ERROR: 0:31: 'texture' : no matching overloaded function found
+ERROR: 0:32: 'textureProjLod' : no matching overloaded function found
+ERROR: 0:38: 'samplerExternalOES' : required extension not requested: GL_OES_EGL_image_external_essl3
+ERROR: 0:41: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
+ERROR: 11 compilation errors. No code generated.
+
+
+Shader version: 300
+Requested GL_OES_EGL_image_external
+Requested GL_OES_EGL_image_external_essl3
+ERROR: node is still EOpNull!
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 Constant:
+0:12 0.000000
+0:13 Constant:
+0:13 0.000000
+0:14 Constant:
+0:14 0.000000
+0:15 Constant:
+0:15 0.000000
+0:16 Constant:
+0:16 0.000000
+0:18 Sequence
+0:18 move second child to first child ( temp mediump int)
+0:18 'lod' ( temp mediump int)
+0:18 Constant:
+0:18 0 (const int)
+0:19 Sequence
+0:19 move second child to first child ( temp highp float)
+0:19 'bias' ( temp highp float)
+0:19 Constant:
+0:19 0.010000
+0:20 textureSize ( global highp 2-component vector of int, operation at mediump)
+0:20 'sExt' ( uniform lowp samplerExternalOES)
+0:20 'lod' ( temp mediump int)
+0:21 texture ( global lowp 4-component vector of float)
+0:21 'sExt' ( uniform lowp samplerExternalOES)
+0:21 Constant:
+0:21 0.200000
+0:21 0.200000
+0:22 texture ( global lowp 4-component vector of float, operation at highp)
+0:22 'sExt' ( uniform lowp samplerExternalOES)
+0:22 Constant:
+0:22 0.200000
+0:22 0.200000
+0:22 'bias' ( temp highp float)
+0:23 textureProj ( global lowp 4-component vector of float)
+0:23 'sExt' ( uniform lowp samplerExternalOES)
+0:23 Constant:
+0:23 0.200000
+0:23 0.200000
+0:23 0.200000
+0:24 textureProj ( global lowp 4-component vector of float, operation at highp)
+0:24 'sExt' ( uniform lowp samplerExternalOES)
+0:24 Constant:
+0:24 0.200000
+0:24 0.200000
+0:24 0.200000
+0:24 'bias' ( temp highp float)
+0:25 textureProj ( global lowp 4-component vector of float)
+0:25 'sExt' ( uniform lowp samplerExternalOES)
+0:25 Constant:
+0:25 0.200000
+0:25 0.200000
+0:25 0.200000
+0:25 0.200000
+0:26 textureProj ( global lowp 4-component vector of float, operation at highp)
+0:26 'sExt' ( uniform lowp samplerExternalOES)
+0:26 Constant:
+0:26 0.200000
+0:26 0.200000
+0:26 0.200000
+0:26 0.200000
+0:26 'bias' ( temp highp float)
+0:27 textureFetch ( global lowp 4-component vector of float, operation at mediump)
+0:27 'sExt' ( uniform lowp samplerExternalOES)
+0:27 Constant:
+0:27 4 (const int)
+0:27 4 (const int)
+0:27 'lod' ( temp mediump int)
+0:29 Constant:
+0:29 0.000000
+0:30 Constant:
+0:30 0.000000
+0:31 Constant:
+0:31 0.000000
+0:32 Constant:
+0:32 0.000000
+0:? Linker Objects
+0:? 'sExt' ( uniform lowp samplerExternalOES)
+0:? 'mediumExt' ( uniform mediump samplerExternalOES)
+0:? 'highExt' ( uniform highp samplerExternalOES)
+0:? 'badExt' ( uniform mediump samplerExternalOES)
+
+
+Linked fragment stage:
+
+
+Shader version: 300
+Requested GL_OES_EGL_image_external
+Requested GL_OES_EGL_image_external_essl3
+ERROR: node is still EOpNull!
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 Constant:
+0:12 0.000000
+0:13 Constant:
+0:13 0.000000
+0:14 Constant:
+0:14 0.000000
+0:15 Constant:
+0:15 0.000000
+0:16 Constant:
+0:16 0.000000
+0:18 Sequence
+0:18 move second child to first child ( temp mediump int)
+0:18 'lod' ( temp mediump int)
+0:18 Constant:
+0:18 0 (const int)
+0:19 Sequence
+0:19 move second child to first child ( temp highp float)
+0:19 'bias' ( temp highp float)
+0:19 Constant:
+0:19 0.010000
+0:20 textureSize ( global highp 2-component vector of int, operation at mediump)
+0:20 'sExt' ( uniform lowp samplerExternalOES)
+0:20 'lod' ( temp mediump int)
+0:21 texture ( global lowp 4-component vector of float)
+0:21 'sExt' ( uniform lowp samplerExternalOES)
+0:21 Constant:
+0:21 0.200000
+0:21 0.200000
+0:22 texture ( global lowp 4-component vector of float, operation at highp)
+0:22 'sExt' ( uniform lowp samplerExternalOES)
+0:22 Constant:
+0:22 0.200000
+0:22 0.200000
+0:22 'bias' ( temp highp float)
+0:23 textureProj ( global lowp 4-component vector of float)
+0:23 'sExt' ( uniform lowp samplerExternalOES)
+0:23 Constant:
+0:23 0.200000
+0:23 0.200000
+0:23 0.200000
+0:24 textureProj ( global lowp 4-component vector of float, operation at highp)
+0:24 'sExt' ( uniform lowp samplerExternalOES)
+0:24 Constant:
+0:24 0.200000
+0:24 0.200000
+0:24 0.200000
+0:24 'bias' ( temp highp float)
+0:25 textureProj ( global lowp 4-component vector of float)
+0:25 'sExt' ( uniform lowp samplerExternalOES)
+0:25 Constant:
+0:25 0.200000
+0:25 0.200000
+0:25 0.200000
+0:25 0.200000
+0:26 textureProj ( global lowp 4-component vector of float, operation at highp)
+0:26 'sExt' ( uniform lowp samplerExternalOES)
+0:26 Constant:
+0:26 0.200000
+0:26 0.200000
+0:26 0.200000
+0:26 0.200000
+0:26 'bias' ( temp highp float)
+0:27 textureFetch ( global lowp 4-component vector of float, operation at mediump)
+0:27 'sExt' ( uniform lowp samplerExternalOES)
+0:27 Constant:
+0:27 4 (const int)
+0:27 4 (const int)
+0:27 'lod' ( temp mediump int)
+0:29 Constant:
+0:29 0.000000
+0:30 Constant:
+0:30 0.000000
+0:31 Constant:
+0:31 0.000000
+0:32 Constant:
+0:32 0.000000
+0:? Linker Objects
+0:? 'sExt' ( uniform lowp samplerExternalOES)
+0:? 'mediumExt' ( uniform mediump samplerExternalOES)
+0:? 'highExt' ( uniform highp samplerExternalOES)
+0:? 'badExt' ( uniform mediump samplerExternalOES)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.comp.out
index 3246622de19..f2d48efd817 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.comp.out
@@ -1,7 +1,7 @@
310.comp
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'local_size' : cannot change previously set size
ERROR: 0:5: 'local_size' : too large; see gl_MaxComputeWorkGroupSize
+ERROR: 0:7: 'local_size_y' : must be at least 1
ERROR: 0:23: '' : array size required
ERROR: 0:39: 'in' : global storage input qualifier cannot be used in a compute shader
ERROR: 0:39: 'location qualifier on input' : not supported in this stage: compute
@@ -16,7 +16,7 @@ ERROR: 0:47: 'local_size' : can only apply to 'in'
ERROR: 0:61: 'assign' : l-value required "ro" (can't modify a readonly buffer)
ERROR: 0:66: 'buffer' : buffers can be declared only as blocks
ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier
-ERROR: 0:76: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
+ERROR: 0:76: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:82: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:87: 'imageAtomicCompSwap' : required extension not requested: GL_OES_shader_image_atomic
@@ -54,12 +54,12 @@ ERROR: 0:171: 'samplerCubeArray' : Reserved word.
ERROR: 0:171: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:172: 'iimage2DRect' : Reserved word.
ERROR: 0:172: 'sampler/image' : type requires declaration of default precision qualifier
-ERROR: 0:172: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
+ERROR: 0:172: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:173: 'image2DMS' : Reserved word.
-ERROR: 0:173: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
+ERROR: 0:173: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:174: 'uimage2DMSArray' : Reserved word.
ERROR: 0:174: 'sampler/image' : type requires declaration of default precision qualifier
-ERROR: 0:174: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
+ERROR: 0:174: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:181: 'rgba32f' : format requires readonly or writeonly memory qualifier
ERROR: 0:182: 'rgba8i' : format requires readonly or writeonly memory qualifier
ERROR: 0:183: 'rgba16ui' : format requires readonly or writeonly memory qualifier
@@ -84,7 +84,7 @@ WARNING: 0:238: '#define' : names containing consecutive underscores are reserve
ERROR: 0:244: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group
ERROR: 0:245: 'gl_ViewIndex' : undeclared identifier
ERROR: 0:255: 'gl_ViewIndex' : undeclared identifier
-ERROR: 82 compilation errors. No code generated.
+ERROR: 83 compilation errors. No code generated.
Shader version: 310
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.frag.out
index 3b2fdd087f2..81075561323 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.frag.out
@@ -1,5 +1,4 @@
310.frag
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:2: 'float' : type requires declaration of default precision qualifier
ERROR: 0:8: 'origin_upper_left' : not supported with this profile: es
ERROR: 0:8: 'pixel_center_integer' : not supported with this profile: es
@@ -19,13 +18,13 @@ ERROR: 0:44: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset,
ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
ERROR: 0:66: 'sampler/image' : type requires declaration of default precision qualifier
-ERROR: 0:66: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
+ERROR: 0:66: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:67: 'sampler/image' : type requires declaration of default precision qualifier
-ERROR: 0:67: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
+ERROR: 0:67: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier
-ERROR: 0:68: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
+ERROR: 0:68: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:69: 'sampler/image' : type requires declaration of default precision qualifier
-ERROR: 0:69: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
+ERROR: 0:69: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:73: 'binding' : requires block, or sampler/image, or atomic-counter type
ERROR: 0:77: 'location' : location is too large
ERROR: 0:81: 'location' : too large for fragment output
@@ -36,7 +35,7 @@ ERROR: 0:83: 'layout-id value' : cannot be negative
ERROR: 0:96: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:110: 'out' : cannot be bool
ERROR: 0:111: 'image2D' : sampler/image types can only be used in uniform variables or function parameters: imageOut
-ERROR: 0:111: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es
+ERROR: 0:111: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es
ERROR: 0:112: 'out' : cannot be a matrix
ERROR: 0:114: 'in' : cannot be bool
ERROR: 0:115: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: ino
@@ -124,7 +123,7 @@ ERROR: 0:391: 'interpolateAtOffset' : first argument must be an interpolant, or
ERROR: 0:392: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:396: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:397: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
-ERROR: 0:400: 'blend equation' : required extension not requested: GL_KHR_blend_equation_advanced
+ERROR: 0:400: 'blend equation' : not supported for this version or the enabled extensions
ERROR: 0:423: 'blend equation' : can only apply to 'out'
ERROR: 0:424: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:425: 'blend equation' : can only apply to a standalone qualifier
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.geom.out
index e57c8222c13..b0dabc3b20a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.geom.out
@@ -1,5 +1,4 @@
310.geom
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:29: 'fromVertex' : block instance name redefinition
ERROR: 0:33: 'fromVertex' : redefinition
ERROR: 0:35: 'fooC' : block instance name redefinition
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.tesc.out
index 9c3d1d55fcc..01d7ecfb49a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.tesc.out
@@ -1,5 +1,4 @@
310.tesc
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:8: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:9: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:10: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.tese.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.tese.out
index 4550230d21c..52d19b4fdf6 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.tese.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.tese.out
@@ -1,5 +1,4 @@
310.tese
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:7: 'vertices' : there is no such layout identifier for this stage taking an assigned value
ERROR: 0:9: 'triangles' : cannot change previously set input primitive
ERROR: 0:10: 'isolines' : cannot change previously set input primitive
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.vert.out
index 6d4599c53c6..21fa27b90fc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310.vert.out
@@ -1,5 +1,4 @@
310.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'shared' : not supported in this stage: vertex
ERROR: 0:4: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value
ERROR: 0:5: 'buffer' : buffers can be declared only as blocks
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310AofA.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310AofA.vert.out
index ffba25f9a2a..70b5968c9d0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310AofA.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310AofA.vert.out
@@ -1,5 +1,4 @@
310AofA.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:17: '' : array size required
ERROR: 0:23: '' : array size required
ERROR: 0:28: '[]' : only outermost dimension of an array of arrays can be implicitly sized
@@ -321,7 +320,7 @@ ERROR: node is still EOpNull!
0:? Linker Objects
0:? 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer implicitly-sized array of highp float u, layout( column_major shared) buffer implicitly-sized array of highp 4-component vector of float v})
0:? 'uname' (layout( column_major shared) uniform 3-element array of block{layout( column_major shared) uniform highp float u, layout( column_major shared) uniform implicitly-sized array of highp 4-component vector of float v})
-0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of implicitly-sized array of highp 4-component vector of float v})
+0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 1-element array of highp 4-component vector of float v})
0:? 'name3' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})
0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of highp float)
0:? 'gu' ( global implicitly-sized array of 7-element array of highp float)
@@ -362,7 +361,7 @@ ERROR: node is still EOpNull!
0:? Linker Objects
0:? 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer implicitly-sized array of highp float u, layout( column_major shared) buffer implicitly-sized array of highp 4-component vector of float v})
0:? 'uname' (layout( column_major shared) uniform 3-element array of block{layout( column_major shared) uniform highp float u, layout( column_major shared) uniform 1-element array of highp 4-component vector of float v})
-0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of implicitly-sized array of highp 4-component vector of float v})
+0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 1-element array of highp 4-component vector of float v})
0:? 'name3' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})
0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of highp float)
0:? 'gu' ( global 1-element array of 7-element array of highp float)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310implicitSizeArrayError.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310implicitSizeArrayError.vert.out
index 07ac5237844..1eed457dbae 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310implicitSizeArrayError.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/310implicitSizeArrayError.vert.out
@@ -1,5 +1,4 @@
310implicitSizeArrayError.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: '' : array size required
ERROR: 1 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.comp.out
new file mode 100644
index 00000000000..09cedd0a00f
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.comp.out
@@ -0,0 +1,19 @@
+320.comp
+Shader version: 320
+local_size = (1, 1, 1)
+0:? Sequence
+0:3 Function Definition: main( ( global void)
+0:3 Function Parameters:
+0:? Linker Objects
+
+
+Linked compute stage:
+
+
+Shader version: 320
+local_size = (1, 1, 1)
+0:? Sequence
+0:3 Function Definition: main( ( global void)
+0:3 Function Parameters:
+0:? Linker Objects
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.frag.out
new file mode 100644
index 00000000000..76dbeaf8dc5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.frag.out
@@ -0,0 +1,576 @@
+320.frag
+ERROR: 0:3: 'output block' : not supported in this stage: fragment
+ERROR: 0:7: 'float' : type requires declaration of default precision qualifier
+ERROR: 0:8: '' : cannot nest a structure definition inside a structure or block
+ERROR: 0:16: 'location' : overlapping use of location 13
+ERROR: 0:18: 'inbname2' : Cannot reuse block name within the same interface: in
+ERROR: 0:23: 'badmember' : nameless block contains a member that already has a name at global scope
+ERROR: 0:27: 'inbname' : redefinition
+ERROR: 0:29: 'vAnon' : redefinition
+ERROR: 0:43: 'origin_upper_left' : not supported with this profile: es
+ERROR: 0:43: 'pixel_center_integer' : not supported with this profile: es
+ERROR: 0:43: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord
+ERROR: 0:47: 'depth layout qualifier' : not supported with this profile: es
+ERROR: 0:51: 'assign' : l-value required "gl_FragDepth" (can't modify gl_FragDepth if using early_fragment_tests)
+ERROR: 0:79: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument
+ERROR: 0:124: 'rgba32f' : format requires readonly or writeonly memory qualifier
+ERROR: 0:125: 'rgba8ui' : format requires readonly or writeonly memory qualifier
+ERROR: 0:126: 'rgba16i' : format requires readonly or writeonly memory qualifier
+ERROR: 0:152: 'imageAtomicMax' : only supported on image with format r32i or r32ui
+ERROR: 0:153: 'imageAtomicMax' : only supported on image with format r32i or r32ui
+ERROR: 0:154: 'imageAtomicExchange' : only supported on image with format r32f
+ERROR: 0:157: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output
+ERROR: 0:158: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output
+ERROR: 0:159: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output
+ERROR: 0:160: 'noperspective' : Reserved word.
+ERROR: 0:160: 'noperspective' : not supported with this profile: es
+ERROR: 0:160: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output
+ERROR: 0:165: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output
+ERROR: 0:180: 'interpolateAtCentroid' : no matching overloaded function found
+ERROR: 0:180: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float'
+ERROR: 0:182: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
+ERROR: 0:184: 'interpolateAtSample' : no matching overloaded function found
+ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float'
+ERROR: 0:186: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
+ERROR: 0:189: 'interpolateAtOffset' : no matching overloaded function found
+ERROR: 0:189: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float'
+ERROR: 0:191: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
+ERROR: 0:192: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
+ERROR: 0:196: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
+ERROR: 0:197: 'outp' : undeclared identifier
+ERROR: 0:197: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
+ERROR: 0:197: 'assign' : cannot convert from ' global float' to ' temp mediump 4-component vector of float'
+ERROR: 0:217: 'blend equation' : can only apply to 'out'
+ERROR: 0:218: 'blend equation' : can only apply to a standalone qualifier
+ERROR: 0:219: 'blend equation' : can only apply to a standalone qualifier
+ERROR: 0:220: 'blend equation' : can only apply to a standalone qualifier
+ERROR: 0:221: 'blend equation' : can only apply to a standalone qualifier
+ERROR: 0:222: 'blend equation' : can only apply to a standalone qualifier
+ERROR: 0:223: 'blend_support' : unknown blend equation
+ERROR: 0:225: 'fragment-shader array-of-array output' : not supported with this profile: es
+ERROR: 49 compilation errors. No code generated.
+
+
+Shader version: 320
+gl_FragCoord pixel center is integer
+gl_FragCoord origin is upper left
+using early_fragment_tests
+using depth_any
+using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations
+ERROR: node is still EOpNull!
+0:35 Function Definition: fooIO( ( global void)
+0:35 Function Parameters:
+0:37 Sequence
+0:37 Sequence
+0:37 move second child to first child ( temp mediump 4-component vector of float)
+0:37 'v' ( temp mediump 4-component vector of float)
+0:37 add ( temp mediump 4-component vector of float)
+0:37 v: direct index for structure ( in mediump 4-component vector of float)
+0:37 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s})
+0:37 Constant:
+0:37 1 (const int)
+0:37 vAnon: direct index for structure (layout( location=13) centroid in mediump 4-component vector of float)
+0:37 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon})
+0:37 Constant:
+0:37 1 (const uint)
+0:38 vector scale second child into first child ( temp mediump 4-component vector of float)
+0:38 'v' ( temp mediump 4-component vector of float)
+0:38 f: direct index for structure ( in mediump float)
+0:38 direct index ( temp block{ in mediump float f})
+0:38 'arrayedInst' ( in 4-element array of block{ in mediump float f})
+0:38 Constant:
+0:38 2 (const int)
+0:38 Constant:
+0:38 0 (const int)
+0:39 vector scale second child into first child ( temp mediump 4-component vector of float)
+0:39 'v' ( temp mediump 4-component vector of float)
+0:39 f: direct index for structure ( in mediump float)
+0:39 indirect index ( temp block{ in mediump float f})
+0:39 'arrayedInst' ( in 4-element array of block{ in mediump float f})
+0:39 'i' ( uniform mediump int)
+0:39 Constant:
+0:39 0 (const int)
+0:49 Function Definition: main( ( global void)
+0:49 Function Parameters:
+0:51 Sequence
+0:51 move second child to first child ( temp highp float)
+0:51 'gl_FragDepth' ( gl_FragDepth highp float FragDepth)
+0:51 Constant:
+0:51 0.200000
+0:52 Sequence
+0:52 move second child to first child ( temp bool)
+0:52 'f' ( temp bool)
+0:52 'gl_FrontFacing' ( gl_FrontFacing bool Face)
+0:57 Function Definition: foo_GS( ( global void)
+0:57 Function Parameters:
+0:59 Sequence
+0:59 Sequence
+0:59 move second child to first child ( temp highp int)
+0:59 'l' ( temp highp int)
+0:59 'gl_Layer' ( flat in highp int Layer)
+0:60 Sequence
+0:60 move second child to first child ( temp highp int)
+0:60 'p' ( temp highp int)
+0:60 'gl_PrimitiveID' ( flat in highp int PrimitiveID)
+0:73 Function Definition: pfoo( ( global void)
+0:73 Function Parameters:
+0:? Sequence
+0:76 move second child to first child ( temp mediump 2-component vector of float)
+0:76 'h' ( noContraction temp mediump 2-component vector of float)
+0:76 fma ( global mediump 2-component vector of float)
+0:76 'inf' ( smooth in mediump 2-component vector of float)
+0:76 'ing' ( smooth in mediump 2-component vector of float)
+0:76 'h' ( noContraction temp mediump 2-component vector of float)
+0:77 textureGatherOffset ( global lowp 4-component vector of float)
+0:77 direct index ( temp lowp sampler2D)
+0:77 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 0.100000
+0:77 0.100000
+0:77 Convert float to int ( temp lowp 2-component vector of int)
+0:77 'inf' ( smooth in mediump 2-component vector of float)
+0:78 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump)
+0:78 direct index ( temp lowp sampler2D)
+0:78 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:78 Constant:
+0:78 0 (const int)
+0:78 Constant:
+0:78 0.100000
+0:78 0.100000
+0:78 Constant:
+0:78 0 (const int)
+0:78 0 (const int)
+0:78 0 (const int)
+0:78 0 (const int)
+0:78 0 (const int)
+0:78 0 (const int)
+0:78 0 (const int)
+0:78 0 (const int)
+0:79 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump)
+0:79 direct index ( temp lowp sampler2D)
+0:79 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:79 Constant:
+0:79 0 (const int)
+0:79 Constant:
+0:79 0.100000
+0:79 0.100000
+0:79 'offsets' ( uniform 4-element array of mediump 2-component vector of int)
+0:102 Function Definition: CAT( ( global void)
+0:102 Function Parameters:
+0:104 Sequence
+0:104 Sequence
+0:104 move second child to first child ( temp highp 4-component vector of float)
+0:104 'b4' ( temp highp 4-component vector of float)
+0:104 texture ( global highp 4-component vector of float)
+0:104 'CA4' ( uniform highp samplerCubeArray)
+0:104 Constant:
+0:104 0.500000
+0:104 0.500000
+0:104 0.500000
+0:104 0.500000
+0:104 Constant:
+0:104 0.240000
+0:105 Sequence
+0:105 move second child to first child ( temp highp 4-component vector of int)
+0:105 'b6' ( temp highp 4-component vector of int)
+0:105 texture ( global highp 4-component vector of int)
+0:105 'CA6' ( uniform highp isamplerCubeArray)
+0:105 Constant:
+0:105 0.500000
+0:105 0.500000
+0:105 0.500000
+0:105 0.500000
+0:105 Constant:
+0:105 0.260000
+0:106 Sequence
+0:106 move second child to first child ( temp highp 4-component vector of uint)
+0:106 'b7' ( temp highp 4-component vector of uint)
+0:106 texture ( global highp 4-component vector of uint)
+0:106 'CA7' ( uniform highp usamplerCubeArray)
+0:106 Constant:
+0:106 0.500000
+0:106 0.500000
+0:106 0.500000
+0:106 0.500000
+0:106 Constant:
+0:106 0.270000
+0:109 Function Definition: goodSample( ( global void)
+0:109 Function Parameters:
+0:111 Sequence
+0:111 Sequence
+0:111 move second child to first child ( temp lowp int)
+0:111 'a1' ( temp lowp int)
+0:111 'gl_SampleID' ( flat in lowp int SampleId)
+0:112 Sequence
+0:112 move second child to first child ( temp mediump 2-component vector of float)
+0:112 'a2' ( temp mediump 2-component vector of float)
+0:112 'gl_SamplePosition' ( smooth in mediump 2-component vector of float SamplePosition)
+0:113 Sequence
+0:113 move second child to first child ( temp highp int)
+0:113 'a3' ( temp highp int)
+0:113 direct index ( flat temp highp int SampleMaskIn)
+0:113 'gl_SampleMaskIn' ( flat in implicitly-sized array of highp int SampleMaskIn)
+0:113 Constant:
+0:113 0 (const int)
+0:114 move second child to first child ( temp highp int)
+0:114 direct index ( temp highp int SampleMaskIn)
+0:114 'gl_SampleMask' ( out implicitly-sized array of highp int SampleMaskIn)
+0:114 Constant:
+0:114 0 (const int)
+0:114 'a3' ( temp highp int)
+0:115 Sequence
+0:115 move second child to first child ( temp mediump int)
+0:115 'n1' ( temp mediump int)
+0:115 Constant:
+0:115 4 (const int)
+0:116 Sequence
+0:116 move second child to first child ( temp mediump int)
+0:116 'n2' ( temp mediump int)
+0:116 'gl_NumSamples' ( uniform lowp int)
+0:128 Function Definition: goodImageAtom( ( global void)
+0:128 Function Parameters:
+0:? Sequence
+0:134 imageAtomicAdd ( global highp int)
+0:134 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:134 'P' ( uniform mediump 2-component vector of int)
+0:134 'dati' ( temp mediump int)
+0:135 imageAtomicAdd ( global highp uint)
+0:135 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:135 'P' ( uniform mediump 2-component vector of int)
+0:135 'datu' ( temp mediump uint)
+0:136 imageAtomicMin ( global highp int)
+0:136 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:136 'P' ( uniform mediump 2-component vector of int)
+0:136 'dati' ( temp mediump int)
+0:137 imageAtomicMin ( global highp uint)
+0:137 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:137 'P' ( uniform mediump 2-component vector of int)
+0:137 'datu' ( temp mediump uint)
+0:138 imageAtomicMax ( global highp int)
+0:138 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:138 'P' ( uniform mediump 2-component vector of int)
+0:138 'dati' ( temp mediump int)
+0:139 imageAtomicMax ( global highp uint)
+0:139 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:139 'P' ( uniform mediump 2-component vector of int)
+0:139 'datu' ( temp mediump uint)
+0:140 imageAtomicAnd ( global highp int)
+0:140 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:140 'P' ( uniform mediump 2-component vector of int)
+0:140 'dati' ( temp mediump int)
+0:141 imageAtomicAnd ( global highp uint)
+0:141 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:141 'P' ( uniform mediump 2-component vector of int)
+0:141 'datu' ( temp mediump uint)
+0:142 imageAtomicOr ( global highp int)
+0:142 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:142 'P' ( uniform mediump 2-component vector of int)
+0:142 'dati' ( temp mediump int)
+0:143 imageAtomicOr ( global highp uint)
+0:143 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:143 'P' ( uniform mediump 2-component vector of int)
+0:143 'datu' ( temp mediump uint)
+0:144 imageAtomicXor ( global highp int)
+0:144 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:144 'P' ( uniform mediump 2-component vector of int)
+0:144 'dati' ( temp mediump int)
+0:145 imageAtomicXor ( global highp uint)
+0:145 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:145 'P' ( uniform mediump 2-component vector of int)
+0:145 'datu' ( temp mediump uint)
+0:146 imageAtomicExchange ( global highp int)
+0:146 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:146 'P' ( uniform mediump 2-component vector of int)
+0:146 'dati' ( temp mediump int)
+0:147 imageAtomicExchange ( global highp uint)
+0:147 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:147 'P' ( uniform mediump 2-component vector of int)
+0:147 'datu' ( temp mediump uint)
+0:148 imageAtomicExchange ( global highp float)
+0:148 'im2Df' (layout( r32f) uniform highp image2D)
+0:148 'P' ( uniform mediump 2-component vector of int)
+0:148 'datf' ( temp mediump float)
+0:149 imageAtomicCompSwap ( global highp int)
+0:149 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:149 'P' ( uniform mediump 2-component vector of int)
+0:149 Constant:
+0:149 3 (const int)
+0:149 'dati' ( temp mediump int)
+0:150 imageAtomicCompSwap ( global highp uint)
+0:150 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:150 'P' ( uniform mediump 2-component vector of int)
+0:150 Constant:
+0:150 5 (const uint)
+0:150 'datu' ( temp mediump uint)
+0:152 imageAtomicMax ( global highp int)
+0:152 'badIm2Di' (layout( rgba16i) uniform highp iimage2D)
+0:152 'P' ( uniform mediump 2-component vector of int)
+0:152 'dati' ( temp mediump int)
+0:153 imageAtomicMax ( global highp uint)
+0:153 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D)
+0:153 'P' ( uniform mediump 2-component vector of int)
+0:153 'datu' ( temp mediump uint)
+0:154 imageAtomicExchange ( global highp float)
+0:154 'badIm2Df' (layout( rgba32f) uniform highp image2D)
+0:154 'P' ( uniform mediump 2-component vector of int)
+0:154 'datf' ( temp mediump float)
+0:169 Function Definition: interp( ( global void)
+0:169 Function Parameters:
+0:? Sequence
+0:176 move second child to first child ( temp mediump 2-component vector of float)
+0:176 'res2' ( temp mediump 2-component vector of float)
+0:176 interpolateAtCentroid ( global mediump 2-component vector of float)
+0:176 'colorfc' ( centroid flat in mediump 2-component vector of float)
+0:177 move second child to first child ( temp mediump 4-component vector of float)
+0:177 'res4' ( temp mediump 4-component vector of float)
+0:177 interpolateAtCentroid ( global mediump 4-component vector of float)
+0:177 'colorSampIn' ( smooth sample in mediump 4-component vector of float)
+0:178 move second child to first child ( temp mediump 4-component vector of float)
+0:178 'res4' ( temp mediump 4-component vector of float)
+0:178 interpolateAtCentroid ( global mediump 4-component vector of float)
+0:178 'colorfsi' ( flat sample in mediump 4-component vector of float)
+0:179 move second child to first child ( temp mediump float)
+0:179 'res' ( temp mediump float)
+0:179 interpolateAtCentroid ( global mediump float)
+0:179 'scalarIn' ( smooth in mediump float)
+0:180 'res3' ( temp mediump 3-component vector of float)
+0:181 move second child to first child ( temp mediump 3-component vector of float)
+0:181 'res3' ( temp mediump 3-component vector of float)
+0:181 interpolateAtCentroid ( global mediump 3-component vector of float)
+0:181 direct index ( smooth sample temp mediump 3-component vector of float)
+0:181 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
+0:181 Constant:
+0:181 2 (const int)
+0:182 move second child to first child ( temp mediump 2-component vector of float)
+0:182 'res2' ( temp mediump 2-component vector of float)
+0:182 interpolateAtCentroid ( global mediump 2-component vector of float)
+0:182 vector swizzle ( temp mediump 2-component vector of float)
+0:182 direct index ( smooth sample temp mediump 3-component vector of float)
+0:182 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
+0:182 Constant:
+0:182 2 (const int)
+0:182 Sequence
+0:182 Constant:
+0:182 0 (const int)
+0:182 Constant:
+0:182 1 (const int)
+0:184 'res3' ( temp mediump 3-component vector of float)
+0:185 move second child to first child ( temp mediump 3-component vector of float)
+0:185 'res3' ( temp mediump 3-component vector of float)
+0:185 interpolateAtSample ( global mediump 3-component vector of float)
+0:185 indirect index ( smooth sample temp mediump 3-component vector of float)
+0:185 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
+0:185 'i' ( uniform mediump int)
+0:185 Constant:
+0:185 0 (const int)
+0:186 move second child to first child ( temp mediump 2-component vector of float)
+0:186 'res2' ( temp mediump 2-component vector of float)
+0:186 interpolateAtSample ( global mediump 2-component vector of float)
+0:186 vector swizzle ( temp mediump 2-component vector of float)
+0:186 direct index ( smooth sample temp mediump 3-component vector of float)
+0:186 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
+0:186 Constant:
+0:186 2 (const int)
+0:186 Sequence
+0:186 Constant:
+0:186 0 (const int)
+0:186 Constant:
+0:186 1 (const int)
+0:186 Constant:
+0:186 2 (const int)
+0:187 move second child to first child ( temp mediump float)
+0:187 'res' ( temp mediump float)
+0:187 interpolateAtSample ( global mediump float)
+0:187 'scalarIn' ( smooth in mediump float)
+0:187 Constant:
+0:187 1 (const int)
+0:189 'res3' ( temp mediump 3-component vector of float)
+0:190 move second child to first child ( temp mediump 3-component vector of float)
+0:190 'res3' ( temp mediump 3-component vector of float)
+0:190 interpolateAtOffset ( global mediump 3-component vector of float)
+0:190 direct index ( smooth sample temp mediump 3-component vector of float)
+0:190 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
+0:190 Constant:
+0:190 2 (const int)
+0:190 Constant:
+0:190 0.200000
+0:190 0.200000
+0:191 move second child to first child ( temp mediump 2-component vector of float)
+0:191 'res2' ( temp mediump 2-component vector of float)
+0:191 interpolateAtOffset ( global mediump 2-component vector of float)
+0:191 vector swizzle ( temp mediump 2-component vector of float)
+0:191 direct index ( smooth sample temp mediump 3-component vector of float)
+0:191 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
+0:191 Constant:
+0:191 2 (const int)
+0:191 Sequence
+0:191 Constant:
+0:191 0 (const int)
+0:191 Constant:
+0:191 1 (const int)
+0:191 Constant:
+0:191 0.200000
+0:191 0.200000
+0:192 move second child to first child ( temp mediump float)
+0:192 'res' ( temp mediump float)
+0:192 interpolateAtOffset ( global mediump float)
+0:192 add ( temp mediump float)
+0:192 'scalarIn' ( smooth in mediump float)
+0:192 'scalarIn' ( smooth in mediump float)
+0:192 Constant:
+0:192 0.200000
+0:192 0.200000
+0:193 move second child to first child ( temp mediump float)
+0:193 'res' ( temp mediump float)
+0:193 interpolateAtOffset ( global mediump float)
+0:193 'scalarIn' ( smooth in mediump float)
+0:193 Constant:
+0:193 0.200000
+0:193 0.200000
+0:196 move second child to first child ( temp mediump float)
+0:196 'res' ( temp mediump float)
+0:196 interpolateAtCentroid ( global mediump float)
+0:196 'f' ( temp mediump float)
+0:197 'res4' ( temp mediump 4-component vector of float)
+0:221 Function Definition: blendFoo( ( temp void)
+0:221 Function Parameters:
+0:222 Function Definition: blendFoo(vf3; ( global void)
+0:222 Function Parameters:
+0:222 'v' ( in mediump 3-component vector of float)
+0:? Linker Objects
+0:? 'outbinst' ( out block{ out mediump int a})
+0:? 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s})
+0:? 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon})
+0:? 'aliased' (layout( location=13) smooth in mediump 4-component vector of float)
+0:? 'arrayedInst' ( in 4-element array of block{ in mediump float f})
+0:? 'i' ( uniform mediump int)
+0:? 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord)
+0:? 'gl_FragDepth' ( gl_FragDepth highp float FragDepth)
+0:? 'inf' ( smooth in mediump 2-component vector of float)
+0:? 'ing' ( smooth in mediump 2-component vector of float)
+0:? 'offsets' ( uniform 4-element array of mediump 2-component vector of int)
+0:? 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:? 'sIndex' ( uniform mediump int)
+0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint)
+0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump int i})
+0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer mediump int i})
+0:? 'iArray' ( writeonly uniform 5-element array of highp image2D)
+0:? 'constOffsets' ( const 4-element array of mediump 2-component vector of int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 'CA1' ( writeonly uniform highp imageCubeArray)
+0:? 'CA2' ( writeonly uniform highp iimageCubeArray)
+0:? 'CA3' ( writeonly uniform highp uimageCubeArray)
+0:? 'CA4' ( uniform highp samplerCubeArray)
+0:? 'CA5' ( uniform highp samplerCubeArrayShadow)
+0:? 'CA6' ( uniform highp isamplerCubeArray)
+0:? 'CA7' ( uniform highp usamplerCubeArray)
+0:? 'gl_SampleMaskIn' ( flat in implicitly-sized array of highp int SampleMaskIn)
+0:? 'gl_SampleMask' ( out implicitly-sized array of highp int SampleMaskIn)
+0:? 'im2Df' (layout( r32f) uniform highp image2D)
+0:? 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:? 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:? 'P' ( uniform mediump 2-component vector of int)
+0:? 'badIm2Df' (layout( rgba32f) uniform highp image2D)
+0:? 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D)
+0:? 'badIm2Di' (layout( rgba16i) uniform highp iimage2D)
+0:? 'colorCentroidBad' ( centroid out mediump 4-component vector of float)
+0:? 'colorBadFlat' ( flat out mediump 4-component vector of float)
+0:? 'colorBadSmooth' ( smooth out mediump 4-component vector of float)
+0:? 'colorBadNo' ( noperspective out mediump 4-component vector of float)
+0:? 'colorfc' ( centroid flat in mediump 2-component vector of float)
+0:? 'scalarIn' ( smooth in mediump float)
+0:? 'colorSampIn' ( smooth sample in mediump 4-component vector of float)
+0:? 'colorSampleBad' ( sample out mediump 4-component vector of float)
+0:? 'colorfsi' ( flat sample in mediump 4-component vector of float)
+0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
+0:? 'badout' ( out mediump 4-component vector of float)
+0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float)
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers
+
+Shader version: 320
+gl_FragCoord pixel center is integer
+gl_FragCoord origin is upper left
+using early_fragment_tests
+using depth_any
+using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations
+ERROR: node is still EOpNull!
+0:49 Function Definition: main( ( global void)
+0:49 Function Parameters:
+0:51 Sequence
+0:51 move second child to first child ( temp highp float)
+0:51 'gl_FragDepth' ( gl_FragDepth highp float FragDepth)
+0:51 Constant:
+0:51 0.200000
+0:52 Sequence
+0:52 move second child to first child ( temp bool)
+0:52 'f' ( temp bool)
+0:52 'gl_FrontFacing' ( gl_FrontFacing bool Face)
+0:? Linker Objects
+0:? 'outbinst' ( out block{ out mediump int a})
+0:? 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s})
+0:? 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon})
+0:? 'aliased' (layout( location=13) smooth in mediump 4-component vector of float)
+0:? 'arrayedInst' ( in 4-element array of block{ in mediump float f})
+0:? 'i' ( uniform mediump int)
+0:? 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord)
+0:? 'gl_FragDepth' ( gl_FragDepth highp float FragDepth)
+0:? 'inf' ( smooth in mediump 2-component vector of float)
+0:? 'ing' ( smooth in mediump 2-component vector of float)
+0:? 'offsets' ( uniform 4-element array of mediump 2-component vector of int)
+0:? 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:? 'sIndex' ( uniform mediump int)
+0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint)
+0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump int i})
+0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer mediump int i})
+0:? 'iArray' ( writeonly uniform 5-element array of highp image2D)
+0:? 'constOffsets' ( const 4-element array of mediump 2-component vector of int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 'CA1' ( writeonly uniform highp imageCubeArray)
+0:? 'CA2' ( writeonly uniform highp iimageCubeArray)
+0:? 'CA3' ( writeonly uniform highp uimageCubeArray)
+0:? 'CA4' ( uniform highp samplerCubeArray)
+0:? 'CA5' ( uniform highp samplerCubeArrayShadow)
+0:? 'CA6' ( uniform highp isamplerCubeArray)
+0:? 'CA7' ( uniform highp usamplerCubeArray)
+0:? 'gl_SampleMaskIn' ( flat in 1-element array of highp int SampleMaskIn)
+0:? 'gl_SampleMask' ( out 1-element array of highp int SampleMaskIn)
+0:? 'im2Df' (layout( r32f) uniform highp image2D)
+0:? 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:? 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:? 'P' ( uniform mediump 2-component vector of int)
+0:? 'badIm2Df' (layout( rgba32f) uniform highp image2D)
+0:? 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D)
+0:? 'badIm2Di' (layout( rgba16i) uniform highp iimage2D)
+0:? 'colorCentroidBad' ( centroid out mediump 4-component vector of float)
+0:? 'colorBadFlat' ( flat out mediump 4-component vector of float)
+0:? 'colorBadSmooth' ( smooth out mediump 4-component vector of float)
+0:? 'colorBadNo' ( noperspective out mediump 4-component vector of float)
+0:? 'colorfc' ( centroid flat in mediump 2-component vector of float)
+0:? 'scalarIn' ( smooth in mediump float)
+0:? 'colorSampIn' ( smooth sample in mediump 4-component vector of float)
+0:? 'colorSampleBad' ( sample out mediump 4-component vector of float)
+0:? 'colorfsi' ( flat sample in mediump 4-component vector of float)
+0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
+0:? 'badout' ( out mediump 4-component vector of float)
+0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.geom.out
new file mode 100644
index 00000000000..f3337660b50
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.geom.out
@@ -0,0 +1,251 @@
+320.geom
+ERROR: 0:19: 'fromVertex' : block instance name redefinition
+ERROR: 0:23: 'fromVertex' : redefinition
+ERROR: 0:25: 'fooC' : block instance name redefinition
+ERROR: 0:33: 'EmitStreamVertex' : no matching overloaded function found
+ERROR: 0:34: 'EndStreamPrimitive' : no matching overloaded function found
+ERROR: 0:37: 'gl_ClipDistance' : undeclared identifier
+ERROR: 0:37: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector
+ERROR: 0:38: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector
+ERROR: 0:37: 'assign' : l-value required (can't modify a const)
+ERROR: 0:45: 'selecting output stream' : not supported with this profile: es
+ERROR: 0:52: 'max_vertices' : too large, must be less than gl_MaxGeometryOutputVertices
+ERROR: 0:52: 'max_vertices' : cannot change previously set layout value
+ERROR: 0:53: 'max_vertices' : can only apply to a standalone qualifier
+ERROR: 0:58: 'points' : cannot change previously set output primitive
+ERROR: 0:59: 'points' : cannot change previously set output primitive
+ERROR: 0:60: 'triangle_strip' : cannot apply to input
+ERROR: 0:61: 'triangle_strip' : cannot apply to: uniform
+ERROR: 0:62: 'triangle_strip' : can only apply to a standalone qualifier
+ERROR: 0:63: 'triangle_strip' : can only apply to a standalone qualifier
+ERROR: 0:64: 'invocations' : can only apply to a standalone qualifier
+ERROR: 0:66: 'invocations' : can only apply to a standalone qualifier
+ERROR: 0:67: 'max_vertices' : can only apply to a standalone qualifier
+ERROR: 0:68: 'triangle_strip' : can only apply to a standalone qualifier
+ERROR: 0:71: 'lines' : cannot apply to 'out'
+ERROR: 0:73: 'triangles' : cannot change previously set input primitive
+ERROR: 0:74: 'triangles_adjacency' : cannot change previously set input primitive
+ERROR: 0:106: 'gl_ViewportIndex' : undeclared identifier
+ERROR: 0:107: 'gl_MaxViewports' : undeclared identifier
+ERROR: 0:113: 'lines_adjacency' : inconsistent input primitive for array size of explArrayBad
+ERROR: 0:114: 'in' : type must be an array: nonArrayed
+ERROR: 0:122: 'component' : not supported with this profile: es
+ERROR: 0:126: 'gl_MaxGeometryVaryingComponents' : undeclared identifier
+ERROR: 0:127: 'gl_VerticesIn' : undeclared identifier
+ERROR: 0:132: 'gl_PointSize' : required extension not requested: Possible extensions include:
+GL_EXT_geometry_point_size
+GL_OES_geometry_point_size
+ERROR: 0:133: 'gl_PointSize' : required extension not requested: Possible extensions include:
+GL_EXT_geometry_point_size
+GL_OES_geometry_point_size
+ERROR: 36 compilation errors. No code generated.
+
+
+Shader version: 320
+invocations = 4
+max_vertices = 200
+input primitive = lines_adjacency
+output primitive = triangle_strip
+ERROR: node is still EOpNull!
+0:29 Function Definition: main( ( global void)
+0:29 Function Parameters:
+0:31 Sequence
+0:31 EmitVertex ( global void)
+0:32 EndPrimitive ( global void)
+0:33 Constant:
+0:33 0.000000
+0:34 Constant:
+0:34 0.000000
+0:36 move second child to first child ( temp mediump 3-component vector of float)
+0:36 color: direct index for structure (layout( stream=0) out mediump 3-component vector of float)
+0:36 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 color: direct index for structure ( in mediump 3-component vector of float)
+0:36 direct index ( temp block{ in mediump 3-component vector of float color})
+0:36 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color})
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:37 move second child to first child ( temp float)
+0:37 Constant:
+0:37 0.000000
+0:38 Constant:
+0:38 0.000000
+0:39 move second child to first child ( temp highp 4-component vector of float)
+0:39 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position)
+0:39 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
+0:39 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
+0:39 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:41 move second child to first child ( temp highp int)
+0:41 'gl_PrimitiveID' (layout( stream=0) out highp int PrimitiveID)
+0:41 'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
+0:42 move second child to first child ( temp highp int)
+0:42 'gl_Layer' (layout( stream=0) out highp int Layer)
+0:42 Constant:
+0:42 2 (const int)
+0:53 Function Definition: foo(i1; ( global void)
+0:53 Function Parameters:
+0:53 'a' ( in highp int)
+0:55 Sequence
+0:55 move second child to first child ( temp mediump 4-component vector of float)
+0:55 a: direct index for structure (layout( stream=0) out mediump 4-component vector of float)
+0:55 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a})
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 1.000000
+0:55 1.000000
+0:55 1.000000
+0:55 1.000000
+0:104 Function Definition: fooe1( ( global void)
+0:104 Function Parameters:
+0:106 Sequence
+0:106 'gl_ViewportIndex' ( temp float)
+0:107 'gl_MaxViewports' ( temp float)
+0:108 Constant:
+0:108 4 (const int)
+0:109 Sequence
+0:109 move second child to first child ( temp highp int)
+0:109 'inv' ( temp highp int)
+0:109 'gl_InvocationID' ( in highp int InvocationID)
+0:124 Function Definition: notHere( ( global void)
+0:124 Function Parameters:
+0:126 Sequence
+0:126 'gl_MaxGeometryVaryingComponents' ( temp float)
+0:127 'gl_VerticesIn' ( temp float)
+0:130 Function Definition: pointSize2( ( global void)
+0:130 Function Parameters:
+0:132 Sequence
+0:132 Sequence
+0:132 move second child to first child ( temp highp float)
+0:132 'ps' ( temp highp float)
+0:132 gl_PointSize: direct index for structure ( in highp float PointSize)
+0:132 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
+0:132 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
+0:132 Constant:
+0:132 3 (const int)
+0:132 Constant:
+0:132 1 (const int)
+0:133 move second child to first child ( temp highp float)
+0:133 gl_PointSize: direct index for structure (layout( stream=0) gl_PointSize highp float PointSize)
+0:133 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize})
+0:133 Constant:
+0:133 1 (const uint)
+0:133 'ps' ( temp highp float)
+0:? Linker Objects
+0:? 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color})
+0:? 'nonBlockUnsized' ( in 4-element array of mediump 4-component vector of float)
+0:? 'toF' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
+0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
+0:? 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
+0:? 'ov4' (layout( stream=4) out mediump 4-component vector of float)
+0:? 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a})
+0:? 'badv4' (layout( stream=0) out mediump 4-component vector of float)
+0:? 'bad2v4' ( in 4-element array of mediump 4-component vector of float)
+0:? 'anon@1' (layout( stream=0) out block{layout( stream=0) out highp int a})
+0:? 'outbi' (layout( stream=0) out block{layout( stream=0) out highp int a, layout( stream=0) out highp int b, layout( stream=0) out highp int c})
+0:? 'insn' ( in 4-element array of block{ in highp int a15})
+0:? 'anon@2' (layout( stream=0) out block{layout( stream=0) out mediump float f15})
+0:? 'anon@3' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15})
+0:? 'summ' ( const highp int)
+0:? 2752 (const int)
+0:? 'explArray' ( in 4-element array of mediump 4-component vector of float)
+0:? 'explArrayBad' ( in 5-element array of mediump 4-component vector of float)
+0:? 'nonArrayed' ( in mediump 4-component vector of float)
+0:? 'myColor1' (layout( stream=0) flat out mediump 3-component vector of float)
+0:? 'myColor2' (layout( stream=0) centroid out mediump 3-component vector of float)
+0:? 'centr' ( centroid in 4-element array of mediump 3-component vector of float)
+0:? 'perSampleColor' (layout( stream=0) sample out mediump 4-component vector of float)
+0:? 'comp' (layout( location=7 component=2) in 4-element array of mediump float)
+
+
+Linked geometry stage:
+
+
+Shader version: 320
+invocations = 4
+max_vertices = 200
+input primitive = lines_adjacency
+output primitive = triangle_strip
+ERROR: node is still EOpNull!
+0:29 Function Definition: main( ( global void)
+0:29 Function Parameters:
+0:31 Sequence
+0:31 EmitVertex ( global void)
+0:32 EndPrimitive ( global void)
+0:33 Constant:
+0:33 0.000000
+0:34 Constant:
+0:34 0.000000
+0:36 move second child to first child ( temp mediump 3-component vector of float)
+0:36 color: direct index for structure (layout( stream=0) out mediump 3-component vector of float)
+0:36 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 color: direct index for structure ( in mediump 3-component vector of float)
+0:36 direct index ( temp block{ in mediump 3-component vector of float color})
+0:36 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color})
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:37 move second child to first child ( temp float)
+0:37 Constant:
+0:37 0.000000
+0:38 Constant:
+0:38 0.000000
+0:39 move second child to first child ( temp highp 4-component vector of float)
+0:39 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position)
+0:39 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
+0:39 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
+0:39 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:41 move second child to first child ( temp highp int)
+0:41 'gl_PrimitiveID' (layout( stream=0) out highp int PrimitiveID)
+0:41 'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
+0:42 move second child to first child ( temp highp int)
+0:42 'gl_Layer' (layout( stream=0) out highp int Layer)
+0:42 Constant:
+0:42 2 (const int)
+0:? Linker Objects
+0:? 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color})
+0:? 'nonBlockUnsized' ( in 4-element array of mediump 4-component vector of float)
+0:? 'toF' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
+0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color})
+0:? 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
+0:? 'ov4' (layout( stream=4) out mediump 4-component vector of float)
+0:? 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a})
+0:? 'badv4' (layout( stream=0) out mediump 4-component vector of float)
+0:? 'bad2v4' ( in 4-element array of mediump 4-component vector of float)
+0:? 'anon@1' (layout( stream=0) out block{layout( stream=0) out highp int a})
+0:? 'outbi' (layout( stream=0) out block{layout( stream=0) out highp int a, layout( stream=0) out highp int b, layout( stream=0) out highp int c})
+0:? 'insn' ( in 4-element array of block{ in highp int a15})
+0:? 'anon@2' (layout( stream=0) out block{layout( stream=0) out mediump float f15})
+0:? 'anon@3' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15})
+0:? 'summ' ( const highp int)
+0:? 2752 (const int)
+0:? 'explArray' ( in 4-element array of mediump 4-component vector of float)
+0:? 'explArrayBad' ( in 5-element array of mediump 4-component vector of float)
+0:? 'nonArrayed' ( in mediump 4-component vector of float)
+0:? 'myColor1' (layout( stream=0) flat out mediump 3-component vector of float)
+0:? 'myColor2' (layout( stream=0) centroid out mediump 3-component vector of float)
+0:? 'centr' ( centroid in 4-element array of mediump 3-component vector of float)
+0:? 'perSampleColor' (layout( stream=0) sample out mediump 4-component vector of float)
+0:? 'comp' (layout( location=7 component=2) in 4-element array of mediump float)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.tesc.out
new file mode 100644
index 00000000000..ff8012b1f1d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.tesc.out
@@ -0,0 +1,516 @@
+320.tesc
+ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
+ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
+ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
+ERROR: 0:10: 'patch' : can only use on output in tessellation-control shader
+ERROR: 0:24: 'gl_PointSize' : required extension not requested: Possible extensions include:
+GL_EXT_tessellation_point_size
+GL_OES_tessellation_point_size
+ERROR: 0:25: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:25: 'expression' : left of '[' is not of type array, matrix, or vector
+ERROR: 0:32: 'gl_PointSize' : required extension not requested: Possible extensions include:
+GL_EXT_tessellation_point_size
+GL_OES_tessellation_point_size
+ERROR: 0:33: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:33: 'expression' : left of '[' is not of type array, matrix, or vector
+ERROR: 0:33: 'assign' : l-value required (can't modify a const)
+ERROR: 0:39: '' : tessellation control barrier() cannot be placed within flow control
+ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control
+ERROR: 0:46: '' : tessellation control barrier() cannot be placed within flow control
+ERROR: 0:51: '' : tessellation control barrier() cannot be placed within flow control
+ERROR: 0:54: '' : tessellation control barrier() cannot be placed within flow control
+ERROR: 0:61: '' : tessellation control barrier() cannot be placed after a return from main()
+ERROR: 0:64: 'vertices' : can only apply to 'out'
+ERROR: 0:65: 'vertices' : cannot change previously set layout value
+ERROR: 0:69: '[' : array index out of range '4'
+ERROR: 0:71: '' : tessellation control barrier() must be in main()
+ERROR: 0:74: 'in' : type must be an array: ina
+ERROR: 0:76: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized
+ERROR: 0:78: '' : array size required
+ERROR: 0:84: 'location' : overlapping use of location 4
+ERROR: 0:88: 'location' : overlapping use of location 4
+ERROR: 0:98: 'vertices' : can only apply to a standalone qualifier
+ERROR: 0:99: 'vertices' : inconsistent output number of vertices for array size of misSized
+ERROR: 0:104: 'gl_PointSize' : required extension not requested: Possible extensions include:
+GL_EXT_tessellation_point_size
+GL_OES_tessellation_point_size
+ERROR: 0:105: 'gl_PointSize' : required extension not requested: Possible extensions include:
+GL_EXT_tessellation_point_size
+GL_OES_tessellation_point_size
+ERROR: 0:123: '[' : array index out of range '2'
+ERROR: 0:126: '' : array size required
+ERROR: 0:142: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID
+ERROR: 0:143: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID
+ERROR: 0:146: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID
+ERROR: 35 compilation errors. No code generated.
+
+
+Shader version: 320
+Requested GL_ARB_separate_shader_objects
+vertices = 4
+ERROR: node is still EOpNull!
+0:13 Function Definition: main( ( global void)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 Barrier ( global void)
+0:17 Sequence
+0:17 move second child to first child ( temp highp int)
+0:17 'a' ( temp highp int)
+0:17 Constant:
+0:17 5392 (const int)
+0:23 Sequence
+0:23 move second child to first child ( temp highp 4-component vector of float)
+0:23 'p' ( temp highp 4-component vector of float)
+0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
+0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
+0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
+0:23 Constant:
+0:23 1 (const int)
+0:23 Constant:
+0:23 0 (const int)
+0:24 Sequence
+0:24 move second child to first child ( temp highp float)
+0:24 'ps' ( temp highp float)
+0:24 gl_PointSize: direct index for structure ( in highp float PointSize)
+0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
+0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
+0:24 Constant:
+0:24 1 (const int)
+0:24 Constant:
+0:24 1 (const int)
+0:25 Sequence
+0:25 move second child to first child ( temp highp float)
+0:25 'cd' ( temp highp float)
+0:25 Constant:
+0:25 0.000000
+0:27 Sequence
+0:27 move second child to first child ( temp highp int)
+0:27 'pvi' ( temp highp int)
+0:27 'gl_PatchVerticesIn' ( in highp int PatchVertices)
+0:28 Sequence
+0:28 move second child to first child ( temp highp int)
+0:28 'pid' ( temp highp int)
+0:28 'gl_PrimitiveID' ( in highp int PrimitiveID)
+0:29 Sequence
+0:29 move second child to first child ( temp highp int)
+0:29 'iid' ( temp highp int)
+0:29 'gl_InvocationID' ( in highp int InvocationID)
+0:31 move second child to first child ( temp highp 4-component vector of float)
+0:31 gl_Position: direct index for structure ( out highp 4-component vector of float Position)
+0:31 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:31 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:31 'gl_InvocationID' ( in highp int InvocationID)
+0:31 Constant:
+0:31 0 (const int)
+0:31 'p' ( temp highp 4-component vector of float)
+0:32 move second child to first child ( temp highp float)
+0:32 gl_PointSize: direct index for structure ( out highp float PointSize)
+0:32 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:32 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:32 'gl_InvocationID' ( in highp int InvocationID)
+0:32 Constant:
+0:32 1 (const int)
+0:32 'ps' ( temp highp float)
+0:33 move second child to first child ( temp highp float)
+0:33 Constant:
+0:33 0.000000
+0:33 'cd' ( temp highp float)
+0:35 move second child to first child ( temp highp float)
+0:35 direct index ( patch temp highp float TessLevelOuter)
+0:35 'gl_TessLevelOuter' ( patch out 4-element array of highp float TessLevelOuter)
+0:35 Constant:
+0:35 3 (const int)
+0:35 Constant:
+0:35 3.200000
+0:36 move second child to first child ( temp highp float)
+0:36 direct index ( patch temp highp float TessLevelInner)
+0:36 'gl_TessLevelInner' ( patch out 2-element array of highp float TessLevelInner)
+0:36 Constant:
+0:36 1 (const int)
+0:36 Constant:
+0:36 1.300000
+0:38 Test condition and select ( temp void)
+0:38 Condition
+0:38 Compare Greater Than ( temp bool)
+0:38 'a' ( temp highp int)
+0:38 Constant:
+0:38 10 (const int)
+0:38 true case
+0:39 Barrier ( global void)
+0:38 false case
+0:41 Barrier ( global void)
+0:43 Barrier ( global void)
+0:47 Loop with condition not tested first
+0:47 Loop Condition
+0:47 Compare Greater Than ( temp bool)
+0:47 'a' ( temp highp int)
+0:47 Constant:
+0:47 10 (const int)
+0:47 Loop Body
+0:46 Sequence
+0:46 Barrier ( global void)
+0:49 switch
+0:49 condition
+0:49 'a' ( temp highp int)
+0:49 body
+0:49 Sequence
+0:50 default:
+0:? Sequence
+0:51 Barrier ( global void)
+0:52 Branch: Break
+0:54 Test condition and select ( temp highp int)
+0:54 Condition
+0:54 Compare Less Than ( temp bool)
+0:54 'a' ( temp highp int)
+0:54 Constant:
+0:54 12 (const int)
+0:54 true case
+0:54 'a' ( temp highp int)
+0:54 false case
+0:54 Comma ( temp highp int)
+0:54 Barrier ( global void)
+0:54 'a' ( temp highp int)
+0:56 Sequence
+0:56 Barrier ( global void)
+0:59 Branch: Return
+0:61 Barrier ( global void)
+0:67 Function Definition: foo( ( global void)
+0:67 Function Parameters:
+0:69 Sequence
+0:69 gl_Position: direct index for structure ( out highp 4-component vector of float Position)
+0:69 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:69 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:69 Constant:
+0:69 4 (const int)
+0:69 Constant:
+0:69 0 (const int)
+0:71 Barrier ( global void)
+0:102 Function Definition: pointSize2( ( global void)
+0:102 Function Parameters:
+0:104 Sequence
+0:104 Sequence
+0:104 move second child to first child ( temp highp float)
+0:104 'ps' ( temp highp float)
+0:104 gl_PointSize: direct index for structure ( in highp float PointSize)
+0:104 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
+0:104 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
+0:104 Constant:
+0:104 1 (const int)
+0:104 Constant:
+0:104 1 (const int)
+0:105 move second child to first child ( temp highp float)
+0:105 gl_PointSize: direct index for structure ( out highp float PointSize)
+0:105 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:105 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:105 'gl_InvocationID' ( in highp int InvocationID)
+0:105 Constant:
+0:105 1 (const int)
+0:105 'ps' ( temp highp float)
+0:110 Function Definition: goodfoop( ( global void)
+0:110 Function Parameters:
+0:? Sequence
+0:114 multiply second child into first child ( temp highp 3-component vector of float)
+0:114 'pv3' ( noContraction temp highp 3-component vector of float)
+0:114 'pv3' ( noContraction temp highp 3-component vector of float)
+0:115 move second child to first child ( temp highp 3-component vector of float)
+0:115 'pv3' ( noContraction temp highp 3-component vector of float)
+0:115 fma ( global highp 3-component vector of float)
+0:115 'pv3' ( noContraction temp highp 3-component vector of float)
+0:115 'pv3' ( noContraction temp highp 3-component vector of float)
+0:115 'pv3' ( noContraction temp highp 3-component vector of float)
+0:116 move second child to first child ( temp highp float)
+0:116 'd' ( noContraction temp highp float)
+0:116 fma ( global highp float)
+0:116 'd' ( noContraction temp highp float)
+0:116 'd' ( noContraction temp highp float)
+0:116 'd' ( noContraction temp highp float)
+0:119 Function Definition: bb( ( global void)
+0:119 Function Parameters:
+0:121 Sequence
+0:121 move second child to first child ( temp highp 4-component vector of float)
+0:121 direct index ( patch temp highp 4-component vector of float BoundingBox)
+0:121 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox)
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 0.000000
+0:121 0.000000
+0:121 0.000000
+0:121 0.000000
+0:122 move second child to first child ( temp highp 4-component vector of float)
+0:122 direct index ( patch temp highp 4-component vector of float BoundingBox)
+0:122 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 1.000000
+0:122 1.000000
+0:122 1.000000
+0:122 1.000000
+0:123 move second child to first child ( temp highp 4-component vector of float)
+0:123 direct index ( patch temp highp 4-component vector of float BoundingBox)
+0:123 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox)
+0:123 Constant:
+0:123 2 (const int)
+0:123 Constant:
+0:123 2.000000
+0:123 2.000000
+0:123 2.000000
+0:123 2.000000
+0:134 Function Definition: outputtingOutparam(i1; ( global void)
+0:134 Function Parameters:
+0:134 'a' ( out highp int)
+0:136 Sequence
+0:136 move second child to first child ( temp highp int)
+0:136 'a' ( out highp int)
+0:136 Constant:
+0:136 2 (const int)
+0:139 Function Definition: outputting( ( global void)
+0:139 Function Parameters:
+0:141 Sequence
+0:141 move second child to first child ( temp highp int)
+0:141 indirect index ( temp highp int)
+0:141 'outa' ( out 4-element array of highp int)
+0:141 'gl_InvocationID' ( in highp int InvocationID)
+0:141 Constant:
+0:141 2 (const int)
+0:142 move second child to first child ( temp highp int)
+0:142 direct index ( temp highp int)
+0:142 'outa' ( out 4-element array of highp int)
+0:142 Constant:
+0:142 1 (const int)
+0:142 Constant:
+0:142 2 (const int)
+0:143 move second child to first child ( temp highp 4-component vector of float)
+0:143 gl_Position: direct index for structure ( out highp 4-component vector of float Position)
+0:143 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:143 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:143 Constant:
+0:143 0 (const int)
+0:143 Constant:
+0:143 0 (const int)
+0:143 Constant:
+0:143 1.000000
+0:143 1.000000
+0:143 1.000000
+0:143 1.000000
+0:144 direct index ( temp highp int)
+0:144 'outa' ( out 4-element array of highp int)
+0:144 Constant:
+0:144 1 (const int)
+0:145 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:145 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:145 Constant:
+0:145 0 (const int)
+0:146 Function Call: outputtingOutparam(i1; ( global void)
+0:146 direct index ( temp highp int)
+0:146 'outa' ( out 4-element array of highp int)
+0:146 Constant:
+0:146 0 (const int)
+0:147 Function Call: outputtingOutparam(i1; ( global void)
+0:147 indirect index ( temp highp int)
+0:147 'outa' ( out 4-element array of highp int)
+0:147 'gl_InvocationID' ( in highp int InvocationID)
+0:148 move second child to first child ( temp highp float)
+0:148 f: direct index for structure ( out highp float)
+0:148 direct index ( patch temp block{ out highp float f})
+0:148 'patchIName' ( patch out 4-element array of block{ out highp float f})
+0:148 Constant:
+0:148 1 (const int)
+0:148 Constant:
+0:148 0 (const int)
+0:148 Constant:
+0:148 3.140000
+0:149 move second child to first child ( temp highp int)
+0:149 indirect index ( temp highp int)
+0:149 'outa' ( out 4-element array of highp int)
+0:149 'gl_InvocationID' ( in highp int InvocationID)
+0:149 Constant:
+0:149 2 (const int)
+0:? Linker Objects
+0:? 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:? 'outa' ( out 4-element array of highp int)
+0:? 'patchIn' ( patch in highp 4-component vector of float)
+0:? 'patchOut' ( patch out highp 4-component vector of float)
+0:? 'ina' ( in highp 2-component vector of float)
+0:? 'inb' ( in 32-element array of highp 2-component vector of float)
+0:? 'inc' ( in 32-element array of highp 2-component vector of float)
+0:? 'ind' ( in 32-element array of highp 2-component vector of float)
+0:? 'implA' ( patch out implicitly-sized array of highp float)
+0:? 'ivla' (layout( location=3) in 32-element array of highp 4-component vector of float)
+0:? 'ivlb' (layout( location=4) in 32-element array of highp 4-component vector of float)
+0:? 'ivlc' (layout( location=4) in 32-element array of highp 4-component vector of float)
+0:? 'ovla' (layout( location=3) out 4-element array of highp 4-component vector of float)
+0:? 'ovlb' (layout( location=4) out 4-element array of highp 4-component vector of float)
+0:? 'ovlc' (layout( location=4) out 4-element array of highp 4-component vector of float)
+0:? 'pinbi' ( patch out block{ out highp int a})
+0:? 'myColor2' ( centroid out 4-element array of highp 3-component vector of float)
+0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float)
+0:? 'perSampleColor' ( sample out 4-element array of highp 4-component vector of float)
+0:? 'badlay' ( out 4-element array of highp float)
+0:? 'misSized' ( out 5-element array of highp float)
+0:? 'okaySize' ( out 4-element array of highp float)
+0:? 'pv3' ( noContraction temp highp 3-component vector of float)
+0:? 'badpatchIName' ( patch out implicitly-sized array of block{ out highp float f})
+0:? 'patchIName' ( patch out 4-element array of block{ out highp float f})
+
+
+Linked tessellation control stage:
+
+
+Shader version: 320
+Requested GL_ARB_separate_shader_objects
+vertices = 4
+ERROR: node is still EOpNull!
+0:13 Function Definition: main( ( global void)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 Barrier ( global void)
+0:17 Sequence
+0:17 move second child to first child ( temp highp int)
+0:17 'a' ( temp highp int)
+0:17 Constant:
+0:17 5392 (const int)
+0:23 Sequence
+0:23 move second child to first child ( temp highp 4-component vector of float)
+0:23 'p' ( temp highp 4-component vector of float)
+0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
+0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:23 Constant:
+0:23 1 (const int)
+0:23 Constant:
+0:23 0 (const int)
+0:24 Sequence
+0:24 move second child to first child ( temp highp float)
+0:24 'ps' ( temp highp float)
+0:24 gl_PointSize: direct index for structure ( in highp float PointSize)
+0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:24 Constant:
+0:24 1 (const int)
+0:24 Constant:
+0:24 1 (const int)
+0:25 Sequence
+0:25 move second child to first child ( temp highp float)
+0:25 'cd' ( temp highp float)
+0:25 Constant:
+0:25 0.000000
+0:27 Sequence
+0:27 move second child to first child ( temp highp int)
+0:27 'pvi' ( temp highp int)
+0:27 'gl_PatchVerticesIn' ( in highp int PatchVertices)
+0:28 Sequence
+0:28 move second child to first child ( temp highp int)
+0:28 'pid' ( temp highp int)
+0:28 'gl_PrimitiveID' ( in highp int PrimitiveID)
+0:29 Sequence
+0:29 move second child to first child ( temp highp int)
+0:29 'iid' ( temp highp int)
+0:29 'gl_InvocationID' ( in highp int InvocationID)
+0:31 move second child to first child ( temp highp 4-component vector of float)
+0:31 gl_Position: direct index for structure ( out highp 4-component vector of float Position)
+0:31 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:31 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:31 'gl_InvocationID' ( in highp int InvocationID)
+0:31 Constant:
+0:31 0 (const int)
+0:31 'p' ( temp highp 4-component vector of float)
+0:32 move second child to first child ( temp highp float)
+0:32 gl_PointSize: direct index for structure ( out highp float PointSize)
+0:32 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:32 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:32 'gl_InvocationID' ( in highp int InvocationID)
+0:32 Constant:
+0:32 1 (const int)
+0:32 'ps' ( temp highp float)
+0:33 move second child to first child ( temp highp float)
+0:33 Constant:
+0:33 0.000000
+0:33 'cd' ( temp highp float)
+0:35 move second child to first child ( temp highp float)
+0:35 direct index ( patch temp highp float TessLevelOuter)
+0:35 'gl_TessLevelOuter' ( patch out 4-element array of highp float TessLevelOuter)
+0:35 Constant:
+0:35 3 (const int)
+0:35 Constant:
+0:35 3.200000
+0:36 move second child to first child ( temp highp float)
+0:36 direct index ( patch temp highp float TessLevelInner)
+0:36 'gl_TessLevelInner' ( patch out 2-element array of highp float TessLevelInner)
+0:36 Constant:
+0:36 1 (const int)
+0:36 Constant:
+0:36 1.300000
+0:38 Test condition and select ( temp void)
+0:38 Condition
+0:38 Compare Greater Than ( temp bool)
+0:38 'a' ( temp highp int)
+0:38 Constant:
+0:38 10 (const int)
+0:38 true case
+0:39 Barrier ( global void)
+0:38 false case
+0:41 Barrier ( global void)
+0:43 Barrier ( global void)
+0:47 Loop with condition not tested first
+0:47 Loop Condition
+0:47 Compare Greater Than ( temp bool)
+0:47 'a' ( temp highp int)
+0:47 Constant:
+0:47 10 (const int)
+0:47 Loop Body
+0:46 Sequence
+0:46 Barrier ( global void)
+0:49 switch
+0:49 condition
+0:49 'a' ( temp highp int)
+0:49 body
+0:49 Sequence
+0:50 default:
+0:? Sequence
+0:51 Barrier ( global void)
+0:52 Branch: Break
+0:54 Test condition and select ( temp highp int)
+0:54 Condition
+0:54 Compare Less Than ( temp bool)
+0:54 'a' ( temp highp int)
+0:54 Constant:
+0:54 12 (const int)
+0:54 true case
+0:54 'a' ( temp highp int)
+0:54 false case
+0:54 Comma ( temp highp int)
+0:54 Barrier ( global void)
+0:54 'a' ( temp highp int)
+0:56 Sequence
+0:56 Barrier ( global void)
+0:59 Branch: Return
+0:61 Barrier ( global void)
+0:? Linker Objects
+0:? 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
+0:? 'outa' ( out 4-element array of highp int)
+0:? 'patchIn' ( patch in highp 4-component vector of float)
+0:? 'patchOut' ( patch out highp 4-component vector of float)
+0:? 'ina' ( in highp 2-component vector of float)
+0:? 'inb' ( in 32-element array of highp 2-component vector of float)
+0:? 'inc' ( in 32-element array of highp 2-component vector of float)
+0:? 'ind' ( in 32-element array of highp 2-component vector of float)
+0:? 'implA' ( patch out 1-element array of highp float)
+0:? 'ivla' (layout( location=3) in 32-element array of highp 4-component vector of float)
+0:? 'ivlb' (layout( location=4) in 32-element array of highp 4-component vector of float)
+0:? 'ivlc' (layout( location=4) in 32-element array of highp 4-component vector of float)
+0:? 'ovla' (layout( location=3) out 4-element array of highp 4-component vector of float)
+0:? 'ovlb' (layout( location=4) out 4-element array of highp 4-component vector of float)
+0:? 'ovlc' (layout( location=4) out 4-element array of highp 4-component vector of float)
+0:? 'pinbi' ( patch out block{ out highp int a})
+0:? 'myColor2' ( centroid out 4-element array of highp 3-component vector of float)
+0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float)
+0:? 'perSampleColor' ( sample out 4-element array of highp 4-component vector of float)
+0:? 'badlay' ( out 4-element array of highp float)
+0:? 'misSized' ( out 5-element array of highp float)
+0:? 'okaySize' ( out 4-element array of highp float)
+0:? 'pv3' ( noContraction temp highp 3-component vector of float)
+0:? 'badpatchIName' ( patch out 1-element array of block{ out highp float f})
+0:? 'patchIName' ( patch out 4-element array of block{ out highp float f})
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.tese.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.tese.out
new file mode 100644
index 00000000000..ad8fe72e3fe
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.tese.out
@@ -0,0 +1,276 @@
+320.tese
+ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value
+ERROR: 0:5: 'triangles' : cannot change previously set input primitive
+ERROR: 0:6: 'isolines' : cannot change previously set input primitive
+ERROR: 0:8: 'ccw' : cannot change previously set vertex order
+ERROR: 0:12: 'equal_spacing' : cannot change previously set vertex spacing
+ERROR: 0:13: 'fractional_even_spacing' : cannot change previously set vertex spacing
+ERROR: 0:18: 'patch' : can only use on input in tessellation-evaluation shader
+ERROR: 0:22: 'barrier' : no matching overloaded function found
+ERROR: 0:33: 'gl_PointSize' : required extension not requested: Possible extensions include:
+GL_EXT_tessellation_point_size
+GL_OES_tessellation_point_size
+ERROR: 0:34: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:34: 'expression' : left of '[' is not of type array, matrix, or vector
+ERROR: 0:43: 'gl_PointSize' : required extension not requested: Possible extensions include:
+GL_EXT_tessellation_point_size
+GL_OES_tessellation_point_size
+ERROR: 0:44: 'gl_ClipDistance' : undeclared identifier
+ERROR: 0:44: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector
+ERROR: 0:44: 'assign' : l-value required (can't modify a const)
+ERROR: 0:47: 'patch' : cannot use interpolation qualifiers with patch
+ERROR: 0:48: 'patch' : cannot use interpolation qualifiers with patch
+ERROR: 0:49: 'noperspective' : Reserved word.
+ERROR: 0:49: 'noperspective' : not supported with this profile: es
+ERROR: 0:49: 'patch' : cannot use interpolation qualifiers with patch
+ERROR: 0:50: '' : can only have one auxiliary qualifier (centroid, patch, and sample)
+ERROR: 0:54: 'gl_PerVertex' : block already declared with size, can't redeclare as implicitly-sized
+ERROR: 0:59: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use
+ERROR: 0:64: 'quads' : cannot apply to 'out'
+ERROR: 0:64: 'cw' : can only apply to 'in'
+ERROR: 0:65: 'triangles' : cannot apply to 'out'
+ERROR: 0:66: 'isolines' : cannot apply to 'out'
+ERROR: 0:67: 'cw' : can only apply to 'in'
+ERROR: 0:68: 'fractional_odd_spacing' : can only apply to 'in'
+ERROR: 0:69: 'equal_spacing' : can only apply to 'in'
+ERROR: 0:70: 'fractional_even_spacing' : can only apply to 'in'
+ERROR: 0:71: 'point_mode' : can only apply to 'in'
+ERROR: 0:73: 'in' : type must be an array: ina
+ERROR: 0:75: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized
+ERROR: 0:78: 'in' : type must be an array: bla
+ERROR: 0:86: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized
+ERROR: 0:96: 'location' : overlapping use of location 24
+ERROR: 0:99: 'location' : overlapping use of location 24
+ERROR: 0:101: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved
+ERROR: 0:113: 'gl_BoundingBoxOES' : undeclared identifier
+ERROR: 40 compilation errors. No code generated.
+
+
+Shader version: 320
+Requested GL_ARB_separate_shader_objects
+input primitive = quads
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+using point mode
+ERROR: node is still EOpNull!
+0:20 Function Definition: main( ( global void)
+0:20 Function Parameters:
+0:22 Sequence
+0:22 Constant:
+0:22 0.000000
+0:24 Sequence
+0:24 move second child to first child ( temp highp int)
+0:24 'a' ( temp highp int)
+0:24 Constant:
+0:24 1512 (const int)
+0:32 Sequence
+0:32 move second child to first child ( temp highp 4-component vector of float)
+0:32 'p' ( temp highp 4-component vector of float)
+0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
+0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
+0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 0 (const int)
+0:33 Sequence
+0:33 move second child to first child ( temp highp float)
+0:33 'ps' ( temp highp float)
+0:33 gl_PointSize: direct index for structure ( in highp float PointSize)
+0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
+0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV})
+0:33 Constant:
+0:33 1 (const int)
+0:33 Constant:
+0:33 1 (const int)
+0:34 Sequence
+0:34 move second child to first child ( temp highp float)
+0:34 'cd' ( temp highp float)
+0:34 Constant:
+0:34 0.000000
+0:36 Sequence
+0:36 move second child to first child ( temp highp int)
+0:36 'pvi' ( temp highp int)
+0:36 'gl_PatchVerticesIn' ( in highp int PatchVertices)
+0:37 Sequence
+0:37 move second child to first child ( temp highp int)
+0:37 'pid' ( temp highp int)
+0:37 'gl_PrimitiveID' ( in highp int PrimitiveID)
+0:38 Sequence
+0:38 move second child to first child ( temp highp 3-component vector of float)
+0:38 'tc' ( temp highp 3-component vector of float)
+0:38 'gl_TessCoord' ( in highp 3-component vector of float TessCoord)
+0:39 Sequence
+0:39 move second child to first child ( temp highp float)
+0:39 'tlo' ( temp highp float)
+0:39 direct index ( patch temp highp float TessLevelOuter)
+0:39 'gl_TessLevelOuter' ( patch in 4-element array of highp float TessLevelOuter)
+0:39 Constant:
+0:39 3 (const int)
+0:40 Sequence
+0:40 move second child to first child ( temp highp float)
+0:40 'tli' ( temp highp float)
+0:40 direct index ( patch temp highp float TessLevelInner)
+0:40 'gl_TessLevelInner' ( patch in 2-element array of highp float TessLevelInner)
+0:40 Constant:
+0:40 1 (const int)
+0:42 move second child to first child ( temp highp 4-component vector of float)
+0:42 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:42 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 'p' ( temp highp 4-component vector of float)
+0:43 move second child to first child ( temp highp float)
+0:43 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize)
+0:43 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize})
+0:43 Constant:
+0:43 1 (const uint)
+0:43 'ps' ( temp highp float)
+0:44 move second child to first child ( temp highp float)
+0:44 Constant:
+0:44 0.000000
+0:44 'cd' ( temp highp float)
+0:111 Function Definition: bbbad( ( global void)
+0:111 Function Parameters:
+0:113 Sequence
+0:113 'gl_BoundingBoxOES' ( temp float)
+0:? Linker Objects
+0:? 'patchIn' ( patch in highp 4-component vector of float)
+0:? 'patchOut' ( patch out highp 4-component vector of float)
+0:? 'badp1' ( smooth patch in highp 4-component vector of float)
+0:? 'badp2' ( flat patch in highp 4-component vector of float)
+0:? 'badp3' ( noperspective patch in highp 4-component vector of float)
+0:? 'badp4' ( patch sample in highp 3-component vector of float)
+0:? 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position})
+0:? 'ina' ( in highp 2-component vector of float)
+0:? 'inb' ( in 32-element array of highp 2-component vector of float)
+0:? 'inc' ( in 32-element array of highp 2-component vector of float)
+0:? 'ind' ( in 32-element array of highp 2-component vector of float)
+0:? 'bla' ( in block{ in highp int f})
+0:? 'blb' ( in 32-element array of block{ in highp int f})
+0:? 'blc' ( in 32-element array of block{ in highp int f})
+0:? 'bld' ( in 32-element array of block{ in highp int f})
+0:? 'ivla' (layout( location=23) in 32-element array of highp 4-component vector of float)
+0:? 'ivlb' (layout( location=24) in 32-element array of highp 4-component vector of float)
+0:? 'ivlc' (layout( location=24) in 32-element array of highp 4-component vector of float)
+0:? 'ovla' (layout( location=23) out 2-element array of highp 4-component vector of float)
+0:? 'ovlb' (layout( location=24) out 2-element array of highp 4-component vector of float)
+0:? 'pinbi' ( patch in block{ in highp int a})
+0:? 'myColor2' ( centroid out highp 3-component vector of float)
+0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float)
+0:? 'perSampleColor' ( sample out highp 4-component vector of float)
+
+
+Linked tessellation evaluation stage:
+
+
+Shader version: 320
+Requested GL_ARB_separate_shader_objects
+input primitive = quads
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+using point mode
+ERROR: node is still EOpNull!
+0:20 Function Definition: main( ( global void)
+0:20 Function Parameters:
+0:22 Sequence
+0:22 Constant:
+0:22 0.000000
+0:24 Sequence
+0:24 move second child to first child ( temp highp int)
+0:24 'a' ( temp highp int)
+0:24 Constant:
+0:24 1512 (const int)
+0:32 Sequence
+0:32 move second child to first child ( temp highp 4-component vector of float)
+0:32 'p' ( temp highp 4-component vector of float)
+0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position)
+0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 0 (const int)
+0:33 Sequence
+0:33 move second child to first child ( temp highp float)
+0:33 'ps' ( temp highp float)
+0:33 gl_PointSize: direct index for structure ( in highp float PointSize)
+0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:33 Constant:
+0:33 1 (const int)
+0:33 Constant:
+0:33 1 (const int)
+0:34 Sequence
+0:34 move second child to first child ( temp highp float)
+0:34 'cd' ( temp highp float)
+0:34 Constant:
+0:34 0.000000
+0:36 Sequence
+0:36 move second child to first child ( temp highp int)
+0:36 'pvi' ( temp highp int)
+0:36 'gl_PatchVerticesIn' ( in highp int PatchVertices)
+0:37 Sequence
+0:37 move second child to first child ( temp highp int)
+0:37 'pid' ( temp highp int)
+0:37 'gl_PrimitiveID' ( in highp int PrimitiveID)
+0:38 Sequence
+0:38 move second child to first child ( temp highp 3-component vector of float)
+0:38 'tc' ( temp highp 3-component vector of float)
+0:38 'gl_TessCoord' ( in highp 3-component vector of float TessCoord)
+0:39 Sequence
+0:39 move second child to first child ( temp highp float)
+0:39 'tlo' ( temp highp float)
+0:39 direct index ( patch temp highp float TessLevelOuter)
+0:39 'gl_TessLevelOuter' ( patch in 4-element array of highp float TessLevelOuter)
+0:39 Constant:
+0:39 3 (const int)
+0:40 Sequence
+0:40 move second child to first child ( temp highp float)
+0:40 'tli' ( temp highp float)
+0:40 direct index ( patch temp highp float TessLevelInner)
+0:40 'gl_TessLevelInner' ( patch in 2-element array of highp float TessLevelInner)
+0:40 Constant:
+0:40 1 (const int)
+0:42 move second child to first child ( temp highp 4-component vector of float)
+0:42 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:42 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 'p' ( temp highp 4-component vector of float)
+0:43 move second child to first child ( temp highp float)
+0:43 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize)
+0:43 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize})
+0:43 Constant:
+0:43 1 (const uint)
+0:43 'ps' ( temp highp float)
+0:44 move second child to first child ( temp highp float)
+0:44 Constant:
+0:44 0.000000
+0:44 'cd' ( temp highp float)
+0:? Linker Objects
+0:? 'patchIn' ( patch in highp 4-component vector of float)
+0:? 'patchOut' ( patch out highp 4-component vector of float)
+0:? 'badp1' ( smooth patch in highp 4-component vector of float)
+0:? 'badp2' ( flat patch in highp 4-component vector of float)
+0:? 'badp3' ( noperspective patch in highp 4-component vector of float)
+0:? 'badp4' ( patch sample in highp 3-component vector of float)
+0:? 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position})
+0:? 'ina' ( in highp 2-component vector of float)
+0:? 'inb' ( in 32-element array of highp 2-component vector of float)
+0:? 'inc' ( in 32-element array of highp 2-component vector of float)
+0:? 'ind' ( in 32-element array of highp 2-component vector of float)
+0:? 'bla' ( in block{ in highp int f})
+0:? 'blb' ( in 32-element array of block{ in highp int f})
+0:? 'blc' ( in 32-element array of block{ in highp int f})
+0:? 'bld' ( in 32-element array of block{ in highp int f})
+0:? 'ivla' (layout( location=23) in 32-element array of highp 4-component vector of float)
+0:? 'ivlb' (layout( location=24) in 32-element array of highp 4-component vector of float)
+0:? 'ivlc' (layout( location=24) in 32-element array of highp 4-component vector of float)
+0:? 'ovla' (layout( location=23) out 2-element array of highp 4-component vector of float)
+0:? 'ovlb' (layout( location=24) out 2-element array of highp 4-component vector of float)
+0:? 'pinbi' ( patch in block{ in highp int a})
+0:? 'myColor2' ( centroid out highp 3-component vector of float)
+0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float)
+0:? 'perSampleColor' ( sample out highp 4-component vector of float)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.vert.out
new file mode 100644
index 00000000000..2838ab89d45
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/320.vert.out
@@ -0,0 +1,797 @@
+320.vert
+ERROR: 0:6: 's' : member of block cannot be or contain a sampler, image, or atomic_uint type
+ERROR: 0:14: 'location' : overlapping use of location 12
+ERROR: 0:16: 'input block' : not supported in this stage: vertex
+ERROR: 0:18: 'gl_PerVertex' : block redeclaration has extra members
+ERROR: 0:28: 'gl_PointSize' : member of nameless block was not redeclared
+ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize'
+ERROR: 0:31: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use
+ERROR: 0:36: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block
+ERROR: 0:40: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block
+ERROR: 0:44: 'centroid' : cannot use centroid qualifier on an interface block
+ERROR: 0:48: 'invariant' : cannot use invariant qualifier on an interface block
+ERROR: 0:68: 'variable indexing buffer block array' : not supported with this profile: es
+ERROR: 0:73: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument
+ERROR: 0:76: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:77: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:78: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:79: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:80: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:116: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:117: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:118: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:120: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:121: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:122: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:123: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:191: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:192: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:193: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:211: 'textureSize' : no matching overloaded function found
+ERROR: 0:211: '=' : cannot convert from ' const float' to ' temp highp 3-component vector of int'
+ERROR: 0:252: 'interpolateAtCentroid' : no matching overloaded function found
+ERROR: 0:253: 'interpolateAtSample' : no matching overloaded function found
+ERROR: 0:254: 'interpolateAtOffset' : no matching overloaded function found
+ERROR: 34 compilation errors. No code generated.
+
+
+Shader version: 320
+ERROR: node is still EOpNull!
+0:23 Function Definition: main( ( global void)
+0:23 Function Parameters:
+0:25 Sequence
+0:25 Sequence
+0:25 move second child to first child ( temp highp int)
+0:25 'sum' ( temp highp int)
+0:25 add ( temp highp int)
+0:25 'gl_VertexID' ( gl_VertexId highp int VertexId)
+0:26 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
+0:27 move second child to first child ( temp highp 4-component vector of float)
+0:27 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:27 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
+0:27 Constant:
+0:27 0 (const uint)
+0:27 Constant:
+0:27 1.000000
+0:27 1.000000
+0:27 1.000000
+0:27 1.000000
+0:28 gl_PointSize: direct index for structure ( gl_PointSize highp void PointSize)
+0:28 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
+0:28 Constant:
+0:28 1 (const uint)
+0:62 Function Definition: pfoo( ( global void)
+0:62 Function Parameters:
+0:? Sequence
+0:65 move second child to first child ( temp highp 2-component vector of float)
+0:65 'h' ( noContraction temp highp 2-component vector of float)
+0:65 fma ( global highp 2-component vector of float)
+0:65 'inf' ( in highp 2-component vector of float)
+0:65 'ing' ( in highp 2-component vector of float)
+0:65 'h' ( noContraction temp highp 2-component vector of float)
+0:66 indirect index ( temp lowp sampler2D)
+0:66 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:66 add ( temp highp int)
+0:66 'sIndex' ( uniform highp int)
+0:66 Constant:
+0:66 1 (const int)
+0:67 indirect index (layout( column_major shared) temp block{layout( column_major shared) uniform highp int i})
+0:67 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i})
+0:67 add ( temp highp int)
+0:67 'sIndex' ( uniform highp int)
+0:67 Constant:
+0:67 1 (const int)
+0:68 indirect index (layout( column_major shared) temp block{layout( column_major shared) buffer highp int i})
+0:68 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i})
+0:68 subtract ( temp highp int)
+0:68 'sIndex' ( uniform highp int)
+0:68 Constant:
+0:68 2 (const int)
+0:69 direct index ( writeonly temp highp image2D)
+0:69 'iArray' ( writeonly uniform 5-element array of highp image2D)
+0:69 Constant:
+0:69 2 (const int)
+0:70 indirect index ( writeonly temp highp image2D)
+0:70 'iArray' ( writeonly uniform 5-element array of highp image2D)
+0:70 subtract ( temp highp int)
+0:70 'sIndex' ( uniform highp int)
+0:70 Constant:
+0:70 2 (const int)
+0:71 textureGatherOffset ( global lowp 4-component vector of float)
+0:71 direct index ( temp lowp sampler2D)
+0:71 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 0.100000
+0:71 0.100000
+0:71 Convert float to int ( temp lowp 2-component vector of int)
+0:71 'inf' ( in highp 2-component vector of float)
+0:72 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp)
+0:72 direct index ( temp lowp sampler2D)
+0:72 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 0.100000
+0:72 0.100000
+0:72 Constant:
+0:72 0 (const int)
+0:72 0 (const int)
+0:72 0 (const int)
+0:72 0 (const int)
+0:72 0 (const int)
+0:72 0 (const int)
+0:72 0 (const int)
+0:72 0 (const int)
+0:73 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp)
+0:73 direct index ( temp lowp sampler2D)
+0:73 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:73 Constant:
+0:73 0 (const int)
+0:73 Constant:
+0:73 0.100000
+0:73 0.100000
+0:73 'offsets' ( uniform 4-element array of highp 2-component vector of int)
+0:101 Function Definition: bufferT( ( global void)
+0:101 Function Parameters:
+0:103 Sequence
+0:103 Sequence
+0:103 move second child to first child ( temp highp int)
+0:103 's1' ( temp highp int)
+0:103 textureSize ( global highp int)
+0:103 'bufSamp1' ( uniform highp samplerBuffer)
+0:104 Sequence
+0:104 move second child to first child ( temp highp int)
+0:104 's2' ( temp highp int)
+0:104 textureSize ( global highp int)
+0:104 'bufSamp2' ( uniform highp isamplerBuffer)
+0:105 Sequence
+0:105 move second child to first child ( temp highp int)
+0:105 's3' ( temp highp int)
+0:105 textureSize ( global highp int)
+0:105 'bufSamp3' ( uniform highp usamplerBuffer)
+0:107 Sequence
+0:107 move second child to first child ( temp highp int)
+0:107 's4' ( temp highp int)
+0:107 imageQuerySize ( global highp int)
+0:107 'bufSamp4' ( writeonly uniform highp imageBuffer)
+0:108 Sequence
+0:108 move second child to first child ( temp highp int)
+0:108 's5' ( temp highp int)
+0:108 imageQuerySize ( global highp int)
+0:108 'bufSamp5' ( writeonly uniform highp iimageBuffer)
+0:109 Sequence
+0:109 move second child to first child ( temp highp int)
+0:109 's6' ( temp highp int)
+0:109 imageQuerySize ( global highp int)
+0:109 'bufSamp6' ( writeonly uniform highp uimageBuffer)
+0:111 Sequence
+0:111 move second child to first child ( temp highp 4-component vector of float)
+0:111 'f1' ( temp highp 4-component vector of float)
+0:111 textureFetch ( global highp 4-component vector of float)
+0:111 'bufSamp1' ( uniform highp samplerBuffer)
+0:111 's1' ( temp highp int)
+0:112 Sequence
+0:112 move second child to first child ( temp highp 4-component vector of int)
+0:112 'f2' ( temp highp 4-component vector of int)
+0:112 textureFetch ( global highp 4-component vector of int)
+0:112 'bufSamp2' ( uniform highp isamplerBuffer)
+0:112 's2' ( temp highp int)
+0:113 Sequence
+0:113 move second child to first child ( temp highp 4-component vector of uint)
+0:113 'f3' ( temp highp 4-component vector of uint)
+0:113 textureFetch ( global highp 4-component vector of uint)
+0:113 'bufSamp3' ( uniform highp usamplerBuffer)
+0:113 's3' ( temp highp int)
+0:149 Function Definition: CAT( ( global void)
+0:149 Function Parameters:
+0:151 Sequence
+0:151 Sequence
+0:151 move second child to first child ( temp highp 3-component vector of int)
+0:151 's4' ( temp highp 3-component vector of int)
+0:151 textureSize ( global highp 3-component vector of int)
+0:151 'CA4' ( uniform highp samplerCubeArray)
+0:151 Constant:
+0:151 1 (const int)
+0:152 Sequence
+0:152 move second child to first child ( temp highp 3-component vector of int)
+0:152 's5' ( temp highp 3-component vector of int)
+0:152 textureSize ( global highp 3-component vector of int)
+0:152 'CA5' ( uniform highp samplerCubeArrayShadow)
+0:152 Constant:
+0:152 1 (const int)
+0:153 Sequence
+0:153 move second child to first child ( temp highp 3-component vector of int)
+0:153 's6' ( temp highp 3-component vector of int)
+0:153 textureSize ( global highp 3-component vector of int)
+0:153 'CA6' ( uniform highp isamplerCubeArray)
+0:153 Constant:
+0:153 1 (const int)
+0:154 Sequence
+0:154 move second child to first child ( temp highp 3-component vector of int)
+0:154 's7' ( temp highp 3-component vector of int)
+0:154 textureSize ( global highp 3-component vector of int)
+0:154 'CA7' ( uniform highp usamplerCubeArray)
+0:154 Constant:
+0:154 1 (const int)
+0:156 Sequence
+0:156 move second child to first child ( temp highp 4-component vector of float)
+0:156 't4' ( temp highp 4-component vector of float)
+0:156 texture ( global highp 4-component vector of float)
+0:156 'CA4' ( uniform highp samplerCubeArray)
+0:156 Constant:
+0:156 0.500000
+0:156 0.500000
+0:156 0.500000
+0:156 0.500000
+0:157 Sequence
+0:157 move second child to first child ( temp highp float)
+0:157 't5' ( temp highp float)
+0:157 texture ( global highp float)
+0:157 'CA5' ( uniform highp samplerCubeArrayShadow)
+0:157 Constant:
+0:157 0.500000
+0:157 0.500000
+0:157 0.500000
+0:157 0.500000
+0:157 Constant:
+0:157 3.000000
+0:158 Sequence
+0:158 move second child to first child ( temp highp 4-component vector of int)
+0:158 't6' ( temp highp 4-component vector of int)
+0:158 texture ( global highp 4-component vector of int)
+0:158 'CA6' ( uniform highp isamplerCubeArray)
+0:158 Constant:
+0:158 0.500000
+0:158 0.500000
+0:158 0.500000
+0:158 0.500000
+0:159 Sequence
+0:159 move second child to first child ( temp highp 4-component vector of uint)
+0:159 't7' ( temp highp 4-component vector of uint)
+0:159 texture ( global highp 4-component vector of uint)
+0:159 'CA7' ( uniform highp usamplerCubeArray)
+0:159 Constant:
+0:159 0.500000
+0:159 0.500000
+0:159 0.500000
+0:159 0.500000
+0:161 Sequence
+0:161 move second child to first child ( temp highp 4-component vector of float)
+0:161 'L4' ( temp highp 4-component vector of float)
+0:161 textureLod ( global highp 4-component vector of float)
+0:161 'CA4' ( uniform highp samplerCubeArray)
+0:161 Constant:
+0:161 0.500000
+0:161 0.500000
+0:161 0.500000
+0:161 0.500000
+0:161 Constant:
+0:161 0.240000
+0:162 Sequence
+0:162 move second child to first child ( temp highp 4-component vector of int)
+0:162 'L6' ( temp highp 4-component vector of int)
+0:162 textureLod ( global highp 4-component vector of int)
+0:162 'CA6' ( uniform highp isamplerCubeArray)
+0:162 Constant:
+0:162 0.500000
+0:162 0.500000
+0:162 0.500000
+0:162 0.500000
+0:162 Constant:
+0:162 0.260000
+0:163 Sequence
+0:163 move second child to first child ( temp highp 4-component vector of uint)
+0:163 'L7' ( temp highp 4-component vector of uint)
+0:163 textureLod ( global highp 4-component vector of uint)
+0:163 'CA7' ( uniform highp usamplerCubeArray)
+0:163 Constant:
+0:163 0.500000
+0:163 0.500000
+0:163 0.500000
+0:163 0.500000
+0:163 Constant:
+0:163 0.270000
+0:165 Sequence
+0:165 move second child to first child ( temp highp 4-component vector of float)
+0:165 'g4' ( temp highp 4-component vector of float)
+0:165 textureGrad ( global highp 4-component vector of float)
+0:165 'CA4' ( uniform highp samplerCubeArray)
+0:165 Constant:
+0:165 0.500000
+0:165 0.500000
+0:165 0.500000
+0:165 0.500000
+0:165 Constant:
+0:165 0.100000
+0:165 0.100000
+0:165 0.100000
+0:165 Constant:
+0:165 0.200000
+0:165 0.200000
+0:165 0.200000
+0:166 Sequence
+0:166 move second child to first child ( temp highp 4-component vector of int)
+0:166 'g6' ( temp highp 4-component vector of int)
+0:166 textureGrad ( global highp 4-component vector of int)
+0:166 'CA6' ( uniform highp isamplerCubeArray)
+0:166 Constant:
+0:166 0.500000
+0:166 0.500000
+0:166 0.500000
+0:166 0.500000
+0:166 Constant:
+0:166 0.100000
+0:166 0.100000
+0:166 0.100000
+0:166 Constant:
+0:166 0.200000
+0:166 0.200000
+0:166 0.200000
+0:167 Sequence
+0:167 move second child to first child ( temp highp 4-component vector of uint)
+0:167 'g7' ( temp highp 4-component vector of uint)
+0:167 textureGrad ( global highp 4-component vector of uint)
+0:167 'CA7' ( uniform highp usamplerCubeArray)
+0:167 Constant:
+0:167 0.500000
+0:167 0.500000
+0:167 0.500000
+0:167 0.500000
+0:167 Constant:
+0:167 0.100000
+0:167 0.100000
+0:167 0.100000
+0:167 Constant:
+0:167 0.200000
+0:167 0.200000
+0:167 0.200000
+0:169 Sequence
+0:169 move second child to first child ( temp highp 4-component vector of float)
+0:169 'gath4' ( temp highp 4-component vector of float)
+0:169 textureGather ( global highp 4-component vector of float)
+0:169 'CA4' ( uniform highp samplerCubeArray)
+0:169 Constant:
+0:169 0.500000
+0:169 0.500000
+0:169 0.500000
+0:169 0.500000
+0:170 Sequence
+0:170 move second child to first child ( temp highp 4-component vector of float)
+0:170 'gathC4' ( temp highp 4-component vector of float)
+0:170 textureGather ( global highp 4-component vector of float)
+0:170 'CA4' ( uniform highp samplerCubeArray)
+0:170 Constant:
+0:170 0.500000
+0:170 0.500000
+0:170 0.500000
+0:170 0.500000
+0:170 Constant:
+0:170 2 (const int)
+0:171 Sequence
+0:171 move second child to first child ( temp highp 4-component vector of int)
+0:171 'gath6' ( temp highp 4-component vector of int)
+0:171 textureGather ( global highp 4-component vector of int)
+0:171 'CA6' ( uniform highp isamplerCubeArray)
+0:171 Constant:
+0:171 0.500000
+0:171 0.500000
+0:171 0.500000
+0:171 0.500000
+0:172 Sequence
+0:172 move second child to first child ( temp highp 4-component vector of int)
+0:172 'gathC6' ( temp highp 4-component vector of int)
+0:172 textureGather ( global highp 4-component vector of int)
+0:172 'CA6' ( uniform highp isamplerCubeArray)
+0:172 Constant:
+0:172 0.500000
+0:172 0.500000
+0:172 0.500000
+0:172 0.500000
+0:172 Constant:
+0:172 1 (const int)
+0:173 Sequence
+0:173 move second child to first child ( temp highp 4-component vector of uint)
+0:173 'gath7' ( temp highp 4-component vector of uint)
+0:173 textureGather ( global highp 4-component vector of uint)
+0:173 'CA7' ( uniform highp usamplerCubeArray)
+0:173 Constant:
+0:173 0.500000
+0:173 0.500000
+0:173 0.500000
+0:173 0.500000
+0:174 Sequence
+0:174 move second child to first child ( temp highp 4-component vector of uint)
+0:174 'gathC7' ( temp highp 4-component vector of uint)
+0:174 textureGather ( global highp 4-component vector of uint)
+0:174 'CA7' ( uniform highp usamplerCubeArray)
+0:174 Constant:
+0:174 0.500000
+0:174 0.500000
+0:174 0.500000
+0:174 0.500000
+0:174 Constant:
+0:174 0 (const int)
+0:176 Sequence
+0:176 move second child to first child ( temp highp 4-component vector of float)
+0:176 'gath5' ( temp highp 4-component vector of float)
+0:176 textureGather ( global highp 4-component vector of float)
+0:176 'CA5' ( uniform highp samplerCubeArrayShadow)
+0:176 Constant:
+0:176 0.500000
+0:176 0.500000
+0:176 0.500000
+0:176 0.500000
+0:176 Constant:
+0:176 2.500000
+0:178 Sequence
+0:178 move second child to first child ( temp highp 3-component vector of int)
+0:178 's1' ( temp highp 3-component vector of int)
+0:178 imageQuerySize ( global highp 3-component vector of int)
+0:178 'CA1' ( writeonly uniform highp imageCubeArray)
+0:179 Sequence
+0:179 move second child to first child ( temp highp 3-component vector of int)
+0:179 's2' ( temp highp 3-component vector of int)
+0:179 imageQuerySize ( global highp 3-component vector of int)
+0:179 'CA2' ( writeonly uniform highp iimageCubeArray)
+0:180 Sequence
+0:180 move second child to first child ( temp highp 3-component vector of int)
+0:180 's3' ( temp highp 3-component vector of int)
+0:180 imageQuerySize ( global highp 3-component vector of int)
+0:180 'CA3' ( writeonly uniform highp uimageCubeArray)
+0:182 imageStore ( global highp void)
+0:182 'CA1' ( writeonly uniform highp imageCubeArray)
+0:182 's3' ( temp highp 3-component vector of int)
+0:182 Constant:
+0:182 1.000000
+0:182 1.000000
+0:182 1.000000
+0:182 1.000000
+0:183 imageStore ( global highp void)
+0:183 'CA2' ( writeonly uniform highp iimageCubeArray)
+0:183 's3' ( temp highp 3-component vector of int)
+0:183 Constant:
+0:183 1 (const int)
+0:183 1 (const int)
+0:183 1 (const int)
+0:183 1 (const int)
+0:184 imageStore ( global highp void)
+0:184 'CA3' ( writeonly uniform highp uimageCubeArray)
+0:184 's3' ( temp highp 3-component vector of int)
+0:184 Constant:
+0:184 1 (const uint)
+0:184 1 (const uint)
+0:184 1 (const uint)
+0:184 1 (const uint)
+0:186 Sequence
+0:186 move second child to first child ( temp highp 4-component vector of float)
+0:186 'cl1' ( temp highp 4-component vector of float)
+0:186 imageLoad ( global highp 4-component vector of float)
+0:186 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray)
+0:186 's3' ( temp highp 3-component vector of int)
+0:187 Sequence
+0:187 move second child to first child ( temp highp 4-component vector of int)
+0:187 'cl2' ( temp highp 4-component vector of int)
+0:187 imageLoad ( global highp 4-component vector of int)
+0:187 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray)
+0:187 's3' ( temp highp 3-component vector of int)
+0:188 Sequence
+0:188 move second child to first child ( temp highp 4-component vector of uint)
+0:188 'cl3' ( temp highp 4-component vector of uint)
+0:188 imageLoad ( global highp 4-component vector of uint)
+0:188 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray)
+0:188 's3' ( temp highp 3-component vector of int)
+0:203 Function Definition: MSA( ( global void)
+0:203 Function Parameters:
+0:205 Sequence
+0:205 Sequence
+0:205 move second child to first child ( temp highp 4-component vector of float)
+0:205 'tf' ( temp highp 4-component vector of float)
+0:205 textureFetch ( global highp 4-component vector of float)
+0:205 'samp2DMSA' ( uniform highp sampler2DMSArray)
+0:205 Constant:
+0:205 5 (const int)
+0:205 5 (const int)
+0:205 5 (const int)
+0:205 Constant:
+0:205 2 (const int)
+0:206 Sequence
+0:206 move second child to first child ( temp highp 4-component vector of int)
+0:206 'tfi' ( temp highp 4-component vector of int)
+0:206 textureFetch ( global highp 4-component vector of int)
+0:206 'samp2DMSAi' ( uniform highp isampler2DMSArray)
+0:206 Constant:
+0:206 5 (const int)
+0:206 5 (const int)
+0:206 5 (const int)
+0:206 Constant:
+0:206 2 (const int)
+0:207 Sequence
+0:207 move second child to first child ( temp highp 4-component vector of uint)
+0:207 'tfu' ( temp highp 4-component vector of uint)
+0:207 textureFetch ( global highp 4-component vector of uint)
+0:207 'samp2DMSAu' ( uniform highp usampler2DMSArray)
+0:207 Constant:
+0:207 5 (const int)
+0:207 5 (const int)
+0:207 5 (const int)
+0:207 Constant:
+0:207 2 (const int)
+0:209 Sequence
+0:209 move second child to first child ( temp highp 3-component vector of int)
+0:209 'tfs' ( temp highp 3-component vector of int)
+0:209 textureSize ( global highp 3-component vector of int)
+0:209 'samp2DMSA' ( uniform highp sampler2DMSArray)
+0:210 Sequence
+0:210 move second child to first child ( temp highp 3-component vector of int)
+0:210 'tfsi' ( temp highp 3-component vector of int)
+0:210 textureSize ( global highp 3-component vector of int)
+0:210 'samp2DMSAi' ( uniform highp isampler2DMSArray)
+0:212 Sequence
+0:212 move second child to first child ( temp highp 3-component vector of int)
+0:212 'tfsu' ( temp highp 3-component vector of int)
+0:212 textureSize ( global highp 3-component vector of int)
+0:212 'samp2DMSAu' ( uniform highp usampler2DMSArray)
+0:220 Function Definition: goodImageAtom( ( global void)
+0:220 Function Parameters:
+0:? Sequence
+0:226 imageAtomicAdd ( global highp int)
+0:226 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:226 'P' ( uniform highp 2-component vector of int)
+0:226 'dati' ( temp highp int)
+0:227 imageAtomicAdd ( global highp uint)
+0:227 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:227 'P' ( uniform highp 2-component vector of int)
+0:227 'datu' ( temp highp uint)
+0:228 imageAtomicMin ( global highp int)
+0:228 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:228 'P' ( uniform highp 2-component vector of int)
+0:228 'dati' ( temp highp int)
+0:229 imageAtomicMin ( global highp uint)
+0:229 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:229 'P' ( uniform highp 2-component vector of int)
+0:229 'datu' ( temp highp uint)
+0:230 imageAtomicMax ( global highp int)
+0:230 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:230 'P' ( uniform highp 2-component vector of int)
+0:230 'dati' ( temp highp int)
+0:231 imageAtomicMax ( global highp uint)
+0:231 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:231 'P' ( uniform highp 2-component vector of int)
+0:231 'datu' ( temp highp uint)
+0:232 imageAtomicAnd ( global highp int)
+0:232 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:232 'P' ( uniform highp 2-component vector of int)
+0:232 'dati' ( temp highp int)
+0:233 imageAtomicAnd ( global highp uint)
+0:233 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:233 'P' ( uniform highp 2-component vector of int)
+0:233 'datu' ( temp highp uint)
+0:234 imageAtomicOr ( global highp int)
+0:234 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:234 'P' ( uniform highp 2-component vector of int)
+0:234 'dati' ( temp highp int)
+0:235 imageAtomicOr ( global highp uint)
+0:235 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:235 'P' ( uniform highp 2-component vector of int)
+0:235 'datu' ( temp highp uint)
+0:236 imageAtomicXor ( global highp int)
+0:236 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:236 'P' ( uniform highp 2-component vector of int)
+0:236 'dati' ( temp highp int)
+0:237 imageAtomicXor ( global highp uint)
+0:237 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:237 'P' ( uniform highp 2-component vector of int)
+0:237 'datu' ( temp highp uint)
+0:238 imageAtomicExchange ( global highp int)
+0:238 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:238 'P' ( uniform highp 2-component vector of int)
+0:238 'dati' ( temp highp int)
+0:239 imageAtomicExchange ( global highp uint)
+0:239 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:239 'P' ( uniform highp 2-component vector of int)
+0:239 'datu' ( temp highp uint)
+0:240 imageAtomicExchange ( global highp float)
+0:240 'im2Df' (layout( r32f) uniform highp image2D)
+0:240 'P' ( uniform highp 2-component vector of int)
+0:240 'datf' ( temp highp float)
+0:241 imageAtomicCompSwap ( global highp int)
+0:241 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:241 'P' ( uniform highp 2-component vector of int)
+0:241 Constant:
+0:241 3 (const int)
+0:241 'dati' ( temp highp int)
+0:242 imageAtomicCompSwap ( global highp uint)
+0:242 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:242 'P' ( uniform highp 2-component vector of int)
+0:242 Constant:
+0:242 5 (const uint)
+0:242 'datu' ( temp highp uint)
+0:250 Function Definition: badInterp( ( global void)
+0:250 Function Parameters:
+0:252 Sequence
+0:252 Constant:
+0:252 0.000000
+0:253 Constant:
+0:253 0.000000
+0:254 Constant:
+0:254 0.000000
+0:? Linker Objects
+0:? 'outbinst' ( out block{ out highp int a, out highp 4-component vector of float v, out highp sampler2D s})
+0:? 'anon@0' ( out block{layout( location=12) out highp int aAnon, layout( location=13) out highp 4-component vector of float vAnon})
+0:? 'aliased' (layout( location=12) smooth out highp int)
+0:? 'inbinst' ( in block{ in highp int a})
+0:? 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
+0:? 'smon' ( smooth out block{ out highp int i})
+0:? 'fmon' ( flat out block{ out highp int i})
+0:? 'cmon' ( centroid out block{ out highp int i})
+0:? 'imon' ( invariant out block{ out highp int i})
+0:? 'inf' ( in highp 2-component vector of float)
+0:? 'ing' ( in highp 2-component vector of float)
+0:? 'offsets' ( uniform 4-element array of highp 2-component vector of int)
+0:? 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:? 'sIndex' ( uniform highp int)
+0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint)
+0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i})
+0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i})
+0:? 'iArray' ( writeonly uniform 5-element array of highp image2D)
+0:? 'constOffsets' ( const 4-element array of highp 2-component vector of int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 'noPreSamp1' ( uniform mediump samplerBuffer)
+0:? 'noPreSamp2' ( uniform mediump isamplerBuffer)
+0:? 'noPreSamp3' ( uniform mediump usamplerBuffer)
+0:? 'noPreSamp4' ( writeonly uniform mediump imageBuffer)
+0:? 'noPreSamp5' ( writeonly uniform mediump iimageBuffer)
+0:? 'noPreSamp6' ( writeonly uniform mediump uimageBuffer)
+0:? 'bufSamp1' ( uniform highp samplerBuffer)
+0:? 'bufSamp2' ( uniform highp isamplerBuffer)
+0:? 'bufSamp3' ( uniform highp usamplerBuffer)
+0:? 'bufSamp4' ( writeonly uniform highp imageBuffer)
+0:? 'bufSamp5' ( writeonly uniform highp iimageBuffer)
+0:? 'bufSamp6' ( writeonly uniform highp uimageBuffer)
+0:? 'noPreCA1' ( writeonly uniform mediump imageCubeArray)
+0:? 'noPreCA2' ( writeonly uniform mediump iimageCubeArray)
+0:? 'noPreCA3' ( writeonly uniform mediump uimageCubeArray)
+0:? 'noPreCA4' ( uniform mediump samplerCubeArray)
+0:? 'noPreCA5' ( uniform mediump samplerCubeArrayShadow)
+0:? 'noPreCA6' ( uniform mediump isamplerCubeArray)
+0:? 'noPreCA7' ( uniform mediump usamplerCubeArray)
+0:? 'CA1' ( writeonly uniform highp imageCubeArray)
+0:? 'CA2' ( writeonly uniform highp iimageCubeArray)
+0:? 'CA3' ( writeonly uniform highp uimageCubeArray)
+0:? 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray)
+0:? 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray)
+0:? 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray)
+0:? 'CA4' ( uniform highp samplerCubeArray)
+0:? 'CA5' ( uniform highp samplerCubeArrayShadow)
+0:? 'CA6' ( uniform highp isamplerCubeArray)
+0:? 'CA7' ( uniform highp usamplerCubeArray)
+0:? 'noPrec2DMS' ( uniform mediump sampler2DMSArray)
+0:? 'noPrec2DMSi' ( uniform mediump isampler2DMSArray)
+0:? 'noPrec2DMSu' ( uniform mediump usampler2DMSArray)
+0:? 'samp2DMSA' ( uniform highp sampler2DMSArray)
+0:? 'samp2DMSAi' ( uniform highp isampler2DMSArray)
+0:? 'samp2DMSAu' ( uniform highp usampler2DMSArray)
+0:? 'im2Df' (layout( r32f) uniform highp image2D)
+0:? 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:? 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:? 'P' ( uniform highp 2-component vector of int)
+0:? 'colorSample' ( smooth sample out highp 4-component vector of float)
+0:? 'colorfsi' ( flat sample out highp 4-component vector of float)
+0:? 'sampInArray' ( smooth sample out 4-element array of highp 3-component vector of float)
+0:? 'inv4' ( in highp 4-component vector of float)
+0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 320
+ERROR: node is still EOpNull!
+0:23 Function Definition: main( ( global void)
+0:23 Function Parameters:
+0:25 Sequence
+0:25 Sequence
+0:25 move second child to first child ( temp highp int)
+0:25 'sum' ( temp highp int)
+0:25 add ( temp highp int)
+0:25 'gl_VertexID' ( gl_VertexId highp int VertexId)
+0:26 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
+0:27 move second child to first child ( temp highp 4-component vector of float)
+0:27 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:27 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
+0:27 Constant:
+0:27 0 (const uint)
+0:27 Constant:
+0:27 1.000000
+0:27 1.000000
+0:27 1.000000
+0:27 1.000000
+0:28 gl_PointSize: direct index for structure ( gl_PointSize highp void PointSize)
+0:28 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
+0:28 Constant:
+0:28 1 (const uint)
+0:? Linker Objects
+0:? 'outbinst' ( out block{ out highp int a, out highp 4-component vector of float v, out highp sampler2D s})
+0:? 'anon@0' ( out block{layout( location=12) out highp int aAnon, layout( location=13) out highp 4-component vector of float vAnon})
+0:? 'aliased' (layout( location=12) smooth out highp int)
+0:? 'inbinst' ( in block{ in highp int a})
+0:? 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, })
+0:? 'smon' ( smooth out block{ out highp int i})
+0:? 'fmon' ( flat out block{ out highp int i})
+0:? 'cmon' ( centroid out block{ out highp int i})
+0:? 'imon' ( invariant out block{ out highp int i})
+0:? 'inf' ( in highp 2-component vector of float)
+0:? 'ing' ( in highp 2-component vector of float)
+0:? 'offsets' ( uniform 4-element array of highp 2-component vector of int)
+0:? 'sArray' ( uniform 4-element array of lowp sampler2D)
+0:? 'sIndex' ( uniform highp int)
+0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint)
+0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i})
+0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i})
+0:? 'iArray' ( writeonly uniform 5-element array of highp image2D)
+0:? 'constOffsets' ( const 4-element array of highp 2-component vector of int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 'noPreSamp1' ( uniform mediump samplerBuffer)
+0:? 'noPreSamp2' ( uniform mediump isamplerBuffer)
+0:? 'noPreSamp3' ( uniform mediump usamplerBuffer)
+0:? 'noPreSamp4' ( writeonly uniform mediump imageBuffer)
+0:? 'noPreSamp5' ( writeonly uniform mediump iimageBuffer)
+0:? 'noPreSamp6' ( writeonly uniform mediump uimageBuffer)
+0:? 'bufSamp1' ( uniform highp samplerBuffer)
+0:? 'bufSamp2' ( uniform highp isamplerBuffer)
+0:? 'bufSamp3' ( uniform highp usamplerBuffer)
+0:? 'bufSamp4' ( writeonly uniform highp imageBuffer)
+0:? 'bufSamp5' ( writeonly uniform highp iimageBuffer)
+0:? 'bufSamp6' ( writeonly uniform highp uimageBuffer)
+0:? 'noPreCA1' ( writeonly uniform mediump imageCubeArray)
+0:? 'noPreCA2' ( writeonly uniform mediump iimageCubeArray)
+0:? 'noPreCA3' ( writeonly uniform mediump uimageCubeArray)
+0:? 'noPreCA4' ( uniform mediump samplerCubeArray)
+0:? 'noPreCA5' ( uniform mediump samplerCubeArrayShadow)
+0:? 'noPreCA6' ( uniform mediump isamplerCubeArray)
+0:? 'noPreCA7' ( uniform mediump usamplerCubeArray)
+0:? 'CA1' ( writeonly uniform highp imageCubeArray)
+0:? 'CA2' ( writeonly uniform highp iimageCubeArray)
+0:? 'CA3' ( writeonly uniform highp uimageCubeArray)
+0:? 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray)
+0:? 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray)
+0:? 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray)
+0:? 'CA4' ( uniform highp samplerCubeArray)
+0:? 'CA5' ( uniform highp samplerCubeArrayShadow)
+0:? 'CA6' ( uniform highp isamplerCubeArray)
+0:? 'CA7' ( uniform highp usamplerCubeArray)
+0:? 'noPrec2DMS' ( uniform mediump sampler2DMSArray)
+0:? 'noPrec2DMSi' ( uniform mediump isampler2DMSArray)
+0:? 'noPrec2DMSu' ( uniform mediump usampler2DMSArray)
+0:? 'samp2DMSA' ( uniform highp sampler2DMSArray)
+0:? 'samp2DMSAi' ( uniform highp isampler2DMSArray)
+0:? 'samp2DMSAu' ( uniform highp usampler2DMSArray)
+0:? 'im2Df' (layout( r32f) uniform highp image2D)
+0:? 'im2Du' (layout( r32ui) uniform highp uimage2D)
+0:? 'im2Di' (layout( r32i) uniform highp iimage2D)
+0:? 'P' ( uniform highp 2-component vector of int)
+0:? 'colorSample' ( smooth sample out highp 4-component vector of float)
+0:? 'colorfsi' ( flat sample out highp 4-component vector of float)
+0:? 'sampInArray' ( smooth sample out 4-element array of highp 3-component vector of float)
+0:? 'inv4' ( in highp 4-component vector of float)
+0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/330.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/330.frag.out
index 4b5a84be5ac..5919c76afbe 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/330.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/330.frag.out
@@ -100,7 +100,7 @@ ERROR: node is still EOpNull!
0:? 'v20' ( smooth in 4-component vector of float)
0:? 'v21' (layout( location=60) smooth in float)
0:? 'v22' (layout( location=2) smooth in float)
-0:? 'anon@1' ( in block{layout( location=1 component=0) in float f1, layout( location=3) in float f2})
+0:? 'anon@1' ( in block{layout( location=1) in float f1, layout( location=3) in float f2})
0:? 'uinst' (layout( location=1 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2})
0:? 'v3' (layout( location=6) smooth in 4-component vector of float)
0:? 'v4' ( smooth in 4-component vector of float)
@@ -108,12 +108,12 @@ ERROR: node is still EOpNull!
0:? 'v6' (layout( location=30) smooth in 4-component vector of float)
0:? 'v23' (layout( location=61) smooth in float)
0:? 'v24' (layout( location=62) smooth in float)
-0:? 'ininst2' ( in block{layout( location=28 component=0) in bool b1, layout( location=29 component=0) in float f1, layout( location=25) in float f2, layout( location=26 component=0) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23 component=0) in 4-component vector of float f4, layout( location=24 component=0) in 4-component vector of float f5})
+0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2, layout( location=26) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23) in 4-component vector of float f4, layout( location=24) in 4-component vector of float f5})
0:? 'uinst2' (layout( location=13 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2})
0:? 'in3' ( in block{ in float f1, layout( location=40) in float f2})
0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2})
0:? 's' (layout( location=33) smooth in structure{ global 3-component vector of float a, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c, temp 2-component vector of float A})
-0:? 'anon@2' ( in block{layout( location=44 component=0) in 4-component vector of float d, layout( location=45 component=0) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48 component=0) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42 component=0) in 4-component vector of float i, layout( location=43 component=0) in 4-component vector of float j, layout( location=44 component=0) in 4-component vector of float k})
+0:? 'anon@2' ( in block{layout( location=44) in 4-component vector of float d, layout( location=45) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42) in 4-component vector of float i, layout( location=43) in 4-component vector of float j, layout( location=44) in 4-component vector of float k})
0:? 'outVar2' (layout( location=4095 index=0) out 4-component vector of float)
0:? 'outVar3' (layout( location=0 index=1) out 4-component vector of float)
0:? 'outVar4' (layout( location=0 index=1) out 4-component vector of float)
@@ -165,7 +165,7 @@ ERROR: node is still EOpNull!
0:? 'v20' ( smooth in 4-component vector of float)
0:? 'v21' (layout( location=60) smooth in float)
0:? 'v22' (layout( location=2) smooth in float)
-0:? 'anon@1' ( in block{layout( location=1 component=0) in float f1, layout( location=3) in float f2})
+0:? 'anon@1' ( in block{layout( location=1) in float f1, layout( location=3) in float f2})
0:? 'uinst' (layout( location=1 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2})
0:? 'v3' (layout( location=6) smooth in 4-component vector of float)
0:? 'v4' ( smooth in 4-component vector of float)
@@ -173,12 +173,12 @@ ERROR: node is still EOpNull!
0:? 'v6' (layout( location=30) smooth in 4-component vector of float)
0:? 'v23' (layout( location=61) smooth in float)
0:? 'v24' (layout( location=62) smooth in float)
-0:? 'ininst2' ( in block{layout( location=28 component=0) in bool b1, layout( location=29 component=0) in float f1, layout( location=25) in float f2, layout( location=26 component=0) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23 component=0) in 4-component vector of float f4, layout( location=24 component=0) in 4-component vector of float f5})
+0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2, layout( location=26) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23) in 4-component vector of float f4, layout( location=24) in 4-component vector of float f5})
0:? 'uinst2' (layout( location=13 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2})
0:? 'in3' ( in block{ in float f1, layout( location=40) in float f2})
0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2})
0:? 's' (layout( location=33) smooth in structure{ global 3-component vector of float a, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c, temp 2-component vector of float A})
-0:? 'anon@2' ( in block{layout( location=44 component=0) in 4-component vector of float d, layout( location=45 component=0) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48 component=0) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42 component=0) in 4-component vector of float i, layout( location=43 component=0) in 4-component vector of float j, layout( location=44 component=0) in 4-component vector of float k})
+0:? 'anon@2' ( in block{layout( location=44) in 4-component vector of float d, layout( location=45) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42) in 4-component vector of float i, layout( location=43) in 4-component vector of float j, layout( location=44) in 4-component vector of float k})
0:? 'outVar2' (layout( location=4095 index=0) out 4-component vector of float)
0:? 'outVar3' (layout( location=0 index=1) out 4-component vector of float)
0:? 'outVar4' (layout( location=0 index=1) out 4-component vector of float)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.frag.out
index bd936c714d8..443b1024162 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.frag.out
@@ -1,5 +1,4 @@
400.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:18: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument
ERROR: 0:22: 'textureGatherOffset(...)' : must be a compile-time constant: component argument
ERROR: 0:23: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument
@@ -34,8 +33,12 @@ ERROR: 0:183: 'textureQueryLod' : no matching overloaded function found
ERROR: 0:183: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
ERROR: 0:184: 'textureQueryLod' : no matching overloaded function found
ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
-ERROR: 0:187: '' : syntax error
-ERROR: 35 compilation errors. No code generated.
+ERROR: 0:197: 'subroutine' : feature not yet implemented
+ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification
+ERROR: 0:198: 'subroutine' : feature not yet implemented
+ERROR: 0:199: 'subroutine' : feature not yet implemented
+ERROR: 0:201: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER
+ERROR: 39 compilation errors. No code generated.
Shader version: 400
@@ -469,6 +472,39 @@ ERROR: node is still EOpNull!
0:181 'pf3' ( temp 3-component vector of float)
0:183 'lod' ( temp 2-component vector of float)
0:184 'lod' ( temp 2-component vector of float)
+0:190 Function Definition: bitwiseConv( ( global void)
+0:190 Function Parameters:
+0:192 Sequence
+0:192 move second child to first child ( temp uint)
+0:192 'iout' ( out uint)
+0:192 bitwise and ( temp uint)
+0:192 'uu' ( uniform uint)
+0:192 Convert int to uint ( temp uint)
+0:192 'i' ( flat in int)
+0:193 add second child into first child ( temp uint)
+0:193 'iout' ( out uint)
+0:193 exclusive-or ( temp uint)
+0:193 'uu' ( uniform uint)
+0:193 Convert int to uint ( temp uint)
+0:193 'i' ( flat in int)
+0:194 add second child into first child ( temp uint)
+0:194 'iout' ( out uint)
+0:194 inclusive-or ( temp uint)
+0:194 Convert int to uint ( temp uint)
+0:194 'i' ( flat in int)
+0:194 'uu' ( uniform uint)
+0:198 Function Definition: subT1( ( temp float)
+0:198 Function Parameters:
+0:198 Sequence
+0:198 Branch: Return with expression
+0:198 Constant:
+0:198 1.000000
+0:199 Function Definition: subT2( ( temp float)
+0:199 Function Parameters:
+0:199 Sequence
+0:199 Branch: Return with expression
+0:199 Constant:
+0:199 1.000000
0:? Linker Objects
0:? 'c2D' ( smooth in 2-component vector of float)
0:? 'i' ( flat in int)
@@ -512,6 +548,8 @@ ERROR: node is still EOpNull!
0:? 'sampCubeAs' ( uniform samplerCubeArrayShadow)
0:? 'sampBuf' ( uniform samplerBuffer)
0:? 'sampRect' ( uniform sampler2DRect)
+0:? 'uu' ( uniform uint)
+0:? 'iout' ( out uint)
Linked fragment stage:
@@ -685,4 +723,6 @@ ERROR: node is still EOpNull!
0:? 'sampCubeAs' ( uniform samplerCubeArrayShadow)
0:? 'sampBuf' ( uniform samplerBuffer)
0:? 'sampRect' ( uniform sampler2DRect)
+0:? 'uu' ( uniform uint)
+0:? 'iout' ( out uint)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.geom.out
index 989b439b115..1d009d9ca81 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.geom.out
@@ -1,5 +1,4 @@
400.geom
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:12: 'invocations' : can only apply to a standalone qualifier
ERROR: 0:20: 'patch' : not supported in this stage: geometry
ERROR: 0:20: 'gl_PointSize' : cannot add layout to redeclared block member
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.tesc.out
index 434079e9565..762f0b8d466 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.tesc.out
@@ -1,5 +1,4 @@
400.tesc
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.tese.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.tese.out
index 2f1c97c09e1..e9ffcdf6d32 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.tese.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.tese.out
@@ -1,5 +1,4 @@
400.tese
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value
ERROR: 0:5: 'triangles' : cannot change previously set input primitive
ERROR: 0:6: 'isolines' : cannot change previously set input primitive
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.vert.out
index 0fd453d8e5a..05f58e2d84f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/400.vert.out
@@ -1,5 +1,4 @@
400.vert
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
ERROR: 0:4: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
ERROR: 0:5: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.geom.out
index 7219e4de1a7..4d35d520683 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.geom.out
@@ -1,5 +1,4 @@
410.geom
-Warning, version 410 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:8: 'myIn' : cannot redeclare a built-in block with a user name
ERROR: 0:12: 'gl_myIn' : no declaration found for redeclaration
ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.tesc.out
index 9b459b17f72..68593d0db23 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.tesc.out
@@ -1,5 +1,4 @@
410.tesc
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'length' : array must first be sized by a redeclaration or layout qualifier
ERROR: 1 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.vert.out
index 0e2c87e736f..aacdf36c0f7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/410.vert.out
@@ -1,6 +1,4 @@
410.vert
-Warning, version 410 is not yet complete; most version-specific features are present, but some are missing.
-
Shader version: 410
0:? Sequence
0:7 Function Definition: main( ( global void)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.comp.out
index 07944de8fae..4e091acff31 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.comp.out
@@ -1,5 +1,4 @@
420.comp
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'gl_WorkGroupSize' : not supported for this version or the enabled extensions
ERROR: 1 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.frag.out
index 31fe7f96f88..5f2b0f7b0a0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.frag.out
@@ -1,10 +1,9 @@
420.frag
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth
ERROR: 0:11: 'layout qualifier' : can only apply depth layout to gl_FragDepth
ERROR: 0:12: 'gl_FragDepth' : cannot redeclare after use
-WARNING: 0:14: 'atomic_uint' : implicitly sized atomic_uint array treated as having one element for tracking the default offset
-ERROR: 3 compilation errors. No code generated.
+ERROR: 0:14: 'atomic_uint' : array must be explicitly sized
+ERROR: 4 compilation errors. No code generated.
Shader version: 420
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.geom.out
index 0fccfe0f2fa..fe9e12f4201 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.geom.out
@@ -1,5 +1,4 @@
420.geom
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:9: 'length' : array must first be sized by a redeclaration or layout qualifier
ERROR: 0:11: '[' : array must be sized by a redeclaration or layout qualifier before being indexed with a variable
ERROR: 0:42: 'assign' : l-value required (can't modify a const)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.tesc.out
index 83816f30b51..7876bd63a39 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.tesc.out
@@ -1,5 +1,4 @@
420.tesc
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out
ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a
ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.tese.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.tese.out
index 9986c2a2625..f14e1c0d3d8 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.tese.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.tese.out
@@ -1,5 +1,4 @@
420.tese
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:7: '=' : cannot convert from ' const 3-element array of float' to ' global 2-element array of float'
ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): temp 2-component vector of float
ERROR: 0:9: 'initializer list' : wrong number of matrix columns: temp 3X3 matrix of float
@@ -11,7 +10,7 @@ ERROR: 0:29: 'constructor' : cannot convert parameter 2 from ' const 2X2 matrix
ERROR: 0:29: ' const 2-element array of 4-component vector of float' : cannot construct with these arguments
ERROR: 0:29: '=' : cannot convert from ' const float' to ' global 2-element array of 4-component vector of float'
ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float
-ERROR: 0:40: 'constructor' : cannot convert parameter 1 from ' temp float' to ' temp structure{ global float s, global float t}'
+ERROR: 0:40: 'constructor' : cannot convert parameter 1 from ' const structure{ global 4-component vector of float a, global 4-component vector of float b}' to ' temp structure{ global float s, global float t}'
ERROR: 0:70: 'initializer list' : wrong number of structure members
ERROR: 13 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.vert.out
index 8fb8546eef8..b912dc078d0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420.vert.out
@@ -1,5 +1,4 @@
420.vert
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:2: '#version' : must occur first in shader
WARNING: 0:3: varying deprecated in version 130; may be removed in future release
ERROR: 0:3: 'varying' : no longer supported in core profile; removed in version 420
@@ -33,7 +32,7 @@ ERROR: 0:85: '' : vertex input cannot be further qualified
ERROR: 0:86: 'patch' : not supported in this stage: vertex
ERROR: 0:100: '=' : global const initializers must be constant ' const int'
ERROR: 0:101: '' : array size must be a constant integer expression
-ERROR: 0:107: 'image variables declared 'writeonly' without a format layout qualifier' : not supported for this version or the enabled extensions
+ERROR: 0:107: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported for this version or the enabled extensions
ERROR: 0:114: 'imageAtomicMin' : only supported on image with format r32i or r32ui
ERROR: 0:115: 'imageAtomicMax' : no matching overloaded function found
ERROR: 0:119: 'writeonly' : argument cannot drop memory qualifier when passed to formal parameter
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420_size_gl_in.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420_size_gl_in.geom.out
index 3c3b8105fe6..d058013d89b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420_size_gl_in.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/420_size_gl_in.geom.out
@@ -1,5 +1,4 @@
420_size_gl_in.geom
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:19: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use
ERROR: 1 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430.comp.out
index 91aaf786c1c..c4ad19ed008 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430.comp.out
@@ -1,5 +1,4 @@
430.comp
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'local_size' : cannot change previously set size
ERROR: 0:5: 'local_size' : too large; see gl_MaxComputeWorkGroupSize
ERROR: 0:43: 'in' : global storage input qualifier cannot be used in a compute shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430.vert.out
index a5898f24f61..29ffb01aa8b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430.vert.out
@@ -1,5 +1,4 @@
430.vert
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers
ERROR: 0:7: 'input block' : not supported in this stage: vertex
ERROR: 0:7: 'location qualifier on in/out block' : not supported for this version or the enabled extensions
@@ -233,7 +232,7 @@ ERROR: node is still EOpNull!
0:? 'start2' ( const int)
0:? 5 (const int)
0:? 'v6' (layout( location=19) in 4-component vector of float)
-0:? 'ininst2' ( in block{layout( location=28 component=0) in bool b1, layout( location=29 component=0) in float f1, layout( location=25) in float f2})
+0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2})
0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2})
0:? 'bbinst2g' ( out block{layout( xfb_buffer=3 xfb_offset=64) out 4-component vector of float bbv})
0:? 'bg' (layout( xfb_buffer=1 xfb_offset=48 xfb_stride=80) smooth out 4-component vector of float)
@@ -308,7 +307,7 @@ ERROR: node is still EOpNull!
0:? 'start2' ( const int)
0:? 5 (const int)
0:? 'v6' (layout( location=19) in 4-component vector of float)
-0:? 'ininst2' ( in block{layout( location=28 component=0) in bool b1, layout( location=29 component=0) in float f1, layout( location=25) in float f2})
+0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2})
0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2})
0:? 'bbinst2g' ( out block{layout( xfb_buffer=3 xfb_offset=64) out 4-component vector of float bbv})
0:? 'bg' (layout( xfb_buffer=1 xfb_offset=48 xfb_stride=80) smooth out 4-component vector of float)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430AofA.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430AofA.frag.out
index 3d532803a21..22dc4d3f578 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430AofA.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430AofA.frag.out
@@ -1,5 +1,4 @@
430AofA.frag
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:6: '[]' : only outermost dimension of an array of arrays can be implicitly sized
ERROR: 0:14: 'constructor' : constructing non-array constituent from array argument
ERROR: 0:15: 'constructor' : array constructor argument not correct type to construct array element
@@ -406,7 +405,7 @@ ERROR: node is still EOpNull!
0:? Linker Objects
0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of float)
0:? 'gu' ( global implicitly-sized array of 7-element array of float)
-0:? 'gimp' ( global implicitly-sized array of implicitly-sized array of float)
+0:? 'gimp' ( global implicitly-sized array of 1-element array of float)
0:? 'g4' ( global 4-element array of 7-element array of float)
0:? 'g5' ( global 5-element array of 7-element array of float)
@@ -769,7 +768,7 @@ ERROR: node is still EOpNull!
0:? Linker Objects
0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of float)
0:? 'gu' ( global 1-element array of 7-element array of float)
-0:? 'gimp' ( global 1-element array of implicitly-sized array of float)
+0:? 'gimp' ( global 1-element array of 1-element array of float)
0:? 'g4' ( global 4-element array of 7-element array of float)
0:? 'g5' ( global 5-element array of 7-element array of float)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430scope.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430scope.vert.out
index 3e710024ab1..0d9138922e7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430scope.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/430scope.vert.out
@@ -1,5 +1,4 @@
430scope.vert
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:5: 'a' : redefinition
ERROR: 0:17: 'b' : function name is redeclaration of existing name
ERROR: 0:20: 'c' : redefinition
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/435.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/435.vert.out
new file mode 100644
index 00000000000..188a0a43c3b
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/435.vert.out
@@ -0,0 +1,25 @@
+435.vert
+ERROR: version not supported
+ERROR: 1 compilation errors. No code generated.
+
+
+Shader version: 450
+ERROR: node is still EOpNull!
+0:2 Function Definition: main( ( global void)
+0:2 Function Parameters:
+0:? Linker Objects
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 450
+ERROR: node is still EOpNull!
+0:2 Function Definition: main( ( global void)
+0:2 Function Parameters:
+0:? Linker Objects
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/440.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/440.frag.out
index ff276415fce..18e014f9219 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/440.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/440.frag.out
@@ -1,5 +1,4 @@
440.frag
-Warning, version 440 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:11: 'location' : overlapping use of location 4
ERROR: 0:13: 'component' : type overflows the available 4 components
ERROR: 0:22: 'location' : fragment outputs sharing the same location must be the same basic type 30
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/440.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/440.vert.out
index 3448113c830..8eafb0aea1d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/440.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/440.vert.out
@@ -1,5 +1,4 @@
440.vert
-Warning, version 440 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:8: 'component' : type overflows the available 4 components
ERROR: 0:15: 'component' : component is too large
ERROR: 0:23: 'location' : overlapping use of location 4
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.comp.out
index 203c4b24d17..4ae77ccaa06 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.comp.out
@@ -1,18 +1,24 @@
450.comp
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+ERROR: 0:2: 'local_size_x' : must be at least 1
+ERROR: 0:5: 'shared' : not allowed in nested scope
+ERROR: 2 compilation errors. No code generated.
+
Shader version: 450
local_size = (1, 1, 1)
-0:? Sequence
+ERROR: node is still EOpNull!
+0:3 Function Definition: main( ( global void)
+0:3 Function Parameters:
0:? Linker Objects
Linked compute stage:
-ERROR: Linking compute stage: Missing entry point: Each stage requires one entry point
Shader version: 450
local_size = (1, 1, 1)
-0:? Sequence
+ERROR: node is still EOpNull!
+0:3 Function Definition: main( ( global void)
+0:3 Function Parameters:
0:? Linker Objects
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.frag.out
index 297ae63fb01..9cbb4cbd08a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.frag.out
@@ -1,8 +1,11 @@
450.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+ERROR: 0:63: 'location' : cannot use in a block array where new locations are needed for each block element
+ERROR: 0:68: 'early_fragment_tests' : can only apply to a standalone qualifier
+ERROR: 2 compilation errors. No code generated.
+
Shader version: 450
-0:? Sequence
+ERROR: node is still EOpNull!
0:8 Function Definition: main( ( global void)
0:8 Function Parameters:
0:10 Sequence
@@ -160,13 +163,16 @@ Shader version: 450
0:? 'us2dmsa' ( uniform usampler2DMSArray)
0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS)
0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray)
+0:? 'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m})
+0:? 'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g})
+0:? 'f' ( smooth in float)
Linked fragment stage:
Shader version: 450
-0:? Sequence
+ERROR: node is still EOpNull!
0:8 Function Definition: main( ( global void)
0:8 Function Parameters:
0:10 Sequence
@@ -273,4 +279,7 @@ Shader version: 450
0:? 'us2dmsa' ( uniform usampler2DMSArray)
0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS)
0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray)
+0:? 'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m})
+0:? 'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g})
+0:? 'f' ( smooth in float)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.geom.out
index 5e6c88f9d19..e75bf939ad6 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.geom.out
@@ -1,72 +1,85 @@
450.geom
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+ERROR: 0:15: '[' : array index out of range '3'
+ERROR: 0:15: 'gl_Position' : no such field in structure
+ERROR: 0:19: 'points' : can only apply to a standalone qualifier
+ERROR: 3 compilation errors. No code generated.
+
Shader version: 450
invocations = -1
max_vertices = -1
-input primitive = none
+input primitive = triangles
output primitive = none
-0:? Sequence
-0:11 Function Definition: main( ( global void)
-0:11 Function Parameters:
-0:13 Sequence
-0:13 move second child to first child ( temp float)
-0:13 direct index (layout( stream=0) temp float CullDistance)
-0:13 gl_CullDistance: direct index for structure (layout( stream=0) out 3-element array of float CullDistance)
-0:13 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-element array of float CullDistance gl_CullDistance})
-0:13 Constant:
-0:13 3 (const uint)
-0:13 Constant:
-0:13 2 (const int)
-0:13 direct index ( temp float CullDistance)
-0:13 gl_CullDistance: direct index for structure ( in 3-element array of float CullDistance)
-0:13 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance})
-0:13 'gl_in' ( in implicitly-sized array of block{ in 3-element array of float CullDistance gl_CullDistance})
-0:13 Constant:
-0:13 1 (const int)
-0:13 Constant:
-0:13 0 (const int)
-0:13 Constant:
-0:13 2 (const int)
+ERROR: node is still EOpNull!
+0:13 Function Definition: main( ( global void)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance})
+0:15 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
+0:15 Constant:
+0:15 3 (const int)
+0:16 move second child to first child ( temp float)
+0:16 direct index (layout( stream=0) temp float CullDistance)
+0:16 gl_CullDistance: direct index for structure (layout( stream=0) out 3-element array of float CullDistance)
+0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-element array of float CullDistance gl_CullDistance})
+0:16 Constant:
+0:16 3 (const uint)
+0:16 Constant:
+0:16 2 (const int)
+0:16 direct index ( temp float CullDistance)
+0:16 gl_CullDistance: direct index for structure ( in 3-element array of float CullDistance)
+0:16 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance})
+0:16 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 2 (const int)
0:? Linker Objects
-0:? 'gl_in' ( in implicitly-sized array of block{ in 3-element array of float CullDistance gl_CullDistance})
+0:? 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-element array of float CullDistance gl_CullDistance})
+0:? 'f' ( in 3-element array of float)
Linked geometry stage:
-ERROR: Linking geometry stage: At least one shader must specify an input layout primitive
ERROR: Linking geometry stage: At least one shader must specify an output layout primitive
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
Shader version: 450
invocations = 1
max_vertices = -1
-input primitive = none
+input primitive = triangles
output primitive = none
-0:? Sequence
-0:11 Function Definition: main( ( global void)
-0:11 Function Parameters:
-0:13 Sequence
-0:13 move second child to first child ( temp float)
-0:13 direct index (layout( stream=0) temp float CullDistance)
-0:13 gl_CullDistance: direct index for structure (layout( stream=0) out 3-element array of float CullDistance)
-0:13 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-element array of float CullDistance gl_CullDistance})
-0:13 Constant:
-0:13 3 (const uint)
-0:13 Constant:
-0:13 2 (const int)
-0:13 direct index ( temp float CullDistance)
-0:13 gl_CullDistance: direct index for structure ( in 3-element array of float CullDistance)
-0:13 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance})
-0:13 'gl_in' ( in 2-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
-0:13 Constant:
-0:13 1 (const int)
-0:13 Constant:
-0:13 0 (const int)
-0:13 Constant:
-0:13 2 (const int)
+ERROR: node is still EOpNull!
+0:13 Function Definition: main( ( global void)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance})
+0:15 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
+0:15 Constant:
+0:15 3 (const int)
+0:16 move second child to first child ( temp float)
+0:16 direct index (layout( stream=0) temp float CullDistance)
+0:16 gl_CullDistance: direct index for structure (layout( stream=0) out 3-element array of float CullDistance)
+0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-element array of float CullDistance gl_CullDistance})
+0:16 Constant:
+0:16 3 (const uint)
+0:16 Constant:
+0:16 2 (const int)
+0:16 direct index ( temp float CullDistance)
+0:16 gl_CullDistance: direct index for structure ( in 3-element array of float CullDistance)
+0:16 direct index ( temp block{ in 3-element array of float CullDistance gl_CullDistance})
+0:16 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 2 (const int)
0:? Linker Objects
-0:? 'gl_in' ( in 2-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
+0:? 'gl_in' ( in 3-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-element array of float CullDistance gl_CullDistance})
+0:? 'f' ( in 3-element array of float)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.tesc.out
index 29da425ec94..b3f4e252d4e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.tesc.out
@@ -1,9 +1,11 @@
450.tesc
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+ERROR: 0:20: 'location' : cannot use in a block array where new locations are needed for each block element
+ERROR: 1 compilation errors. No code generated.
+
Shader version: 450
vertices = -1
-0:? Sequence
+ERROR: node is still EOpNull!
0:11 Function Definition: main( ( global void)
0:11 Function Parameters:
0:13 Sequence
@@ -30,6 +32,8 @@ vertices = -1
0:? Linker Objects
0:? 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
0:? 'gl_out' ( out 4-element array of block{ out 3-element array of float CullDistance gl_CullDistance})
+0:? 'bInst1' ( out 2-element array of block{layout( location=4) out float f, layout( location=5) out float g})
+0:? 'bInst2' ( out 2-element array of 3-element array of block{layout( location=6) out float f, layout( location=7) out float g})
Linked tessellation control stage:
@@ -38,7 +42,7 @@ ERROR: Linking tessellation control stage: At least one shader must specify an o
Shader version: 450
vertices = -1
-0:? Sequence
+ERROR: node is still EOpNull!
0:11 Function Definition: main( ( global void)
0:11 Function Parameters:
0:13 Sequence
@@ -65,4 +69,6 @@ vertices = -1
0:? Linker Objects
0:? 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
0:? 'gl_out' ( out 4-element array of block{ out 3-element array of float CullDistance gl_CullDistance})
+0:? 'bInst1' ( out 2-element array of block{layout( location=4) out float f, layout( location=5) out float g})
+0:? 'bInst2' ( out 2-element array of 3-element array of block{layout( location=6) out float f, layout( location=7) out float g})
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.tese.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.tese.out
index b7735e66baf..796d6f1604d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.tese.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.tese.out
@@ -1,11 +1,18 @@
450.tese
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+ERROR: 0:16: 'equal_spacing' : can only apply to a standalone qualifier
+ERROR: 0:17: 'fractional_even_spacing' : can only apply to a standalone qualifier
+ERROR: 0:18: 'fractional_odd_spacing' : can only apply to a standalone qualifier
+ERROR: 0:19: 'cw' : can only apply to a standalone qualifier
+ERROR: 0:20: 'ccw' : can only apply to a standalone qualifier
+ERROR: 0:21: 'point_mode' : can only apply to a standalone qualifier
+ERROR: 6 compilation errors. No code generated.
+
Shader version: 450
input primitive = none
vertex spacing = none
triangle order = none
-0:? Sequence
+ERROR: node is still EOpNull!
0:11 Function Definition: main( ( global void)
0:11 Function Parameters:
0:13 Sequence
@@ -30,6 +37,12 @@ triangle order = none
0:? Linker Objects
0:? 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
0:? 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance})
+0:? 'f1' ( in 32-element array of float)
+0:? 'f2' ( in 32-element array of float)
+0:? 'f3' ( in 32-element array of float)
+0:? 'f4' ( in 32-element array of float)
+0:? 'f5' ( in 32-element array of float)
+0:? 'f6' ( in 32-element array of float)
Linked tessellation evaluation stage:
@@ -40,7 +53,7 @@ Shader version: 450
input primitive = none
vertex spacing = equal_spacing
triangle order = ccw
-0:? Sequence
+ERROR: node is still EOpNull!
0:11 Function Definition: main( ( global void)
0:11 Function Parameters:
0:13 Sequence
@@ -65,4 +78,10 @@ triangle order = ccw
0:? Linker Objects
0:? 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance})
0:? 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance})
+0:? 'f1' ( in 32-element array of float)
+0:? 'f2' ( in 32-element array of float)
+0:? 'f3' ( in 32-element array of float)
+0:? 'f4' ( in 32-element array of float)
+0:? 'f5' ( in 32-element array of float)
+0:? 'f6' ( in 32-element array of float)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.vert.out
index cc300d99ea0..64143de5660 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/450.vert.out
@@ -1,9 +1,25 @@
450.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:12: 'out' : cannot be bool
ERROR: 0:13: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: outo
-ERROR: 0:27: '::' : not supported
-ERROR: 3 compilation errors. No code generated.
+ERROR: 0:30: '::' : not supported
+ERROR: 0:31: 'atomicCounterAdd' : no matching overloaded function found
+ERROR: 0:32: 'atomicCounterSubtract' : no matching overloaded function found
+ERROR: 0:33: 'atomicCounterMin' : no matching overloaded function found
+ERROR: 0:34: 'atomicCounterMax' : no matching overloaded function found
+ERROR: 0:35: 'atomicCounterAnd' : no matching overloaded function found
+ERROR: 0:36: 'atomicCounterOr' : no matching overloaded function found
+ERROR: 0:37: 'atomicCounterXor' : no matching overloaded function found
+ERROR: 0:38: 'atomicCounterExchange' : no matching overloaded function found
+ERROR: 0:39: 'atomicCounterCompSwap' : no matching overloaded function found
+ERROR: 0:41: 'gl_BaseVertex' : undeclared identifier
+ERROR: 0:41: 'gl_BaseInstance' : undeclared identifier
+ERROR: 0:41: 'gl_DrawID' : undeclared identifier
+ERROR: 0:41: '=' : cannot convert from ' temp float' to ' temp int'
+ERROR: 0:44: 'anyInvocation' : no matching overloaded function found
+ERROR: 0:45: 'allInvocations' : no matching overloaded function found
+ERROR: 0:46: 'allInvocationsEqual' : no matching overloaded function found
+ERROR: 0:48: 'extraneous semicolon' : not supported for this version or the enabled extensions
+ERROR: 20 compilation errors. No code generated.
Shader version: 450
@@ -21,8 +37,33 @@ ERROR: node is still EOpNull!
0:9 2 (const int)
0:9 Constant:
0:9 4.500000
-0:25 Function Definition: foo( ( global void)
-0:25 Function Parameters:
+0:28 Function Definition: foo( ( global void)
+0:28 Function Parameters:
+0:? Sequence
+0:31 Constant:
+0:31 0.000000
+0:32 Constant:
+0:32 0.000000
+0:33 Constant:
+0:33 0.000000
+0:34 Constant:
+0:34 0.000000
+0:35 Constant:
+0:35 0.000000
+0:36 Constant:
+0:36 0.000000
+0:37 Constant:
+0:37 0.000000
+0:38 Constant:
+0:38 0.000000
+0:39 Constant:
+0:39 0.000000
+0:44 Constant:
+0:44 0.000000
+0:45 Constant:
+0:45 0.000000
+0:46 Constant:
+0:46 0.000000
0:? Linker Objects
0:? 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance})
0:? 'outb' ( smooth out bool)
@@ -34,6 +75,8 @@ ERROR: node is still EOpNull!
0:? 'outsa' ( smooth out 4-element array of structure{ global float f})
0:? 'outSA' ( smooth out structure{ global 4-element array of float f})
0:? 'outSS' ( smooth out structure{ global float f, global structure{ global float f} s})
+0:? 'aui' (layout( binding=0 offset=0) uniform atomic_uint)
+0:? 'ui' ( global uint)
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
@@ -67,6 +110,8 @@ ERROR: node is still EOpNull!
0:? 'outsa' ( smooth out 4-element array of structure{ global float f})
0:? 'outSA' ( smooth out structure{ global 4-element array of float f})
0:? 'outSS' ( smooth out structure{ global float f, global structure{ global float f} s})
+0:? 'aui' (layout( binding=0 offset=0) uniform atomic_uint)
+0:? 'ui' ( global uint)
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/460.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/460.frag.out
new file mode 100644
index 00000000000..883d949b23c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/460.frag.out
@@ -0,0 +1,55 @@
+460.frag
+Shader version: 460
+0:? Sequence
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 interpolateAtCentroid ( global 4-component vector of float)
+0:12 v: direct index for structure ( global 4-component vector of float)
+0:12 's' ( smooth in structure{ global float f, global 4-component vector of float v})
+0:12 Constant:
+0:12 1 (const int)
+0:14 move second child to first child ( temp bool)
+0:14 'b1' ( temp bool)
+0:14 anyInvocation ( global bool)
+0:14 'b1' ( temp bool)
+0:15 move second child to first child ( temp bool)
+0:15 'b1' ( temp bool)
+0:15 allInvocations ( global bool)
+0:15 'b1' ( temp bool)
+0:16 move second child to first child ( temp bool)
+0:16 'b1' ( temp bool)
+0:16 allInvocationsEqual ( global bool)
+0:16 'b1' ( temp bool)
+0:? Linker Objects
+0:? 's' ( smooth in structure{ global float f, global 4-component vector of float v})
+
+
+Linked fragment stage:
+
+
+Shader version: 460
+0:? Sequence
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 interpolateAtCentroid ( global 4-component vector of float)
+0:12 v: direct index for structure ( global 4-component vector of float)
+0:12 's' ( smooth in structure{ global float f, global 4-component vector of float v})
+0:12 Constant:
+0:12 1 (const int)
+0:14 move second child to first child ( temp bool)
+0:14 'b1' ( temp bool)
+0:14 anyInvocation ( global bool)
+0:14 'b1' ( temp bool)
+0:15 move second child to first child ( temp bool)
+0:15 'b1' ( temp bool)
+0:15 allInvocations ( global bool)
+0:15 'b1' ( temp bool)
+0:16 move second child to first child ( temp bool)
+0:16 'b1' ( temp bool)
+0:16 allInvocationsEqual ( global bool)
+0:16 'b1' ( temp bool)
+0:? Linker Objects
+0:? 's' ( smooth in structure{ global float f, global 4-component vector of float v})
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/460.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/460.vert.out
new file mode 100644
index 00000000000..8fa659b307a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/460.vert.out
@@ -0,0 +1,51 @@
+460.vert
+Shader version: 460
+0:? Sequence
+0:7 Function Definition: main( ( global void)
+0:7 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp bool)
+0:10 'b1' ( temp bool)
+0:10 anyInvocation ( global bool)
+0:10 'b1' ( temp bool)
+0:11 move second child to first child ( temp bool)
+0:11 'b1' ( temp bool)
+0:11 allInvocations ( global bool)
+0:11 'b1' ( temp bool)
+0:12 move second child to first child ( temp bool)
+0:12 'b1' ( temp bool)
+0:12 allInvocationsEqual ( global bool)
+0:12 'b1' ( temp bool)
+0:? Linker Objects
+0:? 'i' ( global int)
+0:? 'f' ( global float)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 460
+0:? Sequence
+0:7 Function Definition: main( ( global void)
+0:7 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp bool)
+0:10 'b1' ( temp bool)
+0:10 anyInvocation ( global bool)
+0:10 'b1' ( temp bool)
+0:11 move second child to first child ( temp bool)
+0:11 'b1' ( temp bool)
+0:11 allInvocations ( global bool)
+0:11 'b1' ( temp bool)
+0:12 move second child to first child ( temp bool)
+0:12 'b1' ( temp bool)
+0:12 allInvocationsEqual ( global bool)
+0:12 'b1' ( temp bool)
+0:? Linker Objects
+0:? 'i' ( global int)
+0:? 'f' ( global float)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/atomic_uint.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/atomic_uint.frag.out
index e0ba0994b1f..e2773f9eb9e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/atomic_uint.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/atomic_uint.frag.out
@@ -1,5 +1,4 @@
atomic_uint.frag
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:10: 'atomic_uint' : samplers and atomic_uints cannot be output parameters
ERROR: 0:12: 'return' : type does not match, or is not convertible to, the function's return type
ERROR: 0:18: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: non_uniform_counter
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/badChars.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/badChars.frag.out
index de9af0dae4a..e3fec617a96 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/badChars.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/badChars.frag.out
@@ -6,7 +6,7 @@ ERROR: 0:4: 'preprocessor evaluation' : bad expression
ERROR: 0:4: '#if' : unexpected tokens following directive
ERROR: 0:6: '€' : unexpected token
ERROR: 0:7: 'string' : End of line in string
-ERROR: 0:7: '' : syntax error
+ERROR: 0:7: '' : syntax error, unexpected INT, expecting COMMA or SEMICOLON
ERROR: 8 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/badMacroArgs.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/badMacroArgs.frag.out
index 95937ce318a..5e6233f8d20 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/badMacroArgs.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/badMacroArgs.frag.out
@@ -1,5 +1,4 @@
badMacroArgs.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'macro expansion' : Too few args in Macro m
ERROR: 0:4: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/comment.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/comment.frag.out
index 57f2a1d0834..b1a00ff5174 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/comment.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/comment.frag.out
@@ -1,5 +1,4 @@
comment.frag
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
WARNING: 0:10: 'line continuation' : used at end of comment; the following line is still part of the comment
WARNING: 0:12: 'line continuation' : used at end of comment; the following line is still part of the comment
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/constFold.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/constFold.frag.out
index 8c014684377..33cfcbafedb 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/constFold.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/constFold.frag.out
@@ -1,5 +1,4 @@
constFold.frag
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:109: '[' : index out of range '-1'
ERROR: 0:110: '[' : vector index out of range '4'
ERROR: 0:111: '[' : index out of range '-2'
@@ -179,7 +178,7 @@ ERROR: node is still EOpNull!
0:83 Constant:
0:83 2147483647 (const int)
0:84 Constant:
-0:84 inf
+0:84 +1.#INF
0:88 Constant:
0:88 2 (const uint)
0:88 3 (const uint)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/constFoldIntMin.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/constFoldIntMin.frag.out
new file mode 100644
index 00000000000..da5bc26b870
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/constFoldIntMin.frag.out
@@ -0,0 +1,51 @@
+constFoldIntMin.frag
+Shader version: 460
+Requested GL_AMD_gpu_shader_int16
+Requested GL_ARB_gpu_shader_int64
+0:? Sequence
+0:5 Function Definition: a( ( global void)
+0:5 Function Parameters:
+0:6 Sequence
+0:6 Sequence
+0:6 move second child to first child ( temp int16_t)
+0:6 'u' ( temp int16_t)
+0:6 Constant:
+0:6 32768 (const int)
+0:7 Sequence
+0:7 move second child to first child ( temp int)
+0:7 'v' ( temp int)
+0:7 Constant:
+0:7 -2147483648 (const int)
+0:8 Sequence
+0:8 move second child to first child ( temp int64_t)
+0:8 'w' ( temp int64_t)
+0:8 Constant:
+0:8 -9223372036854775808 (const int64_t)
+0:9 Sequence
+0:9 move second child to first child ( temp int16_t)
+0:9 'x' ( temp int16_t)
+0:9 Constant:
+0:9 0 (const int)
+0:10 Sequence
+0:10 move second child to first child ( temp int)
+0:10 'y' ( temp int)
+0:10 Constant:
+0:10 0 (const int)
+0:11 Sequence
+0:11 move second child to first child ( temp int64_t)
+0:11 'z' ( temp int64_t)
+0:11 Constant:
+0:11 0 (const int64_t)
+0:? Linker Objects
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
+
+Shader version: 460
+Requested GL_AMD_gpu_shader_int16
+Requested GL_ARB_gpu_shader_int64
+0:? Sequence
+0:? Linker Objects
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppBad.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppBad.vert.out
index d808e7277ce..1a2286aa917 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppBad.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppBad.vert.out
@@ -2,10 +2,9 @@ cppBad.vert
ERROR: 0:2: 'preprocessor evaluation' : bad expression
ERROR: 0:2: '#if' : unexpected tokens following directive
ERROR: 0:5: 'string' : End of line in string
-ERROR: 0:5: 'macro expansion' : expected '(' following n
ERROR: 0:5: '""' : string literals not supported
-ERROR: 0:5: '' : syntax error
-ERROR: 6 compilation errors. No code generated.
+ERROR: 0:5: '' : syntax error, unexpected INT, expecting COMMA or SEMICOLON
+ERROR: 5 compilation errors. No code generated.
Shader version: 100
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppDeepNest.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppDeepNest.frag.out
new file mode 100644
index 00000000000..969a256dd50
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppDeepNest.frag.out
@@ -0,0 +1,20 @@
+cppDeepNest.frag
+ERROR: 0:66: '#if/#ifdef/#ifndef' : maximum nesting depth exceeded
+ERROR: 0:66: '' : missing #endif
+ERROR: 0:66: '' : syntax error, unexpected $end
+ERROR: 3 compilation errors. No code generated.
+
+
+Shader version: 100
+ERROR: node is still EOpNull!
+0:? Linker Objects
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
+
+Shader version: 100
+ERROR: node is still EOpNull!
+0:? Linker Objects
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppIndent.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppIndent.vert.out
index e6ff0468c2a..05eb244de02 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppIndent.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppIndent.vert.out
@@ -1,6 +1,6 @@
cppIndent.vert
ERROR: 0:61: 'macro expansion' : Too few args in Macro FUNC
-ERROR: 0:61: '' : syntax error
+ERROR: 0:61: '' : syntax error, unexpected COMMA
ERROR: 2 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppIntMinOverNegativeOne.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppIntMinOverNegativeOne.frag.out
new file mode 100644
index 00000000000..5dce7c3ebe5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppIntMinOverNegativeOne.frag.out
@@ -0,0 +1,14 @@
+cppIntMinOverNegativeOne.frag
+Shader version: 100
+0:? Sequence
+0:? Linker Objects
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
+
+Shader version: 100
+0:? Sequence
+0:? Linker Objects
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppPassMacroName.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppPassMacroName.frag.out
new file mode 100644
index 00000000000..d8459b3bc03
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppPassMacroName.frag.out
@@ -0,0 +1,67 @@
+cppPassMacroName.frag
+Shader version: 100
+0:? Sequence
+0:5 Function Definition: main( ( global void)
+0:5 Function Parameters:
+0:7 Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp mediump int)
+0:7 'f1' ( temp mediump int)
+0:7 Constant:
+0:7 4 (const int)
+0:8 Sequence
+0:8 move second child to first child ( temp mediump int)
+0:8 'f2' ( temp mediump int)
+0:8 'f1' ( temp mediump int)
+0:9 Sequence
+0:9 move second child to first child ( temp mediump int)
+0:9 'f3' ( temp mediump int)
+0:9 Constant:
+0:9 9 (const int)
+0:10 Sequence
+0:10 move second child to first child ( temp mediump int)
+0:10 'f4' ( temp mediump int)
+0:10 Constant:
+0:10 1 (const int)
+0:11 Sequence
+0:11 move second child to first child ( temp mediump int)
+0:11 'f5' ( temp mediump int)
+0:11 Constant:
+0:11 5 (const int)
+0:? Linker Objects
+
+
+Linked fragment stage:
+
+
+Shader version: 100
+0:? Sequence
+0:5 Function Definition: main( ( global void)
+0:5 Function Parameters:
+0:7 Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp mediump int)
+0:7 'f1' ( temp mediump int)
+0:7 Constant:
+0:7 4 (const int)
+0:8 Sequence
+0:8 move second child to first child ( temp mediump int)
+0:8 'f2' ( temp mediump int)
+0:8 'f1' ( temp mediump int)
+0:9 Sequence
+0:9 move second child to first child ( temp mediump int)
+0:9 'f3' ( temp mediump int)
+0:9 Constant:
+0:9 9 (const int)
+0:10 Sequence
+0:10 move second child to first child ( temp mediump int)
+0:10 'f4' ( temp mediump int)
+0:10 Constant:
+0:10 1 (const int)
+0:11 Sequence
+0:11 move second child to first child ( temp mediump int)
+0:11 'f5' ( temp mediump int)
+0:11 Constant:
+0:11 5 (const int)
+0:? Linker Objects
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppSimple.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppSimple.vert.out
index 0696c744707..edb0c3378a0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppSimple.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/cppSimple.vert.out
@@ -1,5 +1,4 @@
cppSimple.vert
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:77: '#error' : good1
ERROR: 0:81: '#error' : good2
ERROR: 0:85: '#error' : good3
@@ -76,10 +75,8 @@ ERROR: 12:20051: '#error' : good evaluation 1
ERROR: 12:20055: '#error' : good evaluation 2
ERROR: 12:9000: 'preprocessor evaluation' : expected ')'
ERROR: 12:9002: '#if' : unexpected tokens following directive
-ERROR: 12:9014: 'macro expansion' : expected '(' following FOOOM
ERROR: 12:9014: 'FOOOM' : undeclared identifier
ERROR: 12:9014: '=' : cannot convert from ' temp float' to ' global int'
-ERROR: 12:9015: 'macro expansion' : expected '(' following FOOOM
ERROR: 12:9016: 'preprocessor evaluation' : can't evaluate expression
ERROR: 12:9016: 'preprocessor evaluation' : bad expression
ERROR: 12:9500: 'preprocessor evaluation' : bad expression
@@ -91,6 +88,8 @@ ERROR: 12:9504: '#if' : unexpected tokens following directive
ERROR: 12:9506: '#error' : \ 377
ERROR: 12:9507: '#error' : \ 376
ERROR: 12:9508: '#error' : \ 377
+ERROR: 12:9602: 'defined' : cannot use in preprocessor expression when expanded from macros
+ERROR: 12:9603: '#error' : DEF_DEFINED then
ERROR: 12:10002: '' : missing #endif
ERROR: 88 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/dce.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/dce.frag.out
index 63d194ca48a..6b02eb1c21c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/dce.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/dce.frag.out
@@ -1,6 +1,4 @@
dce.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
Shader version: 400
0:? Sequence
0:5 Sequence
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/functionSemantics.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/functionSemantics.frag.out
index 6c5ebdc6f80..d04e6e7adcf 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/functionSemantics.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/functionSemantics.frag.out
@@ -1,5 +1,4 @@
functionSemantics.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:74: 'return' : cannot convert return value to function return type
WARNING: 0:74: 'return' : type conversion on return values was not explicitly allowed until version 420
ERROR: 1 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.-D-U.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.-D-U.frag.out
new file mode 100644
index 00000000000..6538e849c72
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.-D-U.frag.out
@@ -0,0 +1,55 @@
+glsl.-D-U.frag
+Shader version: 450
+0:? Sequence
+0:7 Function Definition: main( ( global void)
+0:7 Function Parameters:
+0:10 Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 'color' (layout( location=0) out 4-component vector of float)
+0:10 Constant:
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:16 Post-Increment ( temp 4-component vector of float)
+0:16 'color' (layout( location=0) out 4-component vector of float)
+0:24 vector scale second child into first child ( temp 4-component vector of float)
+0:24 'color' (layout( location=0) out 4-component vector of float)
+0:24 Constant:
+0:24 3.000000
+0:28 vector scale second child into first child ( temp 4-component vector of float)
+0:28 'color' (layout( location=0) out 4-component vector of float)
+0:28 Constant:
+0:28 400.000000
+0:? Linker Objects
+0:? 'color' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+0:? Sequence
+0:7 Function Definition: main( ( global void)
+0:7 Function Parameters:
+0:10 Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 'color' (layout( location=0) out 4-component vector of float)
+0:10 Constant:
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:16 Post-Increment ( temp 4-component vector of float)
+0:16 'color' (layout( location=0) out 4-component vector of float)
+0:24 vector scale second child into first child ( temp 4-component vector of float)
+0:24 'color' (layout( location=0) out 4-component vector of float)
+0:24 Constant:
+0:24 3.000000
+0:28 vector scale second child into first child ( temp 4-component vector of float)
+0:28 'color' (layout( location=0) out 4-component vector of float)
+0:28 Constant:
+0:28 400.000000
+0:? Linker Objects
+0:? 'color' (layout( location=0) out 4-component vector of float)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.bad.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.bad.out
new file mode 100644
index 00000000000..6f4c9aebec8
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.bad.out
@@ -0,0 +1,45 @@
+glsl.entryPointRename.vert
+ERROR: Source entry point must be "main"
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 20
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "foo" 13
+ Source GLSL 460
+ Name 4 "foo"
+ Name 11 "gl_PerVertex"
+ MemberName 11(gl_PerVertex) 0 "gl_Position"
+ MemberName 11(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 11(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 11(gl_PerVertex) 3 "gl_CullDistance"
+ Name 13 ""
+ MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 11(gl_PerVertex) Block
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 1
+ 10: TypeArray 6(float) 9
+11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10
+ 12: TypePointer Output 11(gl_PerVertex)
+ 13: 12(ptr) Variable Output
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: 6(float) Constant 1065353216
+ 17: 7(fvec4) ConstantComposite 16 16 16 16
+ 18: TypePointer Output 7(fvec4)
+ 4(foo): 2 Function None 3
+ 5: Label
+ 19: 18(ptr) AccessChain 13 15
+ Store 19 17
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.out
new file mode 100644
index 00000000000..7cc825bca58
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.out
@@ -0,0 +1,43 @@
+glsl.entryPointRename.vert
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 20
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "foo" 13
+ Source GLSL 460
+ Name 4 "foo"
+ Name 11 "gl_PerVertex"
+ MemberName 11(gl_PerVertex) 0 "gl_Position"
+ MemberName 11(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 11(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 11(gl_PerVertex) 3 "gl_CullDistance"
+ Name 13 ""
+ MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 11(gl_PerVertex) Block
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 1
+ 10: TypeArray 6(float) 9
+11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10
+ 12: TypePointer Output 11(gl_PerVertex)
+ 13: 12(ptr) Variable Output
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: 6(float) Constant 1065353216
+ 17: 7(fvec4) ConstantComposite 16 16 16 16
+ 18: TypePointer Output 7(fvec4)
+ 4(foo): 2 Function None 3
+ 5: Label
+ 19: 18(ptr) AccessChain 13 15
+ Store 19 17
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename2.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename2.vert.out
new file mode 100644
index 00000000000..aebd86beee0
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glsl.entryPointRename2.vert.out
@@ -0,0 +1,4 @@
+glsl.entryPointRename2.vert
+ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.esversion.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.esversion.vert.out
index 8e4b3b883cd..782865abcce 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.esversion.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.esversion.vert.out
@@ -1,6 +1,5 @@
glspv.esversion.vert
ERROR: #version: ES shaders for OpenGL SPIR-V are not supported
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 1 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.frag.out
index daa1dc1e424..49398073bf2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.frag.out
@@ -1,9 +1,13 @@
glspv.frag
ERROR: 0:4: '#error' : GL_SPIRV is set ( correct , not an error )
ERROR: 0:6: '#error' : GL_SPIR is 100
-ERROR: 0:14: 'input_attachment_index' : only allowed when using GLSL for Vulkan
-ERROR: 0:14: '' : syntax error
-ERROR: 4 compilation errors. No code generated.
+ERROR: 0:21: 'noise1' : no matching overloaded function found
+ERROR: 0:22: 'noise2' : no matching overloaded function found
+ERROR: 0:23: 'noise3' : no matching overloaded function found
+ERROR: 0:24: 'noise4' : no matching overloaded function found
+ERROR: 0:27: 'input_attachment_index' : only allowed when using GLSL for Vulkan
+ERROR: 0:27: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
+ERROR: 8 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.version.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.version.frag.out
index 3e8e8c4b008..30eb445201b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.version.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.version.frag.out
@@ -2,7 +2,7 @@ glspv.version.frag
ERROR: #version: compilation for SPIR-V does not support the compatibility profile
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 6
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.vert.out
index 5f6d9bbd54b..f2fe53b295c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/glspv.vert.out
@@ -1,5 +1,4 @@
glspv.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'push_constant' : only allowed when using GLSL for Vulkan
ERROR: 0:6: 'descriptor set' : only allowed when using GLSL for Vulkan
ERROR: 0:8: 'shared' : not allowed when generating SPIR-V
@@ -7,7 +6,7 @@ ERROR: 0:9: 'packed' : not allowed when generating SPIR-V
ERROR: 0:13: 'gl_VertexIndex' : undeclared identifier
ERROR: 0:14: 'gl_InstanceIndex' : undeclared identifier
ERROR: 0:17: 'gl_DepthRangeParameters' : undeclared identifier
-ERROR: 0:20: '' : syntax error
+ERROR: 0:20: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
ERROR: 8 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.-D-U.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.-D-U.frag.out
new file mode 100644
index 00000000000..06842e80097
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.-D-U.frag.out
@@ -0,0 +1,65 @@
+hlsl.-D-U.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:9 move second child to first child ( temp 4-component vector of float)
+0:9 'color' ( global 4-component vector of float)
+0:9 Constant:
+0:9 1.000000
+0:9 1.000000
+0:9 1.000000
+0:9 1.000000
+0:15 subtract second child into first child ( temp 4-component vector of float)
+0:15 'color' ( global 4-component vector of float)
+0:15 Constant:
+0:15 5.000000
+0:21 Post-Increment ( temp 4-component vector of float)
+0:21 'color' ( global 4-component vector of float)
+0:29 vector scale second child into first child ( temp 4-component vector of float)
+0:29 'color' ( global 4-component vector of float)
+0:29 Constant:
+0:29 3.000000
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'color' ( global 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:9 move second child to first child ( temp 4-component vector of float)
+0:9 'color' ( global 4-component vector of float)
+0:9 Constant:
+0:9 1.000000
+0:9 1.000000
+0:9 1.000000
+0:9 1.000000
+0:15 subtract second child into first child ( temp 4-component vector of float)
+0:15 'color' ( global 4-component vector of float)
+0:15 Constant:
+0:15 5.000000
+0:21 Post-Increment ( temp 4-component vector of float)
+0:21 'color' ( global 4-component vector of float)
+0:29 vector scale second child into first child ( temp 4-component vector of float)
+0:29 'color' ( global 4-component vector of float)
+0:29 Constant:
+0:29 3.000000
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'color' ( global 4-component vector of float)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.aliasOpaque.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.aliasOpaque.frag.out
new file mode 100644
index 00000000000..694d4044fb6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.aliasOpaque.frag.out
@@ -0,0 +1,207 @@
+hlsl.aliasOpaque.frag
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:12 Function Definition: osCall(struct-OS-p1-f1-t211; ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:? 's.ss' ( in sampler)
+0:? 's.a' ( in float)
+0:? 's.tex' ( in texture2D)
+0:? Sequence
+0:13 Branch: Return with expression
+0:13 vector-scale ( temp 4-component vector of float)
+0:? 's.a' ( in float)
+0:13 texture ( temp 4-component vector of float)
+0:13 Construct combined texture-sampler ( temp sampler2D)
+0:? 's.tex' ( in texture2D)
+0:? 's.ss' ( in sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:17 Function Definition: @main( ( temp 4-component vector of float)
+0:17 Function Parameters:
+0:? Sequence
+0:19 move second child to first child ( temp sampler)
+0:? 'os.ss' ( temp sampler)
+0:19 'gss2' ( uniform sampler)
+0:20 move second child to first child ( temp sampler)
+0:? 'os.ss' ( temp sampler)
+0:20 'gss' ( uniform sampler)
+0:21 move second child to first child ( temp texture2D)
+0:? 'os.tex' ( temp texture2D)
+0:21 'gtex' ( uniform texture2D)
+0:22 move second child to first child ( temp float)
+0:? 'os.a' ( temp float)
+0:22 Constant:
+0:22 3.000000
+0:28 Branch: Return with expression
+0:28 Function Call: osCall(struct-OS-p1-f1-t211; ( temp 4-component vector of float)
+0:? 'os.ss' ( temp sampler)
+0:? 'os.a' ( temp float)
+0:? 'os.tex' ( temp texture2D)
+0:17 Function Definition: main( ( temp void)
+0:17 Function Parameters:
+0:? Sequence
+0:17 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:17 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'gss' ( uniform sampler)
+0:? 'gss2' ( uniform sampler)
+0:? 'gtex' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:12 Function Definition: osCall(struct-OS-p1-f1-t211; ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:? 's.ss' ( in sampler)
+0:? 's.a' ( in float)
+0:? 's.tex' ( in texture2D)
+0:? Sequence
+0:13 Branch: Return with expression
+0:13 vector-scale ( temp 4-component vector of float)
+0:? 's.a' ( in float)
+0:13 texture ( temp 4-component vector of float)
+0:13 Construct combined texture-sampler ( temp sampler2D)
+0:? 's.tex' ( in texture2D)
+0:? 's.ss' ( in sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:17 Function Definition: @main( ( temp 4-component vector of float)
+0:17 Function Parameters:
+0:? Sequence
+0:19 move second child to first child ( temp sampler)
+0:? 'os.ss' ( temp sampler)
+0:19 'gss2' ( uniform sampler)
+0:20 move second child to first child ( temp sampler)
+0:? 'os.ss' ( temp sampler)
+0:20 'gss' ( uniform sampler)
+0:21 move second child to first child ( temp texture2D)
+0:? 'os.tex' ( temp texture2D)
+0:21 'gtex' ( uniform texture2D)
+0:22 move second child to first child ( temp float)
+0:? 'os.a' ( temp float)
+0:22 Constant:
+0:22 3.000000
+0:28 Branch: Return with expression
+0:28 Function Call: osCall(struct-OS-p1-f1-t211; ( temp 4-component vector of float)
+0:? 'os.ss' ( temp sampler)
+0:? 'os.a' ( temp float)
+0:? 'os.tex' ( temp texture2D)
+0:17 Function Definition: main( ( temp void)
+0:17 Function Parameters:
+0:? Sequence
+0:17 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:17 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'gss' ( uniform sampler)
+0:? 'gss2' ( uniform sampler)
+0:? 'gtex' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 59
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 57
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 17 "osCall(struct-OS-p1-f1-t211;"
+ Name 14 "s.ss"
+ Name 15 "s.a"
+ Name 16 "s.tex"
+ Name 20 "@main("
+ Name 35 "os.ss"
+ Name 37 "gss2"
+ Name 39 "gss"
+ Name 41 "os.tex"
+ Name 43 "gtex"
+ Name 45 "os.a"
+ Name 47 "param"
+ Name 49 "param"
+ Name 51 "param"
+ Name 57 "@entryPointOutput"
+ Decorate 37(gss2) DescriptorSet 0
+ Decorate 39(gss) DescriptorSet 0
+ Decorate 43(gtex) DescriptorSet 0
+ Decorate 57(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeSampler
+ 7: TypePointer Function 6
+ 8: TypeFloat 32
+ 9: TypePointer Function 8(float)
+ 10: TypeImage 8(float) 2D sampled format:Unknown
+ 11: TypePointer Function 10
+ 12: TypeVector 8(float) 4
+ 13: TypeFunction 12(fvec4) 7(ptr) 9(ptr) 11(ptr)
+ 19: TypeFunction 12(fvec4)
+ 25: TypeSampledImage 10
+ 27: TypeVector 8(float) 2
+ 28: 8(float) Constant 1045220557
+ 29: 8(float) Constant 1050253722
+ 30: 27(fvec2) ConstantComposite 28 29
+ 36: TypePointer UniformConstant 6
+ 37(gss2): 36(ptr) Variable UniformConstant
+ 39(gss): 36(ptr) Variable UniformConstant
+ 42: TypePointer UniformConstant 10
+ 43(gtex): 42(ptr) Variable UniformConstant
+ 46: 8(float) Constant 1077936128
+ 56: TypePointer Output 12(fvec4)
+57(@entryPointOutput): 56(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 58: 12(fvec4) FunctionCall 20(@main()
+ Store 57(@entryPointOutput) 58
+ Return
+ FunctionEnd
+17(osCall(struct-OS-p1-f1-t211;): 12(fvec4) Function None 13
+ 14(s.ss): 7(ptr) FunctionParameter
+ 15(s.a): 9(ptr) FunctionParameter
+ 16(s.tex): 11(ptr) FunctionParameter
+ 18: Label
+ 22: 8(float) Load 15(s.a)
+ 23: 10 Load 16(s.tex)
+ 24: 6 Load 14(s.ss)
+ 26: 25 SampledImage 23 24
+ 31: 12(fvec4) ImageSampleImplicitLod 26 30
+ 32: 12(fvec4) VectorTimesScalar 31 22
+ ReturnValue 32
+ FunctionEnd
+ 20(@main(): 12(fvec4) Function None 19
+ 21: Label
+ 35(os.ss): 7(ptr) Variable Function
+ 41(os.tex): 11(ptr) Variable Function
+ 45(os.a): 9(ptr) Variable Function
+ 47(param): 7(ptr) Variable Function
+ 49(param): 9(ptr) Variable Function
+ 51(param): 11(ptr) Variable Function
+ 38: 6 Load 37(gss2)
+ Store 35(os.ss) 38
+ 40: 6 Load 39(gss)
+ Store 35(os.ss) 40
+ 44: 10 Load 43(gtex)
+ Store 41(os.tex) 44
+ Store 45(os.a) 46
+ 48: 6 Load 35(os.ss)
+ Store 47(param) 48
+ 50: 8(float) Load 45(os.a)
+ Store 49(param) 50
+ 52: 10 Load 41(os.tex)
+ Store 51(param) 52
+ 53: 12(fvec4) FunctionCall 17(osCall(struct-OS-p1-f1-t211;) 47(param) 49(param) 51(param)
+ ReturnValue 53
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.amend.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.amend.frag.out
index a93643e5553..98303858ed1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.amend.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.amend.frag.out
@@ -1,5 +1,5 @@
hlsl.amend.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Sequence
@@ -81,7 +81,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Sequence
@@ -160,7 +160,7 @@ gl_FragCoord origin is upper left
0:? 'm' ( global 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 57
Capability Shader
@@ -168,6 +168,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "f1"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "f1"
Name 6 "@f1("
Name 8 "f2("
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.flatten.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.flatten.frag.out
index 1beb71f4bbf..e32eb1590d0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.flatten.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.flatten.frag.out
@@ -1,5 +1,6 @@
hlsl.array.flatten.frag
-Shader version: 450
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:17 Function Definition: TestFn1( ( temp 4-component vector of float)
@@ -147,7 +148,7 @@ gl_FragCoord origin is upper left
0:? 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:31 Sequence
0:31 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? 'ps_output.color' (layout( location=0) out 4-component vector of float)
0:31 color: direct index for structure ( temp 4-component vector of float)
0:? 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:31 Constant:
@@ -167,13 +168,13 @@ gl_FragCoord origin is upper left
0:? 'g_samp_explicit[2]' (layout( binding=7) uniform sampler)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 3X3 matrix of float g_mats, layout( binding=10) uniform 4-element array of 3X3 matrix of float g_mats_explicit, uniform 4-element array of float g_floats})
0:? 'not_flattened_a' ( global 5-element array of int)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? 'ps_output.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:17 Function Definition: TestFn1( ( temp 4-component vector of float)
@@ -321,7 +322,7 @@ gl_FragCoord origin is upper left
0:? 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:31 Sequence
0:31 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? 'ps_output.color' (layout( location=0) out 4-component vector of float)
0:31 color: direct index for structure ( temp 4-component vector of float)
0:? 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:31 Constant:
@@ -341,18 +342,19 @@ gl_FragCoord origin is upper left
0:? 'g_samp_explicit[2]' (layout( binding=7) uniform sampler)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 3X3 matrix of float g_mats, layout( binding=10) uniform 4-element array of 3X3 matrix of float g_mats_explicit, uniform 4-element array of float g_floats})
0:? 'not_flattened_a' ( global 5-element array of int)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? 'ps_output.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 137
+// Generated by (magic number): 80002
+// Id's are bound by 143
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 128
+ EntryPoint Fragment 4 "main" 134
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 "TestFn1("
Name 22 "TestFn2(t11[3];p1[3];"
@@ -365,60 +367,62 @@ gl_FragCoord origin is upper left
Name 34 "not_flattened_a"
Name 42 "g_tex[1]"
Name 45 "g_samp[1]"
- Name 61 "local_sampler_array"
- Name 63 "g_samp[0]"
- Name 68 "g_samp[2]"
- Name 71 "local_texture_array"
- Name 72 "g_tex[0]"
- Name 77 "g_tex[2]"
- Name 83 "local_float_array"
- Name 89 "$Global"
- MemberName 89($Global) 0 "g_mats"
- MemberName 89($Global) 1 "g_mats_explicit"
- MemberName 89($Global) 2 "g_floats"
- Name 91 ""
- Name 105 "aggShadow"
- Name 112 "aggShadow"
- Name 123 "ps_output"
- Name 124 "param"
- Name 128 "color"
- Name 131 "g_tex_explicit[0]"
- Name 132 "g_tex_explicit[1]"
- Name 133 "g_tex_explicit[2]"
- Name 134 "g_samp_explicit[0]"
- Name 135 "g_samp_explicit[1]"
- Name 136 "g_samp_explicit[2]"
+ Name 63 "local_sampler_array"
+ Name 65 "g_samp[0]"
+ Name 70 "g_samp[2]"
+ Name 73 "local_texture_array"
+ Name 74 "g_tex[0]"
+ Name 79 "g_tex[2]"
+ Name 85 "local_float_array"
+ Name 91 "$Global"
+ MemberName 91($Global) 0 "g_mats"
+ MemberName 91($Global) 1 "g_mats_explicit"
+ MemberName 91($Global) 2 "g_floats"
+ Name 93 ""
+ Name 107 "aggShadow"
+ Name 114 "aggShadow"
+ Name 121 "param"
+ Name 123 "param"
+ Name 129 "ps_output"
+ Name 130 "param"
+ Name 134 "ps_output.color"
+ Name 137 "g_tex_explicit[0]"
+ Name 138 "g_tex_explicit[1]"
+ Name 139 "g_tex_explicit[2]"
+ Name 140 "g_samp_explicit[0]"
+ Name 141 "g_samp_explicit[1]"
+ Name 142 "g_samp_explicit[2]"
Decorate 42(g_tex[1]) DescriptorSet 0
Decorate 45(g_samp[1]) DescriptorSet 0
- Decorate 63(g_samp[0]) DescriptorSet 0
- Decorate 68(g_samp[2]) DescriptorSet 0
- Decorate 72(g_tex[0]) DescriptorSet 0
- Decorate 77(g_tex[2]) DescriptorSet 0
- Decorate 86 ArrayStride 48
- Decorate 87 ArrayStride 48
- Decorate 88 ArrayStride 16
- MemberDecorate 89($Global) 0 RowMajor
- MemberDecorate 89($Global) 0 Offset 0
- MemberDecorate 89($Global) 0 MatrixStride 16
- MemberDecorate 89($Global) 1 RowMajor
- MemberDecorate 89($Global) 1 Offset 192
- MemberDecorate 89($Global) 1 MatrixStride 16
- MemberDecorate 89($Global) 2 Offset 384
- Decorate 89($Global) Block
- Decorate 91 DescriptorSet 0
- Decorate 128(color) Location 0
- Decorate 131(g_tex_explicit[0]) DescriptorSet 0
- Decorate 131(g_tex_explicit[0]) Binding 1
- Decorate 132(g_tex_explicit[1]) DescriptorSet 0
- Decorate 132(g_tex_explicit[1]) Binding 2
- Decorate 133(g_tex_explicit[2]) DescriptorSet 0
- Decorate 133(g_tex_explicit[2]) Binding 3
- Decorate 134(g_samp_explicit[0]) DescriptorSet 0
- Decorate 134(g_samp_explicit[0]) Binding 5
- Decorate 135(g_samp_explicit[1]) DescriptorSet 0
- Decorate 135(g_samp_explicit[1]) Binding 6
- Decorate 136(g_samp_explicit[2]) DescriptorSet 0
- Decorate 136(g_samp_explicit[2]) Binding 7
+ Decorate 65(g_samp[0]) DescriptorSet 0
+ Decorate 70(g_samp[2]) DescriptorSet 0
+ Decorate 74(g_tex[0]) DescriptorSet 0
+ Decorate 79(g_tex[2]) DescriptorSet 0
+ Decorate 88 ArrayStride 48
+ Decorate 89 ArrayStride 48
+ Decorate 90 ArrayStride 16
+ MemberDecorate 91($Global) 0 RowMajor
+ MemberDecorate 91($Global) 0 Offset 0
+ MemberDecorate 91($Global) 0 MatrixStride 16
+ MemberDecorate 91($Global) 1 RowMajor
+ MemberDecorate 91($Global) 1 Offset 192
+ MemberDecorate 91($Global) 1 MatrixStride 16
+ MemberDecorate 91($Global) 2 Offset 384
+ Decorate 91($Global) Block
+ Decorate 93 DescriptorSet 0
+ Decorate 134(ps_output.color) Location 0
+ Decorate 137(g_tex_explicit[0]) DescriptorSet 0
+ Decorate 137(g_tex_explicit[0]) Binding 1
+ Decorate 138(g_tex_explicit[1]) DescriptorSet 0
+ Decorate 138(g_tex_explicit[1]) Binding 2
+ Decorate 139(g_tex_explicit[2]) DescriptorSet 0
+ Decorate 139(g_tex_explicit[2]) Binding 3
+ Decorate 140(g_samp_explicit[0]) DescriptorSet 0
+ Decorate 140(g_samp_explicit[0]) Binding 5
+ Decorate 141(g_samp_explicit[1]) DescriptorSet 0
+ Decorate 141(g_samp_explicit[1]) Binding 6
+ Decorate 142(g_samp_explicit[2]) DescriptorSet 0
+ Decorate 142(g_samp_explicit[2]) Binding 7
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -428,10 +432,10 @@ gl_FragCoord origin is upper left
12: TypeInt 32 0
13: 12(int) Constant 3
14: TypeArray 11 13
- 15: TypePointer UniformConstant 14
+ 15: TypePointer Function 14
16: TypeSampler
17: TypeArray 16 13
- 18: TypePointer UniformConstant 17
+ 18: TypePointer Function 17
19: TypeFunction 7(fvec4) 15(ptr) 18(ptr)
24(PS_OUTPUT): TypeStruct 7(fvec4)
25: TypePointer Function 24(PS_OUTPUT)
@@ -453,48 +457,46 @@ gl_FragCoord origin is upper left
45(g_samp[1]): 44(ptr) Variable UniformConstant
47: TypeSampledImage 11
49: 6(float) Constant 1045220557
-61(local_sampler_array): 18(ptr) Variable UniformConstant
- 62: 30(int) Constant 0
- 63(g_samp[0]): 44(ptr) Variable UniformConstant
- 68(g_samp[2]): 44(ptr) Variable UniformConstant
-71(local_texture_array): 15(ptr) Variable UniformConstant
- 72(g_tex[0]): 41(ptr) Variable UniformConstant
- 77(g_tex[2]): 41(ptr) Variable UniformConstant
- 80: 12(int) Constant 4
- 81: TypeArray 6(float) 80
- 82: TypePointer Function 81
- 84: TypeVector 6(float) 3
- 85: TypeMatrix 84(fvec3) 3
- 86: TypeArray 85 80
- 87: TypeArray 85 80
- 88: TypeArray 6(float) 80
- 89($Global): TypeStruct 86 87 88
- 90: TypePointer Uniform 89($Global)
- 91: 90(ptr) Variable Uniform
- 92: TypePointer Uniform 88
- 96: TypePointer Function 6(float)
- 105(aggShadow): 15(ptr) Variable UniformConstant
- 112(aggShadow): 18(ptr) Variable UniformConstant
- 121: TypePointer Function 7(fvec4)
- 127: TypePointer Output 7(fvec4)
- 128(color): 127(ptr) Variable Output
-131(g_tex_explicit[0]): 41(ptr) Variable UniformConstant
-132(g_tex_explicit[1]): 41(ptr) Variable UniformConstant
-133(g_tex_explicit[2]): 41(ptr) Variable UniformConstant
-134(g_samp_explicit[0]): 44(ptr) Variable UniformConstant
-135(g_samp_explicit[1]): 44(ptr) Variable UniformConstant
-136(g_samp_explicit[2]): 44(ptr) Variable UniformConstant
+ 53: TypePointer Function 11
+ 56: TypePointer Function 16
+ 64: 30(int) Constant 0
+ 65(g_samp[0]): 44(ptr) Variable UniformConstant
+ 70(g_samp[2]): 44(ptr) Variable UniformConstant
+ 74(g_tex[0]): 41(ptr) Variable UniformConstant
+ 79(g_tex[2]): 41(ptr) Variable UniformConstant
+ 82: 12(int) Constant 4
+ 83: TypeArray 6(float) 82
+ 84: TypePointer Function 83
+ 86: TypeVector 6(float) 3
+ 87: TypeMatrix 86(fvec3) 3
+ 88: TypeArray 87 82
+ 89: TypeArray 87 82
+ 90: TypeArray 6(float) 82
+ 91($Global): TypeStruct 88 89 90
+ 92: TypePointer Uniform 91($Global)
+ 93: 92(ptr) Variable Uniform
+ 94: TypePointer Uniform 90
+ 98: TypePointer Function 6(float)
+ 127: TypePointer Function 7(fvec4)
+ 133: TypePointer Output 7(fvec4)
+134(ps_output.color): 133(ptr) Variable Output
+137(g_tex_explicit[0]): 41(ptr) Variable UniformConstant
+138(g_tex_explicit[1]): 41(ptr) Variable UniformConstant
+139(g_tex_explicit[2]): 41(ptr) Variable UniformConstant
+140(g_samp_explicit[0]): 44(ptr) Variable UniformConstant
+141(g_samp_explicit[1]): 44(ptr) Variable UniformConstant
+142(g_samp_explicit[2]): 44(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
- 123(ps_output): 25(ptr) Variable Function
- 124(param): 25(ptr) Variable Function
+ 129(ps_output): 25(ptr) Variable Function
+ 130(param): 25(ptr) Variable Function
Store 34(not_flattened_a) 40
- 125: 2 FunctionCall 28(@main(struct-PS_OUTPUT-vf41;) 124(param)
- 126:24(PS_OUTPUT) Load 124(param)
- Store 123(ps_output) 126
- 129: 121(ptr) AccessChain 123(ps_output) 62
- 130: 7(fvec4) Load 129
- Store 128(color) 130
+ 131: 2 FunctionCall 28(@main(struct-PS_OUTPUT-vf41;) 130(param)
+ 132:24(PS_OUTPUT) Load 130(param)
+ Store 129(ps_output) 132
+ 135: 127(ptr) AccessChain 129(ps_output) 64
+ 136: 7(fvec4) Load 135
+ Store 134(ps_output.color) 136
Return
FunctionEnd
9(TestFn1(): 7(fvec4) Function None 8
@@ -509,72 +511,82 @@ gl_FragCoord origin is upper left
20(l_tex): 15(ptr) FunctionParameter
21(l_samp): 18(ptr) FunctionParameter
23: Label
- 53: 41(ptr) AccessChain 20(l_tex) 36
- 54: 11 Load 53
- 55: 44(ptr) AccessChain 21(l_samp) 36
- 56: 16 Load 55
- 57: 47 SampledImage 54 56
- 58: 7(fvec4) ImageSampleImplicitLod 57 49
- ReturnValue 58
+ 54: 53(ptr) AccessChain 20(l_tex) 36
+ 55: 11 Load 54
+ 57: 56(ptr) AccessChain 21(l_samp) 36
+ 58: 16 Load 57
+ 59: 47 SampledImage 55 58
+ 60: 7(fvec4) ImageSampleImplicitLod 59 49
+ ReturnValue 60
FunctionEnd
28(@main(struct-PS_OUTPUT-vf41;): 2 Function None 26
27(ps_output): 25(ptr) FunctionParameter
29: Label
-83(local_float_array): 82(ptr) Variable Function
- 64: 16 Load 63(g_samp[0])
- 65: 44(ptr) AccessChain 61(local_sampler_array) 62
- Store 65 64
- 66: 16 Load 45(g_samp[1])
- 67: 44(ptr) AccessChain 61(local_sampler_array) 35
+63(local_sampler_array): 18(ptr) Variable Function
+73(local_texture_array): 15(ptr) Variable Function
+85(local_float_array): 84(ptr) Variable Function
+ 107(aggShadow): 15(ptr) Variable Function
+ 114(aggShadow): 18(ptr) Variable Function
+ 121(param): 15(ptr) Variable Function
+ 123(param): 18(ptr) Variable Function
+ 66: 16 Load 65(g_samp[0])
+ 67: 56(ptr) AccessChain 63(local_sampler_array) 64
Store 67 66
- 69: 16 Load 68(g_samp[2])
- 70: 44(ptr) AccessChain 61(local_sampler_array) 36
- Store 70 69
- 73: 11 Load 72(g_tex[0])
- 74: 41(ptr) AccessChain 71(local_texture_array) 62
- Store 74 73
- 75: 11 Load 42(g_tex[1])
- 76: 41(ptr) AccessChain 71(local_texture_array) 35
+ 68: 16 Load 45(g_samp[1])
+ 69: 56(ptr) AccessChain 63(local_sampler_array) 35
+ Store 69 68
+ 71: 16 Load 70(g_samp[2])
+ 72: 56(ptr) AccessChain 63(local_sampler_array) 36
+ Store 72 71
+ 75: 11 Load 74(g_tex[0])
+ 76: 53(ptr) AccessChain 73(local_texture_array) 64
Store 76 75
- 78: 11 Load 77(g_tex[2])
- 79: 41(ptr) AccessChain 71(local_texture_array) 36
- Store 79 78
- 93: 92(ptr) AccessChain 91 36
- 94: 88 Load 93
- 95: 6(float) CompositeExtract 94 0
- 97: 96(ptr) AccessChain 83(local_float_array) 62
- Store 97 95
- 98: 6(float) CompositeExtract 94 1
- 99: 96(ptr) AccessChain 83(local_float_array) 35
- Store 99 98
- 100: 6(float) CompositeExtract 94 2
- 101: 96(ptr) AccessChain 83(local_float_array) 36
+ 77: 11 Load 42(g_tex[1])
+ 78: 53(ptr) AccessChain 73(local_texture_array) 35
+ Store 78 77
+ 80: 11 Load 79(g_tex[2])
+ 81: 53(ptr) AccessChain 73(local_texture_array) 36
+ Store 81 80
+ 95: 94(ptr) AccessChain 93 36
+ 96: 90 Load 95
+ 97: 6(float) CompositeExtract 96 0
+ 99: 98(ptr) AccessChain 85(local_float_array) 64
+ Store 99 97
+ 100: 6(float) CompositeExtract 96 1
+ 101: 98(ptr) AccessChain 85(local_float_array) 35
Store 101 100
- 102: 6(float) CompositeExtract 94 3
- 103: 96(ptr) AccessChain 83(local_float_array) 37
+ 102: 6(float) CompositeExtract 96 2
+ 103: 98(ptr) AccessChain 85(local_float_array) 36
Store 103 102
- 104: 7(fvec4) FunctionCall 9(TestFn1()
- 106: 11 Load 72(g_tex[0])
- 107: 41(ptr) AccessChain 105(aggShadow) 62
- Store 107 106
- 108: 11 Load 42(g_tex[1])
- 109: 41(ptr) AccessChain 105(aggShadow) 35
+ 104: 6(float) CompositeExtract 96 3
+ 105: 98(ptr) AccessChain 85(local_float_array) 37
+ Store 105 104
+ 106: 7(fvec4) FunctionCall 9(TestFn1()
+ 108: 11 Load 74(g_tex[0])
+ 109: 53(ptr) AccessChain 107(aggShadow) 64
Store 109 108
- 110: 11 Load 77(g_tex[2])
- 111: 41(ptr) AccessChain 105(aggShadow) 36
+ 110: 11 Load 42(g_tex[1])
+ 111: 53(ptr) AccessChain 107(aggShadow) 35
Store 111 110
- 113: 16 Load 63(g_samp[0])
- 114: 44(ptr) AccessChain 112(aggShadow) 62
- Store 114 113
- 115: 16 Load 45(g_samp[1])
- 116: 44(ptr) AccessChain 112(aggShadow) 35
+ 112: 11 Load 79(g_tex[2])
+ 113: 53(ptr) AccessChain 107(aggShadow) 36
+ Store 113 112
+ 115: 16 Load 65(g_samp[0])
+ 116: 56(ptr) AccessChain 114(aggShadow) 64
Store 116 115
- 117: 16 Load 68(g_samp[2])
- 118: 44(ptr) AccessChain 112(aggShadow) 36
+ 117: 16 Load 45(g_samp[1])
+ 118: 56(ptr) AccessChain 114(aggShadow) 35
Store 118 117
- 119: 7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 105(aggShadow) 112(aggShadow)
- 120: 7(fvec4) FAdd 104 119
- 122: 121(ptr) AccessChain 27(ps_output) 62
- Store 122 120
+ 119: 16 Load 70(g_samp[2])
+ 120: 56(ptr) AccessChain 114(aggShadow) 36
+ Store 120 119
+ 122: 14 Load 107(aggShadow)
+ Store 121(param) 122
+ 124: 17 Load 114(aggShadow)
+ Store 123(param) 124
+ 125: 7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 121(param) 123(param)
+ 126: 7(fvec4) FAdd 106 125
+ 128: 127(ptr) AccessChain 27(ps_output) 64
+ Store 128 126
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.frag.out
index 58fa077735b..dc48f6fab39 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.frag.out
@@ -1,192 +1,343 @@
hlsl.array.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
-0:8 Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float)
-0:8 Function Parameters:
-0:8 'i' ( in int)
-0:8 'input' ( in 3-element array of 4-component vector of float)
+0:7 Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:7 'C' ( global 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:11 Sequence
+0:11 move second child to first child ( temp 2-element array of 4-component vector of float)
+0:11 'c2' ( global 2-element array of 4-component vector of float)
+0:11 Construct vec4 ( temp 2-element array of 4-component vector of float)
+0:11 'C' ( global 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:14 Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float)
+0:14 Function Parameters:
+0:14 'i' ( in int)
+0:14 'input' ( in 3-element array of 4-component vector of float)
0:? Sequence
-0:10 Branch: Return with expression
-0:10 add ( temp 4-component vector of float)
-0:10 add ( temp 4-component vector of float)
-0:10 add ( temp 4-component vector of float)
-0:10 add ( temp 4-component vector of float)
-0:10 add ( temp 4-component vector of float)
-0:10 add ( temp 4-component vector of float)
-0:10 direct index ( temp 4-component vector of float)
-0:10 a: direct index for structure ( uniform 4-element array of 4-component vector of float)
-0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
-0:10 Constant:
-0:10 0 (const uint)
-0:10 Constant:
-0:10 1 (const int)
-0:10 indirect index ( temp 4-component vector of float)
-0:10 a: direct index for structure ( uniform 4-element array of 4-component vector of float)
-0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
-0:10 Constant:
-0:10 0 (const uint)
-0:10 'i' ( in int)
-0:10 direct index ( temp 4-component vector of float)
-0:10 'input' ( in 3-element array of 4-component vector of float)
-0:10 Constant:
-0:10 2 (const int)
-0:10 indirect index ( temp 4-component vector of float)
-0:10 'input' ( in 3-element array of 4-component vector of float)
-0:10 'i' ( in int)
-0:10 direct index ( temp 4-component vector of float)
-0:10 'b' ( temp 10-element array of 4-component vector of float)
-0:10 Constant:
-0:10 5 (const int)
-0:10 indirect index ( temp 4-component vector of float)
-0:10 'b' ( temp 10-element array of 4-component vector of float)
-0:10 'i' ( in int)
-0:10 indirect index ( temp 4-component vector of float)
-0:10 m: direct index for structure ( temp 7-element array of 4-component vector of float)
-0:10 indirect index ( temp structure{ temp 7-element array of 4-component vector of float m})
-0:10 s: direct index for structure ( uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m})
-0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
-0:10 Constant:
-0:10 1 (const uint)
-0:10 'i' ( in int)
-0:10 Constant:
-0:10 0 (const int)
-0:10 'i' ( in int)
-0:8 Function Definition: PixelShaderFunction( ( temp void)
-0:8 Function Parameters:
+0:15 Sequence
+0:15 move second child to first child ( temp 10-element array of 4-component vector of float)
+0:15 'b' ( temp 10-element array of 4-component vector of float)
+0:15 Construct vec4 ( temp 10-element array of 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:16 Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 'tmp' ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 'C' ( global 4-component vector of float)
+0:16 direct index ( temp 4-component vector of float)
+0:16 a1: direct index for structure ( uniform 1-element array of 4-component vector of float)
+0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:16 Constant:
+0:16 2 (const uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1.000000
+0:16 2.000000
+0:16 3.000000
+0:16 4.000000
+0:16 indirect index ( temp 4-component vector of float)
+0:16 a2: direct index for structure ( uniform 2-element array of 4-component vector of float)
+0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:16 Constant:
+0:16 3 (const uint)
+0:16 'i' ( in int)
+0:16 indirect index ( temp 4-component vector of float)
+0:16 'c2' ( global 2-element array of 4-component vector of float)
+0:16 'i' ( in int)
+0:17 Branch: Return with expression
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 direct index ( temp 4-component vector of float)
+0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 Constant:
+0:17 1 (const int)
+0:17 indirect index ( temp 4-component vector of float)
+0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 'i' ( in int)
+0:17 direct index ( temp 4-component vector of float)
+0:17 'input' ( in 3-element array of 4-component vector of float)
+0:17 Constant:
+0:17 2 (const int)
+0:17 indirect index ( temp 4-component vector of float)
+0:17 'input' ( in 3-element array of 4-component vector of float)
+0:17 'i' ( in int)
+0:17 direct index ( temp 4-component vector of float)
+0:17 'b' ( temp 10-element array of 4-component vector of float)
+0:17 Constant:
+0:17 5 (const int)
+0:17 indirect index ( temp 4-component vector of float)
+0:17 'b' ( temp 10-element array of 4-component vector of float)
+0:17 'i' ( in int)
+0:17 indirect index ( temp 4-component vector of float)
+0:17 m: direct index for structure ( temp 7-element array of 4-component vector of float)
+0:17 indirect index ( temp structure{ temp 7-element array of 4-component vector of float m})
+0:17 s: direct index for structure ( uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m})
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:17 Constant:
+0:17 1 (const uint)
+0:17 'i' ( in int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 'i' ( in int)
+0:17 'tmp' ( temp 4-component vector of float)
+0:14 Function Definition: PixelShaderFunction( ( temp void)
+0:14 Function Parameters:
0:? Sequence
-0:8 move second child to first child ( temp int)
+0:14 move second child to first child ( temp int)
0:? 'i' ( temp int)
-0:? 'i' (layout( location=0) in int)
-0:8 move second child to first child ( temp 3-element array of 4-component vector of float)
+0:? 'i' (layout( location=0) flat in int)
+0:14 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'input' ( temp 3-element array of 4-component vector of float)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
-0:8 move second child to first child ( temp 4-component vector of float)
+0:14 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:8 Function Call: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float)
+0:14 Function Call: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float)
0:? 'i' ( temp int)
0:? 'input' ( temp 3-element array of 4-component vector of float)
0:? Linker Objects
-0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:? 'C' ( global 4-component vector of float)
+0:? 'c1' ( const 1-element array of 4-component vector of float)
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:? 'c2' ( global 2-element array of 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
-0:8 Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float)
-0:8 Function Parameters:
-0:8 'i' ( in int)
-0:8 'input' ( in 3-element array of 4-component vector of float)
+0:7 Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:7 'C' ( global 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:11 Sequence
+0:11 move second child to first child ( temp 2-element array of 4-component vector of float)
+0:11 'c2' ( global 2-element array of 4-component vector of float)
+0:11 Construct vec4 ( temp 2-element array of 4-component vector of float)
+0:11 'C' ( global 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:14 Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float)
+0:14 Function Parameters:
+0:14 'i' ( in int)
+0:14 'input' ( in 3-element array of 4-component vector of float)
0:? Sequence
-0:10 Branch: Return with expression
-0:10 add ( temp 4-component vector of float)
-0:10 add ( temp 4-component vector of float)
-0:10 add ( temp 4-component vector of float)
-0:10 add ( temp 4-component vector of float)
-0:10 add ( temp 4-component vector of float)
-0:10 add ( temp 4-component vector of float)
-0:10 direct index ( temp 4-component vector of float)
-0:10 a: direct index for structure ( uniform 4-element array of 4-component vector of float)
-0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
-0:10 Constant:
-0:10 0 (const uint)
-0:10 Constant:
-0:10 1 (const int)
-0:10 indirect index ( temp 4-component vector of float)
-0:10 a: direct index for structure ( uniform 4-element array of 4-component vector of float)
-0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
-0:10 Constant:
-0:10 0 (const uint)
-0:10 'i' ( in int)
-0:10 direct index ( temp 4-component vector of float)
-0:10 'input' ( in 3-element array of 4-component vector of float)
-0:10 Constant:
-0:10 2 (const int)
-0:10 indirect index ( temp 4-component vector of float)
-0:10 'input' ( in 3-element array of 4-component vector of float)
-0:10 'i' ( in int)
-0:10 direct index ( temp 4-component vector of float)
-0:10 'b' ( temp 10-element array of 4-component vector of float)
-0:10 Constant:
-0:10 5 (const int)
-0:10 indirect index ( temp 4-component vector of float)
-0:10 'b' ( temp 10-element array of 4-component vector of float)
-0:10 'i' ( in int)
-0:10 indirect index ( temp 4-component vector of float)
-0:10 m: direct index for structure ( temp 7-element array of 4-component vector of float)
-0:10 indirect index ( temp structure{ temp 7-element array of 4-component vector of float m})
-0:10 s: direct index for structure ( uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m})
-0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
-0:10 Constant:
-0:10 1 (const uint)
-0:10 'i' ( in int)
-0:10 Constant:
-0:10 0 (const int)
-0:10 'i' ( in int)
-0:8 Function Definition: PixelShaderFunction( ( temp void)
-0:8 Function Parameters:
+0:15 Sequence
+0:15 move second child to first child ( temp 10-element array of 4-component vector of float)
+0:15 'b' ( temp 10-element array of 4-component vector of float)
+0:15 Construct vec4 ( temp 10-element array of 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:15 'C' ( global 4-component vector of float)
+0:16 Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 'tmp' ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 'C' ( global 4-component vector of float)
+0:16 direct index ( temp 4-component vector of float)
+0:16 a1: direct index for structure ( uniform 1-element array of 4-component vector of float)
+0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:16 Constant:
+0:16 2 (const uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1.000000
+0:16 2.000000
+0:16 3.000000
+0:16 4.000000
+0:16 indirect index ( temp 4-component vector of float)
+0:16 a2: direct index for structure ( uniform 2-element array of 4-component vector of float)
+0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:16 Constant:
+0:16 3 (const uint)
+0:16 'i' ( in int)
+0:16 indirect index ( temp 4-component vector of float)
+0:16 'c2' ( global 2-element array of 4-component vector of float)
+0:16 'i' ( in int)
+0:17 Branch: Return with expression
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 add ( temp 4-component vector of float)
+0:17 direct index ( temp 4-component vector of float)
+0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 Constant:
+0:17 1 (const int)
+0:17 indirect index ( temp 4-component vector of float)
+0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 'i' ( in int)
+0:17 direct index ( temp 4-component vector of float)
+0:17 'input' ( in 3-element array of 4-component vector of float)
+0:17 Constant:
+0:17 2 (const int)
+0:17 indirect index ( temp 4-component vector of float)
+0:17 'input' ( in 3-element array of 4-component vector of float)
+0:17 'i' ( in int)
+0:17 direct index ( temp 4-component vector of float)
+0:17 'b' ( temp 10-element array of 4-component vector of float)
+0:17 Constant:
+0:17 5 (const int)
+0:17 indirect index ( temp 4-component vector of float)
+0:17 'b' ( temp 10-element array of 4-component vector of float)
+0:17 'i' ( in int)
+0:17 indirect index ( temp 4-component vector of float)
+0:17 m: direct index for structure ( temp 7-element array of 4-component vector of float)
+0:17 indirect index ( temp structure{ temp 7-element array of 4-component vector of float m})
+0:17 s: direct index for structure ( uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m})
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:17 Constant:
+0:17 1 (const uint)
+0:17 'i' ( in int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 'i' ( in int)
+0:17 'tmp' ( temp 4-component vector of float)
+0:14 Function Definition: PixelShaderFunction( ( temp void)
+0:14 Function Parameters:
0:? Sequence
-0:8 move second child to first child ( temp int)
+0:14 move second child to first child ( temp int)
0:? 'i' ( temp int)
-0:? 'i' (layout( location=0) in int)
-0:8 move second child to first child ( temp 3-element array of 4-component vector of float)
+0:? 'i' (layout( location=0) flat in int)
+0:14 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'input' ( temp 3-element array of 4-component vector of float)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
-0:8 move second child to first child ( temp 4-component vector of float)
+0:14 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:8 Function Call: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float)
+0:14 Function Call: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float)
0:? 'i' ( temp int)
0:? 'input' ( temp 3-element array of 4-component vector of float)
0:? Linker Objects
-0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2})
+0:? 'C' ( global 4-component vector of float)
+0:? 'c1' ( const 1-element array of 4-component vector of float)
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:? 'c2' ( global 2-element array of 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 81
+// Generated by (magic number): 80002
+// Id's are bound by 126
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 68 72 75
+ EntryPoint Fragment 4 "PixelShaderFunction" 112 116 119
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 17 "@PixelShaderFunction(i1;vf4[3];"
Name 15 "i"
Name 16 "input"
- Name 23 ""
- MemberName 23 0 "m"
- Name 26 "$Global"
- MemberName 26($Global) 0 "a"
- MemberName 26($Global) 1 "s"
- Name 28 ""
- Name 50 "b"
- Name 66 "i"
- Name 68 "i"
- Name 70 "input"
- Name 72 "input"
- Name 75 "@entryPointOutput"
- Name 76 "param"
- Name 78 "param"
- Decorate 20 ArrayStride 16
- Decorate 22 ArrayStride 16
- MemberDecorate 23 0 Offset 0
- Decorate 25 ArrayStride 112
- MemberDecorate 26($Global) 0 Offset 0
- MemberDecorate 26($Global) 1 Offset 64
- Decorate 26($Global) Block
- Decorate 28 DescriptorSet 0
- Decorate 68(i) Location 0
- Decorate 72(input) Location 1
- Decorate 75(@entryPointOutput) Location 0
+ Name 20 "C"
+ Name 29 "c2"
+ Name 35 "b"
+ Name 48 "tmp"
+ Name 54 ""
+ MemberName 54 0 "m"
+ Name 60 "$Global"
+ MemberName 60($Global) 0 "a"
+ MemberName 60($Global) 1 "s"
+ MemberName 60($Global) 2 "a1"
+ MemberName 60($Global) 3 "a2"
+ Name 62 ""
+ Name 110 "i"
+ Name 112 "i"
+ Name 114 "input"
+ Name 116 "input"
+ Name 119 "@entryPointOutput"
+ Name 120 "param"
+ Name 122 "param"
+ Decorate 51 ArrayStride 16
+ Decorate 53 ArrayStride 16
+ MemberDecorate 54 0 Offset 0
+ Decorate 56 ArrayStride 112
+ Decorate 58 ArrayStride 16
+ Decorate 59 ArrayStride 16
+ MemberDecorate 60($Global) 0 Offset 0
+ MemberDecorate 60($Global) 1 Offset 64
+ MemberDecorate 60($Global) 2 Offset 1296
+ MemberDecorate 60($Global) 3 Offset 1312
+ Decorate 60($Global) Block
+ Decorate 62 DescriptorSet 0
+ Decorate 112(i) Flat
+ Decorate 112(i) Location 0
+ Decorate 116(input) Location 1
+ Decorate 119(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -198,78 +349,127 @@ gl_FragCoord origin is upper left
12: TypeArray 9(fvec4) 11
13: TypePointer Function 12
14: TypeFunction 9(fvec4) 7(ptr) 13(ptr)
- 19: 10(int) Constant 4
- 20: TypeArray 9(fvec4) 19
- 21: 10(int) Constant 7
- 22: TypeArray 9(fvec4) 21
- 23: TypeStruct 22
- 24: 10(int) Constant 11
- 25: TypeArray 23(struct) 24
- 26($Global): TypeStruct 20 25
- 27: TypePointer Uniform 26($Global)
- 28: 27(ptr) Variable Uniform
- 29: 6(int) Constant 0
- 30: 6(int) Constant 1
- 31: TypePointer Uniform 9(fvec4)
- 38: 6(int) Constant 2
- 39: TypePointer Function 9(fvec4)
- 47: 10(int) Constant 10
- 48: TypeArray 9(fvec4) 47
- 49: TypePointer Function 48
- 51: 6(int) Constant 5
- 67: TypePointer Input 6(int)
- 68(i): 67(ptr) Variable Input
- 71: TypePointer Input 12
- 72(input): 71(ptr) Variable Input
- 74: TypePointer Output 9(fvec4)
-75(@entryPointOutput): 74(ptr) Variable Output
+ 19: TypePointer Private 9(fvec4)
+ 20(C): 19(ptr) Variable Private
+ 21: 8(float) Constant 1065353216
+ 22: 8(float) Constant 1073741824
+ 23: 8(float) Constant 1077936128
+ 24: 8(float) Constant 1082130432
+ 25: 9(fvec4) ConstantComposite 21 22 23 24
+ 26: 10(int) Constant 2
+ 27: TypeArray 9(fvec4) 26
+ 28: TypePointer Private 27
+ 29(c2): 28(ptr) Variable Private
+ 32: 10(int) Constant 10
+ 33: TypeArray 9(fvec4) 32
+ 34: TypePointer Function 33
+ 47: TypePointer Function 9(fvec4)
+ 50: 10(int) Constant 4
+ 51: TypeArray 9(fvec4) 50
+ 52: 10(int) Constant 7
+ 53: TypeArray 9(fvec4) 52
+ 54: TypeStruct 53
+ 55: 10(int) Constant 11
+ 56: TypeArray 54(struct) 55
+ 57: 10(int) Constant 1
+ 58: TypeArray 9(fvec4) 57
+ 59: TypeArray 9(fvec4) 26
+ 60($Global): TypeStruct 51 56 58 59
+ 61: TypePointer Uniform 60($Global)
+ 62: 61(ptr) Variable Uniform
+ 63: 6(int) Constant 2
+ 64: 6(int) Constant 0
+ 65: TypePointer Uniform 9(fvec4)
+ 70: 6(int) Constant 3
+ 79: 6(int) Constant 1
+ 93: 6(int) Constant 5
+ 111: TypePointer Input 6(int)
+ 112(i): 111(ptr) Variable Input
+ 115: TypePointer Input 12
+ 116(input): 115(ptr) Variable Input
+ 118: TypePointer Output 9(fvec4)
+119(@entryPointOutput): 118(ptr) Variable Output
+ 125: 58 ConstantComposite 25
4(PixelShaderFunction): 2 Function None 3
5: Label
- 66(i): 7(ptr) Variable Function
- 70(input): 13(ptr) Variable Function
- 76(param): 7(ptr) Variable Function
- 78(param): 13(ptr) Variable Function
- 69: 6(int) Load 68(i)
- Store 66(i) 69
- 73: 12 Load 72(input)
- Store 70(input) 73
- 77: 6(int) Load 66(i)
- Store 76(param) 77
- 79: 12 Load 70(input)
- Store 78(param) 79
- 80: 9(fvec4) FunctionCall 17(@PixelShaderFunction(i1;vf4[3];) 76(param) 78(param)
- Store 75(@entryPointOutput) 80
+ 110(i): 7(ptr) Variable Function
+ 114(input): 13(ptr) Variable Function
+ 120(param): 7(ptr) Variable Function
+ 122(param): 13(ptr) Variable Function
+ Store 20(C) 25
+ 30: 9(fvec4) Load 20(C)
+ 31: 27 CompositeConstruct 30 25
+ Store 29(c2) 31
+ 113: 6(int) Load 112(i)
+ Store 110(i) 113
+ 117: 12 Load 116(input)
+ Store 114(input) 117
+ 121: 6(int) Load 110(i)
+ Store 120(param) 121
+ 123: 12 Load 114(input)
+ Store 122(param) 123
+ 124: 9(fvec4) FunctionCall 17(@PixelShaderFunction(i1;vf4[3];) 120(param) 122(param)
+ Store 119(@entryPointOutput) 124
Return
FunctionEnd
17(@PixelShaderFunction(i1;vf4[3];): 9(fvec4) Function None 14
15(i): 7(ptr) FunctionParameter
16(input): 13(ptr) FunctionParameter
18: Label
- 50(b): 49(ptr) Variable Function
- 32: 31(ptr) AccessChain 28 29 30
- 33: 9(fvec4) Load 32
- 34: 6(int) Load 15(i)
- 35: 31(ptr) AccessChain 28 29 34
- 36: 9(fvec4) Load 35
- 37: 9(fvec4) FAdd 33 36
- 40: 39(ptr) AccessChain 16(input) 38
- 41: 9(fvec4) Load 40
- 42: 9(fvec4) FAdd 37 41
- 43: 6(int) Load 15(i)
- 44: 39(ptr) AccessChain 16(input) 43
- 45: 9(fvec4) Load 44
- 46: 9(fvec4) FAdd 42 45
- 52: 39(ptr) AccessChain 50(b) 51
- 53: 9(fvec4) Load 52
- 54: 9(fvec4) FAdd 46 53
- 55: 6(int) Load 15(i)
- 56: 39(ptr) AccessChain 50(b) 55
- 57: 9(fvec4) Load 56
- 58: 9(fvec4) FAdd 54 57
- 59: 6(int) Load 15(i)
- 60: 6(int) Load 15(i)
- 61: 31(ptr) AccessChain 28 30 59 29 60
- 62: 9(fvec4) Load 61
- 63: 9(fvec4) FAdd 58 62
- ReturnValue 63
+ 35(b): 34(ptr) Variable Function
+ 48(tmp): 47(ptr) Variable Function
+ 36: 9(fvec4) Load 20(C)
+ 37: 9(fvec4) Load 20(C)
+ 38: 9(fvec4) Load 20(C)
+ 39: 9(fvec4) Load 20(C)
+ 40: 9(fvec4) Load 20(C)
+ 41: 9(fvec4) Load 20(C)
+ 42: 9(fvec4) Load 20(C)
+ 43: 9(fvec4) Load 20(C)
+ 44: 9(fvec4) Load 20(C)
+ 45: 9(fvec4) Load 20(C)
+ 46: 33 CompositeConstruct 36 37 38 39 40 41 42 43 44 45
+ Store 35(b) 46
+ 49: 9(fvec4) Load 20(C)
+ 66: 65(ptr) AccessChain 62 63 64
+ 67: 9(fvec4) Load 66
+ 68: 9(fvec4) FAdd 49 67
+ 69: 9(fvec4) FAdd 68 25
+ 71: 6(int) Load 15(i)
+ 72: 65(ptr) AccessChain 62 70 71
+ 73: 9(fvec4) Load 72
+ 74: 9(fvec4) FAdd 69 73
+ 75: 6(int) Load 15(i)
+ 76: 19(ptr) AccessChain 29(c2) 75
+ 77: 9(fvec4) Load 76
+ 78: 9(fvec4) FAdd 74 77
+ Store 48(tmp) 78
+ 80: 65(ptr) AccessChain 62 64 79
+ 81: 9(fvec4) Load 80
+ 82: 6(int) Load 15(i)
+ 83: 65(ptr) AccessChain 62 64 82
+ 84: 9(fvec4) Load 83
+ 85: 9(fvec4) FAdd 81 84
+ 86: 47(ptr) AccessChain 16(input) 63
+ 87: 9(fvec4) Load 86
+ 88: 9(fvec4) FAdd 85 87
+ 89: 6(int) Load 15(i)
+ 90: 47(ptr) AccessChain 16(input) 89
+ 91: 9(fvec4) Load 90
+ 92: 9(fvec4) FAdd 88 91
+ 94: 47(ptr) AccessChain 35(b) 93
+ 95: 9(fvec4) Load 94
+ 96: 9(fvec4) FAdd 92 95
+ 97: 6(int) Load 15(i)
+ 98: 47(ptr) AccessChain 35(b) 97
+ 99: 9(fvec4) Load 98
+ 100: 9(fvec4) FAdd 96 99
+ 101: 6(int) Load 15(i)
+ 102: 6(int) Load 15(i)
+ 103: 65(ptr) AccessChain 62 79 101 64 102
+ 104: 9(fvec4) Load 103
+ 105: 9(fvec4) FAdd 100 104
+ 106: 9(fvec4) Load 48(tmp)
+ 107: 9(fvec4) FAdd 105 106
+ ReturnValue 107
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.implicit-size.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.implicit-size.frag.out
index efe12400060..cfd65627946 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.implicit-size.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.implicit-size.frag.out
@@ -1,5 +1,5 @@
hlsl.array.implicit-size.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Sequence
@@ -83,7 +83,7 @@ Linked fragment stage:
WARNING: Linking fragment stage: Entry point not found
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Sequence
@@ -163,7 +163,7 @@ gl_FragCoord origin is upper left
0:? 'g_mystruct' ( global 2-element array of structure{ temp int i, temp float f})
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 72
Capability Shader
@@ -171,6 +171,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "color"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.multidim.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.multidim.frag.out
index e13399e4f85..133c71f9855 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.multidim.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.array.multidim.frag.out
@@ -1,5 +1,5 @@
hlsl.array.multidim.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -55,20 +55,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:10 Sequence
0:10 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:10 Color: direct index for structure ( temp 4-component vector of float)
0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:10 Constant:
0:10 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 5-element array of 4-element array of 3-element array of float float_array})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -124,17 +124,17 @@ gl_FragCoord origin is upper left
0:? Sequence
0:10 Sequence
0:10 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:10 Color: direct index for structure ( temp 4-component vector of float)
0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:10 Constant:
0:10 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 5-element array of 4-element array of 3-element array of float float_array})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 57
Capability Shader
@@ -142,6 +142,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 54
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -152,14 +153,14 @@ gl_FragCoord origin is upper left
Name 29 ""
Name 40 "float4_array_2"
Name 46 "psout"
- Name 54 "Color"
+ Name 54 "@entryPointOutput.Color"
Decorate 22 ArrayStride 16
Decorate 24 ArrayStride 48
Decorate 26 ArrayStride 192
MemberDecorate 27($Global) 0 Offset 0
Decorate 27($Global) Block
Decorate 29 DescriptorSet 0
- Decorate 54(Color) Location 0
+ Decorate 54(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -192,12 +193,12 @@ gl_FragCoord origin is upper left
41: TypePointer Function 14
45: TypePointer Function 8(PS_OUTPUT)
53: TypePointer Output 7(fvec4)
- 54(Color): 53(ptr) Variable Output
+54(@entryPointOutput.Color): 53(ptr) Variable Output
4(main): 2 Function None 3
5: Label
55:8(PS_OUTPUT) FunctionCall 10(@main()
56: 7(fvec4) CompositeExtract 55 0
- Store 54(Color) 56
+ Store 54(@entryPointOutput.Color) 56
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.assoc.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.assoc.frag.out
index 0a48528ec3d..7f071e403e0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.assoc.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.assoc.frag.out
@@ -1,5 +1,5 @@
hlsl.assoc.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:8 Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; ( temp 4-component vector of float)
@@ -67,7 +67,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:8 Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; ( temp 4-component vector of float)
@@ -132,7 +132,7 @@ gl_FragCoord origin is upper left
0:? 'a5' (layout( location=4) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 58
Capability Shader
@@ -140,6 +140,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 31 34 37 40 43 46
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 15 "@PixelShaderFunction(vf4;vf4;vf4;vf4;vf4;"
Name 10 "a1"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attribute.expression.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attribute.expression.comp.out
index bd4e96ba346..5fcf10d51b2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attribute.expression.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attribute.expression.comp.out
@@ -1,5 +1,5 @@
hlsl.attribute.expression.comp
-Shader version: 450
+Shader version: 500
local_size = (4, 6, 8)
0:? Sequence
0:9 Function Definition: @main( ( temp 4-component vector of float)
@@ -42,7 +42,7 @@ local_size = (4, 6, 8)
Linked compute stage:
-Shader version: 450
+Shader version: 500
local_size = (4, 6, 8)
0:? Sequence
0:9 Function Definition: @main( ( temp 4-component vector of float)
@@ -82,7 +82,7 @@ local_size = (4, 6, 8)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 39
Capability Shader
@@ -90,6 +90,7 @@ local_size = (4, 6, 8)
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 37
ExecutionMode 4 LocalSize 4 6 8
+ Source HLSL 500
Name 4 "main"
Name 9 "@main("
Name 13 "x"
@@ -131,7 +132,7 @@ local_size = (4, 6, 8)
Store 13(x) 14
Branch 15
15: Label
- LoopMerge 17 18 None
+ LoopMerge 17 18 Unroll
Branch 19
19: Label
20: 11(int) Load 13(x)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attribute.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attribute.frag.out
index 7a2641653f3..99471c47d0f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attribute.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attribute.frag.out
@@ -1,5 +1,5 @@
hlsl.attribute.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp void)
@@ -9,7 +9,7 @@ gl_FragCoord origin is upper left
0:11 Test condition and select ( temp void)
0:11 Condition
0:11 Constant:
-0:11 0 (const int)
+0:11 false (const bool)
0:11 true case is null
0:2 Function Definition: PixelShaderFunction( ( temp void)
0:2 Function Parameters:
@@ -26,7 +26,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp void)
@@ -36,7 +36,7 @@ gl_FragCoord origin is upper left
0:11 Test condition and select ( temp void)
0:11 Condition
0:11 Constant:
-0:11 0 (const int)
+0:11 false (const bool)
0:11 true case is null
0:2 Function Definition: PixelShaderFunction( ( temp void)
0:2 Function Parameters:
@@ -50,7 +50,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 24
Capability Shader
@@ -58,6 +58,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 19
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "@PixelShaderFunction(vf4;"
Name 10 "input"
@@ -71,8 +72,8 @@ gl_FragCoord origin is upper left
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeFunction 2 8(ptr)
- 13: TypeInt 32 1
- 14: 13(int) Constant 0
+ 13: TypeBool
+ 14: 13(bool) ConstantFalse
18: TypePointer Input 7(fvec4)
19(input): 18(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
@@ -89,7 +90,7 @@ gl_FragCoord origin is upper left
11(@PixelShaderFunction(vf4;): 2 Function None 9
10(input): 8(ptr) FunctionParameter
12: Label
- SelectionMerge 16 None
+ SelectionMerge 16 DontFlatten
BranchConditional 14 15 16
15: Label
Branch 16
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attributeC11.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attributeC11.frag.out
new file mode 100644
index 00000000000..02b0edeec93
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attributeC11.frag.out
@@ -0,0 +1,176 @@
+hlsl.attributeC11.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:16 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:16 Function Parameters:
+0:16 'input' ( in 4-component vector of float)
+0:? Sequence
+0:17 Branch: Return with expression
+0:17 add ( temp 4-component vector of float)
+0:17 'input' ( in 4-component vector of float)
+0:17 textureFetch ( temp 4-component vector of float)
+0:17 'attach' ( uniform texture2D)
+0:17 vector swizzle ( temp int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 direct index ( temp int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:16 Function Definition: main( ( temp void)
+0:16 Function Parameters:
+0:? Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:? 'input' ( temp 4-component vector of float)
+0:? 'input' (layout( location=8) in 4-component vector of float)
+0:16 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=7) out 4-component vector of float)
+0:16 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'input' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'buffer1' (layout( set=0 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 2-component vector of float f} @data})
+0:? 'buffer3' (layout( set=2 binding=3 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 2-component vector of float f} @data})
+0:? 'attach' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=7) out 4-component vector of float)
+0:? 'input' (layout( location=8) in 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:16 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:16 Function Parameters:
+0:16 'input' ( in 4-component vector of float)
+0:? Sequence
+0:17 Branch: Return with expression
+0:17 add ( temp 4-component vector of float)
+0:17 'input' ( in 4-component vector of float)
+0:17 textureFetch ( temp 4-component vector of float)
+0:17 'attach' ( uniform texture2D)
+0:17 vector swizzle ( temp int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 direct index ( temp int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:16 Function Definition: main( ( temp void)
+0:16 Function Parameters:
+0:? Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:? 'input' ( temp 4-component vector of float)
+0:? 'input' (layout( location=8) in 4-component vector of float)
+0:16 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=7) out 4-component vector of float)
+0:16 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'input' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'buffer1' (layout( set=0 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 2-component vector of float f} @data})
+0:? 'buffer3' (layout( set=2 binding=3 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 2-component vector of float f} @data})
+0:? 'attach' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=7) out 4-component vector of float)
+0:? 'input' (layout( location=8) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 47
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 33 36
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vf4;"
+ Name 10 "input"
+ Name 16 "attach"
+ Name 31 "input"
+ Name 33 "input"
+ Name 36 "@entryPointOutput"
+ Name 37 "param"
+ Name 41 "S"
+ MemberName 41(S) 0 "f"
+ Name 43 "buffer1"
+ MemberName 43(buffer1) 0 "@data"
+ Name 45 "buffer1"
+ Name 46 "buffer3"
+ Decorate 16(attach) DescriptorSet 0
+ Decorate 16(attach) InputAttachmentIndex 4
+ Decorate 33(input) Location 8
+ Decorate 36(@entryPointOutput) Location 7
+ MemberDecorate 41(S) 0 Offset 0
+ Decorate 42 ArrayStride 8
+ MemberDecorate 43(buffer1) 0 NonWritable
+ MemberDecorate 43(buffer1) 0 Offset 0
+ Decorate 43(buffer1) BufferBlock
+ Decorate 45(buffer1) DescriptorSet 0
+ Decorate 45(buffer1) Binding 1
+ Decorate 46(buffer3) DescriptorSet 2
+ Decorate 46(buffer3) Binding 3
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeFunction 7(fvec4) 8(ptr)
+ 14: TypeImage 6(float) 2D sampled format:Unknown
+ 15: TypePointer UniformConstant 14
+ 16(attach): 15(ptr) Variable UniformConstant
+ 18: TypeInt 32 1
+ 19: TypeVector 18(int) 2
+ 20: 18(int) Constant 0
+ 21: 19(ivec2) ConstantComposite 20 20
+ 22: TypeInt 32 0
+ 23: 22(int) Constant 0
+ 25: 22(int) Constant 1
+ 32: TypePointer Input 7(fvec4)
+ 33(input): 32(ptr) Variable Input
+ 35: TypePointer Output 7(fvec4)
+36(@entryPointOutput): 35(ptr) Variable Output
+ 40: TypeVector 6(float) 2
+ 41(S): TypeStruct 40(fvec2)
+ 42: TypeRuntimeArray 41(S)
+ 43(buffer1): TypeStruct 42
+ 44: TypePointer Uniform 43(buffer1)
+ 45(buffer1): 44(ptr) Variable Uniform
+ 46(buffer3): 44(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 31(input): 8(ptr) Variable Function
+ 37(param): 8(ptr) Variable Function
+ 34: 7(fvec4) Load 33(input)
+ Store 31(input) 34
+ 38: 7(fvec4) Load 31(input)
+ Store 37(param) 38
+ 39: 7(fvec4) FunctionCall 11(@main(vf4;) 37(param)
+ Store 36(@entryPointOutput) 39
+ Return
+ FunctionEnd
+ 11(@main(vf4;): 7(fvec4) Function None 9
+ 10(input): 8(ptr) FunctionParameter
+ 12: Label
+ 13: 7(fvec4) Load 10(input)
+ 17: 14 Load 16(attach)
+ 24: 18(int) CompositeExtract 21 0
+ 26: 18(int) CompositeExtract 21 1
+ 27: 7(fvec4) ImageFetch 17 24 Lod 26
+ 28: 7(fvec4) FAdd 13 27
+ ReturnValue 28
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
new file mode 100644
index 00000000000..e00ae5282e2
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
@@ -0,0 +1,109 @@
+hlsl.attributeGlobalBuffer.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6 Function Definition: @main( ( temp 4-component vector of float)
+0:6 Function Parameters:
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 add ( temp 4-component vector of float)
+0:7 u1: direct index for structure ( uniform 4-component vector of float)
+0:7 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2})
+0:7 Constant:
+0:7 0 (const uint)
+0:7 u2: direct index for structure ( uniform 4-component vector of float)
+0:7 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2})
+0:7 Constant:
+0:7 1 (const uint)
+0:6 Function Definition: main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:6 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:6 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6 Function Definition: @main( ( temp 4-component vector of float)
+0:6 Function Parameters:
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 add ( temp 4-component vector of float)
+0:7 u1: direct index for structure ( uniform 4-component vector of float)
+0:7 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2})
+0:7 Constant:
+0:7 0 (const uint)
+0:7 u2: direct index for structure ( uniform 4-component vector of float)
+0:7 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2})
+0:7 Constant:
+0:7 1 (const uint)
+0:6 Function Definition: main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:6 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:6 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1, uniform 4-component vector of float u2})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 28
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 26
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 11 "$Global"
+ MemberName 11($Global) 0 "u1"
+ MemberName 11($Global) 1 "u2"
+ Name 13 ""
+ Name 26 "@entryPointOutput"
+ MemberDecorate 11($Global) 0 Offset 0
+ MemberDecorate 11($Global) 1 Offset 16
+ Decorate 11($Global) Block
+ Decorate 13 DescriptorSet 2
+ Decorate 13 Binding 5
+ Decorate 26(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11($Global): TypeStruct 7(fvec4) 7(fvec4)
+ 12: TypePointer Uniform 11($Global)
+ 13: 12(ptr) Variable Uniform
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: TypePointer Uniform 7(fvec4)
+ 19: 14(int) Constant 1
+ 25: TypePointer Output 7(fvec4)
+26(@entryPointOutput): 25(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 27: 7(fvec4) FunctionCall 9(@main()
+ Store 26(@entryPointOutput) 27
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 17: 16(ptr) AccessChain 13 15
+ 18: 7(fvec4) Load 17
+ 20: 16(ptr) AccessChain 13 19
+ 21: 7(fvec4) Load 20
+ 22: 7(fvec4) FAdd 18 21
+ ReturnValue 22
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.automap.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.automap.frag.out
new file mode 100644
index 00000000000..7664bf64923
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.automap.frag.out
@@ -0,0 +1,29 @@
+hlsl.automap.frag
+Uniform reflection:
+t1: offset -1, type 8b5d, size 1, index -1, binding 11
+t2: offset -1, type 8b5e, size 1, index -1, binding 12
+t3: offset -1, type 8b5f, size 1, index -1, binding 13
+t4.@data: offset 0, type 8b52, size 1, index 0, binding -1
+t5.@data: offset 0, type 1405, size 0, index 1, binding -1
+t6: offset -1, type 8dc2, size 1, index -1, binding 16
+s1: offset -1, type 0, size 1, index -1, binding 31
+s2: offset -1, type 0, size 1, index -1, binding 32
+u1: offset -1, type 904c, size 1, index -1, binding 41
+u2: offset -1, type 904d, size 1, index -1, binding 42
+u3: offset -1, type 904e, size 1, index -1, binding 43
+u4: offset -1, type 9051, size 1, index -1, binding 44
+u5.@data: offset 0, type 1405, size 0, index 2, binding -1
+u6.@data: offset 0, type 1406, size 1, index 3, binding -1
+cb1: offset 0, type 1404, size 1, index 4, binding -1
+tb1: offset 0, type 1404, size 1, index 5, binding -1
+
+Uniform block reflection:
+t4: offset -1, type ffffffff, size 0, index -1, binding 14
+t5: offset -1, type ffffffff, size 0, index -1, binding 15
+u5: offset -1, type ffffffff, size 0, index -1, binding 45
+u6: offset -1, type ffffffff, size 0, index -1, binding 46
+cb: offset -1, type ffffffff, size 4, index -1, binding 51
+tb: offset -1, type ffffffff, size 4, index -1, binding 17
+
+Vertex attribute reflection:
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.basic.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.basic.comp.out
index 172dfeff3ce..b72c848f8a9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.basic.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.basic.comp.out
@@ -1,5 +1,5 @@
hlsl.basic.comp
-Shader version: 450
+Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:4 Function Definition: @main(i1;i1; ( temp void)
@@ -31,7 +31,7 @@ local_size = (1, 1, 1)
Linked compute stage:
-Shader version: 450
+Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:4 Function Definition: @main(i1;i1; ( temp void)
@@ -60,7 +60,7 @@ local_size = (1, 1, 1)
0:? 'gti' ( in int LocalInvocationID)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 35
Capability Shader
@@ -68,6 +68,7 @@ local_size = (1, 1, 1)
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 18 21
ExecutionMode 4 LocalSize 1 1 1
+ Source HLSL 500
Name 4 "main"
Name 11 "@main(i1;i1;"
Name 9 "dti"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.basic.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.basic.geom.out
index 24250b3e1a3..9d9aaa7e6e7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.basic.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.basic.geom.out
@@ -1,5 +1,5 @@
hlsl.basic.geom
-Shader version: 450
+Shader version: 500
invocations = -1
max_vertices = 4
input primitive = triangles
@@ -42,14 +42,34 @@ output primitive = line_strip
0:20 Constant:
0:20 0 (const int)
0:22 Sequence
-0:22 move second child to first child ( temp structure{ temp float myfloat, temp int something})
-0:22 'OutputStream' ( out structure{ temp float myfloat, temp int something})
-0:22 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:22 Sequence
+0:22 move second child to first child ( temp float)
+0:? 'OutputStream.myfloat' (layout( location=0) out float)
+0:22 myfloat: direct index for structure ( temp float)
+0:22 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:22 Constant:
+0:22 0 (const int)
+0:22 move second child to first child ( temp int)
+0:? 'OutputStream.something' (layout( location=1) out int)
+0:22 something: direct index for structure ( temp int)
+0:22 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:22 Constant:
+0:22 1 (const int)
0:22 EmitVertex ( temp void)
0:23 Sequence
-0:23 move second child to first child ( temp structure{ temp float myfloat, temp int something})
-0:23 'OutputStream' ( out structure{ temp float myfloat, temp int something})
-0:23 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:23 Sequence
+0:23 move second child to first child ( temp float)
+0:? 'OutputStream.myfloat' (layout( location=0) out float)
+0:23 myfloat: direct index for structure ( temp float)
+0:23 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:23 Constant:
+0:23 0 (const int)
+0:23 move second child to first child ( temp int)
+0:? 'OutputStream.something' (layout( location=1) out int)
+0:23 something: direct index for structure ( temp int)
+0:23 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:23 Constant:
+0:23 1 (const int)
0:23 EmitVertex ( temp void)
0:24 EndPrimitive ( temp void)
0:16 Function Definition: main( ( temp void)
@@ -60,20 +80,22 @@ output primitive = line_strip
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:16 move second child to first child ( temp 3-element array of uint)
0:? 'test' ( temp 3-element array of uint)
-0:? 'test' (layout( location=3) in 3-element array of uint)
+0:? 'test' (layout( location=1) in 3-element array of uint)
0:16 Function Call: @main(u1[3];u1[3];struct-PSInput-f1-i11; ( temp void)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'test' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp float myfloat, temp int something})
0:? Linker Objects
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
-0:? 'test' (layout( location=3) in 3-element array of uint)
+0:? 'test' (layout( location=1) in 3-element array of uint)
+0:? 'OutputStream.myfloat' (layout( location=0) out float)
+0:? 'OutputStream.something' (layout( location=1) out int)
Linked geometry stage:
-Shader version: 450
+Shader version: 500
invocations = 1
max_vertices = 4
input primitive = triangles
@@ -116,14 +138,34 @@ output primitive = line_strip
0:20 Constant:
0:20 0 (const int)
0:22 Sequence
-0:22 move second child to first child ( temp structure{ temp float myfloat, temp int something})
-0:22 'OutputStream' ( out structure{ temp float myfloat, temp int something})
-0:22 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:22 Sequence
+0:22 move second child to first child ( temp float)
+0:? 'OutputStream.myfloat' (layout( location=0) out float)
+0:22 myfloat: direct index for structure ( temp float)
+0:22 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:22 Constant:
+0:22 0 (const int)
+0:22 move second child to first child ( temp int)
+0:? 'OutputStream.something' (layout( location=1) out int)
+0:22 something: direct index for structure ( temp int)
+0:22 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:22 Constant:
+0:22 1 (const int)
0:22 EmitVertex ( temp void)
0:23 Sequence
-0:23 move second child to first child ( temp structure{ temp float myfloat, temp int something})
-0:23 'OutputStream' ( out structure{ temp float myfloat, temp int something})
-0:23 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:23 Sequence
+0:23 move second child to first child ( temp float)
+0:? 'OutputStream.myfloat' (layout( location=0) out float)
+0:23 myfloat: direct index for structure ( temp float)
+0:23 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:23 Constant:
+0:23 0 (const int)
+0:23 move second child to first child ( temp int)
+0:? 'OutputStream.something' (layout( location=1) out int)
+0:23 something: direct index for structure ( temp int)
+0:23 'Vert' ( temp structure{ temp float myfloat, temp int something})
+0:23 Constant:
+0:23 1 (const int)
0:23 EmitVertex ( temp void)
0:24 EndPrimitive ( temp void)
0:16 Function Definition: main( ( temp void)
@@ -134,27 +176,30 @@ output primitive = line_strip
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:16 move second child to first child ( temp 3-element array of uint)
0:? 'test' ( temp 3-element array of uint)
-0:? 'test' (layout( location=3) in 3-element array of uint)
+0:? 'test' (layout( location=1) in 3-element array of uint)
0:16 Function Call: @main(u1[3];u1[3];struct-PSInput-f1-i11; ( temp void)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'test' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp float myfloat, temp int something})
0:? Linker Objects
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
-0:? 'test' (layout( location=3) in 3-element array of uint)
+0:? 'test' (layout( location=1) in 3-element array of uint)
+0:? 'OutputStream.myfloat' (layout( location=0) out float)
+0:? 'OutputStream.something' (layout( location=1) out int)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 57
+// Generated by (magic number): 80002
+// Id's are bound by 68
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Geometry 4 "main" 45 48
+ EntryPoint Geometry 4 "main" 42 46 55 58
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputLineStrip
ExecutionMode 4 OutputVertices 4
+ Source HLSL 500
Name 4 "main"
Name 12 "PSInput"
MemberName 12(PSInput) 0 "myfloat"
@@ -164,16 +209,20 @@ output primitive = line_strip
Name 16 "test"
Name 17 "OutputStream"
Name 20 "Vert"
- Name 43 "VertexID"
- Name 45 "VertexID"
- Name 47 "test"
- Name 48 "test"
- Name 50 "OutputStream"
- Name 51 "param"
- Name 53 "param"
- Name 55 "param"
- Decorate 45(VertexID) Location 0
- Decorate 48(test) Location 3
+ Name 42 "OutputStream.myfloat"
+ Name 46 "OutputStream.something"
+ Name 53 "VertexID"
+ Name 55 "VertexID"
+ Name 57 "test"
+ Name 58 "test"
+ Name 60 "OutputStream"
+ Name 61 "param"
+ Name 63 "param"
+ Name 65 "param"
+ Decorate 42(OutputStream.myfloat) Location 0
+ Decorate 46(OutputStream.something) Location 1
+ Decorate 55(VertexID) Location 0
+ Decorate 58(test) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -191,26 +240,32 @@ output primitive = line_strip
29: 11(int) Constant 2
34: TypePointer Function 10(float)
39: TypePointer Function 11(int)
- 44: TypePointer Input 8
- 45(VertexID): 44(ptr) Variable Input
- 48(test): 44(ptr) Variable Input
+ 41: TypePointer Output 10(float)
+42(OutputStream.myfloat): 41(ptr) Variable Output
+ 45: TypePointer Output 11(int)
+46(OutputStream.something): 45(ptr) Variable Output
+ 54: TypePointer Input 8
+ 55(VertexID): 54(ptr) Variable Input
+ 58(test): 54(ptr) Variable Input
4(main): 2 Function None 3
5: Label
- 43(VertexID): 9(ptr) Variable Function
- 47(test): 9(ptr) Variable Function
-50(OutputStream): 13(ptr) Variable Function
- 51(param): 9(ptr) Variable Function
- 53(param): 9(ptr) Variable Function
- 55(param): 13(ptr) Variable Function
- 46: 8 Load 45(VertexID)
- Store 43(VertexID) 46
- 49: 8 Load 48(test)
- Store 47(test) 49
- 52: 8 Load 43(VertexID)
- Store 51(param) 52
- 54: 8 Load 47(test)
- Store 53(param) 54
- 56: 2 FunctionCall 18(@main(u1[3];u1[3];struct-PSInput-f1-i11;) 51(param) 53(param) 55(param)
+ 53(VertexID): 9(ptr) Variable Function
+ 57(test): 9(ptr) Variable Function
+60(OutputStream): 13(ptr) Variable Function
+ 61(param): 9(ptr) Variable Function
+ 63(param): 9(ptr) Variable Function
+ 65(param): 13(ptr) Variable Function
+ 56: 8 Load 55(VertexID)
+ Store 53(VertexID) 56
+ 59: 8 Load 58(test)
+ Store 57(test) 59
+ 62: 8 Load 53(VertexID)
+ Store 61(param) 62
+ 64: 8 Load 57(test)
+ Store 63(param) 64
+ 66: 2 FunctionCall 18(@main(u1[3];u1[3];struct-PSInput-f1-i11;) 61(param) 63(param) 65(param)
+ 67: 12(PSInput) Load 65(param)
+ Store 60(OutputStream) 67
Return
FunctionEnd
18(@main(u1[3];u1[3];struct-PSInput-f1-i11;): 2 Function None 14
@@ -235,11 +290,19 @@ output primitive = line_strip
38: 11(int) Bitcast 37
40: 39(ptr) AccessChain 20(Vert) 25
Store 40 38
- 41: 12(PSInput) Load 20(Vert)
- Store 17(OutputStream) 41
+ 43: 34(ptr) AccessChain 20(Vert) 21
+ 44: 10(float) Load 43
+ Store 42(OutputStream.myfloat) 44
+ 47: 39(ptr) AccessChain 20(Vert) 25
+ 48: 11(int) Load 47
+ Store 46(OutputStream.something) 48
EmitVertex
- 42: 12(PSInput) Load 20(Vert)
- Store 17(OutputStream) 42
+ 49: 34(ptr) AccessChain 20(Vert) 21
+ 50: 10(float) Load 49
+ Store 42(OutputStream.myfloat) 50
+ 51: 39(ptr) AccessChain 20(Vert) 25
+ 52: 11(int) Load 51
+ Store 46(OutputStream.something) 52
EmitVertex
EndPrimitive
Return
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.boolConv.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.boolConv.vert.out
new file mode 100644
index 00000000000..5d94fe95844
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.boolConv.vert.out
@@ -0,0 +1,363 @@
+hlsl.boolConv.vert
+Shader version: 500
+0:? Sequence
+0:1 Sequence
+0:1 move second child to first child ( temp bool)
+0:1 'b' ( global bool)
+0:1 Constant:
+0:1 true (const bool)
+0:3 Function Definition: @main( ( temp 4-component vector of float)
+0:3 Function Parameters:
+0:? Sequence
+0:4 Sequence
+0:4 move second child to first child ( temp int)
+0:4 'r' ( temp int)
+0:4 Constant:
+0:4 0 (const int)
+0:6 add second child into first child ( temp int)
+0:6 'r' ( temp int)
+0:6 Convert bool to int ( temp int)
+0:6 add ( temp bool)
+0:6 Convert bool to int ( temp int)
+0:6 'a' ( global bool)
+0:6 Convert bool to int ( temp int)
+0:6 'b' ( global bool)
+0:7 add second child into first child ( temp int)
+0:7 'r' ( temp int)
+0:7 Convert bool to int ( temp int)
+0:7 subtract ( temp bool)
+0:7 Convert bool to int ( temp int)
+0:7 'a' ( global bool)
+0:7 Convert bool to int ( temp int)
+0:7 'b' ( global bool)
+0:8 add second child into first child ( temp int)
+0:8 'r' ( temp int)
+0:8 Convert bool to int ( temp int)
+0:8 component-wise multiply ( temp bool)
+0:8 Convert bool to int ( temp int)
+0:8 'a' ( global bool)
+0:8 Convert bool to int ( temp int)
+0:8 'b' ( global bool)
+0:9 add second child into first child ( temp int)
+0:9 'r' ( temp int)
+0:9 Convert bool to int ( temp int)
+0:9 divide ( temp bool)
+0:9 Convert bool to int ( temp int)
+0:9 'a' ( global bool)
+0:9 Convert bool to int ( temp int)
+0:9 'b' ( global bool)
+0:10 add second child into first child ( temp int)
+0:10 'r' ( temp int)
+0:10 Convert bool to int ( temp int)
+0:10 mod ( temp bool)
+0:10 Convert bool to int ( temp int)
+0:10 'a' ( global bool)
+0:10 Convert bool to int ( temp int)
+0:10 'b' ( global bool)
+0:12 add second child into first child ( temp int)
+0:12 'r' ( temp int)
+0:12 Convert bool to int ( temp int)
+0:12 bitwise and ( temp bool)
+0:12 Convert bool to int ( temp int)
+0:12 'a' ( global bool)
+0:12 Convert bool to int ( temp int)
+0:12 'b' ( global bool)
+0:13 add second child into first child ( temp int)
+0:13 'r' ( temp int)
+0:13 Convert bool to int ( temp int)
+0:13 inclusive-or ( temp bool)
+0:13 Convert bool to int ( temp int)
+0:13 'a' ( global bool)
+0:13 Convert bool to int ( temp int)
+0:13 'b' ( global bool)
+0:14 add second child into first child ( temp int)
+0:14 'r' ( temp int)
+0:14 Convert bool to int ( temp int)
+0:14 exclusive-or ( temp bool)
+0:14 Convert bool to int ( temp int)
+0:14 'a' ( global bool)
+0:14 Convert bool to int ( temp int)
+0:14 'b' ( global bool)
+0:16 add second child into first child ( temp int)
+0:16 'r' ( temp int)
+0:16 Convert bool to int ( temp int)
+0:16 left-shift ( temp bool)
+0:16 Convert bool to int ( temp int)
+0:16 'a' ( global bool)
+0:16 Convert bool to int ( temp int)
+0:16 'b' ( global bool)
+0:17 add second child into first child ( temp int)
+0:17 'r' ( temp int)
+0:17 Convert bool to int ( temp int)
+0:17 right-shift ( temp bool)
+0:17 Convert bool to int ( temp int)
+0:17 'a' ( global bool)
+0:17 Convert bool to int ( temp int)
+0:17 'b' ( global bool)
+0:19 Branch: Return with expression
+0:19 Construct vec4 ( temp 4-component vector of float)
+0:19 Convert int to float ( temp float)
+0:19 'r' ( temp int)
+0:3 Function Definition: main( ( temp void)
+0:3 Function Parameters:
+0:? Sequence
+0:3 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:3 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'a' ( global bool)
+0:? 'b' ( global bool)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:1 Sequence
+0:1 move second child to first child ( temp bool)
+0:1 'b' ( global bool)
+0:1 Constant:
+0:1 true (const bool)
+0:3 Function Definition: @main( ( temp 4-component vector of float)
+0:3 Function Parameters:
+0:? Sequence
+0:4 Sequence
+0:4 move second child to first child ( temp int)
+0:4 'r' ( temp int)
+0:4 Constant:
+0:4 0 (const int)
+0:6 add second child into first child ( temp int)
+0:6 'r' ( temp int)
+0:6 Convert bool to int ( temp int)
+0:6 add ( temp bool)
+0:6 Convert bool to int ( temp int)
+0:6 'a' ( global bool)
+0:6 Convert bool to int ( temp int)
+0:6 'b' ( global bool)
+0:7 add second child into first child ( temp int)
+0:7 'r' ( temp int)
+0:7 Convert bool to int ( temp int)
+0:7 subtract ( temp bool)
+0:7 Convert bool to int ( temp int)
+0:7 'a' ( global bool)
+0:7 Convert bool to int ( temp int)
+0:7 'b' ( global bool)
+0:8 add second child into first child ( temp int)
+0:8 'r' ( temp int)
+0:8 Convert bool to int ( temp int)
+0:8 component-wise multiply ( temp bool)
+0:8 Convert bool to int ( temp int)
+0:8 'a' ( global bool)
+0:8 Convert bool to int ( temp int)
+0:8 'b' ( global bool)
+0:9 add second child into first child ( temp int)
+0:9 'r' ( temp int)
+0:9 Convert bool to int ( temp int)
+0:9 divide ( temp bool)
+0:9 Convert bool to int ( temp int)
+0:9 'a' ( global bool)
+0:9 Convert bool to int ( temp int)
+0:9 'b' ( global bool)
+0:10 add second child into first child ( temp int)
+0:10 'r' ( temp int)
+0:10 Convert bool to int ( temp int)
+0:10 mod ( temp bool)
+0:10 Convert bool to int ( temp int)
+0:10 'a' ( global bool)
+0:10 Convert bool to int ( temp int)
+0:10 'b' ( global bool)
+0:12 add second child into first child ( temp int)
+0:12 'r' ( temp int)
+0:12 Convert bool to int ( temp int)
+0:12 bitwise and ( temp bool)
+0:12 Convert bool to int ( temp int)
+0:12 'a' ( global bool)
+0:12 Convert bool to int ( temp int)
+0:12 'b' ( global bool)
+0:13 add second child into first child ( temp int)
+0:13 'r' ( temp int)
+0:13 Convert bool to int ( temp int)
+0:13 inclusive-or ( temp bool)
+0:13 Convert bool to int ( temp int)
+0:13 'a' ( global bool)
+0:13 Convert bool to int ( temp int)
+0:13 'b' ( global bool)
+0:14 add second child into first child ( temp int)
+0:14 'r' ( temp int)
+0:14 Convert bool to int ( temp int)
+0:14 exclusive-or ( temp bool)
+0:14 Convert bool to int ( temp int)
+0:14 'a' ( global bool)
+0:14 Convert bool to int ( temp int)
+0:14 'b' ( global bool)
+0:16 add second child into first child ( temp int)
+0:16 'r' ( temp int)
+0:16 Convert bool to int ( temp int)
+0:16 left-shift ( temp bool)
+0:16 Convert bool to int ( temp int)
+0:16 'a' ( global bool)
+0:16 Convert bool to int ( temp int)
+0:16 'b' ( global bool)
+0:17 add second child into first child ( temp int)
+0:17 'r' ( temp int)
+0:17 Convert bool to int ( temp int)
+0:17 right-shift ( temp bool)
+0:17 Convert bool to int ( temp int)
+0:17 'a' ( global bool)
+0:17 Convert bool to int ( temp int)
+0:17 'b' ( global bool)
+0:19 Branch: Return with expression
+0:19 Construct vec4 ( temp 4-component vector of float)
+0:19 Convert int to float ( temp float)
+0:19 'r' ( temp int)
+0:3 Function Definition: main( ( temp void)
+0:3 Function Parameters:
+0:? Sequence
+0:3 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:3 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'a' ( global bool)
+0:? 'b' ( global bool)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 109
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 107
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 13 "b"
+ Name 17 "r"
+ Name 19 "a"
+ Name 107 "@entryPointOutput"
+ Decorate 107(@entryPointOutput) BuiltIn Position
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeBool
+ 12: TypePointer Private 11(bool)
+ 13(b): 12(ptr) Variable Private
+ 14: 11(bool) ConstantTrue
+ 15: TypeInt 32 1
+ 16: TypePointer Function 15(int)
+ 18: 15(int) Constant 0
+ 19(a): 12(ptr) Variable Private
+ 21: 15(int) Constant 1
+ 106: TypePointer Output 7(fvec4)
+107(@entryPointOutput): 106(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ Store 13(b) 14
+ 108: 7(fvec4) FunctionCall 9(@main()
+ Store 107(@entryPointOutput) 108
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 17(r): 16(ptr) Variable Function
+ Store 17(r) 18
+ 20: 11(bool) Load 19(a)
+ 22: 15(int) Select 20 21 18
+ 23: 11(bool) Load 13(b)
+ 24: 15(int) Select 23 21 18
+ 25: 11(bool) IAdd 22 24
+ 26: 15(int) Select 25 21 18
+ 27: 15(int) Load 17(r)
+ 28: 15(int) IAdd 27 26
+ Store 17(r) 28
+ 29: 11(bool) Load 19(a)
+ 30: 15(int) Select 29 21 18
+ 31: 11(bool) Load 13(b)
+ 32: 15(int) Select 31 21 18
+ 33: 11(bool) ISub 30 32
+ 34: 15(int) Select 33 21 18
+ 35: 15(int) Load 17(r)
+ 36: 15(int) IAdd 35 34
+ Store 17(r) 36
+ 37: 11(bool) Load 19(a)
+ 38: 15(int) Select 37 21 18
+ 39: 11(bool) Load 13(b)
+ 40: 15(int) Select 39 21 18
+ 41: 11(bool) IMul 38 40
+ 42: 15(int) Select 41 21 18
+ 43: 15(int) Load 17(r)
+ 44: 15(int) IAdd 43 42
+ Store 17(r) 44
+ 45: 11(bool) Load 19(a)
+ 46: 15(int) Select 45 21 18
+ 47: 11(bool) Load 13(b)
+ 48: 15(int) Select 47 21 18
+ 49: 11(bool) SDiv 46 48
+ 50: 15(int) Select 49 21 18
+ 51: 15(int) Load 17(r)
+ 52: 15(int) IAdd 51 50
+ Store 17(r) 52
+ 53: 11(bool) Load 19(a)
+ 54: 15(int) Select 53 21 18
+ 55: 11(bool) Load 13(b)
+ 56: 15(int) Select 55 21 18
+ 57: 11(bool) SMod 54 56
+ 58: 15(int) Select 57 21 18
+ 59: 15(int) Load 17(r)
+ 60: 15(int) IAdd 59 58
+ Store 17(r) 60
+ 61: 11(bool) Load 19(a)
+ 62: 15(int) Select 61 21 18
+ 63: 11(bool) Load 13(b)
+ 64: 15(int) Select 63 21 18
+ 65: 11(bool) BitwiseAnd 62 64
+ 66: 15(int) Select 65 21 18
+ 67: 15(int) Load 17(r)
+ 68: 15(int) IAdd 67 66
+ Store 17(r) 68
+ 69: 11(bool) Load 19(a)
+ 70: 15(int) Select 69 21 18
+ 71: 11(bool) Load 13(b)
+ 72: 15(int) Select 71 21 18
+ 73: 11(bool) BitwiseOr 70 72
+ 74: 15(int) Select 73 21 18
+ 75: 15(int) Load 17(r)
+ 76: 15(int) IAdd 75 74
+ Store 17(r) 76
+ 77: 11(bool) Load 19(a)
+ 78: 15(int) Select 77 21 18
+ 79: 11(bool) Load 13(b)
+ 80: 15(int) Select 79 21 18
+ 81: 11(bool) BitwiseXor 78 80
+ 82: 15(int) Select 81 21 18
+ 83: 15(int) Load 17(r)
+ 84: 15(int) IAdd 83 82
+ Store 17(r) 84
+ 85: 11(bool) Load 19(a)
+ 86: 15(int) Select 85 21 18
+ 87: 11(bool) Load 13(b)
+ 88: 15(int) Select 87 21 18
+ 89: 11(bool) ShiftLeftLogical 86 88
+ 90: 15(int) Select 89 21 18
+ 91: 15(int) Load 17(r)
+ 92: 15(int) IAdd 91 90
+ Store 17(r) 92
+ 93: 11(bool) Load 19(a)
+ 94: 15(int) Select 93 21 18
+ 95: 11(bool) Load 13(b)
+ 96: 15(int) Select 95 21 18
+ 97: 11(bool) ShiftRightArithmetic 94 96
+ 98: 15(int) Select 97 21 18
+ 99: 15(int) Load 17(r)
+ 100: 15(int) IAdd 99 98
+ Store 17(r) 100
+ 101: 15(int) Load 17(r)
+ 102: 6(float) ConvertSToF 101
+ 103: 7(fvec4) CompositeConstruct 102 102 102 102
+ ReturnValue 103
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out
index c406f24d363..0b73f8da76f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out
@@ -1,231 +1,269 @@
hlsl.buffer.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
-0:30 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:30 Function Definition: foo( ( temp float)
0:30 Function Parameters:
-0:30 'input' ( in 4-component vector of float)
0:? Sequence
0:31 Branch: Return with expression
-0:31 add ( temp 4-component vector of float)
-0:31 add ( temp 4-component vector of float)
-0:31 add ( temp 4-component vector of float)
-0:31 add ( temp 4-component vector of float)
-0:31 'input' ( in 4-component vector of float)
-0:31 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
-0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
-0:31 Constant:
-0:31 0 (const uint)
-0:31 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
-0:31 'anon@1' (layout( row_major std430) buffer block{layout( row_major std430) buffer 4-component vector of float v2})
-0:31 Constant:
-0:31 0 (const uint)
-0:31 v3: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
-0:31 'anon@2' (layout( set=10 binding=2 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
-0:31 Constant:
-0:31 0 (const uint)
-0:31 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:31 'anon@3' (layout( binding=8 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430) buffer float f7, layout( row_major std430) buffer 3X4 matrix of float m1, layout( column_major std430) buffer 3X4 matrix of float m2, layout( row_major std430) buffer 3X4 matrix of float m3, layout( row_major std430) buffer 3X4 matrix of float m4})
-0:31 Constant:
-0:31 0 (const uint)
-0:30 Function Definition: PixelShaderFunction( ( temp void)
-0:30 Function Parameters:
+0:31 Constant:
+0:31 1.000000
+0:35 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:35 Function Parameters:
+0:35 'input' ( in 4-component vector of float)
+0:? Sequence
+0:36 Branch: Return with expression
+0:36 vector-scale ( temp 4-component vector of float)
+0:36 add ( temp 4-component vector of float)
+0:36 add ( temp 4-component vector of float)
+0:36 add ( temp 4-component vector of float)
+0:36 add ( temp 4-component vector of float)
+0:36 'input' ( in 4-component vector of float)
+0:36 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:36 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
+0:36 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
+0:36 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
+0:36 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 Function Call: foo( ( temp float)
+0:35 Function Definition: PixelShaderFunction( ( temp void)
+0:35 Function Parameters:
0:? Sequence
-0:30 move second child to first child ( temp 4-component vector of float)
+0:35 move second child to first child ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
-0:? 'input' (layout( location=0) in 4-component vector of float)
-0:30 move second child to first child ( temp 4-component vector of float)
+0:? 'input' ( in 4-component vector of float FragCoord)
+0:35 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:30 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:35 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
-0:? 'anon@1' (layout( row_major std430) buffer block{layout( row_major std430) buffer 4-component vector of float v2})
-0:? 'anon@2' (layout( set=10 binding=2 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
-0:? 'anon@3' (layout( binding=8 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430) buffer float f7, layout( row_major std430) buffer 3X4 matrix of float m1, layout( column_major std430) buffer 3X4 matrix of float m2, layout( row_major std430) buffer 3X4 matrix of float m3, layout( row_major std430) buffer 3X4 matrix of float m4})
+0:? 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
+0:? 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
+0:? 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'input' (layout( location=0) in 4-component vector of float)
+0:? 'input' ( in 4-component vector of float FragCoord)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
-0:30 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:30 Function Definition: foo( ( temp float)
0:30 Function Parameters:
-0:30 'input' ( in 4-component vector of float)
0:? Sequence
0:31 Branch: Return with expression
-0:31 add ( temp 4-component vector of float)
-0:31 add ( temp 4-component vector of float)
-0:31 add ( temp 4-component vector of float)
-0:31 add ( temp 4-component vector of float)
-0:31 'input' ( in 4-component vector of float)
-0:31 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
-0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
-0:31 Constant:
-0:31 0 (const uint)
-0:31 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
-0:31 'anon@1' (layout( row_major std430) buffer block{layout( row_major std430) buffer 4-component vector of float v2})
-0:31 Constant:
-0:31 0 (const uint)
-0:31 v3: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
-0:31 'anon@2' (layout( set=10 binding=2 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
-0:31 Constant:
-0:31 0 (const uint)
-0:31 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:31 'anon@3' (layout( binding=8 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430) buffer float f7, layout( row_major std430) buffer 3X4 matrix of float m1, layout( column_major std430) buffer 3X4 matrix of float m2, layout( row_major std430) buffer 3X4 matrix of float m3, layout( row_major std430) buffer 3X4 matrix of float m4})
-0:31 Constant:
-0:31 0 (const uint)
-0:30 Function Definition: PixelShaderFunction( ( temp void)
-0:30 Function Parameters:
+0:31 Constant:
+0:31 1.000000
+0:35 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:35 Function Parameters:
+0:35 'input' ( in 4-component vector of float)
0:? Sequence
-0:30 move second child to first child ( temp 4-component vector of float)
+0:36 Branch: Return with expression
+0:36 vector-scale ( temp 4-component vector of float)
+0:36 add ( temp 4-component vector of float)
+0:36 add ( temp 4-component vector of float)
+0:36 add ( temp 4-component vector of float)
+0:36 add ( temp 4-component vector of float)
+0:36 'input' ( in 4-component vector of float)
+0:36 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:36 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
+0:36 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
+0:36 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
+0:36 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 Function Call: foo( ( temp float)
+0:35 Function Definition: PixelShaderFunction( ( temp void)
+0:35 Function Parameters:
+0:? Sequence
+0:35 move second child to first child ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
-0:? 'input' (layout( location=0) in 4-component vector of float)
-0:30 move second child to first child ( temp 4-component vector of float)
+0:? 'input' ( in 4-component vector of float FragCoord)
+0:35 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:30 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:35 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
-0:? 'anon@1' (layout( row_major std430) buffer block{layout( row_major std430) buffer 4-component vector of float v2})
-0:? 'anon@2' (layout( set=10 binding=2 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
-0:? 'anon@3' (layout( binding=8 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430) buffer float f7, layout( row_major std430) buffer 3X4 matrix of float m1, layout( column_major std430) buffer 3X4 matrix of float m2, layout( row_major std430) buffer 3X4 matrix of float m3, layout( row_major std430) buffer 3X4 matrix of float m4})
+0:? 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
+0:? 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
+0:? 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'input' (layout( location=0) in 4-component vector of float)
+0:? 'input' ( in 4-component vector of float FragCoord)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 53
+// Generated by (magic number): 80002
+// Id's are bound by 61
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 46 49
+ EntryPoint Fragment 4 "PixelShaderFunction" 54 57
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
- Name 11 "@PixelShaderFunction(vf4;"
- Name 10 "input"
- Name 14 ""
- MemberName 14 0 "v1"
- Name 16 ""
- Name 23 ""
- MemberName 23 0 "v2"
- Name 25 ""
- Name 29 "cbufName"
- MemberName 29(cbufName) 0 "v3"
- MemberName 29(cbufName) 1 "i3"
+ Name 8 "foo("
+ Name 14 "@PixelShaderFunction(vf4;"
+ Name 13 "input"
+ Name 20 "buf1"
+ MemberName 20(buf1) 0 "v1"
+ Name 22 ""
+ Name 29 "buf2"
+ MemberName 29(buf2) 0 "v2"
Name 31 ""
- Name 36 "tbufName"
- MemberName 36(tbufName) 0 "v4"
- MemberName 36(tbufName) 1 "i4"
- MemberName 36(tbufName) 2 "f1"
- MemberName 36(tbufName) 3 "f3"
- MemberName 36(tbufName) 4 "f4"
- MemberName 36(tbufName) 5 "f5"
- MemberName 36(tbufName) 6 "f6"
- MemberName 36(tbufName) 7 "f7"
- MemberName 36(tbufName) 8 "m1"
- MemberName 36(tbufName) 9 "m2"
- MemberName 36(tbufName) 10 "m3"
- MemberName 36(tbufName) 11 "m4"
- Name 38 ""
- Name 44 "input"
- Name 46 "input"
- Name 49 "@entryPointOutput"
- Name 50 "param"
- MemberDecorate 14 0 Offset 0
- Decorate 14 Block
- Decorate 16 DescriptorSet 0
- MemberDecorate 23 0 Offset 0
- Decorate 23 BufferBlock
- Decorate 25 DescriptorSet 0
- MemberDecorate 29(cbufName) 0 Offset 0
- MemberDecorate 29(cbufName) 1 Offset 20
- Decorate 29(cbufName) Block
- Decorate 31 DescriptorSet 10
- Decorate 31 Binding 2
- MemberDecorate 36(tbufName) 0 Offset 16
- MemberDecorate 36(tbufName) 1 Offset 48
- MemberDecorate 36(tbufName) 2 Offset 60
- MemberDecorate 36(tbufName) 3 Offset 64
- MemberDecorate 36(tbufName) 4 Offset 68
- MemberDecorate 36(tbufName) 5 Offset 72
- MemberDecorate 36(tbufName) 6 Offset 76
- MemberDecorate 36(tbufName) 7 Offset 80
- MemberDecorate 36(tbufName) 8 RowMajor
- MemberDecorate 36(tbufName) 8 Offset 96
- MemberDecorate 36(tbufName) 8 MatrixStride 16
- MemberDecorate 36(tbufName) 9 ColMajor
- MemberDecorate 36(tbufName) 9 Offset 160
- MemberDecorate 36(tbufName) 9 MatrixStride 16
- MemberDecorate 36(tbufName) 10 RowMajor
- MemberDecorate 36(tbufName) 10 Offset 208
- MemberDecorate 36(tbufName) 10 MatrixStride 16
- MemberDecorate 36(tbufName) 11 RowMajor
- MemberDecorate 36(tbufName) 11 Offset 272
- MemberDecorate 36(tbufName) 11 MatrixStride 16
- Decorate 36(tbufName) BufferBlock
- Decorate 38 DescriptorSet 0
- Decorate 38 Binding 8
- Decorate 46(input) Location 0
- Decorate 49(@entryPointOutput) Location 0
+ Name 35 "cbufName"
+ MemberName 35(cbufName) 0 "v3"
+ MemberName 35(cbufName) 1 "i3"
+ Name 37 ""
+ Name 42 "tbufName"
+ MemberName 42(tbufName) 0 "v4"
+ MemberName 42(tbufName) 1 "i4"
+ MemberName 42(tbufName) 2 "f1"
+ MemberName 42(tbufName) 3 "f3"
+ MemberName 42(tbufName) 4 "f4"
+ MemberName 42(tbufName) 5 "f5"
+ MemberName 42(tbufName) 6 "f6"
+ MemberName 42(tbufName) 7 "f7"
+ MemberName 42(tbufName) 8 "m1"
+ MemberName 42(tbufName) 9 "m2"
+ MemberName 42(tbufName) 10 "m3"
+ MemberName 42(tbufName) 11 "m4"
+ Name 44 ""
+ Name 52 "input"
+ Name 54 "input"
+ Name 57 "@entryPointOutput"
+ Name 58 "param"
+ MemberDecorate 20(buf1) 0 Offset 0
+ Decorate 20(buf1) Block
+ Decorate 22 DescriptorSet 0
+ MemberDecorate 29(buf2) 0 NonWritable
+ MemberDecorate 29(buf2) 0 Offset 0
+ Decorate 29(buf2) BufferBlock
+ Decorate 31 DescriptorSet 0
+ MemberDecorate 35(cbufName) 0 Offset 0
+ MemberDecorate 35(cbufName) 1 Offset 20
+ Decorate 35(cbufName) Block
+ Decorate 37 DescriptorSet 0
+ MemberDecorate 42(tbufName) 0 NonWritable
+ MemberDecorate 42(tbufName) 0 Offset 16
+ MemberDecorate 42(tbufName) 1 NonWritable
+ MemberDecorate 42(tbufName) 1 Offset 48
+ MemberDecorate 42(tbufName) 2 NonWritable
+ MemberDecorate 42(tbufName) 2 Offset 60
+ MemberDecorate 42(tbufName) 3 NonWritable
+ MemberDecorate 42(tbufName) 3 Offset 64
+ MemberDecorate 42(tbufName) 4 NonWritable
+ MemberDecorate 42(tbufName) 4 Offset 68
+ MemberDecorate 42(tbufName) 5 NonWritable
+ MemberDecorate 42(tbufName) 5 Offset 72
+ MemberDecorate 42(tbufName) 6 NonWritable
+ MemberDecorate 42(tbufName) 6 Offset 76
+ MemberDecorate 42(tbufName) 7 NonWritable
+ MemberDecorate 42(tbufName) 7 Offset 128
+ MemberDecorate 42(tbufName) 8 RowMajor
+ MemberDecorate 42(tbufName) 8 NonWritable
+ MemberDecorate 42(tbufName) 8 Offset 112
+ MemberDecorate 42(tbufName) 8 MatrixStride 16
+ MemberDecorate 42(tbufName) 9 ColMajor
+ MemberDecorate 42(tbufName) 9 NonWritable
+ MemberDecorate 42(tbufName) 9 Offset 176
+ MemberDecorate 42(tbufName) 9 MatrixStride 16
+ MemberDecorate 42(tbufName) 10 RowMajor
+ MemberDecorate 42(tbufName) 10 NonWritable
+ MemberDecorate 42(tbufName) 10 Offset 240
+ MemberDecorate 42(tbufName) 10 MatrixStride 16
+ MemberDecorate 42(tbufName) 11 RowMajor
+ MemberDecorate 42(tbufName) 11 NonWritable
+ MemberDecorate 42(tbufName) 11 Offset 304
+ MemberDecorate 42(tbufName) 11 MatrixStride 16
+ Decorate 42(tbufName) BufferBlock
+ Decorate 44 DescriptorSet 0
+ Decorate 44 Binding 8
+ Decorate 54(input) BuiltIn FragCoord
+ Decorate 57(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
- 7: TypeVector 6(float) 4
- 8: TypePointer Function 7(fvec4)
- 9: TypeFunction 7(fvec4) 8(ptr)
- 14: TypeStruct 7(fvec4)
- 15: TypePointer Uniform 14(struct)
- 16: 15(ptr) Variable Uniform
- 17: TypeInt 32 1
- 18: 17(int) Constant 0
- 19: TypePointer Uniform 7(fvec4)
- 23: TypeStruct 7(fvec4)
- 24: TypePointer Uniform 23(struct)
- 25: 24(ptr) Variable Uniform
- 29(cbufName): TypeStruct 7(fvec4) 17(int)
- 30: TypePointer Uniform 29(cbufName)
+ 7: TypeFunction 6(float)
+ 10: TypeVector 6(float) 4
+ 11: TypePointer Function 10(fvec4)
+ 12: TypeFunction 10(fvec4) 11(ptr)
+ 16: 6(float) Constant 1065353216
+ 20(buf1): TypeStruct 10(fvec4)
+ 21: TypePointer Uniform 20(buf1)
+ 22: 21(ptr) Variable Uniform
+ 23: TypeInt 32 1
+ 24: 23(int) Constant 0
+ 25: TypePointer Uniform 10(fvec4)
+ 29(buf2): TypeStruct 10(fvec4)
+ 30: TypePointer Uniform 29(buf2)
31: 30(ptr) Variable Uniform
- 35: TypeMatrix 7(fvec4) 3
- 36(tbufName): TypeStruct 7(fvec4) 17(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 35 35 35 35
- 37: TypePointer Uniform 36(tbufName)
- 38: 37(ptr) Variable Uniform
- 45: TypePointer Input 7(fvec4)
- 46(input): 45(ptr) Variable Input
- 48: TypePointer Output 7(fvec4)
-49(@entryPointOutput): 48(ptr) Variable Output
+ 35(cbufName): TypeStruct 10(fvec4) 23(int)
+ 36: TypePointer Uniform 35(cbufName)
+ 37: 36(ptr) Variable Uniform
+ 41: TypeMatrix 10(fvec4) 3
+ 42(tbufName): TypeStruct 10(fvec4) 23(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 41 41 41 41
+ 43: TypePointer Uniform 42(tbufName)
+ 44: 43(ptr) Variable Uniform
+ 53: TypePointer Input 10(fvec4)
+ 54(input): 53(ptr) Variable Input
+ 56: TypePointer Output 10(fvec4)
+57(@entryPointOutput): 56(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
- 44(input): 8(ptr) Variable Function
- 50(param): 8(ptr) Variable Function
- 47: 7(fvec4) Load 46(input)
- Store 44(input) 47
- 51: 7(fvec4) Load 44(input)
- Store 50(param) 51
- 52: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 50(param)
- Store 49(@entryPointOutput) 52
+ 52(input): 11(ptr) Variable Function
+ 58(param): 11(ptr) Variable Function
+ 55: 10(fvec4) Load 54(input)
+ Store 52(input) 55
+ 59: 10(fvec4) Load 52(input)
+ Store 58(param) 59
+ 60: 10(fvec4) FunctionCall 14(@PixelShaderFunction(vf4;) 58(param)
+ Store 57(@entryPointOutput) 60
Return
FunctionEnd
-11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
- 10(input): 8(ptr) FunctionParameter
- 12: Label
- 13: 7(fvec4) Load 10(input)
- 20: 19(ptr) AccessChain 16 18
- 21: 7(fvec4) Load 20
- 22: 7(fvec4) FAdd 13 21
- 26: 19(ptr) AccessChain 25 18
- 27: 7(fvec4) Load 26
- 28: 7(fvec4) FAdd 22 27
- 32: 19(ptr) AccessChain 31 18
- 33: 7(fvec4) Load 32
- 34: 7(fvec4) FAdd 28 33
- 39: 19(ptr) AccessChain 38 18
- 40: 7(fvec4) Load 39
- 41: 7(fvec4) FAdd 34 40
- ReturnValue 41
+ 8(foo(): 6(float) Function None 7
+ 9: Label
+ ReturnValue 16
+ FunctionEnd
+14(@PixelShaderFunction(vf4;): 10(fvec4) Function None 12
+ 13(input): 11(ptr) FunctionParameter
+ 15: Label
+ 19: 10(fvec4) Load 13(input)
+ 26: 25(ptr) AccessChain 22 24
+ 27: 10(fvec4) Load 26
+ 28: 10(fvec4) FAdd 19 27
+ 32: 25(ptr) AccessChain 31 24
+ 33: 10(fvec4) Load 32
+ 34: 10(fvec4) FAdd 28 33
+ 38: 25(ptr) AccessChain 37 24
+ 39: 10(fvec4) Load 38
+ 40: 10(fvec4) FAdd 34 39
+ 45: 25(ptr) AccessChain 44 24
+ 46: 10(fvec4) Load 45
+ 47: 10(fvec4) FAdd 40 46
+ 48: 6(float) FunctionCall 8(foo()
+ 49: 10(fvec4) VectorTimesScalar 47 48
+ ReturnValue 49
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.calculatelod.dx10.frag.out
index f018984f3d6..bbdd2161f0a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.calculatelod.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.calculatelod.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.calculatelod.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -149,13 +149,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -172,14 +172,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -329,13 +329,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -352,11 +352,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 148
Capability Shader
@@ -367,6 +367,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 140 144
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -393,8 +394,8 @@ gl_FragCoord origin is upper left
Name 115 "g_tTexcdu4a"
Name 127 "psout"
Name 137 "flattenTemp"
- Name 140 "Color"
- Name 144 "Depth"
+ Name 140 "@entryPointOutput.Color"
+ Name 144 "@entryPointOutput.Depth"
Name 147 "g_tTex1df4"
Decorate 16(g_tTex1df4a) DescriptorSet 0
Decorate 16(g_tTex1df4a) Binding 1
@@ -408,8 +409,8 @@ gl_FragCoord origin is upper left
Decorate 92(g_tTexcdf4a) DescriptorSet 0
Decorate 104(g_tTexcdi4a) DescriptorSet 0
Decorate 115(g_tTexcdu4a) DescriptorSet 0
- Decorate 140(Color) Location 0
- Decorate 144(Depth) BuiltIn FragDepth
+ Decorate 140(@entryPointOutput.Color) Location 0
+ Decorate 144(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 147(g_tTex1df4) DescriptorSet 0
Decorate 147(g_tTex1df4) Binding 0
2: TypeVoid
@@ -484,9 +485,9 @@ gl_FragCoord origin is upper left
130: TypePointer Function 7(fvec4)
132: 27(int) Constant 1
139: TypePointer Output 7(fvec4)
- 140(Color): 139(ptr) Variable Output
+140(@entryPointOutput.Color): 139(ptr) Variable Output
143: TypePointer Output 6(float)
- 144(Depth): 143(ptr) Variable Output
+144(@entryPointOutput.Depth): 143(ptr) Variable Output
147(g_tTex1df4): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -495,10 +496,10 @@ gl_FragCoord origin is upper left
Store 137(flattenTemp) 138
141: 130(ptr) AccessChain 137(flattenTemp) 28
142: 7(fvec4) Load 141
- Store 140(Color) 142
+ Store 140(@entryPointOutput.Color) 142
145: 12(ptr) AccessChain 137(flattenTemp) 132
146: 6(float) Load 145
- Store 144(Depth) 146
+ Store 144(@entryPointOutput.Depth) 146
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
index 4e2e8860064..f85d9b51f36 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
@@ -11,7 +11,7 @@ ERROR: 0:38: '' : unimplemented: CalculateLevelOfDetailUnclamped
ERROR: 9 compilation errors. No code generated.
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -161,13 +161,13 @@ ERROR: node is still EOpNull!
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -184,14 +184,14 @@ ERROR: node is still EOpNull!
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -341,13 +341,13 @@ ERROR: node is still EOpNull!
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -364,7 +364,7 @@ ERROR: node is still EOpNull!
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.cast.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.cast.frag.out
index d17251dd61d..5d7cd71122a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.cast.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.cast.frag.out
@@ -1,5 +1,5 @@
hlsl.cast.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -37,7 +37,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -72,7 +72,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 39
Capability Shader
@@ -80,6 +80,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 32 35
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "@PixelShaderFunction(vf4;"
Name 10 "input"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.charLit.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.charLit.vert.out
new file mode 100644
index 00000000000..4555ba6a2da
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.charLit.vert.out
@@ -0,0 +1,233 @@
+hlsl.charLit.vert
+Shader version: 500
+0:? Sequence
+0:2 Function Definition: @main( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Sequence
+0:3 move second child to first child ( temp uint)
+0:3 'a1' ( temp uint)
+0:3 Constant:
+0:3 65 (const uint)
+0:4 Sequence
+0:4 move second child to first child ( temp int)
+0:4 'a2' ( temp int)
+0:4 Constant:
+0:4 48 (const int)
+0:6 Sequence
+0:6 move second child to first child ( temp int)
+0:6 'a3' ( temp int)
+0:6 Constant:
+0:6 7 (const int)
+0:7 add second child into first child ( temp int)
+0:7 'a3' ( temp int)
+0:7 Constant:
+0:7 8 (const int)
+0:8 add second child into first child ( temp int)
+0:8 'a3' ( temp int)
+0:8 Constant:
+0:8 9 (const int)
+0:9 add second child into first child ( temp int)
+0:9 'a3' ( temp int)
+0:9 Constant:
+0:9 10 (const int)
+0:10 add second child into first child ( temp int)
+0:10 'a3' ( temp int)
+0:10 Constant:
+0:10 11 (const int)
+0:11 add second child into first child ( temp int)
+0:11 'a3' ( temp int)
+0:11 Constant:
+0:11 12 (const int)
+0:12 add second child into first child ( temp int)
+0:12 'a3' ( temp int)
+0:12 Constant:
+0:12 13 (const int)
+0:14 Sequence
+0:14 move second child to first child ( temp int)
+0:14 'a10' ( temp int)
+0:14 Constant:
+0:14 99 (const int)
+0:16 Branch: Return with expression
+0:16 Construct vec4 ( temp 4-component vector of float)
+0:16 Convert uint to float ( temp float)
+0:16 add ( temp uint)
+0:16 add ( temp uint)
+0:16 add ( temp uint)
+0:16 'a1' ( temp uint)
+0:16 Convert int to uint ( temp uint)
+0:16 'a2' ( temp int)
+0:16 Convert int to uint ( temp uint)
+0:16 'a3' ( temp int)
+0:16 Convert int to uint ( temp uint)
+0:16 'a10' ( temp int)
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:2 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:2 Function Definition: @main( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Sequence
+0:3 move second child to first child ( temp uint)
+0:3 'a1' ( temp uint)
+0:3 Constant:
+0:3 65 (const uint)
+0:4 Sequence
+0:4 move second child to first child ( temp int)
+0:4 'a2' ( temp int)
+0:4 Constant:
+0:4 48 (const int)
+0:6 Sequence
+0:6 move second child to first child ( temp int)
+0:6 'a3' ( temp int)
+0:6 Constant:
+0:6 7 (const int)
+0:7 add second child into first child ( temp int)
+0:7 'a3' ( temp int)
+0:7 Constant:
+0:7 8 (const int)
+0:8 add second child into first child ( temp int)
+0:8 'a3' ( temp int)
+0:8 Constant:
+0:8 9 (const int)
+0:9 add second child into first child ( temp int)
+0:9 'a3' ( temp int)
+0:9 Constant:
+0:9 10 (const int)
+0:10 add second child into first child ( temp int)
+0:10 'a3' ( temp int)
+0:10 Constant:
+0:10 11 (const int)
+0:11 add second child into first child ( temp int)
+0:11 'a3' ( temp int)
+0:11 Constant:
+0:11 12 (const int)
+0:12 add second child into first child ( temp int)
+0:12 'a3' ( temp int)
+0:12 Constant:
+0:12 13 (const int)
+0:14 Sequence
+0:14 move second child to first child ( temp int)
+0:14 'a10' ( temp int)
+0:14 Constant:
+0:14 99 (const int)
+0:16 Branch: Return with expression
+0:16 Construct vec4 ( temp 4-component vector of float)
+0:16 Convert uint to float ( temp float)
+0:16 add ( temp uint)
+0:16 add ( temp uint)
+0:16 add ( temp uint)
+0:16 'a1' ( temp uint)
+0:16 Convert int to uint ( temp uint)
+0:16 'a2' ( temp int)
+0:16 Convert int to uint ( temp uint)
+0:16 'a3' ( temp int)
+0:16 Convert int to uint ( temp uint)
+0:16 'a10' ( temp int)
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:2 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 58
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 56
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 13 "a1"
+ Name 17 "a2"
+ Name 19 "a3"
+ Name 39 "a10"
+ Name 56 "@entryPointOutput"
+ Decorate 56(@entryPointOutput) BuiltIn Position
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeInt 32 0
+ 12: TypePointer Function 11(int)
+ 14: 11(int) Constant 65
+ 15: TypeInt 32 1
+ 16: TypePointer Function 15(int)
+ 18: 15(int) Constant 48
+ 20: 15(int) Constant 7
+ 21: 15(int) Constant 8
+ 24: 15(int) Constant 9
+ 27: 15(int) Constant 10
+ 30: 15(int) Constant 11
+ 33: 15(int) Constant 12
+ 36: 15(int) Constant 13
+ 40: 15(int) Constant 99
+ 55: TypePointer Output 7(fvec4)
+56(@entryPointOutput): 55(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 57: 7(fvec4) FunctionCall 9(@main()
+ Store 56(@entryPointOutput) 57
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 13(a1): 12(ptr) Variable Function
+ 17(a2): 16(ptr) Variable Function
+ 19(a3): 16(ptr) Variable Function
+ 39(a10): 16(ptr) Variable Function
+ Store 13(a1) 14
+ Store 17(a2) 18
+ Store 19(a3) 20
+ 22: 15(int) Load 19(a3)
+ 23: 15(int) IAdd 22 21
+ Store 19(a3) 23
+ 25: 15(int) Load 19(a3)
+ 26: 15(int) IAdd 25 24
+ Store 19(a3) 26
+ 28: 15(int) Load 19(a3)
+ 29: 15(int) IAdd 28 27
+ Store 19(a3) 29
+ 31: 15(int) Load 19(a3)
+ 32: 15(int) IAdd 31 30
+ Store 19(a3) 32
+ 34: 15(int) Load 19(a3)
+ 35: 15(int) IAdd 34 33
+ Store 19(a3) 35
+ 37: 15(int) Load 19(a3)
+ 38: 15(int) IAdd 37 36
+ Store 19(a3) 38
+ Store 39(a10) 40
+ 41: 11(int) Load 13(a1)
+ 42: 15(int) Load 17(a2)
+ 43: 11(int) Bitcast 42
+ 44: 11(int) IAdd 41 43
+ 45: 15(int) Load 19(a3)
+ 46: 11(int) Bitcast 45
+ 47: 11(int) IAdd 44 46
+ 48: 15(int) Load 39(a10)
+ 49: 11(int) Bitcast 48
+ 50: 11(int) IAdd 47 49
+ 51: 6(float) ConvertUToF 50
+ 52: 7(fvec4) CompositeConstruct 51 51 51 51
+ ReturnValue 52
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clip.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clip.frag.out
new file mode 100644
index 00000000000..e2e1a0adc9d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clip.frag.out
@@ -0,0 +1,123 @@
+hlsl.clip.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:3 Function Definition: GetEntitySelectClip( ( temp float)
+0:3 Function Parameters:
+0:? Sequence
+0:4 Branch: Return with expression
+0:4 Constant:
+0:4 1.000000
+0:8 Function Definition: @main( ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:? Sequence
+0:9 Test condition and select ( temp void)
+0:9 Condition
+0:9 Compare Less Than ( temp bool)
+0:9 Function Call: GetEntitySelectClip( ( temp float)
+0:9 Constant:
+0:9 0.000000
+0:9 true case
+0:9 Branch: Kill
+0:11 Branch: Return with expression
+0:11 Constant:
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:3 Function Definition: GetEntitySelectClip( ( temp float)
+0:3 Function Parameters:
+0:? Sequence
+0:4 Branch: Return with expression
+0:4 Constant:
+0:4 1.000000
+0:8 Function Definition: @main( ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:? Sequence
+0:9 Test condition and select ( temp void)
+0:9 Condition
+0:9 Compare Less Than ( temp bool)
+0:9 Function Call: GetEntitySelectClip( ( temp float)
+0:9 Constant:
+0:9 0.000000
+0:9 true case
+0:9 Branch: Kill
+0:11 Branch: Return with expression
+0:11 Constant:
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 30
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 28
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "GetEntitySelectClip("
+ Name 12 "@main("
+ Name 28 "@entryPointOutput"
+ Decorate 28(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeFunction 6(float)
+ 10: TypeVector 6(float) 4
+ 11: TypeFunction 10(fvec4)
+ 14: 6(float) Constant 1065353216
+ 18: 6(float) Constant 0
+ 19: TypeBool
+ 24: 10(fvec4) ConstantComposite 18 18 18 18
+ 27: TypePointer Output 10(fvec4)
+28(@entryPointOutput): 27(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 29: 10(fvec4) FunctionCall 12(@main()
+ Store 28(@entryPointOutput) 29
+ Return
+ FunctionEnd
+8(GetEntitySelectClip(): 6(float) Function None 7
+ 9: Label
+ ReturnValue 14
+ FunctionEnd
+ 12(@main(): 10(fvec4) Function None 11
+ 13: Label
+ 17: 6(float) FunctionCall 8(GetEntitySelectClip()
+ 20: 19(bool) FOrdLessThan 17 18
+ SelectionMerge 22 None
+ BranchConditional 20 21 22
+ 21: Label
+ Kill
+ 22: Label
+ ReturnValue 24
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out
new file mode 100644
index 00000000000..83278982b2e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out
@@ -0,0 +1,190 @@
+hlsl.clipdistance-1.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: @main(vf4;f1;f1; ( temp 4-component vector of float)
+0:4 Function Parameters:
+0:4 'pos' ( in 4-component vector of float)
+0:4 'clip' ( in float)
+0:4 'cull' ( in float)
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 add ( temp 4-component vector of float)
+0:5 add ( temp 4-component vector of float)
+0:5 'pos' ( in 4-component vector of float)
+0:5 'clip' ( in float)
+0:5 'cull' ( in float)
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:? 'clip' ( temp float)
+0:4 direct index ( in float ClipDistance)
+0:? 'clip' ( in 1-element array of float ClipDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:? 'cull' ( temp float)
+0:4 direct index ( in float CullDistance)
+0:? 'cull' ( in 1-element array of float CullDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4 Function Call: @main(vf4;f1;f1; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp float)
+0:? 'cull' ( temp float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? 'clip' ( in 1-element array of float ClipDistance)
+0:? 'cull' ( in 1-element array of float CullDistance)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: @main(vf4;f1;f1; ( temp 4-component vector of float)
+0:4 Function Parameters:
+0:4 'pos' ( in 4-component vector of float)
+0:4 'clip' ( in float)
+0:4 'cull' ( in float)
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 add ( temp 4-component vector of float)
+0:5 add ( temp 4-component vector of float)
+0:5 'pos' ( in 4-component vector of float)
+0:5 'clip' ( in float)
+0:5 'cull' ( in float)
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:? 'clip' ( temp float)
+0:4 direct index ( in float ClipDistance)
+0:? 'clip' ( in 1-element array of float ClipDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:? 'cull' ( temp float)
+0:4 direct index ( in float CullDistance)
+0:? 'cull' ( in 1-element array of float CullDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4 Function Call: @main(vf4;f1;f1; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp float)
+0:? 'cull' ( temp float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? 'clip' ( in 1-element array of float ClipDistance)
+0:? 'cull' ( in 1-element array of float CullDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 53
+
+ Capability Shader
+ Capability ClipDistance
+ Capability CullDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 27 34 41 45
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 14 "@main(vf4;f1;f1;"
+ Name 11 "pos"
+ Name 12 "clip"
+ Name 13 "cull"
+ Name 25 "pos"
+ Name 27 "pos"
+ Name 29 "clip"
+ Name 34 "clip"
+ Name 40 "cull"
+ Name 41 "cull"
+ Name 45 "@entryPointOutput"
+ Name 46 "param"
+ Name 48 "param"
+ Name 50 "param"
+ Decorate 27(pos) BuiltIn FragCoord
+ Decorate 34(clip) BuiltIn ClipDistance
+ Decorate 41(cull) BuiltIn CullDistance
+ Decorate 45(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypePointer Function 6(float)
+ 10: TypeFunction 7(fvec4) 8(ptr) 9(ptr) 9(ptr)
+ 26: TypePointer Input 7(fvec4)
+ 27(pos): 26(ptr) Variable Input
+ 30: TypeInt 32 0
+ 31: 30(int) Constant 1
+ 32: TypeArray 6(float) 31
+ 33: TypePointer Input 32
+ 34(clip): 33(ptr) Variable Input
+ 35: TypeInt 32 1
+ 36: 35(int) Constant 0
+ 37: TypePointer Input 6(float)
+ 41(cull): 33(ptr) Variable Input
+ 44: TypePointer Output 7(fvec4)
+45(@entryPointOutput): 44(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 25(pos): 8(ptr) Variable Function
+ 29(clip): 9(ptr) Variable Function
+ 40(cull): 9(ptr) Variable Function
+ 46(param): 8(ptr) Variable Function
+ 48(param): 9(ptr) Variable Function
+ 50(param): 9(ptr) Variable Function
+ 28: 7(fvec4) Load 27(pos)
+ Store 25(pos) 28
+ 38: 37(ptr) AccessChain 34(clip) 36
+ 39: 6(float) Load 38
+ Store 29(clip) 39
+ 42: 37(ptr) AccessChain 41(cull) 36
+ 43: 6(float) Load 42
+ Store 40(cull) 43
+ 47: 7(fvec4) Load 25(pos)
+ Store 46(param) 47
+ 49: 6(float) Load 29(clip)
+ Store 48(param) 49
+ 51: 6(float) Load 40(cull)
+ Store 50(param) 51
+ 52: 7(fvec4) FunctionCall 14(@main(vf4;f1;f1;) 46(param) 48(param) 50(param)
+ Store 45(@entryPointOutput) 52
+ Return
+ FunctionEnd
+14(@main(vf4;f1;f1;): 7(fvec4) Function None 10
+ 11(pos): 8(ptr) FunctionParameter
+ 12(clip): 9(ptr) FunctionParameter
+ 13(cull): 9(ptr) FunctionParameter
+ 15: Label
+ 16: 7(fvec4) Load 11(pos)
+ 17: 6(float) Load 12(clip)
+ 18: 7(fvec4) CompositeConstruct 17 17 17 17
+ 19: 7(fvec4) FAdd 16 18
+ 20: 6(float) Load 13(cull)
+ 21: 7(fvec4) CompositeConstruct 20 20 20 20
+ 22: 7(fvec4) FAdd 19 21
+ ReturnValue 22
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out
new file mode 100644
index 00000000000..5fd9aecb457
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out
@@ -0,0 +1,737 @@
+hlsl.clipdistance-1.geom
+Shader version: 500
+invocations = -1
+max_vertices = 3
+input primitive = triangles
+output primitive = line_strip
+0:? Sequence
+0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void)
+0:11 Function Parameters:
+0:11 'pos' ( in 3-element array of 4-component vector of float)
+0:11 'VertexID' ( in 3-element array of uint)
+0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:11 'clip' ( in 3-element array of 4-component vector of float)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 pos: direct index for structure ( temp 4-component vector of float)
+0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:14 Constant:
+0:14 0 (const int)
+0:14 direct index ( temp 4-component vector of float)
+0:14 'pos' ( in 3-element array of 4-component vector of float)
+0:14 Constant:
+0:14 0 (const int)
+0:15 move second child to first child ( temp 2-component vector of float)
+0:15 clip: direct index for structure ( temp 2-component vector of float)
+0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:15 Constant:
+0:15 1 (const int)
+0:15 vector swizzle ( temp 2-component vector of float)
+0:15 direct index ( temp 4-component vector of float)
+0:15 'clip' ( in 3-element array of 4-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Sequence
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 1 (const int)
+0:17 Sequence
+0:17 Sequence
+0:17 move second child to first child ( temp 4-component vector of float)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:17 pos: direct index for structure ( temp 4-component vector of float)
+0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:17 Constant:
+0:17 0 (const int)
+0:? Sequence
+0:17 move second child to first child ( temp float)
+0:17 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
+0:17 Constant:
+0:17 0 (const int)
+0:17 direct index ( temp float)
+0:17 clip: direct index for structure ( temp 2-component vector of float)
+0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 move second child to first child ( temp float)
+0:17 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
+0:17 Constant:
+0:17 1 (const int)
+0:17 direct index ( temp float)
+0:17 clip: direct index for structure ( temp 2-component vector of float)
+0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 EmitVertex ( temp void)
+0:11 Function Definition: main( ( temp void)
+0:11 Function Parameters:
+0:? Sequence
+0:11 move second child to first child ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:11 move second child to first child ( temp 3-element array of uint)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? Sequence
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:? Linker Objects
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
+
+
+Linked geometry stage:
+
+
+Shader version: 500
+invocations = 1
+max_vertices = 3
+input primitive = triangles
+output primitive = line_strip
+0:? Sequence
+0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void)
+0:11 Function Parameters:
+0:11 'pos' ( in 3-element array of 4-component vector of float)
+0:11 'VertexID' ( in 3-element array of uint)
+0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:11 'clip' ( in 3-element array of 4-component vector of float)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 pos: direct index for structure ( temp 4-component vector of float)
+0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:14 Constant:
+0:14 0 (const int)
+0:14 direct index ( temp 4-component vector of float)
+0:14 'pos' ( in 3-element array of 4-component vector of float)
+0:14 Constant:
+0:14 0 (const int)
+0:15 move second child to first child ( temp 2-component vector of float)
+0:15 clip: direct index for structure ( temp 2-component vector of float)
+0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:15 Constant:
+0:15 1 (const int)
+0:15 vector swizzle ( temp 2-component vector of float)
+0:15 direct index ( temp 4-component vector of float)
+0:15 'clip' ( in 3-element array of 4-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Sequence
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 1 (const int)
+0:17 Sequence
+0:17 Sequence
+0:17 move second child to first child ( temp 4-component vector of float)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:17 pos: direct index for structure ( temp 4-component vector of float)
+0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:17 Constant:
+0:17 0 (const int)
+0:? Sequence
+0:17 move second child to first child ( temp float)
+0:17 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
+0:17 Constant:
+0:17 0 (const int)
+0:17 direct index ( temp float)
+0:17 clip: direct index for structure ( temp 2-component vector of float)
+0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 move second child to first child ( temp float)
+0:17 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
+0:17 Constant:
+0:17 1 (const int)
+0:17 direct index ( temp float)
+0:17 clip: direct index for structure ( temp 2-component vector of float)
+0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 EmitVertex ( temp void)
+0:11 Function Definition: main( ( temp void)
+0:11 Function Parameters:
+0:? Sequence
+0:11 move second child to first child ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:11 move second child to first child ( temp 3-element array of uint)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? Sequence
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:? Linker Objects
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 118
+
+ Capability Geometry
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 4 "main" 38 44 57 61 68
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 Invocations 1
+ ExecutionMode 4 OutputLineStrip
+ ExecutionMode 4 OutputVertices 3
+ Source HLSL 500
+ Name 4 "main"
+ Name 15 "S"
+ MemberName 15(S) 0 "pos"
+ MemberName 15(S) 1 "clip"
+ Name 22 "@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];"
+ Name 18 "pos"
+ Name 19 "VertexID"
+ Name 20 "OutputStream"
+ Name 21 "clip"
+ Name 24 "s"
+ Name 38 "OutputStream.pos"
+ Name 44 "OutputStream.clip"
+ Name 55 "pos"
+ Name 57 "pos"
+ Name 59 "VertexID"
+ Name 61 "VertexID"
+ Name 63 "clip"
+ Name 68 "clip"
+ Name 108 "OutputStream"
+ Name 109 "param"
+ Name 111 "param"
+ Name 113 "param"
+ Name 114 "param"
+ Decorate 38(OutputStream.pos) BuiltIn Position
+ Decorate 44(OutputStream.clip) BuiltIn ClipDistance
+ Decorate 57(pos) BuiltIn Position
+ Decorate 61(VertexID) Location 0
+ Decorate 68(clip) BuiltIn ClipDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 3
+ 10: TypeArray 7(fvec4) 9
+ 11: TypePointer Function 10
+ 12: TypeArray 8(int) 9
+ 13: TypePointer Function 12
+ 14: TypeVector 6(float) 2
+ 15(S): TypeStruct 7(fvec4) 14(fvec2)
+ 16: TypePointer Function 15(S)
+ 17: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 11(ptr)
+ 25: TypeInt 32 1
+ 26: 25(int) Constant 0
+ 27: TypePointer Function 7(fvec4)
+ 31: 25(int) Constant 1
+ 35: TypePointer Function 14(fvec2)
+ 37: TypePointer Output 7(fvec4)
+38(OutputStream.pos): 37(ptr) Variable Output
+ 41: 8(int) Constant 2
+ 42: TypeArray 6(float) 41
+ 43: TypePointer Output 42
+44(OutputStream.clip): 43(ptr) Variable Output
+ 45: 8(int) Constant 0
+ 46: TypePointer Function 6(float)
+ 49: TypePointer Output 6(float)
+ 51: 8(int) Constant 1
+ 56: TypePointer Input 10
+ 57(pos): 56(ptr) Variable Input
+ 60: TypePointer Input 12
+ 61(VertexID): 60(ptr) Variable Input
+ 64: 8(int) Constant 4
+ 65: TypeArray 6(float) 64
+ 66: TypeArray 65 9
+ 67: TypePointer Input 66
+ 68(clip): 67(ptr) Variable Input
+ 69: TypePointer Input 6(float)
+ 76: 25(int) Constant 2
+ 80: 25(int) Constant 3
+ 4(main): 2 Function None 3
+ 5: Label
+ 55(pos): 11(ptr) Variable Function
+ 59(VertexID): 13(ptr) Variable Function
+ 63(clip): 11(ptr) Variable Function
+108(OutputStream): 16(ptr) Variable Function
+ 109(param): 11(ptr) Variable Function
+ 111(param): 13(ptr) Variable Function
+ 113(param): 16(ptr) Variable Function
+ 114(param): 11(ptr) Variable Function
+ 58: 10 Load 57(pos)
+ Store 55(pos) 58
+ 62: 12 Load 61(VertexID)
+ Store 59(VertexID) 62
+ 70: 69(ptr) AccessChain 68(clip) 26 26
+ 71: 6(float) Load 70
+ 72: 46(ptr) AccessChain 63(clip) 26 45
+ Store 72 71
+ 73: 69(ptr) AccessChain 68(clip) 26 31
+ 74: 6(float) Load 73
+ 75: 46(ptr) AccessChain 63(clip) 26 51
+ Store 75 74
+ 77: 69(ptr) AccessChain 68(clip) 26 76
+ 78: 6(float) Load 77
+ 79: 46(ptr) AccessChain 63(clip) 26 41
+ Store 79 78
+ 81: 69(ptr) AccessChain 68(clip) 26 80
+ 82: 6(float) Load 81
+ 83: 46(ptr) AccessChain 63(clip) 26 9
+ Store 83 82
+ 84: 69(ptr) AccessChain 68(clip) 31 26
+ 85: 6(float) Load 84
+ 86: 46(ptr) AccessChain 63(clip) 31 45
+ Store 86 85
+ 87: 69(ptr) AccessChain 68(clip) 31 31
+ 88: 6(float) Load 87
+ 89: 46(ptr) AccessChain 63(clip) 31 51
+ Store 89 88
+ 90: 69(ptr) AccessChain 68(clip) 31 76
+ 91: 6(float) Load 90
+ 92: 46(ptr) AccessChain 63(clip) 31 41
+ Store 92 91
+ 93: 69(ptr) AccessChain 68(clip) 31 80
+ 94: 6(float) Load 93
+ 95: 46(ptr) AccessChain 63(clip) 31 9
+ Store 95 94
+ 96: 69(ptr) AccessChain 68(clip) 76 26
+ 97: 6(float) Load 96
+ 98: 46(ptr) AccessChain 63(clip) 76 45
+ Store 98 97
+ 99: 69(ptr) AccessChain 68(clip) 76 31
+ 100: 6(float) Load 99
+ 101: 46(ptr) AccessChain 63(clip) 76 51
+ Store 101 100
+ 102: 69(ptr) AccessChain 68(clip) 76 76
+ 103: 6(float) Load 102
+ 104: 46(ptr) AccessChain 63(clip) 76 41
+ Store 104 103
+ 105: 69(ptr) AccessChain 68(clip) 76 80
+ 106: 6(float) Load 105
+ 107: 46(ptr) AccessChain 63(clip) 76 9
+ Store 107 106
+ 110: 10 Load 55(pos)
+ Store 109(param) 110
+ 112: 12 Load 59(VertexID)
+ Store 111(param) 112
+ 115: 10 Load 63(clip)
+ Store 114(param) 115
+ 116: 2 FunctionCall 22(@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];) 109(param) 111(param) 113(param) 114(param)
+ 117: 15(S) Load 113(param)
+ Store 108(OutputStream) 117
+ Return
+ FunctionEnd
+22(@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];): 2 Function None 17
+ 18(pos): 11(ptr) FunctionParameter
+ 19(VertexID): 13(ptr) FunctionParameter
+20(OutputStream): 16(ptr) FunctionParameter
+ 21(clip): 11(ptr) FunctionParameter
+ 23: Label
+ 24(s): 16(ptr) Variable Function
+ 28: 27(ptr) AccessChain 18(pos) 26
+ 29: 7(fvec4) Load 28
+ 30: 27(ptr) AccessChain 24(s) 26
+ Store 30 29
+ 32: 27(ptr) AccessChain 21(clip) 26
+ 33: 7(fvec4) Load 32
+ 34: 14(fvec2) VectorShuffle 33 33 0 1
+ 36: 35(ptr) AccessChain 24(s) 31
+ Store 36 34
+ 39: 27(ptr) AccessChain 24(s) 26
+ 40: 7(fvec4) Load 39
+ Store 38(OutputStream.pos) 40
+ 47: 46(ptr) AccessChain 24(s) 31 45
+ 48: 6(float) Load 47
+ 50: 49(ptr) AccessChain 44(OutputStream.clip) 26
+ Store 50 48
+ 52: 46(ptr) AccessChain 24(s) 31 51
+ 53: 6(float) Load 52
+ 54: 49(ptr) AccessChain 44(OutputStream.clip) 31
+ Store 54 53
+ EmitVertex
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out
new file mode 100644
index 00000000000..94b1c7f92eb
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out
@@ -0,0 +1,194 @@
+hlsl.clipdistance-1.vert
+Shader version: 500
+0:? Sequence
+0:4 Function Definition: @main(vf4;f1;f1; ( temp void)
+0:4 Function Parameters:
+0:4 'pos' ( out 4-component vector of float)
+0:4 'clip' ( out float)
+0:4 'cull' ( out float)
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:5 'pos' ( out 4-component vector of float)
+0:5 Constant:
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:6 move second child to first child ( temp float)
+0:6 'clip' ( out float)
+0:6 Constant:
+0:6 0.500000
+0:7 move second child to first child ( temp float)
+0:7 'cull' ( out float)
+0:7 Constant:
+0:7 0.510000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 Function Call: @main(vf4;f1;f1; ( temp void)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp float)
+0:? 'cull' ( temp float)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float ClipDistance)
+0:? 'clip' ( out 1-element array of float ClipDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:? 'clip' ( temp float)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float CullDistance)
+0:? 'cull' ( out 1-element array of float CullDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:? 'cull' ( temp float)
+0:? Linker Objects
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'clip' ( out 1-element array of float ClipDistance)
+0:? 'cull' ( out 1-element array of float CullDistance)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:4 Function Definition: @main(vf4;f1;f1; ( temp void)
+0:4 Function Parameters:
+0:4 'pos' ( out 4-component vector of float)
+0:4 'clip' ( out float)
+0:4 'cull' ( out float)
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:5 'pos' ( out 4-component vector of float)
+0:5 Constant:
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:6 move second child to first child ( temp float)
+0:6 'clip' ( out float)
+0:6 Constant:
+0:6 0.500000
+0:7 move second child to first child ( temp float)
+0:7 'cull' ( out float)
+0:7 Constant:
+0:7 0.510000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 Function Call: @main(vf4;f1;f1; ( temp void)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp float)
+0:? 'cull' ( temp float)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float ClipDistance)
+0:? 'clip' ( out 1-element array of float ClipDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:? 'clip' ( temp float)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float CullDistance)
+0:? 'cull' ( out 1-element array of float CullDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:? 'cull' ( temp float)
+0:? Linker Objects
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'clip' ( out 1-element array of float ClipDistance)
+0:? 'cull' ( out 1-element array of float CullDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 46
+
+ Capability Shader
+ Capability ClipDistance
+ Capability CullDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 31 37 43
+ Source HLSL 500
+ Name 4 "main"
+ Name 14 "@main(vf4;f1;f1;"
+ Name 11 "pos"
+ Name 12 "clip"
+ Name 13 "cull"
+ Name 20 "pos"
+ Name 21 "clip"
+ Name 22 "cull"
+ Name 23 "param"
+ Name 24 "param"
+ Name 25 "param"
+ Name 31 "pos"
+ Name 37 "clip"
+ Name 43 "cull"
+ Decorate 31(pos) BuiltIn Position
+ Decorate 37(clip) BuiltIn ClipDistance
+ Decorate 43(cull) BuiltIn CullDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypePointer Function 6(float)
+ 10: TypeFunction 2 8(ptr) 9(ptr) 9(ptr)
+ 16: 6(float) Constant 1065353216
+ 17: 7(fvec4) ConstantComposite 16 16 16 16
+ 18: 6(float) Constant 1056964608
+ 19: 6(float) Constant 1057132380
+ 30: TypePointer Output 7(fvec4)
+ 31(pos): 30(ptr) Variable Output
+ 33: TypeInt 32 0
+ 34: 33(int) Constant 1
+ 35: TypeArray 6(float) 34
+ 36: TypePointer Output 35
+ 37(clip): 36(ptr) Variable Output
+ 38: TypeInt 32 1
+ 39: 38(int) Constant 0
+ 41: TypePointer Output 6(float)
+ 43(cull): 36(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 20(pos): 8(ptr) Variable Function
+ 21(clip): 9(ptr) Variable Function
+ 22(cull): 9(ptr) Variable Function
+ 23(param): 8(ptr) Variable Function
+ 24(param): 9(ptr) Variable Function
+ 25(param): 9(ptr) Variable Function
+ 26: 2 FunctionCall 14(@main(vf4;f1;f1;) 23(param) 24(param) 25(param)
+ 27: 7(fvec4) Load 23(param)
+ Store 20(pos) 27
+ 28: 6(float) Load 24(param)
+ Store 21(clip) 28
+ 29: 6(float) Load 25(param)
+ Store 22(cull) 29
+ 32: 7(fvec4) Load 20(pos)
+ Store 31(pos) 32
+ 40: 6(float) Load 21(clip)
+ 42: 41(ptr) AccessChain 37(clip) 39
+ Store 42 40
+ 44: 6(float) Load 22(cull)
+ 45: 41(ptr) AccessChain 43(cull) 39
+ Store 45 44
+ Return
+ FunctionEnd
+14(@main(vf4;f1;f1;): 2 Function None 10
+ 11(pos): 8(ptr) FunctionParameter
+ 12(clip): 9(ptr) FunctionParameter
+ 13(cull): 9(ptr) FunctionParameter
+ 15: Label
+ Store 11(pos) 17
+ Store 12(clip) 18
+ Store 13(cull) 19
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out
new file mode 100644
index 00000000000..cbda87cb29a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out
@@ -0,0 +1,419 @@
+hlsl.clipdistance-2.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: @main(vf4;vf2[2];vf2[2]; ( temp 4-component vector of float)
+0:4 Function Parameters:
+0:4 'pos' ( in 4-component vector of float)
+0:4 'clip' ( in 2-element array of 2-component vector of float)
+0:4 'cull' ( in 2-element array of 2-component vector of float)
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 add ( temp 4-component vector of float)
+0:6 add ( temp 4-component vector of float)
+0:6 'pos' ( in 4-component vector of float)
+0:6 direct index ( temp float)
+0:6 direct index ( temp 2-component vector of float)
+0:6 'clip' ( in 2-element array of 2-component vector of float)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0 (const int)
+0:6 direct index ( temp float)
+0:6 direct index ( temp 2-component vector of float)
+0:6 'cull' ( in 2-element array of 2-component vector of float)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0 (const int)
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( in float ClipDistance)
+0:? 'clip' ( in 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( in float ClipDistance)
+0:? 'clip' ( in 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 1 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( in float ClipDistance)
+0:? 'clip' ( in 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 2 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( in float ClipDistance)
+0:? 'clip' ( in 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 3 (const int)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( in float CullDistance)
+0:? 'cull' ( in 4-element array of float CullDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( in float CullDistance)
+0:? 'cull' ( in 4-element array of float CullDistance)
+0:4 Constant:
+0:4 1 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( in float CullDistance)
+0:? 'cull' ( in 4-element array of float CullDistance)
+0:4 Constant:
+0:4 2 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( in float CullDistance)
+0:? 'cull' ( in 4-element array of float CullDistance)
+0:4 Constant:
+0:4 3 (const int)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4 Function Call: @main(vf4;vf2[2];vf2[2]; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? 'clip' ( in 4-element array of float ClipDistance)
+0:? 'cull' ( in 4-element array of float CullDistance)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: @main(vf4;vf2[2];vf2[2]; ( temp 4-component vector of float)
+0:4 Function Parameters:
+0:4 'pos' ( in 4-component vector of float)
+0:4 'clip' ( in 2-element array of 2-component vector of float)
+0:4 'cull' ( in 2-element array of 2-component vector of float)
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 add ( temp 4-component vector of float)
+0:6 add ( temp 4-component vector of float)
+0:6 'pos' ( in 4-component vector of float)
+0:6 direct index ( temp float)
+0:6 direct index ( temp 2-component vector of float)
+0:6 'clip' ( in 2-element array of 2-component vector of float)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0 (const int)
+0:6 direct index ( temp float)
+0:6 direct index ( temp 2-component vector of float)
+0:6 'cull' ( in 2-element array of 2-component vector of float)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0 (const int)
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( in float ClipDistance)
+0:? 'clip' ( in 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( in float ClipDistance)
+0:? 'clip' ( in 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 1 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( in float ClipDistance)
+0:? 'clip' ( in 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 2 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( in float ClipDistance)
+0:? 'clip' ( in 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 3 (const int)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( in float CullDistance)
+0:? 'cull' ( in 4-element array of float CullDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( in float CullDistance)
+0:? 'cull' ( in 4-element array of float CullDistance)
+0:4 Constant:
+0:4 1 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( in float CullDistance)
+0:? 'cull' ( in 4-element array of float CullDistance)
+0:4 Constant:
+0:4 2 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( in float CullDistance)
+0:? 'cull' ( in 4-element array of float CullDistance)
+0:4 Constant:
+0:4 3 (const int)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4 Function Call: @main(vf4;vf2[2];vf2[2]; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? 'clip' ( in 4-element array of float ClipDistance)
+0:? 'cull' ( in 4-element array of float CullDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 84
+
+ Capability Shader
+ Capability ClipDistance
+ Capability CullDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 37 43 62 76
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 18 "@main(vf4;vf2[2];vf2[2];"
+ Name 15 "pos"
+ Name 16 "clip"
+ Name 17 "cull"
+ Name 35 "pos"
+ Name 37 "pos"
+ Name 39 "clip"
+ Name 43 "clip"
+ Name 61 "cull"
+ Name 62 "cull"
+ Name 76 "@entryPointOutput"
+ Name 77 "param"
+ Name 79 "param"
+ Name 81 "param"
+ Decorate 37(pos) BuiltIn FragCoord
+ Decorate 43(clip) BuiltIn ClipDistance
+ Decorate 62(cull) BuiltIn CullDistance
+ Decorate 76(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeVector 6(float) 2
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 2
+ 12: TypeArray 9(fvec2) 11
+ 13: TypePointer Function 12
+ 14: TypeFunction 7(fvec4) 8(ptr) 13(ptr) 13(ptr)
+ 21: TypeInt 32 1
+ 22: 21(int) Constant 0
+ 23: 10(int) Constant 0
+ 24: TypePointer Function 6(float)
+ 36: TypePointer Input 7(fvec4)
+ 37(pos): 36(ptr) Variable Input
+ 40: 10(int) Constant 4
+ 41: TypeArray 6(float) 40
+ 42: TypePointer Input 41
+ 43(clip): 42(ptr) Variable Input
+ 44: TypePointer Input 6(float)
+ 48: 21(int) Constant 1
+ 51: 10(int) Constant 1
+ 53: 21(int) Constant 2
+ 57: 21(int) Constant 3
+ 62(cull): 42(ptr) Variable Input
+ 75: TypePointer Output 7(fvec4)
+76(@entryPointOutput): 75(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 35(pos): 8(ptr) Variable Function
+ 39(clip): 13(ptr) Variable Function
+ 61(cull): 13(ptr) Variable Function
+ 77(param): 8(ptr) Variable Function
+ 79(param): 13(ptr) Variable Function
+ 81(param): 13(ptr) Variable Function
+ 38: 7(fvec4) Load 37(pos)
+ Store 35(pos) 38
+ 45: 44(ptr) AccessChain 43(clip) 22
+ 46: 6(float) Load 45
+ 47: 24(ptr) AccessChain 39(clip) 22 23
+ Store 47 46
+ 49: 44(ptr) AccessChain 43(clip) 48
+ 50: 6(float) Load 49
+ 52: 24(ptr) AccessChain 39(clip) 22 51
+ Store 52 50
+ 54: 44(ptr) AccessChain 43(clip) 53
+ 55: 6(float) Load 54
+ 56: 24(ptr) AccessChain 39(clip) 48 23
+ Store 56 55
+ 58: 44(ptr) AccessChain 43(clip) 57
+ 59: 6(float) Load 58
+ 60: 24(ptr) AccessChain 39(clip) 48 51
+ Store 60 59
+ 63: 44(ptr) AccessChain 62(cull) 22
+ 64: 6(float) Load 63
+ 65: 24(ptr) AccessChain 61(cull) 22 23
+ Store 65 64
+ 66: 44(ptr) AccessChain 62(cull) 48
+ 67: 6(float) Load 66
+ 68: 24(ptr) AccessChain 61(cull) 22 51
+ Store 68 67
+ 69: 44(ptr) AccessChain 62(cull) 53
+ 70: 6(float) Load 69
+ 71: 24(ptr) AccessChain 61(cull) 48 23
+ Store 71 70
+ 72: 44(ptr) AccessChain 62(cull) 57
+ 73: 6(float) Load 72
+ 74: 24(ptr) AccessChain 61(cull) 48 51
+ Store 74 73
+ 78: 7(fvec4) Load 35(pos)
+ Store 77(param) 78
+ 80: 12 Load 39(clip)
+ Store 79(param) 80
+ 82: 12 Load 61(cull)
+ Store 81(param) 82
+ 83: 7(fvec4) FunctionCall 18(@main(vf4;vf2[2];vf2[2];) 77(param) 79(param) 81(param)
+ Store 76(@entryPointOutput) 83
+ Return
+ FunctionEnd
+18(@main(vf4;vf2[2];vf2[2];): 7(fvec4) Function None 14
+ 15(pos): 8(ptr) FunctionParameter
+ 16(clip): 13(ptr) FunctionParameter
+ 17(cull): 13(ptr) FunctionParameter
+ 19: Label
+ 20: 7(fvec4) Load 15(pos)
+ 25: 24(ptr) AccessChain 16(clip) 22 23
+ 26: 6(float) Load 25
+ 27: 7(fvec4) CompositeConstruct 26 26 26 26
+ 28: 7(fvec4) FAdd 20 27
+ 29: 24(ptr) AccessChain 17(cull) 22 23
+ 30: 6(float) Load 29
+ 31: 7(fvec4) CompositeConstruct 30 30 30 30
+ 32: 7(fvec4) FAdd 28 31
+ ReturnValue 32
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out
new file mode 100644
index 00000000000..1b9f020ca41
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out
@@ -0,0 +1,924 @@
+hlsl.clipdistance-2.geom
+Shader version: 500
+invocations = -1
+max_vertices = 3
+input primitive = triangles
+output primitive = line_strip
+0:? Sequence
+0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void)
+0:11 Function Parameters:
+0:11 'pos' ( in 3-element array of 4-component vector of float)
+0:11 'VertexID' ( in 3-element array of uint)
+0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:11 'clip' ( in 3-element array of 2-element array of 2-component vector of float)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 pos: direct index for structure ( temp 4-component vector of float)
+0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:14 Constant:
+0:14 0 (const int)
+0:14 direct index ( temp 4-component vector of float)
+0:14 'pos' ( in 3-element array of 4-component vector of float)
+0:14 Constant:
+0:14 0 (const int)
+0:15 move second child to first child ( temp 2-component vector of float)
+0:15 direct index ( temp 2-component vector of float)
+0:15 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 direct index ( temp 2-component vector of float)
+0:15 direct index ( temp 2-element array of 2-component vector of float)
+0:15 'clip' ( in 3-element array of 2-element array of 2-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:16 direct index ( temp 2-component vector of float)
+0:16 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 direct index ( temp 2-component vector of float)
+0:16 direct index ( temp 2-element array of 2-component vector of float)
+0:16 'clip' ( in 3-element array of 2-element array of 2-component vector of float)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:18 Sequence
+0:18 Sequence
+0:18 move second child to first child ( temp 4-component vector of float)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:18 pos: direct index for structure ( temp 4-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:18 Constant:
+0:18 0 (const int)
+0:? Sequence
+0:18 move second child to first child ( temp float)
+0:18 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
+0:18 Constant:
+0:18 0 (const int)
+0:18 direct index ( temp float)
+0:18 direct index ( temp 2-component vector of float)
+0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 0 (const int)
+0:18 Constant:
+0:18 0 (const int)
+0:18 move second child to first child ( temp float)
+0:18 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
+0:18 Constant:
+0:18 1 (const int)
+0:18 direct index ( temp float)
+0:18 direct index ( temp 2-component vector of float)
+0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 0 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 move second child to first child ( temp float)
+0:18 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
+0:18 Constant:
+0:18 2 (const int)
+0:18 direct index ( temp float)
+0:18 direct index ( temp 2-component vector of float)
+0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 0 (const int)
+0:18 move second child to first child ( temp float)
+0:18 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
+0:18 Constant:
+0:18 3 (const int)
+0:18 direct index ( temp float)
+0:18 direct index ( temp 2-component vector of float)
+0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 EmitVertex ( temp void)
+0:11 Function Definition: main( ( temp void)
+0:11 Function Parameters:
+0:? Sequence
+0:11 move second child to first child ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:11 move second child to first child ( temp 3-element array of uint)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? Sequence
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:? Linker Objects
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
+
+
+Linked geometry stage:
+
+
+Shader version: 500
+invocations = 1
+max_vertices = 3
+input primitive = triangles
+output primitive = line_strip
+0:? Sequence
+0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void)
+0:11 Function Parameters:
+0:11 'pos' ( in 3-element array of 4-component vector of float)
+0:11 'VertexID' ( in 3-element array of uint)
+0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:11 'clip' ( in 3-element array of 2-element array of 2-component vector of float)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 pos: direct index for structure ( temp 4-component vector of float)
+0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:14 Constant:
+0:14 0 (const int)
+0:14 direct index ( temp 4-component vector of float)
+0:14 'pos' ( in 3-element array of 4-component vector of float)
+0:14 Constant:
+0:14 0 (const int)
+0:15 move second child to first child ( temp 2-component vector of float)
+0:15 direct index ( temp 2-component vector of float)
+0:15 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 direct index ( temp 2-component vector of float)
+0:15 direct index ( temp 2-element array of 2-component vector of float)
+0:15 'clip' ( in 3-element array of 2-element array of 2-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:16 direct index ( temp 2-component vector of float)
+0:16 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 direct index ( temp 2-component vector of float)
+0:16 direct index ( temp 2-element array of 2-component vector of float)
+0:16 'clip' ( in 3-element array of 2-element array of 2-component vector of float)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:18 Sequence
+0:18 Sequence
+0:18 move second child to first child ( temp 4-component vector of float)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:18 pos: direct index for structure ( temp 4-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:18 Constant:
+0:18 0 (const int)
+0:? Sequence
+0:18 move second child to first child ( temp float)
+0:18 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
+0:18 Constant:
+0:18 0 (const int)
+0:18 direct index ( temp float)
+0:18 direct index ( temp 2-component vector of float)
+0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 0 (const int)
+0:18 Constant:
+0:18 0 (const int)
+0:18 move second child to first child ( temp float)
+0:18 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
+0:18 Constant:
+0:18 1 (const int)
+0:18 direct index ( temp float)
+0:18 direct index ( temp 2-component vector of float)
+0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 0 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 move second child to first child ( temp float)
+0:18 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
+0:18 Constant:
+0:18 2 (const int)
+0:18 direct index ( temp float)
+0:18 direct index ( temp 2-component vector of float)
+0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 0 (const int)
+0:18 move second child to first child ( temp float)
+0:18 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
+0:18 Constant:
+0:18 3 (const int)
+0:18 direct index ( temp float)
+0:18 direct index ( temp 2-component vector of float)
+0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 EmitVertex ( temp void)
+0:11 Function Definition: main( ( temp void)
+0:11 Function Parameters:
+0:? Sequence
+0:11 move second child to first child ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:11 move second child to first child ( temp 3-element array of uint)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? Sequence
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 direct index ( temp 2-element array of 2-component vector of float)
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( in float ClipDistance)
+0:11 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
+0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
+0:? Linker Objects
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 128
+
+ Capability Geometry
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 4 "main" 44 50 71 75 80
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 Invocations 1
+ ExecutionMode 4 OutputLineStrip
+ ExecutionMode 4 OutputVertices 3
+ Source HLSL 500
+ Name 4 "main"
+ Name 17 "S"
+ MemberName 17(S) 0 "pos"
+ MemberName 17(S) 1 "clip"
+ Name 26 "@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];"
+ Name 22 "pos"
+ Name 23 "VertexID"
+ Name 24 "OutputStream"
+ Name 25 "clip"
+ Name 28 "s"
+ Name 44 "OutputStream.pos"
+ Name 50 "OutputStream.clip"
+ Name 69 "pos"
+ Name 71 "pos"
+ Name 73 "VertexID"
+ Name 75 "VertexID"
+ Name 77 "clip"
+ Name 80 "clip"
+ Name 118 "OutputStream"
+ Name 119 "param"
+ Name 121 "param"
+ Name 123 "param"
+ Name 124 "param"
+ Decorate 44(OutputStream.pos) BuiltIn Position
+ Decorate 50(OutputStream.clip) BuiltIn ClipDistance
+ Decorate 71(pos) BuiltIn Position
+ Decorate 75(VertexID) Location 0
+ Decorate 80(clip) BuiltIn ClipDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 3
+ 10: TypeArray 7(fvec4) 9
+ 11: TypePointer Function 10
+ 12: TypeArray 8(int) 9
+ 13: TypePointer Function 12
+ 14: TypeVector 6(float) 2
+ 15: 8(int) Constant 2
+ 16: TypeArray 14(fvec2) 15
+ 17(S): TypeStruct 7(fvec4) 16
+ 18: TypePointer Function 17(S)
+ 19: TypeArray 16 9
+ 20: TypePointer Function 19
+ 21: TypeFunction 2 11(ptr) 13(ptr) 18(ptr) 20(ptr)
+ 29: TypeInt 32 1
+ 30: 29(int) Constant 0
+ 31: TypePointer Function 7(fvec4)
+ 35: 29(int) Constant 1
+ 36: TypePointer Function 14(fvec2)
+ 43: TypePointer Output 7(fvec4)
+44(OutputStream.pos): 43(ptr) Variable Output
+ 47: 8(int) Constant 4
+ 48: TypeArray 6(float) 47
+ 49: TypePointer Output 48
+50(OutputStream.clip): 49(ptr) Variable Output
+ 51: 8(int) Constant 0
+ 52: TypePointer Function 6(float)
+ 55: TypePointer Output 6(float)
+ 57: 8(int) Constant 1
+ 61: 29(int) Constant 2
+ 65: 29(int) Constant 3
+ 70: TypePointer Input 10
+ 71(pos): 70(ptr) Variable Input
+ 74: TypePointer Input 12
+ 75(VertexID): 74(ptr) Variable Input
+ 78: TypeArray 48 9
+ 79: TypePointer Input 78
+ 80(clip): 79(ptr) Variable Input
+ 81: TypePointer Input 6(float)
+ 4(main): 2 Function None 3
+ 5: Label
+ 69(pos): 11(ptr) Variable Function
+ 73(VertexID): 13(ptr) Variable Function
+ 77(clip): 20(ptr) Variable Function
+118(OutputStream): 18(ptr) Variable Function
+ 119(param): 11(ptr) Variable Function
+ 121(param): 13(ptr) Variable Function
+ 123(param): 18(ptr) Variable Function
+ 124(param): 20(ptr) Variable Function
+ 72: 10 Load 71(pos)
+ Store 69(pos) 72
+ 76: 12 Load 75(VertexID)
+ Store 73(VertexID) 76
+ 82: 81(ptr) AccessChain 80(clip) 30 30
+ 83: 6(float) Load 82
+ 84: 52(ptr) AccessChain 77(clip) 30 30 51
+ Store 84 83
+ 85: 81(ptr) AccessChain 80(clip) 30 35
+ 86: 6(float) Load 85
+ 87: 52(ptr) AccessChain 77(clip) 30 30 57
+ Store 87 86
+ 88: 81(ptr) AccessChain 80(clip) 30 61
+ 89: 6(float) Load 88
+ 90: 52(ptr) AccessChain 77(clip) 30 35 51
+ Store 90 89
+ 91: 81(ptr) AccessChain 80(clip) 30 65
+ 92: 6(float) Load 91
+ 93: 52(ptr) AccessChain 77(clip) 30 35 57
+ Store 93 92
+ 94: 81(ptr) AccessChain 80(clip) 35 30
+ 95: 6(float) Load 94
+ 96: 52(ptr) AccessChain 77(clip) 35 30 51
+ Store 96 95
+ 97: 81(ptr) AccessChain 80(clip) 35 35
+ 98: 6(float) Load 97
+ 99: 52(ptr) AccessChain 77(clip) 35 30 57
+ Store 99 98
+ 100: 81(ptr) AccessChain 80(clip) 35 61
+ 101: 6(float) Load 100
+ 102: 52(ptr) AccessChain 77(clip) 35 35 51
+ Store 102 101
+ 103: 81(ptr) AccessChain 80(clip) 35 65
+ 104: 6(float) Load 103
+ 105: 52(ptr) AccessChain 77(clip) 35 35 57
+ Store 105 104
+ 106: 81(ptr) AccessChain 80(clip) 61 30
+ 107: 6(float) Load 106
+ 108: 52(ptr) AccessChain 77(clip) 61 30 51
+ Store 108 107
+ 109: 81(ptr) AccessChain 80(clip) 61 35
+ 110: 6(float) Load 109
+ 111: 52(ptr) AccessChain 77(clip) 61 30 57
+ Store 111 110
+ 112: 81(ptr) AccessChain 80(clip) 61 61
+ 113: 6(float) Load 112
+ 114: 52(ptr) AccessChain 77(clip) 61 35 51
+ Store 114 113
+ 115: 81(ptr) AccessChain 80(clip) 61 65
+ 116: 6(float) Load 115
+ 117: 52(ptr) AccessChain 77(clip) 61 35 57
+ Store 117 116
+ 120: 10 Load 69(pos)
+ Store 119(param) 120
+ 122: 12 Load 73(VertexID)
+ Store 121(param) 122
+ 125: 19 Load 77(clip)
+ Store 124(param) 125
+ 126: 2 FunctionCall 26(@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];) 119(param) 121(param) 123(param) 124(param)
+ 127: 17(S) Load 123(param)
+ Store 118(OutputStream) 127
+ Return
+ FunctionEnd
+26(@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];): 2 Function None 21
+ 22(pos): 11(ptr) FunctionParameter
+ 23(VertexID): 13(ptr) FunctionParameter
+24(OutputStream): 18(ptr) FunctionParameter
+ 25(clip): 20(ptr) FunctionParameter
+ 27: Label
+ 28(s): 18(ptr) Variable Function
+ 32: 31(ptr) AccessChain 22(pos) 30
+ 33: 7(fvec4) Load 32
+ 34: 31(ptr) AccessChain 28(s) 30
+ Store 34 33
+ 37: 36(ptr) AccessChain 25(clip) 30 30
+ 38: 14(fvec2) Load 37
+ 39: 36(ptr) AccessChain 28(s) 35 30
+ Store 39 38
+ 40: 36(ptr) AccessChain 25(clip) 30 35
+ 41: 14(fvec2) Load 40
+ 42: 36(ptr) AccessChain 28(s) 35 35
+ Store 42 41
+ 45: 31(ptr) AccessChain 28(s) 30
+ 46: 7(fvec4) Load 45
+ Store 44(OutputStream.pos) 46
+ 53: 52(ptr) AccessChain 28(s) 35 30 51
+ 54: 6(float) Load 53
+ 56: 55(ptr) AccessChain 50(OutputStream.clip) 30
+ Store 56 54
+ 58: 52(ptr) AccessChain 28(s) 35 30 57
+ 59: 6(float) Load 58
+ 60: 55(ptr) AccessChain 50(OutputStream.clip) 35
+ Store 60 59
+ 62: 52(ptr) AccessChain 28(s) 35 35 51
+ 63: 6(float) Load 62
+ 64: 55(ptr) AccessChain 50(OutputStream.clip) 61
+ Store 64 63
+ 66: 52(ptr) AccessChain 28(s) 35 35 57
+ 67: 6(float) Load 66
+ 68: 55(ptr) AccessChain 50(OutputStream.clip) 65
+ Store 68 67
+ EmitVertex
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out
new file mode 100644
index 00000000000..9afe2eda4cc
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out
@@ -0,0 +1,561 @@
+hlsl.clipdistance-2.vert
+Shader version: 500
+0:? Sequence
+0:4 Function Definition: @main(vf4;vf2[2];vf2[2]; ( temp void)
+0:4 Function Parameters:
+0:4 'pos' ( out 4-component vector of float)
+0:4 'clip' ( out 2-element array of 2-component vector of float)
+0:4 'cull' ( out 2-element array of 2-component vector of float)
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:5 'pos' ( out 4-component vector of float)
+0:5 Constant:
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:6 move second child to first child ( temp float)
+0:6 direct index ( temp float)
+0:6 direct index ( temp 2-component vector of float)
+0:6 'clip' ( out 2-element array of 2-component vector of float)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0.500000
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 direct index ( temp 2-component vector of float)
+0:7 'clip' ( out 2-element array of 2-component vector of float)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0.600000
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 direct index ( temp 2-component vector of float)
+0:8 'clip' ( out 2-element array of 2-component vector of float)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 0.700000
+0:9 move second child to first child ( temp float)
+0:9 direct index ( temp float)
+0:9 direct index ( temp 2-component vector of float)
+0:9 'clip' ( out 2-element array of 2-component vector of float)
+0:9 Constant:
+0:9 1 (const int)
+0:9 Constant:
+0:9 1 (const int)
+0:9 Constant:
+0:9 0.800000
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 'cull' ( out 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0.525000
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 2-component vector of float)
+0:12 'cull' ( out 2-element array of 2-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0.625000
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:13 'cull' ( out 2-element array of 2-component vector of float)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0.725000
+0:14 move second child to first child ( temp float)
+0:14 direct index ( temp float)
+0:14 direct index ( temp 2-component vector of float)
+0:14 'cull' ( out 2-element array of 2-component vector of float)
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 0.825000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 Function Call: @main(vf4;vf2[2];vf2[2]; ( temp void)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float ClipDistance)
+0:? 'clip' ( out 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float ClipDistance)
+0:? 'clip' ( out 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float ClipDistance)
+0:? 'clip' ( out 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 2 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float ClipDistance)
+0:? 'clip' ( out 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 3 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float CullDistance)
+0:? 'cull' ( out 4-element array of float CullDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float CullDistance)
+0:? 'cull' ( out 4-element array of float CullDistance)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float CullDistance)
+0:? 'cull' ( out 4-element array of float CullDistance)
+0:4 Constant:
+0:4 2 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float CullDistance)
+0:? 'cull' ( out 4-element array of float CullDistance)
+0:4 Constant:
+0:4 3 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:? Linker Objects
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'clip' ( out 4-element array of float ClipDistance)
+0:? 'cull' ( out 4-element array of float CullDistance)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:4 Function Definition: @main(vf4;vf2[2];vf2[2]; ( temp void)
+0:4 Function Parameters:
+0:4 'pos' ( out 4-component vector of float)
+0:4 'clip' ( out 2-element array of 2-component vector of float)
+0:4 'cull' ( out 2-element array of 2-component vector of float)
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:5 'pos' ( out 4-component vector of float)
+0:5 Constant:
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:6 move second child to first child ( temp float)
+0:6 direct index ( temp float)
+0:6 direct index ( temp 2-component vector of float)
+0:6 'clip' ( out 2-element array of 2-component vector of float)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0.500000
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 direct index ( temp 2-component vector of float)
+0:7 'clip' ( out 2-element array of 2-component vector of float)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0.600000
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 direct index ( temp 2-component vector of float)
+0:8 'clip' ( out 2-element array of 2-component vector of float)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 0.700000
+0:9 move second child to first child ( temp float)
+0:9 direct index ( temp float)
+0:9 direct index ( temp 2-component vector of float)
+0:9 'clip' ( out 2-element array of 2-component vector of float)
+0:9 Constant:
+0:9 1 (const int)
+0:9 Constant:
+0:9 1 (const int)
+0:9 Constant:
+0:9 0.800000
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 'cull' ( out 2-element array of 2-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0.525000
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 2-component vector of float)
+0:12 'cull' ( out 2-element array of 2-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0.625000
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:13 'cull' ( out 2-element array of 2-component vector of float)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0.725000
+0:14 move second child to first child ( temp float)
+0:14 direct index ( temp float)
+0:14 direct index ( temp 2-component vector of float)
+0:14 'cull' ( out 2-element array of 2-component vector of float)
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 0.825000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 Function Call: @main(vf4;vf2[2];vf2[2]; ( temp void)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float ClipDistance)
+0:? 'clip' ( out 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float ClipDistance)
+0:? 'clip' ( out 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float ClipDistance)
+0:? 'clip' ( out 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 2 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float ClipDistance)
+0:? 'clip' ( out 4-element array of float ClipDistance)
+0:4 Constant:
+0:4 3 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'clip' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float CullDistance)
+0:? 'cull' ( out 4-element array of float CullDistance)
+0:4 Constant:
+0:4 0 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float CullDistance)
+0:? 'cull' ( out 4-element array of float CullDistance)
+0:4 Constant:
+0:4 1 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float CullDistance)
+0:? 'cull' ( out 4-element array of float CullDistance)
+0:4 Constant:
+0:4 2 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 move second child to first child ( temp float)
+0:4 direct index ( out float CullDistance)
+0:? 'cull' ( out 4-element array of float CullDistance)
+0:4 Constant:
+0:4 3 (const int)
+0:4 direct index ( temp float)
+0:4 direct index ( temp 2-component vector of float)
+0:? 'cull' ( temp 2-element array of 2-component vector of float)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:? Linker Objects
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'clip' ( out 4-element array of float ClipDistance)
+0:? 'cull' ( out 4-element array of float CullDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 89
+
+ Capability Shader
+ Capability ClipDistance
+ Capability CullDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 55 60 76
+ Source HLSL 500
+ Name 4 "main"
+ Name 18 "@main(vf4;vf2[2];vf2[2];"
+ Name 15 "pos"
+ Name 16 "clip"
+ Name 17 "cull"
+ Name 44 "pos"
+ Name 45 "clip"
+ Name 46 "cull"
+ Name 47 "param"
+ Name 48 "param"
+ Name 49 "param"
+ Name 55 "pos"
+ Name 60 "clip"
+ Name 76 "cull"
+ Decorate 55(pos) BuiltIn Position
+ Decorate 60(clip) BuiltIn ClipDistance
+ Decorate 76(cull) BuiltIn CullDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeVector 6(float) 2
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 2
+ 12: TypeArray 9(fvec2) 11
+ 13: TypePointer Function 12
+ 14: TypeFunction 2 8(ptr) 13(ptr) 13(ptr)
+ 20: 6(float) Constant 1065353216
+ 21: 7(fvec4) ConstantComposite 20 20 20 20
+ 22: TypeInt 32 1
+ 23: 22(int) Constant 0
+ 24: 6(float) Constant 1056964608
+ 25: 10(int) Constant 0
+ 26: TypePointer Function 6(float)
+ 28: 6(float) Constant 1058642330
+ 29: 10(int) Constant 1
+ 31: 22(int) Constant 1
+ 32: 6(float) Constant 1060320051
+ 34: 6(float) Constant 1061997773
+ 36: 6(float) Constant 1057384038
+ 38: 6(float) Constant 1059061760
+ 40: 6(float) Constant 1060739482
+ 42: 6(float) Constant 1062417203
+ 54: TypePointer Output 7(fvec4)
+ 55(pos): 54(ptr) Variable Output
+ 57: 10(int) Constant 4
+ 58: TypeArray 6(float) 57
+ 59: TypePointer Output 58
+ 60(clip): 59(ptr) Variable Output
+ 63: TypePointer Output 6(float)
+ 68: 22(int) Constant 2
+ 72: 22(int) Constant 3
+ 76(cull): 59(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 44(pos): 8(ptr) Variable Function
+ 45(clip): 13(ptr) Variable Function
+ 46(cull): 13(ptr) Variable Function
+ 47(param): 8(ptr) Variable Function
+ 48(param): 13(ptr) Variable Function
+ 49(param): 13(ptr) Variable Function
+ 50: 2 FunctionCall 18(@main(vf4;vf2[2];vf2[2];) 47(param) 48(param) 49(param)
+ 51: 7(fvec4) Load 47(param)
+ Store 44(pos) 51
+ 52: 12 Load 48(param)
+ Store 45(clip) 52
+ 53: 12 Load 49(param)
+ Store 46(cull) 53
+ 56: 7(fvec4) Load 44(pos)
+ Store 55(pos) 56
+ 61: 26(ptr) AccessChain 45(clip) 23 25
+ 62: 6(float) Load 61
+ 64: 63(ptr) AccessChain 60(clip) 23
+ Store 64 62
+ 65: 26(ptr) AccessChain 45(clip) 23 29
+ 66: 6(float) Load 65
+ 67: 63(ptr) AccessChain 60(clip) 31
+ Store 67 66
+ 69: 26(ptr) AccessChain 45(clip) 31 25
+ 70: 6(float) Load 69
+ 71: 63(ptr) AccessChain 60(clip) 68
+ Store 71 70
+ 73: 26(ptr) AccessChain 45(clip) 31 29
+ 74: 6(float) Load 73
+ 75: 63(ptr) AccessChain 60(clip) 72
+ Store 75 74
+ 77: 26(ptr) AccessChain 46(cull) 23 25
+ 78: 6(float) Load 77
+ 79: 63(ptr) AccessChain 76(cull) 23
+ Store 79 78
+ 80: 26(ptr) AccessChain 46(cull) 23 29
+ 81: 6(float) Load 80
+ 82: 63(ptr) AccessChain 76(cull) 31
+ Store 82 81
+ 83: 26(ptr) AccessChain 46(cull) 31 25
+ 84: 6(float) Load 83
+ 85: 63(ptr) AccessChain 76(cull) 68
+ Store 85 84
+ 86: 26(ptr) AccessChain 46(cull) 31 29
+ 87: 6(float) Load 86
+ 88: 63(ptr) AccessChain 76(cull) 72
+ Store 88 87
+ Return
+ FunctionEnd
+18(@main(vf4;vf2[2];vf2[2];): 2 Function None 14
+ 15(pos): 8(ptr) FunctionParameter
+ 16(clip): 13(ptr) FunctionParameter
+ 17(cull): 13(ptr) FunctionParameter
+ 19: Label
+ Store 15(pos) 21
+ 27: 26(ptr) AccessChain 16(clip) 23 25
+ Store 27 24
+ 30: 26(ptr) AccessChain 16(clip) 23 29
+ Store 30 28
+ 33: 26(ptr) AccessChain 16(clip) 31 25
+ Store 33 32
+ 35: 26(ptr) AccessChain 16(clip) 31 29
+ Store 35 34
+ 37: 26(ptr) AccessChain 17(cull) 23 25
+ Store 37 36
+ 39: 26(ptr) AccessChain 17(cull) 23 29
+ Store 39 38
+ 41: 26(ptr) AccessChain 17(cull) 31 25
+ Store 41 40
+ 43: 26(ptr) AccessChain 17(cull) 31 29
+ Store 43 42
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.frag.out
new file mode 100644
index 00000000000..1faa87e8a21
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.frag.out
@@ -0,0 +1,190 @@
+hlsl.clipdistance-3.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: @main(vf4;f1[2];f1[2]; ( temp 4-component vector of float)
+0:4 Function Parameters:
+0:4 'pos' ( in 4-component vector of float)
+0:4 'clip' ( in 2-element array of float)
+0:4 'cull' ( in 2-element array of float)
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 add ( temp 4-component vector of float)
+0:5 add ( temp 4-component vector of float)
+0:5 'pos' ( in 4-component vector of float)
+0:5 direct index ( temp float)
+0:5 'clip' ( in 2-element array of float)
+0:5 Constant:
+0:5 0 (const int)
+0:5 direct index ( temp float)
+0:5 'cull' ( in 2-element array of float)
+0:5 Constant:
+0:5 0 (const int)
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:4 move second child to first child ( temp 2-element array of float)
+0:? 'clip' ( temp 2-element array of float)
+0:? 'clip' ( in 2-element array of float ClipDistance)
+0:? Sequence
+0:4 move second child to first child ( temp 2-element array of float)
+0:? 'cull' ( temp 2-element array of float)
+0:? 'cull' ( in 2-element array of float CullDistance)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4 Function Call: @main(vf4;f1[2];f1[2]; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp 2-element array of float)
+0:? 'cull' ( temp 2-element array of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? 'clip' ( in 2-element array of float ClipDistance)
+0:? 'cull' ( in 2-element array of float CullDistance)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: @main(vf4;f1[2];f1[2]; ( temp 4-component vector of float)
+0:4 Function Parameters:
+0:4 'pos' ( in 4-component vector of float)
+0:4 'clip' ( in 2-element array of float)
+0:4 'cull' ( in 2-element array of float)
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 add ( temp 4-component vector of float)
+0:5 add ( temp 4-component vector of float)
+0:5 'pos' ( in 4-component vector of float)
+0:5 direct index ( temp float)
+0:5 'clip' ( in 2-element array of float)
+0:5 Constant:
+0:5 0 (const int)
+0:5 direct index ( temp float)
+0:5 'cull' ( in 2-element array of float)
+0:5 Constant:
+0:5 0 (const int)
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:4 move second child to first child ( temp 2-element array of float)
+0:? 'clip' ( temp 2-element array of float)
+0:? 'clip' ( in 2-element array of float ClipDistance)
+0:? Sequence
+0:4 move second child to first child ( temp 2-element array of float)
+0:? 'cull' ( temp 2-element array of float)
+0:? 'cull' ( in 2-element array of float CullDistance)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4 Function Call: @main(vf4;f1[2];f1[2]; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp 2-element array of float)
+0:? 'cull' ( temp 2-element array of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:? 'clip' ( in 2-element array of float ClipDistance)
+0:? 'cull' ( in 2-element array of float CullDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 53
+
+ Capability Shader
+ Capability ClipDistance
+ Capability CullDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 35 39 42 45
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 17 "@main(vf4;f1[2];f1[2];"
+ Name 14 "pos"
+ Name 15 "clip"
+ Name 16 "cull"
+ Name 33 "pos"
+ Name 35 "pos"
+ Name 37 "clip"
+ Name 39 "clip"
+ Name 41 "cull"
+ Name 42 "cull"
+ Name 45 "@entryPointOutput"
+ Name 46 "param"
+ Name 48 "param"
+ Name 50 "param"
+ Decorate 35(pos) BuiltIn FragCoord
+ Decorate 39(clip) BuiltIn ClipDistance
+ Decorate 42(cull) BuiltIn CullDistance
+ Decorate 45(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeInt 32 0
+ 10: 9(int) Constant 2
+ 11: TypeArray 6(float) 10
+ 12: TypePointer Function 11
+ 13: TypeFunction 7(fvec4) 8(ptr) 12(ptr) 12(ptr)
+ 20: TypeInt 32 1
+ 21: 20(int) Constant 0
+ 22: TypePointer Function 6(float)
+ 34: TypePointer Input 7(fvec4)
+ 35(pos): 34(ptr) Variable Input
+ 38: TypePointer Input 11
+ 39(clip): 38(ptr) Variable Input
+ 42(cull): 38(ptr) Variable Input
+ 44: TypePointer Output 7(fvec4)
+45(@entryPointOutput): 44(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 33(pos): 8(ptr) Variable Function
+ 37(clip): 12(ptr) Variable Function
+ 41(cull): 12(ptr) Variable Function
+ 46(param): 8(ptr) Variable Function
+ 48(param): 12(ptr) Variable Function
+ 50(param): 12(ptr) Variable Function
+ 36: 7(fvec4) Load 35(pos)
+ Store 33(pos) 36
+ 40: 11 Load 39(clip)
+ Store 37(clip) 40
+ 43: 11 Load 42(cull)
+ Store 41(cull) 43
+ 47: 7(fvec4) Load 33(pos)
+ Store 46(param) 47
+ 49: 11 Load 37(clip)
+ Store 48(param) 49
+ 51: 11 Load 41(cull)
+ Store 50(param) 51
+ 52: 7(fvec4) FunctionCall 17(@main(vf4;f1[2];f1[2];) 46(param) 48(param) 50(param)
+ Store 45(@entryPointOutput) 52
+ Return
+ FunctionEnd
+17(@main(vf4;f1[2];f1[2];): 7(fvec4) Function None 13
+ 14(pos): 8(ptr) FunctionParameter
+ 15(clip): 12(ptr) FunctionParameter
+ 16(cull): 12(ptr) FunctionParameter
+ 18: Label
+ 19: 7(fvec4) Load 14(pos)
+ 23: 22(ptr) AccessChain 15(clip) 21
+ 24: 6(float) Load 23
+ 25: 7(fvec4) CompositeConstruct 24 24 24 24
+ 26: 7(fvec4) FAdd 19 25
+ 27: 22(ptr) AccessChain 16(cull) 21
+ 28: 6(float) Load 27
+ 29: 7(fvec4) CompositeConstruct 28 28 28 28
+ 30: 7(fvec4) FAdd 26 29
+ ReturnValue 30
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.geom.out
new file mode 100644
index 00000000000..c99a9576596
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.geom.out
@@ -0,0 +1,830 @@
+hlsl.clipdistance-3.geom
+Shader version: 500
+invocations = -1
+max_vertices = 3
+input primitive = triangles
+output primitive = line_strip
+0:? Sequence
+0:12 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void)
+0:12 Function Parameters:
+0:12 'pos' ( in 3-element array of 4-component vector of float)
+0:12 'VertexID' ( in 3-element array of uint)
+0:12 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:12 'clip' ( in 3-element array of 4-component vector of float)
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 pos: direct index for structure ( temp 4-component vector of float)
+0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:15 Constant:
+0:15 0 (const int)
+0:15 direct index ( temp 4-component vector of float)
+0:15 'pos' ( in 3-element array of 4-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:16 clip0: direct index for structure ( temp 2-component vector of float)
+0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:16 Constant:
+0:16 1 (const int)
+0:16 vector swizzle ( temp 2-component vector of float)
+0:16 direct index ( temp 4-component vector of float)
+0:16 'clip' ( in 3-element array of 4-component vector of float)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:17 move second child to first child ( temp 2-component vector of float)
+0:17 clip1: direct index for structure ( temp 2-component vector of float)
+0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:17 Constant:
+0:17 2 (const int)
+0:17 vector swizzle ( temp 2-component vector of float)
+0:17 direct index ( temp 4-component vector of float)
+0:17 'clip' ( in 3-element array of 4-component vector of float)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 3 (const int)
+0:19 Sequence
+0:19 Sequence
+0:19 move second child to first child ( temp 4-component vector of float)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:19 pos: direct index for structure ( temp 4-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:19 Constant:
+0:19 0 (const int)
+0:? Sequence
+0:19 move second child to first child ( temp float)
+0:19 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:19 Constant:
+0:19 0 (const int)
+0:19 direct index ( temp float)
+0:19 clip0: direct index for structure ( temp 2-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:19 Constant:
+0:19 1 (const int)
+0:19 Constant:
+0:19 0 (const int)
+0:19 move second child to first child ( temp float)
+0:19 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:19 Constant:
+0:19 1 (const int)
+0:19 direct index ( temp float)
+0:19 clip0: direct index for structure ( temp 2-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:19 Constant:
+0:19 1 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:? Sequence
+0:19 move second child to first child ( temp float)
+0:19 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:19 Constant:
+0:19 2 (const int)
+0:19 direct index ( temp float)
+0:19 clip1: direct index for structure ( temp 2-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 0 (const int)
+0:19 move second child to first child ( temp float)
+0:19 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:19 Constant:
+0:19 3 (const int)
+0:19 direct index ( temp float)
+0:19 clip1: direct index for structure ( temp 2-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 EmitVertex ( temp void)
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:12 move second child to first child ( temp 3-element array of uint)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? Sequence
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:? Linker Objects
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+
+
+Linked geometry stage:
+
+
+Shader version: 500
+invocations = 1
+max_vertices = 3
+input primitive = triangles
+output primitive = line_strip
+0:? Sequence
+0:12 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void)
+0:12 Function Parameters:
+0:12 'pos' ( in 3-element array of 4-component vector of float)
+0:12 'VertexID' ( in 3-element array of uint)
+0:12 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:12 'clip' ( in 3-element array of 4-component vector of float)
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 pos: direct index for structure ( temp 4-component vector of float)
+0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:15 Constant:
+0:15 0 (const int)
+0:15 direct index ( temp 4-component vector of float)
+0:15 'pos' ( in 3-element array of 4-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:16 clip0: direct index for structure ( temp 2-component vector of float)
+0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:16 Constant:
+0:16 1 (const int)
+0:16 vector swizzle ( temp 2-component vector of float)
+0:16 direct index ( temp 4-component vector of float)
+0:16 'clip' ( in 3-element array of 4-component vector of float)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:17 move second child to first child ( temp 2-component vector of float)
+0:17 clip1: direct index for structure ( temp 2-component vector of float)
+0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:17 Constant:
+0:17 2 (const int)
+0:17 vector swizzle ( temp 2-component vector of float)
+0:17 direct index ( temp 4-component vector of float)
+0:17 'clip' ( in 3-element array of 4-component vector of float)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 3 (const int)
+0:19 Sequence
+0:19 Sequence
+0:19 move second child to first child ( temp 4-component vector of float)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:19 pos: direct index for structure ( temp 4-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:19 Constant:
+0:19 0 (const int)
+0:? Sequence
+0:19 move second child to first child ( temp float)
+0:19 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:19 Constant:
+0:19 0 (const int)
+0:19 direct index ( temp float)
+0:19 clip0: direct index for structure ( temp 2-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:19 Constant:
+0:19 1 (const int)
+0:19 Constant:
+0:19 0 (const int)
+0:19 move second child to first child ( temp float)
+0:19 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:19 Constant:
+0:19 1 (const int)
+0:19 direct index ( temp float)
+0:19 clip0: direct index for structure ( temp 2-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:19 Constant:
+0:19 1 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:? Sequence
+0:19 move second child to first child ( temp float)
+0:19 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:19 Constant:
+0:19 2 (const int)
+0:19 direct index ( temp float)
+0:19 clip1: direct index for structure ( temp 2-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 0 (const int)
+0:19 move second child to first child ( temp float)
+0:19 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:19 Constant:
+0:19 3 (const int)
+0:19 direct index ( temp float)
+0:19 clip1: direct index for structure ( temp 2-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 EmitVertex ( temp void)
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:12 move second child to first child ( temp 3-element array of uint)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? Sequence
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 2 (const int)
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 direct index ( temp 4-component vector of float)
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 direct index ( in float ClipDistance)
+0:12 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:12 Constant:
+0:12 2 (const int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:? 'clip' ( temp 3-element array of 4-component vector of float)
+0:? Linker Objects
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 127
+
+ Capability Geometry
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 4 "main" 43 49 69 73 78
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 Invocations 1
+ ExecutionMode 4 OutputLineStrip
+ ExecutionMode 4 OutputVertices 3
+ Source HLSL 500
+ Name 4 "main"
+ Name 15 "S"
+ MemberName 15(S) 0 "pos"
+ MemberName 15(S) 1 "clip0"
+ MemberName 15(S) 2 "clip1"
+ Name 22 "@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];"
+ Name 18 "pos"
+ Name 19 "VertexID"
+ Name 20 "OutputStream"
+ Name 21 "clip"
+ Name 24 "s"
+ Name 43 "OutputStream.pos"
+ Name 49 "OutputStream.clip1"
+ Name 67 "pos"
+ Name 69 "pos"
+ Name 71 "VertexID"
+ Name 73 "VertexID"
+ Name 75 "clip"
+ Name 78 "clip"
+ Name 117 "OutputStream"
+ Name 118 "param"
+ Name 120 "param"
+ Name 122 "param"
+ Name 123 "param"
+ Decorate 43(OutputStream.pos) BuiltIn Position
+ Decorate 49(OutputStream.clip1) BuiltIn ClipDistance
+ Decorate 69(pos) BuiltIn Position
+ Decorate 73(VertexID) Location 0
+ Decorate 78(clip) BuiltIn ClipDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 3
+ 10: TypeArray 7(fvec4) 9
+ 11: TypePointer Function 10
+ 12: TypeArray 8(int) 9
+ 13: TypePointer Function 12
+ 14: TypeVector 6(float) 2
+ 15(S): TypeStruct 7(fvec4) 14(fvec2) 14(fvec2)
+ 16: TypePointer Function 15(S)
+ 17: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 11(ptr)
+ 25: TypeInt 32 1
+ 26: 25(int) Constant 0
+ 27: TypePointer Function 7(fvec4)
+ 31: 25(int) Constant 1
+ 35: TypePointer Function 14(fvec2)
+ 37: 25(int) Constant 2
+ 42: TypePointer Output 7(fvec4)
+43(OutputStream.pos): 42(ptr) Variable Output
+ 46: 8(int) Constant 4
+ 47: TypeArray 6(float) 46
+ 48: TypePointer Output 47
+49(OutputStream.clip1): 48(ptr) Variable Output
+ 50: 8(int) Constant 0
+ 51: TypePointer Function 6(float)
+ 54: TypePointer Output 6(float)
+ 56: 8(int) Constant 1
+ 63: 25(int) Constant 3
+ 68: TypePointer Input 10
+ 69(pos): 68(ptr) Variable Input
+ 72: TypePointer Input 12
+ 73(VertexID): 72(ptr) Variable Input
+ 76: TypeArray 47 9
+ 77: TypePointer Input 76
+ 78(clip): 77(ptr) Variable Input
+ 79: TypePointer Input 6(float)
+ 88: 8(int) Constant 2
+ 4(main): 2 Function None 3
+ 5: Label
+ 67(pos): 11(ptr) Variable Function
+ 71(VertexID): 13(ptr) Variable Function
+ 75(clip): 11(ptr) Variable Function
+117(OutputStream): 16(ptr) Variable Function
+ 118(param): 11(ptr) Variable Function
+ 120(param): 13(ptr) Variable Function
+ 122(param): 16(ptr) Variable Function
+ 123(param): 11(ptr) Variable Function
+ 70: 10 Load 69(pos)
+ Store 67(pos) 70
+ 74: 12 Load 73(VertexID)
+ Store 71(VertexID) 74
+ 80: 79(ptr) AccessChain 78(clip) 26 26
+ 81: 6(float) Load 80
+ 82: 51(ptr) AccessChain 75(clip) 26 50
+ Store 82 81
+ 83: 79(ptr) AccessChain 78(clip) 26 31
+ 84: 6(float) Load 83
+ 85: 51(ptr) AccessChain 75(clip) 26 56
+ Store 85 84
+ 86: 79(ptr) AccessChain 78(clip) 26 37
+ 87: 6(float) Load 86
+ 89: 51(ptr) AccessChain 75(clip) 26 88
+ Store 89 87
+ 90: 79(ptr) AccessChain 78(clip) 26 63
+ 91: 6(float) Load 90
+ 92: 51(ptr) AccessChain 75(clip) 26 9
+ Store 92 91
+ 93: 79(ptr) AccessChain 78(clip) 31 26
+ 94: 6(float) Load 93
+ 95: 51(ptr) AccessChain 75(clip) 31 50
+ Store 95 94
+ 96: 79(ptr) AccessChain 78(clip) 31 31
+ 97: 6(float) Load 96
+ 98: 51(ptr) AccessChain 75(clip) 31 56
+ Store 98 97
+ 99: 79(ptr) AccessChain 78(clip) 31 37
+ 100: 6(float) Load 99
+ 101: 51(ptr) AccessChain 75(clip) 31 88
+ Store 101 100
+ 102: 79(ptr) AccessChain 78(clip) 31 63
+ 103: 6(float) Load 102
+ 104: 51(ptr) AccessChain 75(clip) 31 9
+ Store 104 103
+ 105: 79(ptr) AccessChain 78(clip) 37 26
+ 106: 6(float) Load 105
+ 107: 51(ptr) AccessChain 75(clip) 37 50
+ Store 107 106
+ 108: 79(ptr) AccessChain 78(clip) 37 31
+ 109: 6(float) Load 108
+ 110: 51(ptr) AccessChain 75(clip) 37 56
+ Store 110 109
+ 111: 79(ptr) AccessChain 78(clip) 37 37
+ 112: 6(float) Load 111
+ 113: 51(ptr) AccessChain 75(clip) 37 88
+ Store 113 112
+ 114: 79(ptr) AccessChain 78(clip) 37 63
+ 115: 6(float) Load 114
+ 116: 51(ptr) AccessChain 75(clip) 37 9
+ Store 116 115
+ 119: 10 Load 67(pos)
+ Store 118(param) 119
+ 121: 12 Load 71(VertexID)
+ Store 120(param) 121
+ 124: 10 Load 75(clip)
+ Store 123(param) 124
+ 125: 2 FunctionCall 22(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];) 118(param) 120(param) 122(param) 123(param)
+ 126: 15(S) Load 122(param)
+ Store 117(OutputStream) 126
+ Return
+ FunctionEnd
+22(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];): 2 Function None 17
+ 18(pos): 11(ptr) FunctionParameter
+ 19(VertexID): 13(ptr) FunctionParameter
+20(OutputStream): 16(ptr) FunctionParameter
+ 21(clip): 11(ptr) FunctionParameter
+ 23: Label
+ 24(s): 16(ptr) Variable Function
+ 28: 27(ptr) AccessChain 18(pos) 26
+ 29: 7(fvec4) Load 28
+ 30: 27(ptr) AccessChain 24(s) 26
+ Store 30 29
+ 32: 27(ptr) AccessChain 21(clip) 26
+ 33: 7(fvec4) Load 32
+ 34: 14(fvec2) VectorShuffle 33 33 0 1
+ 36: 35(ptr) AccessChain 24(s) 31
+ Store 36 34
+ 38: 27(ptr) AccessChain 21(clip) 26
+ 39: 7(fvec4) Load 38
+ 40: 14(fvec2) VectorShuffle 39 39 2 3
+ 41: 35(ptr) AccessChain 24(s) 37
+ Store 41 40
+ 44: 27(ptr) AccessChain 24(s) 26
+ 45: 7(fvec4) Load 44
+ Store 43(OutputStream.pos) 45
+ 52: 51(ptr) AccessChain 24(s) 31 50
+ 53: 6(float) Load 52
+ 55: 54(ptr) AccessChain 49(OutputStream.clip1) 26
+ Store 55 53
+ 57: 51(ptr) AccessChain 24(s) 31 56
+ 58: 6(float) Load 57
+ 59: 54(ptr) AccessChain 49(OutputStream.clip1) 31
+ Store 59 58
+ 60: 51(ptr) AccessChain 24(s) 37 50
+ 61: 6(float) Load 60
+ 62: 54(ptr) AccessChain 49(OutputStream.clip1) 37
+ Store 62 61
+ 64: 51(ptr) AccessChain 24(s) 37 56
+ 65: 6(float) Load 64
+ 66: 54(ptr) AccessChain 49(OutputStream.clip1) 63
+ Store 66 65
+ EmitVertex
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.vert.out
new file mode 100644
index 00000000000..25ca231507d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.vert.out
@@ -0,0 +1,229 @@
+hlsl.clipdistance-3.vert
+Shader version: 500
+0:? Sequence
+0:4 Function Definition: @main(vf4;f1[2];f1[2]; ( temp void)
+0:4 Function Parameters:
+0:4 'pos' ( out 4-component vector of float)
+0:4 'clip' ( out 2-element array of float)
+0:4 'cull' ( out 2-element array of float)
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:5 'pos' ( out 4-component vector of float)
+0:5 Constant:
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:6 move second child to first child ( temp float)
+0:6 direct index ( temp float)
+0:6 'clip' ( out 2-element array of float)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0.500000
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 'clip' ( out 2-element array of float)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0.600000
+0:9 move second child to first child ( temp float)
+0:9 direct index ( temp float)
+0:9 'cull' ( out 2-element array of float)
+0:9 Constant:
+0:9 0 (const int)
+0:9 Constant:
+0:9 0.525000
+0:10 move second child to first child ( temp float)
+0:10 direct index ( temp float)
+0:10 'cull' ( out 2-element array of float)
+0:10 Constant:
+0:10 1 (const int)
+0:10 Constant:
+0:10 0.625000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 Function Call: @main(vf4;f1[2];f1[2]; ( temp void)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp 2-element array of float)
+0:? 'cull' ( temp 2-element array of float)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Sequence
+0:4 move second child to first child ( temp 2-element array of float)
+0:? 'clip' ( out 2-element array of float ClipDistance)
+0:? 'clip' ( temp 2-element array of float)
+0:? Sequence
+0:4 move second child to first child ( temp 2-element array of float)
+0:? 'cull' ( out 2-element array of float CullDistance)
+0:? 'cull' ( temp 2-element array of float)
+0:? Linker Objects
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'clip' ( out 2-element array of float ClipDistance)
+0:? 'cull' ( out 2-element array of float CullDistance)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:4 Function Definition: @main(vf4;f1[2];f1[2]; ( temp void)
+0:4 Function Parameters:
+0:4 'pos' ( out 4-component vector of float)
+0:4 'clip' ( out 2-element array of float)
+0:4 'cull' ( out 2-element array of float)
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:5 'pos' ( out 4-component vector of float)
+0:5 Constant:
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:5 1.000000
+0:6 move second child to first child ( temp float)
+0:6 direct index ( temp float)
+0:6 'clip' ( out 2-element array of float)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0.500000
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 'clip' ( out 2-element array of float)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0.600000
+0:9 move second child to first child ( temp float)
+0:9 direct index ( temp float)
+0:9 'cull' ( out 2-element array of float)
+0:9 Constant:
+0:9 0 (const int)
+0:9 Constant:
+0:9 0.525000
+0:10 move second child to first child ( temp float)
+0:10 direct index ( temp float)
+0:10 'cull' ( out 2-element array of float)
+0:10 Constant:
+0:10 1 (const int)
+0:10 Constant:
+0:10 0.625000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 Function Call: @main(vf4;f1[2];f1[2]; ( temp void)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'clip' ( temp 2-element array of float)
+0:? 'cull' ( temp 2-element array of float)
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Sequence
+0:4 move second child to first child ( temp 2-element array of float)
+0:? 'clip' ( out 2-element array of float ClipDistance)
+0:? 'clip' ( temp 2-element array of float)
+0:? Sequence
+0:4 move second child to first child ( temp 2-element array of float)
+0:? 'cull' ( out 2-element array of float CullDistance)
+0:? 'cull' ( temp 2-element array of float)
+0:? Linker Objects
+0:? 'pos' ( out 4-component vector of float Position)
+0:? 'clip' ( out 2-element array of float ClipDistance)
+0:? 'cull' ( out 2-element array of float CullDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 51
+
+ Capability Shader
+ Capability ClipDistance
+ Capability CullDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 44 47 49
+ Source HLSL 500
+ Name 4 "main"
+ Name 17 "@main(vf4;f1[2];f1[2];"
+ Name 14 "pos"
+ Name 15 "clip"
+ Name 16 "cull"
+ Name 33 "pos"
+ Name 34 "clip"
+ Name 35 "cull"
+ Name 36 "param"
+ Name 37 "param"
+ Name 38 "param"
+ Name 44 "pos"
+ Name 47 "clip"
+ Name 49 "cull"
+ Decorate 44(pos) BuiltIn Position
+ Decorate 47(clip) BuiltIn ClipDistance
+ Decorate 49(cull) BuiltIn CullDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeInt 32 0
+ 10: 9(int) Constant 2
+ 11: TypeArray 6(float) 10
+ 12: TypePointer Function 11
+ 13: TypeFunction 2 8(ptr) 12(ptr) 12(ptr)
+ 19: 6(float) Constant 1065353216
+ 20: 7(fvec4) ConstantComposite 19 19 19 19
+ 21: TypeInt 32 1
+ 22: 21(int) Constant 0
+ 23: 6(float) Constant 1056964608
+ 24: TypePointer Function 6(float)
+ 26: 21(int) Constant 1
+ 27: 6(float) Constant 1058642330
+ 29: 6(float) Constant 1057384038
+ 31: 6(float) Constant 1059061760
+ 43: TypePointer Output 7(fvec4)
+ 44(pos): 43(ptr) Variable Output
+ 46: TypePointer Output 11
+ 47(clip): 46(ptr) Variable Output
+ 49(cull): 46(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 33(pos): 8(ptr) Variable Function
+ 34(clip): 12(ptr) Variable Function
+ 35(cull): 12(ptr) Variable Function
+ 36(param): 8(ptr) Variable Function
+ 37(param): 12(ptr) Variable Function
+ 38(param): 12(ptr) Variable Function
+ 39: 2 FunctionCall 17(@main(vf4;f1[2];f1[2];) 36(param) 37(param) 38(param)
+ 40: 7(fvec4) Load 36(param)
+ Store 33(pos) 40
+ 41: 11 Load 37(param)
+ Store 34(clip) 41
+ 42: 11 Load 38(param)
+ Store 35(cull) 42
+ 45: 7(fvec4) Load 33(pos)
+ Store 44(pos) 45
+ 48: 11 Load 34(clip)
+ Store 47(clip) 48
+ 50: 11 Load 35(cull)
+ Store 49(cull) 50
+ Return
+ FunctionEnd
+17(@main(vf4;f1[2];f1[2];): 2 Function None 13
+ 14(pos): 8(ptr) FunctionParameter
+ 15(clip): 12(ptr) FunctionParameter
+ 16(cull): 12(ptr) FunctionParameter
+ 18: Label
+ Store 14(pos) 20
+ 25: 24(ptr) AccessChain 15(clip) 22
+ Store 25 23
+ 28: 24(ptr) AccessChain 15(clip) 26
+ Store 28 27
+ 30: 24(ptr) AccessChain 16(cull) 22
+ Store 30 29
+ 32: 24(ptr) AccessChain 16(cull) 26
+ Store 32 31
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out
new file mode 100644
index 00000000000..b52d917d657
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out
@@ -0,0 +1,262 @@
+hlsl.clipdistance-4.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(struct-VS_OUTPUT-vf4-vf41; ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:7 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 add ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:8 Constant:
+0:8 0 (const int)
+0:8 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:8 Constant:
+0:8 1 (const int)
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:7 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:7 Constant:
+0:7 0 (const int)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 0 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 1 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 2 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 2 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 3 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 3 (const int)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main(struct-VS_OUTPUT-vf4-vf41; ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(struct-VS_OUTPUT-vf4-vf41; ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:7 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 add ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:8 Constant:
+0:8 0 (const int)
+0:8 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:8 Constant:
+0:8 1 (const int)
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:7 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:7 Constant:
+0:7 0 (const int)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 0 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 1 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 2 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 2 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 3 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 3 (const int)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main(struct-VS_OUTPUT-vf4-vf41; ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 57
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 24 32 54
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "VS_OUTPUT"
+ MemberName 8(VS_OUTPUT) 0 "Position"
+ MemberName 8(VS_OUTPUT) 1 "ClipRect"
+ Name 11 "@main(struct-VS_OUTPUT-vf4-vf41;"
+ Name 10 "v"
+ Name 22 "v"
+ Name 24 "v.Position"
+ Name 32 "v.ClipRect"
+ Name 54 "@entryPointOutput"
+ Decorate 24(v.Position) BuiltIn FragCoord
+ Decorate 32(v.ClipRect) BuiltIn ClipDistance
+ Decorate 54(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8(VS_OUTPUT): TypeStruct 7(fvec4) 7(fvec4)
+ 9: TypeFunction 7(fvec4) 8(VS_OUTPUT)
+ 13: TypeInt 32 1
+ 14: 13(int) Constant 0
+ 16: 13(int) Constant 1
+ 21: TypePointer Function 8(VS_OUTPUT)
+ 23: TypePointer Input 7(fvec4)
+ 24(v.Position): 23(ptr) Variable Input
+ 26: TypePointer Function 7(fvec4)
+ 28: TypeInt 32 0
+ 29: 28(int) Constant 4
+ 30: TypeArray 6(float) 29
+ 31: TypePointer Input 30
+ 32(v.ClipRect): 31(ptr) Variable Input
+ 33: TypePointer Input 6(float)
+ 36: 28(int) Constant 0
+ 37: TypePointer Function 6(float)
+ 41: 28(int) Constant 1
+ 43: 13(int) Constant 2
+ 46: 28(int) Constant 2
+ 48: 13(int) Constant 3
+ 51: 28(int) Constant 3
+ 53: TypePointer Output 7(fvec4)
+54(@entryPointOutput): 53(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 22(v): 21(ptr) Variable Function
+ 25: 7(fvec4) Load 24(v.Position)
+ 27: 26(ptr) AccessChain 22(v) 14
+ Store 27 25
+ 34: 33(ptr) AccessChain 32(v.ClipRect) 14
+ 35: 6(float) Load 34
+ 38: 37(ptr) AccessChain 22(v) 16 36
+ Store 38 35
+ 39: 33(ptr) AccessChain 32(v.ClipRect) 16
+ 40: 6(float) Load 39
+ 42: 37(ptr) AccessChain 22(v) 16 41
+ Store 42 40
+ 44: 33(ptr) AccessChain 32(v.ClipRect) 43
+ 45: 6(float) Load 44
+ 47: 37(ptr) AccessChain 22(v) 16 46
+ Store 47 45
+ 49: 33(ptr) AccessChain 32(v.ClipRect) 48
+ 50: 6(float) Load 49
+ 52: 37(ptr) AccessChain 22(v) 16 51
+ Store 52 50
+ 55:8(VS_OUTPUT) Load 22(v)
+ 56: 7(fvec4) FunctionCall 11(@main(struct-VS_OUTPUT-vf4-vf41;) 55
+ Store 54(@entryPointOutput) 56
+ Return
+ FunctionEnd
+11(@main(struct-VS_OUTPUT-vf4-vf41;): 7(fvec4) Function None 9
+ 10(v):8(VS_OUTPUT) FunctionParameter
+ 12: Label
+ 15: 7(fvec4) CompositeExtract 10(v) 0
+ 17: 7(fvec4) CompositeExtract 10(v) 1
+ 18: 7(fvec4) FAdd 15 17
+ ReturnValue 18
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.geom.out
new file mode 100644
index 00000000000..9518823959e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.geom.out
@@ -0,0 +1,819 @@
+hlsl.clipdistance-4.geom
+Shader version: 500
+invocations = -1
+max_vertices = 3
+input primitive = triangles
+output primitive = line_strip
+0:? Sequence
+0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void)
+0:13 Function Parameters:
+0:13 'pos' ( in 3-element array of 4-component vector of float)
+0:13 'VertexID' ( in 3-element array of uint)
+0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:13 'clip0' ( in 3-element array of 2-component vector of float)
+0:13 'clip1' ( in 3-element array of 2-component vector of float)
+0:? Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 pos: direct index for structure ( temp 4-component vector of float)
+0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:16 Constant:
+0:16 0 (const int)
+0:16 direct index ( temp 4-component vector of float)
+0:16 'pos' ( in 3-element array of 4-component vector of float)
+0:16 Constant:
+0:16 0 (const int)
+0:17 move second child to first child ( temp 2-component vector of float)
+0:17 clip0: direct index for structure ( temp 2-component vector of float)
+0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:17 Constant:
+0:17 1 (const int)
+0:17 direct index ( temp 2-component vector of float)
+0:17 'clip0' ( in 3-element array of 2-component vector of float)
+0:17 Constant:
+0:17 0 (const int)
+0:18 move second child to first child ( temp 2-component vector of float)
+0:18 clip1: direct index for structure ( temp 2-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:18 Constant:
+0:18 2 (const int)
+0:18 direct index ( temp 2-component vector of float)
+0:18 'clip1' ( in 3-element array of 2-component vector of float)
+0:18 Constant:
+0:18 0 (const int)
+0:20 Sequence
+0:20 Sequence
+0:20 move second child to first child ( temp 4-component vector of float)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:20 pos: direct index for structure ( temp 4-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:20 Constant:
+0:20 0 (const int)
+0:? Sequence
+0:20 move second child to first child ( temp float)
+0:20 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:20 Constant:
+0:20 0 (const int)
+0:20 direct index ( temp float)
+0:20 clip0: direct index for structure ( temp 2-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 move second child to first child ( temp float)
+0:20 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:20 Constant:
+0:20 1 (const int)
+0:20 direct index ( temp float)
+0:20 clip0: direct index for structure ( temp 2-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:? Sequence
+0:20 move second child to first child ( temp float)
+0:20 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:20 Constant:
+0:20 2 (const int)
+0:20 direct index ( temp float)
+0:20 clip1: direct index for structure ( temp 2-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:20 Constant:
+0:20 2 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 move second child to first child ( temp float)
+0:20 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:20 Constant:
+0:20 3 (const int)
+0:20 direct index ( temp float)
+0:20 clip1: direct index for structure ( temp 2-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:20 Constant:
+0:20 2 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 EmitVertex ( temp void)
+0:13 Function Definition: main( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:13 move second child to first child ( temp 3-element array of uint)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? Sequence
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 3 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:? Sequence
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 3 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 3 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 3 (const int)
+0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:? Linker Objects
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+
+
+Linked geometry stage:
+
+
+Shader version: 500
+invocations = 1
+max_vertices = 3
+input primitive = triangles
+output primitive = line_strip
+0:? Sequence
+0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void)
+0:13 Function Parameters:
+0:13 'pos' ( in 3-element array of 4-component vector of float)
+0:13 'VertexID' ( in 3-element array of uint)
+0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:13 'clip0' ( in 3-element array of 2-component vector of float)
+0:13 'clip1' ( in 3-element array of 2-component vector of float)
+0:? Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 pos: direct index for structure ( temp 4-component vector of float)
+0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:16 Constant:
+0:16 0 (const int)
+0:16 direct index ( temp 4-component vector of float)
+0:16 'pos' ( in 3-element array of 4-component vector of float)
+0:16 Constant:
+0:16 0 (const int)
+0:17 move second child to first child ( temp 2-component vector of float)
+0:17 clip0: direct index for structure ( temp 2-component vector of float)
+0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:17 Constant:
+0:17 1 (const int)
+0:17 direct index ( temp 2-component vector of float)
+0:17 'clip0' ( in 3-element array of 2-component vector of float)
+0:17 Constant:
+0:17 0 (const int)
+0:18 move second child to first child ( temp 2-component vector of float)
+0:18 clip1: direct index for structure ( temp 2-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:18 Constant:
+0:18 2 (const int)
+0:18 direct index ( temp 2-component vector of float)
+0:18 'clip1' ( in 3-element array of 2-component vector of float)
+0:18 Constant:
+0:18 0 (const int)
+0:20 Sequence
+0:20 Sequence
+0:20 move second child to first child ( temp 4-component vector of float)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:20 pos: direct index for structure ( temp 4-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:20 Constant:
+0:20 0 (const int)
+0:? Sequence
+0:20 move second child to first child ( temp float)
+0:20 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:20 Constant:
+0:20 0 (const int)
+0:20 direct index ( temp float)
+0:20 clip0: direct index for structure ( temp 2-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 move second child to first child ( temp float)
+0:20 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:20 Constant:
+0:20 1 (const int)
+0:20 direct index ( temp float)
+0:20 clip0: direct index for structure ( temp 2-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:? Sequence
+0:20 move second child to first child ( temp float)
+0:20 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:20 Constant:
+0:20 2 (const int)
+0:20 direct index ( temp float)
+0:20 clip1: direct index for structure ( temp 2-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:20 Constant:
+0:20 2 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 move second child to first child ( temp float)
+0:20 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+0:20 Constant:
+0:20 3 (const int)
+0:20 direct index ( temp float)
+0:20 clip1: direct index for structure ( temp 2-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:20 Constant:
+0:20 2 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 EmitVertex ( temp void)
+0:13 Function Definition: main( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:13 move second child to first child ( temp 3-element array of uint)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? Sequence
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 3 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:? Sequence
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 3 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 3 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 direct index ( temp 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 direct index ( in float ClipDistance)
+0:13 direct index ( in 4-element array of float ClipDistance)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 3 (const int)
+0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void)
+0:? 'pos' ( temp 3-element array of 4-component vector of float)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
+0:? 'clip0' ( temp 3-element array of 2-component vector of float)
+0:? 'clip1' ( temp 3-element array of 2-component vector of float)
+0:? Linker Objects
+0:? 'pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'VertexID' (layout( location=0) in 3-element array of uint)
+0:? 'OutputStream.pos' ( out 4-component vector of float Position)
+0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
+0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 130
+
+ Capability Geometry
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 4 "main" 44 50 70 74 79
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 Invocations 1
+ ExecutionMode 4 OutputLineStrip
+ ExecutionMode 4 OutputVertices 3
+ Source HLSL 500
+ Name 4 "main"
+ Name 15 "S"
+ MemberName 15(S) 0 "pos"
+ MemberName 15(S) 1 "clip0"
+ MemberName 15(S) 2 "clip1"
+ Name 25 "@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];"
+ Name 20 "pos"
+ Name 21 "VertexID"
+ Name 22 "OutputStream"
+ Name 23 "clip0"
+ Name 24 "clip1"
+ Name 27 "s"
+ Name 44 "OutputStream.pos"
+ Name 50 "OutputStream.clip1"
+ Name 68 "pos"
+ Name 70 "pos"
+ Name 72 "VertexID"
+ Name 74 "VertexID"
+ Name 76 "clip0"
+ Name 79 "clip0"
+ Name 99 "clip1"
+ Name 118 "OutputStream"
+ Name 119 "param"
+ Name 121 "param"
+ Name 123 "param"
+ Name 124 "param"
+ Name 126 "param"
+ Decorate 44(OutputStream.pos) BuiltIn Position
+ Decorate 50(OutputStream.clip1) BuiltIn ClipDistance
+ Decorate 70(pos) BuiltIn Position
+ Decorate 74(VertexID) Location 0
+ Decorate 79(clip0) BuiltIn ClipDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 3
+ 10: TypeArray 7(fvec4) 9
+ 11: TypePointer Function 10
+ 12: TypeArray 8(int) 9
+ 13: TypePointer Function 12
+ 14: TypeVector 6(float) 2
+ 15(S): TypeStruct 7(fvec4) 14(fvec2) 14(fvec2)
+ 16: TypePointer Function 15(S)
+ 17: TypeArray 14(fvec2) 9
+ 18: TypePointer Function 17
+ 19: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 18(ptr) 18(ptr)
+ 28: TypeInt 32 1
+ 29: 28(int) Constant 0
+ 30: TypePointer Function 7(fvec4)
+ 34: 28(int) Constant 1
+ 35: TypePointer Function 14(fvec2)
+ 39: 28(int) Constant 2
+ 43: TypePointer Output 7(fvec4)
+44(OutputStream.pos): 43(ptr) Variable Output
+ 47: 8(int) Constant 4
+ 48: TypeArray 6(float) 47
+ 49: TypePointer Output 48
+50(OutputStream.clip1): 49(ptr) Variable Output
+ 51: 8(int) Constant 0
+ 52: TypePointer Function 6(float)
+ 55: TypePointer Output 6(float)
+ 57: 8(int) Constant 1
+ 64: 28(int) Constant 3
+ 69: TypePointer Input 10
+ 70(pos): 69(ptr) Variable Input
+ 73: TypePointer Input 12
+ 74(VertexID): 73(ptr) Variable Input
+ 77: TypeArray 48 9
+ 78: TypePointer Input 77
+ 79(clip0): 78(ptr) Variable Input
+ 80: TypePointer Input 6(float)
+ 4(main): 2 Function None 3
+ 5: Label
+ 68(pos): 11(ptr) Variable Function
+ 72(VertexID): 13(ptr) Variable Function
+ 76(clip0): 18(ptr) Variable Function
+ 99(clip1): 18(ptr) Variable Function
+118(OutputStream): 16(ptr) Variable Function
+ 119(param): 11(ptr) Variable Function
+ 121(param): 13(ptr) Variable Function
+ 123(param): 16(ptr) Variable Function
+ 124(param): 18(ptr) Variable Function
+ 126(param): 18(ptr) Variable Function
+ 71: 10 Load 70(pos)
+ Store 68(pos) 71
+ 75: 12 Load 74(VertexID)
+ Store 72(VertexID) 75
+ 81: 80(ptr) AccessChain 79(clip0) 29 29
+ 82: 6(float) Load 81
+ 83: 52(ptr) AccessChain 76(clip0) 29 51
+ Store 83 82
+ 84: 80(ptr) AccessChain 79(clip0) 29 34
+ 85: 6(float) Load 84
+ 86: 52(ptr) AccessChain 76(clip0) 29 57
+ Store 86 85
+ 87: 80(ptr) AccessChain 79(clip0) 29 39
+ 88: 6(float) Load 87
+ 89: 52(ptr) AccessChain 76(clip0) 34 51
+ Store 89 88
+ 90: 80(ptr) AccessChain 79(clip0) 29 64
+ 91: 6(float) Load 90
+ 92: 52(ptr) AccessChain 76(clip0) 34 57
+ Store 92 91
+ 93: 80(ptr) AccessChain 79(clip0) 34 29
+ 94: 6(float) Load 93
+ 95: 52(ptr) AccessChain 76(clip0) 39 51
+ Store 95 94
+ 96: 80(ptr) AccessChain 79(clip0) 34 34
+ 97: 6(float) Load 96
+ 98: 52(ptr) AccessChain 76(clip0) 39 57
+ Store 98 97
+ 100: 80(ptr) AccessChain 79(clip0) 29 39
+ 101: 6(float) Load 100
+ 102: 52(ptr) AccessChain 99(clip1) 29 51
+ Store 102 101
+ 103: 80(ptr) AccessChain 79(clip0) 29 64
+ 104: 6(float) Load 103
+ 105: 52(ptr) AccessChain 99(clip1) 29 57
+ Store 105 104
+ 106: 80(ptr) AccessChain 79(clip0) 34 39
+ 107: 6(float) Load 106
+ 108: 52(ptr) AccessChain 99(clip1) 34 51
+ Store 108 107
+ 109: 80(ptr) AccessChain 79(clip0) 34 64
+ 110: 6(float) Load 109
+ 111: 52(ptr) AccessChain 99(clip1) 34 57
+ Store 111 110
+ 112: 80(ptr) AccessChain 79(clip0) 39 39
+ 113: 6(float) Load 112
+ 114: 52(ptr) AccessChain 99(clip1) 39 51
+ Store 114 113
+ 115: 80(ptr) AccessChain 79(clip0) 39 64
+ 116: 6(float) Load 115
+ 117: 52(ptr) AccessChain 99(clip1) 39 57
+ Store 117 116
+ 120: 10 Load 68(pos)
+ Store 119(param) 120
+ 122: 12 Load 72(VertexID)
+ Store 121(param) 122
+ 125: 17 Load 76(clip0)
+ Store 124(param) 125
+ 127: 17 Load 99(clip1)
+ Store 126(param) 127
+ 128: 2 FunctionCall 25(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];) 119(param) 121(param) 123(param) 124(param) 126(param)
+ 129: 15(S) Load 123(param)
+ Store 118(OutputStream) 129
+ Return
+ FunctionEnd
+25(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];): 2 Function None 19
+ 20(pos): 11(ptr) FunctionParameter
+ 21(VertexID): 13(ptr) FunctionParameter
+22(OutputStream): 16(ptr) FunctionParameter
+ 23(clip0): 18(ptr) FunctionParameter
+ 24(clip1): 18(ptr) FunctionParameter
+ 26: Label
+ 27(s): 16(ptr) Variable Function
+ 31: 30(ptr) AccessChain 20(pos) 29
+ 32: 7(fvec4) Load 31
+ 33: 30(ptr) AccessChain 27(s) 29
+ Store 33 32
+ 36: 35(ptr) AccessChain 23(clip0) 29
+ 37: 14(fvec2) Load 36
+ 38: 35(ptr) AccessChain 27(s) 34
+ Store 38 37
+ 40: 35(ptr) AccessChain 24(clip1) 29
+ 41: 14(fvec2) Load 40
+ 42: 35(ptr) AccessChain 27(s) 39
+ Store 42 41
+ 45: 30(ptr) AccessChain 27(s) 29
+ 46: 7(fvec4) Load 45
+ Store 44(OutputStream.pos) 46
+ 53: 52(ptr) AccessChain 27(s) 34 51
+ 54: 6(float) Load 53
+ 56: 55(ptr) AccessChain 50(OutputStream.clip1) 29
+ Store 56 54
+ 58: 52(ptr) AccessChain 27(s) 34 57
+ 59: 6(float) Load 58
+ 60: 55(ptr) AccessChain 50(OutputStream.clip1) 34
+ Store 60 59
+ 61: 52(ptr) AccessChain 27(s) 39 51
+ 62: 6(float) Load 61
+ 63: 55(ptr) AccessChain 50(OutputStream.clip1) 39
+ Store 63 62
+ 65: 52(ptr) AccessChain 27(s) 39 57
+ 66: 6(float) Load 65
+ 67: 55(ptr) AccessChain 50(OutputStream.clip1) 64
+ Store 67 66
+ EmitVertex
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out
new file mode 100644
index 00000000000..575f7d176be
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out
@@ -0,0 +1,382 @@
+hlsl.clipdistance-4.vert
+Shader version: 500
+0:? Sequence
+0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Function Parameters:
+0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position})
+0:? Sequence
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 Position: direct index for structure ( temp 4-component vector of float)
+0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:15 move second child to first child ( temp float)
+0:15 direct index ( temp float)
+0:15 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 1.000000
+0:16 move second child to first child ( temp float)
+0:16 direct index ( temp float)
+0:16 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2.000000
+0:17 move second child to first child ( temp float)
+0:17 direct index ( temp float)
+0:17 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 3.000000
+0:18 move second child to first child ( temp float)
+0:18 direct index ( temp float)
+0:18 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 3 (const int)
+0:18 Constant:
+0:18 4.000000
+0:20 Branch: Return with expression
+0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Function Definition: main( ( temp void)
+0:11 Function Parameters:
+0:? Sequence
+0:11 Sequence
+0:11 move second child to first child ( temp 4-component vector of float)
+0:11 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position})
+0:11 Constant:
+0:11 0 (const int)
+0:? 'v.Position' (layout( location=0) in 4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:? 'v' ( temp structure{ temp 4-component vector of float Position})
+0:11 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:11 Position: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Constant:
+0:11 0 (const int)
+0:? Sequence
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( temp float)
+0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( temp float)
+0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 direct index ( temp float)
+0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 3 (const int)
+0:11 direct index ( temp float)
+0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? 'v.Position' (layout( location=0) in 4-component vector of float)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Function Parameters:
+0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position})
+0:? Sequence
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 Position: direct index for structure ( temp 4-component vector of float)
+0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:15 move second child to first child ( temp float)
+0:15 direct index ( temp float)
+0:15 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 1.000000
+0:16 move second child to first child ( temp float)
+0:16 direct index ( temp float)
+0:16 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2.000000
+0:17 move second child to first child ( temp float)
+0:17 direct index ( temp float)
+0:17 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 3.000000
+0:18 move second child to first child ( temp float)
+0:18 direct index ( temp float)
+0:18 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 3 (const int)
+0:18 Constant:
+0:18 4.000000
+0:20 Branch: Return with expression
+0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Function Definition: main( ( temp void)
+0:11 Function Parameters:
+0:? Sequence
+0:11 Sequence
+0:11 move second child to first child ( temp 4-component vector of float)
+0:11 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position})
+0:11 Constant:
+0:11 0 (const int)
+0:? 'v.Position' (layout( location=0) in 4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:? 'v' ( temp structure{ temp 4-component vector of float Position})
+0:11 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:11 Position: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Constant:
+0:11 0 (const int)
+0:? Sequence
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( temp float)
+0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( temp float)
+0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 direct index ( temp float)
+0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 2 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 3 (const int)
+0:11 direct index ( temp float)
+0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 3 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? 'v.Position' (layout( location=0) in 4-component vector of float)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 72
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 43 50 56
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "VS_INPUT"
+ MemberName 8(VS_INPUT) 0 "Position"
+ Name 9 "VS_OUTPUT"
+ MemberName 9(VS_OUTPUT) 0 "Position"
+ MemberName 9(VS_OUTPUT) 1 "ClipRect"
+ Name 12 "@main(struct-VS_INPUT-vf41;"
+ Name 11 "v"
+ Name 15 "Output"
+ Name 41 "v"
+ Name 43 "v.Position"
+ Name 46 "flattenTemp"
+ Name 50 "@entryPointOutput.Position"
+ Name 56 "@entryPointOutput.ClipRect"
+ Decorate 43(v.Position) Location 0
+ Decorate 50(@entryPointOutput.Position) BuiltIn Position
+ Decorate 56(@entryPointOutput.ClipRect) BuiltIn ClipDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8(VS_INPUT): TypeStruct 7(fvec4)
+ 9(VS_OUTPUT): TypeStruct 7(fvec4) 7(fvec4)
+ 10: TypeFunction 9(VS_OUTPUT) 8(VS_INPUT)
+ 14: TypePointer Function 9(VS_OUTPUT)
+ 16: TypeInt 32 1
+ 17: 16(int) Constant 0
+ 18: 6(float) Constant 0
+ 19: 7(fvec4) ConstantComposite 18 18 18 18
+ 20: TypePointer Function 7(fvec4)
+ 22: 16(int) Constant 1
+ 23: 6(float) Constant 1065353216
+ 24: TypeInt 32 0
+ 25: 24(int) Constant 0
+ 26: TypePointer Function 6(float)
+ 28: 6(float) Constant 1073741824
+ 29: 24(int) Constant 1
+ 31: 6(float) Constant 1077936128
+ 32: 24(int) Constant 2
+ 34: 6(float) Constant 1082130432
+ 35: 24(int) Constant 3
+ 40: TypePointer Function 8(VS_INPUT)
+ 42: TypePointer Input 7(fvec4)
+ 43(v.Position): 42(ptr) Variable Input
+ 49: TypePointer Output 7(fvec4)
+50(@entryPointOutput.Position): 49(ptr) Variable Output
+ 53: 24(int) Constant 4
+ 54: TypeArray 6(float) 53
+ 55: TypePointer Output 54
+56(@entryPointOutput.ClipRect): 55(ptr) Variable Output
+ 59: TypePointer Output 6(float)
+ 64: 16(int) Constant 2
+ 68: 16(int) Constant 3
+ 4(main): 2 Function None 3
+ 5: Label
+ 41(v): 40(ptr) Variable Function
+ 46(flattenTemp): 14(ptr) Variable Function
+ 44: 7(fvec4) Load 43(v.Position)
+ 45: 20(ptr) AccessChain 41(v) 17
+ Store 45 44
+ 47: 8(VS_INPUT) Load 41(v)
+ 48:9(VS_OUTPUT) FunctionCall 12(@main(struct-VS_INPUT-vf41;) 47
+ Store 46(flattenTemp) 48
+ 51: 20(ptr) AccessChain 46(flattenTemp) 17
+ 52: 7(fvec4) Load 51
+ Store 50(@entryPointOutput.Position) 52
+ 57: 26(ptr) AccessChain 46(flattenTemp) 22 25
+ 58: 6(float) Load 57
+ 60: 59(ptr) AccessChain 56(@entryPointOutput.ClipRect) 17
+ Store 60 58
+ 61: 26(ptr) AccessChain 46(flattenTemp) 22 29
+ 62: 6(float) Load 61
+ 63: 59(ptr) AccessChain 56(@entryPointOutput.ClipRect) 22
+ Store 63 62
+ 65: 26(ptr) AccessChain 46(flattenTemp) 22 32
+ 66: 6(float) Load 65
+ 67: 59(ptr) AccessChain 56(@entryPointOutput.ClipRect) 64
+ Store 67 66
+ 69: 26(ptr) AccessChain 46(flattenTemp) 22 35
+ 70: 6(float) Load 69
+ 71: 59(ptr) AccessChain 56(@entryPointOutput.ClipRect) 68
+ Store 71 70
+ Return
+ FunctionEnd
+12(@main(struct-VS_INPUT-vf41;):9(VS_OUTPUT) Function None 10
+ 11(v): 8(VS_INPUT) FunctionParameter
+ 13: Label
+ 15(Output): 14(ptr) Variable Function
+ 21: 20(ptr) AccessChain 15(Output) 17
+ Store 21 19
+ 27: 26(ptr) AccessChain 15(Output) 22 25
+ Store 27 23
+ 30: 26(ptr) AccessChain 15(Output) 22 29
+ Store 30 28
+ 33: 26(ptr) AccessChain 15(Output) 22 32
+ Store 33 31
+ 36: 26(ptr) AccessChain 15(Output) 22 35
+ Store 36 34
+ 37:9(VS_OUTPUT) Load 15(Output)
+ ReturnValue 37
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out
new file mode 100644
index 00000000000..7a7f9854902
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out
@@ -0,0 +1,325 @@
+hlsl.clipdistance-5.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(struct-VS_OUTPUT-vf4-vf2[2]1; ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:7 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 add ( temp 4-component vector of float)
+0:8 add ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( temp float)
+0:8 direct index ( temp 2-component vector of float)
+0:8 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( temp float)
+0:8 direct index ( temp 2-component vector of float)
+0:8 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:7 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:7 Constant:
+0:7 0 (const int)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 direct index ( temp 2-component vector of float)
+0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 0 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 direct index ( temp 2-component vector of float)
+0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 1 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 direct index ( temp 2-component vector of float)
+0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 2 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 direct index ( temp 2-component vector of float)
+0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 3 (const int)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main(struct-VS_OUTPUT-vf4-vf2[2]1; ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(struct-VS_OUTPUT-vf4-vf2[2]1; ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:7 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 add ( temp 4-component vector of float)
+0:8 add ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( temp float)
+0:8 direct index ( temp 2-component vector of float)
+0:8 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( temp float)
+0:8 direct index ( temp 2-component vector of float)
+0:8 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:8 'v' ( const (read only) structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:7 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:7 Constant:
+0:7 0 (const int)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 direct index ( temp 2-component vector of float)
+0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 0 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 direct index ( temp 2-component vector of float)
+0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 1 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 direct index ( temp 2-component vector of float)
+0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 2 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( temp float)
+0:7 direct index ( temp 2-component vector of float)
+0:7 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:7 direct index ( in float ClipDistance)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 3 (const int)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main(struct-VS_OUTPUT-vf4-vf2[2]1; ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? 'v.ClipRect' ( in 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 62
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 33 40 59
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 12 "VS_OUTPUT"
+ MemberName 12(VS_OUTPUT) 0 "Position"
+ MemberName 12(VS_OUTPUT) 1 "ClipRect"
+ Name 15 "@main(struct-VS_OUTPUT-vf4-vf2[2]1;"
+ Name 14 "v"
+ Name 31 "v"
+ Name 33 "v.Position"
+ Name 40 "v.ClipRect"
+ Name 59 "@entryPointOutput"
+ Decorate 33(v.Position) BuiltIn FragCoord
+ Decorate 40(v.ClipRect) BuiltIn ClipDistance
+ Decorate 59(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 2
+ 9: TypeInt 32 0
+ 10: 9(int) Constant 2
+ 11: TypeArray 8(fvec2) 10
+ 12(VS_OUTPUT): TypeStruct 7(fvec4) 11
+ 13: TypeFunction 7(fvec4) 12(VS_OUTPUT)
+ 17: TypeInt 32 1
+ 18: 17(int) Constant 0
+ 20: 17(int) Constant 1
+ 21: 9(int) Constant 0
+ 30: TypePointer Function 12(VS_OUTPUT)
+ 32: TypePointer Input 7(fvec4)
+ 33(v.Position): 32(ptr) Variable Input
+ 35: TypePointer Function 7(fvec4)
+ 37: 9(int) Constant 4
+ 38: TypeArray 6(float) 37
+ 39: TypePointer Input 38
+ 40(v.ClipRect): 39(ptr) Variable Input
+ 41: TypePointer Input 6(float)
+ 44: TypePointer Function 6(float)
+ 48: 9(int) Constant 1
+ 50: 17(int) Constant 2
+ 54: 17(int) Constant 3
+ 58: TypePointer Output 7(fvec4)
+59(@entryPointOutput): 58(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 31(v): 30(ptr) Variable Function
+ 34: 7(fvec4) Load 33(v.Position)
+ 36: 35(ptr) AccessChain 31(v) 18
+ Store 36 34
+ 42: 41(ptr) AccessChain 40(v.ClipRect) 18
+ 43: 6(float) Load 42
+ 45: 44(ptr) AccessChain 31(v) 20 18 21
+ Store 45 43
+ 46: 41(ptr) AccessChain 40(v.ClipRect) 20
+ 47: 6(float) Load 46
+ 49: 44(ptr) AccessChain 31(v) 20 18 48
+ Store 49 47
+ 51: 41(ptr) AccessChain 40(v.ClipRect) 50
+ 52: 6(float) Load 51
+ 53: 44(ptr) AccessChain 31(v) 20 20 21
+ Store 53 52
+ 55: 41(ptr) AccessChain 40(v.ClipRect) 54
+ 56: 6(float) Load 55
+ 57: 44(ptr) AccessChain 31(v) 20 20 48
+ Store 57 56
+ 60:12(VS_OUTPUT) Load 31(v)
+ 61: 7(fvec4) FunctionCall 15(@main(struct-VS_OUTPUT-vf4-vf2[2]1;) 60
+ Store 59(@entryPointOutput) 61
+ Return
+ FunctionEnd
+15(@main(struct-VS_OUTPUT-vf4-vf2[2]1;): 7(fvec4) Function None 13
+ 14(v):12(VS_OUTPUT) FunctionParameter
+ 16: Label
+ 19: 7(fvec4) CompositeExtract 14(v) 0
+ 22: 6(float) CompositeExtract 14(v) 1 0 0
+ 23: 7(fvec4) CompositeConstruct 22 22 22 22
+ 24: 7(fvec4) FAdd 19 23
+ 25: 6(float) CompositeExtract 14(v) 1 1 0
+ 26: 7(fvec4) CompositeConstruct 25 25 25 25
+ 27: 7(fvec4) FAdd 24 26
+ ReturnValue 27
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out
new file mode 100644
index 00000000000..5e40f8865d8
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out
@@ -0,0 +1,431 @@
+hlsl.clipdistance-5.vert
+Shader version: 500
+0:? Sequence
+0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Function Parameters:
+0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position})
+0:? Sequence
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 Position: direct index for structure ( temp 4-component vector of float)
+0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:15 move second child to first child ( temp float)
+0:15 direct index ( temp float)
+0:15 direct index ( temp 2-component vector of float)
+0:15 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 1.000000
+0:16 move second child to first child ( temp float)
+0:16 direct index ( temp float)
+0:16 direct index ( temp 2-component vector of float)
+0:16 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2.000000
+0:17 move second child to first child ( temp float)
+0:17 direct index ( temp float)
+0:17 direct index ( temp 2-component vector of float)
+0:17 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 3.000000
+0:18 move second child to first child ( temp float)
+0:18 direct index ( temp float)
+0:18 direct index ( temp 2-component vector of float)
+0:18 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 4.000000
+0:20 Branch: Return with expression
+0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Function Definition: main( ( temp void)
+0:11 Function Parameters:
+0:? Sequence
+0:11 Sequence
+0:11 move second child to first child ( temp 4-component vector of float)
+0:11 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position})
+0:11 Constant:
+0:11 0 (const int)
+0:? 'v.Position' (layout( location=0) in 4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:? 'v' ( temp structure{ temp 4-component vector of float Position})
+0:11 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:11 Position: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Constant:
+0:11 0 (const int)
+0:? Sequence
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 3 (const int)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? 'v.Position' (layout( location=0) in 4-component vector of float)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Function Parameters:
+0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position})
+0:? Sequence
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 Position: direct index for structure ( temp 4-component vector of float)
+0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:15 move second child to first child ( temp float)
+0:15 direct index ( temp float)
+0:15 direct index ( temp 2-component vector of float)
+0:15 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 1.000000
+0:16 move second child to first child ( temp float)
+0:16 direct index ( temp float)
+0:16 direct index ( temp 2-component vector of float)
+0:16 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2.000000
+0:17 move second child to first child ( temp float)
+0:17 direct index ( temp float)
+0:17 direct index ( temp 2-component vector of float)
+0:17 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 3.000000
+0:18 move second child to first child ( temp float)
+0:18 direct index ( temp float)
+0:18 direct index ( temp 2-component vector of float)
+0:18 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 4.000000
+0:20 Branch: Return with expression
+0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Function Definition: main( ( temp void)
+0:11 Function Parameters:
+0:? Sequence
+0:11 Sequence
+0:11 move second child to first child ( temp 4-component vector of float)
+0:11 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position})
+0:11 Constant:
+0:11 0 (const int)
+0:? 'v.Position' (layout( location=0) in 4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:? 'v' ( temp structure{ temp 4-component vector of float Position})
+0:11 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:11 Position: direct index for structure ( temp 4-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Constant:
+0:11 0 (const int)
+0:? Sequence
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 0 (const int)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 2 (const int)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp float)
+0:11 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+0:11 Constant:
+0:11 3 (const int)
+0:11 direct index ( temp float)
+0:11 direct index ( temp 2-component vector of float)
+0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
+0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? 'v.Position' (layout( location=0) in 4-component vector of float)
+0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 73
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 44 51 57
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "VS_INPUT"
+ MemberName 8(VS_INPUT) 0 "Position"
+ Name 13 "VS_OUTPUT"
+ MemberName 13(VS_OUTPUT) 0 "Position"
+ MemberName 13(VS_OUTPUT) 1 "ClipRect"
+ Name 16 "@main(struct-VS_INPUT-vf41;"
+ Name 15 "v"
+ Name 19 "Output"
+ Name 42 "v"
+ Name 44 "v.Position"
+ Name 47 "flattenTemp"
+ Name 51 "@entryPointOutput.Position"
+ Name 57 "@entryPointOutput.ClipRect"
+ Decorate 44(v.Position) Location 0
+ Decorate 51(@entryPointOutput.Position) BuiltIn Position
+ Decorate 57(@entryPointOutput.ClipRect) BuiltIn ClipDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8(VS_INPUT): TypeStruct 7(fvec4)
+ 9: TypeVector 6(float) 2
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 2
+ 12: TypeArray 9(fvec2) 11
+ 13(VS_OUTPUT): TypeStruct 7(fvec4) 12
+ 14: TypeFunction 13(VS_OUTPUT) 8(VS_INPUT)
+ 18: TypePointer Function 13(VS_OUTPUT)
+ 20: TypeInt 32 1
+ 21: 20(int) Constant 0
+ 22: 6(float) Constant 0
+ 23: 7(fvec4) ConstantComposite 22 22 22 22
+ 24: TypePointer Function 7(fvec4)
+ 26: 20(int) Constant 1
+ 27: 6(float) Constant 1065353216
+ 28: 10(int) Constant 0
+ 29: TypePointer Function 6(float)
+ 31: 6(float) Constant 1073741824
+ 32: 10(int) Constant 1
+ 34: 6(float) Constant 1077936128
+ 36: 6(float) Constant 1082130432
+ 41: TypePointer Function 8(VS_INPUT)
+ 43: TypePointer Input 7(fvec4)
+ 44(v.Position): 43(ptr) Variable Input
+ 50: TypePointer Output 7(fvec4)
+51(@entryPointOutput.Position): 50(ptr) Variable Output
+ 54: 10(int) Constant 4
+ 55: TypeArray 6(float) 54
+ 56: TypePointer Output 55
+57(@entryPointOutput.ClipRect): 56(ptr) Variable Output
+ 60: TypePointer Output 6(float)
+ 65: 20(int) Constant 2
+ 69: 20(int) Constant 3
+ 4(main): 2 Function None 3
+ 5: Label
+ 42(v): 41(ptr) Variable Function
+ 47(flattenTemp): 18(ptr) Variable Function
+ 45: 7(fvec4) Load 44(v.Position)
+ 46: 24(ptr) AccessChain 42(v) 21
+ Store 46 45
+ 48: 8(VS_INPUT) Load 42(v)
+ 49:13(VS_OUTPUT) FunctionCall 16(@main(struct-VS_INPUT-vf41;) 48
+ Store 47(flattenTemp) 49
+ 52: 24(ptr) AccessChain 47(flattenTemp) 21
+ 53: 7(fvec4) Load 52
+ Store 51(@entryPointOutput.Position) 53
+ 58: 29(ptr) AccessChain 47(flattenTemp) 26 21 28
+ 59: 6(float) Load 58
+ 61: 60(ptr) AccessChain 57(@entryPointOutput.ClipRect) 21
+ Store 61 59
+ 62: 29(ptr) AccessChain 47(flattenTemp) 26 21 32
+ 63: 6(float) Load 62
+ 64: 60(ptr) AccessChain 57(@entryPointOutput.ClipRect) 26
+ Store 64 63
+ 66: 29(ptr) AccessChain 47(flattenTemp) 26 26 28
+ 67: 6(float) Load 66
+ 68: 60(ptr) AccessChain 57(@entryPointOutput.ClipRect) 65
+ Store 68 67
+ 70: 29(ptr) AccessChain 47(flattenTemp) 26 26 32
+ 71: 6(float) Load 70
+ 72: 60(ptr) AccessChain 57(@entryPointOutput.ClipRect) 69
+ Store 72 71
+ Return
+ FunctionEnd
+16(@main(struct-VS_INPUT-vf41;):13(VS_OUTPUT) Function None 14
+ 15(v): 8(VS_INPUT) FunctionParameter
+ 17: Label
+ 19(Output): 18(ptr) Variable Function
+ 25: 24(ptr) AccessChain 19(Output) 21
+ Store 25 23
+ 30: 29(ptr) AccessChain 19(Output) 26 21 28
+ Store 30 27
+ 33: 29(ptr) AccessChain 19(Output) 26 21 32
+ Store 33 31
+ 35: 29(ptr) AccessChain 19(Output) 26 26 28
+ Store 35 34
+ 37: 29(ptr) AccessChain 19(Output) 26 26 32
+ Store 37 36
+ 38:13(VS_OUTPUT) Load 19(Output)
+ ReturnValue 38
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out
new file mode 100644
index 00000000000..907122d4096
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out
@@ -0,0 +1,399 @@
+hlsl.clipdistance-6.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf4-vf41; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:? Sequence
+0:9 Branch: Return with expression
+0:9 add ( temp 4-component vector of float)
+0:9 add ( temp 4-component vector of float)
+0:9 Position: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 0 (const int)
+0:9 clip0: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 1 (const int)
+0:9 clip1: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 2 (const int)
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 3 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 4 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 5 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 6 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 7 (const int)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf4-vf41; ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf4-vf41; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:? Sequence
+0:9 Branch: Return with expression
+0:9 add ( temp 4-component vector of float)
+0:9 add ( temp 4-component vector of float)
+0:9 Position: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 0 (const int)
+0:9 clip0: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 1 (const int)
+0:9 clip1: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 2 (const int)
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 3 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 4 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 5 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 6 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 7 (const int)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf4-vf41; ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 79
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 31 38 75
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "VS_OUTPUT"
+ MemberName 8(VS_OUTPUT) 0 "Position"
+ MemberName 8(VS_OUTPUT) 1 "clip0"
+ MemberName 8(VS_OUTPUT) 2 "clip1"
+ Name 12 "@main(struct-VS_OUTPUT-vf4-vf4-vf41;"
+ Name 11 "v"
+ Name 29 "v"
+ Name 31 "v.Position"
+ Name 38 "v.clip1"
+ Name 75 "@entryPointOutput"
+ Name 76 "param"
+ Decorate 31(v.Position) BuiltIn FragCoord
+ Decorate 38(v.clip1) BuiltIn ClipDistance
+ Decorate 75(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8(VS_OUTPUT): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4)
+ 9: TypePointer Function 8(VS_OUTPUT)
+ 10: TypeFunction 7(fvec4) 9(ptr)
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: TypePointer Function 7(fvec4)
+ 19: 14(int) Constant 1
+ 23: 14(int) Constant 2
+ 30: TypePointer Input 7(fvec4)
+ 31(v.Position): 30(ptr) Variable Input
+ 34: TypeInt 32 0
+ 35: 34(int) Constant 8
+ 36: TypeArray 6(float) 35
+ 37: TypePointer Input 36
+ 38(v.clip1): 37(ptr) Variable Input
+ 39: TypePointer Input 6(float)
+ 42: 34(int) Constant 0
+ 43: TypePointer Function 6(float)
+ 47: 34(int) Constant 1
+ 51: 34(int) Constant 2
+ 53: 14(int) Constant 3
+ 56: 34(int) Constant 3
+ 58: 14(int) Constant 4
+ 62: 14(int) Constant 5
+ 66: 14(int) Constant 6
+ 70: 14(int) Constant 7
+ 74: TypePointer Output 7(fvec4)
+75(@entryPointOutput): 74(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 29(v): 9(ptr) Variable Function
+ 76(param): 9(ptr) Variable Function
+ 32: 7(fvec4) Load 31(v.Position)
+ 33: 16(ptr) AccessChain 29(v) 15
+ Store 33 32
+ 40: 39(ptr) AccessChain 38(v.clip1) 15
+ 41: 6(float) Load 40
+ 44: 43(ptr) AccessChain 29(v) 19 42
+ Store 44 41
+ 45: 39(ptr) AccessChain 38(v.clip1) 19
+ 46: 6(float) Load 45
+ 48: 43(ptr) AccessChain 29(v) 19 47
+ Store 48 46
+ 49: 39(ptr) AccessChain 38(v.clip1) 23
+ 50: 6(float) Load 49
+ 52: 43(ptr) AccessChain 29(v) 19 51
+ Store 52 50
+ 54: 39(ptr) AccessChain 38(v.clip1) 53
+ 55: 6(float) Load 54
+ 57: 43(ptr) AccessChain 29(v) 19 56
+ Store 57 55
+ 59: 39(ptr) AccessChain 38(v.clip1) 58
+ 60: 6(float) Load 59
+ 61: 43(ptr) AccessChain 29(v) 23 42
+ Store 61 60
+ 63: 39(ptr) AccessChain 38(v.clip1) 62
+ 64: 6(float) Load 63
+ 65: 43(ptr) AccessChain 29(v) 23 47
+ Store 65 64
+ 67: 39(ptr) AccessChain 38(v.clip1) 66
+ 68: 6(float) Load 67
+ 69: 43(ptr) AccessChain 29(v) 23 51
+ Store 69 68
+ 71: 39(ptr) AccessChain 38(v.clip1) 70
+ 72: 6(float) Load 71
+ 73: 43(ptr) AccessChain 29(v) 23 56
+ Store 73 72
+ 77:8(VS_OUTPUT) Load 29(v)
+ Store 76(param) 77
+ 78: 7(fvec4) FunctionCall 12(@main(struct-VS_OUTPUT-vf4-vf4-vf41;) 76(param)
+ Store 75(@entryPointOutput) 78
+ Return
+ FunctionEnd
+12(@main(struct-VS_OUTPUT-vf4-vf4-vf41;): 7(fvec4) Function None 10
+ 11(v): 9(ptr) FunctionParameter
+ 13: Label
+ 17: 16(ptr) AccessChain 11(v) 15
+ 18: 7(fvec4) Load 17
+ 20: 16(ptr) AccessChain 11(v) 19
+ 21: 7(fvec4) Load 20
+ 22: 7(fvec4) FAdd 18 21
+ 24: 16(ptr) AccessChain 11(v) 23
+ 25: 7(fvec4) Load 24
+ 26: 7(fvec4) FAdd 22 25
+ ReturnValue 26
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out
new file mode 100644
index 00000000000..15c987cb3de
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out
@@ -0,0 +1,556 @@
+hlsl.clipdistance-6.vert
+Shader version: 500
+0:? Sequence
+0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 Position: direct index for structure ( temp 4-component vector of float)
+0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 clip0: direct index for structure ( temp 4-component vector of float)
+0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 0.000000
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 clip0: direct index for structure ( temp 4-component vector of float)
+0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1.000000
+0:14 move second child to first child ( temp float)
+0:14 direct index ( temp float)
+0:14 clip0: direct index for structure ( temp 4-component vector of float)
+0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 2 (const int)
+0:14 Constant:
+0:14 2.000000
+0:15 move second child to first child ( temp float)
+0:15 direct index ( temp float)
+0:15 clip0: direct index for structure ( temp 4-component vector of float)
+0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 3 (const int)
+0:15 Constant:
+0:15 3.000000
+0:17 move second child to first child ( temp float)
+0:17 direct index ( temp float)
+0:17 clip1: direct index for structure ( temp 4-component vector of float)
+0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 4.000000
+0:18 move second child to first child ( temp float)
+0:18 direct index ( temp float)
+0:18 clip1: direct index for structure ( temp 4-component vector of float)
+0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:18 Constant:
+0:18 2 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 5.000000
+0:19 move second child to first child ( temp float)
+0:19 direct index ( temp float)
+0:19 clip1: direct index for structure ( temp 4-component vector of float)
+0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 6.000000
+0:20 move second child to first child ( temp float)
+0:20 direct index ( temp float)
+0:20 clip1: direct index for structure ( temp 4-component vector of float)
+0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:20 Constant:
+0:20 2 (const int)
+0:20 Constant:
+0:20 3 (const int)
+0:20 Constant:
+0:20 7.000000
+0:22 Branch: Return with expression
+0:22 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 3 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 4 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 5 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 6 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 7 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 Position: direct index for structure ( temp 4-component vector of float)
+0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 clip0: direct index for structure ( temp 4-component vector of float)
+0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 0.000000
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 clip0: direct index for structure ( temp 4-component vector of float)
+0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1.000000
+0:14 move second child to first child ( temp float)
+0:14 direct index ( temp float)
+0:14 clip0: direct index for structure ( temp 4-component vector of float)
+0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 2 (const int)
+0:14 Constant:
+0:14 2.000000
+0:15 move second child to first child ( temp float)
+0:15 direct index ( temp float)
+0:15 clip0: direct index for structure ( temp 4-component vector of float)
+0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 3 (const int)
+0:15 Constant:
+0:15 3.000000
+0:17 move second child to first child ( temp float)
+0:17 direct index ( temp float)
+0:17 clip1: direct index for structure ( temp 4-component vector of float)
+0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 4.000000
+0:18 move second child to first child ( temp float)
+0:18 direct index ( temp float)
+0:18 clip1: direct index for structure ( temp 4-component vector of float)
+0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:18 Constant:
+0:18 2 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 5.000000
+0:19 move second child to first child ( temp float)
+0:19 direct index ( temp float)
+0:19 clip1: direct index for structure ( temp 4-component vector of float)
+0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 6.000000
+0:20 move second child to first child ( temp float)
+0:20 direct index ( temp float)
+0:20 clip1: direct index for structure ( temp 4-component vector of float)
+0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:20 Constant:
+0:20 2 (const int)
+0:20 Constant:
+0:20 3 (const int)
+0:20 Constant:
+0:20 7.000000
+0:22 Branch: Return with expression
+0:22 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 3 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 4 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 5 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 6 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 7 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 86
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 49 55
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "VS_OUTPUT"
+ MemberName 8(VS_OUTPUT) 0 "Position"
+ MemberName 8(VS_OUTPUT) 1 "clip0"
+ MemberName 8(VS_OUTPUT) 2 "clip1"
+ Name 10 "@main("
+ Name 13 "Output"
+ Name 46 "flattenTemp"
+ Name 49 "@entryPointOutput.Position"
+ Name 55 "@entryPointOutput.clip1"
+ Decorate 49(@entryPointOutput.Position) BuiltIn Position
+ Decorate 55(@entryPointOutput.clip1) BuiltIn ClipDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8(VS_OUTPUT): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4)
+ 9: TypeFunction 8(VS_OUTPUT)
+ 12: TypePointer Function 8(VS_OUTPUT)
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: 6(float) Constant 0
+ 17: 7(fvec4) ConstantComposite 16 16 16 16
+ 18: TypePointer Function 7(fvec4)
+ 20: 14(int) Constant 1
+ 21: TypeInt 32 0
+ 22: 21(int) Constant 0
+ 23: TypePointer Function 6(float)
+ 25: 6(float) Constant 1065353216
+ 26: 21(int) Constant 1
+ 28: 6(float) Constant 1073741824
+ 29: 21(int) Constant 2
+ 31: 6(float) Constant 1077936128
+ 32: 21(int) Constant 3
+ 34: 14(int) Constant 2
+ 35: 6(float) Constant 1082130432
+ 37: 6(float) Constant 1084227584
+ 39: 6(float) Constant 1086324736
+ 41: 6(float) Constant 1088421888
+ 48: TypePointer Output 7(fvec4)
+49(@entryPointOutput.Position): 48(ptr) Variable Output
+ 52: 21(int) Constant 8
+ 53: TypeArray 6(float) 52
+ 54: TypePointer Output 53
+55(@entryPointOutput.clip1): 54(ptr) Variable Output
+ 58: TypePointer Output 6(float)
+ 66: 14(int) Constant 3
+ 70: 14(int) Constant 4
+ 74: 14(int) Constant 5
+ 78: 14(int) Constant 6
+ 82: 14(int) Constant 7
+ 4(main): 2 Function None 3
+ 5: Label
+ 46(flattenTemp): 12(ptr) Variable Function
+ 47:8(VS_OUTPUT) FunctionCall 10(@main()
+ Store 46(flattenTemp) 47
+ 50: 18(ptr) AccessChain 46(flattenTemp) 15
+ 51: 7(fvec4) Load 50
+ Store 49(@entryPointOutput.Position) 51
+ 56: 23(ptr) AccessChain 46(flattenTemp) 20 22
+ 57: 6(float) Load 56
+ 59: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 15
+ Store 59 57
+ 60: 23(ptr) AccessChain 46(flattenTemp) 20 26
+ 61: 6(float) Load 60
+ 62: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 20
+ Store 62 61
+ 63: 23(ptr) AccessChain 46(flattenTemp) 20 29
+ 64: 6(float) Load 63
+ 65: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 34
+ Store 65 64
+ 67: 23(ptr) AccessChain 46(flattenTemp) 20 32
+ 68: 6(float) Load 67
+ 69: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 66
+ Store 69 68
+ 71: 23(ptr) AccessChain 46(flattenTemp) 34 22
+ 72: 6(float) Load 71
+ 73: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 70
+ Store 73 72
+ 75: 23(ptr) AccessChain 46(flattenTemp) 34 26
+ 76: 6(float) Load 75
+ 77: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 74
+ Store 77 76
+ 79: 23(ptr) AccessChain 46(flattenTemp) 34 29
+ 80: 6(float) Load 79
+ 81: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 78
+ Store 81 80
+ 83: 23(ptr) AccessChain 46(flattenTemp) 34 32
+ 84: 6(float) Load 83
+ 85: 58(ptr) AccessChain 55(@entryPointOutput.clip1) 82
+ Store 85 84
+ Return
+ FunctionEnd
+ 10(@main():8(VS_OUTPUT) Function None 9
+ 11: Label
+ 13(Output): 12(ptr) Variable Function
+ 19: 18(ptr) AccessChain 13(Output) 15
+ Store 19 17
+ 24: 23(ptr) AccessChain 13(Output) 20 22
+ Store 24 16
+ 27: 23(ptr) AccessChain 13(Output) 20 26
+ Store 27 25
+ 30: 23(ptr) AccessChain 13(Output) 20 29
+ Store 30 28
+ 33: 23(ptr) AccessChain 13(Output) 20 32
+ Store 33 31
+ 36: 23(ptr) AccessChain 13(Output) 34 22
+ Store 36 35
+ 38: 23(ptr) AccessChain 13(Output) 34 26
+ Store 38 37
+ 40: 23(ptr) AccessChain 13(Output) 34 29
+ Store 40 39
+ 42: 23(ptr) AccessChain 13(Output) 34 32
+ Store 42 41
+ 43:8(VS_OUTPUT) Load 13(Output)
+ ReturnValue 43
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out
new file mode 100644
index 00000000000..03c329f08b3
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out
@@ -0,0 +1,385 @@
+hlsl.clipdistance-7.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf3-vf41; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:? Sequence
+0:9 Branch: Return with expression
+0:9 add ( temp 4-component vector of float)
+0:9 add ( temp 4-component vector of float)
+0:9 Position: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 0 (const int)
+0:9 direct index ( temp float)
+0:9 clip0: direct index for structure ( temp 3-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 1 (const int)
+0:9 Constant:
+0:9 0 (const int)
+0:9 direct index ( temp float)
+0:9 clip1: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 2 (const int)
+0:9 Constant:
+0:9 0 (const int)
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 4 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 5 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 6 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 7 (const int)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf3-vf41; ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf3-vf41; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:? Sequence
+0:9 Branch: Return with expression
+0:9 add ( temp 4-component vector of float)
+0:9 add ( temp 4-component vector of float)
+0:9 Position: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 0 (const int)
+0:9 direct index ( temp float)
+0:9 clip0: direct index for structure ( temp 3-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 1 (const int)
+0:9 Constant:
+0:9 0 (const int)
+0:9 direct index ( temp float)
+0:9 clip1: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:9 Constant:
+0:9 2 (const int)
+0:9 Constant:
+0:9 0 (const int)
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 4 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 5 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 6 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 7 (const int)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf3-vf41; ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? 'v.clip1' ( in 8-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 78
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 37 43 74
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "VS_OUTPUT"
+ MemberName 9(VS_OUTPUT) 0 "Position"
+ MemberName 9(VS_OUTPUT) 1 "clip0"
+ MemberName 9(VS_OUTPUT) 2 "clip1"
+ Name 13 "@main(struct-VS_OUTPUT-vf4-vf3-vf41;"
+ Name 12 "v"
+ Name 35 "v"
+ Name 37 "v.Position"
+ Name 43 "v.clip1"
+ Name 74 "@entryPointOutput"
+ Name 75 "param"
+ Decorate 37(v.Position) BuiltIn FragCoord
+ Decorate 43(v.clip1) BuiltIn ClipDistance
+ Decorate 74(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 3
+ 9(VS_OUTPUT): TypeStruct 7(fvec4) 8(fvec3) 7(fvec4)
+ 10: TypePointer Function 9(VS_OUTPUT)
+ 11: TypeFunction 7(fvec4) 10(ptr)
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 0
+ 17: TypePointer Function 7(fvec4)
+ 20: 15(int) Constant 1
+ 21: TypeInt 32 0
+ 22: 21(int) Constant 0
+ 23: TypePointer Function 6(float)
+ 28: 15(int) Constant 2
+ 36: TypePointer Input 7(fvec4)
+ 37(v.Position): 36(ptr) Variable Input
+ 40: 21(int) Constant 8
+ 41: TypeArray 6(float) 40
+ 42: TypePointer Input 41
+ 43(v.clip1): 42(ptr) Variable Input
+ 44: TypePointer Input 6(float)
+ 50: 21(int) Constant 1
+ 54: 21(int) Constant 2
+ 56: 15(int) Constant 4
+ 60: 15(int) Constant 5
+ 64: 15(int) Constant 6
+ 68: 15(int) Constant 7
+ 71: 21(int) Constant 3
+ 73: TypePointer Output 7(fvec4)
+74(@entryPointOutput): 73(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 35(v): 10(ptr) Variable Function
+ 75(param): 10(ptr) Variable Function
+ 38: 7(fvec4) Load 37(v.Position)
+ 39: 17(ptr) AccessChain 35(v) 16
+ Store 39 38
+ 45: 44(ptr) AccessChain 43(v.clip1) 16
+ 46: 6(float) Load 45
+ 47: 23(ptr) AccessChain 35(v) 20 22
+ Store 47 46
+ 48: 44(ptr) AccessChain 43(v.clip1) 20
+ 49: 6(float) Load 48
+ 51: 23(ptr) AccessChain 35(v) 20 50
+ Store 51 49
+ 52: 44(ptr) AccessChain 43(v.clip1) 28
+ 53: 6(float) Load 52
+ 55: 23(ptr) AccessChain 35(v) 20 54
+ Store 55 53
+ 57: 44(ptr) AccessChain 43(v.clip1) 56
+ 58: 6(float) Load 57
+ 59: 23(ptr) AccessChain 35(v) 28 22
+ Store 59 58
+ 61: 44(ptr) AccessChain 43(v.clip1) 60
+ 62: 6(float) Load 61
+ 63: 23(ptr) AccessChain 35(v) 28 50
+ Store 63 62
+ 65: 44(ptr) AccessChain 43(v.clip1) 64
+ 66: 6(float) Load 65
+ 67: 23(ptr) AccessChain 35(v) 28 54
+ Store 67 66
+ 69: 44(ptr) AccessChain 43(v.clip1) 68
+ 70: 6(float) Load 69
+ 72: 23(ptr) AccessChain 35(v) 28 71
+ Store 72 70
+ 76:9(VS_OUTPUT) Load 35(v)
+ Store 75(param) 76
+ 77: 7(fvec4) FunctionCall 13(@main(struct-VS_OUTPUT-vf4-vf3-vf41;) 75(param)
+ Store 74(@entryPointOutput) 77
+ Return
+ FunctionEnd
+13(@main(struct-VS_OUTPUT-vf4-vf3-vf41;): 7(fvec4) Function None 11
+ 12(v): 10(ptr) FunctionParameter
+ 14: Label
+ 18: 17(ptr) AccessChain 12(v) 16
+ 19: 7(fvec4) Load 18
+ 24: 23(ptr) AccessChain 12(v) 20 22
+ 25: 6(float) Load 24
+ 26: 7(fvec4) CompositeConstruct 25 25 25 25
+ 27: 7(fvec4) FAdd 19 26
+ 29: 23(ptr) AccessChain 12(v) 28 22
+ 30: 6(float) Load 29
+ 31: 7(fvec4) CompositeConstruct 30 30 30 30
+ 32: 7(fvec4) FAdd 27 31
+ ReturnValue 32
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out
new file mode 100644
index 00000000000..468ea66388f
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out
@@ -0,0 +1,505 @@
+hlsl.clipdistance-7.vert
+Shader version: 500
+0:? Sequence
+0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 Position: direct index for structure ( temp 4-component vector of float)
+0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 clip0: direct index for structure ( temp 3-component vector of float)
+0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 0.000000
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 clip0: direct index for structure ( temp 3-component vector of float)
+0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1.000000
+0:14 move second child to first child ( temp float)
+0:14 direct index ( temp float)
+0:14 clip0: direct index for structure ( temp 3-component vector of float)
+0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 2 (const int)
+0:14 Constant:
+0:14 2.000000
+0:17 move second child to first child ( temp float)
+0:17 direct index ( temp float)
+0:17 clip1: direct index for structure ( temp 4-component vector of float)
+0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 4.000000
+0:18 move second child to first child ( temp float)
+0:18 direct index ( temp float)
+0:18 clip1: direct index for structure ( temp 4-component vector of float)
+0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:18 Constant:
+0:18 2 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 5.000000
+0:19 move second child to first child ( temp float)
+0:19 direct index ( temp float)
+0:19 clip1: direct index for structure ( temp 4-component vector of float)
+0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 6.000000
+0:20 move second child to first child ( temp float)
+0:20 direct index ( temp float)
+0:20 clip1: direct index for structure ( temp 4-component vector of float)
+0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:20 Constant:
+0:20 2 (const int)
+0:20 Constant:
+0:20 3 (const int)
+0:20 Constant:
+0:20 7.000000
+0:22 Branch: Return with expression
+0:22 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 4 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 5 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 6 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 7 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 Position: direct index for structure ( temp 4-component vector of float)
+0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 clip0: direct index for structure ( temp 3-component vector of float)
+0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 0.000000
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 clip0: direct index for structure ( temp 3-component vector of float)
+0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1.000000
+0:14 move second child to first child ( temp float)
+0:14 direct index ( temp float)
+0:14 clip0: direct index for structure ( temp 3-component vector of float)
+0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 2 (const int)
+0:14 Constant:
+0:14 2.000000
+0:17 move second child to first child ( temp float)
+0:17 direct index ( temp float)
+0:17 clip1: direct index for structure ( temp 4-component vector of float)
+0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 4.000000
+0:18 move second child to first child ( temp float)
+0:18 direct index ( temp float)
+0:18 clip1: direct index for structure ( temp 4-component vector of float)
+0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:18 Constant:
+0:18 2 (const int)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 5.000000
+0:19 move second child to first child ( temp float)
+0:19 direct index ( temp float)
+0:19 clip1: direct index for structure ( temp 4-component vector of float)
+0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 6.000000
+0:20 move second child to first child ( temp float)
+0:20 direct index ( temp float)
+0:20 clip1: direct index for structure ( temp 4-component vector of float)
+0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:20 Constant:
+0:20 2 (const int)
+0:20 Constant:
+0:20 3 (const int)
+0:20 Constant:
+0:20 7.000000
+0:22 Branch: Return with expression
+0:22 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 4 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 5 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 6 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+0:8 Constant:
+0:8 7 (const int)
+0:8 direct index ( temp float)
+0:8 clip1: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp 4-component vector of float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 81
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 48 54
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "VS_OUTPUT"
+ MemberName 9(VS_OUTPUT) 0 "Position"
+ MemberName 9(VS_OUTPUT) 1 "clip0"
+ MemberName 9(VS_OUTPUT) 2 "clip1"
+ Name 11 "@main("
+ Name 14 "Output"
+ Name 45 "flattenTemp"
+ Name 48 "@entryPointOutput.Position"
+ Name 54 "@entryPointOutput.clip1"
+ Decorate 48(@entryPointOutput.Position) BuiltIn Position
+ Decorate 54(@entryPointOutput.clip1) BuiltIn ClipDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 3
+ 9(VS_OUTPUT): TypeStruct 7(fvec4) 8(fvec3) 7(fvec4)
+ 10: TypeFunction 9(VS_OUTPUT)
+ 13: TypePointer Function 9(VS_OUTPUT)
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 0
+ 17: 6(float) Constant 0
+ 18: 7(fvec4) ConstantComposite 17 17 17 17
+ 19: TypePointer Function 7(fvec4)
+ 21: 15(int) Constant 1
+ 22: TypeInt 32 0
+ 23: 22(int) Constant 0
+ 24: TypePointer Function 6(float)
+ 26: 6(float) Constant 1065353216
+ 27: 22(int) Constant 1
+ 29: 6(float) Constant 1073741824
+ 30: 22(int) Constant 2
+ 32: 15(int) Constant 2
+ 33: 6(float) Constant 1082130432
+ 35: 6(float) Constant 1084227584
+ 37: 6(float) Constant 1086324736
+ 39: 6(float) Constant 1088421888
+ 40: 22(int) Constant 3
+ 47: TypePointer Output 7(fvec4)
+48(@entryPointOutput.Position): 47(ptr) Variable Output
+ 51: 22(int) Constant 8
+ 52: TypeArray 6(float) 51
+ 53: TypePointer Output 52
+54(@entryPointOutput.clip1): 53(ptr) Variable Output
+ 57: TypePointer Output 6(float)
+ 65: 15(int) Constant 4
+ 69: 15(int) Constant 5
+ 73: 15(int) Constant 6
+ 77: 15(int) Constant 7
+ 4(main): 2 Function None 3
+ 5: Label
+ 45(flattenTemp): 13(ptr) Variable Function
+ 46:9(VS_OUTPUT) FunctionCall 11(@main()
+ Store 45(flattenTemp) 46
+ 49: 19(ptr) AccessChain 45(flattenTemp) 16
+ 50: 7(fvec4) Load 49
+ Store 48(@entryPointOutput.Position) 50
+ 55: 24(ptr) AccessChain 45(flattenTemp) 21 23
+ 56: 6(float) Load 55
+ 58: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 16
+ Store 58 56
+ 59: 24(ptr) AccessChain 45(flattenTemp) 21 27
+ 60: 6(float) Load 59
+ 61: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 21
+ Store 61 60
+ 62: 24(ptr) AccessChain 45(flattenTemp) 21 30
+ 63: 6(float) Load 62
+ 64: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 32
+ Store 64 63
+ 66: 24(ptr) AccessChain 45(flattenTemp) 32 23
+ 67: 6(float) Load 66
+ 68: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 65
+ Store 68 67
+ 70: 24(ptr) AccessChain 45(flattenTemp) 32 27
+ 71: 6(float) Load 70
+ 72: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 69
+ Store 72 71
+ 74: 24(ptr) AccessChain 45(flattenTemp) 32 30
+ 75: 6(float) Load 74
+ 76: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 73
+ Store 76 75
+ 78: 24(ptr) AccessChain 45(flattenTemp) 32 40
+ 79: 6(float) Load 78
+ 80: 57(ptr) AccessChain 54(@entryPointOutput.clip1) 77
+ Store 80 79
+ Return
+ FunctionEnd
+ 11(@main():9(VS_OUTPUT) Function None 10
+ 12: Label
+ 14(Output): 13(ptr) Variable Function
+ 20: 19(ptr) AccessChain 14(Output) 16
+ Store 20 18
+ 25: 24(ptr) AccessChain 14(Output) 21 23
+ Store 25 17
+ 28: 24(ptr) AccessChain 14(Output) 21 27
+ Store 28 26
+ 31: 24(ptr) AccessChain 14(Output) 21 30
+ Store 31 29
+ 34: 24(ptr) AccessChain 14(Output) 32 23
+ Store 34 33
+ 36: 24(ptr) AccessChain 14(Output) 32 27
+ Store 36 35
+ 38: 24(ptr) AccessChain 14(Output) 32 30
+ Store 38 37
+ 41: 24(ptr) AccessChain 14(Output) 32 40
+ Store 41 39
+ 42:9(VS_OUTPUT) Load 14(Output)
+ ReturnValue 42
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out
new file mode 100644
index 00000000000..6abc4b13136
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out
@@ -0,0 +1,285 @@
+hlsl.clipdistance-8.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf3-f11; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:? Sequence
+0:9 Branch: Return with expression
+0:9 add ( temp 4-component vector of float)
+0:9 add ( temp 4-component vector of float)
+0:9 Position: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:9 Constant:
+0:9 0 (const int)
+0:9 direct index ( temp float)
+0:9 clip0: direct index for structure ( temp 3-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:9 Constant:
+0:9 1 (const int)
+0:9 Constant:
+0:9 0 (const int)
+0:9 clip1: direct index for structure ( temp float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:9 Constant:
+0:9 2 (const int)
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 clip1: direct index for structure ( temp float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 3 (const int)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf3-f11; ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? 'v.clip1' ( in 4-element array of float ClipDistance)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: @main(struct-VS_OUTPUT-vf4-vf3-f11; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:? Sequence
+0:9 Branch: Return with expression
+0:9 add ( temp 4-component vector of float)
+0:9 add ( temp 4-component vector of float)
+0:9 Position: direct index for structure ( temp 4-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:9 Constant:
+0:9 0 (const int)
+0:9 direct index ( temp float)
+0:9 clip0: direct index for structure ( temp 3-component vector of float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:9 Constant:
+0:9 1 (const int)
+0:9 Constant:
+0:9 0 (const int)
+0:9 clip1: direct index for structure ( temp float)
+0:9 'v' ( in structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:9 Constant:
+0:9 2 (const int)
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 clip1: direct index for structure ( temp float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( in float ClipDistance)
+0:? 'v.clip1' ( in 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 3 (const int)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main(struct-VS_OUTPUT-vf4-vf3-f11; ( temp 4-component vector of float)
+0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'v.Position' ( in 4-component vector of float FragCoord)
+0:? 'v.clip1' ( in 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 65
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 37 43 61
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "VS_OUTPUT"
+ MemberName 9(VS_OUTPUT) 0 "Position"
+ MemberName 9(VS_OUTPUT) 1 "clip0"
+ MemberName 9(VS_OUTPUT) 2 "clip1"
+ Name 13 "@main(struct-VS_OUTPUT-vf4-vf3-f11;"
+ Name 12 "v"
+ Name 35 "v"
+ Name 37 "v.Position"
+ Name 43 "v.clip1"
+ Name 61 "@entryPointOutput"
+ Name 62 "param"
+ Decorate 37(v.Position) BuiltIn FragCoord
+ Decorate 43(v.clip1) BuiltIn ClipDistance
+ Decorate 61(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 3
+ 9(VS_OUTPUT): TypeStruct 7(fvec4) 8(fvec3) 6(float)
+ 10: TypePointer Function 9(VS_OUTPUT)
+ 11: TypeFunction 7(fvec4) 10(ptr)
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 0
+ 17: TypePointer Function 7(fvec4)
+ 20: 15(int) Constant 1
+ 21: TypeInt 32 0
+ 22: 21(int) Constant 0
+ 23: TypePointer Function 6(float)
+ 28: 15(int) Constant 2
+ 36: TypePointer Input 7(fvec4)
+ 37(v.Position): 36(ptr) Variable Input
+ 40: 21(int) Constant 4
+ 41: TypeArray 6(float) 40
+ 42: TypePointer Input 41
+ 43(v.clip1): 42(ptr) Variable Input
+ 44: TypePointer Input 6(float)
+ 50: 21(int) Constant 1
+ 54: 21(int) Constant 2
+ 56: 15(int) Constant 3
+ 60: TypePointer Output 7(fvec4)
+61(@entryPointOutput): 60(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 35(v): 10(ptr) Variable Function
+ 62(param): 10(ptr) Variable Function
+ 38: 7(fvec4) Load 37(v.Position)
+ 39: 17(ptr) AccessChain 35(v) 16
+ Store 39 38
+ 45: 44(ptr) AccessChain 43(v.clip1) 16
+ 46: 6(float) Load 45
+ 47: 23(ptr) AccessChain 35(v) 20 22
+ Store 47 46
+ 48: 44(ptr) AccessChain 43(v.clip1) 20
+ 49: 6(float) Load 48
+ 51: 23(ptr) AccessChain 35(v) 20 50
+ Store 51 49
+ 52: 44(ptr) AccessChain 43(v.clip1) 28
+ 53: 6(float) Load 52
+ 55: 23(ptr) AccessChain 35(v) 20 54
+ Store 55 53
+ 57: 44(ptr) AccessChain 43(v.clip1) 56
+ 58: 6(float) Load 57
+ 59: 23(ptr) AccessChain 35(v) 28
+ Store 59 58
+ 63:9(VS_OUTPUT) Load 35(v)
+ Store 62(param) 63
+ 64: 7(fvec4) FunctionCall 13(@main(struct-VS_OUTPUT-vf4-vf3-f11;) 62(param)
+ Store 61(@entryPointOutput) 64
+ Return
+ FunctionEnd
+13(@main(struct-VS_OUTPUT-vf4-vf3-f11;): 7(fvec4) Function None 11
+ 12(v): 10(ptr) FunctionParameter
+ 14: Label
+ 18: 17(ptr) AccessChain 12(v) 16
+ 19: 7(fvec4) Load 18
+ 24: 23(ptr) AccessChain 12(v) 20 22
+ 25: 6(float) Load 24
+ 26: 7(fvec4) CompositeConstruct 25 25 25 25
+ 27: 7(fvec4) FAdd 19 26
+ 29: 23(ptr) AccessChain 12(v) 28
+ 30: 6(float) Load 29
+ 31: 7(fvec4) CompositeConstruct 30 30 30 30
+ 32: 7(fvec4) FAdd 27 31
+ ReturnValue 32
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out
new file mode 100644
index 00000000000..6188f6e8f13
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out
@@ -0,0 +1,336 @@
+hlsl.clipdistance-8.vert
+Shader version: 500
+0:? Sequence
+0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 Position: direct index for structure ( temp 4-component vector of float)
+0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 clip0: direct index for structure ( temp 3-component vector of float)
+0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 0.000000
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 clip0: direct index for structure ( temp 3-component vector of float)
+0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1.000000
+0:14 move second child to first child ( temp float)
+0:14 direct index ( temp float)
+0:14 clip0: direct index for structure ( temp 3-component vector of float)
+0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 2 (const int)
+0:14 Constant:
+0:14 2.000000
+0:17 move second child to first child ( temp float)
+0:17 clip1: direct index for structure ( temp float)
+0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 3.000000
+0:19 Branch: Return with expression
+0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 3 (const int)
+0:8 clip1: direct index for structure ( temp float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 Position: direct index for structure ( temp 4-component vector of float)
+0:10 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 clip0: direct index for structure ( temp 3-component vector of float)
+0:12 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 0.000000
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 clip0: direct index for structure ( temp 3-component vector of float)
+0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 1.000000
+0:14 move second child to first child ( temp float)
+0:14 direct index ( temp float)
+0:14 clip0: direct index for structure ( temp 3-component vector of float)
+0:14 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 2 (const int)
+0:14 Constant:
+0:14 2.000000
+0:17 move second child to first child ( temp float)
+0:17 clip1: direct index for structure ( temp float)
+0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 3.000000
+0:19 Branch: Return with expression
+0:19 'Output' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 0 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 0 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 1 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index ( temp float)
+0:8 clip0: direct index for structure ( temp 3-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:? Sequence
+0:8 move second child to first child ( temp float)
+0:8 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
+0:8 Constant:
+0:8 3 (const int)
+0:8 clip1: direct index for structure ( temp float)
+0:8 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1})
+0:8 Constant:
+0:8 2 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 62
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 41 47
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "VS_OUTPUT"
+ MemberName 9(VS_OUTPUT) 0 "Position"
+ MemberName 9(VS_OUTPUT) 1 "clip0"
+ MemberName 9(VS_OUTPUT) 2 "clip1"
+ Name 11 "@main("
+ Name 14 "Output"
+ Name 38 "flattenTemp"
+ Name 41 "@entryPointOutput.Position"
+ Name 47 "@entryPointOutput.clip1"
+ Decorate 41(@entryPointOutput.Position) BuiltIn Position
+ Decorate 47(@entryPointOutput.clip1) BuiltIn ClipDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 3
+ 9(VS_OUTPUT): TypeStruct 7(fvec4) 8(fvec3) 6(float)
+ 10: TypeFunction 9(VS_OUTPUT)
+ 13: TypePointer Function 9(VS_OUTPUT)
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 0
+ 17: 6(float) Constant 0
+ 18: 7(fvec4) ConstantComposite 17 17 17 17
+ 19: TypePointer Function 7(fvec4)
+ 21: 15(int) Constant 1
+ 22: TypeInt 32 0
+ 23: 22(int) Constant 0
+ 24: TypePointer Function 6(float)
+ 26: 6(float) Constant 1065353216
+ 27: 22(int) Constant 1
+ 29: 6(float) Constant 1073741824
+ 30: 22(int) Constant 2
+ 32: 15(int) Constant 2
+ 33: 6(float) Constant 1077936128
+ 40: TypePointer Output 7(fvec4)
+41(@entryPointOutput.Position): 40(ptr) Variable Output
+ 44: 22(int) Constant 4
+ 45: TypeArray 6(float) 44
+ 46: TypePointer Output 45
+47(@entryPointOutput.clip1): 46(ptr) Variable Output
+ 50: TypePointer Output 6(float)
+ 58: 15(int) Constant 3
+ 4(main): 2 Function None 3
+ 5: Label
+ 38(flattenTemp): 13(ptr) Variable Function
+ 39:9(VS_OUTPUT) FunctionCall 11(@main()
+ Store 38(flattenTemp) 39
+ 42: 19(ptr) AccessChain 38(flattenTemp) 16
+ 43: 7(fvec4) Load 42
+ Store 41(@entryPointOutput.Position) 43
+ 48: 24(ptr) AccessChain 38(flattenTemp) 21 23
+ 49: 6(float) Load 48
+ 51: 50(ptr) AccessChain 47(@entryPointOutput.clip1) 16
+ Store 51 49
+ 52: 24(ptr) AccessChain 38(flattenTemp) 21 27
+ 53: 6(float) Load 52
+ 54: 50(ptr) AccessChain 47(@entryPointOutput.clip1) 21
+ Store 54 53
+ 55: 24(ptr) AccessChain 38(flattenTemp) 21 30
+ 56: 6(float) Load 55
+ 57: 50(ptr) AccessChain 47(@entryPointOutput.clip1) 32
+ Store 57 56
+ 59: 24(ptr) AccessChain 38(flattenTemp) 32
+ 60: 6(float) Load 59
+ 61: 50(ptr) AccessChain 47(@entryPointOutput.clip1) 58
+ Store 61 60
+ Return
+ FunctionEnd
+ 11(@main():9(VS_OUTPUT) Function None 10
+ 12: Label
+ 14(Output): 13(ptr) Variable Function
+ 20: 19(ptr) AccessChain 14(Output) 16
+ Store 20 18
+ 25: 24(ptr) AccessChain 14(Output) 21 23
+ Store 25 17
+ 28: 24(ptr) AccessChain 14(Output) 21 27
+ Store 28 26
+ 31: 24(ptr) AccessChain 14(Output) 21 30
+ Store 31 29
+ 34: 24(ptr) AccessChain 14(Output) 32
+ Store 34 33
+ 35:9(VS_OUTPUT) Load 14(Output)
+ ReturnValue 35
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out
new file mode 100644
index 00000000000..57a722bccb6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out
@@ -0,0 +1,250 @@
+hlsl.clipdistance-9.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6 Function Definition: @main(vf4;vf3;f1; ( temp 4-component vector of float)
+0:6 Function Parameters:
+0:6 'Position' ( in 4-component vector of float)
+0:6 'clip0' ( in 3-component vector of float)
+0:6 'clip1' ( in float)
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 add ( temp 4-component vector of float)
+0:7 add ( temp 4-component vector of float)
+0:7 'Position' ( in 4-component vector of float)
+0:7 direct index ( temp float)
+0:7 'clip0' ( in 3-component vector of float)
+0:7 Constant:
+0:7 0 (const int)
+0:7 'clip1' ( in float)
+0:6 Function Definition: main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:6 move second child to first child ( temp 4-component vector of float)
+0:? 'Position' ( temp 4-component vector of float)
+0:? 'Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:6 move second child to first child ( temp float)
+0:6 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:6 Constant:
+0:6 0 (const int)
+0:6 direct index ( in float ClipDistance)
+0:? 'clip0' ( in 4-element array of float ClipDistance)
+0:6 Constant:
+0:6 0 (const int)
+0:6 move second child to first child ( temp float)
+0:6 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:6 Constant:
+0:6 1 (const int)
+0:6 direct index ( in float ClipDistance)
+0:? 'clip0' ( in 4-element array of float ClipDistance)
+0:6 Constant:
+0:6 1 (const int)
+0:6 move second child to first child ( temp float)
+0:6 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:6 Constant:
+0:6 2 (const int)
+0:6 direct index ( in float ClipDistance)
+0:? 'clip0' ( in 4-element array of float ClipDistance)
+0:6 Constant:
+0:6 2 (const int)
+0:? Sequence
+0:6 move second child to first child ( temp float)
+0:? 'clip1' ( temp float)
+0:6 direct index ( in float ClipDistance)
+0:? 'clip0' ( in 4-element array of float ClipDistance)
+0:6 Constant:
+0:6 3 (const int)
+0:6 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:6 Function Call: @main(vf4;vf3;f1; ( temp 4-component vector of float)
+0:? 'Position' ( temp 4-component vector of float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:? 'clip1' ( temp float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'Position' ( in 4-component vector of float FragCoord)
+0:? 'clip0' ( in 4-element array of float ClipDistance)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6 Function Definition: @main(vf4;vf3;f1; ( temp 4-component vector of float)
+0:6 Function Parameters:
+0:6 'Position' ( in 4-component vector of float)
+0:6 'clip0' ( in 3-component vector of float)
+0:6 'clip1' ( in float)
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 add ( temp 4-component vector of float)
+0:7 add ( temp 4-component vector of float)
+0:7 'Position' ( in 4-component vector of float)
+0:7 direct index ( temp float)
+0:7 'clip0' ( in 3-component vector of float)
+0:7 Constant:
+0:7 0 (const int)
+0:7 'clip1' ( in float)
+0:6 Function Definition: main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:6 move second child to first child ( temp 4-component vector of float)
+0:? 'Position' ( temp 4-component vector of float)
+0:? 'Position' ( in 4-component vector of float FragCoord)
+0:? Sequence
+0:6 move second child to first child ( temp float)
+0:6 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:6 Constant:
+0:6 0 (const int)
+0:6 direct index ( in float ClipDistance)
+0:? 'clip0' ( in 4-element array of float ClipDistance)
+0:6 Constant:
+0:6 0 (const int)
+0:6 move second child to first child ( temp float)
+0:6 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:6 Constant:
+0:6 1 (const int)
+0:6 direct index ( in float ClipDistance)
+0:? 'clip0' ( in 4-element array of float ClipDistance)
+0:6 Constant:
+0:6 1 (const int)
+0:6 move second child to first child ( temp float)
+0:6 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:6 Constant:
+0:6 2 (const int)
+0:6 direct index ( in float ClipDistance)
+0:? 'clip0' ( in 4-element array of float ClipDistance)
+0:6 Constant:
+0:6 2 (const int)
+0:? Sequence
+0:6 move second child to first child ( temp float)
+0:? 'clip1' ( temp float)
+0:6 direct index ( in float ClipDistance)
+0:? 'clip0' ( in 4-element array of float ClipDistance)
+0:6 Constant:
+0:6 3 (const int)
+0:6 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:6 Function Call: @main(vf4;vf3;f1; ( temp 4-component vector of float)
+0:? 'Position' ( temp 4-component vector of float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:? 'clip1' ( temp float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'Position' ( in 4-component vector of float FragCoord)
+0:? 'clip0' ( in 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 68
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 32 38 60
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 16 "@main(vf4;vf3;f1;"
+ Name 13 "Position"
+ Name 14 "clip0"
+ Name 15 "clip1"
+ Name 30 "Position"
+ Name 32 "Position"
+ Name 34 "clip0"
+ Name 38 "clip0"
+ Name 55 "clip1"
+ Name 60 "@entryPointOutput"
+ Name 61 "param"
+ Name 63 "param"
+ Name 65 "param"
+ Decorate 32(Position) BuiltIn FragCoord
+ Decorate 38(clip0) BuiltIn ClipDistance
+ Decorate 60(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeVector 6(float) 3
+ 10: TypePointer Function 9(fvec3)
+ 11: TypePointer Function 6(float)
+ 12: TypeFunction 7(fvec4) 8(ptr) 10(ptr) 11(ptr)
+ 19: TypeInt 32 0
+ 20: 19(int) Constant 0
+ 31: TypePointer Input 7(fvec4)
+ 32(Position): 31(ptr) Variable Input
+ 35: 19(int) Constant 4
+ 36: TypeArray 6(float) 35
+ 37: TypePointer Input 36
+ 38(clip0): 37(ptr) Variable Input
+ 39: TypeInt 32 1
+ 40: 39(int) Constant 0
+ 41: TypePointer Input 6(float)
+ 45: 39(int) Constant 1
+ 48: 19(int) Constant 1
+ 50: 39(int) Constant 2
+ 53: 19(int) Constant 2
+ 56: 39(int) Constant 3
+ 59: TypePointer Output 7(fvec4)
+60(@entryPointOutput): 59(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 30(Position): 8(ptr) Variable Function
+ 34(clip0): 10(ptr) Variable Function
+ 55(clip1): 11(ptr) Variable Function
+ 61(param): 8(ptr) Variable Function
+ 63(param): 10(ptr) Variable Function
+ 65(param): 11(ptr) Variable Function
+ 33: 7(fvec4) Load 32(Position)
+ Store 30(Position) 33
+ 42: 41(ptr) AccessChain 38(clip0) 40
+ 43: 6(float) Load 42
+ 44: 11(ptr) AccessChain 34(clip0) 20
+ Store 44 43
+ 46: 41(ptr) AccessChain 38(clip0) 45
+ 47: 6(float) Load 46
+ 49: 11(ptr) AccessChain 34(clip0) 48
+ Store 49 47
+ 51: 41(ptr) AccessChain 38(clip0) 50
+ 52: 6(float) Load 51
+ 54: 11(ptr) AccessChain 34(clip0) 53
+ Store 54 52
+ 57: 41(ptr) AccessChain 38(clip0) 56
+ 58: 6(float) Load 57
+ Store 55(clip1) 58
+ 62: 7(fvec4) Load 30(Position)
+ Store 61(param) 62
+ 64: 9(fvec3) Load 34(clip0)
+ Store 63(param) 64
+ 66: 6(float) Load 55(clip1)
+ Store 65(param) 66
+ 67: 7(fvec4) FunctionCall 16(@main(vf4;vf3;f1;) 61(param) 63(param) 65(param)
+ Store 60(@entryPointOutput) 67
+ Return
+ FunctionEnd
+16(@main(vf4;vf3;f1;): 7(fvec4) Function None 12
+ 13(Position): 8(ptr) FunctionParameter
+ 14(clip0): 10(ptr) FunctionParameter
+ 15(clip1): 11(ptr) FunctionParameter
+ 17: Label
+ 18: 7(fvec4) Load 13(Position)
+ 21: 11(ptr) AccessChain 14(clip0) 20
+ 22: 6(float) Load 21
+ 23: 7(fvec4) CompositeConstruct 22 22 22 22
+ 24: 7(fvec4) FAdd 18 23
+ 25: 6(float) Load 15(clip1)
+ 26: 7(fvec4) CompositeConstruct 25 25 25 25
+ 27: 7(fvec4) FAdd 24 26
+ ReturnValue 27
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out
new file mode 100644
index 00000000000..1dc83551713
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out
@@ -0,0 +1,299 @@
+hlsl.clipdistance-9.vert
+Shader version: 500
+0:? Sequence
+0:7 Function Definition: @main(vf3;f1; ( temp structure{ temp 4-component vector of float Position})
+0:7 Function Parameters:
+0:7 'clip0' ( out 3-component vector of float)
+0:7 'clip1' ( out float)
+0:? Sequence
+0:9 move second child to first child ( temp 4-component vector of float)
+0:9 Position: direct index for structure ( temp 4-component vector of float)
+0:9 'Output' ( temp structure{ temp 4-component vector of float Position})
+0:9 Constant:
+0:9 0 (const int)
+0:9 Constant:
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 'clip0' ( out 3-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0.000000
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 'clip0' ( out 3-component vector of float)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 1.000000
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 'clip0' ( out 3-component vector of float)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 2.000000
+0:16 move second child to first child ( temp float)
+0:16 'clip1' ( out float)
+0:16 Constant:
+0:16 3.000000
+0:18 Branch: Return with expression
+0:18 'Output' ( temp structure{ temp 4-component vector of float Position})
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:7 Position: direct index for structure ( temp 4-component vector of float)
+0:7 Function Call: @main(vf3;f1; ( temp structure{ temp 4-component vector of float Position})
+0:? 'clip0' ( temp 3-component vector of float)
+0:? 'clip1' ( temp float)
+0:7 Constant:
+0:7 0 (const int)
+0:? Sequence
+0:7 move second child to first child ( temp float)
+0:7 direct index ( out float ClipDistance)
+0:? 'clip0' ( out 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 0 (const int)
+0:7 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:7 Constant:
+0:7 0 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( out float ClipDistance)
+0:? 'clip0' ( out 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 1 (const int)
+0:7 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:7 Constant:
+0:7 1 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( out float ClipDistance)
+0:? 'clip0' ( out 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 2 (const int)
+0:7 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:7 Constant:
+0:7 2 (const int)
+0:? Sequence
+0:7 move second child to first child ( temp float)
+0:7 direct index ( out float ClipDistance)
+0:? 'clip0' ( out 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 3 (const int)
+0:? 'clip1' ( temp float)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? 'clip0' ( out 4-element array of float ClipDistance)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:7 Function Definition: @main(vf3;f1; ( temp structure{ temp 4-component vector of float Position})
+0:7 Function Parameters:
+0:7 'clip0' ( out 3-component vector of float)
+0:7 'clip1' ( out float)
+0:? Sequence
+0:9 move second child to first child ( temp 4-component vector of float)
+0:9 Position: direct index for structure ( temp 4-component vector of float)
+0:9 'Output' ( temp structure{ temp 4-component vector of float Position})
+0:9 Constant:
+0:9 0 (const int)
+0:9 Constant:
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:11 move second child to first child ( temp float)
+0:11 direct index ( temp float)
+0:11 'clip0' ( out 3-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 0.000000
+0:12 move second child to first child ( temp float)
+0:12 direct index ( temp float)
+0:12 'clip0' ( out 3-component vector of float)
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 1.000000
+0:13 move second child to first child ( temp float)
+0:13 direct index ( temp float)
+0:13 'clip0' ( out 3-component vector of float)
+0:13 Constant:
+0:13 2 (const int)
+0:13 Constant:
+0:13 2.000000
+0:16 move second child to first child ( temp float)
+0:16 'clip1' ( out float)
+0:16 Constant:
+0:16 3.000000
+0:18 Branch: Return with expression
+0:18 'Output' ( temp structure{ temp 4-component vector of float Position})
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:7 Position: direct index for structure ( temp 4-component vector of float)
+0:7 Function Call: @main(vf3;f1; ( temp structure{ temp 4-component vector of float Position})
+0:? 'clip0' ( temp 3-component vector of float)
+0:? 'clip1' ( temp float)
+0:7 Constant:
+0:7 0 (const int)
+0:? Sequence
+0:7 move second child to first child ( temp float)
+0:7 direct index ( out float ClipDistance)
+0:? 'clip0' ( out 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 0 (const int)
+0:7 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:7 Constant:
+0:7 0 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( out float ClipDistance)
+0:? 'clip0' ( out 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 1 (const int)
+0:7 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:7 Constant:
+0:7 1 (const int)
+0:7 move second child to first child ( temp float)
+0:7 direct index ( out float ClipDistance)
+0:? 'clip0' ( out 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 2 (const int)
+0:7 direct index ( temp float)
+0:? 'clip0' ( temp 3-component vector of float)
+0:7 Constant:
+0:7 2 (const int)
+0:? Sequence
+0:7 move second child to first child ( temp float)
+0:7 direct index ( out float ClipDistance)
+0:? 'clip0' ( out 4-element array of float ClipDistance)
+0:7 Constant:
+0:7 3 (const int)
+0:? 'clip1' ( temp float)
+0:? Linker Objects
+0:? '@entryPointOutput.Position' ( out 4-component vector of float Position)
+0:? 'clip0' ( out 4-element array of float ClipDistance)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 67
+
+ Capability Shader
+ Capability ClipDistance
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 39 51
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "VS_OUTPUT"
+ MemberName 11(VS_OUTPUT) 0 "Position"
+ Name 15 "@main(vf3;f1;"
+ Name 13 "clip0"
+ Name 14 "clip1"
+ Name 18 "Output"
+ Name 39 "@entryPointOutput.Position"
+ Name 40 "clip0"
+ Name 41 "clip1"
+ Name 42 "param"
+ Name 43 "param"
+ Name 51 "clip0"
+ Decorate 39(@entryPointOutput.Position) BuiltIn Position
+ Decorate 51(clip0) BuiltIn ClipDistance
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8: TypePointer Function 7(fvec3)
+ 9: TypePointer Function 6(float)
+ 10: TypeVector 6(float) 4
+ 11(VS_OUTPUT): TypeStruct 10(fvec4)
+ 12: TypeFunction 11(VS_OUTPUT) 8(ptr) 9(ptr)
+ 17: TypePointer Function 11(VS_OUTPUT)
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 0
+ 21: 6(float) Constant 0
+ 22: 10(fvec4) ConstantComposite 21 21 21 21
+ 23: TypePointer Function 10(fvec4)
+ 25: TypeInt 32 0
+ 26: 25(int) Constant 0
+ 28: 6(float) Constant 1065353216
+ 29: 25(int) Constant 1
+ 31: 6(float) Constant 1073741824
+ 32: 25(int) Constant 2
+ 34: 6(float) Constant 1077936128
+ 38: TypePointer Output 10(fvec4)
+39(@entryPointOutput.Position): 38(ptr) Variable Output
+ 48: 25(int) Constant 4
+ 49: TypeArray 6(float) 48
+ 50: TypePointer Output 49
+ 51(clip0): 50(ptr) Variable Output
+ 54: TypePointer Output 6(float)
+ 56: 19(int) Constant 1
+ 60: 19(int) Constant 2
+ 64: 19(int) Constant 3
+ 4(main): 2 Function None 3
+ 5: Label
+ 40(clip0): 8(ptr) Variable Function
+ 41(clip1): 9(ptr) Variable Function
+ 42(param): 8(ptr) Variable Function
+ 43(param): 9(ptr) Variable Function
+ 44:11(VS_OUTPUT) FunctionCall 15(@main(vf3;f1;) 42(param) 43(param)
+ 45: 7(fvec3) Load 42(param)
+ Store 40(clip0) 45
+ 46: 6(float) Load 43(param)
+ Store 41(clip1) 46
+ 47: 10(fvec4) CompositeExtract 44 0
+ Store 39(@entryPointOutput.Position) 47
+ 52: 9(ptr) AccessChain 40(clip0) 26
+ 53: 6(float) Load 52
+ 55: 54(ptr) AccessChain 51(clip0) 20
+ Store 55 53
+ 57: 9(ptr) AccessChain 40(clip0) 29
+ 58: 6(float) Load 57
+ 59: 54(ptr) AccessChain 51(clip0) 56
+ Store 59 58
+ 61: 9(ptr) AccessChain 40(clip0) 32
+ 62: 6(float) Load 61
+ 63: 54(ptr) AccessChain 51(clip0) 60
+ Store 63 62
+ 65: 6(float) Load 41(clip1)
+ 66: 54(ptr) AccessChain 51(clip0) 64
+ Store 66 65
+ Return
+ FunctionEnd
+15(@main(vf3;f1;):11(VS_OUTPUT) Function None 12
+ 13(clip0): 8(ptr) FunctionParameter
+ 14(clip1): 9(ptr) FunctionParameter
+ 16: Label
+ 18(Output): 17(ptr) Variable Function
+ 24: 23(ptr) AccessChain 18(Output) 20
+ Store 24 22
+ 27: 9(ptr) AccessChain 13(clip0) 26
+ Store 27 21
+ 30: 9(ptr) AccessChain 13(clip0) 29
+ Store 30 28
+ 33: 9(ptr) AccessChain 13(clip0) 32
+ Store 33 31
+ Store 14(clip1) 34
+ 35:11(VS_OUTPUT) Load 18(Output)
+ ReturnValue 35
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.comparison.vec.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.comparison.vec.frag.out
index dacdb7717c0..e2d4637b0c0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.comparison.vec.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.comparison.vec.frag.out
@@ -1,5 +1,5 @@
hlsl.comparison.vec.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: Bug1(vf4; ( temp void)
@@ -119,20 +119,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:30 Sequence
0:30 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:30 Color: direct index for structure ( temp 4-component vector of float)
0:30 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:30 Constant:
0:30 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: Bug1(vf4; ( temp void)
@@ -252,17 +252,17 @@ gl_FragCoord origin is upper left
0:? Sequence
0:30 Sequence
0:30 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:30 Color: direct index for structure ( temp 4-component vector of float)
0:30 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:30 Constant:
0:30 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 96
Capability Shader
@@ -270,6 +270,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 90
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "Bug1(vf4;"
Name 10 "a"
@@ -291,11 +292,11 @@ gl_FragCoord origin is upper left
Name 71 "r22"
Name 76 "r23"
Name 82 "psout"
- Name 90 "Color"
+ Name 90 "@entryPointOutput.Color"
Name 93 "$Global"
MemberName 93($Global) 0 "uf4"
Name 95 ""
- Decorate 90(Color) Location 0
+ Decorate 90(@entryPointOutput.Color) Location 0
MemberDecorate 93($Global) 0 Offset 0
Decorate 93($Global) Block
Decorate 95 DescriptorSet 0
@@ -317,7 +318,7 @@ gl_FragCoord origin is upper left
83: TypeInt 32 1
84: 83(int) Constant 0
89: TypePointer Output 7(fvec4)
- 90(Color): 89(ptr) Variable Output
+90(@entryPointOutput.Color): 89(ptr) Variable Output
93($Global): TypeStruct 7(fvec4)
94: TypePointer Uniform 93($Global)
95: 94(ptr) Variable Uniform
@@ -325,7 +326,7 @@ gl_FragCoord origin is upper left
5: Label
91:13(PS_OUTPUT) FunctionCall 15(@main()
92: 7(fvec4) CompositeExtract 91 0
- Store 90(Color) 92
+ Store 90(@entryPointOutput.Color) 92
Return
FunctionEnd
11(Bug1(vf4;): 2 Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.conditional.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.conditional.frag.out
index cd0abf815a1..bbcfd5584f8 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.conditional.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.conditional.frag.out
@@ -1,121 +1,260 @@
hlsl.conditional.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
-0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:2 Function Parameters:
-0:2 'input' ( in 4-component vector of float)
+0:8 Function Definition: vectorCond( ( temp 4-component vector of float)
+0:8 Function Parameters:
0:? Sequence
-0:3 Sequence
-0:3 move second child to first child ( temp int)
-0:3 'a' ( temp int)
-0:3 Constant:
-0:3 5 (const int)
-0:4 Sequence
-0:4 move second child to first child ( temp int)
-0:4 'b' ( temp int)
-0:4 Constant:
-0:4 6 (const int)
-0:5 Sequence
-0:5 move second child to first child ( temp int)
-0:5 'c' ( temp int)
-0:5 Constant:
-0:5 7 (const int)
-0:6 Sequence
-0:6 move second child to first child ( temp int)
-0:6 'd' ( temp int)
-0:6 Constant:
-0:6 7 (const int)
-0:7 Sequence
-0:7 move second child to first child ( temp 4-component vector of float)
-0:7 'ret' ( temp 4-component vector of float)
-0:9 add ( temp 4-component vector of float)
-0:8 add ( temp 4-component vector of float)
-0:7 add ( temp 4-component vector of float)
-0:7 vector-scale ( temp 4-component vector of float)
-0:7 Convert int to float ( temp float)
-0:7 'a' ( temp int)
-0:7 'input' ( in 4-component vector of float)
-0:8 vector-scale ( temp 4-component vector of float)
-0:8 Convert int to float ( temp float)
-0:8 'b' ( temp int)
-0:8 'input' ( in 4-component vector of float)
-0:9 vector-scale ( temp 4-component vector of float)
-0:9 Convert int to float ( temp float)
-0:9 'c' ( temp int)
-0:9 'input' ( in 4-component vector of float)
-0:10 vector-scale ( temp 4-component vector of float)
-0:10 Convert int to float ( temp float)
-0:10 'd' ( temp int)
-0:10 'input' ( in 4-component vector of float)
-0:12 Comma ( temp int)
-0:12 move second child to first child ( temp int)
-0:12 'e' ( temp int)
-0:12 move second child to first child ( temp int)
-0:12 'a' ( temp int)
-0:12 Test condition and select ( temp int)
-0:12 Condition
-0:12 'b' ( temp int)
-0:12 true case
-0:12 move second child to first child ( temp int)
-0:12 'c' ( temp int)
-0:12 'd' ( temp int)
-0:12 false case
+0:12 Branch: Return with expression
+0:11 add ( temp 4-component vector of float)
+0:10 add ( temp 4-component vector of float)
+0:9 add ( temp 4-component vector of float)
+0:9 mix ( temp 4-component vector of float)
+0:9 f4: direct index for structure ( uniform 4-component vector of float)
+0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:9 Constant:
+0:9 2 (const uint)
+0:9 t4: direct index for structure ( uniform 4-component vector of float)
+0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:9 Constant:
+0:9 1 (const uint)
+0:9 Convert float to bool ( temp 4-component vector of bool)
+0:9 c4: direct index for structure ( uniform 4-component vector of float)
+0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:9 Constant:
+0:9 0 (const uint)
+0:10 mix ( temp 4-component vector of float)
+0:10 Construct vec4 ( temp 4-component vector of float)
+0:10 f: direct index for structure ( uniform float)
+0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:10 Constant:
+0:10 4 (const uint)
+0:10 Construct vec4 ( temp 4-component vector of float)
+0:10 t: direct index for structure ( uniform float)
+0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:10 Constant:
+0:10 3 (const uint)
+0:10 Convert float to bool ( temp 4-component vector of bool)
+0:10 c4: direct index for structure ( uniform 4-component vector of float)
+0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:10 Constant:
+0:10 0 (const uint)
+0:11 mix ( temp 4-component vector of float)
+0:11 f4: direct index for structure ( uniform 4-component vector of float)
+0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:11 Constant:
+0:11 2 (const uint)
+0:11 t4: direct index for structure ( uniform 4-component vector of float)
+0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:11 Constant:
+0:11 1 (const uint)
+0:11 Compare Less Than ( temp 4-component vector of bool)
+0:11 t4: direct index for structure ( uniform 4-component vector of float)
+0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:11 Constant:
+0:11 1 (const uint)
+0:11 f4: direct index for structure ( uniform 4-component vector of float)
+0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:11 Constant:
+0:11 2 (const uint)
+0:12 mix ( temp 4-component vector of float)
+0:12 f4: direct index for structure ( uniform 4-component vector of float)
+0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
0:12 Constant:
-0:12 10 (const int)
-0:12 move second child to first child ( temp int)
-0:12 'b' ( temp int)
-0:12 Test condition and select ( temp int)
-0:12 Condition
-0:12 'a' ( temp int)
-0:12 true case
-0:12 move second child to first child ( temp int)
-0:12 'd' ( temp int)
-0:12 'c' ( temp int)
-0:12 false case
-0:12 Constant:
-0:12 11 (const int)
-0:14 move second child to first child ( temp 4-component vector of float)
-0:14 'f' ( temp 4-component vector of float)
-0:14 Test condition and select ( temp 4-component vector of float)
-0:14 Condition
-0:14 Compare Less Than ( temp bool)
-0:14 direct index ( temp float)
-0:14 'ret' ( temp 4-component vector of float)
-0:14 Constant:
-0:14 0 (const int)
-0:14 direct index ( temp float)
-0:14 'input' ( in 4-component vector of float)
-0:14 Constant:
-0:14 1 (const int)
-0:14 true case
-0:14 vector-scale ( temp 4-component vector of float)
-0:14 Convert int to float ( temp float)
-0:14 'c' ( temp int)
-0:14 'input' ( in 4-component vector of float)
-0:14 false case
-0:14 vector-scale ( temp 4-component vector of float)
-0:14 Convert int to float ( temp float)
-0:14 'd' ( temp int)
-0:14 'input' ( in 4-component vector of float)
-0:15 Branch: Return with expression
-0:15 add ( temp 4-component vector of float)
-0:15 vector-scale ( temp 4-component vector of float)
-0:15 Convert int to float ( temp float)
-0:15 'e' ( temp int)
-0:15 'ret' ( temp 4-component vector of float)
-0:15 'f' ( temp 4-component vector of float)
-0:2 Function Definition: PixelShaderFunction( ( temp void)
-0:2 Function Parameters:
+0:12 2 (const uint)
+0:12 Construct vec4 ( temp 4-component vector of float)
+0:12 t: direct index for structure ( uniform float)
+0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:12 Constant:
+0:12 3 (const uint)
+0:12 Convert float to bool ( temp 4-component vector of bool)
+0:12 c4: direct index for structure ( uniform 4-component vector of float)
+0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:12 Constant:
+0:12 0 (const uint)
+0:16 Function Definition: scalarCond( ( temp 4-component vector of float)
+0:16 Function Parameters:
0:? Sequence
-0:2 move second child to first child ( temp 4-component vector of float)
+0:17 Sequence
+0:17 move second child to first child ( temp 4-component vector of float)
+0:17 'ret' ( temp 4-component vector of float)
+0:17 Test condition and select ( temp 4-component vector of float)
+0:17 Condition
+0:17 Compare Not Equal ( temp bool)
+0:17 t: direct index for structure ( uniform float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:17 Constant:
+0:17 3 (const uint)
+0:17 f: direct index for structure ( uniform float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:17 Constant:
+0:17 4 (const uint)
+0:17 true case
+0:17 vector-scale ( temp 4-component vector of float)
+0:17 t: direct index for structure ( uniform float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:17 Constant:
+0:17 3 (const uint)
+0:17 f4: direct index for structure ( uniform 4-component vector of float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:17 Constant:
+0:17 2 (const uint)
+0:17 false case
+0:17 Constant:
+0:17 1.000000
+0:17 1.000000
+0:17 1.000000
+0:17 1.000000
+0:18 Branch: Return with expression
+0:18 'ret' ( temp 4-component vector of float)
+0:22 Function Definition: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
+0:22 Function Parameters:
+0:22 'cnd' ( in 2-component vector of bool)
+0:22 'src0' ( in 2-component vector of float)
+0:22 'src1' ( in 2-component vector of float)
+0:? Sequence
+0:23 Branch: Return with expression
+0:23 mix ( temp 2-component vector of float)
+0:23 'src1' ( in 2-component vector of float)
+0:23 'src0' ( in 2-component vector of float)
+0:23 'cnd' ( in 2-component vector of bool)
+0:27 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:27 Function Parameters:
+0:27 'input' ( in 4-component vector of float)
+0:? Sequence
+0:28 Sequence
+0:28 move second child to first child ( temp int)
+0:28 'a' ( temp int)
+0:28 Constant:
+0:28 5 (const int)
+0:29 Sequence
+0:29 move second child to first child ( temp int)
+0:29 'b' ( temp int)
+0:29 Constant:
+0:29 6 (const int)
+0:30 Sequence
+0:30 move second child to first child ( temp int)
+0:30 'c' ( temp int)
+0:30 Constant:
+0:30 7 (const int)
+0:31 Sequence
+0:31 move second child to first child ( temp int)
+0:31 'd' ( temp int)
+0:31 Constant:
+0:31 7 (const int)
+0:32 Sequence
+0:32 move second child to first child ( temp 4-component vector of float)
+0:32 'ret' ( temp 4-component vector of float)
+0:34 add ( temp 4-component vector of float)
+0:33 add ( temp 4-component vector of float)
+0:32 add ( temp 4-component vector of float)
+0:32 vector-scale ( temp 4-component vector of float)
+0:32 Convert int to float ( temp float)
+0:32 'a' ( temp int)
+0:32 'input' ( in 4-component vector of float)
+0:33 vector-scale ( temp 4-component vector of float)
+0:33 Convert int to float ( temp float)
+0:33 'b' ( temp int)
+0:33 'input' ( in 4-component vector of float)
+0:34 vector-scale ( temp 4-component vector of float)
+0:34 Convert int to float ( temp float)
+0:34 'c' ( temp int)
+0:34 'input' ( in 4-component vector of float)
+0:35 vector-scale ( temp 4-component vector of float)
+0:35 Convert int to float ( temp float)
+0:35 'd' ( temp int)
+0:35 'input' ( in 4-component vector of float)
+0:37 Comma ( temp int)
+0:37 move second child to first child ( temp int)
+0:37 'e' ( temp int)
+0:37 move second child to first child ( temp int)
+0:37 'a' ( temp int)
+0:37 Test condition and select ( temp int)
+0:37 Condition
+0:37 Convert int to bool ( temp bool)
+0:37 'b' ( temp int)
+0:37 true case
+0:37 move second child to first child ( temp int)
+0:37 'c' ( temp int)
+0:37 'd' ( temp int)
+0:37 false case
+0:37 Constant:
+0:37 10 (const int)
+0:37 move second child to first child ( temp int)
+0:37 'b' ( temp int)
+0:37 Test condition and select ( temp int)
+0:37 Condition
+0:37 Convert int to bool ( temp bool)
+0:37 'a' ( temp int)
+0:37 true case
+0:37 move second child to first child ( temp int)
+0:37 'd' ( temp int)
+0:37 'c' ( temp int)
+0:37 false case
+0:37 Constant:
+0:37 11 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 'f' ( temp 4-component vector of float)
+0:39 Test condition and select ( temp 4-component vector of float)
+0:39 Condition
+0:39 Compare Less Than ( temp bool)
+0:39 direct index ( temp float)
+0:39 'ret' ( temp 4-component vector of float)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( temp float)
+0:39 'input' ( in 4-component vector of float)
+0:39 Constant:
+0:39 1 (const int)
+0:39 true case
+0:39 vector-scale ( temp 4-component vector of float)
+0:39 Convert int to float ( temp float)
+0:39 'c' ( temp int)
+0:39 'input' ( in 4-component vector of float)
+0:39 false case
+0:39 vector-scale ( temp 4-component vector of float)
+0:39 Convert int to float ( temp float)
+0:39 'd' ( temp int)
+0:39 'input' ( in 4-component vector of float)
+0:41 Branch: Return with expression
+0:40 add ( temp 4-component vector of float)
+0:40 add ( temp 4-component vector of float)
+0:40 add ( temp 4-component vector of float)
+0:40 add ( temp 4-component vector of float)
+0:40 vector-scale ( temp 4-component vector of float)
+0:40 Convert int to float ( temp float)
+0:40 'e' ( temp int)
+0:40 'ret' ( temp 4-component vector of float)
+0:40 'f' ( temp 4-component vector of float)
+0:40 Function Call: vectorCond( ( temp 4-component vector of float)
+0:40 Function Call: scalarCond( ( temp 4-component vector of float)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:41 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
+0:? Constant:
+0:? true (const bool)
+0:? false (const bool)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? Constant:
+0:? 3.000000
+0:? 4.000000
+0:41 Constant:
+0:41 10.000000
+0:41 Constant:
+0:41 10.000000
+0:27 Function Definition: PixelShaderFunction( ( temp void)
+0:27 Function Parameters:
+0:? Sequence
+0:27 move second child to first child ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:2 move second child to first child ( temp 4-component vector of float)
+0:27 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:27 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
@@ -123,280 +262,574 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
-0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:2 Function Parameters:
-0:2 'input' ( in 4-component vector of float)
+0:8 Function Definition: vectorCond( ( temp 4-component vector of float)
+0:8 Function Parameters:
0:? Sequence
-0:3 Sequence
-0:3 move second child to first child ( temp int)
-0:3 'a' ( temp int)
-0:3 Constant:
-0:3 5 (const int)
-0:4 Sequence
-0:4 move second child to first child ( temp int)
-0:4 'b' ( temp int)
-0:4 Constant:
-0:4 6 (const int)
-0:5 Sequence
-0:5 move second child to first child ( temp int)
-0:5 'c' ( temp int)
-0:5 Constant:
-0:5 7 (const int)
-0:6 Sequence
-0:6 move second child to first child ( temp int)
-0:6 'd' ( temp int)
-0:6 Constant:
-0:6 7 (const int)
-0:7 Sequence
-0:7 move second child to first child ( temp 4-component vector of float)
-0:7 'ret' ( temp 4-component vector of float)
-0:9 add ( temp 4-component vector of float)
-0:8 add ( temp 4-component vector of float)
-0:7 add ( temp 4-component vector of float)
-0:7 vector-scale ( temp 4-component vector of float)
-0:7 Convert int to float ( temp float)
-0:7 'a' ( temp int)
-0:7 'input' ( in 4-component vector of float)
-0:8 vector-scale ( temp 4-component vector of float)
-0:8 Convert int to float ( temp float)
-0:8 'b' ( temp int)
-0:8 'input' ( in 4-component vector of float)
-0:9 vector-scale ( temp 4-component vector of float)
-0:9 Convert int to float ( temp float)
-0:9 'c' ( temp int)
-0:9 'input' ( in 4-component vector of float)
-0:10 vector-scale ( temp 4-component vector of float)
-0:10 Convert int to float ( temp float)
-0:10 'd' ( temp int)
-0:10 'input' ( in 4-component vector of float)
-0:12 Comma ( temp int)
-0:12 move second child to first child ( temp int)
-0:12 'e' ( temp int)
-0:12 move second child to first child ( temp int)
-0:12 'a' ( temp int)
-0:12 Test condition and select ( temp int)
-0:12 Condition
-0:12 'b' ( temp int)
-0:12 true case
-0:12 move second child to first child ( temp int)
-0:12 'c' ( temp int)
-0:12 'd' ( temp int)
-0:12 false case
+0:12 Branch: Return with expression
+0:11 add ( temp 4-component vector of float)
+0:10 add ( temp 4-component vector of float)
+0:9 add ( temp 4-component vector of float)
+0:9 mix ( temp 4-component vector of float)
+0:9 f4: direct index for structure ( uniform 4-component vector of float)
+0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:9 Constant:
+0:9 2 (const uint)
+0:9 t4: direct index for structure ( uniform 4-component vector of float)
+0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:9 Constant:
+0:9 1 (const uint)
+0:9 Convert float to bool ( temp 4-component vector of bool)
+0:9 c4: direct index for structure ( uniform 4-component vector of float)
+0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:9 Constant:
+0:9 0 (const uint)
+0:10 mix ( temp 4-component vector of float)
+0:10 Construct vec4 ( temp 4-component vector of float)
+0:10 f: direct index for structure ( uniform float)
+0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:10 Constant:
+0:10 4 (const uint)
+0:10 Construct vec4 ( temp 4-component vector of float)
+0:10 t: direct index for structure ( uniform float)
+0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:10 Constant:
+0:10 3 (const uint)
+0:10 Convert float to bool ( temp 4-component vector of bool)
+0:10 c4: direct index for structure ( uniform 4-component vector of float)
+0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:10 Constant:
+0:10 0 (const uint)
+0:11 mix ( temp 4-component vector of float)
+0:11 f4: direct index for structure ( uniform 4-component vector of float)
+0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:11 Constant:
+0:11 2 (const uint)
+0:11 t4: direct index for structure ( uniform 4-component vector of float)
+0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:11 Constant:
+0:11 1 (const uint)
+0:11 Compare Less Than ( temp 4-component vector of bool)
+0:11 t4: direct index for structure ( uniform 4-component vector of float)
+0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:11 Constant:
+0:11 1 (const uint)
+0:11 f4: direct index for structure ( uniform 4-component vector of float)
+0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:11 Constant:
+0:11 2 (const uint)
+0:12 mix ( temp 4-component vector of float)
+0:12 f4: direct index for structure ( uniform 4-component vector of float)
+0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
0:12 Constant:
-0:12 10 (const int)
-0:12 move second child to first child ( temp int)
-0:12 'b' ( temp int)
-0:12 Test condition and select ( temp int)
-0:12 Condition
-0:12 'a' ( temp int)
-0:12 true case
-0:12 move second child to first child ( temp int)
-0:12 'd' ( temp int)
-0:12 'c' ( temp int)
-0:12 false case
-0:12 Constant:
-0:12 11 (const int)
-0:14 move second child to first child ( temp 4-component vector of float)
-0:14 'f' ( temp 4-component vector of float)
-0:14 Test condition and select ( temp 4-component vector of float)
-0:14 Condition
-0:14 Compare Less Than ( temp bool)
-0:14 direct index ( temp float)
-0:14 'ret' ( temp 4-component vector of float)
-0:14 Constant:
-0:14 0 (const int)
-0:14 direct index ( temp float)
-0:14 'input' ( in 4-component vector of float)
-0:14 Constant:
-0:14 1 (const int)
-0:14 true case
-0:14 vector-scale ( temp 4-component vector of float)
-0:14 Convert int to float ( temp float)
-0:14 'c' ( temp int)
-0:14 'input' ( in 4-component vector of float)
-0:14 false case
-0:14 vector-scale ( temp 4-component vector of float)
-0:14 Convert int to float ( temp float)
-0:14 'd' ( temp int)
-0:14 'input' ( in 4-component vector of float)
-0:15 Branch: Return with expression
-0:15 add ( temp 4-component vector of float)
-0:15 vector-scale ( temp 4-component vector of float)
-0:15 Convert int to float ( temp float)
-0:15 'e' ( temp int)
-0:15 'ret' ( temp 4-component vector of float)
-0:15 'f' ( temp 4-component vector of float)
-0:2 Function Definition: PixelShaderFunction( ( temp void)
-0:2 Function Parameters:
+0:12 2 (const uint)
+0:12 Construct vec4 ( temp 4-component vector of float)
+0:12 t: direct index for structure ( uniform float)
+0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:12 Constant:
+0:12 3 (const uint)
+0:12 Convert float to bool ( temp 4-component vector of bool)
+0:12 c4: direct index for structure ( uniform 4-component vector of float)
+0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:12 Constant:
+0:12 0 (const uint)
+0:16 Function Definition: scalarCond( ( temp 4-component vector of float)
+0:16 Function Parameters:
+0:? Sequence
+0:17 Sequence
+0:17 move second child to first child ( temp 4-component vector of float)
+0:17 'ret' ( temp 4-component vector of float)
+0:17 Test condition and select ( temp 4-component vector of float)
+0:17 Condition
+0:17 Compare Not Equal ( temp bool)
+0:17 t: direct index for structure ( uniform float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:17 Constant:
+0:17 3 (const uint)
+0:17 f: direct index for structure ( uniform float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:17 Constant:
+0:17 4 (const uint)
+0:17 true case
+0:17 vector-scale ( temp 4-component vector of float)
+0:17 t: direct index for structure ( uniform float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:17 Constant:
+0:17 3 (const uint)
+0:17 f4: direct index for structure ( uniform 4-component vector of float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
+0:17 Constant:
+0:17 2 (const uint)
+0:17 false case
+0:17 Constant:
+0:17 1.000000
+0:17 1.000000
+0:17 1.000000
+0:17 1.000000
+0:18 Branch: Return with expression
+0:18 'ret' ( temp 4-component vector of float)
+0:22 Function Definition: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
+0:22 Function Parameters:
+0:22 'cnd' ( in 2-component vector of bool)
+0:22 'src0' ( in 2-component vector of float)
+0:22 'src1' ( in 2-component vector of float)
+0:? Sequence
+0:23 Branch: Return with expression
+0:23 mix ( temp 2-component vector of float)
+0:23 'src1' ( in 2-component vector of float)
+0:23 'src0' ( in 2-component vector of float)
+0:23 'cnd' ( in 2-component vector of bool)
+0:27 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:27 Function Parameters:
+0:27 'input' ( in 4-component vector of float)
0:? Sequence
-0:2 move second child to first child ( temp 4-component vector of float)
+0:28 Sequence
+0:28 move second child to first child ( temp int)
+0:28 'a' ( temp int)
+0:28 Constant:
+0:28 5 (const int)
+0:29 Sequence
+0:29 move second child to first child ( temp int)
+0:29 'b' ( temp int)
+0:29 Constant:
+0:29 6 (const int)
+0:30 Sequence
+0:30 move second child to first child ( temp int)
+0:30 'c' ( temp int)
+0:30 Constant:
+0:30 7 (const int)
+0:31 Sequence
+0:31 move second child to first child ( temp int)
+0:31 'd' ( temp int)
+0:31 Constant:
+0:31 7 (const int)
+0:32 Sequence
+0:32 move second child to first child ( temp 4-component vector of float)
+0:32 'ret' ( temp 4-component vector of float)
+0:34 add ( temp 4-component vector of float)
+0:33 add ( temp 4-component vector of float)
+0:32 add ( temp 4-component vector of float)
+0:32 vector-scale ( temp 4-component vector of float)
+0:32 Convert int to float ( temp float)
+0:32 'a' ( temp int)
+0:32 'input' ( in 4-component vector of float)
+0:33 vector-scale ( temp 4-component vector of float)
+0:33 Convert int to float ( temp float)
+0:33 'b' ( temp int)
+0:33 'input' ( in 4-component vector of float)
+0:34 vector-scale ( temp 4-component vector of float)
+0:34 Convert int to float ( temp float)
+0:34 'c' ( temp int)
+0:34 'input' ( in 4-component vector of float)
+0:35 vector-scale ( temp 4-component vector of float)
+0:35 Convert int to float ( temp float)
+0:35 'd' ( temp int)
+0:35 'input' ( in 4-component vector of float)
+0:37 Comma ( temp int)
+0:37 move second child to first child ( temp int)
+0:37 'e' ( temp int)
+0:37 move second child to first child ( temp int)
+0:37 'a' ( temp int)
+0:37 Test condition and select ( temp int)
+0:37 Condition
+0:37 Convert int to bool ( temp bool)
+0:37 'b' ( temp int)
+0:37 true case
+0:37 move second child to first child ( temp int)
+0:37 'c' ( temp int)
+0:37 'd' ( temp int)
+0:37 false case
+0:37 Constant:
+0:37 10 (const int)
+0:37 move second child to first child ( temp int)
+0:37 'b' ( temp int)
+0:37 Test condition and select ( temp int)
+0:37 Condition
+0:37 Convert int to bool ( temp bool)
+0:37 'a' ( temp int)
+0:37 true case
+0:37 move second child to first child ( temp int)
+0:37 'd' ( temp int)
+0:37 'c' ( temp int)
+0:37 false case
+0:37 Constant:
+0:37 11 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 'f' ( temp 4-component vector of float)
+0:39 Test condition and select ( temp 4-component vector of float)
+0:39 Condition
+0:39 Compare Less Than ( temp bool)
+0:39 direct index ( temp float)
+0:39 'ret' ( temp 4-component vector of float)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( temp float)
+0:39 'input' ( in 4-component vector of float)
+0:39 Constant:
+0:39 1 (const int)
+0:39 true case
+0:39 vector-scale ( temp 4-component vector of float)
+0:39 Convert int to float ( temp float)
+0:39 'c' ( temp int)
+0:39 'input' ( in 4-component vector of float)
+0:39 false case
+0:39 vector-scale ( temp 4-component vector of float)
+0:39 Convert int to float ( temp float)
+0:39 'd' ( temp int)
+0:39 'input' ( in 4-component vector of float)
+0:41 Branch: Return with expression
+0:40 add ( temp 4-component vector of float)
+0:40 add ( temp 4-component vector of float)
+0:40 add ( temp 4-component vector of float)
+0:40 add ( temp 4-component vector of float)
+0:40 vector-scale ( temp 4-component vector of float)
+0:40 Convert int to float ( temp float)
+0:40 'e' ( temp int)
+0:40 'ret' ( temp 4-component vector of float)
+0:40 'f' ( temp 4-component vector of float)
+0:40 Function Call: vectorCond( ( temp 4-component vector of float)
+0:40 Function Call: scalarCond( ( temp 4-component vector of float)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:41 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
+0:? Constant:
+0:? true (const bool)
+0:? false (const bool)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? Constant:
+0:? 3.000000
+0:? 4.000000
+0:41 Constant:
+0:41 10.000000
+0:41 Constant:
+0:41 10.000000
+0:27 Function Definition: PixelShaderFunction( ( temp void)
+0:27 Function Parameters:
+0:? Sequence
+0:27 move second child to first child ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:2 move second child to first child ( temp 4-component vector of float)
+0:27 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:27 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 100
+// Generated by (magic number): 80002
+// Id's are bound by 220
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 93 96
+ EntryPoint Fragment 4 "PixelShaderFunction" 213 216
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
- Name 11 "@PixelShaderFunction(vf4;"
- Name 10 "input"
- Name 15 "a"
- Name 17 "b"
- Name 19 "c"
- Name 21 "d"
- Name 22 "ret"
- Name 42 "e"
- Name 59 "f"
- Name 91 "input"
- Name 93 "input"
- Name 96 "@entryPointOutput"
- Name 97 "param"
- Decorate 93(input) Location 0
- Decorate 96(@entryPointOutput) Location 0
+ Name 9 "vectorCond("
+ Name 11 "scalarCond("
+ Name 22 "fbSelect(vb2;vf2;vf2;"
+ Name 19 "cnd"
+ Name 20 "src0"
+ Name 21 "src1"
+ Name 27 "@PixelShaderFunction(vf4;"
+ Name 26 "input"
+ Name 29 "$Global"
+ MemberName 29($Global) 0 "c4"
+ MemberName 29($Global) 1 "t4"
+ MemberName 29($Global) 2 "f4"
+ MemberName 29($Global) 3 "t"
+ MemberName 29($Global) 4 "f"
+ Name 31 ""
+ Name 85 "ret"
+ Name 113 "a"
+ Name 115 "b"
+ Name 117 "c"
+ Name 119 "d"
+ Name 120 "ret"
+ Name 140 "e"
+ Name 161 "f"
+ Name 200 "param"
+ Name 201 "param"
+ Name 202 "param"
+ Name 211 "input"
+ Name 213 "input"
+ Name 216 "@entryPointOutput"
+ Name 217 "param"
+ MemberDecorate 29($Global) 0 Offset 0
+ MemberDecorate 29($Global) 1 Offset 16
+ MemberDecorate 29($Global) 2 Offset 32
+ MemberDecorate 29($Global) 3 Offset 48
+ MemberDecorate 29($Global) 4 Offset 52
+ Decorate 29($Global) Block
+ Decorate 31 DescriptorSet 0
+ Decorate 213(input) Location 0
+ Decorate 216(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
- 8: TypePointer Function 7(fvec4)
- 9: TypeFunction 7(fvec4) 8(ptr)
- 13: TypeInt 32 1
- 14: TypePointer Function 13(int)
- 16: 13(int) Constant 5
- 18: 13(int) Constant 6
- 20: 13(int) Constant 7
- 49: 13(int) Constant 10
- 57: 13(int) Constant 11
- 61: TypeInt 32 0
- 62: 61(int) Constant 0
- 63: TypePointer Function 6(float)
- 66: 61(int) Constant 1
- 69: TypeBool
- 92: TypePointer Input 7(fvec4)
- 93(input): 92(ptr) Variable Input
- 95: TypePointer Output 7(fvec4)
-96(@entryPointOutput): 95(ptr) Variable Output
+ 8: TypeFunction 7(fvec4)
+ 13: TypeBool
+ 14: TypeVector 13(bool) 2
+ 15: TypePointer Function 14(bvec2)
+ 16: TypeVector 6(float) 2
+ 17: TypePointer Function 16(fvec2)
+ 18: TypeFunction 16(fvec2) 15(ptr) 17(ptr) 17(ptr)
+ 24: TypePointer Function 7(fvec4)
+ 25: TypeFunction 7(fvec4) 24(ptr)
+ 29($Global): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 6(float) 6(float)
+ 30: TypePointer Uniform 29($Global)
+ 31: 30(ptr) Variable Uniform
+ 32: TypeInt 32 1
+ 33: 32(int) Constant 2
+ 34: TypePointer Uniform 7(fvec4)
+ 37: 32(int) Constant 1
+ 40: 32(int) Constant 0
+ 43: TypeVector 13(bool) 4
+ 44: 6(float) Constant 0
+ 45: 7(fvec4) ConstantComposite 44 44 44 44
+ 48: 32(int) Constant 4
+ 49: TypePointer Uniform 6(float)
+ 53: 32(int) Constant 3
+ 100: 6(float) Constant 1065353216
+ 101: 7(fvec4) ConstantComposite 100 100 100 100
+ 112: TypePointer Function 32(int)
+ 114: 32(int) Constant 5
+ 116: 32(int) Constant 6
+ 118: 32(int) Constant 7
+ 143: TypeInt 32 0
+ 144: 143(int) Constant 0
+ 150: 32(int) Constant 10
+ 159: 32(int) Constant 11
+ 163: TypePointer Function 6(float)
+ 166: 143(int) Constant 1
+ 192: 13(bool) ConstantTrue
+ 193: 13(bool) ConstantFalse
+ 194: 14(bvec2) ConstantComposite 192 193
+ 195: 6(float) Constant 1073741824
+ 196: 16(fvec2) ConstantComposite 100 195
+ 197: 6(float) Constant 1077936128
+ 198: 6(float) Constant 1082130432
+ 199: 16(fvec2) ConstantComposite 197 198
+ 204: 6(float) Constant 1092616192
+ 212: TypePointer Input 7(fvec4)
+ 213(input): 212(ptr) Variable Input
+ 215: TypePointer Output 7(fvec4)
+216(@entryPointOutput): 215(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
- 91(input): 8(ptr) Variable Function
- 97(param): 8(ptr) Variable Function
- 94: 7(fvec4) Load 93(input)
- Store 91(input) 94
- 98: 7(fvec4) Load 91(input)
- Store 97(param) 98
- 99: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 97(param)
- Store 96(@entryPointOutput) 99
+ 211(input): 24(ptr) Variable Function
+ 217(param): 24(ptr) Variable Function
+ 214: 7(fvec4) Load 213(input)
+ Store 211(input) 214
+ 218: 7(fvec4) Load 211(input)
+ Store 217(param) 218
+ 219: 7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 217(param)
+ Store 216(@entryPointOutput) 219
Return
FunctionEnd
-11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
- 10(input): 8(ptr) FunctionParameter
+ 9(vectorCond(): 7(fvec4) Function None 8
+ 10: Label
+ 35: 34(ptr) AccessChain 31 33
+ 36: 7(fvec4) Load 35
+ 38: 34(ptr) AccessChain 31 37
+ 39: 7(fvec4) Load 38
+ 41: 34(ptr) AccessChain 31 40
+ 42: 7(fvec4) Load 41
+ 46: 43(bvec4) FOrdNotEqual 42 45
+ 47: 7(fvec4) Select 46 39 36
+ 50: 49(ptr) AccessChain 31 48
+ 51: 6(float) Load 50
+ 52: 7(fvec4) CompositeConstruct 51 51 51 51
+ 54: 49(ptr) AccessChain 31 53
+ 55: 6(float) Load 54
+ 56: 7(fvec4) CompositeConstruct 55 55 55 55
+ 57: 34(ptr) AccessChain 31 40
+ 58: 7(fvec4) Load 57
+ 59: 43(bvec4) FOrdNotEqual 58 45
+ 60: 7(fvec4) Select 59 56 52
+ 61: 7(fvec4) FAdd 47 60
+ 62: 34(ptr) AccessChain 31 33
+ 63: 7(fvec4) Load 62
+ 64: 34(ptr) AccessChain 31 37
+ 65: 7(fvec4) Load 64
+ 66: 34(ptr) AccessChain 31 37
+ 67: 7(fvec4) Load 66
+ 68: 34(ptr) AccessChain 31 33
+ 69: 7(fvec4) Load 68
+ 70: 43(bvec4) FOrdLessThan 67 69
+ 71: 7(fvec4) Select 70 65 63
+ 72: 7(fvec4) FAdd 61 71
+ 73: 34(ptr) AccessChain 31 33
+ 74: 7(fvec4) Load 73
+ 75: 49(ptr) AccessChain 31 53
+ 76: 6(float) Load 75
+ 77: 7(fvec4) CompositeConstruct 76 76 76 76
+ 78: 34(ptr) AccessChain 31 40
+ 79: 7(fvec4) Load 78
+ 80: 43(bvec4) FOrdNotEqual 79 45
+ 81: 7(fvec4) Select 80 77 74
+ 82: 7(fvec4) FAdd 72 81
+ ReturnValue 82
+ FunctionEnd
+ 11(scalarCond(): 7(fvec4) Function None 8
12: Label
- 15(a): 14(ptr) Variable Function
- 17(b): 14(ptr) Variable Function
- 19(c): 14(ptr) Variable Function
- 21(d): 14(ptr) Variable Function
- 22(ret): 8(ptr) Variable Function
- 42(e): 14(ptr) Variable Function
- 43: 14(ptr) Variable Function
- 51: 14(ptr) Variable Function
- 59(f): 8(ptr) Variable Function
- 60: 8(ptr) Variable Function
- Store 15(a) 16
- Store 17(b) 18
- Store 19(c) 20
- Store 21(d) 20
- 23: 13(int) Load 15(a)
- 24: 6(float) ConvertSToF 23
- 25: 7(fvec4) Load 10(input)
- 26: 7(fvec4) VectorTimesScalar 25 24
- 27: 13(int) Load 17(b)
- 28: 6(float) ConvertSToF 27
- 29: 7(fvec4) Load 10(input)
- 30: 7(fvec4) VectorTimesScalar 29 28
- 31: 7(fvec4) FAdd 26 30
- 32: 13(int) Load 19(c)
- 33: 6(float) ConvertSToF 32
- 34: 7(fvec4) Load 10(input)
- 35: 7(fvec4) VectorTimesScalar 34 33
- 36: 7(fvec4) FAdd 31 35
- 37: 13(int) Load 21(d)
- 38: 6(float) ConvertSToF 37
- 39: 7(fvec4) Load 10(input)
- 40: 7(fvec4) VectorTimesScalar 39 38
- 41: 7(fvec4) FAdd 36 40
- Store 22(ret) 41
- 44: 13(int) Load 17(b)
- SelectionMerge 46 None
- BranchConditional 44 45 48
- 45: Label
- 47: 13(int) Load 21(d)
- Store 19(c) 47
- Store 43 47
- Branch 46
- 48: Label
- Store 43 49
- Branch 46
- 46: Label
- 50: 13(int) Load 43
- Store 15(a) 50
- Store 42(e) 50
- 52: 13(int) Load 15(a)
- SelectionMerge 54 None
- BranchConditional 52 53 56
- 53: Label
- 55: 13(int) Load 19(c)
- Store 21(d) 55
- Store 51 55
- Branch 54
- 56: Label
- Store 51 57
- Branch 54
- 54: Label
- 58: 13(int) Load 51
- Store 17(b) 58
- 64: 63(ptr) AccessChain 22(ret) 62
- 65: 6(float) Load 64
- 67: 63(ptr) AccessChain 10(input) 66
- 68: 6(float) Load 67
- 70: 69(bool) FOrdLessThan 65 68
- SelectionMerge 72 None
- BranchConditional 70 71 77
- 71: Label
- 73: 13(int) Load 19(c)
- 74: 6(float) ConvertSToF 73
- 75: 7(fvec4) Load 10(input)
- 76: 7(fvec4) VectorTimesScalar 75 74
- Store 60 76
- Branch 72
- 77: Label
- 78: 13(int) Load 21(d)
- 79: 6(float) ConvertSToF 78
- 80: 7(fvec4) Load 10(input)
- 81: 7(fvec4) VectorTimesScalar 80 79
- Store 60 81
- Branch 72
- 72: Label
- 82: 7(fvec4) Load 60
- Store 59(f) 82
- 83: 13(int) Load 42(e)
- 84: 6(float) ConvertSToF 83
- 85: 7(fvec4) Load 22(ret)
- 86: 7(fvec4) VectorTimesScalar 85 84
- 87: 7(fvec4) Load 59(f)
- 88: 7(fvec4) FAdd 86 87
- ReturnValue 88
+ 85(ret): 24(ptr) Variable Function
+ 86: 24(ptr) Variable Function
+ 87: 49(ptr) AccessChain 31 53
+ 88: 6(float) Load 87
+ 89: 49(ptr) AccessChain 31 48
+ 90: 6(float) Load 89
+ 91: 13(bool) FOrdNotEqual 88 90
+ SelectionMerge 93 None
+ BranchConditional 91 92 99
+ 92: Label
+ 94: 49(ptr) AccessChain 31 53
+ 95: 6(float) Load 94
+ 96: 34(ptr) AccessChain 31 33
+ 97: 7(fvec4) Load 96
+ 98: 7(fvec4) VectorTimesScalar 97 95
+ Store 86 98
+ Branch 93
+ 99: Label
+ Store 86 101
+ Branch 93
+ 93: Label
+ 102: 7(fvec4) Load 86
+ Store 85(ret) 102
+ 103: 7(fvec4) Load 85(ret)
+ ReturnValue 103
+ FunctionEnd
+22(fbSelect(vb2;vf2;vf2;): 16(fvec2) Function None 18
+ 19(cnd): 15(ptr) FunctionParameter
+ 20(src0): 17(ptr) FunctionParameter
+ 21(src1): 17(ptr) FunctionParameter
+ 23: Label
+ 106: 16(fvec2) Load 21(src1)
+ 107: 16(fvec2) Load 20(src0)
+ 108: 14(bvec2) Load 19(cnd)
+ 109: 16(fvec2) Select 108 107 106
+ ReturnValue 109
+ FunctionEnd
+27(@PixelShaderFunction(vf4;): 7(fvec4) Function None 25
+ 26(input): 24(ptr) FunctionParameter
+ 28: Label
+ 113(a): 112(ptr) Variable Function
+ 115(b): 112(ptr) Variable Function
+ 117(c): 112(ptr) Variable Function
+ 119(d): 112(ptr) Variable Function
+ 120(ret): 24(ptr) Variable Function
+ 140(e): 112(ptr) Variable Function
+ 141: 112(ptr) Variable Function
+ 152: 112(ptr) Variable Function
+ 161(f): 24(ptr) Variable Function
+ 162: 24(ptr) Variable Function
+ 200(param): 15(ptr) Variable Function
+ 201(param): 17(ptr) Variable Function
+ 202(param): 17(ptr) Variable Function
+ Store 113(a) 114
+ Store 115(b) 116
+ Store 117(c) 118
+ Store 119(d) 118
+ 121: 32(int) Load 113(a)
+ 122: 6(float) ConvertSToF 121
+ 123: 7(fvec4) Load 26(input)
+ 124: 7(fvec4) VectorTimesScalar 123 122
+ 125: 32(int) Load 115(b)
+ 126: 6(float) ConvertSToF 125
+ 127: 7(fvec4) Load 26(input)
+ 128: 7(fvec4) VectorTimesScalar 127 126
+ 129: 7(fvec4) FAdd 124 128
+ 130: 32(int) Load 117(c)
+ 131: 6(float) ConvertSToF 130
+ 132: 7(fvec4) Load 26(input)
+ 133: 7(fvec4) VectorTimesScalar 132 131
+ 134: 7(fvec4) FAdd 129 133
+ 135: 32(int) Load 119(d)
+ 136: 6(float) ConvertSToF 135
+ 137: 7(fvec4) Load 26(input)
+ 138: 7(fvec4) VectorTimesScalar 137 136
+ 139: 7(fvec4) FAdd 134 138
+ Store 120(ret) 139
+ 142: 32(int) Load 115(b)
+ 145: 13(bool) INotEqual 142 144
+ SelectionMerge 147 None
+ BranchConditional 145 146 149
+ 146: Label
+ 148: 32(int) Load 119(d)
+ Store 117(c) 148
+ Store 141 148
+ Branch 147
+ 149: Label
+ Store 141 150
+ Branch 147
+ 147: Label
+ 151: 32(int) Load 141
+ Store 113(a) 151
+ Store 140(e) 151
+ 153: 32(int) Load 113(a)
+ 154: 13(bool) INotEqual 153 144
+ SelectionMerge 156 None
+ BranchConditional 154 155 158
+ 155: Label
+ 157: 32(int) Load 117(c)
+ Store 119(d) 157
+ Store 152 157
+ Branch 156
+ 158: Label
+ Store 152 159
+ Branch 156
+ 156: Label
+ 160: 32(int) Load 152
+ Store 115(b) 160
+ 164: 163(ptr) AccessChain 120(ret) 144
+ 165: 6(float) Load 164
+ 167: 163(ptr) AccessChain 26(input) 166
+ 168: 6(float) Load 167
+ 169: 13(bool) FOrdLessThan 165 168
+ SelectionMerge 171 None
+ BranchConditional 169 170 176
+ 170: Label
+ 172: 32(int) Load 117(c)
+ 173: 6(float) ConvertSToF 172
+ 174: 7(fvec4) Load 26(input)
+ 175: 7(fvec4) VectorTimesScalar 174 173
+ Store 162 175
+ Branch 171
+ 176: Label
+ 177: 32(int) Load 119(d)
+ 178: 6(float) ConvertSToF 177
+ 179: 7(fvec4) Load 26(input)
+ 180: 7(fvec4) VectorTimesScalar 179 178
+ Store 162 180
+ Branch 171
+ 171: Label
+ 181: 7(fvec4) Load 162
+ Store 161(f) 181
+ 182: 32(int) Load 140(e)
+ 183: 6(float) ConvertSToF 182
+ 184: 7(fvec4) Load 120(ret)
+ 185: 7(fvec4) VectorTimesScalar 184 183
+ 186: 7(fvec4) Load 161(f)
+ 187: 7(fvec4) FAdd 185 186
+ 188: 7(fvec4) FunctionCall 9(vectorCond()
+ 189: 7(fvec4) FAdd 187 188
+ 190: 7(fvec4) FunctionCall 11(scalarCond()
+ 191: 7(fvec4) FAdd 189 190
+ Store 200(param) 194
+ Store 201(param) 196
+ Store 202(param) 199
+ 203: 16(fvec2) FunctionCall 22(fbSelect(vb2;vf2;vf2;) 200(param) 201(param) 202(param)
+ 205: 6(float) CompositeExtract 203 0
+ 206: 6(float) CompositeExtract 203 1
+ 207: 7(fvec4) CompositeConstruct 205 206 204 204
+ 208: 7(fvec4) FAdd 191 207
+ ReturnValue 208
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constantbuffer.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constantbuffer.frag.out
new file mode 100644
index 00000000000..58e9ed86765
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constantbuffer.frag.out
@@ -0,0 +1,241 @@
+hlsl.constantbuffer.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:20 Function Definition: @main( ( temp 4-component vector of float)
+0:20 Function Parameters:
+0:? Sequence
+0:21 Test condition and select ( temp void)
+0:21 Condition
+0:21 x: direct index for structure (layout( row_major std140) uniform bool)
+0:21 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:21 direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:21 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:21 Constant:
+0:21 1 (const int)
+0:21 Constant:
+0:21 2 (const int)
+0:21 Constant:
+0:21 0 (const int)
+0:21 true case
+0:22 Branch: Return with expression
+0:22 add ( temp 4-component vector of float)
+0:22 add ( temp 4-component vector of float)
+0:22 x: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:22 'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x})
+0:22 Constant:
+0:22 0 (const int)
+0:22 y: direct index for structure (layout( row_major std140) uniform float)
+0:22 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:22 'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Convert int to float ( temp float)
+0:22 c1: direct index for structure (layout( row_major std140) uniform int)
+0:22 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1})
+0:22 Constant:
+0:22 0 (const uint)
+0:21 false case
+0:24 Branch: Return with expression
+0:24 Construct vec4 ( temp 4-component vector of float)
+0:24 y: direct index for structure (layout( row_major std140) uniform float)
+0:24 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:24 direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:24 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:24 Constant:
+0:24 1 (const int)
+0:24 Constant:
+0:24 3 (const int)
+0:24 Constant:
+0:24 1 (const int)
+0:20 Function Definition: main( ( temp void)
+0:20 Function Parameters:
+0:? Sequence
+0:20 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:20 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x})
+0:? 'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:? 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:20 Function Definition: @main( ( temp 4-component vector of float)
+0:20 Function Parameters:
+0:? Sequence
+0:21 Test condition and select ( temp void)
+0:21 Condition
+0:21 x: direct index for structure (layout( row_major std140) uniform bool)
+0:21 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:21 direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:21 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:21 Constant:
+0:21 1 (const int)
+0:21 Constant:
+0:21 2 (const int)
+0:21 Constant:
+0:21 0 (const int)
+0:21 true case
+0:22 Branch: Return with expression
+0:22 add ( temp 4-component vector of float)
+0:22 add ( temp 4-component vector of float)
+0:22 x: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:22 'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x})
+0:22 Constant:
+0:22 0 (const int)
+0:22 y: direct index for structure (layout( row_major std140) uniform float)
+0:22 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:22 'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Convert int to float ( temp float)
+0:22 c1: direct index for structure (layout( row_major std140) uniform int)
+0:22 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1})
+0:22 Constant:
+0:22 0 (const uint)
+0:21 false case
+0:24 Branch: Return with expression
+0:24 Construct vec4 ( temp 4-component vector of float)
+0:24 y: direct index for structure (layout( row_major std140) uniform float)
+0:24 direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:24 direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:24 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:24 Constant:
+0:24 1 (const int)
+0:24 Constant:
+0:24 3 (const int)
+0:24 Constant:
+0:24 1 (const int)
+0:20 Function Definition: main( ( temp void)
+0:20 Function Parameters:
+0:? Sequence
+0:20 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:20 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x})
+0:? 'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:? 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
+0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 66
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 64
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 12 "cb3"
+ MemberName 12(cb3) 0 "x"
+ MemberName 12(cb3) 1 "y"
+ Name 18 "cb3"
+ Name 31 "cb1"
+ MemberName 31(cb1) 0 "x"
+ Name 33 "cb1"
+ Name 40 "cb2"
+ Name 46 "cbuff"
+ MemberName 46(cbuff) 0 "c1"
+ Name 48 ""
+ Name 64 "@entryPointOutput"
+ MemberDecorate 12(cb3) 0 Offset 0
+ MemberDecorate 12(cb3) 1 Offset 4
+ Decorate 12(cb3) Block
+ Decorate 18(cb3) DescriptorSet 0
+ MemberDecorate 31(cb1) 0 Offset 0
+ Decorate 31(cb1) Block
+ Decorate 33(cb1) DescriptorSet 0
+ Decorate 33(cb1) Binding 12
+ Decorate 40(cb2) DescriptorSet 0
+ MemberDecorate 46(cbuff) 0 Offset 0
+ Decorate 46(cbuff) Block
+ Decorate 48 DescriptorSet 0
+ Decorate 64(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeInt 32 0
+ 12(cb3): TypeStruct 11(int) 6(float)
+ 13: 11(int) Constant 4
+ 14: TypeArray 12(cb3) 13
+ 15: 11(int) Constant 2
+ 16: TypeArray 14 15
+ 17: TypePointer Uniform 16
+ 18(cb3): 17(ptr) Variable Uniform
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 1
+ 21: 19(int) Constant 2
+ 22: 19(int) Constant 0
+ 23: TypePointer Uniform 11(int)
+ 26: TypeBool
+ 27: 11(int) Constant 0
+ 31(cb1): TypeStruct 7(fvec4)
+ 32: TypePointer Uniform 31(cb1)
+ 33(cb1): 32(ptr) Variable Uniform
+ 34: TypePointer Uniform 7(fvec4)
+ 37: 11(int) Constant 3
+ 38: TypeArray 12(cb3) 37
+ 39: TypePointer Uniform 38
+ 40(cb2): 39(ptr) Variable Uniform
+ 41: TypePointer Uniform 6(float)
+ 46(cbuff): TypeStruct 19(int)
+ 47: TypePointer Uniform 46(cbuff)
+ 48: 47(ptr) Variable Uniform
+ 49: TypePointer Uniform 19(int)
+ 57: 19(int) Constant 3
+ 63: TypePointer Output 7(fvec4)
+64(@entryPointOutput): 63(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 65: 7(fvec4) FunctionCall 9(@main()
+ Store 64(@entryPointOutput) 65
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 24: 23(ptr) AccessChain 18(cb3) 20 21 22
+ 25: 11(int) Load 24
+ 28: 26(bool) INotEqual 25 27
+ SelectionMerge 30 None
+ BranchConditional 28 29 56
+ 29: Label
+ 35: 34(ptr) AccessChain 33(cb1) 22
+ 36: 7(fvec4) Load 35
+ 42: 41(ptr) AccessChain 40(cb2) 20 20
+ 43: 6(float) Load 42
+ 44: 7(fvec4) CompositeConstruct 43 43 43 43
+ 45: 7(fvec4) FAdd 36 44
+ 50: 49(ptr) AccessChain 48 22
+ 51: 19(int) Load 50
+ 52: 6(float) ConvertSToF 51
+ 53: 7(fvec4) CompositeConstruct 52 52 52 52
+ 54: 7(fvec4) FAdd 45 53
+ ReturnValue 54
+ 56: Label
+ 58: 41(ptr) AccessChain 18(cb3) 20 57 20
+ 59: 6(float) Load 58
+ 60: 7(fvec4) CompositeConstruct 59 59 59 59
+ ReturnValue 60
+ 30: Label
+ 62: 7(fvec4) Undef
+ ReturnValue 62
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructArray.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructArray.vert.out
new file mode 100644
index 00000000000..7140bea6c41
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructArray.vert.out
@@ -0,0 +1,381 @@
+hlsl.constructArray.vert
+Shader version: 500
+0:? Sequence
+0:2 Function Definition: @main( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:4 Sequence
+0:4 move second child to first child ( temp 2-element array of 4-component vector of float)
+0:4 'float4_array_times' ( temp 2-element array of 4-component vector of float)
+0:4 Construct structure ( temp 2-element array of 4-component vector of float)
+0:4 Convert int to float ( temp 4-component vector of float)
+0:4 direct index ( temp 4-component vector of int)
+0:4 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Convert int to float ( temp 4-component vector of float)
+0:4 direct index ( temp 4-component vector of int)
+0:4 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:4 Constant:
+0:4 1 (const int)
+0:5 Sequence
+0:5 move second child to first child ( temp 4-element array of 2-component vector of float)
+0:5 'float2_array_times2' ( temp 4-element array of 2-component vector of float)
+0:5 Construct structure ( temp 4-element array of 2-component vector of float)
+0:5 Convert int to float ( temp 2-component vector of float)
+0:5 Construct ivec2 ( temp 2-component vector of int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Convert int to float ( temp 2-component vector of float)
+0:5 Construct ivec2 ( temp 2-component vector of int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 Constant:
+0:5 2 (const int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 Constant:
+0:5 3 (const int)
+0:5 Convert int to float ( temp 2-component vector of float)
+0:5 Construct ivec2 ( temp 2-component vector of int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Convert int to float ( temp 2-component vector of float)
+0:5 Construct ivec2 ( temp 2-component vector of int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Constant:
+0:5 2 (const int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Constant:
+0:5 3 (const int)
+0:6 Sequence
+0:6 move second child to first child ( temp 2-element array of 4-component vector of int)
+0:6 'int4_array2' ( temp 2-element array of 4-component vector of int)
+0:6 Construct structure ( temp 2-element array of 4-component vector of int)
+0:6 direct index ( temp 4-component vector of int)
+0:6 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:6 Constant:
+0:6 0 (const int)
+0:6 direct index ( temp 4-component vector of int)
+0:6 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:6 Constant:
+0:6 1 (const int)
+0:7 Sequence
+0:7 move second child to first child ( temp 2-element array of int)
+0:7 'int1_array' ( temp 2-element array of int)
+0:7 Construct structure ( temp 2-element array of int)
+0:7 direct index ( temp int)
+0:7 direct index ( temp 4-component vector of int)
+0:7 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 direct index ( temp int)
+0:7 direct index ( temp 4-component vector of int)
+0:7 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:9 Branch: Return with expression
+0:9 Constant:
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:2 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:2 Function Definition: @main( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:4 Sequence
+0:4 move second child to first child ( temp 2-element array of 4-component vector of float)
+0:4 'float4_array_times' ( temp 2-element array of 4-component vector of float)
+0:4 Construct structure ( temp 2-element array of 4-component vector of float)
+0:4 Convert int to float ( temp 4-component vector of float)
+0:4 direct index ( temp 4-component vector of int)
+0:4 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:4 Constant:
+0:4 0 (const int)
+0:4 Convert int to float ( temp 4-component vector of float)
+0:4 direct index ( temp 4-component vector of int)
+0:4 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:4 Constant:
+0:4 1 (const int)
+0:5 Sequence
+0:5 move second child to first child ( temp 4-element array of 2-component vector of float)
+0:5 'float2_array_times2' ( temp 4-element array of 2-component vector of float)
+0:5 Construct structure ( temp 4-element array of 2-component vector of float)
+0:5 Convert int to float ( temp 2-component vector of float)
+0:5 Construct ivec2 ( temp 2-component vector of int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Convert int to float ( temp 2-component vector of float)
+0:5 Construct ivec2 ( temp 2-component vector of int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 Constant:
+0:5 2 (const int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 Constant:
+0:5 3 (const int)
+0:5 Convert int to float ( temp 2-component vector of float)
+0:5 Construct ivec2 ( temp 2-component vector of int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Convert int to float ( temp 2-component vector of float)
+0:5 Construct ivec2 ( temp 2-component vector of int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Constant:
+0:5 2 (const int)
+0:5 direct index ( temp int)
+0:5 direct index ( temp 4-component vector of int)
+0:5 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Constant:
+0:5 3 (const int)
+0:6 Sequence
+0:6 move second child to first child ( temp 2-element array of 4-component vector of int)
+0:6 'int4_array2' ( temp 2-element array of 4-component vector of int)
+0:6 Construct structure ( temp 2-element array of 4-component vector of int)
+0:6 direct index ( temp 4-component vector of int)
+0:6 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:6 Constant:
+0:6 0 (const int)
+0:6 direct index ( temp 4-component vector of int)
+0:6 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:6 Constant:
+0:6 1 (const int)
+0:7 Sequence
+0:7 move second child to first child ( temp 2-element array of int)
+0:7 'int1_array' ( temp 2-element array of int)
+0:7 Construct structure ( temp 2-element array of int)
+0:7 direct index ( temp int)
+0:7 direct index ( temp 4-component vector of int)
+0:7 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 direct index ( temp int)
+0:7 direct index ( temp 4-component vector of int)
+0:7 'int4_array' ( temp 3-element array of 4-component vector of int)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 1 (const int)
+0:9 Branch: Return with expression
+0:9 Constant:
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:2 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 89
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 87
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 15 "float4_array_times"
+ Name 21 "int4_array"
+ Name 36 "float2_array_times2"
+ Name 68 "int4_array2"
+ Name 76 "int1_array"
+ Name 87 "@entryPointOutput"
+ Decorate 87(@entryPointOutput) BuiltIn Position
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeInt 32 0
+ 12: 11(int) Constant 2
+ 13: TypeArray 7(fvec4) 12
+ 14: TypePointer Function 13
+ 16: TypeInt 32 1
+ 17: TypeVector 16(int) 4
+ 18: 11(int) Constant 3
+ 19: TypeArray 17(ivec4) 18
+ 20: TypePointer Function 19
+ 22: 16(int) Constant 0
+ 23: TypePointer Function 17(ivec4)
+ 27: 16(int) Constant 1
+ 32: TypeVector 6(float) 2
+ 33: 11(int) Constant 4
+ 34: TypeArray 32(fvec2) 33
+ 35: TypePointer Function 34
+ 37: 11(int) Constant 0
+ 38: TypePointer Function 16(int)
+ 41: 11(int) Constant 1
+ 44: TypeVector 16(int) 2
+ 66: TypeArray 17(ivec4) 12
+ 67: TypePointer Function 66
+ 74: TypeArray 16(int) 12
+ 75: TypePointer Function 74
+ 82: 6(float) Constant 0
+ 83: 7(fvec4) ConstantComposite 82 82 82 82
+ 86: TypePointer Output 7(fvec4)
+87(@entryPointOutput): 86(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 88: 7(fvec4) FunctionCall 9(@main()
+ Store 87(@entryPointOutput) 88
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+15(float4_array_times): 14(ptr) Variable Function
+ 21(int4_array): 20(ptr) Variable Function
+36(float2_array_times2): 35(ptr) Variable Function
+ 68(int4_array2): 67(ptr) Variable Function
+ 76(int1_array): 75(ptr) Variable Function
+ 24: 23(ptr) AccessChain 21(int4_array) 22
+ 25: 17(ivec4) Load 24
+ 26: 7(fvec4) ConvertSToF 25
+ 28: 23(ptr) AccessChain 21(int4_array) 27
+ 29: 17(ivec4) Load 28
+ 30: 7(fvec4) ConvertSToF 29
+ 31: 13 CompositeConstruct 26 30
+ Store 15(float4_array_times) 31
+ 39: 38(ptr) AccessChain 21(int4_array) 22 37
+ 40: 16(int) Load 39
+ 42: 38(ptr) AccessChain 21(int4_array) 22 41
+ 43: 16(int) Load 42
+ 45: 44(ivec2) CompositeConstruct 40 43
+ 46: 32(fvec2) ConvertSToF 45
+ 47: 38(ptr) AccessChain 21(int4_array) 22 12
+ 48: 16(int) Load 47
+ 49: 38(ptr) AccessChain 21(int4_array) 22 18
+ 50: 16(int) Load 49
+ 51: 44(ivec2) CompositeConstruct 48 50
+ 52: 32(fvec2) ConvertSToF 51
+ 53: 38(ptr) AccessChain 21(int4_array) 27 37
+ 54: 16(int) Load 53
+ 55: 38(ptr) AccessChain 21(int4_array) 27 41
+ 56: 16(int) Load 55
+ 57: 44(ivec2) CompositeConstruct 54 56
+ 58: 32(fvec2) ConvertSToF 57
+ 59: 38(ptr) AccessChain 21(int4_array) 27 12
+ 60: 16(int) Load 59
+ 61: 38(ptr) AccessChain 21(int4_array) 27 18
+ 62: 16(int) Load 61
+ 63: 44(ivec2) CompositeConstruct 60 62
+ 64: 32(fvec2) ConvertSToF 63
+ 65: 34 CompositeConstruct 46 52 58 64
+ Store 36(float2_array_times2) 65
+ 69: 23(ptr) AccessChain 21(int4_array) 22
+ 70: 17(ivec4) Load 69
+ 71: 23(ptr) AccessChain 21(int4_array) 27
+ 72: 17(ivec4) Load 71
+ 73: 66 CompositeConstruct 70 72
+ Store 68(int4_array2) 73
+ 77: 38(ptr) AccessChain 21(int4_array) 22 37
+ 78: 16(int) Load 77
+ 79: 38(ptr) AccessChain 21(int4_array) 22 41
+ 80: 16(int) Load 79
+ 81: 74 CompositeConstruct 78 80
+ Store 76(int1_array) 81
+ ReturnValue 83
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructexpr.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructexpr.frag.out
index eed169486a7..1321bfebbc9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructexpr.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructexpr.frag.out
@@ -1,5 +1,5 @@
hlsl.constructexpr.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
@@ -41,19 +41,19 @@ gl_FragCoord origin is upper left
0:? Sequence
0:4 Sequence
0:4 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:4 color: direct index for structure ( temp 4-component vector of float)
0:4 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:4 Constant:
0:4 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
@@ -95,16 +95,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:4 Sequence
0:4 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:4 color: direct index for structure ( temp 4-component vector of float)
0:4 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:4 Constant:
0:4 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 40
Capability Shader
@@ -112,13 +112,14 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 37
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "color"
Name 10 "@main("
Name 27 "ps_output"
- Name 37 "color"
- Decorate 37(color) Location 0
+ Name 37 "@entryPointOutput.color"
+ Decorate 37(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -145,12 +146,12 @@ gl_FragCoord origin is upper left
30: 7(fvec4) ConstantComposite 29 29 29 29
31: TypePointer Function 7(fvec4)
36: TypePointer Output 7(fvec4)
- 37(color): 36(ptr) Variable Output
+37(@entryPointOutput.color): 36(ptr) Variable Output
4(main): 2 Function None 3
5: Label
38:8(PS_OUTPUT) FunctionCall 10(@main()
39: 7(fvec4) CompositeExtract 38 0
- Store 37(color) 39
+ Store 37(@entryPointOutput.color) 39
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructimat.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructimat.frag.out
new file mode 100644
index 00000000000..f54945ae812
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.constructimat.frag.out
@@ -0,0 +1,694 @@
+hlsl.constructimat.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: @main( ( temp int)
+0:2 Function Parameters:
+0:? Sequence
+0:6 Sequence
+0:6 move second child to first child ( temp 4X4 matrix of int)
+0:6 'var443' ( temp 4X4 matrix of int)
+0:6 Constant:
+0:6 0 (const int)
+0:6 1 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 1 (const int)
+0:6 1 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 1 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:7 Sequence
+0:7 move second child to first child ( temp 4X4 matrix of int)
+0:7 'var444' ( temp 4X4 matrix of int)
+0:? Constant:
+0:? 0 (const int)
+0:? 1 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 1 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:11 Sequence
+0:11 move second child to first child ( temp 4X2 matrix of int)
+0:11 'var423' ( temp 4X2 matrix of int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 1 (const int)
+0:11 1 (const int)
+0:11 1 (const int)
+0:11 1 (const int)
+0:11 0 (const int)
+0:11 0 (const int)
+0:11 0 (const int)
+0:12 Sequence
+0:12 move second child to first child ( temp 4X2 matrix of int)
+0:12 'var424' ( temp 4X2 matrix of int)
+0:? Constant:
+0:? 0 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:16 Sequence
+0:16 move second child to first child ( temp 3X2 matrix of int)
+0:16 'var323' ( temp 3X2 matrix of int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 1 (const int)
+0:16 1 (const int)
+0:16 1 (const int)
+0:16 1 (const int)
+0:16 0 (const int)
+0:17 Sequence
+0:17 move second child to first child ( temp 3X2 matrix of int)
+0:17 'var234' ( temp 3X2 matrix of int)
+0:? Constant:
+0:? 0 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 0 (const int)
+0:22 Sequence
+0:22 move second child to first child ( temp 4X4 matrix of uint)
+0:22 'uvar443' ( temp 4X4 matrix of uint)
+0:22 Constant:
+0:22 0 (const uint)
+0:22 1 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 1 (const uint)
+0:22 1 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 1 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:23 Sequence
+0:23 move second child to first child ( temp 4X4 matrix of uint)
+0:23 'uvar444' ( temp 4X4 matrix of uint)
+0:? Constant:
+0:? 0 (const uint)
+0:? 1 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 1 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:27 Sequence
+0:27 move second child to first child ( temp 4X2 matrix of uint)
+0:27 'uvar423' ( temp 4X2 matrix of uint)
+0:27 Constant:
+0:27 0 (const uint)
+0:27 1 (const uint)
+0:27 1 (const uint)
+0:27 1 (const uint)
+0:27 1 (const uint)
+0:27 0 (const uint)
+0:27 0 (const uint)
+0:27 0 (const uint)
+0:28 Sequence
+0:28 move second child to first child ( temp 4X2 matrix of uint)
+0:28 'uvar424' ( temp 4X2 matrix of uint)
+0:? Constant:
+0:? 0 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:32 Sequence
+0:32 move second child to first child ( temp 3X2 matrix of uint)
+0:32 'uvar323' ( temp 3X2 matrix of uint)
+0:32 Constant:
+0:32 0 (const uint)
+0:32 1 (const uint)
+0:32 1 (const uint)
+0:32 1 (const uint)
+0:32 1 (const uint)
+0:32 0 (const uint)
+0:33 Sequence
+0:33 move second child to first child ( temp 3X2 matrix of uint)
+0:33 'uvar234' ( temp 3X2 matrix of uint)
+0:? Constant:
+0:? 0 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 0 (const uint)
+0:38 Sequence
+0:38 move second child to first child ( temp 4X4 matrix of bool)
+0:38 'bvar443' ( temp 4X4 matrix of bool)
+0:38 Constant:
+0:38 false (const bool)
+0:38 true (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 true (const bool)
+0:38 true (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 true (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:39 Sequence
+0:39 move second child to first child ( temp 4X4 matrix of bool)
+0:39 'bvar444' ( temp 4X4 matrix of bool)
+0:? Constant:
+0:? false (const bool)
+0:? true (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? true (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:43 Sequence
+0:43 move second child to first child ( temp 4X2 matrix of bool)
+0:43 'bvar423' ( temp 4X2 matrix of bool)
+0:43 Constant:
+0:43 false (const bool)
+0:43 true (const bool)
+0:43 true (const bool)
+0:43 true (const bool)
+0:43 true (const bool)
+0:43 false (const bool)
+0:43 false (const bool)
+0:43 false (const bool)
+0:44 Sequence
+0:44 move second child to first child ( temp 4X2 matrix of bool)
+0:44 'bvar424' ( temp 4X2 matrix of bool)
+0:? Constant:
+0:? false (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:48 Sequence
+0:48 move second child to first child ( temp 3X2 matrix of bool)
+0:48 'bvar323' ( temp 3X2 matrix of bool)
+0:48 Constant:
+0:48 false (const bool)
+0:48 true (const bool)
+0:48 true (const bool)
+0:48 true (const bool)
+0:48 true (const bool)
+0:48 false (const bool)
+0:49 Sequence
+0:49 move second child to first child ( temp 3X2 matrix of bool)
+0:49 'bvar234' ( temp 3X2 matrix of bool)
+0:? Constant:
+0:? false (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? false (const bool)
+0:51 Branch: Return with expression
+0:51 Constant:
+0:51 0 (const int)
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp int)
+0:? '@entryPointOutput' (layout( location=0) out int)
+0:2 Function Call: @main( ( temp int)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out int)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: @main( ( temp int)
+0:2 Function Parameters:
+0:? Sequence
+0:6 Sequence
+0:6 move second child to first child ( temp 4X4 matrix of int)
+0:6 'var443' ( temp 4X4 matrix of int)
+0:6 Constant:
+0:6 0 (const int)
+0:6 1 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 1 (const int)
+0:6 1 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 1 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:6 0 (const int)
+0:7 Sequence
+0:7 move second child to first child ( temp 4X4 matrix of int)
+0:7 'var444' ( temp 4X4 matrix of int)
+0:? Constant:
+0:? 0 (const int)
+0:? 1 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 1 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:11 Sequence
+0:11 move second child to first child ( temp 4X2 matrix of int)
+0:11 'var423' ( temp 4X2 matrix of int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 1 (const int)
+0:11 1 (const int)
+0:11 1 (const int)
+0:11 1 (const int)
+0:11 0 (const int)
+0:11 0 (const int)
+0:11 0 (const int)
+0:12 Sequence
+0:12 move second child to first child ( temp 4X2 matrix of int)
+0:12 'var424' ( temp 4X2 matrix of int)
+0:? Constant:
+0:? 0 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:? 0 (const int)
+0:16 Sequence
+0:16 move second child to first child ( temp 3X2 matrix of int)
+0:16 'var323' ( temp 3X2 matrix of int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 1 (const int)
+0:16 1 (const int)
+0:16 1 (const int)
+0:16 1 (const int)
+0:16 0 (const int)
+0:17 Sequence
+0:17 move second child to first child ( temp 3X2 matrix of int)
+0:17 'var234' ( temp 3X2 matrix of int)
+0:? Constant:
+0:? 0 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 1 (const int)
+0:? 0 (const int)
+0:22 Sequence
+0:22 move second child to first child ( temp 4X4 matrix of uint)
+0:22 'uvar443' ( temp 4X4 matrix of uint)
+0:22 Constant:
+0:22 0 (const uint)
+0:22 1 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 1 (const uint)
+0:22 1 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 1 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:22 0 (const uint)
+0:23 Sequence
+0:23 move second child to first child ( temp 4X4 matrix of uint)
+0:23 'uvar444' ( temp 4X4 matrix of uint)
+0:? Constant:
+0:? 0 (const uint)
+0:? 1 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 1 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:27 Sequence
+0:27 move second child to first child ( temp 4X2 matrix of uint)
+0:27 'uvar423' ( temp 4X2 matrix of uint)
+0:27 Constant:
+0:27 0 (const uint)
+0:27 1 (const uint)
+0:27 1 (const uint)
+0:27 1 (const uint)
+0:27 1 (const uint)
+0:27 0 (const uint)
+0:27 0 (const uint)
+0:27 0 (const uint)
+0:28 Sequence
+0:28 move second child to first child ( temp 4X2 matrix of uint)
+0:28 'uvar424' ( temp 4X2 matrix of uint)
+0:? Constant:
+0:? 0 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:? 0 (const uint)
+0:32 Sequence
+0:32 move second child to first child ( temp 3X2 matrix of uint)
+0:32 'uvar323' ( temp 3X2 matrix of uint)
+0:32 Constant:
+0:32 0 (const uint)
+0:32 1 (const uint)
+0:32 1 (const uint)
+0:32 1 (const uint)
+0:32 1 (const uint)
+0:32 0 (const uint)
+0:33 Sequence
+0:33 move second child to first child ( temp 3X2 matrix of uint)
+0:33 'uvar234' ( temp 3X2 matrix of uint)
+0:? Constant:
+0:? 0 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 0 (const uint)
+0:38 Sequence
+0:38 move second child to first child ( temp 4X4 matrix of bool)
+0:38 'bvar443' ( temp 4X4 matrix of bool)
+0:38 Constant:
+0:38 false (const bool)
+0:38 true (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 true (const bool)
+0:38 true (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 true (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:38 false (const bool)
+0:39 Sequence
+0:39 move second child to first child ( temp 4X4 matrix of bool)
+0:39 'bvar444' ( temp 4X4 matrix of bool)
+0:? Constant:
+0:? false (const bool)
+0:? true (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? true (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:43 Sequence
+0:43 move second child to first child ( temp 4X2 matrix of bool)
+0:43 'bvar423' ( temp 4X2 matrix of bool)
+0:43 Constant:
+0:43 false (const bool)
+0:43 true (const bool)
+0:43 true (const bool)
+0:43 true (const bool)
+0:43 true (const bool)
+0:43 false (const bool)
+0:43 false (const bool)
+0:43 false (const bool)
+0:44 Sequence
+0:44 move second child to first child ( temp 4X2 matrix of bool)
+0:44 'bvar424' ( temp 4X2 matrix of bool)
+0:? Constant:
+0:? false (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:? false (const bool)
+0:48 Sequence
+0:48 move second child to first child ( temp 3X2 matrix of bool)
+0:48 'bvar323' ( temp 3X2 matrix of bool)
+0:48 Constant:
+0:48 false (const bool)
+0:48 true (const bool)
+0:48 true (const bool)
+0:48 true (const bool)
+0:48 true (const bool)
+0:48 false (const bool)
+0:49 Sequence
+0:49 move second child to first child ( temp 3X2 matrix of bool)
+0:49 'bvar234' ( temp 3X2 matrix of bool)
+0:? Constant:
+0:? false (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? true (const bool)
+0:? false (const bool)
+0:51 Branch: Return with expression
+0:51 Constant:
+0:51 0 (const int)
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp int)
+0:? '@entryPointOutput' (layout( location=0) out int)
+0:2 Function Call: @main( ( temp int)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out int)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 98
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 96
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "@main("
+ Name 13 "var443"
+ Name 21 "var444"
+ Name 25 "var423"
+ Name 31 "var424"
+ Name 34 "var323"
+ Name 36 "var234"
+ Name 41 "uvar443"
+ Name 49 "uvar444"
+ Name 53 "uvar423"
+ Name 59 "uvar424"
+ Name 62 "uvar323"
+ Name 64 "uvar234"
+ Name 69 "bvar443"
+ Name 77 "bvar444"
+ Name 81 "bvar423"
+ Name 87 "bvar424"
+ Name 90 "bvar323"
+ Name 92 "bvar234"
+ Name 96 "@entryPointOutput"
+ Decorate 96(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypeFunction 6(int)
+ 10: TypeVector 6(int) 4
+ 11: TypeMatrix 10(ivec4) 4
+ 12: TypePointer Function 11
+ 14: 6(int) Constant 0
+ 15: 6(int) Constant 1
+ 16: 10(ivec4) ConstantComposite 14 15 14 14
+ 17: 10(ivec4) ConstantComposite 15 15 14 14
+ 18: 10(ivec4) ConstantComposite 15 14 14 14
+ 19: 10(ivec4) ConstantComposite 14 14 14 14
+ 20: 11 ConstantComposite 16 17 18 19
+ 22: TypeVector 6(int) 2
+ 23: TypeMatrix 22(ivec2) 4
+ 24: TypePointer Function 23
+ 26: 22(ivec2) ConstantComposite 14 15
+ 27: 22(ivec2) ConstantComposite 15 15
+ 28: 22(ivec2) ConstantComposite 15 14
+ 29: 22(ivec2) ConstantComposite 14 14
+ 30: 23 ConstantComposite 26 27 28 29
+ 32: TypeMatrix 22(ivec2) 3
+ 33: TypePointer Function 32
+ 35: 32 ConstantComposite 26 27 28
+ 37: TypeInt 32 0
+ 38: TypeVector 37(int) 4
+ 39: TypeMatrix 38(ivec4) 4
+ 40: TypePointer Function 39
+ 42: 37(int) Constant 0
+ 43: 37(int) Constant 1
+ 44: 38(ivec4) ConstantComposite 42 43 42 42
+ 45: 38(ivec4) ConstantComposite 43 43 42 42
+ 46: 38(ivec4) ConstantComposite 43 42 42 42
+ 47: 38(ivec4) ConstantComposite 42 42 42 42
+ 48: 39 ConstantComposite 44 45 46 47
+ 50: TypeVector 37(int) 2
+ 51: TypeMatrix 50(ivec2) 4
+ 52: TypePointer Function 51
+ 54: 50(ivec2) ConstantComposite 42 43
+ 55: 50(ivec2) ConstantComposite 43 43
+ 56: 50(ivec2) ConstantComposite 43 42
+ 57: 50(ivec2) ConstantComposite 42 42
+ 58: 51 ConstantComposite 54 55 56 57
+ 60: TypeMatrix 50(ivec2) 3
+ 61: TypePointer Function 60
+ 63: 60 ConstantComposite 54 55 56
+ 65: TypeBool
+ 66: TypeVector 65(bool) 4
+ 67: TypeMatrix 66(bvec4) 4
+ 68: TypePointer Function 67
+ 70: 65(bool) ConstantFalse
+ 71: 65(bool) ConstantTrue
+ 72: 66(bvec4) ConstantComposite 70 71 70 70
+ 73: 66(bvec4) ConstantComposite 71 71 70 70
+ 74: 66(bvec4) ConstantComposite 71 70 70 70
+ 75: 66(bvec4) ConstantComposite 70 70 70 70
+ 76: 67 ConstantComposite 72 73 74 75
+ 78: TypeVector 65(bool) 2
+ 79: TypeMatrix 78(bvec2) 4
+ 80: TypePointer Function 79
+ 82: 78(bvec2) ConstantComposite 70 71
+ 83: 78(bvec2) ConstantComposite 71 71
+ 84: 78(bvec2) ConstantComposite 71 70
+ 85: 78(bvec2) ConstantComposite 70 70
+ 86: 79 ConstantComposite 82 83 84 85
+ 88: TypeMatrix 78(bvec2) 3
+ 89: TypePointer Function 88
+ 91: 88 ConstantComposite 82 83 84
+ 95: TypePointer Output 6(int)
+96(@entryPointOutput): 95(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 97: 6(int) FunctionCall 8(@main()
+ Store 96(@entryPointOutput) 97
+ Return
+ FunctionEnd
+ 8(@main(): 6(int) Function None 7
+ 9: Label
+ 13(var443): 12(ptr) Variable Function
+ 21(var444): 12(ptr) Variable Function
+ 25(var423): 24(ptr) Variable Function
+ 31(var424): 24(ptr) Variable Function
+ 34(var323): 33(ptr) Variable Function
+ 36(var234): 33(ptr) Variable Function
+ 41(uvar443): 40(ptr) Variable Function
+ 49(uvar444): 40(ptr) Variable Function
+ 53(uvar423): 52(ptr) Variable Function
+ 59(uvar424): 52(ptr) Variable Function
+ 62(uvar323): 61(ptr) Variable Function
+ 64(uvar234): 61(ptr) Variable Function
+ 69(bvar443): 68(ptr) Variable Function
+ 77(bvar444): 68(ptr) Variable Function
+ 81(bvar423): 80(ptr) Variable Function
+ 87(bvar424): 80(ptr) Variable Function
+ 90(bvar323): 89(ptr) Variable Function
+ 92(bvar234): 89(ptr) Variable Function
+ Store 13(var443) 20
+ Store 21(var444) 20
+ Store 25(var423) 30
+ Store 31(var424) 30
+ Store 34(var323) 35
+ Store 36(var234) 35
+ Store 41(uvar443) 48
+ Store 49(uvar444) 48
+ Store 53(uvar423) 58
+ Store 59(uvar424) 58
+ Store 62(uvar323) 63
+ Store 64(uvar234) 63
+ Store 69(bvar443) 76
+ Store 77(bvar444) 76
+ Store 81(bvar423) 86
+ Store 87(bvar424) 86
+ Store 90(bvar323) 91
+ Store 92(bvar234) 91
+ ReturnValue 14
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.dashI.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.dashI.vert.out
new file mode 100644
index 00000000000..e8c1dc66240
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.dashI.vert.out
@@ -0,0 +1,69 @@
+hlsl.dashI.vert
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 40
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 38
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 11 "$Global"
+ MemberName 11($Global) 0 "i1"
+ MemberName 11($Global) 1 "p1"
+ MemberName 11($Global) 2 "p2"
+ MemberName 11($Global) 3 "p3"
+ MemberName 11($Global) 4 "i4"
+ Name 13 ""
+ Name 38 "@entryPointOutput"
+ MemberDecorate 11($Global) 0 Offset 0
+ MemberDecorate 11($Global) 1 Offset 16
+ MemberDecorate 11($Global) 2 Offset 32
+ MemberDecorate 11($Global) 3 Offset 48
+ MemberDecorate 11($Global) 4 Offset 64
+ Decorate 11($Global) Block
+ Decorate 13 DescriptorSet 0
+ Decorate 38(@entryPointOutput) BuiltIn Position
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11($Global): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4)
+ 12: TypePointer Uniform 11($Global)
+ 13: 12(ptr) Variable Uniform
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: TypePointer Uniform 7(fvec4)
+ 19: 14(int) Constant 4
+ 23: 14(int) Constant 1
+ 27: 14(int) Constant 2
+ 31: 14(int) Constant 3
+ 37: TypePointer Output 7(fvec4)
+38(@entryPointOutput): 37(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 39: 7(fvec4) FunctionCall 9(@main()
+ Store 38(@entryPointOutput) 39
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 17: 16(ptr) AccessChain 13 15
+ 18: 7(fvec4) Load 17
+ 20: 16(ptr) AccessChain 13 19
+ 21: 7(fvec4) Load 20
+ 22: 7(fvec4) FAdd 18 21
+ 24: 16(ptr) AccessChain 13 23
+ 25: 7(fvec4) Load 24
+ 26: 7(fvec4) FAdd 22 25
+ 28: 16(ptr) AccessChain 13 27
+ 29: 7(fvec4) Load 28
+ 30: 7(fvec4) FAdd 26 29
+ 32: 16(ptr) AccessChain 13 31
+ 33: 7(fvec4) Load 32
+ 34: 7(fvec4) FAdd 30 33
+ ReturnValue 34
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out
index 24e6982808e..a54c98d267a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out
@@ -1,12 +1,13 @@
hlsl.deadFunctionMissingBody.vert
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 18
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 16
+ Source HLSL 500
Name 4 "main"
Name 9 "@main("
Name 16 "@entryPointOutput"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.depthGreater.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.depthGreater.frag.out
index 8ff7e7332c8..44c414cacca 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.depthGreater.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.depthGreater.frag.out
@@ -1,5 +1,5 @@
hlsl.depthGreater.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
using depth_greater
0:? Sequence
@@ -26,7 +26,7 @@ using depth_greater
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
using depth_greater
0:? Sequence
@@ -50,7 +50,7 @@ using depth_greater
0:? 'depth' ( out float FragDepth)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 20
Capability Shader
@@ -59,6 +59,7 @@ using depth_greater
EntryPoint Fragment 4 "PixelShaderFunction" 18
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 DepthGreater
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 10 "@PixelShaderFunction(f1;"
Name 9 "depth"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.depthLess.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.depthLess.frag.out
index ef81b4a9e81..f97f1be1995 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.depthLess.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.depthLess.frag.out
@@ -1,5 +1,5 @@
hlsl.depthLess.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
using depth_less
0:? Sequence
@@ -22,7 +22,7 @@ using depth_less
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
using depth_less
0:? Sequence
@@ -42,7 +42,7 @@ using depth_less
0:? '@entryPointOutput' ( out float FragDepth)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 16
Capability Shader
@@ -51,6 +51,7 @@ using depth_less
EntryPoint Fragment 4 "PixelShaderFunction" 14
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 DepthLess
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 8 "@PixelShaderFunction("
Name 14 "@entryPointOutput"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.discard.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.discard.frag.out
index 6baea901eb7..7a6ed45f1a1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.discard.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.discard.frag.out
@@ -1,5 +1,5 @@
hlsl.discard.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: foo(f1; ( temp void)
@@ -25,10 +25,11 @@ gl_FragCoord origin is upper left
0:9 2 (const int)
0:10 Test condition and select ( temp void)
0:10 Condition
-0:10 direct index ( temp float)
-0:10 'input' ( in 4-component vector of float)
-0:10 Constant:
-0:10 0 (const int)
+0:10 Convert float to bool ( temp bool)
+0:10 direct index ( temp float)
+0:10 'input' ( in 4-component vector of float)
+0:10 Constant:
+0:10 0 (const int)
0:10 true case
0:11 Branch: Kill
0:12 Sequence
@@ -54,7 +55,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: foo(f1; ( temp void)
@@ -80,10 +81,11 @@ gl_FragCoord origin is upper left
0:9 2 (const int)
0:10 Test condition and select ( temp void)
0:10 Condition
-0:10 direct index ( temp float)
-0:10 'input' ( in 4-component vector of float)
-0:10 Constant:
-0:10 0 (const int)
+0:10 Convert float to bool ( temp bool)
+0:10 direct index ( temp float)
+0:10 'input' ( in 4-component vector of float)
+0:10 Constant:
+0:10 0 (const int)
0:10 true case
0:11 Branch: Kill
0:12 Sequence
@@ -106,25 +108,26 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 48
+// Generated by (magic number): 80002
+// Id's are bound by 50
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 43
+ EntryPoint Fragment 4 "PixelShaderFunction" 45
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 10 "foo(f1;"
Name 9 "f"
Name 16 "@PixelShaderFunction(vf4;"
Name 15 "input"
Name 25 "param"
- Name 37 "f"
- Name 41 "input"
+ Name 39 "f"
Name 43 "input"
- Name 45 "param"
- Decorate 43(input) Location 0
+ Name 45 "input"
+ Name 47 "param"
+ Decorate 45(input) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -138,17 +141,18 @@ gl_FragCoord origin is upper left
26: TypeInt 32 0
27: 26(int) Constant 2
31: 26(int) Constant 0
- 42: TypePointer Input 12(fvec4)
- 43(input): 42(ptr) Variable Input
+ 34: 6(float) Constant 0
+ 44: TypePointer Input 12(fvec4)
+ 45(input): 44(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
- 41(input): 13(ptr) Variable Function
- 45(param): 13(ptr) Variable Function
- 44: 12(fvec4) Load 43(input)
- Store 41(input) 44
- 46: 12(fvec4) Load 41(input)
- Store 45(param) 46
- 47: 2 FunctionCall 16(@PixelShaderFunction(vf4;) 45(param)
+ 43(input): 13(ptr) Variable Function
+ 47(param): 13(ptr) Variable Function
+ 46: 12(fvec4) Load 45(input)
+ Store 43(input) 46
+ 48: 12(fvec4) Load 43(input)
+ Store 47(param) 48
+ 49: 2 FunctionCall 16(@PixelShaderFunction(vf4;) 47(param)
Return
FunctionEnd
10(foo(f1;): 2 Function None 8
@@ -167,20 +171,21 @@ gl_FragCoord origin is upper left
15(input): 13(ptr) FunctionParameter
17: Label
25(param): 7(ptr) Variable Function
- 37(f): 7(ptr) Variable Function
+ 39(f): 7(ptr) Variable Function
28: 7(ptr) AccessChain 15(input) 27
29: 6(float) Load 28
Store 25(param) 29
30: 2 FunctionCall 10(foo(f1;) 25(param)
32: 7(ptr) AccessChain 15(input) 31
33: 6(float) Load 32
- SelectionMerge 35 None
- BranchConditional 33 34 35
- 34: Label
+ 35: 20(bool) FOrdNotEqual 33 34
+ SelectionMerge 37 None
+ BranchConditional 35 36 37
+ 36: Label
Kill
- 35: Label
- 38: 7(ptr) AccessChain 15(input) 31
- 39: 6(float) Load 38
- Store 37(f) 39
+ 37: Label
+ 40: 7(ptr) AccessChain 15(input) 31
+ 41: 6(float) Load 40
+ Store 39(f) 41
Kill
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.doLoop.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.doLoop.frag.out
index 35cf7482f99..bee6c29d5fa 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.doLoop.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.doLoop.frag.out
@@ -1,10 +1,10 @@
hlsl.doLoop.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
-0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:2 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' ( in 4-component vector of float)
+0:2 'input' ( in float)
0:? Sequence
0:3 Loop with condition not tested first
0:3 Loop Condition
@@ -18,37 +18,67 @@ gl_FragCoord origin is upper left
0:4 No loop body
0:5 Loop with condition not tested first
0:5 Loop Condition
-0:5 all ( temp bool)
-0:5 Equal ( temp 4-component vector of bool)
-0:5 'input' ( in 4-component vector of float)
-0:5 'input' ( in 4-component vector of float)
+0:5 Compare Greater Than ( temp bool)
+0:5 'input' ( in float)
+0:5 Constant:
+0:5 2.000000
0:5 Loop Body
-0:5 Branch: Return with expression
-0:5 'input' ( in 4-component vector of float)
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 Construct vec4 ( temp 4-component vector of float)
+0:5 'input' ( in float)
+0:6 Loop with condition not tested first
+0:6 Loop Condition
+0:6 Compare Less Than ( temp bool)
+0:6 'input' ( in float)
+0:6 Constant:
+0:6 10.000000
+0:6 Loop Body
+0:6 Pre-Increment ( temp float)
+0:6 'input' ( in float)
+0:7 Loop with condition not tested first
+0:7 Loop Condition
+0:7 Compare Less Than ( temp bool)
+0:7 Pre-Increment ( temp float)
+0:7 'input' ( in float)
+0:7 Constant:
+0:7 10.000000
+0:7 Loop Body
+0:7 Loop with condition tested first
+0:7 Loop Condition
+0:7 Compare Less Than ( temp bool)
+0:7 Pre-Increment ( temp float)
+0:7 'input' ( in float)
+0:7 Constant:
+0:7 10.000000
+0:7 No loop body
+0:8 Branch: Return with expression
+0:8 Construct vec4 ( temp 4-component vector of float)
+0:8 'input' ( in float)
0:2 Function Definition: PixelShaderFunction( ( temp void)
0:2 Function Parameters:
0:? Sequence
-0:2 move second child to first child ( temp 4-component vector of float)
-0:? 'input' ( temp 4-component vector of float)
-0:? 'input' (layout( location=0) in 4-component vector of float)
+0:2 move second child to first child ( temp float)
+0:? 'input' ( temp float)
+0:? 'input' (layout( location=0) in float)
0:2 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:? 'input' ( temp 4-component vector of float)
+0:2 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
+0:? 'input' ( temp float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'input' (layout( location=0) in 4-component vector of float)
+0:? 'input' (layout( location=0) in float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
-0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:2 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' ( in 4-component vector of float)
+0:2 'input' ( in float)
0:? Sequence
0:3 Loop with condition not tested first
0:3 Loop Condition
@@ -62,76 +92,109 @@ gl_FragCoord origin is upper left
0:4 No loop body
0:5 Loop with condition not tested first
0:5 Loop Condition
-0:5 all ( temp bool)
-0:5 Equal ( temp 4-component vector of bool)
-0:5 'input' ( in 4-component vector of float)
-0:5 'input' ( in 4-component vector of float)
+0:5 Compare Greater Than ( temp bool)
+0:5 'input' ( in float)
+0:5 Constant:
+0:5 2.000000
0:5 Loop Body
-0:5 Branch: Return with expression
-0:5 'input' ( in 4-component vector of float)
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 Construct vec4 ( temp 4-component vector of float)
+0:5 'input' ( in float)
+0:6 Loop with condition not tested first
+0:6 Loop Condition
+0:6 Compare Less Than ( temp bool)
+0:6 'input' ( in float)
+0:6 Constant:
+0:6 10.000000
+0:6 Loop Body
+0:6 Pre-Increment ( temp float)
+0:6 'input' ( in float)
+0:7 Loop with condition not tested first
+0:7 Loop Condition
+0:7 Compare Less Than ( temp bool)
+0:7 Pre-Increment ( temp float)
+0:7 'input' ( in float)
+0:7 Constant:
+0:7 10.000000
+0:7 Loop Body
+0:7 Loop with condition tested first
+0:7 Loop Condition
+0:7 Compare Less Than ( temp bool)
+0:7 Pre-Increment ( temp float)
+0:7 'input' ( in float)
+0:7 Constant:
+0:7 10.000000
+0:7 No loop body
+0:8 Branch: Return with expression
+0:8 Construct vec4 ( temp 4-component vector of float)
+0:8 'input' ( in float)
0:2 Function Definition: PixelShaderFunction( ( temp void)
0:2 Function Parameters:
0:? Sequence
-0:2 move second child to first child ( temp 4-component vector of float)
-0:? 'input' ( temp 4-component vector of float)
-0:? 'input' (layout( location=0) in 4-component vector of float)
+0:2 move second child to first child ( temp float)
+0:? 'input' ( temp float)
+0:? 'input' (layout( location=0) in float)
0:2 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:? 'input' ( temp 4-component vector of float)
+0:2 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
+0:? 'input' ( temp float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'input' (layout( location=0) in 4-component vector of float)
+0:? 'input' (layout( location=0) in float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 44
+// Generated by (magic number): 80002
+// Id's are bound by 71
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 37 40
+ EntryPoint Fragment 4 "PixelShaderFunction" 64 67
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
- Name 11 "@PixelShaderFunction(vf4;"
+ Name 11 "@PixelShaderFunction(f1;"
Name 10 "input"
- Name 35 "input"
- Name 37 "input"
- Name 40 "@entryPointOutput"
- Name 41 "param"
- Decorate 37(input) Location 0
- Decorate 40(@entryPointOutput) Location 0
+ Name 62 "input"
+ Name 64 "input"
+ Name 67 "@entryPointOutput"
+ Name 68 "param"
+ Decorate 64(input) Location 0
+ Decorate 67(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
- 7: TypeVector 6(float) 4
- 8: TypePointer Function 7(fvec4)
- 9: TypeFunction 7(fvec4) 8(ptr)
+ 7: TypePointer Function 6(float)
+ 8: TypeVector 6(float) 4
+ 9: TypeFunction 8(fvec4) 7(ptr)
17: TypeBool
18: 17(bool) ConstantFalse
- 31: TypeVector 17(bool) 4
- 36: TypePointer Input 7(fvec4)
- 37(input): 36(ptr) Variable Input
- 39: TypePointer Output 7(fvec4)
-40(@entryPointOutput): 39(ptr) Variable Output
+ 31: 6(float) Constant 1073741824
+ 38: 6(float) Constant 1065353216
+ 41: 6(float) Constant 1092616192
+ 63: TypePointer Input 6(float)
+ 64(input): 63(ptr) Variable Input
+ 66: TypePointer Output 8(fvec4)
+67(@entryPointOutput): 66(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
- 35(input): 8(ptr) Variable Function
- 41(param): 8(ptr) Variable Function
- 38: 7(fvec4) Load 37(input)
- Store 35(input) 38
- 42: 7(fvec4) Load 35(input)
- Store 41(param) 42
- 43: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 41(param)
- Store 40(@entryPointOutput) 43
+ 62(input): 7(ptr) Variable Function
+ 68(param): 7(ptr) Variable Function
+ 65: 6(float) Load 64(input)
+ Store 62(input) 65
+ 69: 6(float) Load 62(input)
+ Store 68(param) 69
+ 70: 8(fvec4) FunctionCall 11(@PixelShaderFunction(f1;) 68(param)
+ Store 67(@entryPointOutput) 70
Return
FunctionEnd
-11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
- 10(input): 8(ptr) FunctionParameter
+11(@PixelShaderFunction(f1;): 8(fvec4) Function None 9
+ 10(input): 7(ptr) FunctionParameter
12: Label
Branch 13
13: Label
- LoopMerge 15 16 None
+ LoopMerge 15 16 Unroll
Branch 14
14: Label
Branch 16
@@ -140,7 +203,7 @@ gl_FragCoord origin is upper left
15: Label
Branch 19
19: Label
- LoopMerge 21 22 None
+ LoopMerge 21 22 Unroll
Branch 20
20: Label
Branch 22
@@ -152,15 +215,57 @@ gl_FragCoord origin is upper left
LoopMerge 25 26 None
Branch 24
24: Label
- 27: 7(fvec4) Load 10(input)
- ReturnValue 27
+ 27: 6(float) Load 10(input)
+ 28: 8(fvec4) CompositeConstruct 27 27 27 27
+ ReturnValue 28
26: Label
- 29: 7(fvec4) Load 10(input)
- 30: 7(fvec4) Load 10(input)
- 32: 31(bvec4) FOrdEqual 29 30
- 33: 17(bool) All 32
- BranchConditional 33 23 25
+ 30: 6(float) Load 10(input)
+ 32: 17(bool) FOrdGreaterThan 30 31
+ BranchConditional 32 23 25
25: Label
- 34: 7(fvec4) Undef
- ReturnValue 34
+ Branch 33
+ 33: Label
+ LoopMerge 35 36 None
+ Branch 34
+ 34: Label
+ 37: 6(float) Load 10(input)
+ 39: 6(float) FAdd 37 38
+ Store 10(input) 39
+ Branch 36
+ 36: Label
+ 40: 6(float) Load 10(input)
+ 42: 17(bool) FOrdLessThan 40 41
+ BranchConditional 42 33 35
+ 35: Label
+ Branch 43
+ 43: Label
+ LoopMerge 45 46 None
+ Branch 44
+ 44: Label
+ Branch 47
+ 47: Label
+ LoopMerge 49 50 None
+ Branch 51
+ 51: Label
+ 52: 6(float) Load 10(input)
+ 53: 6(float) FAdd 52 38
+ Store 10(input) 53
+ 54: 17(bool) FOrdLessThan 53 41
+ BranchConditional 54 48 49
+ 48: Label
+ Branch 50
+ 50: Label
+ Branch 47
+ 49: Label
+ Branch 46
+ 46: Label
+ 55: 6(float) Load 10(input)
+ 56: 6(float) FAdd 55 38
+ Store 10(input) 56
+ 57: 17(bool) FOrdLessThan 56 41
+ BranchConditional 57 43 45
+ 45: Label
+ 58: 6(float) Load 10(input)
+ 59: 8(fvec4) CompositeConstruct 58 58 58 58
+ ReturnValue 59
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.1.tese.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.1.tese.out
new file mode 100644
index 00000000000..e0fa528f811
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.1.tese.out
@@ -0,0 +1,457 @@
+hlsl.domain.1.tese
+Shader version: 500
+input primitive = triangles
+vertex spacing = none
+triangle order = none
+0:? Sequence
+0:22 Function Definition: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Function Parameters:
+0:22 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 'f' ( in float)
+0:22 'tesscoord' ( in 3-component vector of float)
+0:22 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:? Sequence
+0:25 move second child to first child ( temp 4-component vector of float)
+0:25 pos: direct index for structure ( temp 4-component vector of float)
+0:25 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Constant:
+0:25 0 (const int)
+0:25 add ( temp 4-component vector of float)
+0:25 pos: direct index for structure ( temp 4-component vector of float)
+0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 component-wise multiply ( temp float)
+0:25 direct index ( temp float)
+0:25 'tesscoord' ( in 3-component vector of float)
+0:25 Constant:
+0:25 0 (const int)
+0:25 'f' ( in float)
+0:26 move second child to first child ( temp 3-component vector of float)
+0:26 norm: direct index for structure ( temp 3-component vector of float)
+0:26 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:26 Constant:
+0:26 1 (const int)
+0:26 add ( temp 3-component vector of float)
+0:26 norm: direct index for structure ( temp 3-component vector of float)
+0:26 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:26 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 direct index ( temp float)
+0:26 'tesscoord' ( in 3-component vector of float)
+0:26 Constant:
+0:26 1 (const int)
+0:28 direct index ( temp float)
+0:28 'tesscoord' ( in 3-component vector of float)
+0:28 Constant:
+0:28 2 (const int)
+0:30 Branch: Return with expression
+0:30 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Function Definition: main( ( temp void)
+0:22 Function Parameters:
+0:? Sequence
+0:22 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 move second child to first child ( temp float)
+0:? 'f' ( temp float)
+0:? 'f' (layout( location=2) patch in float)
+0:22 move second child to first child ( temp 3-component vector of float)
+0:? 'tesscoord' ( temp 3-component vector of float)
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:22 Sequence
+0:22 move second child to first child ( temp float)
+0:22 direct index ( temp float)
+0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 0 (const int)
+0:22 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:22 Constant:
+0:22 0 (const int)
+0:22 move second child to first child ( temp float)
+0:22 direct index ( temp float)
+0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:22 Constant:
+0:22 1 (const int)
+0:22 move second child to first child ( temp float)
+0:22 direct index ( temp float)
+0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:22 Constant:
+0:22 2 (const int)
+0:22 move second child to first child ( temp float)
+0:22 flInsideTessFactor: direct index for structure ( temp float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:22 Constant:
+0:22 1 (const int)
+0:22 direct index ( patch in float TessLevelInner)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Sequence
+0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'f' ( temp float)
+0:? 'tesscoord' ( temp 3-component vector of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:22 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:22 pos: direct index for structure ( temp 4-component vector of float)
+0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Constant:
+0:22 0 (const int)
+0:22 move second child to first child ( temp 3-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:22 norm: direct index for structure ( temp 3-component vector of float)
+0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Constant:
+0:22 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'f' (layout( location=2) patch in float)
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+
+
+Linked tessellation evaluation stage:
+
+
+Shader version: 500
+input primitive = triangles
+vertex spacing = none
+triangle order = none
+0:? Sequence
+0:22 Function Definition: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Function Parameters:
+0:22 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 'f' ( in float)
+0:22 'tesscoord' ( in 3-component vector of float)
+0:22 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:? Sequence
+0:25 move second child to first child ( temp 4-component vector of float)
+0:25 pos: direct index for structure ( temp 4-component vector of float)
+0:25 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Constant:
+0:25 0 (const int)
+0:25 add ( temp 4-component vector of float)
+0:25 pos: direct index for structure ( temp 4-component vector of float)
+0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 component-wise multiply ( temp float)
+0:25 direct index ( temp float)
+0:25 'tesscoord' ( in 3-component vector of float)
+0:25 Constant:
+0:25 0 (const int)
+0:25 'f' ( in float)
+0:26 move second child to first child ( temp 3-component vector of float)
+0:26 norm: direct index for structure ( temp 3-component vector of float)
+0:26 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:26 Constant:
+0:26 1 (const int)
+0:26 add ( temp 3-component vector of float)
+0:26 norm: direct index for structure ( temp 3-component vector of float)
+0:26 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:26 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 direct index ( temp float)
+0:26 'tesscoord' ( in 3-component vector of float)
+0:26 Constant:
+0:26 1 (const int)
+0:28 direct index ( temp float)
+0:28 'tesscoord' ( in 3-component vector of float)
+0:28 Constant:
+0:28 2 (const int)
+0:30 Branch: Return with expression
+0:30 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Function Definition: main( ( temp void)
+0:22 Function Parameters:
+0:? Sequence
+0:22 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 move second child to first child ( temp float)
+0:? 'f' ( temp float)
+0:? 'f' (layout( location=2) patch in float)
+0:22 move second child to first child ( temp 3-component vector of float)
+0:? 'tesscoord' ( temp 3-component vector of float)
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:22 Sequence
+0:22 move second child to first child ( temp float)
+0:22 direct index ( temp float)
+0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 0 (const int)
+0:22 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:22 Constant:
+0:22 0 (const int)
+0:22 move second child to first child ( temp float)
+0:22 direct index ( temp float)
+0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:22 Constant:
+0:22 1 (const int)
+0:22 move second child to first child ( temp float)
+0:22 direct index ( temp float)
+0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:22 Constant:
+0:22 2 (const int)
+0:22 move second child to first child ( temp float)
+0:22 flInsideTessFactor: direct index for structure ( temp float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:22 Constant:
+0:22 1 (const int)
+0:22 direct index ( patch in float TessLevelInner)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Sequence
+0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'f' ( temp float)
+0:? 'tesscoord' ( temp 3-component vector of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:22 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:22 pos: direct index for structure ( temp 4-component vector of float)
+0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Constant:
+0:22 0 (const int)
+0:22 move second child to first child ( temp 3-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:22 norm: direct index for structure ( temp 3-component vector of float)
+0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Constant:
+0:22 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'f' (layout( location=2) patch in float)
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 103
+
+ Capability Tessellation
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationEvaluation 4 "main" 54 58 62 68 82 96 100
+ ExecutionMode 4 Triangles
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "ds_in_t"
+ MemberName 9(ds_in_t) 0 "pos"
+ MemberName 9(ds_in_t) 1 "norm"
+ Name 16 "pcf_in_t"
+ MemberName 16(pcf_in_t) 0 "flTessFactor"
+ MemberName 16(pcf_in_t) 1 "flInsideTessFactor"
+ Name 18 "gs_in_t"
+ MemberName 18(gs_in_t) 0 "pos"
+ MemberName 18(gs_in_t) 1 "norm"
+ Name 24 "@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;"
+ Name 20 "i"
+ Name 21 "f"
+ Name 22 "tesscoord"
+ Name 23 "pcf_data"
+ Name 27 "o"
+ Name 52 "i"
+ Name 54 "i"
+ Name 56 "f"
+ Name 58 "f"
+ Name 60 "tesscoord"
+ Name 62 "tesscoord"
+ Name 64 "pcf_data"
+ Name 68 "pcf_data.flTessFactor"
+ Name 82 "pcf_data.flInsideTessFactor"
+ Name 86 "flattenTemp"
+ Name 88 "param"
+ Name 90 "param"
+ Name 92 "param"
+ Name 96 "@entryPointOutput.pos"
+ Name 100 "@entryPointOutput.norm"
+ Decorate 54(i) Location 0
+ Decorate 58(f) Patch
+ Decorate 58(f) Location 2
+ Decorate 62(tesscoord) Patch
+ Decorate 62(tesscoord) BuiltIn TessCoord
+ Decorate 68(pcf_data.flTessFactor) Patch
+ Decorate 68(pcf_data.flTessFactor) BuiltIn TessLevelOuter
+ Decorate 82(pcf_data.flInsideTessFactor) Patch
+ Decorate 82(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
+ Decorate 96(@entryPointOutput.pos) Location 0
+ Decorate 100(@entryPointOutput.norm) Location 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 3
+ 9(ds_in_t): TypeStruct 7(fvec4) 8(fvec3)
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 3
+ 12: TypeArray 9(ds_in_t) 11
+ 13: TypePointer Function 6(float)
+ 14: TypePointer Function 8(fvec3)
+ 15: TypeArray 6(float) 11
+ 16(pcf_in_t): TypeStruct 15 6(float)
+ 17: TypePointer Function 16(pcf_in_t)
+ 18(gs_in_t): TypeStruct 7(fvec4) 8(fvec3)
+ 19: TypeFunction 18(gs_in_t) 12 13(ptr) 14(ptr) 17(ptr)
+ 26: TypePointer Function 18(gs_in_t)
+ 28: TypeInt 32 1
+ 29: 28(int) Constant 0
+ 31: 10(int) Constant 0
+ 38: TypePointer Function 7(fvec4)
+ 40: 28(int) Constant 1
+ 42: 10(int) Constant 1
+ 51: TypePointer Function 12
+ 53: TypePointer Input 12
+ 54(i): 53(ptr) Variable Input
+ 57: TypePointer Input 6(float)
+ 58(f): 57(ptr) Variable Input
+ 61: TypePointer Input 8(fvec3)
+ 62(tesscoord): 61(ptr) Variable Input
+ 65: 10(int) Constant 4
+ 66: TypeArray 6(float) 65
+ 67: TypePointer Input 66
+68(pcf_data.flTessFactor): 67(ptr) Variable Input
+ 75: 28(int) Constant 2
+ 79: 10(int) Constant 2
+ 80: TypeArray 6(float) 79
+ 81: TypePointer Input 80
+82(pcf_data.flInsideTessFactor): 81(ptr) Variable Input
+ 95: TypePointer Output 7(fvec4)
+96(@entryPointOutput.pos): 95(ptr) Variable Output
+ 99: TypePointer Output 8(fvec3)
+100(@entryPointOutput.norm): 99(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 52(i): 51(ptr) Variable Function
+ 56(f): 13(ptr) Variable Function
+ 60(tesscoord): 14(ptr) Variable Function
+ 64(pcf_data): 17(ptr) Variable Function
+ 86(flattenTemp): 26(ptr) Variable Function
+ 88(param): 13(ptr) Variable Function
+ 90(param): 14(ptr) Variable Function
+ 92(param): 17(ptr) Variable Function
+ 55: 12 Load 54(i)
+ Store 52(i) 55
+ 59: 6(float) Load 58(f)
+ Store 56(f) 59
+ 63: 8(fvec3) Load 62(tesscoord)
+ Store 60(tesscoord) 63
+ 69: 57(ptr) AccessChain 68(pcf_data.flTessFactor) 29
+ 70: 6(float) Load 69
+ 71: 13(ptr) AccessChain 64(pcf_data) 29 29
+ Store 71 70
+ 72: 57(ptr) AccessChain 68(pcf_data.flTessFactor) 40
+ 73: 6(float) Load 72
+ 74: 13(ptr) AccessChain 64(pcf_data) 29 40
+ Store 74 73
+ 76: 57(ptr) AccessChain 68(pcf_data.flTessFactor) 75
+ 77: 6(float) Load 76
+ 78: 13(ptr) AccessChain 64(pcf_data) 29 75
+ Store 78 77
+ 83: 57(ptr) AccessChain 82(pcf_data.flInsideTessFactor) 29
+ 84: 6(float) Load 83
+ 85: 13(ptr) AccessChain 64(pcf_data) 40
+ Store 85 84
+ 87: 12 Load 52(i)
+ 89: 6(float) Load 56(f)
+ Store 88(param) 89
+ 91: 8(fvec3) Load 60(tesscoord)
+ Store 90(param) 91
+ 93:16(pcf_in_t) Load 64(pcf_data)
+ Store 92(param) 93
+ 94: 18(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;) 87 88(param) 90(param) 92(param)
+ Store 86(flattenTemp) 94
+ 97: 38(ptr) AccessChain 86(flattenTemp) 29
+ 98: 7(fvec4) Load 97
+ Store 96(@entryPointOutput.pos) 98
+ 101: 14(ptr) AccessChain 86(flattenTemp) 40
+ 102: 8(fvec3) Load 101
+ Store 100(@entryPointOutput.norm) 102
+ Return
+ FunctionEnd
+24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;): 18(gs_in_t) Function None 19
+ 20(i): 12 FunctionParameter
+ 21(f): 13(ptr) FunctionParameter
+ 22(tesscoord): 14(ptr) FunctionParameter
+ 23(pcf_data): 17(ptr) FunctionParameter
+ 25: Label
+ 27(o): 26(ptr) Variable Function
+ 30: 7(fvec4) CompositeExtract 20(i) 0 0
+ 32: 13(ptr) AccessChain 22(tesscoord) 31
+ 33: 6(float) Load 32
+ 34: 6(float) Load 21(f)
+ 35: 6(float) FMul 33 34
+ 36: 7(fvec4) CompositeConstruct 35 35 35 35
+ 37: 7(fvec4) FAdd 30 36
+ 39: 38(ptr) AccessChain 27(o) 29
+ Store 39 37
+ 41: 8(fvec3) CompositeExtract 20(i) 0 1
+ 43: 13(ptr) AccessChain 22(tesscoord) 42
+ 44: 6(float) Load 43
+ 45: 8(fvec3) CompositeConstruct 44 44 44
+ 46: 8(fvec3) FAdd 41 45
+ 47: 14(ptr) AccessChain 27(o) 40
+ Store 47 46
+ 48: 18(gs_in_t) Load 27(o)
+ ReturnValue 48
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.2.tese.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.2.tese.out
new file mode 100644
index 00000000000..02c86aea8d9
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.2.tese.out
@@ -0,0 +1,447 @@
+hlsl.domain.2.tese
+Shader version: 500
+input primitive = triangles
+vertex spacing = none
+triangle order = none
+0:? Sequence
+0:25 Function Definition: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Function Parameters:
+0:25 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 'tesscoord' ( in 3-component vector of float)
+0:? Sequence
+0:28 move second child to first child ( temp 4-component vector of float)
+0:28 pos: direct index for structure ( temp 4-component vector of float)
+0:28 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 Constant:
+0:28 0 (const int)
+0:28 add ( temp 4-component vector of float)
+0:28 pos: direct index for structure ( temp 4-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 0 (const int)
+0:28 direct index ( temp float)
+0:28 'tesscoord' ( in 3-component vector of float)
+0:28 Constant:
+0:28 0 (const int)
+0:29 move second child to first child ( temp 3-component vector of float)
+0:29 norm: direct index for structure ( temp 3-component vector of float)
+0:29 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:29 Constant:
+0:29 1 (const int)
+0:29 add ( temp 3-component vector of float)
+0:29 norm: direct index for structure ( temp 3-component vector of float)
+0:29 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:29 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 1 (const int)
+0:29 direct index ( temp float)
+0:29 'tesscoord' ( in 3-component vector of float)
+0:29 Constant:
+0:29 1 (const int)
+0:31 direct index ( temp float)
+0:31 'tesscoord' ( in 3-component vector of float)
+0:31 Constant:
+0:31 2 (const int)
+0:33 Branch: Return with expression
+0:33 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Function Definition: main( ( temp void)
+0:25 Function Parameters:
+0:? Sequence
+0:25 Sequence
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:25 Constant:
+0:25 0 (const int)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 1 (const int)
+0:25 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:25 Constant:
+0:25 1 (const int)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:25 Constant:
+0:25 2 (const int)
+0:25 move second child to first child ( temp float)
+0:25 flInsideTessFactor: direct index for structure ( temp float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 Constant:
+0:25 1 (const int)
+0:25 direct index ( patch in float TessLevelInner)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+0:25 Constant:
+0:25 0 (const int)
+0:25 move second child to first child ( temp float)
+0:25 foo: direct index for structure ( temp float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 Constant:
+0:25 2 (const int)
+0:? 'pcf_data.foo' (layout( location=2) patch in float)
+0:25 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 move second child to first child ( temp 3-component vector of float)
+0:? 'tesscoord' ( temp 3-component vector of float)
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:25 Sequence
+0:25 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Function Call: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'tesscoord' ( temp 3-component vector of float)
+0:25 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:25 pos: direct index for structure ( temp 4-component vector of float)
+0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Constant:
+0:25 0 (const int)
+0:25 move second child to first child ( temp 3-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:25 norm: direct index for structure ( temp 3-component vector of float)
+0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Constant:
+0:25 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+0:? 'pcf_data.foo' (layout( location=2) patch in float)
+
+
+Linked tessellation evaluation stage:
+
+
+Shader version: 500
+input primitive = triangles
+vertex spacing = none
+triangle order = none
+0:? Sequence
+0:25 Function Definition: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Function Parameters:
+0:25 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 'tesscoord' ( in 3-component vector of float)
+0:? Sequence
+0:28 move second child to first child ( temp 4-component vector of float)
+0:28 pos: direct index for structure ( temp 4-component vector of float)
+0:28 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 Constant:
+0:28 0 (const int)
+0:28 add ( temp 4-component vector of float)
+0:28 pos: direct index for structure ( temp 4-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 0 (const int)
+0:28 direct index ( temp float)
+0:28 'tesscoord' ( in 3-component vector of float)
+0:28 Constant:
+0:28 0 (const int)
+0:29 move second child to first child ( temp 3-component vector of float)
+0:29 norm: direct index for structure ( temp 3-component vector of float)
+0:29 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:29 Constant:
+0:29 1 (const int)
+0:29 add ( temp 3-component vector of float)
+0:29 norm: direct index for structure ( temp 3-component vector of float)
+0:29 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:29 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 1 (const int)
+0:29 direct index ( temp float)
+0:29 'tesscoord' ( in 3-component vector of float)
+0:29 Constant:
+0:29 1 (const int)
+0:31 direct index ( temp float)
+0:31 'tesscoord' ( in 3-component vector of float)
+0:31 Constant:
+0:31 2 (const int)
+0:33 Branch: Return with expression
+0:33 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Function Definition: main( ( temp void)
+0:25 Function Parameters:
+0:? Sequence
+0:25 Sequence
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:25 Constant:
+0:25 0 (const int)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 1 (const int)
+0:25 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:25 Constant:
+0:25 1 (const int)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:25 Constant:
+0:25 2 (const int)
+0:25 move second child to first child ( temp float)
+0:25 flInsideTessFactor: direct index for structure ( temp float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 Constant:
+0:25 1 (const int)
+0:25 direct index ( patch in float TessLevelInner)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+0:25 Constant:
+0:25 0 (const int)
+0:25 move second child to first child ( temp float)
+0:25 foo: direct index for structure ( temp float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:25 Constant:
+0:25 2 (const int)
+0:? 'pcf_data.foo' (layout( location=2) patch in float)
+0:25 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 move second child to first child ( temp 3-component vector of float)
+0:? 'tesscoord' ( temp 3-component vector of float)
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:25 Sequence
+0:25 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Function Call: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
+0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'tesscoord' ( temp 3-component vector of float)
+0:25 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:25 pos: direct index for structure ( temp 4-component vector of float)
+0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Constant:
+0:25 0 (const int)
+0:25 move second child to first child ( temp 3-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:25 norm: direct index for structure ( temp 3-component vector of float)
+0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:25 Constant:
+0:25 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+0:? 'pcf_data.foo' (layout( location=2) patch in float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 98
+
+ Capability Tessellation
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationEvaluation 4 "main" 52 67 71 77 81 91 95
+ ExecutionMode 4 Triangles
+ Source HLSL 500
+ Name 4 "main"
+ Name 10 "pcf_in_t"
+ MemberName 10(pcf_in_t) 0 "flTessFactor"
+ MemberName 10(pcf_in_t) 1 "flInsideTessFactor"
+ MemberName 10(pcf_in_t) 2 "foo"
+ Name 14 "ds_in_t"
+ MemberName 14(ds_in_t) 0 "pos"
+ MemberName 14(ds_in_t) 1 "norm"
+ Name 17 "gs_in_t"
+ MemberName 17(gs_in_t) 0 "pos"
+ MemberName 17(gs_in_t) 1 "norm"
+ Name 22 "@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;"
+ Name 19 "pcf_data"
+ Name 20 "i"
+ Name 21 "tesscoord"
+ Name 25 "o"
+ Name 48 "pcf_data"
+ Name 52 "pcf_data.flTessFactor"
+ Name 67 "pcf_data.flInsideTessFactor"
+ Name 71 "pcf_data.foo"
+ Name 75 "i"
+ Name 77 "i"
+ Name 79 "tesscoord"
+ Name 81 "tesscoord"
+ Name 83 "flattenTemp"
+ Name 85 "param"
+ Name 87 "param"
+ Name 91 "@entryPointOutput.pos"
+ Name 95 "@entryPointOutput.norm"
+ Decorate 52(pcf_data.flTessFactor) Patch
+ Decorate 52(pcf_data.flTessFactor) BuiltIn TessLevelOuter
+ Decorate 67(pcf_data.flInsideTessFactor) Patch
+ Decorate 67(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
+ Decorate 71(pcf_data.foo) Patch
+ Decorate 71(pcf_data.foo) Location 2
+ Decorate 77(i) Location 0
+ Decorate 81(tesscoord) Patch
+ Decorate 81(tesscoord) BuiltIn TessCoord
+ Decorate 91(@entryPointOutput.pos) Location 0
+ Decorate 95(@entryPointOutput.norm) Location 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeInt 32 0
+ 8: 7(int) Constant 3
+ 9: TypeArray 6(float) 8
+ 10(pcf_in_t): TypeStruct 9 6(float) 6(float)
+ 11: TypePointer Function 10(pcf_in_t)
+ 12: TypeVector 6(float) 4
+ 13: TypeVector 6(float) 3
+ 14(ds_in_t): TypeStruct 12(fvec4) 13(fvec3)
+ 15: TypeArray 14(ds_in_t) 8
+ 16: TypePointer Function 13(fvec3)
+ 17(gs_in_t): TypeStruct 12(fvec4) 13(fvec3)
+ 18: TypeFunction 17(gs_in_t) 11(ptr) 15 16(ptr)
+ 24: TypePointer Function 17(gs_in_t)
+ 26: TypeInt 32 1
+ 27: 26(int) Constant 0
+ 29: 7(int) Constant 0
+ 30: TypePointer Function 6(float)
+ 35: TypePointer Function 12(fvec4)
+ 37: 26(int) Constant 1
+ 39: 7(int) Constant 1
+ 49: 7(int) Constant 4
+ 50: TypeArray 6(float) 49
+ 51: TypePointer Input 50
+52(pcf_data.flTessFactor): 51(ptr) Variable Input
+ 53: TypePointer Input 6(float)
+ 60: 26(int) Constant 2
+ 64: 7(int) Constant 2
+ 65: TypeArray 6(float) 64
+ 66: TypePointer Input 65
+67(pcf_data.flInsideTessFactor): 66(ptr) Variable Input
+71(pcf_data.foo): 53(ptr) Variable Input
+ 74: TypePointer Function 15
+ 76: TypePointer Input 15
+ 77(i): 76(ptr) Variable Input
+ 80: TypePointer Input 13(fvec3)
+ 81(tesscoord): 80(ptr) Variable Input
+ 90: TypePointer Output 12(fvec4)
+91(@entryPointOutput.pos): 90(ptr) Variable Output
+ 94: TypePointer Output 13(fvec3)
+95(@entryPointOutput.norm): 94(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 48(pcf_data): 11(ptr) Variable Function
+ 75(i): 74(ptr) Variable Function
+ 79(tesscoord): 16(ptr) Variable Function
+ 83(flattenTemp): 24(ptr) Variable Function
+ 85(param): 11(ptr) Variable Function
+ 87(param): 16(ptr) Variable Function
+ 54: 53(ptr) AccessChain 52(pcf_data.flTessFactor) 27
+ 55: 6(float) Load 54
+ 56: 30(ptr) AccessChain 48(pcf_data) 27 27
+ Store 56 55
+ 57: 53(ptr) AccessChain 52(pcf_data.flTessFactor) 37
+ 58: 6(float) Load 57
+ 59: 30(ptr) AccessChain 48(pcf_data) 27 37
+ Store 59 58
+ 61: 53(ptr) AccessChain 52(pcf_data.flTessFactor) 60
+ 62: 6(float) Load 61
+ 63: 30(ptr) AccessChain 48(pcf_data) 27 60
+ Store 63 62
+ 68: 53(ptr) AccessChain 67(pcf_data.flInsideTessFactor) 27
+ 69: 6(float) Load 68
+ 70: 30(ptr) AccessChain 48(pcf_data) 37
+ Store 70 69
+ 72: 6(float) Load 71(pcf_data.foo)
+ 73: 30(ptr) AccessChain 48(pcf_data) 60
+ Store 73 72
+ 78: 15 Load 77(i)
+ Store 75(i) 78
+ 82: 13(fvec3) Load 81(tesscoord)
+ Store 79(tesscoord) 82
+ 84: 15 Load 75(i)
+ 86:10(pcf_in_t) Load 48(pcf_data)
+ Store 85(param) 86
+ 88: 13(fvec3) Load 79(tesscoord)
+ Store 87(param) 88
+ 89: 17(gs_in_t) FunctionCall 22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;) 85(param) 84 87(param)
+ Store 83(flattenTemp) 89
+ 92: 35(ptr) AccessChain 83(flattenTemp) 27
+ 93: 12(fvec4) Load 92
+ Store 91(@entryPointOutput.pos) 93
+ 96: 16(ptr) AccessChain 83(flattenTemp) 37
+ 97: 13(fvec3) Load 96
+ Store 95(@entryPointOutput.norm) 97
+ Return
+ FunctionEnd
+22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;): 17(gs_in_t) Function None 18
+ 19(pcf_data): 11(ptr) FunctionParameter
+ 20(i): 15 FunctionParameter
+ 21(tesscoord): 16(ptr) FunctionParameter
+ 23: Label
+ 25(o): 24(ptr) Variable Function
+ 28: 12(fvec4) CompositeExtract 20(i) 0 0
+ 31: 30(ptr) AccessChain 21(tesscoord) 29
+ 32: 6(float) Load 31
+ 33: 12(fvec4) CompositeConstruct 32 32 32 32
+ 34: 12(fvec4) FAdd 28 33
+ 36: 35(ptr) AccessChain 25(o) 27
+ Store 36 34
+ 38: 13(fvec3) CompositeExtract 20(i) 0 1
+ 40: 30(ptr) AccessChain 21(tesscoord) 39
+ 41: 6(float) Load 40
+ 42: 13(fvec3) CompositeConstruct 41 41 41
+ 43: 13(fvec3) FAdd 38 42
+ 44: 16(ptr) AccessChain 25(o) 37
+ Store 44 43
+ 45: 17(gs_in_t) Load 25(o)
+ ReturnValue 45
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.3.tese.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.3.tese.out
new file mode 100644
index 00000000000..6330d088b64
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.domain.3.tese.out
@@ -0,0 +1,424 @@
+hlsl.domain.3.tese
+Shader version: 500
+input primitive = isolines
+vertex spacing = none
+triangle order = none
+0:? Sequence
+0:24 Function Definition: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 Function Parameters:
+0:24 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 'tesscoord' ( in 2-component vector of float)
+0:24 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:? Sequence
+0:27 move second child to first child ( temp 4-component vector of float)
+0:27 pos: direct index for structure ( temp 4-component vector of float)
+0:27 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:27 Constant:
+0:27 0 (const int)
+0:27 add ( temp 4-component vector of float)
+0:27 pos: direct index for structure ( temp 4-component vector of float)
+0:27 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:27 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 0 (const int)
+0:27 direct index ( temp float)
+0:27 'tesscoord' ( in 2-component vector of float)
+0:27 Constant:
+0:27 0 (const int)
+0:28 move second child to first child ( temp 3-component vector of float)
+0:28 norm: direct index for structure ( temp 3-component vector of float)
+0:28 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 Constant:
+0:28 1 (const int)
+0:28 add ( temp 3-component vector of float)
+0:28 norm: direct index for structure ( temp 3-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 1 (const int)
+0:28 direct index ( temp float)
+0:28 'tesscoord' ( in 2-component vector of float)
+0:28 Constant:
+0:28 1 (const int)
+0:30 Branch: Return with expression
+0:30 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 Function Definition: main( ( temp void)
+0:24 Function Parameters:
+0:? Sequence
+0:24 move second child to first child ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 move second child to first child ( temp 2-component vector of float)
+0:? 'tesscoord' ( temp 2-component vector of float)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:24 Sequence
+0:24 move second child to first child ( temp float)
+0:24 direct index ( temp float)
+0:24 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 0 (const int)
+0:24 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:24 Constant:
+0:24 0 (const int)
+0:24 move second child to first child ( temp float)
+0:24 direct index ( temp float)
+0:24 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 1 (const int)
+0:24 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:24 Constant:
+0:24 1 (const int)
+0:24 move second child to first child ( temp float)
+0:24 direct index ( temp float)
+0:24 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:24 Constant:
+0:24 2 (const int)
+0:24 move second child to first child ( temp float)
+0:24 flInsideTessFactor: direct index for structure ( temp float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:24 Constant:
+0:24 1 (const int)
+0:24 direct index ( patch in float TessLevelInner)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Sequence
+0:24 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 Function Call: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'tesscoord' ( temp 2-component vector of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:24 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:24 pos: direct index for structure ( temp 4-component vector of float)
+0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 Constant:
+0:24 0 (const int)
+0:24 move second child to first child ( temp 3-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:24 norm: direct index for structure ( temp 3-component vector of float)
+0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 Constant:
+0:24 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+
+
+Linked tessellation evaluation stage:
+
+
+Shader version: 500
+input primitive = isolines
+vertex spacing = none
+triangle order = none
+0:? Sequence
+0:24 Function Definition: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 Function Parameters:
+0:24 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 'tesscoord' ( in 2-component vector of float)
+0:24 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:? Sequence
+0:27 move second child to first child ( temp 4-component vector of float)
+0:27 pos: direct index for structure ( temp 4-component vector of float)
+0:27 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:27 Constant:
+0:27 0 (const int)
+0:27 add ( temp 4-component vector of float)
+0:27 pos: direct index for structure ( temp 4-component vector of float)
+0:27 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:27 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 0 (const int)
+0:27 direct index ( temp float)
+0:27 'tesscoord' ( in 2-component vector of float)
+0:27 Constant:
+0:27 0 (const int)
+0:28 move second child to first child ( temp 3-component vector of float)
+0:28 norm: direct index for structure ( temp 3-component vector of float)
+0:28 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 Constant:
+0:28 1 (const int)
+0:28 add ( temp 3-component vector of float)
+0:28 norm: direct index for structure ( temp 3-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 1 (const int)
+0:28 direct index ( temp float)
+0:28 'tesscoord' ( in 2-component vector of float)
+0:28 Constant:
+0:28 1 (const int)
+0:30 Branch: Return with expression
+0:30 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 Function Definition: main( ( temp void)
+0:24 Function Parameters:
+0:? Sequence
+0:24 move second child to first child ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 move second child to first child ( temp 2-component vector of float)
+0:? 'tesscoord' ( temp 2-component vector of float)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:24 Sequence
+0:24 move second child to first child ( temp float)
+0:24 direct index ( temp float)
+0:24 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 0 (const int)
+0:24 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:24 Constant:
+0:24 0 (const int)
+0:24 move second child to first child ( temp float)
+0:24 direct index ( temp float)
+0:24 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 1 (const int)
+0:24 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:24 Constant:
+0:24 1 (const int)
+0:24 move second child to first child ( temp float)
+0:24 direct index ( temp float)
+0:24 flTessFactor: direct index for structure ( temp 3-element array of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 direct index ( patch in float TessLevelOuter)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:24 Constant:
+0:24 2 (const int)
+0:24 move second child to first child ( temp float)
+0:24 flInsideTessFactor: direct index for structure ( temp float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:24 Constant:
+0:24 1 (const int)
+0:24 direct index ( patch in float TessLevelInner)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Sequence
+0:24 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 Function Call: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'tesscoord' ( temp 2-component vector of float)
+0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
+0:24 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:24 pos: direct index for structure ( temp 4-component vector of float)
+0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 Constant:
+0:24 0 (const int)
+0:24 move second child to first child ( temp 3-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:24 norm: direct index for structure ( temp 3-component vector of float)
+0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:24 Constant:
+0:24 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
+0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
+0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
+0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 100
+
+ Capability Tessellation
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationEvaluation 4 "main" 54 58 67 81 93 97
+ ExecutionMode 4 Isolines
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "ds_in_t"
+ MemberName 9(ds_in_t) 0 "pos"
+ MemberName 9(ds_in_t) 1 "norm"
+ Name 17 "pcf_in_t"
+ MemberName 17(pcf_in_t) 0 "flTessFactor"
+ MemberName 17(pcf_in_t) 1 "flInsideTessFactor"
+ Name 19 "gs_in_t"
+ MemberName 19(gs_in_t) 0 "pos"
+ MemberName 19(gs_in_t) 1 "norm"
+ Name 24 "@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;"
+ Name 21 "i"
+ Name 22 "tesscoord"
+ Name 23 "pcf_data"
+ Name 27 "o"
+ Name 52 "i"
+ Name 54 "i"
+ Name 56 "tesscoord"
+ Name 58 "tesscoord"
+ Name 63 "pcf_data"
+ Name 67 "pcf_data.flTessFactor"
+ Name 81 "pcf_data.flInsideTessFactor"
+ Name 85 "flattenTemp"
+ Name 87 "param"
+ Name 89 "param"
+ Name 93 "@entryPointOutput.pos"
+ Name 97 "@entryPointOutput.norm"
+ Decorate 54(i) Location 0
+ Decorate 58(tesscoord) Patch
+ Decorate 58(tesscoord) BuiltIn TessCoord
+ Decorate 67(pcf_data.flTessFactor) Patch
+ Decorate 67(pcf_data.flTessFactor) BuiltIn TessLevelOuter
+ Decorate 81(pcf_data.flInsideTessFactor) Patch
+ Decorate 81(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
+ Decorate 93(@entryPointOutput.pos) Location 0
+ Decorate 97(@entryPointOutput.norm) Location 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 3
+ 9(ds_in_t): TypeStruct 7(fvec4) 8(fvec3)
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 2
+ 12: TypeArray 9(ds_in_t) 11
+ 13: TypeVector 6(float) 2
+ 14: TypePointer Function 13(fvec2)
+ 15: 10(int) Constant 3
+ 16: TypeArray 6(float) 15
+ 17(pcf_in_t): TypeStruct 16 6(float)
+ 18: TypePointer Function 17(pcf_in_t)
+ 19(gs_in_t): TypeStruct 7(fvec4) 8(fvec3)
+ 20: TypeFunction 19(gs_in_t) 12 14(ptr) 18(ptr)
+ 26: TypePointer Function 19(gs_in_t)
+ 28: TypeInt 32 1
+ 29: 28(int) Constant 0
+ 31: 10(int) Constant 0
+ 32: TypePointer Function 6(float)
+ 37: TypePointer Function 7(fvec4)
+ 39: 28(int) Constant 1
+ 41: 10(int) Constant 1
+ 46: TypePointer Function 8(fvec3)
+ 51: TypePointer Function 12
+ 53: TypePointer Input 12
+ 54(i): 53(ptr) Variable Input
+ 57: TypePointer Input 8(fvec3)
+ 58(tesscoord): 57(ptr) Variable Input
+ 64: 10(int) Constant 4
+ 65: TypeArray 6(float) 64
+ 66: TypePointer Input 65
+67(pcf_data.flTessFactor): 66(ptr) Variable Input
+ 68: TypePointer Input 6(float)
+ 75: 28(int) Constant 2
+ 79: TypeArray 6(float) 11
+ 80: TypePointer Input 79
+81(pcf_data.flInsideTessFactor): 80(ptr) Variable Input
+ 92: TypePointer Output 7(fvec4)
+93(@entryPointOutput.pos): 92(ptr) Variable Output
+ 96: TypePointer Output 8(fvec3)
+97(@entryPointOutput.norm): 96(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 52(i): 51(ptr) Variable Function
+ 56(tesscoord): 14(ptr) Variable Function
+ 63(pcf_data): 18(ptr) Variable Function
+ 85(flattenTemp): 26(ptr) Variable Function
+ 87(param): 14(ptr) Variable Function
+ 89(param): 18(ptr) Variable Function
+ 55: 12 Load 54(i)
+ Store 52(i) 55
+ 59: 8(fvec3) Load 58(tesscoord)
+ 60: 6(float) CompositeExtract 59 0
+ 61: 6(float) CompositeExtract 59 1
+ 62: 13(fvec2) CompositeConstruct 60 61
+ Store 56(tesscoord) 62
+ 69: 68(ptr) AccessChain 67(pcf_data.flTessFactor) 29
+ 70: 6(float) Load 69
+ 71: 32(ptr) AccessChain 63(pcf_data) 29 29
+ Store 71 70
+ 72: 68(ptr) AccessChain 67(pcf_data.flTessFactor) 39
+ 73: 6(float) Load 72
+ 74: 32(ptr) AccessChain 63(pcf_data) 29 39
+ Store 74 73
+ 76: 68(ptr) AccessChain 67(pcf_data.flTessFactor) 75
+ 77: 6(float) Load 76
+ 78: 32(ptr) AccessChain 63(pcf_data) 29 75
+ Store 78 77
+ 82: 68(ptr) AccessChain 81(pcf_data.flInsideTessFactor) 29
+ 83: 6(float) Load 82
+ 84: 32(ptr) AccessChain 63(pcf_data) 39
+ Store 84 83
+ 86: 12 Load 52(i)
+ 88: 13(fvec2) Load 56(tesscoord)
+ Store 87(param) 88
+ 90:17(pcf_in_t) Load 63(pcf_data)
+ Store 89(param) 90
+ 91: 19(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;) 86 87(param) 89(param)
+ Store 85(flattenTemp) 91
+ 94: 37(ptr) AccessChain 85(flattenTemp) 29
+ 95: 7(fvec4) Load 94
+ Store 93(@entryPointOutput.pos) 95
+ 98: 46(ptr) AccessChain 85(flattenTemp) 39
+ 99: 8(fvec3) Load 98
+ Store 97(@entryPointOutput.norm) 99
+ Return
+ FunctionEnd
+24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;): 19(gs_in_t) Function None 20
+ 21(i): 12 FunctionParameter
+ 22(tesscoord): 14(ptr) FunctionParameter
+ 23(pcf_data): 18(ptr) FunctionParameter
+ 25: Label
+ 27(o): 26(ptr) Variable Function
+ 30: 7(fvec4) CompositeExtract 21(i) 0 0
+ 33: 32(ptr) AccessChain 22(tesscoord) 31
+ 34: 6(float) Load 33
+ 35: 7(fvec4) CompositeConstruct 34 34 34 34
+ 36: 7(fvec4) FAdd 30 35
+ 38: 37(ptr) AccessChain 27(o) 29
+ Store 38 36
+ 40: 8(fvec3) CompositeExtract 21(i) 0 1
+ 42: 32(ptr) AccessChain 22(tesscoord) 41
+ 43: 6(float) Load 42
+ 44: 8(fvec3) CompositeConstruct 43 43 43
+ 45: 8(fvec3) FAdd 40 44
+ 47: 46(ptr) AccessChain 27(o) 39
+ Store 47 45
+ 48: 19(gs_in_t) Load 27(o)
+ ReturnValue 48
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystruct.init.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystruct.init.vert.out
new file mode 100644
index 00000000000..295fb0400cc
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystruct.init.vert.out
@@ -0,0 +1,112 @@
+hlsl.emptystruct.init.vert
+WARNING: 0:3: 'Test_Empty' : variable with qualifier 'const' not initialized; zero initializing
+
+Shader version: 500
+0:? Sequence
+0:6 Function Definition: @main(u1; ( temp 4-component vector of float)
+0:6 Function Parameters:
+0:6 'vertexIndex' ( in uint)
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 Constant:
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:6 Function Definition: main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:6 move second child to first child ( temp uint)
+0:? 'vertexIndex' ( temp uint)
+0:? 'vertexIndex' (layout( location=0) in uint)
+0:6 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:6 Function Call: @main(u1; ( temp 4-component vector of float)
+0:? 'vertexIndex' ( temp uint)
+0:? Linker Objects
+0:? 'Test_Empty' ( const structure{})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'vertexIndex' (layout( location=0) in uint)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:6 Function Definition: @main(u1; ( temp 4-component vector of float)
+0:6 Function Parameters:
+0:6 'vertexIndex' ( in uint)
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 Constant:
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:6 Function Definition: main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:6 move second child to first child ( temp uint)
+0:? 'vertexIndex' ( temp uint)
+0:? 'vertexIndex' (layout( location=0) in uint)
+0:6 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:6 Function Call: @main(u1; ( temp 4-component vector of float)
+0:? 'vertexIndex' ( temp uint)
+0:? Linker Objects
+0:? 'Test_Empty' ( const structure{})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'vertexIndex' (layout( location=0) in uint)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 29
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 20 23
+ Source HLSL 500
+ Name 4 "main"
+ Name 12 "@main(u1;"
+ Name 11 "vertexIndex"
+ Name 18 "vertexIndex"
+ Name 20 "vertexIndex"
+ Name 23 "@entryPointOutput"
+ Name 24 "param"
+ Name 27 "Test"
+ Decorate 20(vertexIndex) Location 0
+ Decorate 23(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 4
+ 10: TypeFunction 9(fvec4) 7(ptr)
+ 14: 8(float) Constant 0
+ 15: 9(fvec4) ConstantComposite 14 14 14 14
+ 19: TypePointer Input 6(int)
+ 20(vertexIndex): 19(ptr) Variable Input
+ 22: TypePointer Output 9(fvec4)
+23(@entryPointOutput): 22(ptr) Variable Output
+ 27(Test): TypeStruct
+ 28: 27(Test) ConstantComposite
+ 4(main): 2 Function None 3
+ 5: Label
+ 18(vertexIndex): 7(ptr) Variable Function
+ 24(param): 7(ptr) Variable Function
+ 21: 6(int) Load 20(vertexIndex)
+ Store 18(vertexIndex) 21
+ 25: 6(int) Load 18(vertexIndex)
+ Store 24(param) 25
+ 26: 9(fvec4) FunctionCall 12(@main(u1;) 24(param)
+ Store 23(@entryPointOutput) 26
+ Return
+ FunctionEnd
+ 12(@main(u1;): 9(fvec4) Function None 10
+ 11(vertexIndex): 7(ptr) FunctionParameter
+ 13: Label
+ ReturnValue 15
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.frag.out
index e0da9852112..ee20b7da84c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.frag.out
@@ -1,5 +1,5 @@
hlsl.emptystructreturn.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: @main(struct-ps_in1; ( temp structure{})
@@ -11,22 +11,22 @@ gl_FragCoord origin is upper left
0:10 Function Definition: main( ( temp void)
0:10 Function Parameters:
0:? Sequence
-0:10 move second child to first child ( temp structure{})
-0:? 'i' ( temp structure{})
-0:? 'i' (layout( location=0) in structure{})
+0:10 Sequence
+0:10 move second child to first child ( temp structure{})
+0:? 'i' ( temp structure{})
+0:? 'i' ( in structure{})
0:10 Sequence
0:10 move second child to first child ( temp structure{})
0:? '@entryPointOutput' ( out structure{})
0:10 Function Call: @main(struct-ps_in1; ( temp structure{})
0:? 'i' ( temp structure{})
0:? Linker Objects
-0:? 'i' (layout( location=0) in structure{})
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: @main(struct-ps_in1; ( temp structure{})
@@ -38,26 +38,27 @@ gl_FragCoord origin is upper left
0:10 Function Definition: main( ( temp void)
0:10 Function Parameters:
0:? Sequence
-0:10 move second child to first child ( temp structure{})
-0:? 'i' ( temp structure{})
-0:? 'i' (layout( location=0) in structure{})
+0:10 Sequence
+0:10 move second child to first child ( temp structure{})
+0:? 'i' ( temp structure{})
+0:? 'i' ( in structure{})
0:10 Sequence
0:10 move second child to first child ( temp structure{})
0:? '@entryPointOutput' ( out structure{})
0:10 Function Call: @main(struct-ps_in1; ( temp structure{})
0:? 'i' ( temp structure{})
0:? Linker Objects
-0:? 'i' (layout( location=0) in structure{})
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 27
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 20 23
+ EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 6 "ps_in"
Name 8 "ps_out"
@@ -68,7 +69,6 @@ gl_FragCoord origin is upper left
Name 20 "i"
Name 23 "@entryPointOutput"
Name 24 "param"
- Decorate 20(i) Location 0
2: TypeVoid
3: TypeFunction 2
6(ps_in): TypeStruct
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.vert.out
index ff8935246aa..7ff09dd99a4 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.vert.out
@@ -1,5 +1,5 @@
hlsl.emptystructreturn.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:10 Function Definition: @main(struct-vs_in1; ( temp structure{})
0:10 Function Parameters:
@@ -14,18 +14,18 @@ Shader version: 450
0:10 move second child to first child ( temp structure{})
0:? 'i' ( temp structure{})
0:? 'i' ( in structure{})
-0:10 move second child to first child ( temp structure{})
-0:? '@entryPointOutput' (layout( location=0) out structure{})
-0:10 Function Call: @main(struct-vs_in1; ( temp structure{})
-0:? 'i' ( temp structure{})
+0:10 Sequence
+0:10 move second child to first child ( temp structure{})
+0:? '@entryPointOutput' ( out structure{})
+0:10 Function Call: @main(struct-vs_in1; ( temp structure{})
+0:? 'i' ( temp structure{})
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{})
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:10 Function Definition: @main(struct-vs_in1; ( temp structure{})
0:10 Function Parameters:
@@ -40,21 +40,22 @@ Shader version: 450
0:10 move second child to first child ( temp structure{})
0:? 'i' ( temp structure{})
0:? 'i' ( in structure{})
-0:10 move second child to first child ( temp structure{})
-0:? '@entryPointOutput' (layout( location=0) out structure{})
-0:10 Function Call: @main(struct-vs_in1; ( temp structure{})
-0:? 'i' ( temp structure{})
+0:10 Sequence
+0:10 move second child to first child ( temp structure{})
+0:? '@entryPointOutput' ( out structure{})
+0:10 Function Call: @main(struct-vs_in1; ( temp structure{})
+0:? 'i' ( temp structure{})
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{})
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 27
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 20 23
+ EntryPoint Vertex 4 "main"
+ Source HLSL 500
Name 4 "main"
Name 6 "vs_in"
Name 8 "vs_out"
@@ -65,7 +66,6 @@ Shader version: 450
Name 20 "i"
Name 23 "@entryPointOutput"
Name 24 "param"
- Decorate 23(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6(vs_in): TypeStruct
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry-in.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry-in.frag.out
index 7c1561605ba..10d8544140e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry-in.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry-in.frag.out
@@ -1,5 +1,5 @@
hlsl.entry-in.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:8 Function Definition: fun(struct-InParam-vf2-vf4-vi21; ( temp float)
@@ -57,39 +57,34 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:13 Constant:
0:13 0 (const int)
-0:13 v: direct index for structure ( temp 2-component vector of float)
-0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
-0:13 Constant:
-0:13 0 (const int)
+0:? 'i.v' (layout( location=0) in 2-component vector of float)
0:13 move second child to first child ( temp 4-component vector of float)
0:13 fragCoord: direct index for structure ( temp 4-component vector of float)
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:13 Constant:
0:13 1 (const int)
-0:? 'i_fragCoord' ( in 4-component vector of float FragCoord)
+0:? 'i.fragCoord' ( in 4-component vector of float FragCoord)
0:13 move second child to first child ( temp 2-component vector of int)
0:13 i2: direct index for structure ( temp 2-component vector of int)
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:13 Constant:
0:13 2 (const int)
-0:13 i2: direct index for structure ( temp 2-component vector of int)
-0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
-0:13 Constant:
-0:13 1 (const int)
+0:? 'i.i2' (layout( location=1) flat in 2-component vector of int)
0:13 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:13 Function Call: @PixelShaderFunction(struct-InParam-vf2-vf4-vi21; ( temp 4-component vector of float)
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
-0:? 'i_fragCoord' ( in 4-component vector of float FragCoord)
+0:? 'i.fragCoord' ( in 4-component vector of float FragCoord)
+0:? 'i.v' (layout( location=0) in 2-component vector of float)
+0:? 'i.i2' (layout( location=1) flat in 2-component vector of int)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:8 Function Definition: fun(struct-InParam-vf2-vf4-vi21; ( temp float)
@@ -147,43 +142,39 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:13 Constant:
0:13 0 (const int)
-0:13 v: direct index for structure ( temp 2-component vector of float)
-0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
-0:13 Constant:
-0:13 0 (const int)
+0:? 'i.v' (layout( location=0) in 2-component vector of float)
0:13 move second child to first child ( temp 4-component vector of float)
0:13 fragCoord: direct index for structure ( temp 4-component vector of float)
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:13 Constant:
0:13 1 (const int)
-0:? 'i_fragCoord' ( in 4-component vector of float FragCoord)
+0:? 'i.fragCoord' ( in 4-component vector of float FragCoord)
0:13 move second child to first child ( temp 2-component vector of int)
0:13 i2: direct index for structure ( temp 2-component vector of int)
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:13 Constant:
0:13 2 (const int)
-0:13 i2: direct index for structure ( temp 2-component vector of int)
-0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
-0:13 Constant:
-0:13 1 (const int)
+0:? 'i.i2' (layout( location=1) flat in 2-component vector of int)
0:13 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:13 Function Call: @PixelShaderFunction(struct-InParam-vf2-vf4-vi21; ( temp 4-component vector of float)
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2})
-0:? 'i_fragCoord' ( in 4-component vector of float FragCoord)
+0:? 'i.fragCoord' ( in 4-component vector of float FragCoord)
+0:? 'i.v' (layout( location=0) in 2-component vector of float)
+0:? 'i.i2' (layout( location=1) flat in 2-component vector of int)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 77
+// Generated by (magic number): 80002
+// Id's are bound by 74
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 56 63 73
+ EntryPoint Fragment 4 "PixelShaderFunction" 55 60 65 70
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "InParam"
MemberName 11(InParam) 0 "v"
@@ -199,16 +190,16 @@ gl_FragCoord origin is upper left
Name 40 "ret2"
Name 41 "param"
Name 53 "i"
- Name 54 "InParam"
- MemberName 54(InParam) 0 "v"
- MemberName 54(InParam) 1 "i2"
- Name 56 "i"
- Name 63 "i_fragCoord"
- Name 73 "@entryPointOutput"
- Name 74 "param"
- Decorate 56(i) Location 0
- Decorate 63(i_fragCoord) BuiltIn FragCoord
- Decorate 73(@entryPointOutput) Location 0
+ Name 55 "i.v"
+ Name 60 "i.fragCoord"
+ Name 65 "i.i2"
+ Name 70 "@entryPointOutput"
+ Name 71 "param"
+ Decorate 55(i.v) Location 0
+ Decorate 60(i.fragCoord) BuiltIn FragCoord
+ Decorate 65(i.i2) Flat
+ Decorate 65(i.i2) Location 1
+ Decorate 70(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -227,37 +218,34 @@ gl_FragCoord origin is upper left
27: 9(int) Constant 1
28: 22(int) Constant 0
44: TypePointer Function 8(fvec4)
- 54(InParam): TypeStruct 7(fvec2) 10(ivec2)
- 55: TypePointer Input 54(InParam)
- 56(i): 55(ptr) Variable Input
- 57: TypePointer Input 7(fvec2)
- 60: TypePointer Function 7(fvec2)
- 62: TypePointer Input 8(fvec4)
- 63(i_fragCoord): 62(ptr) Variable Input
- 66: 9(int) Constant 2
- 67: TypePointer Input 10(ivec2)
- 70: TypePointer Function 10(ivec2)
- 72: TypePointer Output 8(fvec4)
-73(@entryPointOutput): 72(ptr) Variable Output
+ 54: TypePointer Input 7(fvec2)
+ 55(i.v): 54(ptr) Variable Input
+ 57: TypePointer Function 7(fvec2)
+ 59: TypePointer Input 8(fvec4)
+ 60(i.fragCoord): 59(ptr) Variable Input
+ 63: 9(int) Constant 2
+ 64: TypePointer Input 10(ivec2)
+ 65(i.i2): 64(ptr) Variable Input
+ 67: TypePointer Function 10(ivec2)
+ 69: TypePointer Output 8(fvec4)
+70(@entryPointOutput): 69(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
53(i): 12(ptr) Variable Function
- 74(param): 12(ptr) Variable Function
- 58: 57(ptr) AccessChain 56(i) 21
- 59: 7(fvec2) Load 58
- 61: 60(ptr) AccessChain 53(i) 21
- Store 61 59
- 64: 8(fvec4) Load 63(i_fragCoord)
- 65: 44(ptr) AccessChain 53(i) 27
- Store 65 64
- 68: 67(ptr) AccessChain 56(i) 27
- 69: 10(ivec2) Load 68
- 71: 70(ptr) AccessChain 53(i) 66
- Store 71 69
- 75: 11(InParam) Load 53(i)
- Store 74(param) 75
- 76: 8(fvec4) FunctionCall 19(@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;) 74(param)
- Store 73(@entryPointOutput) 76
+ 71(param): 12(ptr) Variable Function
+ 56: 7(fvec2) Load 55(i.v)
+ 58: 57(ptr) AccessChain 53(i) 21
+ Store 58 56
+ 61: 8(fvec4) Load 60(i.fragCoord)
+ 62: 44(ptr) AccessChain 53(i) 27
+ Store 62 61
+ 66: 10(ivec2) Load 65(i.i2)
+ 68: 67(ptr) AccessChain 53(i) 63
+ Store 68 66
+ 72: 11(InParam) Load 53(i)
+ Store 71(param) 72
+ 73: 8(fvec4) FunctionCall 19(@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;) 71(param)
+ Store 70(@entryPointOutput) 73
Return
FunctionEnd
15(fun(struct-InParam-vf2-vf4-vi21;): 6(float) Function None 13
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry-out.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry-out.frag.out
index f92605f9e2d..40fc164045a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry-out.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry-out.frag.out
@@ -1,5 +1,5 @@
hlsl.entry-out.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: fun(struct-OutParam-vf2-vi21; ( temp void)
@@ -86,26 +86,26 @@ gl_FragCoord origin is upper left
0:? 'out1' ( temp 4-component vector of float)
0:13 Sequence
0:13 move second child to first child ( temp 2-component vector of float)
-0:? 'v' (layout( location=2) out 2-component vector of float)
+0:? 'out2.v' (layout( location=2) out 2-component vector of float)
0:13 v: direct index for structure ( temp 2-component vector of float)
0:? 'out2' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i})
0:13 Constant:
0:13 0 (const int)
0:13 move second child to first child ( temp 2-component vector of int)
-0:? 'i' (layout( location=3) out 2-component vector of int)
+0:? 'out2.i' (layout( location=3) out 2-component vector of int)
0:13 i: direct index for structure ( temp 2-component vector of int)
0:? 'out2' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i})
0:13 Constant:
0:13 1 (const int)
0:13 Sequence
0:13 move second child to first child ( temp 2-component vector of float)
-0:? 'v' (layout( location=4) out 2-component vector of float)
+0:? 'out3.v' (layout( location=4) out 2-component vector of float)
0:13 v: direct index for structure ( temp 2-component vector of float)
0:? 'out3' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i})
0:13 Constant:
0:13 0 (const int)
0:13 move second child to first child ( temp 2-component vector of int)
-0:? 'i' (layout( location=5) out 2-component vector of int)
+0:? 'out3.i' (layout( location=5) out 2-component vector of int)
0:13 i: direct index for structure ( temp 2-component vector of int)
0:? 'out3' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i})
0:13 Constant:
@@ -114,16 +114,16 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
0:? 'out1' (layout( location=1) out 4-component vector of float)
-0:? 'v' (layout( location=2) out 2-component vector of float)
-0:? 'i' (layout( location=3) out 2-component vector of int)
-0:? 'v' (layout( location=4) out 2-component vector of float)
-0:? 'i' (layout( location=5) out 2-component vector of int)
+0:? 'out2.v' (layout( location=2) out 2-component vector of float)
+0:? 'out2.i' (layout( location=3) out 2-component vector of int)
+0:? 'out3.v' (layout( location=4) out 2-component vector of float)
+0:? 'out3.i' (layout( location=5) out 2-component vector of int)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: fun(struct-OutParam-vf2-vi21; ( temp void)
@@ -210,26 +210,26 @@ gl_FragCoord origin is upper left
0:? 'out1' ( temp 4-component vector of float)
0:13 Sequence
0:13 move second child to first child ( temp 2-component vector of float)
-0:? 'v' (layout( location=2) out 2-component vector of float)
+0:? 'out2.v' (layout( location=2) out 2-component vector of float)
0:13 v: direct index for structure ( temp 2-component vector of float)
0:? 'out2' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i})
0:13 Constant:
0:13 0 (const int)
0:13 move second child to first child ( temp 2-component vector of int)
-0:? 'i' (layout( location=3) out 2-component vector of int)
+0:? 'out2.i' (layout( location=3) out 2-component vector of int)
0:13 i: direct index for structure ( temp 2-component vector of int)
0:? 'out2' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i})
0:13 Constant:
0:13 1 (const int)
0:13 Sequence
0:13 move second child to first child ( temp 2-component vector of float)
-0:? 'v' (layout( location=4) out 2-component vector of float)
+0:? 'out3.v' (layout( location=4) out 2-component vector of float)
0:13 v: direct index for structure ( temp 2-component vector of float)
0:? 'out3' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i})
0:13 Constant:
0:13 0 (const int)
0:13 move second child to first child ( temp 2-component vector of int)
-0:? 'i' (layout( location=5) out 2-component vector of int)
+0:? 'out3.i' (layout( location=5) out 2-component vector of int)
0:13 i: direct index for structure ( temp 2-component vector of int)
0:? 'out3' ( temp structure{ temp 2-component vector of float v, temp 2-component vector of int i})
0:13 Constant:
@@ -238,13 +238,13 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
0:? 'out1' (layout( location=1) out 4-component vector of float)
-0:? 'v' (layout( location=2) out 2-component vector of float)
-0:? 'i' (layout( location=3) out 2-component vector of int)
-0:? 'v' (layout( location=4) out 2-component vector of float)
-0:? 'i' (layout( location=5) out 2-component vector of int)
+0:? 'out2.v' (layout( location=2) out 2-component vector of float)
+0:? 'out2.i' (layout( location=3) out 2-component vector of int)
+0:? 'out3.v' (layout( location=4) out 2-component vector of float)
+0:? 'out3.i' (layout( location=5) out 2-component vector of int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 89
Capability Shader
@@ -252,6 +252,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 57 60 73 76 80 83 86
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 10 "OutParam"
MemberName 10(OutParam) 0 "v"
@@ -276,17 +277,17 @@ gl_FragCoord origin is upper left
Name 67 "param"
Name 68 "param"
Name 73 "out1"
- Name 76 "v"
- Name 80 "i"
- Name 83 "v"
- Name 86 "i"
+ Name 76 "out2.v"
+ Name 80 "out2.i"
+ Name 83 "out3.v"
+ Name 86 "out3.i"
Decorate 57(input) Location 0
Decorate 60(@entryPointOutput) Location 0
Decorate 73(out1) Location 1
- Decorate 76(v) Location 2
- Decorate 80(i) Location 3
- Decorate 83(v) Location 4
- Decorate 86(i) Location 5
+ Decorate 76(out2.v) Location 2
+ Decorate 80(out2.i) Location 3
+ Decorate 83(out3.v) Location 4
+ Decorate 86(out3.i) Location 5
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -321,11 +322,11 @@ gl_FragCoord origin is upper left
60(@entryPointOutput): 59(ptr) Variable Output
73(out1): 59(ptr) Variable Output
75: TypePointer Output 7(fvec2)
- 76(v): 75(ptr) Variable Output
+ 76(out2.v): 75(ptr) Variable Output
79: TypePointer Output 9(ivec2)
- 80(i): 79(ptr) Variable Output
- 83(v): 75(ptr) Variable Output
- 86(i): 79(ptr) Variable Output
+ 80(out2.i): 79(ptr) Variable Output
+ 83(out3.v): 75(ptr) Variable Output
+ 86(out3.i): 79(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
55(input): 17(ptr) Variable Function
@@ -352,16 +353,16 @@ gl_FragCoord origin is upper left
Store 73(out1) 74
77: 28(ptr) AccessChain 62(out2) 25
78: 7(fvec2) Load 77
- Store 76(v) 78
+ Store 76(out2.v) 78
81: 33(ptr) AccessChain 62(out2) 30
82: 9(ivec2) Load 81
- Store 80(i) 82
+ Store 80(out2.i) 82
84: 28(ptr) AccessChain 63(out3) 25
85: 7(fvec2) Load 84
- Store 83(v) 85
+ Store 83(out3.v) 85
87: 33(ptr) AccessChain 63(out3) 30
88: 9(ivec2) Load 87
- Store 86(i) 88
+ Store 86(out3.i) 88
Return
FunctionEnd
14(fun(struct-OutParam-vf2-vi21;): 2 Function None 12
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry.rename.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry.rename.frag.out
index 293592f85c3..9972ec09242 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry.rename.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.entry.rename.frag.out
@@ -1,5 +1,5 @@
hlsl.entry.rename.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: not_the_entry_point( ( temp void)
@@ -24,20 +24,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:11 Color: direct index for structure ( temp 4-component vector of float)
0:11 Function Call: @main_in_spv( ( temp structure{ temp 4-component vector of float Color})
0:11 Constant:
0:11 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int also_not_the_entry_point})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: not_the_entry_point( ( temp void)
@@ -62,17 +62,17 @@ gl_FragCoord origin is upper left
0:? Sequence
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:11 Color: direct index for structure ( temp 4-component vector of float)
0:11 Function Call: @main_in_spv( ( temp structure{ temp 4-component vector of float Color})
0:11 Constant:
0:11 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int also_not_the_entry_point})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 32
Capability Shader
@@ -80,17 +80,18 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main_in_spv" 26
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main_in_spv"
Name 6 "not_the_entry_point("
Name 10 "PS_OUTPUT"
MemberName 10(PS_OUTPUT) 0 "Color"
Name 12 "@main_in_spv("
Name 15 "psout"
- Name 26 "Color"
+ Name 26 "@entryPointOutput.Color"
Name 29 "$Global"
MemberName 29($Global) 0 "also_not_the_entry_point"
Name 31 ""
- Decorate 26(Color) Location 0
+ Decorate 26(@entryPointOutput.Color) Location 0
MemberDecorate 29($Global) 0 Offset 0
Decorate 29($Global) Block
Decorate 31 DescriptorSet 0
@@ -107,7 +108,7 @@ gl_FragCoord origin is upper left
19: 9(fvec4) ConstantComposite 18 18 18 18
20: TypePointer Function 9(fvec4)
25: TypePointer Output 9(fvec4)
- 26(Color): 25(ptr) Variable Output
+26(@entryPointOutput.Color): 25(ptr) Variable Output
29($Global): TypeStruct 16(int)
30: TypePointer Uniform 29($Global)
31: 30(ptr) Variable Uniform
@@ -115,7 +116,7 @@ gl_FragCoord origin is upper left
5: Label
27:10(PS_OUTPUT) FunctionCall 12(@main_in_spv()
28: 9(fvec4) CompositeExtract 27 0
- Store 26(Color) 28
+ Store 26(@entryPointOutput.Color) 28
Return
FunctionEnd
6(not_the_entry_point(): 2 Function None 3
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out
new file mode 100644
index 00000000000..6b05ef21983
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out
@@ -0,0 +1,66 @@
+hlsl.explicitDescriptorSet.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 31
+
+ Capability Shader
+ Capability Sampled1D
+ Capability SampledBuffer
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 19
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 13 "g_sSamp2_amb"
+ Name 19 "@entryPointOutput"
+ Name 21 "g_sSamp"
+ Name 24 "g_tTex1df4"
+ Name 25 "$Global"
+ MemberName 25($Global) 0 "floatval_amb"
+ Name 27 ""
+ Name 30 "floatbuff"
+ Decorate 13(g_sSamp2_amb) DescriptorSet 3
+ Decorate 13(g_sSamp2_amb) Binding 10
+ Decorate 19(@entryPointOutput) Location 0
+ Decorate 21(g_sSamp) DescriptorSet 3
+ Decorate 21(g_sSamp) Binding 11
+ Decorate 24(g_tTex1df4) DescriptorSet 3
+ Decorate 24(g_tTex1df4) Binding 20
+ MemberDecorate 25($Global) 0 Offset 0
+ Decorate 25($Global) Block
+ Decorate 27 DescriptorSet 3
+ Decorate 30(floatbuff) DescriptorSet 3
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeSampler
+ 12: TypePointer UniformConstant 11
+13(g_sSamp2_amb): 12(ptr) Variable UniformConstant
+ 14: 6(float) Constant 0
+ 15: 7(fvec4) ConstantComposite 14 14 14 14
+ 18: TypePointer Output 7(fvec4)
+19(@entryPointOutput): 18(ptr) Variable Output
+ 21(g_sSamp): 12(ptr) Variable UniformConstant
+ 22: TypeImage 6(float) 1D sampled format:Unknown
+ 23: TypePointer UniformConstant 22
+ 24(g_tTex1df4): 23(ptr) Variable UniformConstant
+ 25($Global): TypeStruct 6(float)
+ 26: TypePointer Uniform 25($Global)
+ 27: 26(ptr) Variable Uniform
+ 28: TypeImage 6(float) Buffer sampled format:R32f
+ 29: TypePointer UniformConstant 28
+ 30(floatbuff): 29(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 20: 7(fvec4) FunctionCall 9(@main()
+ Store 19(@entryPointOutput) 20
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ ReturnValue 15
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet.frag.out
new file mode 100644
index 00000000000..2f092801d52
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet.frag.out
@@ -0,0 +1,66 @@
+hlsl.explicitDescriptorSet.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 31
+
+ Capability Shader
+ Capability Sampled1D
+ Capability SampledBuffer
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 19
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 13 "g_sSamp2_amb"
+ Name 19 "@entryPointOutput"
+ Name 21 "g_sSamp"
+ Name 24 "g_tTex1df4"
+ Name 25 "$Global"
+ MemberName 25($Global) 0 "floatval_amb"
+ Name 27 ""
+ Name 30 "floatbuff"
+ Decorate 13(g_sSamp2_amb) DescriptorSet 4
+ Decorate 13(g_sSamp2_amb) Binding 10
+ Decorate 19(@entryPointOutput) Location 0
+ Decorate 21(g_sSamp) DescriptorSet 4
+ Decorate 21(g_sSamp) Binding 11
+ Decorate 24(g_tTex1df4) DescriptorSet 4
+ Decorate 24(g_tTex1df4) Binding 20
+ MemberDecorate 25($Global) 0 Offset 0
+ Decorate 25($Global) Block
+ Decorate 27 DescriptorSet 4
+ Decorate 30(floatbuff) DescriptorSet 4
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeSampler
+ 12: TypePointer UniformConstant 11
+13(g_sSamp2_amb): 12(ptr) Variable UniformConstant
+ 14: 6(float) Constant 0
+ 15: 7(fvec4) ConstantComposite 14 14 14 14
+ 18: TypePointer Output 7(fvec4)
+19(@entryPointOutput): 18(ptr) Variable Output
+ 21(g_sSamp): 12(ptr) Variable UniformConstant
+ 22: TypeImage 6(float) 1D sampled format:Unknown
+ 23: TypePointer UniformConstant 22
+ 24(g_tTex1df4): 23(ptr) Variable UniformConstant
+ 25($Global): TypeStruct 6(float)
+ 26: TypePointer Uniform 25($Global)
+ 27: 26(ptr) Variable Uniform
+ 28: TypeImage 6(float) Buffer sampled format:R32f
+ 29: TypePointer UniformConstant 28
+ 30(floatbuff): 29(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 20: 7(fvec4) FunctionCall 9(@main()
+ Store 19(@entryPointOutput) 20
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ ReturnValue 15
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flatten.return.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flatten.return.frag.out
index 9b28695f782..730a989a7b7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flatten.return.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flatten.return.frag.out
@@ -1,5 +1,5 @@
hlsl.flatten.return.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: Func1( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
@@ -27,40 +27,40 @@ gl_FragCoord origin is upper left
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 Function Call: @main( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:16 color: direct index for structure ( temp 4-component vector of float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 Constant:
0:16 0 (const int)
0:16 move second child to first child ( temp float)
-0:? 'other_struct_member1' (layout( location=1) out float)
+0:? '@entryPointOutput.other_struct_member1' (layout( location=1) out float)
0:16 other_struct_member1: direct index for structure ( temp float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 Constant:
0:16 1 (const int)
0:16 move second child to first child ( temp float)
-0:? 'other_struct_member2' (layout( location=2) out float)
+0:? '@entryPointOutput.other_struct_member2' (layout( location=2) out float)
0:16 other_struct_member2: direct index for structure ( temp float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 Constant:
0:16 2 (const int)
0:16 move second child to first child ( temp float)
-0:? 'other_struct_member3' (layout( location=3) out float)
+0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float)
0:16 other_struct_member3: direct index for structure ( temp float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 Constant:
0:16 3 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
-0:? 'other_struct_member1' (layout( location=1) out float)
-0:? 'other_struct_member2' (layout( location=2) out float)
-0:? 'other_struct_member3' (layout( location=3) out float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.other_struct_member1' (layout( location=1) out float)
+0:? '@entryPointOutput.other_struct_member2' (layout( location=2) out float)
+0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: Func1( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
@@ -88,37 +88,37 @@ gl_FragCoord origin is upper left
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 Function Call: @main( ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:16 color: direct index for structure ( temp 4-component vector of float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 Constant:
0:16 0 (const int)
0:16 move second child to first child ( temp float)
-0:? 'other_struct_member1' (layout( location=1) out float)
+0:? '@entryPointOutput.other_struct_member1' (layout( location=1) out float)
0:16 other_struct_member1: direct index for structure ( temp float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 Constant:
0:16 1 (const int)
0:16 move second child to first child ( temp float)
-0:? 'other_struct_member2' (layout( location=2) out float)
+0:? '@entryPointOutput.other_struct_member2' (layout( location=2) out float)
0:16 other_struct_member2: direct index for structure ( temp float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 Constant:
0:16 2 (const int)
0:16 move second child to first child ( temp float)
-0:? 'other_struct_member3' (layout( location=3) out float)
+0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float)
0:16 other_struct_member3: direct index for structure ( temp float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3})
0:16 Constant:
0:16 3 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
-0:? 'other_struct_member1' (layout( location=1) out float)
-0:? 'other_struct_member2' (layout( location=2) out float)
-0:? 'other_struct_member3' (layout( location=3) out float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.other_struct_member1' (layout( location=1) out float)
+0:? '@entryPointOutput.other_struct_member2' (layout( location=2) out float)
+0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 49
Capability Shader
@@ -126,6 +126,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 29 36 41 45
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "color"
@@ -135,14 +136,14 @@ gl_FragCoord origin is upper left
Name 10 "Func1("
Name 12 "@main("
Name 26 "flattenTemp"
- Name 29 "color"
- Name 36 "other_struct_member1"
- Name 41 "other_struct_member2"
- Name 45 "other_struct_member3"
- Decorate 29(color) Location 0
- Decorate 36(other_struct_member1) Location 1
- Decorate 41(other_struct_member2) Location 2
- Decorate 45(other_struct_member3) Location 3
+ Name 29 "@entryPointOutput.color"
+ Name 36 "@entryPointOutput.other_struct_member1"
+ Name 41 "@entryPointOutput.other_struct_member2"
+ Name 45 "@entryPointOutput.other_struct_member3"
+ Decorate 29(@entryPointOutput.color) Location 0
+ Decorate 36(@entryPointOutput.other_struct_member1) Location 1
+ Decorate 41(@entryPointOutput.other_struct_member2) Location 2
+ Decorate 45(@entryPointOutput.other_struct_member3) Location 3
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -157,17 +158,17 @@ gl_FragCoord origin is upper left
19:8(PS_OUTPUT) ConstantComposite 15 16 17 18
25: TypePointer Function 8(PS_OUTPUT)
28: TypePointer Output 7(fvec4)
- 29(color): 28(ptr) Variable Output
+29(@entryPointOutput.color): 28(ptr) Variable Output
30: TypeInt 32 1
31: 30(int) Constant 0
32: TypePointer Function 7(fvec4)
35: TypePointer Output 6(float)
-36(other_struct_member1): 35(ptr) Variable Output
+36(@entryPointOutput.other_struct_member1): 35(ptr) Variable Output
37: 30(int) Constant 1
38: TypePointer Function 6(float)
-41(other_struct_member2): 35(ptr) Variable Output
+41(@entryPointOutput.other_struct_member2): 35(ptr) Variable Output
42: 30(int) Constant 2
-45(other_struct_member3): 35(ptr) Variable Output
+45(@entryPointOutput.other_struct_member3): 35(ptr) Variable Output
46: 30(int) Constant 3
4(main): 2 Function None 3
5: Label
@@ -176,16 +177,16 @@ gl_FragCoord origin is upper left
Store 26(flattenTemp) 27
33: 32(ptr) AccessChain 26(flattenTemp) 31
34: 7(fvec4) Load 33
- Store 29(color) 34
+ Store 29(@entryPointOutput.color) 34
39: 38(ptr) AccessChain 26(flattenTemp) 37
40: 6(float) Load 39
- Store 36(other_struct_member1) 40
+ Store 36(@entryPointOutput.other_struct_member1) 40
43: 38(ptr) AccessChain 26(flattenTemp) 42
44: 6(float) Load 43
- Store 41(other_struct_member2) 44
+ Store 41(@entryPointOutput.other_struct_member2) 44
47: 38(ptr) AccessChain 26(flattenTemp) 46
48: 6(float) Load 47
- Store 45(other_struct_member3) 48
+ Store 45(@entryPointOutput.other_struct_member3) 48
Return
FunctionEnd
10(Func1():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaque.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaque.frag.out
new file mode 100644
index 00000000000..8eafba8e252
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaque.frag.out
@@ -0,0 +1,329 @@
+hlsl.flattenOpaque.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: osCall1(struct-os-p11; ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:? 's.s2D' ( in sampler)
+0:? Sequence
+0:16 Branch: Return with expression
+0:16 texture ( temp 4-component vector of float)
+0:16 Construct combined texture-sampler ( temp sampler2D)
+0:16 'tex' ( uniform texture2D)
+0:? 's.s2D' ( in sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:20 Function Definition: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float)
+0:20 Function Parameters:
+0:? 's.s2D' ( in sampler)
+0:20 'f2' ( in 2-component vector of float)
+0:? Sequence
+0:21 Branch: Return with expression
+0:21 texture ( temp 4-component vector of float)
+0:21 Construct combined texture-sampler ( temp sampler2D)
+0:21 'tex' ( uniform texture2D)
+0:? 's.s2D' ( in sampler)
+0:21 'f2' ( in 2-component vector of float)
+0:25 Function Definition: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float)
+0:25 Function Parameters:
+0:? 's.s2D' ( in sampler)
+0:? 's.tex' ( in texture2D)
+0:? Sequence
+0:26 Branch: Return with expression
+0:26 texture ( temp 4-component vector of float)
+0:26 Construct combined texture-sampler ( temp sampler2D)
+0:? 's.tex' ( in texture2D)
+0:? 's.s2D' ( in sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:30 Function Definition: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float)
+0:30 Function Parameters:
+0:? 's.s2D' ( in sampler)
+0:? 's.tex' ( in texture2D)
+0:30 'f2' ( in 2-component vector of float)
+0:? Sequence
+0:31 Branch: Return with expression
+0:31 texture ( temp 4-component vector of float)
+0:31 Construct combined texture-sampler ( temp sampler2D)
+0:? 's.tex' ( in texture2D)
+0:? 's.s2D' ( in sampler)
+0:31 'f2' ( in 2-component vector of float)
+0:35 Function Definition: @main( ( temp 4-component vector of float)
+0:35 Function Parameters:
+0:? Sequence
+0:39 Branch: Return with expression
+0:38 add ( temp 4-component vector of float)
+0:37 add ( temp 4-component vector of float)
+0:36 add ( temp 4-component vector of float)
+0:36 Function Call: osCall1(struct-os-p11; ( temp 4-component vector of float)
+0:? 's.s2D' ( uniform sampler)
+0:37 Function Call: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float)
+0:? 's.s2D' ( uniform sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:38 Function Call: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float)
+0:? 's2.s2D' ( uniform sampler)
+0:? 's2.tex' ( uniform texture2D)
+0:39 Function Call: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float)
+0:? 's2.s2D' ( uniform sampler)
+0:? 's2.tex' ( uniform texture2D)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:35 Function Definition: main( ( temp void)
+0:35 Function Parameters:
+0:? Sequence
+0:35 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:35 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'tex' ( uniform texture2D)
+0:? 's.s2D' ( uniform sampler)
+0:? 's2.s2D' ( uniform sampler)
+0:? 's2.tex' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: osCall1(struct-os-p11; ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:? 's.s2D' ( in sampler)
+0:? Sequence
+0:16 Branch: Return with expression
+0:16 texture ( temp 4-component vector of float)
+0:16 Construct combined texture-sampler ( temp sampler2D)
+0:16 'tex' ( uniform texture2D)
+0:? 's.s2D' ( in sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:20 Function Definition: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float)
+0:20 Function Parameters:
+0:? 's.s2D' ( in sampler)
+0:20 'f2' ( in 2-component vector of float)
+0:? Sequence
+0:21 Branch: Return with expression
+0:21 texture ( temp 4-component vector of float)
+0:21 Construct combined texture-sampler ( temp sampler2D)
+0:21 'tex' ( uniform texture2D)
+0:? 's.s2D' ( in sampler)
+0:21 'f2' ( in 2-component vector of float)
+0:25 Function Definition: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float)
+0:25 Function Parameters:
+0:? 's.s2D' ( in sampler)
+0:? 's.tex' ( in texture2D)
+0:? Sequence
+0:26 Branch: Return with expression
+0:26 texture ( temp 4-component vector of float)
+0:26 Construct combined texture-sampler ( temp sampler2D)
+0:? 's.tex' ( in texture2D)
+0:? 's.s2D' ( in sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:30 Function Definition: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float)
+0:30 Function Parameters:
+0:? 's.s2D' ( in sampler)
+0:? 's.tex' ( in texture2D)
+0:30 'f2' ( in 2-component vector of float)
+0:? Sequence
+0:31 Branch: Return with expression
+0:31 texture ( temp 4-component vector of float)
+0:31 Construct combined texture-sampler ( temp sampler2D)
+0:? 's.tex' ( in texture2D)
+0:? 's.s2D' ( in sampler)
+0:31 'f2' ( in 2-component vector of float)
+0:35 Function Definition: @main( ( temp 4-component vector of float)
+0:35 Function Parameters:
+0:? Sequence
+0:39 Branch: Return with expression
+0:38 add ( temp 4-component vector of float)
+0:37 add ( temp 4-component vector of float)
+0:36 add ( temp 4-component vector of float)
+0:36 Function Call: osCall1(struct-os-p11; ( temp 4-component vector of float)
+0:? 's.s2D' ( uniform sampler)
+0:37 Function Call: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float)
+0:? 's.s2D' ( uniform sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:38 Function Call: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float)
+0:? 's2.s2D' ( uniform sampler)
+0:? 's2.tex' ( uniform texture2D)
+0:39 Function Call: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float)
+0:? 's2.s2D' ( uniform sampler)
+0:? 's2.tex' ( uniform texture2D)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:35 Function Definition: main( ( temp void)
+0:35 Function Parameters:
+0:? Sequence
+0:35 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:35 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'tex' ( uniform texture2D)
+0:? 's.s2D' ( uniform sampler)
+0:? 's2.s2D' ( uniform sampler)
+0:? 's2.tex' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 99
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 97
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 12 "osCall1(struct-os-p11;"
+ Name 11 "s.s2D"
+ Name 19 "osCall2(struct-os-p11;vf2;"
+ Name 17 "s.s2D"
+ Name 18 "f2"
+ Name 26 "os2Call1(struct-os2-p1-t211;"
+ Name 24 "s.s2D"
+ Name 25 "s.tex"
+ Name 32 "os2Call2(struct-os2-p1-t211;vf2;"
+ Name 29 "s.s2D"
+ Name 30 "s.tex"
+ Name 31 "f2"
+ Name 35 "@main("
+ Name 38 "tex"
+ Name 70 "s.s2D"
+ Name 71 "param"
+ Name 74 "param"
+ Name 76 "param"
+ Name 79 "s2.s2D"
+ Name 80 "s2.tex"
+ Name 81 "param"
+ Name 83 "param"
+ Name 87 "param"
+ Name 89 "param"
+ Name 91 "param"
+ Name 97 "@entryPointOutput"
+ Decorate 38(tex) DescriptorSet 0
+ Decorate 70(s.s2D) DescriptorSet 0
+ Decorate 79(s2.s2D) DescriptorSet 0
+ Decorate 80(s2.tex) DescriptorSet 0
+ Decorate 97(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeSampler
+ 7: TypePointer Function 6
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 4
+ 10: TypeFunction 9(fvec4) 7(ptr)
+ 14: TypeVector 8(float) 2
+ 15: TypePointer Function 14(fvec2)
+ 16: TypeFunction 9(fvec4) 7(ptr) 15(ptr)
+ 21: TypeImage 8(float) 2D sampled format:Unknown
+ 22: TypePointer Function 21
+ 23: TypeFunction 9(fvec4) 7(ptr) 22(ptr)
+ 28: TypeFunction 9(fvec4) 7(ptr) 22(ptr) 15(ptr)
+ 34: TypeFunction 9(fvec4)
+ 37: TypePointer UniformConstant 21
+ 38(tex): 37(ptr) Variable UniformConstant
+ 41: TypeSampledImage 21
+ 43: 8(float) Constant 1045220557
+ 44: 8(float) Constant 1050253722
+ 45: 14(fvec2) ConstantComposite 43 44
+ 69: TypePointer UniformConstant 6
+ 70(s.s2D): 69(ptr) Variable UniformConstant
+ 79(s2.s2D): 69(ptr) Variable UniformConstant
+ 80(s2.tex): 37(ptr) Variable UniformConstant
+ 96: TypePointer Output 9(fvec4)
+97(@entryPointOutput): 96(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 98: 9(fvec4) FunctionCall 35(@main()
+ Store 97(@entryPointOutput) 98
+ Return
+ FunctionEnd
+12(osCall1(struct-os-p11;): 9(fvec4) Function None 10
+ 11(s.s2D): 7(ptr) FunctionParameter
+ 13: Label
+ 39: 21 Load 38(tex)
+ 40: 6 Load 11(s.s2D)
+ 42: 41 SampledImage 39 40
+ 46: 9(fvec4) ImageSampleImplicitLod 42 45
+ ReturnValue 46
+ FunctionEnd
+19(osCall2(struct-os-p11;vf2;): 9(fvec4) Function None 16
+ 17(s.s2D): 7(ptr) FunctionParameter
+ 18(f2): 15(ptr) FunctionParameter
+ 20: Label
+ 49: 21 Load 38(tex)
+ 50: 6 Load 17(s.s2D)
+ 51: 41 SampledImage 49 50
+ 52: 14(fvec2) Load 18(f2)
+ 53: 9(fvec4) ImageSampleImplicitLod 51 52
+ ReturnValue 53
+ FunctionEnd
+26(os2Call1(struct-os2-p1-t211;): 9(fvec4) Function None 23
+ 24(s.s2D): 7(ptr) FunctionParameter
+ 25(s.tex): 22(ptr) FunctionParameter
+ 27: Label
+ 56: 21 Load 25(s.tex)
+ 57: 6 Load 24(s.s2D)
+ 58: 41 SampledImage 56 57
+ 59: 9(fvec4) ImageSampleImplicitLod 58 45
+ ReturnValue 59
+ FunctionEnd
+32(os2Call2(struct-os2-p1-t211;vf2;): 9(fvec4) Function None 28
+ 29(s.s2D): 7(ptr) FunctionParameter
+ 30(s.tex): 22(ptr) FunctionParameter
+ 31(f2): 15(ptr) FunctionParameter
+ 33: Label
+ 62: 21 Load 30(s.tex)
+ 63: 6 Load 29(s.s2D)
+ 64: 41 SampledImage 62 63
+ 65: 14(fvec2) Load 31(f2)
+ 66: 9(fvec4) ImageSampleImplicitLod 64 65
+ ReturnValue 66
+ FunctionEnd
+ 35(@main(): 9(fvec4) Function None 34
+ 36: Label
+ 71(param): 7(ptr) Variable Function
+ 74(param): 7(ptr) Variable Function
+ 76(param): 15(ptr) Variable Function
+ 81(param): 7(ptr) Variable Function
+ 83(param): 22(ptr) Variable Function
+ 87(param): 7(ptr) Variable Function
+ 89(param): 22(ptr) Variable Function
+ 91(param): 15(ptr) Variable Function
+ 72: 6 Load 70(s.s2D)
+ Store 71(param) 72
+ 73: 9(fvec4) FunctionCall 12(osCall1(struct-os-p11;) 71(param)
+ 75: 6 Load 70(s.s2D)
+ Store 74(param) 75
+ Store 76(param) 45
+ 77: 9(fvec4) FunctionCall 19(osCall2(struct-os-p11;vf2;) 74(param) 76(param)
+ 78: 9(fvec4) FAdd 73 77
+ 82: 6 Load 79(s2.s2D)
+ Store 81(param) 82
+ 84: 21 Load 80(s2.tex)
+ Store 83(param) 84
+ 85: 9(fvec4) FunctionCall 26(os2Call1(struct-os2-p1-t211;) 81(param) 83(param)
+ 86: 9(fvec4) FAdd 78 85
+ 88: 6 Load 79(s2.s2D)
+ Store 87(param) 88
+ 90: 21 Load 80(s2.tex)
+ Store 89(param) 90
+ Store 91(param) 45
+ 92: 9(fvec4) FunctionCall 32(os2Call2(struct-os2-p1-t211;vf2;) 87(param) 89(param) 91(param)
+ 93: 9(fvec4) FAdd 86 92
+ ReturnValue 93
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInit.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
new file mode 100644
index 00000000000..b82cfffee79
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
@@ -0,0 +1,316 @@
+hlsl.flattenOpaqueInit.vert
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
+0:? Sequence
+0:5 Function Definition: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:? 'tex.smpl' ( in sampler)
+0:? 'tex.tex' ( in texture2D)
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 texture ( temp 4-component vector of float)
+0:6 Construct combined texture-sampler ( temp sampler2D)
+0:? 'tex.tex' ( in texture2D)
+0:? 'tex.smpl' ( in sampler)
+0:? Constant:
+0:? 0.300000
+0:? 0.400000
+0:10 Function Definition: fillOpaque( ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:10 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp sampler)
+0:? 't.smpl' ( temp sampler)
+0:12 'g_tInputTexture_sampler' ( uniform sampler)
+0:13 move second child to first child ( temp texture2D)
+0:? 't.tex' ( temp texture2D)
+0:13 'g_tInputTexture' ( uniform texture2D)
+0:14 Branch: Return with expression
+0:14 't' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:18 Function Definition: @main( ( temp 4-component vector of float)
+0:18 Function Parameters:
+0:? Sequence
+0:19 Sequence
+0:19 Sequence
+0:19 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:19 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:19 Construct structure ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:19 'g_tInputTexture_sampler' ( uniform sampler)
+0:19 'g_tInputTexture' ( uniform texture2D)
+0:19 move second child to first child ( temp sampler)
+0:? 'tex1.smpl' ( temp sampler)
+0:19 smpl: direct index for structure ( temp sampler)
+0:19 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:19 Constant:
+0:19 0 (const int)
+0:19 move second child to first child ( temp texture2D)
+0:? 'tex1.tex' ( temp texture2D)
+0:19 tex: direct index for structure ( temp texture2D)
+0:19 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:19 Constant:
+0:19 1 (const int)
+0:20 Sequence
+0:20 Sequence
+0:20 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:20 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:20 Function Call: fillOpaque( ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:20 move second child to first child ( temp sampler)
+0:? 'tex2.smpl' ( temp sampler)
+0:20 smpl: direct index for structure ( temp sampler)
+0:20 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:20 Constant:
+0:20 0 (const int)
+0:20 move second child to first child ( temp texture2D)
+0:? 'tex2.tex' ( temp texture2D)
+0:20 tex: direct index for structure ( temp texture2D)
+0:20 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:20 Constant:
+0:20 1 (const int)
+0:21 Sequence
+0:21 Sequence
+0:21 move second child to first child ( temp sampler)
+0:? 'tex3.smpl' ( temp sampler)
+0:? 'tex1.smpl' ( temp sampler)
+0:21 move second child to first child ( temp texture2D)
+0:? 'tex3.tex' ( temp texture2D)
+0:? 'tex1.tex' ( temp texture2D)
+0:22 Branch: Return with expression
+0:22 Function Call: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float)
+0:? 'tex3.smpl' ( temp sampler)
+0:? 'tex3.tex' ( temp texture2D)
+0:18 Function Definition: main( ( temp void)
+0:18 Function Parameters:
+0:? Sequence
+0:18 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:18 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tInputTexture_sampler' ( uniform sampler)
+0:? 'g_tInputTexture' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:5 Function Definition: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:? 'tex.smpl' ( in sampler)
+0:? 'tex.tex' ( in texture2D)
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 texture ( temp 4-component vector of float)
+0:6 Construct combined texture-sampler ( temp sampler2D)
+0:? 'tex.tex' ( in texture2D)
+0:? 'tex.smpl' ( in sampler)
+0:? Constant:
+0:? 0.300000
+0:? 0.400000
+0:10 Function Definition: fillOpaque( ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:10 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp sampler)
+0:? 't.smpl' ( temp sampler)
+0:12 'g_tInputTexture_sampler' ( uniform sampler)
+0:13 move second child to first child ( temp texture2D)
+0:? 't.tex' ( temp texture2D)
+0:13 'g_tInputTexture' ( uniform texture2D)
+0:14 Branch: Return with expression
+0:14 't' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:18 Function Definition: @main( ( temp 4-component vector of float)
+0:18 Function Parameters:
+0:? Sequence
+0:19 Sequence
+0:19 Sequence
+0:19 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:19 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:19 Construct structure ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:19 'g_tInputTexture_sampler' ( uniform sampler)
+0:19 'g_tInputTexture' ( uniform texture2D)
+0:19 move second child to first child ( temp sampler)
+0:? 'tex1.smpl' ( temp sampler)
+0:19 smpl: direct index for structure ( temp sampler)
+0:19 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:19 Constant:
+0:19 0 (const int)
+0:19 move second child to first child ( temp texture2D)
+0:? 'tex1.tex' ( temp texture2D)
+0:19 tex: direct index for structure ( temp texture2D)
+0:19 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:19 Constant:
+0:19 1 (const int)
+0:20 Sequence
+0:20 Sequence
+0:20 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:20 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:20 Function Call: fillOpaque( ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:20 move second child to first child ( temp sampler)
+0:? 'tex2.smpl' ( temp sampler)
+0:20 smpl: direct index for structure ( temp sampler)
+0:20 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:20 Constant:
+0:20 0 (const int)
+0:20 move second child to first child ( temp texture2D)
+0:? 'tex2.tex' ( temp texture2D)
+0:20 tex: direct index for structure ( temp texture2D)
+0:20 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex})
+0:20 Constant:
+0:20 1 (const int)
+0:21 Sequence
+0:21 Sequence
+0:21 move second child to first child ( temp sampler)
+0:? 'tex3.smpl' ( temp sampler)
+0:? 'tex1.smpl' ( temp sampler)
+0:21 move second child to first child ( temp texture2D)
+0:? 'tex3.tex' ( temp texture2D)
+0:? 'tex1.tex' ( temp texture2D)
+0:22 Branch: Return with expression
+0:22 Function Call: lookUp(struct-FxaaTex-p1-t211; ( temp 4-component vector of float)
+0:? 'tex3.smpl' ( temp sampler)
+0:? 'tex3.tex' ( temp texture2D)
+0:18 Function Definition: main( ( temp void)
+0:18 Function Parameters:
+0:? Sequence
+0:18 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:18 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tInputTexture_sampler' ( uniform sampler)
+0:? 'g_tInputTexture' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 84
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 82
+ Source HLSL 500
+ Name 4 "main"
+ Name 15 "lookUp(struct-FxaaTex-p1-t211;"
+ Name 13 "tex.smpl"
+ Name 14 "tex.tex"
+ Name 17 "FxaaTex"
+ MemberName 17(FxaaTex) 0 "smpl"
+ MemberName 17(FxaaTex) 1 "tex"
+ Name 19 "fillOpaque("
+ Name 22 "@main("
+ Name 36 "t.smpl"
+ Name 38 "g_tInputTexture_sampler"
+ Name 40 "t.tex"
+ Name 42 "g_tInputTexture"
+ Name 45 "t"
+ Name 49 "flattenTemp"
+ Name 53 "tex1.smpl"
+ Name 58 "tex1.tex"
+ Name 62 "flattenTemp"
+ Name 64 "tex2.smpl"
+ Name 67 "tex2.tex"
+ Name 70 "tex3.smpl"
+ Name 72 "tex3.tex"
+ Name 74 "param"
+ Name 76 "param"
+ Name 82 "@entryPointOutput"
+ Decorate 38(g_tInputTexture_sampler) DescriptorSet 0
+ Decorate 42(g_tInputTexture) DescriptorSet 0
+ Decorate 82(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeSampler
+ 7: TypePointer Function 6
+ 8: TypeFloat 32
+ 9: TypeImage 8(float) 2D sampled format:Unknown
+ 10: TypePointer Function 9
+ 11: TypeVector 8(float) 4
+ 12: TypeFunction 11(fvec4) 7(ptr) 10(ptr)
+ 17(FxaaTex): TypeStruct 6 9
+ 18: TypeFunction 17(FxaaTex)
+ 21: TypeFunction 11(fvec4)
+ 26: TypeSampledImage 9
+ 28: TypeVector 8(float) 2
+ 29: 8(float) Constant 1050253722
+ 30: 8(float) Constant 1053609165
+ 31: 28(fvec2) ConstantComposite 29 30
+ 32: 8(float) Constant 0
+ 37: TypePointer UniformConstant 6
+38(g_tInputTexture_sampler): 37(ptr) Variable UniformConstant
+ 41: TypePointer UniformConstant 9
+42(g_tInputTexture): 41(ptr) Variable UniformConstant
+ 44: TypePointer Function 17(FxaaTex)
+ 54: TypeInt 32 1
+ 55: 54(int) Constant 0
+ 59: 54(int) Constant 1
+ 81: TypePointer Output 11(fvec4)
+82(@entryPointOutput): 81(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 83: 11(fvec4) FunctionCall 22(@main()
+ Store 82(@entryPointOutput) 83
+ Return
+ FunctionEnd
+15(lookUp(struct-FxaaTex-p1-t211;): 11(fvec4) Function None 12
+ 13(tex.smpl): 7(ptr) FunctionParameter
+ 14(tex.tex): 10(ptr) FunctionParameter
+ 16: Label
+ 24: 9 Load 14(tex.tex)
+ 25: 6 Load 13(tex.smpl)
+ 27: 26 SampledImage 24 25
+ 33: 11(fvec4) ImageSampleExplicitLod 27 31 Lod 32
+ ReturnValue 33
+ FunctionEnd
+ 19(fillOpaque(): 17(FxaaTex) Function None 18
+ 20: Label
+ 36(t.smpl): 7(ptr) Variable Function
+ 40(t.tex): 10(ptr) Variable Function
+ 45(t): 44(ptr) Variable Function
+ 39: 6 Load 38(g_tInputTexture_sampler)
+ Store 36(t.smpl) 39
+ 43: 9 Load 42(g_tInputTexture)
+ Store 40(t.tex) 43
+ 46: 17(FxaaTex) Load 45(t)
+ ReturnValue 46
+ FunctionEnd
+ 22(@main(): 11(fvec4) Function None 21
+ 23: Label
+ 49(flattenTemp): 44(ptr) Variable Function
+ 53(tex1.smpl): 7(ptr) Variable Function
+ 58(tex1.tex): 10(ptr) Variable Function
+ 62(flattenTemp): 44(ptr) Variable Function
+ 64(tex2.smpl): 7(ptr) Variable Function
+ 67(tex2.tex): 10(ptr) Variable Function
+ 70(tex3.smpl): 7(ptr) Variable Function
+ 72(tex3.tex): 10(ptr) Variable Function
+ 74(param): 7(ptr) Variable Function
+ 76(param): 10(ptr) Variable Function
+ 50: 6 Load 38(g_tInputTexture_sampler)
+ 51: 9 Load 42(g_tInputTexture)
+ 52: 17(FxaaTex) CompositeConstruct 50 51
+ Store 49(flattenTemp) 52
+ 56: 7(ptr) AccessChain 49(flattenTemp) 55
+ 57: 6 Load 56
+ Store 53(tex1.smpl) 57
+ 60: 10(ptr) AccessChain 49(flattenTemp) 59
+ 61: 9 Load 60
+ Store 58(tex1.tex) 61
+ 63: 17(FxaaTex) FunctionCall 19(fillOpaque()
+ Store 62(flattenTemp) 63
+ 65: 7(ptr) AccessChain 62(flattenTemp) 55
+ 66: 6 Load 65
+ Store 64(tex2.smpl) 66
+ 68: 10(ptr) AccessChain 62(flattenTemp) 59
+ 69: 9 Load 68
+ Store 67(tex2.tex) 69
+ 71: 6 Load 53(tex1.smpl)
+ Store 70(tex3.smpl) 71
+ 73: 9 Load 58(tex1.tex)
+ Store 72(tex3.tex) 73
+ 75: 6 Load 70(tex3.smpl)
+ Store 74(param) 75
+ 77: 9 Load 72(tex3.tex)
+ Store 76(param) 77
+ 78: 11(fvec4) FunctionCall 15(lookUp(struct-FxaaTex-p1-t211;) 74(param) 76(param)
+ ReturnValue 78
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
new file mode 100644
index 00000000000..2de34838fd4
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
@@ -0,0 +1,240 @@
+hlsl.flattenOpaqueInitMix.vert
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
+0:? Sequence
+0:5 Function Definition: lookUp(struct-FxaaTex-p1-t21-f11; ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:? 'tex.smpl' ( in sampler)
+0:? 'tex.tex' ( in texture2D)
+0:? 'tex.f' ( in float)
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 texture ( temp 4-component vector of float)
+0:6 Construct combined texture-sampler ( temp sampler2D)
+0:? 'tex.tex' ( in texture2D)
+0:? 'tex.smpl' ( in sampler)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:? 'tex.f' ( in float)
+0:? 'tex.f' ( in float)
+0:10 Function Definition: @main( ( temp 4-component vector of float)
+0:10 Function Parameters:
+0:? Sequence
+0:11 Sequence
+0:11 Sequence
+0:11 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 Construct structure ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 'g_tInputTexture_sampler' ( uniform sampler)
+0:11 'g_tInputTexture' ( uniform texture2D)
+0:11 Constant:
+0:11 0.500000
+0:11 move second child to first child ( temp sampler)
+0:? 'tex.smpl' ( temp sampler)
+0:11 smpl: direct index for structure ( temp sampler)
+0:11 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp texture2D)
+0:? 'tex.tex' ( temp texture2D)
+0:11 tex: direct index for structure ( temp texture2D)
+0:11 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:? 'tex.f' ( temp float)
+0:11 f: direct index for structure ( temp float)
+0:11 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 Constant:
+0:11 2 (const int)
+0:12 Branch: Return with expression
+0:12 Function Call: lookUp(struct-FxaaTex-p1-t21-f11; ( temp 4-component vector of float)
+0:? 'tex.smpl' ( temp sampler)
+0:? 'tex.tex' ( temp texture2D)
+0:? 'tex.f' ( temp float)
+0:10 Function Definition: main( ( temp void)
+0:10 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:10 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tInputTexture_sampler' ( uniform sampler)
+0:? 'g_tInputTexture' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:5 Function Definition: lookUp(struct-FxaaTex-p1-t21-f11; ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:? 'tex.smpl' ( in sampler)
+0:? 'tex.tex' ( in texture2D)
+0:? 'tex.f' ( in float)
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 texture ( temp 4-component vector of float)
+0:6 Construct combined texture-sampler ( temp sampler2D)
+0:? 'tex.tex' ( in texture2D)
+0:? 'tex.smpl' ( in sampler)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:? 'tex.f' ( in float)
+0:? 'tex.f' ( in float)
+0:10 Function Definition: @main( ( temp 4-component vector of float)
+0:10 Function Parameters:
+0:? Sequence
+0:11 Sequence
+0:11 Sequence
+0:11 move second child to first child ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 Construct structure ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 'g_tInputTexture_sampler' ( uniform sampler)
+0:11 'g_tInputTexture' ( uniform texture2D)
+0:11 Constant:
+0:11 0.500000
+0:11 move second child to first child ( temp sampler)
+0:? 'tex.smpl' ( temp sampler)
+0:11 smpl: direct index for structure ( temp sampler)
+0:11 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 Constant:
+0:11 0 (const int)
+0:11 move second child to first child ( temp texture2D)
+0:? 'tex.tex' ( temp texture2D)
+0:11 tex: direct index for structure ( temp texture2D)
+0:11 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 Constant:
+0:11 1 (const int)
+0:11 move second child to first child ( temp float)
+0:? 'tex.f' ( temp float)
+0:11 f: direct index for structure ( temp float)
+0:11 'flattenTemp' ( temp structure{ temp sampler smpl, temp texture2D tex, temp float f})
+0:11 Constant:
+0:11 2 (const int)
+0:12 Branch: Return with expression
+0:12 Function Call: lookUp(struct-FxaaTex-p1-t21-f11; ( temp 4-component vector of float)
+0:? 'tex.smpl' ( temp sampler)
+0:? 'tex.tex' ( temp texture2D)
+0:? 'tex.f' ( temp float)
+0:10 Function Definition: main( ( temp void)
+0:10 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:10 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tInputTexture_sampler' ( uniform sampler)
+0:? 'g_tInputTexture' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 70
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 68
+ Source HLSL 500
+ Name 4 "main"
+ Name 17 "lookUp(struct-FxaaTex-p1-t21-f11;"
+ Name 14 "tex.smpl"
+ Name 15 "tex.tex"
+ Name 16 "tex.f"
+ Name 20 "@main("
+ Name 34 "FxaaTex"
+ MemberName 34(FxaaTex) 0 "smpl"
+ MemberName 34(FxaaTex) 1 "tex"
+ MemberName 34(FxaaTex) 2 "f"
+ Name 36 "flattenTemp"
+ Name 38 "g_tInputTexture_sampler"
+ Name 41 "g_tInputTexture"
+ Name 45 "tex.smpl"
+ Name 50 "tex.tex"
+ Name 54 "tex.f"
+ Name 58 "param"
+ Name 60 "param"
+ Name 62 "param"
+ Name 68 "@entryPointOutput"
+ Decorate 38(g_tInputTexture_sampler) DescriptorSet 0
+ Decorate 41(g_tInputTexture) DescriptorSet 0
+ Decorate 68(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeSampler
+ 7: TypePointer Function 6
+ 8: TypeFloat 32
+ 9: TypeImage 8(float) 2D sampled format:Unknown
+ 10: TypePointer Function 9
+ 11: TypePointer Function 8(float)
+ 12: TypeVector 8(float) 4
+ 13: TypeFunction 12(fvec4) 7(ptr) 10(ptr) 11(ptr)
+ 19: TypeFunction 12(fvec4)
+ 24: TypeSampledImage 9
+ 28: TypeVector 8(float) 2
+ 30: 8(float) Constant 0
+ 34(FxaaTex): TypeStruct 6 9 8(float)
+ 35: TypePointer Function 34(FxaaTex)
+ 37: TypePointer UniformConstant 6
+38(g_tInputTexture_sampler): 37(ptr) Variable UniformConstant
+ 40: TypePointer UniformConstant 9
+41(g_tInputTexture): 40(ptr) Variable UniformConstant
+ 43: 8(float) Constant 1056964608
+ 46: TypeInt 32 1
+ 47: 46(int) Constant 0
+ 51: 46(int) Constant 1
+ 55: 46(int) Constant 2
+ 67: TypePointer Output 12(fvec4)
+68(@entryPointOutput): 67(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 69: 12(fvec4) FunctionCall 20(@main()
+ Store 68(@entryPointOutput) 69
+ Return
+ FunctionEnd
+17(lookUp(struct-FxaaTex-p1-t21-f11;): 12(fvec4) Function None 13
+ 14(tex.smpl): 7(ptr) FunctionParameter
+ 15(tex.tex): 10(ptr) FunctionParameter
+ 16(tex.f): 11(ptr) FunctionParameter
+ 18: Label
+ 22: 9 Load 15(tex.tex)
+ 23: 6 Load 14(tex.smpl)
+ 25: 24 SampledImage 22 23
+ 26: 8(float) Load 16(tex.f)
+ 27: 8(float) Load 16(tex.f)
+ 29: 28(fvec2) CompositeConstruct 26 27
+ 31: 12(fvec4) ImageSampleExplicitLod 25 29 Lod 30
+ ReturnValue 31
+ FunctionEnd
+ 20(@main(): 12(fvec4) Function None 19
+ 21: Label
+ 36(flattenTemp): 35(ptr) Variable Function
+ 45(tex.smpl): 7(ptr) Variable Function
+ 50(tex.tex): 10(ptr) Variable Function
+ 54(tex.f): 11(ptr) Variable Function
+ 58(param): 7(ptr) Variable Function
+ 60(param): 10(ptr) Variable Function
+ 62(param): 11(ptr) Variable Function
+ 39: 6 Load 38(g_tInputTexture_sampler)
+ 42: 9 Load 41(g_tInputTexture)
+ 44: 34(FxaaTex) CompositeConstruct 39 42 43
+ Store 36(flattenTemp) 44
+ 48: 7(ptr) AccessChain 36(flattenTemp) 47
+ 49: 6 Load 48
+ Store 45(tex.smpl) 49
+ 52: 10(ptr) AccessChain 36(flattenTemp) 51
+ 53: 9 Load 52
+ Store 50(tex.tex) 53
+ 56: 11(ptr) AccessChain 36(flattenTemp) 55
+ 57: 8(float) Load 56
+ Store 54(tex.f) 57
+ 59: 6 Load 45(tex.smpl)
+ Store 58(param) 59
+ 61: 9 Load 50(tex.tex)
+ Store 60(param) 61
+ 63: 8(float) Load 54(tex.f)
+ Store 62(param) 63
+ 64: 12(fvec4) FunctionCall 17(lookUp(struct-FxaaTex-p1-t21-f11;) 58(param) 60(param) 62(param)
+ ReturnValue 64
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenSubset.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenSubset.frag.out
new file mode 100644
index 00000000000..f6d867fc34a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenSubset.frag.out
@@ -0,0 +1,218 @@
+hlsl.flattenSubset.frag
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:30 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:30 Function Parameters:
+0:30 'vpos' ( in 4-component vector of float)
+0:? Sequence
+0:33 move second child to first child ( temp sampler)
+0:? 's1.s0.ss' ( temp sampler)
+0:33 'samp' ( uniform sampler)
+0:34 Sequence
+0:34 move second child to first child ( temp float)
+0:? 's2.resources.b' ( temp float)
+0:? 's1.b' ( temp float)
+0:34 move second child to first child ( temp sampler)
+0:? 's2.resources.samplerState' ( temp sampler)
+0:? 's1.samplerState' ( temp sampler)
+0:34 move second child to first child ( temp int)
+0:? 's2.resources.s0.x' ( temp int)
+0:? 's1.s0.x' ( temp int)
+0:34 move second child to first child ( temp int)
+0:? 's2.resources.s0.y' ( temp int)
+0:? 's1.s0.y' ( temp int)
+0:34 move second child to first child ( temp sampler)
+0:? 's2.resources.s0.ss' ( temp sampler)
+0:? 's1.s0.ss' ( temp sampler)
+0:34 move second child to first child ( temp int)
+0:? 's2.resources.a' ( temp int)
+0:? 's1.a' ( temp int)
+0:35 Branch: Return with expression
+0:35 texture ( temp 4-component vector of float)
+0:35 Construct combined texture-sampler ( temp sampler2D)
+0:35 'tex' ( uniform texture2D)
+0:? 's2.resources.s0.ss' ( temp sampler)
+0:35 Constant:
+0:35 0.500000
+0:35 0.500000
+0:30 Function Definition: main( ( temp void)
+0:30 Function Parameters:
+0:? Sequence
+0:30 move second child to first child ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:? 'vpos' (layout( location=0) in 4-component vector of float)
+0:30 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:30 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'samp' ( uniform sampler)
+0:? 'tex' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'vpos' (layout( location=0) in 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:30 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:30 Function Parameters:
+0:30 'vpos' ( in 4-component vector of float)
+0:? Sequence
+0:33 move second child to first child ( temp sampler)
+0:? 's1.s0.ss' ( temp sampler)
+0:33 'samp' ( uniform sampler)
+0:34 Sequence
+0:34 move second child to first child ( temp float)
+0:? 's2.resources.b' ( temp float)
+0:? 's1.b' ( temp float)
+0:34 move second child to first child ( temp sampler)
+0:? 's2.resources.samplerState' ( temp sampler)
+0:? 's1.samplerState' ( temp sampler)
+0:34 move second child to first child ( temp int)
+0:? 's2.resources.s0.x' ( temp int)
+0:? 's1.s0.x' ( temp int)
+0:34 move second child to first child ( temp int)
+0:? 's2.resources.s0.y' ( temp int)
+0:? 's1.s0.y' ( temp int)
+0:34 move second child to first child ( temp sampler)
+0:? 's2.resources.s0.ss' ( temp sampler)
+0:? 's1.s0.ss' ( temp sampler)
+0:34 move second child to first child ( temp int)
+0:? 's2.resources.a' ( temp int)
+0:? 's1.a' ( temp int)
+0:35 Branch: Return with expression
+0:35 texture ( temp 4-component vector of float)
+0:35 Construct combined texture-sampler ( temp sampler2D)
+0:35 'tex' ( uniform texture2D)
+0:? 's2.resources.s0.ss' ( temp sampler)
+0:35 Constant:
+0:35 0.500000
+0:35 0.500000
+0:30 Function Definition: main( ( temp void)
+0:30 Function Parameters:
+0:? Sequence
+0:30 move second child to first child ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:? 'vpos' (layout( location=0) in 4-component vector of float)
+0:30 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:30 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'samp' ( uniform sampler)
+0:? 'tex' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'vpos' (layout( location=0) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 61
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 54 57
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vf4;"
+ Name 10 "vpos"
+ Name 15 "s1.s0.ss"
+ Name 17 "samp"
+ Name 20 "s2.resources.b"
+ Name 21 "s1.b"
+ Name 23 "s2.resources.samplerState"
+ Name 24 "s1.samplerState"
+ Name 28 "s2.resources.s0.x"
+ Name 29 "s1.s0.x"
+ Name 31 "s2.resources.s0.y"
+ Name 32 "s1.s0.y"
+ Name 34 "s2.resources.s0.ss"
+ Name 36 "s2.resources.a"
+ Name 37 "s1.a"
+ Name 41 "tex"
+ Name 52 "vpos"
+ Name 54 "vpos"
+ Name 57 "@entryPointOutput"
+ Name 58 "param"
+ Decorate 17(samp) DescriptorSet 0
+ Decorate 41(tex) DescriptorSet 0
+ Decorate 54(vpos) Location 0
+ Decorate 57(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeFunction 7(fvec4) 8(ptr)
+ 13: TypeSampler
+ 14: TypePointer Function 13
+ 16: TypePointer UniformConstant 13
+ 17(samp): 16(ptr) Variable UniformConstant
+ 19: TypePointer Function 6(float)
+ 26: TypeInt 32 1
+ 27: TypePointer Function 26(int)
+ 39: TypeImage 6(float) 2D sampled format:Unknown
+ 40: TypePointer UniformConstant 39
+ 41(tex): 40(ptr) Variable UniformConstant
+ 44: TypeSampledImage 39
+ 46: TypeVector 6(float) 2
+ 47: 6(float) Constant 1056964608
+ 48: 46(fvec2) ConstantComposite 47 47
+ 53: TypePointer Input 7(fvec4)
+ 54(vpos): 53(ptr) Variable Input
+ 56: TypePointer Output 7(fvec4)
+57(@entryPointOutput): 56(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 52(vpos): 8(ptr) Variable Function
+ 58(param): 8(ptr) Variable Function
+ 55: 7(fvec4) Load 54(vpos)
+ Store 52(vpos) 55
+ 59: 7(fvec4) Load 52(vpos)
+ Store 58(param) 59
+ 60: 7(fvec4) FunctionCall 11(@main(vf4;) 58(param)
+ Store 57(@entryPointOutput) 60
+ Return
+ FunctionEnd
+ 11(@main(vf4;): 7(fvec4) Function None 9
+ 10(vpos): 8(ptr) FunctionParameter
+ 12: Label
+ 15(s1.s0.ss): 14(ptr) Variable Function
+20(s2.resources.b): 19(ptr) Variable Function
+ 21(s1.b): 19(ptr) Variable Function
+23(s2.resources.samplerState): 14(ptr) Variable Function
+24(s1.samplerState): 14(ptr) Variable Function
+28(s2.resources.s0.x): 27(ptr) Variable Function
+ 29(s1.s0.x): 27(ptr) Variable Function
+31(s2.resources.s0.y): 27(ptr) Variable Function
+ 32(s1.s0.y): 27(ptr) Variable Function
+34(s2.resources.s0.ss): 14(ptr) Variable Function
+36(s2.resources.a): 27(ptr) Variable Function
+ 37(s1.a): 27(ptr) Variable Function
+ 18: 13 Load 17(samp)
+ Store 15(s1.s0.ss) 18
+ 22: 6(float) Load 21(s1.b)
+ Store 20(s2.resources.b) 22
+ 25: 13 Load 24(s1.samplerState)
+ Store 23(s2.resources.samplerState) 25
+ 30: 26(int) Load 29(s1.s0.x)
+ Store 28(s2.resources.s0.x) 30
+ 33: 26(int) Load 32(s1.s0.y)
+ Store 31(s2.resources.s0.y) 33
+ 35: 13 Load 15(s1.s0.ss)
+ Store 34(s2.resources.s0.ss) 35
+ 38: 26(int) Load 37(s1.a)
+ Store 36(s2.resources.a) 38
+ 42: 39 Load 41(tex)
+ 43: 13 Load 34(s2.resources.s0.ss)
+ 45: 44 SampledImage 42 43
+ 49: 7(fvec4) ImageSampleImplicitLod 45 48
+ ReturnValue 49
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenSubset2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenSubset2.frag.out
new file mode 100644
index 00000000000..4983834d6e4
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.flattenSubset2.frag.out
@@ -0,0 +1,207 @@
+hlsl.flattenSubset2.frag
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'vpos' ( in 4-component vector of float)
+0:? Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp float)
+0:? 'a1.n.y' ( temp float)
+0:? 'a2.n.y' ( temp float)
+0:13 move second child to first child ( temp texture2D)
+0:? 'a1.n.texNested' ( temp texture2D)
+0:? 'a2.n.texNested' ( temp texture2D)
+0:14 Sequence
+0:14 move second child to first child ( temp float)
+0:? 'b.n.y' ( temp float)
+0:? 'a1.n.y' ( temp float)
+0:14 move second child to first child ( temp texture2D)
+0:? 'b.n.texNested' ( temp texture2D)
+0:? 'a1.n.texNested' ( temp texture2D)
+0:17 Sequence
+0:17 Sequence
+0:17 move second child to first child ( temp float)
+0:? 'n.y' ( temp float)
+0:? 'b.n.y' ( temp float)
+0:17 move second child to first child ( temp texture2D)
+0:? 'n.texNested' ( temp texture2D)
+0:? 'b.n.texNested' ( temp texture2D)
+0:20 move second child to first child ( temp texture2D)
+0:? 'a2.n.texNested' ( temp texture2D)
+0:20 'someTex' ( uniform texture2D)
+0:21 move second child to first child ( temp float)
+0:? 'a1.n.y' ( temp float)
+0:21 Constant:
+0:21 1.000000
+0:23 Branch: Return with expression
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:? 'vpos' (layout( location=0) in 4-component vector of float)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'someTex' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'vpos' (layout( location=0) in 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'vpos' ( in 4-component vector of float)
+0:? Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp float)
+0:? 'a1.n.y' ( temp float)
+0:? 'a2.n.y' ( temp float)
+0:13 move second child to first child ( temp texture2D)
+0:? 'a1.n.texNested' ( temp texture2D)
+0:? 'a2.n.texNested' ( temp texture2D)
+0:14 Sequence
+0:14 move second child to first child ( temp float)
+0:? 'b.n.y' ( temp float)
+0:? 'a1.n.y' ( temp float)
+0:14 move second child to first child ( temp texture2D)
+0:? 'b.n.texNested' ( temp texture2D)
+0:? 'a1.n.texNested' ( temp texture2D)
+0:17 Sequence
+0:17 Sequence
+0:17 move second child to first child ( temp float)
+0:? 'n.y' ( temp float)
+0:? 'b.n.y' ( temp float)
+0:17 move second child to first child ( temp texture2D)
+0:? 'n.texNested' ( temp texture2D)
+0:? 'b.n.texNested' ( temp texture2D)
+0:20 move second child to first child ( temp texture2D)
+0:? 'a2.n.texNested' ( temp texture2D)
+0:20 'someTex' ( uniform texture2D)
+0:21 move second child to first child ( temp float)
+0:? 'a1.n.y' ( temp float)
+0:21 Constant:
+0:21 1.000000
+0:23 Branch: Return with expression
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:? 'vpos' (layout( location=0) in 4-component vector of float)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'someTex' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'vpos' (layout( location=0) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 47
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 40 43
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vf4;"
+ Name 10 "vpos"
+ Name 14 "a1.n.y"
+ Name 15 "a2.n.y"
+ Name 19 "a1.n.texNested"
+ Name 20 "a2.n.texNested"
+ Name 22 "b.n.y"
+ Name 24 "b.n.texNested"
+ Name 26 "n.y"
+ Name 28 "n.texNested"
+ Name 31 "someTex"
+ Name 38 "vpos"
+ Name 40 "vpos"
+ Name 43 "@entryPointOutput"
+ Name 44 "param"
+ Decorate 31(someTex) DescriptorSet 0
+ Decorate 40(vpos) Location 0
+ Decorate 43(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeFunction 7(fvec4) 8(ptr)
+ 13: TypePointer Function 6(float)
+ 17: TypeImage 6(float) 2D sampled format:Unknown
+ 18: TypePointer Function 17
+ 30: TypePointer UniformConstant 17
+ 31(someTex): 30(ptr) Variable UniformConstant
+ 33: 6(float) Constant 1065353216
+ 34: 6(float) Constant 0
+ 35: 7(fvec4) ConstantComposite 34 34 34 34
+ 39: TypePointer Input 7(fvec4)
+ 40(vpos): 39(ptr) Variable Input
+ 42: TypePointer Output 7(fvec4)
+43(@entryPointOutput): 42(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 38(vpos): 8(ptr) Variable Function
+ 44(param): 8(ptr) Variable Function
+ 41: 7(fvec4) Load 40(vpos)
+ Store 38(vpos) 41
+ 45: 7(fvec4) Load 38(vpos)
+ Store 44(param) 45
+ 46: 7(fvec4) FunctionCall 11(@main(vf4;) 44(param)
+ Store 43(@entryPointOutput) 46
+ Return
+ FunctionEnd
+ 11(@main(vf4;): 7(fvec4) Function None 9
+ 10(vpos): 8(ptr) FunctionParameter
+ 12: Label
+ 14(a1.n.y): 13(ptr) Variable Function
+ 15(a2.n.y): 13(ptr) Variable Function
+19(a1.n.texNested): 18(ptr) Variable Function
+20(a2.n.texNested): 18(ptr) Variable Function
+ 22(b.n.y): 13(ptr) Variable Function
+24(b.n.texNested): 18(ptr) Variable Function
+ 26(n.y): 13(ptr) Variable Function
+ 28(n.texNested): 18(ptr) Variable Function
+ 16: 6(float) Load 15(a2.n.y)
+ Store 14(a1.n.y) 16
+ 21: 17 Load 20(a2.n.texNested)
+ Store 19(a1.n.texNested) 21
+ 23: 6(float) Load 14(a1.n.y)
+ Store 22(b.n.y) 23
+ 25: 17 Load 19(a1.n.texNested)
+ Store 24(b.n.texNested) 25
+ 27: 6(float) Load 22(b.n.y)
+ Store 26(n.y) 27
+ 29: 17 Load 24(b.n.texNested)
+ Store 28(n.texNested) 29
+ 32: 17 Load 31(someTex)
+ Store 20(a2.n.texNested) 32
+ Store 14(a1.n.y) 33
+ ReturnValue 35
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.float1.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.float1.frag.out
index ad29daac4b0..ed2b6c99e9c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.float1.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.float1.frag.out
@@ -1,5 +1,5 @@
hlsl.float1.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
@@ -34,7 +34,7 @@ Linked fragment stage:
WARNING: Linking fragment stage: Entry point not found
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
@@ -65,7 +65,7 @@ gl_FragCoord origin is upper left
0:? 'scalar' ( global float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 27
Capability Shader
@@ -73,6 +73,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf1;f1;"
Name 9 "inFloat1"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.float4.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.float4.frag.out
index d14de7b2dab..84213ce2c7c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.float4.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.float4.frag.out
@@ -2,7 +2,7 @@ hlsl.float4.frag
WARNING: 0:5: 'register' : ignoring shader_profile
WARNING: 0:6: 'register' : ignoring shader_profile
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float)
@@ -24,7 +24,7 @@ Linked fragment stage:
WARNING: Linking fragment stage: Entry point not found
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float)
@@ -42,7 +42,7 @@ gl_FragCoord origin is upper left
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4})
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 26
Capability Shader
@@ -50,6 +50,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf4;"
Name 10 "input"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out
index a14b9ac0b93..c9efc338466 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out
@@ -1,5 +1,5 @@
hlsl.forLoop.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -110,6 +110,80 @@ gl_FragCoord origin is upper left
0:11 'ii' ( temp int)
0:12 Pre-Decrement ( temp float)
0:12 'ii' ( temp float)
+0:13 Sequence
+0:13 move second child to first child ( temp int)
+0:13 'first' ( temp int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 move second child to first child ( temp int)
+0:13 'second' ( temp int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Loop with condition tested first
+0:13 No loop condition
+0:13 Loop Body
+0:13 add ( temp int)
+0:13 'first' ( temp int)
+0:13 'second' ( temp int)
+0:14 Sequence
+0:14 move second child to first child ( temp int)
+0:14 'i' ( temp int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 move second child to first child ( temp int)
+0:14 'count' ( temp int)
+0:14 Convert float to int ( temp int)
+0:14 'ii' ( temp float)
+0:14 Loop with condition tested first
+0:14 Loop Condition
+0:14 Compare Less Than ( temp bool)
+0:14 'i' ( temp int)
+0:14 'count' ( temp int)
+0:14 No loop body
+0:14 Loop Terminal Expression
+0:14 Post-Increment ( temp int)
+0:14 'i' ( temp int)
+0:15 Sequence
+0:15 move second child to first child ( temp float)
+0:15 'first' ( temp float)
+0:15 Constant:
+0:15 0.000000
+0:15 Loop with condition tested first
+0:15 Loop Condition
+0:15 Compare Less Than ( temp bool)
+0:15 'first' ( temp float)
+0:15 direct index ( temp float)
+0:15 'second' ( temp 2-element array of float)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Loop Body
+0:15 add ( temp float)
+0:15 add ( temp float)
+0:15 'first' ( temp float)
+0:15 direct index ( temp float)
+0:15 'second' ( temp 2-element array of float)
+0:15 Constant:
+0:15 1 (const int)
+0:15 'third' ( temp float)
+0:15 Loop Terminal Expression
+0:15 Pre-Increment ( temp float)
+0:15 direct index ( temp float)
+0:15 'second' ( temp 2-element array of float)
+0:15 Constant:
+0:15 1 (const int)
+0:? Sequence
+0:16 Comma ( temp float)
+0:16 Comma ( temp float)
+0:16 Pre-Decrement ( temp float)
+0:16 'ii' ( temp float)
+0:16 Pre-Decrement ( temp float)
+0:16 'ii' ( temp float)
+0:16 Pre-Decrement ( temp float)
+0:16 'ii' ( temp float)
+0:16 Loop with condition tested first
+0:16 No loop condition
+0:16 Loop Body
+0:16 'ii' ( temp float)
0:2 Function Definition: PixelShaderFunction( ( temp void)
0:2 Function Parameters:
0:? Sequence
@@ -128,7 +202,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -239,6 +313,80 @@ gl_FragCoord origin is upper left
0:11 'ii' ( temp int)
0:12 Pre-Decrement ( temp float)
0:12 'ii' ( temp float)
+0:13 Sequence
+0:13 move second child to first child ( temp int)
+0:13 'first' ( temp int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 move second child to first child ( temp int)
+0:13 'second' ( temp int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Loop with condition tested first
+0:13 No loop condition
+0:13 Loop Body
+0:13 add ( temp int)
+0:13 'first' ( temp int)
+0:13 'second' ( temp int)
+0:14 Sequence
+0:14 move second child to first child ( temp int)
+0:14 'i' ( temp int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 move second child to first child ( temp int)
+0:14 'count' ( temp int)
+0:14 Convert float to int ( temp int)
+0:14 'ii' ( temp float)
+0:14 Loop with condition tested first
+0:14 Loop Condition
+0:14 Compare Less Than ( temp bool)
+0:14 'i' ( temp int)
+0:14 'count' ( temp int)
+0:14 No loop body
+0:14 Loop Terminal Expression
+0:14 Post-Increment ( temp int)
+0:14 'i' ( temp int)
+0:15 Sequence
+0:15 move second child to first child ( temp float)
+0:15 'first' ( temp float)
+0:15 Constant:
+0:15 0.000000
+0:15 Loop with condition tested first
+0:15 Loop Condition
+0:15 Compare Less Than ( temp bool)
+0:15 'first' ( temp float)
+0:15 direct index ( temp float)
+0:15 'second' ( temp 2-element array of float)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Loop Body
+0:15 add ( temp float)
+0:15 add ( temp float)
+0:15 'first' ( temp float)
+0:15 direct index ( temp float)
+0:15 'second' ( temp 2-element array of float)
+0:15 Constant:
+0:15 1 (const int)
+0:15 'third' ( temp float)
+0:15 Loop Terminal Expression
+0:15 Pre-Increment ( temp float)
+0:15 direct index ( temp float)
+0:15 'second' ( temp 2-element array of float)
+0:15 Constant:
+0:15 1 (const int)
+0:? Sequence
+0:16 Comma ( temp float)
+0:16 Comma ( temp float)
+0:16 Pre-Decrement ( temp float)
+0:16 'ii' ( temp float)
+0:16 Pre-Decrement ( temp float)
+0:16 'ii' ( temp float)
+0:16 Pre-Decrement ( temp float)
+0:16 'ii' ( temp float)
+0:16 Loop with condition tested first
+0:16 No loop condition
+0:16 Loop Body
+0:16 'ii' ( temp float)
0:2 Function Definition: PixelShaderFunction( ( temp void)
0:2 Function Parameters:
0:? Sequence
@@ -254,25 +402,33 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 124
+// Generated by (magic number): 80002
+// Id's are bound by 183
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 117 120
+ EntryPoint Fragment 4 "PixelShaderFunction" 176 179
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "@PixelShaderFunction(vf4;"
Name 10 "input"
Name 92 "ii"
Name 111 "ii"
- Name 115 "input"
- Name 117 "input"
- Name 120 "@entryPointOutput"
- Name 121 "param"
- Decorate 117(input) Location 0
- Decorate 120(@entryPointOutput) Location 0
+ Name 114 "first"
+ Name 116 "second"
+ Name 124 "i"
+ Name 125 "count"
+ Name 138 "first"
+ Name 149 "second"
+ Name 157 "third"
+ Name 174 "input"
+ Name 176 "input"
+ Name 179 "@entryPointOutput"
+ Name 180 "param"
+ Decorate 176(input) Location 0
+ Decorate 179(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -292,20 +448,25 @@ gl_FragCoord origin is upper left
100: 90(int) Constant 3
103: 90(int) Constant 2
109: 90(int) Constant 1
- 116: TypePointer Input 7(fvec4)
- 117(input): 116(ptr) Variable Input
- 119: TypePointer Output 7(fvec4)
-120(@entryPointOutput): 119(ptr) Variable Output
+ 115: 90(int) Constant 0
+ 139: 6(float) Constant 0
+ 146: 71(int) Constant 2
+ 147: TypeArray 6(float) 146
+ 148: TypePointer Function 147
+ 175: TypePointer Input 7(fvec4)
+ 176(input): 175(ptr) Variable Input
+ 178: TypePointer Output 7(fvec4)
+179(@entryPointOutput): 178(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
- 115(input): 8(ptr) Variable Function
- 121(param): 8(ptr) Variable Function
- 118: 7(fvec4) Load 117(input)
- Store 115(input) 118
- 122: 7(fvec4) Load 115(input)
- Store 121(param) 122
- 123: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 121(param)
- Store 120(@entryPointOutput) 123
+ 174(input): 8(ptr) Variable Function
+ 180(param): 8(ptr) Variable Function
+ 177: 7(fvec4) Load 176(input)
+ Store 174(input) 177
+ 181: 7(fvec4) Load 174(input)
+ Store 180(param) 181
+ 182: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 180(param)
+ Store 179(@entryPointOutput) 182
Return
FunctionEnd
11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
@@ -313,6 +474,13 @@ gl_FragCoord origin is upper left
12: Label
92(ii): 91(ptr) Variable Function
111(ii): 73(ptr) Variable Function
+ 114(first): 91(ptr) Variable Function
+ 116(second): 91(ptr) Variable Function
+ 124(i): 91(ptr) Variable Function
+ 125(count): 91(ptr) Variable Function
+ 138(first): 73(ptr) Variable Function
+ 149(second): 148(ptr) Variable Function
+ 157(third): 73(ptr) Variable Function
Branch 13
13: Label
LoopMerge 15 16 None
@@ -337,7 +505,7 @@ gl_FragCoord origin is upper left
23: Label
Branch 25
25: Label
- LoopMerge 27 28 None
+ LoopMerge 27 28 Unroll
Branch 29
29: Label
30: 7(fvec4) Load 10(input)
@@ -453,6 +621,85 @@ gl_FragCoord origin is upper left
112: 6(float) Load 111(ii)
113: 6(float) FSub 112 18
Store 111(ii) 113
- 114: 7(fvec4) Undef
- ReturnValue 114
+ Store 114(first) 115
+ Store 116(second) 109
+ Branch 117
+ 117: Label
+ LoopMerge 119 120 None
+ Branch 118
+ 118: Label
+ 121: 90(int) Load 114(first)
+ 122: 90(int) Load 116(second)
+ 123: 90(int) IAdd 121 122
+ Branch 120
+ 120: Label
+ Branch 117
+ 119: Label
+ Store 124(i) 115
+ 126: 6(float) Load 111(ii)
+ 127: 90(int) ConvertFToS 126
+ Store 125(count) 127
+ Branch 128
+ 128: Label
+ LoopMerge 130 131 None
+ Branch 132
+ 132: Label
+ 133: 90(int) Load 124(i)
+ 134: 90(int) Load 125(count)
+ 135: 32(bool) SLessThan 133 134
+ BranchConditional 135 129 130
+ 129: Label
+ Branch 131
+ 131: Label
+ 136: 90(int) Load 124(i)
+ 137: 90(int) IAdd 136 109
+ Store 124(i) 137
+ Branch 128
+ 130: Label
+ Store 138(first) 139
+ Branch 140
+ 140: Label
+ LoopMerge 142 143 None
+ Branch 144
+ 144: Label
+ 145: 6(float) Load 138(first)
+ 150: 73(ptr) AccessChain 149(second) 115
+ 151: 6(float) Load 150
+ 152: 32(bool) FOrdLessThan 145 151
+ BranchConditional 152 141 142
+ 141: Label
+ 153: 6(float) Load 138(first)
+ 154: 73(ptr) AccessChain 149(second) 109
+ 155: 6(float) Load 154
+ 156: 6(float) FAdd 153 155
+ 158: 6(float) Load 157(third)
+ 159: 6(float) FAdd 156 158
+ Branch 143
+ 143: Label
+ 160: 73(ptr) AccessChain 149(second) 109
+ 161: 6(float) Load 160
+ 162: 6(float) FAdd 161 18
+ Store 160 162
+ Branch 140
+ 142: Label
+ 163: 6(float) Load 111(ii)
+ 164: 6(float) FSub 163 18
+ Store 111(ii) 164
+ 165: 6(float) Load 111(ii)
+ 166: 6(float) FSub 165 18
+ Store 111(ii) 166
+ 167: 6(float) Load 111(ii)
+ 168: 6(float) FSub 167 18
+ Store 111(ii) 168
+ Branch 169
+ 169: Label
+ LoopMerge 171 172 None
+ Branch 170
+ 170: Label
+ Branch 172
+ 172: Label
+ Branch 169
+ 171: Label
+ 173: 7(fvec4) Undef
+ ReturnValue 173
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.fraggeom.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.fraggeom.frag.out
new file mode 100644
index 00000000000..a010b6eb036
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.fraggeom.frag.out
@@ -0,0 +1,112 @@
+hlsl.fraggeom.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:9 Function Definition: GS_Draw(struct-myVertex-vf41;struct-myVertex-vf41; ( temp void)
+0:9 Function Parameters:
+0:9 'IN' ( in structure{ temp 4-component vector of float pos})
+0:9 'OutputStream' ( out structure{ temp 4-component vector of float pos})
+0:? Sequence
+0:10 Constant:
+0:10 0.000000
+0:11 Constant:
+0:11 0.000000
+0:15 Function Definition: @main( ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:? Sequence
+0:16 Branch: Return with expression
+0:16 Constant:
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:15 Function Definition: main( ( temp void)
+0:15 Function Parameters:
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:15 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:9 Function Definition: GS_Draw(struct-myVertex-vf41;struct-myVertex-vf41; ( temp void)
+0:9 Function Parameters:
+0:9 'IN' ( in structure{ temp 4-component vector of float pos})
+0:9 'OutputStream' ( out structure{ temp 4-component vector of float pos})
+0:? Sequence
+0:10 Constant:
+0:10 0.000000
+0:11 Constant:
+0:11 0.000000
+0:15 Function Definition: @main( ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:? Sequence
+0:16 Branch: Return with expression
+0:16 Constant:
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:15 Function Definition: main( ( temp void)
+0:15 Function Parameters:
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:15 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 25
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 23
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "myVertex"
+ MemberName 8(myVertex) 0 "pos"
+ Name 13 "GS_Draw(struct-myVertex-vf41;struct-myVertex-vf41;"
+ Name 11 "IN"
+ Name 12 "OutputStream"
+ Name 16 "@main("
+ Name 23 "@entryPointOutput"
+ Decorate 23(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8(myVertex): TypeStruct 7(fvec4)
+ 9: TypePointer Function 8(myVertex)
+ 10: TypeFunction 2 9(ptr) 9(ptr)
+ 15: TypeFunction 7(fvec4)
+ 18: 6(float) Constant 0
+ 19: 7(fvec4) ConstantComposite 18 18 18 18
+ 22: TypePointer Output 7(fvec4)
+23(@entryPointOutput): 22(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 24: 7(fvec4) FunctionCall 16(@main()
+ Store 23(@entryPointOutput) 24
+ Return
+ FunctionEnd
+13(GS_Draw(struct-myVertex-vf41;struct-myVertex-vf41;): 2 Function None 10
+ 11(IN): 9(ptr) FunctionParameter
+12(OutputStream): 9(ptr) FunctionParameter
+ 14: Label
+ Return
+ FunctionEnd
+ 16(@main(): 7(fvec4) Function None 15
+ 17: Label
+ ReturnValue 19
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.function.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.function.frag.out
new file mode 100644
index 00000000000..00b882d829c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.function.frag.out
@@ -0,0 +1,119 @@
+hlsl.function.frag
+ERROR: 0:24: 'fun1' : unknown variable
+ERROR: 0:24: 'return' : type does not match, or is not convertible to, the function's return type
+ERROR: 2 compilation errors. No code generated.
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+ERROR: node is still EOpNull!
+0:2 Function Definition: fun0( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Branch: Return with expression
+0:3 Constant:
+0:3 1.000000
+0:3 1.000000
+0:3 1.000000
+0:3 1.000000
+0:7 Function Definition: fun2(vf4; ( temp uint)
+0:7 Function Parameters:
+0:7 'col' ( in 4-component vector of float)
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 Constant:
+0:8 7 (const uint)
+0:12 Function Definition: fun4(u1;u1; ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:12 'id1' ( in uint)
+0:12 'id2' ( in uint)
+0:? Sequence
+0:13 Branch: Return with expression
+0:13 Construct vec4 ( temp 4-component vector of float)
+0:13 Convert uint to float ( temp float)
+0:13 component-wise multiply ( temp uint)
+0:13 'id1' ( in uint)
+0:13 'id2' ( in uint)
+0:17 Function Definition: fun1(i1; ( temp 4-component vector of float)
+0:17 Function Parameters:
+0:17 'index' ( in int)
+0:? Sequence
+0:18 Sequence
+0:18 move second child to first child ( temp uint)
+0:18 'entityId' ( temp uint)
+0:18 Function Call: fun2(vf4; ( temp uint)
+0:18 Function Call: fun0( ( temp 4-component vector of float)
+0:19 Branch: Return with expression
+0:19 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
+0:19 'entityId' ( temp uint)
+0:19 'entityId' ( temp uint)
+0:23 Function Definition: @main( ( temp int)
+0:23 Function Parameters:
+0:23 Function Definition: main( ( temp void)
+0:23 Function Parameters:
+0:? Sequence
+0:23 move second child to first child ( temp int)
+0:? '@entryPointOutput' (layout( location=0) out int)
+0:23 Function Call: @main( ( temp int)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out int)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+ERROR: node is still EOpNull!
+0:2 Function Definition: fun0( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Branch: Return with expression
+0:3 Constant:
+0:3 1.000000
+0:3 1.000000
+0:3 1.000000
+0:3 1.000000
+0:7 Function Definition: fun2(vf4; ( temp uint)
+0:7 Function Parameters:
+0:7 'col' ( in 4-component vector of float)
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 Constant:
+0:8 7 (const uint)
+0:12 Function Definition: fun4(u1;u1; ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:12 'id1' ( in uint)
+0:12 'id2' ( in uint)
+0:? Sequence
+0:13 Branch: Return with expression
+0:13 Construct vec4 ( temp 4-component vector of float)
+0:13 Convert uint to float ( temp float)
+0:13 component-wise multiply ( temp uint)
+0:13 'id1' ( in uint)
+0:13 'id2' ( in uint)
+0:17 Function Definition: fun1(i1; ( temp 4-component vector of float)
+0:17 Function Parameters:
+0:17 'index' ( in int)
+0:? Sequence
+0:18 Sequence
+0:18 move second child to first child ( temp uint)
+0:18 'entityId' ( temp uint)
+0:18 Function Call: fun2(vf4; ( temp uint)
+0:18 Function Call: fun0( ( temp 4-component vector of float)
+0:19 Branch: Return with expression
+0:19 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
+0:19 'entityId' ( temp uint)
+0:19 'entityId' ( temp uint)
+0:23 Function Definition: @main( ( temp int)
+0:23 Function Parameters:
+0:23 Function Definition: main( ( temp void)
+0:23 Function Parameters:
+0:? Sequence
+0:23 move second child to first child ( temp int)
+0:? '@entryPointOutput' (layout( location=0) out int)
+0:23 Function Call: @main( ( temp int)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out int)
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.array.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.array.dx10.frag.out
index 69f8e3d7d39..c2e25ceab0f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.array.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.array.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.gather.array.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -101,13 +101,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -124,14 +124,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -233,13 +233,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -256,11 +256,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 124
Capability Shader
@@ -270,6 +270,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 107 111
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -290,8 +291,8 @@ gl_FragCoord origin is upper left
Name 84 "g_tTexcdu4a"
Name 95 "psout"
Name 104 "flattenTemp"
- Name 107 "Color"
- Name 111 "Depth"
+ Name 107 "@entryPointOutput.Color"
+ Name 111 "@entryPointOutput.Depth"
Name 116 "g_tTex1df4a"
Name 117 "g_tTex1df4"
Name 120 "g_tTex1di4a"
@@ -304,8 +305,8 @@ gl_FragCoord origin is upper left
Decorate 64(g_tTexcdf4a) DescriptorSet 0
Decorate 74(g_tTexcdi4a) DescriptorSet 0
Decorate 84(g_tTexcdu4a) DescriptorSet 0
- Decorate 107(Color) Location 0
- Decorate 111(Depth) BuiltIn FragDepth
+ Decorate 107(@entryPointOutput.Color) Location 0
+ Decorate 111(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 116(g_tTex1df4a) DescriptorSet 0
Decorate 116(g_tTex1df4a) Binding 1
Decorate 117(g_tTex1df4) DescriptorSet 0
@@ -375,9 +376,9 @@ gl_FragCoord origin is upper left
98: 29(int) Constant 1
99: TypePointer Function 6(float)
106: TypePointer Output 7(fvec4)
- 107(Color): 106(ptr) Variable Output
+107(@entryPointOutput.Color): 106(ptr) Variable Output
110: TypePointer Output 6(float)
- 111(Depth): 110(ptr) Variable Output
+111(@entryPointOutput.Depth): 110(ptr) Variable Output
114: TypeImage 6(float) 1D array sampled format:Unknown
115: TypePointer UniformConstant 114
116(g_tTex1df4a): 115(ptr) Variable UniformConstant
@@ -395,10 +396,10 @@ gl_FragCoord origin is upper left
Store 104(flattenTemp) 105
108: 12(ptr) AccessChain 104(flattenTemp) 30
109: 7(fvec4) Load 108
- Store 107(Color) 109
+ Store 107(@entryPointOutput.Color) 109
112: 99(ptr) AccessChain 104(flattenTemp) 98
113: 6(float) Load 112
- Store 111(Depth) 113
+ Store 111(@entryPointOutput.Depth) 113
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.frag.out
index 6d2526df494..a41c03a8b9e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.gather.basic.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -95,13 +95,13 @@ gl_FragCoord origin is upper left
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:29 Color: direct index for structure ( temp 4-component vector of float)
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Constant:
0:29 0 (const int)
0:29 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:29 Depth: direct index for structure ( temp float)
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Constant:
@@ -122,14 +122,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -225,13 +225,13 @@ gl_FragCoord origin is upper left
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:29 Color: direct index for structure ( temp 4-component vector of float)
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Constant:
0:29 0 (const int)
0:29 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:29 Depth: direct index for structure ( temp float)
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Constant:
@@ -252,11 +252,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 135
Capability Shader
@@ -265,6 +265,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 108 112
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -285,8 +286,8 @@ gl_FragCoord origin is upper left
Name 84 "g_tTexcdu4"
Name 95 "psout"
Name 105 "flattenTemp"
- Name 108 "Color"
- Name 112 "Depth"
+ Name 108 "@entryPointOutput.Color"
+ Name 112 "@entryPointOutput.Depth"
Name 115 "g_sSamp2d"
Name 118 "g_tTex1df4a"
Name 119 "g_tTex1df4"
@@ -303,8 +304,8 @@ gl_FragCoord origin is upper left
Decorate 63(g_tTexcdf4) DescriptorSet 0
Decorate 74(g_tTexcdi4) DescriptorSet 0
Decorate 84(g_tTexcdu4) DescriptorSet 0
- Decorate 108(Color) Location 0
- Decorate 112(Depth) BuiltIn FragDepth
+ Decorate 108(@entryPointOutput.Color) Location 0
+ Decorate 112(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 115(g_sSamp2d) DescriptorSet 0
Decorate 118(g_tTex1df4a) DescriptorSet 0
Decorate 118(g_tTex1df4a) Binding 1
@@ -379,9 +380,9 @@ gl_FragCoord origin is upper left
99: 28(int) Constant 1
100: TypePointer Function 6(float)
107: TypePointer Output 7(fvec4)
- 108(Color): 107(ptr) Variable Output
+108(@entryPointOutput.Color): 107(ptr) Variable Output
111: TypePointer Output 6(float)
- 112(Depth): 111(ptr) Variable Output
+112(@entryPointOutput.Depth): 111(ptr) Variable Output
115(g_sSamp2d): 19(ptr) Variable UniformConstant
116: TypeImage 6(float) 1D sampled format:Unknown
117: TypePointer UniformConstant 116
@@ -409,10 +410,10 @@ gl_FragCoord origin is upper left
Store 105(flattenTemp) 106
109: 12(ptr) AccessChain 105(flattenTemp) 29
110: 7(fvec4) Load 109
- Store 108(Color) 110
+ Store 108(@entryPointOutput.Color) 110
113: 100(ptr) AccessChain 105(flattenTemp) 99
114: 6(float) Load 113
- Store 112(Depth) 114
+ Store 112(@entryPointOutput.Depth) 114
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.vert.out
index 9eec1ca6c59..432da7b41a7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.vert.out
@@ -1,5 +1,5 @@
hlsl.gather.basic.dx10.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:28 Function Parameters:
@@ -84,7 +84,7 @@ Shader version: 450
0:? Sequence
0:28 Sequence
0:28 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:28 Pos: direct index for structure ( temp 4-component vector of float)
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:28 Constant:
@@ -105,13 +105,13 @@ Shader version: 450
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? '@entryPointOutput' (layout( location=0) out structure{})
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:28 Function Parameters:
@@ -196,7 +196,7 @@ Shader version: 450
0:? Sequence
0:28 Sequence
0:28 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:28 Pos: direct index for structure ( temp 4-component vector of float)
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:28 Constant:
@@ -217,17 +217,18 @@ Shader version: 450
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? '@entryPointOutput' (layout( location=0) out structure{})
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 129
+// Generated by (magic number): 80002
+// Id's are bound by 126
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 103 128
+ EntryPoint Vertex 4 "main" 103
+ Source HLSL 500
Name 4 "main"
Name 8 "VS_OUTPUT"
MemberName 8(VS_OUTPUT) 0 "Pos"
@@ -246,7 +247,7 @@ Shader version: 450
Name 81 "txval42"
Name 84 "g_tTexcdu4"
Name 95 "vsout"
- Name 103 "@entryPointOutput_Pos"
+ Name 103 "@entryPointOutput.Pos"
Name 106 "g_sSamp2d"
Name 109 "g_tTex1df4a"
Name 110 "g_tTex1df4"
@@ -255,8 +256,6 @@ Shader version: 450
Name 119 "g_tTex3df4"
Name 122 "g_tTex3di4"
Name 125 "g_tTex3du4"
- Name 126 "VS_OUTPUT"
- Name 128 "@entryPointOutput"
Decorate 16(g_tTex2df4) DescriptorSet 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
@@ -265,7 +264,7 @@ Shader version: 450
Decorate 63(g_tTexcdf4) DescriptorSet 0
Decorate 74(g_tTexcdi4) DescriptorSet 0
Decorate 84(g_tTexcdu4) DescriptorSet 0
- Decorate 103(@entryPointOutput_Pos) BuiltIn Position
+ Decorate 103(@entryPointOutput.Pos) BuiltIn Position
Decorate 106(g_sSamp2d) DescriptorSet 0
Decorate 109(g_tTex1df4a) DescriptorSet 0
Decorate 109(g_tTex1df4a) Binding 1
@@ -276,7 +275,6 @@ Shader version: 450
Decorate 119(g_tTex3df4) DescriptorSet 0
Decorate 122(g_tTex3di4) DescriptorSet 0
Decorate 125(g_tTex3du4) DescriptorSet 0
- Decorate 128(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -339,7 +337,7 @@ Shader version: 450
96: 6(float) Constant 0
97: 7(fvec4) ConstantComposite 96 96 96 96
102: TypePointer Output 7(fvec4)
-103(@entryPointOutput_Pos): 102(ptr) Variable Output
+103(@entryPointOutput.Pos): 102(ptr) Variable Output
106(g_sSamp2d): 19(ptr) Variable UniformConstant
107: TypeImage 6(float) 1D sampled format:Unknown
108: TypePointer UniformConstant 107
@@ -360,14 +358,11 @@ Shader version: 450
123: TypeImage 45(int) 3D sampled format:Unknown
124: TypePointer UniformConstant 123
125(g_tTex3du4): 124(ptr) Variable UniformConstant
- 126(VS_OUTPUT): TypeStruct
- 127: TypePointer Output 126(VS_OUTPUT)
-128(@entryPointOutput): 127(ptr) Variable Output
4(main): 2 Function None 3
5: Label
104:8(VS_OUTPUT) FunctionCall 10(@main()
105: 7(fvec4) CompositeExtract 104 0
- Store 103(@entryPointOutput_Pos) 105
+ Store 103(@entryPointOutput.Pos) 105
Return
FunctionEnd
10(@main():8(VS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.offset.dx10.frag.out
index c9213137cb2..77410b03412 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.offset.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.offset.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.gather.offset.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -71,13 +71,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -97,14 +97,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -176,13 +176,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -202,11 +202,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 114
Capability Shader
@@ -215,6 +215,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 79 83
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -229,8 +230,8 @@ gl_FragCoord origin is upper left
Name 55 "g_tTex2du4"
Name 67 "psout"
Name 76 "flattenTemp"
- Name 79 "Color"
- Name 83 "Depth"
+ Name 79 "@entryPointOutput.Color"
+ Name 83 "@entryPointOutput.Depth"
Name 88 "g_tTex1df4a"
Name 89 "g_tTex1df4"
Name 92 "g_tTex1di4"
@@ -246,8 +247,8 @@ gl_FragCoord origin is upper left
Decorate 20(g_sSamp) Binding 0
Decorate 39(g_tTex2di4) DescriptorSet 0
Decorate 55(g_tTex2du4) DescriptorSet 0
- Decorate 79(Color) Location 0
- Decorate 83(Depth) BuiltIn FragDepth
+ Decorate 79(@entryPointOutput.Color) Location 0
+ Decorate 83(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 88(g_tTex1df4a) DescriptorSet 0
Decorate 88(g_tTex1df4a) Binding 1
Decorate 89(g_tTex1df4) DescriptorSet 0
@@ -310,9 +311,9 @@ gl_FragCoord origin is upper left
69: 7(fvec4) ConstantComposite 68 68 68 68
71: TypePointer Function 6(float)
78: TypePointer Output 7(fvec4)
- 79(Color): 78(ptr) Variable Output
+79(@entryPointOutput.Color): 78(ptr) Variable Output
82: TypePointer Output 6(float)
- 83(Depth): 82(ptr) Variable Output
+83(@entryPointOutput.Depth): 82(ptr) Variable Output
86: TypeImage 6(float) 1D sampled format:Unknown
87: TypePointer UniformConstant 86
88(g_tTex1df4a): 87(ptr) Variable UniformConstant
@@ -348,10 +349,10 @@ gl_FragCoord origin is upper left
Store 76(flattenTemp) 77
80: 12(ptr) AccessChain 76(flattenTemp) 31
81: 7(fvec4) Load 80
- Store 79(Color) 81
+ Store 79(@entryPointOutput.Color) 81
84: 71(ptr) AccessChain 76(flattenTemp) 30
85: 6(float) Load 84
- Store 83(Depth) 85
+ Store 83(@entryPointOutput.Depth) 85
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
index 6b1cac30dcf..a6e50ff9c18 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.gather.offsetarray.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -74,13 +74,13 @@ gl_FragCoord origin is upper left
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:20 Color: direct index for structure ( temp 4-component vector of float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:20 Depth: direct index for structure ( temp float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
@@ -94,14 +94,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4' ( uniform texture2DArray)
0:? 'g_tTex2di4' ( uniform itexture2DArray)
0:? 'g_tTex2du4' ( uniform utexture2DArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -176,13 +176,13 @@ gl_FragCoord origin is upper left
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:20 Color: direct index for structure ( temp 4-component vector of float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:20 Depth: direct index for structure ( temp float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
@@ -196,11 +196,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4' ( uniform texture2DArray)
0:? 'g_tTex2di4' ( uniform itexture2DArray)
0:? 'g_tTex2du4' ( uniform utexture2DArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 97
Capability Shader
@@ -209,6 +209,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 80 84
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -223,8 +224,8 @@ gl_FragCoord origin is upper left
Name 55 "g_tTex2du4"
Name 68 "psout"
Name 77 "flattenTemp"
- Name 80 "Color"
- Name 84 "Depth"
+ Name 80 "@entryPointOutput.Color"
+ Name 84 "@entryPointOutput.Depth"
Name 89 "g_tTex1df4a"
Name 90 "g_tTex1df4"
Name 93 "g_tTex1di4"
@@ -234,8 +235,8 @@ gl_FragCoord origin is upper left
Decorate 20(g_sSamp) Binding 0
Decorate 40(g_tTex2di4) DescriptorSet 0
Decorate 55(g_tTex2du4) DescriptorSet 0
- Decorate 80(Color) Location 0
- Decorate 84(Depth) BuiltIn FragDepth
+ Decorate 80(@entryPointOutput.Color) Location 0
+ Decorate 84(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 89(g_tTex1df4a) DescriptorSet 0
Decorate 89(g_tTex1df4a) Binding 1
Decorate 90(g_tTex1df4) DescriptorSet 0
@@ -293,9 +294,9 @@ gl_FragCoord origin is upper left
70: 7(fvec4) ConstantComposite 69 69 69 69
72: TypePointer Function 6(float)
79: TypePointer Output 7(fvec4)
- 80(Color): 79(ptr) Variable Output
+80(@entryPointOutput.Color): 79(ptr) Variable Output
83: TypePointer Output 6(float)
- 84(Depth): 83(ptr) Variable Output
+84(@entryPointOutput.Depth): 83(ptr) Variable Output
87: TypeImage 6(float) 1D array sampled format:Unknown
88: TypePointer UniformConstant 87
89(g_tTex1df4a): 88(ptr) Variable UniformConstant
@@ -313,10 +314,10 @@ gl_FragCoord origin is upper left
Store 77(flattenTemp) 78
81: 12(ptr) AccessChain 77(flattenTemp) 32
82: 7(fvec4) Load 81
- Store 80(Color) 82
+ Store 80(@entryPointOutput.Color) 82
85: 72(ptr) AccessChain 77(flattenTemp) 31
86: 6(float) Load 85
- Store 84(Depth) 86
+ Store 84(@entryPointOutput.Depth) 86
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
index c918d9917c5..2191553283c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.gatherRGBA.array.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -344,13 +344,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -368,14 +368,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -720,13 +720,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -744,11 +744,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 255
Capability Shader
@@ -758,6 +758,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 238 242
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -802,8 +803,8 @@ gl_FragCoord origin is upper left
Name 218 "txval72"
Name 226 "psout"
Name 235 "flattenTemp"
- Name 238 "Color"
- Name 242 "Depth"
+ Name 238 "@entryPointOutput.Color"
+ Name 242 "@entryPointOutput.Depth"
Name 245 "g_sSamp2d"
Name 248 "g_tTex1df4a"
Name 251 "g_tTex1di4a"
@@ -822,8 +823,8 @@ gl_FragCoord origin is upper left
Decorate 131(g_tTexcdf4a) DescriptorSet 0
Decorate 143(g_tTexcdi4a) DescriptorSet 0
Decorate 154(g_tTexcdu4a) DescriptorSet 0
- Decorate 238(Color) Location 0
- Decorate 242(Depth) BuiltIn FragDepth
+ Decorate 238(@entryPointOutput.Color) Location 0
+ Decorate 242(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 245(g_sSamp2d) DescriptorSet 0
Decorate 248(g_tTex1df4a) DescriptorSet 0
Decorate 248(g_tTex1df4a) Binding 0
@@ -885,9 +886,9 @@ gl_FragCoord origin is upper left
228: 7(fvec4) ConstantComposite 227 227 227 227
230: TypePointer Function 6(float)
237: TypePointer Output 7(fvec4)
- 238(Color): 237(ptr) Variable Output
+238(@entryPointOutput.Color): 237(ptr) Variable Output
241: TypePointer Output 6(float)
- 242(Depth): 241(ptr) Variable Output
+242(@entryPointOutput.Depth): 241(ptr) Variable Output
245(g_sSamp2d): 19(ptr) Variable UniformConstant
246: TypeImage 6(float) 1D array sampled format:Unknown
247: TypePointer UniformConstant 246
@@ -905,10 +906,10 @@ gl_FragCoord origin is upper left
Store 235(flattenTemp) 236
239: 12(ptr) AccessChain 235(flattenTemp) 34
240: 7(fvec4) Load 239
- Store 238(Color) 240
+ Store 238(@entryPointOutput.Color) 240
243: 230(ptr) AccessChain 235(flattenTemp) 69
244: 6(float) Load 243
- Store 242(Depth) 244
+ Store 242(@entryPointOutput.Depth) 244
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
index 7bd005a7e1b..6dbdfaa4109 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.gatherRGBA.basic.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:34 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -344,13 +344,13 @@ gl_FragCoord origin is upper left
0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:34 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:34 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:34 Color: direct index for structure ( temp 4-component vector of float)
0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
0:34 0 (const int)
0:34 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:34 Depth: direct index for structure ( temp float)
0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
@@ -372,14 +372,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:34 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -724,13 +724,13 @@ gl_FragCoord origin is upper left
0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:34 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:34 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:34 Color: direct index for structure ( temp 4-component vector of float)
0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
0:34 0 (const int)
0:34 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:34 Depth: direct index for structure ( temp float)
0:34 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
@@ -752,11 +752,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 265
Capability Shader
@@ -765,6 +765,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 238 242
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -809,8 +810,8 @@ gl_FragCoord origin is upper left
Name 218 "txval72"
Name 226 "psout"
Name 235 "flattenTemp"
- Name 238 "Color"
- Name 242 "Depth"
+ Name 238 "@entryPointOutput.Color"
+ Name 242 "@entryPointOutput.Depth"
Name 245 "g_sSamp2d"
Name 248 "g_tTex1df4a"
Name 249 "g_tTex1df4"
@@ -833,8 +834,8 @@ gl_FragCoord origin is upper left
Decorate 131(g_tTexcdf4) DescriptorSet 0
Decorate 143(g_tTexcdi4) DescriptorSet 0
Decorate 154(g_tTexcdu4) DescriptorSet 0
- Decorate 238(Color) Location 0
- Decorate 242(Depth) BuiltIn FragDepth
+ Decorate 238(@entryPointOutput.Color) Location 0
+ Decorate 242(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 245(g_sSamp2d) DescriptorSet 0
Decorate 248(g_tTex1df4a) DescriptorSet 0
Decorate 248(g_tTex1df4a) Binding 1
@@ -901,9 +902,9 @@ gl_FragCoord origin is upper left
228: 7(fvec4) ConstantComposite 227 227 227 227
230: TypePointer Function 6(float)
237: TypePointer Output 7(fvec4)
- 238(Color): 237(ptr) Variable Output
+238(@entryPointOutput.Color): 237(ptr) Variable Output
241: TypePointer Output 6(float)
- 242(Depth): 241(ptr) Variable Output
+242(@entryPointOutput.Depth): 241(ptr) Variable Output
245(g_sSamp2d): 19(ptr) Variable UniformConstant
246: TypeImage 6(float) 1D sampled format:Unknown
247: TypePointer UniformConstant 246
@@ -931,10 +932,10 @@ gl_FragCoord origin is upper left
Store 235(flattenTemp) 236
239: 12(ptr) AccessChain 235(flattenTemp) 34
240: 7(fvec4) Load 239
- Store 238(Color) 240
+ Store 238(@entryPointOutput.Color) 240
243: 230(ptr) AccessChain 235(flattenTemp) 30
244: 6(float) Load 243
- Store 242(Depth) 244
+ Store 242(@entryPointOutput.Depth) 244
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
index 1d3fe467ded..ddbe283179b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.gatherRGBA.offset.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:39 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -596,13 +596,13 @@ gl_FragCoord origin is upper left
0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:39 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:39 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:39 Color: direct index for structure ( temp 4-component vector of float)
0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:39 Depth: direct index for structure ( temp float)
0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
@@ -624,14 +624,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:39 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -1228,13 +1228,13 @@ gl_FragCoord origin is upper left
0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:39 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:39 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:39 Color: direct index for structure ( temp 4-component vector of float)
0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:39 Depth: direct index for structure ( temp float)
0:39 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
@@ -1256,11 +1256,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 399
Capability Shader
@@ -1270,6 +1270,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 363 367
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -1315,8 +1316,8 @@ gl_FragCoord origin is upper left
Name 334 "txval324"
Name 351 "psout"
Name 360 "flattenTemp"
- Name 363 "Color"
- Name 367 "Depth"
+ Name 363 "@entryPointOutput.Color"
+ Name 367 "@entryPointOutput.Depth"
Name 370 "g_sSamp2d"
Name 373 "g_tTex1df4a"
Name 374 "g_tTex1df4"
@@ -1343,8 +1344,8 @@ gl_FragCoord origin is upper left
Decorate 32 DescriptorSet 0
Decorate 47(g_tTex2di4) DescriptorSet 0
Decorate 63(g_tTex2du4) DescriptorSet 0
- Decorate 363(Color) Location 0
- Decorate 367(Depth) BuiltIn FragDepth
+ Decorate 363(@entryPointOutput.Color) Location 0
+ Decorate 367(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 370(g_sSamp2d) DescriptorSet 0
Decorate 373(g_tTex1df4a) DescriptorSet 0
Decorate 373(g_tTex1df4a) Binding 1
@@ -1407,9 +1408,9 @@ gl_FragCoord origin is upper left
353: 7(fvec4) ConstantComposite 352 352 352 352
355: TypePointer Function 6(float)
362: TypePointer Output 7(fvec4)
- 363(Color): 362(ptr) Variable Output
+363(@entryPointOutput.Color): 362(ptr) Variable Output
366: TypePointer Output 6(float)
- 367(Depth): 366(ptr) Variable Output
+367(@entryPointOutput.Depth): 366(ptr) Variable Output
370(g_sSamp2d): 19(ptr) Variable UniformConstant
371: TypeImage 6(float) 1D sampled format:Unknown
372: TypePointer UniformConstant 371
@@ -1446,10 +1447,10 @@ gl_FragCoord origin is upper left
Store 360(flattenTemp) 361
364: 12(ptr) AccessChain 360(flattenTemp) 41
365: 7(fvec4) Load 364
- Store 363(Color) 365
+ Store 363(@entryPointOutput.Color) 365
368: 355(ptr) AccessChain 360(flattenTemp) 33
369: 6(float) Load 368
- Store 367(Depth) 369
+ Store 367(@entryPointOutput.Depth) 369
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
index 86e0a99656b..360f75c1ba4 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.gatherRGBA.offsetarray.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:33 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -596,13 +596,13 @@ gl_FragCoord origin is upper left
0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:33 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:33 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:33 Color: direct index for structure ( temp 4-component vector of float)
0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
0:33 0 (const int)
0:33 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:33 Depth: direct index for structure ( temp float)
0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
@@ -620,14 +620,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:33 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -1224,13 +1224,13 @@ gl_FragCoord origin is upper left
0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:33 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:33 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:33 Color: direct index for structure ( temp 4-component vector of float)
0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
0:33 0 (const int)
0:33 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:33 Depth: direct index for structure ( temp float)
0:33 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
@@ -1248,11 +1248,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 389
Capability Shader
@@ -1263,6 +1263,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 363 367
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -1308,8 +1309,8 @@ gl_FragCoord origin is upper left
Name 334 "txval324"
Name 351 "psout"
Name 360 "flattenTemp"
- Name 363 "Color"
- Name 367 "Depth"
+ Name 363 "@entryPointOutput.Color"
+ Name 367 "@entryPointOutput.Depth"
Name 370 "g_sSamp2d"
Name 373 "g_tTex1df4a"
Name 376 "g_tTex1di4a"
@@ -1332,8 +1333,8 @@ gl_FragCoord origin is upper left
Decorate 32 DescriptorSet 0
Decorate 47(g_tTex2di4a) DescriptorSet 0
Decorate 63(g_tTex2du4a) DescriptorSet 0
- Decorate 363(Color) Location 0
- Decorate 367(Depth) BuiltIn FragDepth
+ Decorate 363(@entryPointOutput.Color) Location 0
+ Decorate 367(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 370(g_sSamp2d) DescriptorSet 0
Decorate 373(g_tTex1df4a) DescriptorSet 0
Decorate 373(g_tTex1df4a) Binding 0
@@ -1391,9 +1392,9 @@ gl_FragCoord origin is upper left
353: 7(fvec4) ConstantComposite 352 352 352 352
355: TypePointer Function 6(float)
362: TypePointer Output 7(fvec4)
- 363(Color): 362(ptr) Variable Output
+363(@entryPointOutput.Color): 362(ptr) Variable Output
366: TypePointer Output 6(float)
- 367(Depth): 366(ptr) Variable Output
+367(@entryPointOutput.Depth): 366(ptr) Variable Output
370(g_sSamp2d): 19(ptr) Variable UniformConstant
371: TypeImage 6(float) 1D array sampled format:Unknown
372: TypePointer UniformConstant 371
@@ -1420,10 +1421,10 @@ gl_FragCoord origin is upper left
Store 360(flattenTemp) 361
364: 12(ptr) AccessChain 360(flattenTemp) 41
365: 7(fvec4) Load 364
- Store 363(Color) 365
+ Store 363(@entryPointOutput.Color) 365
368: 355(ptr) AccessChain 360(flattenTemp) 131
369: 6(float) Load 368
- Store 367(Depth) 369
+ Store 367(@entryPointOutput.Depth) 369
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
index 1c7487deb79..7bfed636c36 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.gathercmpRGBA.offset.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
0:45 'txval001' ( temp 4-component vector of float)
0:45 textureGatherOffset ( temp 4-component vector of float)
0:45 Construct combined texture-sampler ( temp sampler2DShadow)
-0:45 'g_tTex2df4' ( uniform texture2D)
+0:45 'g_tTex2df4' ( uniform texture2DShadow)
0:45 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:45 c2: direct index for structure ( uniform 2-component vector of float)
0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -26,7 +26,7 @@ gl_FragCoord origin is upper left
0:46 'txval011' ( temp 4-component vector of int)
0:46 textureGatherOffset ( temp 4-component vector of int)
0:46 Construct combined texture-sampler ( temp isampler2DShadow)
-0:46 'g_tTex2di4' ( uniform itexture2D)
+0:46 'g_tTex2di4' ( uniform itexture2DShadow)
0:46 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:46 c2: direct index for structure ( uniform 2-component vector of float)
0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -42,7 +42,7 @@ gl_FragCoord origin is upper left
0:47 'txval021' ( temp 4-component vector of uint)
0:47 textureGatherOffset ( temp 4-component vector of uint)
0:47 Construct combined texture-sampler ( temp usampler2DShadow)
-0:47 'g_tTex2du4' ( uniform utexture2D)
+0:47 'g_tTex2du4' ( uniform utexture2DShadow)
0:47 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:47 c2: direct index for structure ( uniform 2-component vector of float)
0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -58,7 +58,7 @@ gl_FragCoord origin is upper left
0:49 'txval004' ( temp 4-component vector of float)
0:49 textureGatherOffsets ( temp 4-component vector of float)
0:49 Construct combined texture-sampler ( temp sampler2DShadow)
-0:49 'g_tTex2df4' ( uniform texture2D)
+0:49 'g_tTex2df4' ( uniform texture2DShadow)
0:49 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:49 c2: direct index for structure ( uniform 2-component vector of float)
0:49 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -80,7 +80,7 @@ gl_FragCoord origin is upper left
0:50 'txval014' ( temp 4-component vector of int)
0:50 textureGatherOffsets ( temp 4-component vector of int)
0:50 Construct combined texture-sampler ( temp isampler2DShadow)
-0:50 'g_tTex2di4' ( uniform itexture2D)
+0:50 'g_tTex2di4' ( uniform itexture2DShadow)
0:50 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:50 c2: direct index for structure ( uniform 2-component vector of float)
0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -102,7 +102,7 @@ gl_FragCoord origin is upper left
0:51 'txval024' ( temp 4-component vector of uint)
0:51 textureGatherOffsets ( temp 4-component vector of uint)
0:51 Construct combined texture-sampler ( temp usampler2DShadow)
-0:51 'g_tTex2du4' ( uniform utexture2D)
+0:51 'g_tTex2du4' ( uniform utexture2DShadow)
0:51 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:51 c2: direct index for structure ( uniform 2-component vector of float)
0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -119,25 +119,73 @@ gl_FragCoord origin is upper left
0:51 1 (const int)
0:51 1 (const int)
0:51 1 (const int)
-0:114 move second child to first child ( temp 4-component vector of float)
-0:114 Color: direct index for structure ( temp 4-component vector of float)
-0:114 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:114 Constant:
-0:114 0 (const int)
-0:114 Constant:
-0:114 1.000000
-0:114 1.000000
-0:114 1.000000
-0:114 1.000000
-0:115 move second child to first child ( temp float)
-0:115 Depth: direct index for structure ( temp float)
-0:115 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:115 Constant:
-0:115 1 (const int)
-0:115 Constant:
-0:115 1.000000
-0:117 Branch: Return with expression
-0:117 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:53 Sequence
+0:53 move second child to first child ( temp 4-component vector of float)
+0:53 'txval401' ( temp 4-component vector of float)
+0:53 textureGatherOffset ( temp 4-component vector of float)
+0:53 Construct combined texture-sampler ( temp sampler2DShadow)
+0:53 'g_tTex2df4' ( uniform texture2DShadow)
+0:53 'g_sSampCmp' (layout( binding=0) uniform sampler)
+0:53 c2: direct index for structure ( uniform 2-component vector of float)
+0:53 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
+0:53 Constant:
+0:53 1 (const uint)
+0:53 Constant:
+0:53 0.750000
+0:? Constant:
+0:? 1 (const int)
+0:? 0 (const int)
+0:54 Sequence
+0:54 move second child to first child ( temp 4-component vector of int)
+0:54 'txval411' ( temp 4-component vector of int)
+0:54 textureGatherOffset ( temp 4-component vector of int)
+0:54 Construct combined texture-sampler ( temp isampler2DShadow)
+0:54 'g_tTex2di4' ( uniform itexture2DShadow)
+0:54 'g_sSampCmp' (layout( binding=0) uniform sampler)
+0:54 c2: direct index for structure ( uniform 2-component vector of float)
+0:54 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
+0:54 Constant:
+0:54 1 (const uint)
+0:54 Constant:
+0:54 0.750000
+0:? Constant:
+0:? 1 (const int)
+0:? -1 (const int)
+0:55 Sequence
+0:55 move second child to first child ( temp 4-component vector of uint)
+0:55 'txval421' ( temp 4-component vector of uint)
+0:55 textureGatherOffset ( temp 4-component vector of uint)
+0:55 Construct combined texture-sampler ( temp usampler2DShadow)
+0:55 'g_tTex2du4' ( uniform utexture2DShadow)
+0:55 'g_sSampCmp' (layout( binding=0) uniform sampler)
+0:55 c2: direct index for structure ( uniform 2-component vector of float)
+0:55 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
+0:55 Constant:
+0:55 1 (const uint)
+0:55 Constant:
+0:55 0.750000
+0:? Constant:
+0:? 1 (const int)
+0:? 1 (const int)
+0:110 move second child to first child ( temp 4-component vector of float)
+0:110 Color: direct index for structure ( temp 4-component vector of float)
+0:110 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:110 Constant:
+0:110 0 (const int)
+0:110 Constant:
+0:110 1.000000
+0:110 1.000000
+0:110 1.000000
+0:110 1.000000
+0:111 move second child to first child ( temp float)
+0:111 Depth: direct index for structure ( temp float)
+0:111 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:111 Constant:
+0:111 1 (const int)
+0:111 Constant:
+0:111 1.000000
+0:113 Branch: Return with expression
+0:113 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Definition: main( ( temp void)
0:38 Function Parameters:
0:? Sequence
@@ -146,13 +194,13 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
@@ -163,9 +211,9 @@ gl_FragCoord origin is upper left
0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
0:? 'g_tTex1di4' ( uniform itexture1D)
0:? 'g_tTex1du4' ( uniform utexture1D)
-0:? 'g_tTex2df4' ( uniform texture2D)
-0:? 'g_tTex2di4' ( uniform itexture2D)
-0:? 'g_tTex2du4' ( uniform utexture2D)
+0:? 'g_tTex2df4' ( uniform texture2DShadow)
+0:? 'g_tTex2di4' ( uniform itexture2DShadow)
+0:? 'g_tTex2du4' ( uniform utexture2DShadow)
0:? 'g_tTex3df4' ( uniform texture3D)
0:? 'g_tTex3di4' ( uniform itexture3D)
0:? 'g_tTex3du4' ( uniform utexture3D)
@@ -173,14 +221,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -191,7 +239,7 @@ gl_FragCoord origin is upper left
0:45 'txval001' ( temp 4-component vector of float)
0:45 textureGatherOffset ( temp 4-component vector of float)
0:45 Construct combined texture-sampler ( temp sampler2DShadow)
-0:45 'g_tTex2df4' ( uniform texture2D)
+0:45 'g_tTex2df4' ( uniform texture2DShadow)
0:45 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:45 c2: direct index for structure ( uniform 2-component vector of float)
0:45 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -207,7 +255,7 @@ gl_FragCoord origin is upper left
0:46 'txval011' ( temp 4-component vector of int)
0:46 textureGatherOffset ( temp 4-component vector of int)
0:46 Construct combined texture-sampler ( temp isampler2DShadow)
-0:46 'g_tTex2di4' ( uniform itexture2D)
+0:46 'g_tTex2di4' ( uniform itexture2DShadow)
0:46 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:46 c2: direct index for structure ( uniform 2-component vector of float)
0:46 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -223,7 +271,7 @@ gl_FragCoord origin is upper left
0:47 'txval021' ( temp 4-component vector of uint)
0:47 textureGatherOffset ( temp 4-component vector of uint)
0:47 Construct combined texture-sampler ( temp usampler2DShadow)
-0:47 'g_tTex2du4' ( uniform utexture2D)
+0:47 'g_tTex2du4' ( uniform utexture2DShadow)
0:47 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:47 c2: direct index for structure ( uniform 2-component vector of float)
0:47 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -239,7 +287,7 @@ gl_FragCoord origin is upper left
0:49 'txval004' ( temp 4-component vector of float)
0:49 textureGatherOffsets ( temp 4-component vector of float)
0:49 Construct combined texture-sampler ( temp sampler2DShadow)
-0:49 'g_tTex2df4' ( uniform texture2D)
+0:49 'g_tTex2df4' ( uniform texture2DShadow)
0:49 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:49 c2: direct index for structure ( uniform 2-component vector of float)
0:49 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -261,7 +309,7 @@ gl_FragCoord origin is upper left
0:50 'txval014' ( temp 4-component vector of int)
0:50 textureGatherOffsets ( temp 4-component vector of int)
0:50 Construct combined texture-sampler ( temp isampler2DShadow)
-0:50 'g_tTex2di4' ( uniform itexture2D)
+0:50 'g_tTex2di4' ( uniform itexture2DShadow)
0:50 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:50 c2: direct index for structure ( uniform 2-component vector of float)
0:50 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -283,7 +331,7 @@ gl_FragCoord origin is upper left
0:51 'txval024' ( temp 4-component vector of uint)
0:51 textureGatherOffsets ( temp 4-component vector of uint)
0:51 Construct combined texture-sampler ( temp usampler2DShadow)
-0:51 'g_tTex2du4' ( uniform utexture2D)
+0:51 'g_tTex2du4' ( uniform utexture2DShadow)
0:51 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:51 c2: direct index for structure ( uniform 2-component vector of float)
0:51 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
@@ -300,25 +348,73 @@ gl_FragCoord origin is upper left
0:51 1 (const int)
0:51 1 (const int)
0:51 1 (const int)
-0:114 move second child to first child ( temp 4-component vector of float)
-0:114 Color: direct index for structure ( temp 4-component vector of float)
-0:114 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:114 Constant:
-0:114 0 (const int)
-0:114 Constant:
-0:114 1.000000
-0:114 1.000000
-0:114 1.000000
-0:114 1.000000
-0:115 move second child to first child ( temp float)
-0:115 Depth: direct index for structure ( temp float)
-0:115 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:115 Constant:
-0:115 1 (const int)
-0:115 Constant:
-0:115 1.000000
-0:117 Branch: Return with expression
-0:117 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:53 Sequence
+0:53 move second child to first child ( temp 4-component vector of float)
+0:53 'txval401' ( temp 4-component vector of float)
+0:53 textureGatherOffset ( temp 4-component vector of float)
+0:53 Construct combined texture-sampler ( temp sampler2DShadow)
+0:53 'g_tTex2df4' ( uniform texture2DShadow)
+0:53 'g_sSampCmp' (layout( binding=0) uniform sampler)
+0:53 c2: direct index for structure ( uniform 2-component vector of float)
+0:53 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
+0:53 Constant:
+0:53 1 (const uint)
+0:53 Constant:
+0:53 0.750000
+0:? Constant:
+0:? 1 (const int)
+0:? 0 (const int)
+0:54 Sequence
+0:54 move second child to first child ( temp 4-component vector of int)
+0:54 'txval411' ( temp 4-component vector of int)
+0:54 textureGatherOffset ( temp 4-component vector of int)
+0:54 Construct combined texture-sampler ( temp isampler2DShadow)
+0:54 'g_tTex2di4' ( uniform itexture2DShadow)
+0:54 'g_sSampCmp' (layout( binding=0) uniform sampler)
+0:54 c2: direct index for structure ( uniform 2-component vector of float)
+0:54 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
+0:54 Constant:
+0:54 1 (const uint)
+0:54 Constant:
+0:54 0.750000
+0:? Constant:
+0:? 1 (const int)
+0:? -1 (const int)
+0:55 Sequence
+0:55 move second child to first child ( temp 4-component vector of uint)
+0:55 'txval421' ( temp 4-component vector of uint)
+0:55 textureGatherOffset ( temp 4-component vector of uint)
+0:55 Construct combined texture-sampler ( temp usampler2DShadow)
+0:55 'g_tTex2du4' ( uniform utexture2DShadow)
+0:55 'g_sSampCmp' (layout( binding=0) uniform sampler)
+0:55 c2: direct index for structure ( uniform 2-component vector of float)
+0:55 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
+0:55 Constant:
+0:55 1 (const uint)
+0:55 Constant:
+0:55 0.750000
+0:? Constant:
+0:? 1 (const int)
+0:? 1 (const int)
+0:110 move second child to first child ( temp 4-component vector of float)
+0:110 Color: direct index for structure ( temp 4-component vector of float)
+0:110 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:110 Constant:
+0:110 0 (const int)
+0:110 Constant:
+0:110 1.000000
+0:110 1.000000
+0:110 1.000000
+0:110 1.000000
+0:111 move second child to first child ( temp float)
+0:111 Depth: direct index for structure ( temp float)
+0:111 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:111 Constant:
+0:111 1 (const int)
+0:111 Constant:
+0:111 1.000000
+0:113 Branch: Return with expression
+0:113 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Definition: main( ( temp void)
0:38 Function Parameters:
0:? Sequence
@@ -327,13 +423,13 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
@@ -344,9 +440,9 @@ gl_FragCoord origin is upper left
0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
0:? 'g_tTex1di4' ( uniform itexture1D)
0:? 'g_tTex1du4' ( uniform utexture1D)
-0:? 'g_tTex2df4' ( uniform texture2D)
-0:? 'g_tTex2di4' ( uniform itexture2D)
-0:? 'g_tTex2du4' ( uniform utexture2D)
+0:? 'g_tTex2df4' ( uniform texture2DShadow)
+0:? 'g_tTex2di4' ( uniform itexture2DShadow)
+0:? 'g_tTex2du4' ( uniform utexture2DShadow)
0:? 'g_tTex3df4' ( uniform texture3D)
0:? 'g_tTex3di4' ( uniform itexture3D)
0:? 'g_tTex3du4' ( uniform utexture3D)
@@ -354,19 +450,20 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 146
+// Generated by (magic number): 80002
+// Id's are bound by 164
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 111 115
+ EntryPoint Fragment 4 "main" 129 133
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -375,58 +472,61 @@ gl_FragCoord origin is upper left
Name 13 "txval001"
Name 16 "g_tTex2df4"
Name 20 "g_sSampCmp"
- Name 27 "$Global"
- MemberName 27($Global) 0 "c1"
- MemberName 27($Global) 1 "c2"
- MemberName 27($Global) 2 "c3"
- MemberName 27($Global) 3 "c4"
- Name 29 ""
- Name 42 "txval011"
- Name 45 "g_tTex2di4"
- Name 59 "txval021"
- Name 62 "g_tTex2du4"
- Name 72 "txval004"
- Name 82 "txval014"
- Name 90 "txval024"
- Name 99 "psout"
- Name 108 "flattenTemp"
- Name 111 "Color"
- Name 115 "Depth"
- Name 120 "g_tTex1df4a"
- Name 121 "g_tTex1df4"
- Name 124 "g_tTex1di4"
- Name 127 "g_tTex1du4"
- Name 130 "g_tTex3df4"
- Name 133 "g_tTex3di4"
- Name 136 "g_tTex3du4"
- Name 139 "g_tTexcdf4"
- Name 142 "g_tTexcdi4"
- Name 145 "g_tTexcdu4"
+ Name 26 "$Global"
+ MemberName 26($Global) 0 "c1"
+ MemberName 26($Global) 1 "c2"
+ MemberName 26($Global) 2 "c3"
+ MemberName 26($Global) 3 "c4"
+ Name 28 ""
+ Name 41 "txval011"
+ Name 44 "g_tTex2di4"
+ Name 57 "txval021"
+ Name 60 "g_tTex2du4"
+ Name 69 "txval004"
+ Name 79 "txval014"
+ Name 87 "txval024"
+ Name 95 "txval401"
+ Name 102 "txval411"
+ Name 109 "txval421"
+ Name 117 "psout"
+ Name 126 "flattenTemp"
+ Name 129 "@entryPointOutput.Color"
+ Name 133 "@entryPointOutput.Depth"
+ Name 138 "g_tTex1df4a"
+ Name 139 "g_tTex1df4"
+ Name 142 "g_tTex1di4"
+ Name 145 "g_tTex1du4"
+ Name 148 "g_tTex3df4"
+ Name 151 "g_tTex3di4"
+ Name 154 "g_tTex3du4"
+ Name 157 "g_tTexcdf4"
+ Name 160 "g_tTexcdi4"
+ Name 163 "g_tTexcdu4"
Decorate 16(g_tTex2df4) DescriptorSet 0
Decorate 20(g_sSampCmp) DescriptorSet 0
Decorate 20(g_sSampCmp) Binding 0
- MemberDecorate 27($Global) 0 Offset 0
- MemberDecorate 27($Global) 1 Offset 8
- MemberDecorate 27($Global) 2 Offset 16
- MemberDecorate 27($Global) 3 Offset 32
- Decorate 27($Global) Block
- Decorate 29 DescriptorSet 0
- Decorate 45(g_tTex2di4) DescriptorSet 0
- Decorate 62(g_tTex2du4) DescriptorSet 0
- Decorate 111(Color) Location 0
- Decorate 115(Depth) BuiltIn FragDepth
- Decorate 120(g_tTex1df4a) DescriptorSet 0
- Decorate 120(g_tTex1df4a) Binding 1
- Decorate 121(g_tTex1df4) DescriptorSet 0
- Decorate 121(g_tTex1df4) Binding 0
- Decorate 124(g_tTex1di4) DescriptorSet 0
- Decorate 127(g_tTex1du4) DescriptorSet 0
- Decorate 130(g_tTex3df4) DescriptorSet 0
- Decorate 133(g_tTex3di4) DescriptorSet 0
- Decorate 136(g_tTex3du4) DescriptorSet 0
- Decorate 139(g_tTexcdf4) DescriptorSet 0
- Decorate 142(g_tTexcdi4) DescriptorSet 0
- Decorate 145(g_tTexcdu4) DescriptorSet 0
+ MemberDecorate 26($Global) 0 Offset 0
+ MemberDecorate 26($Global) 1 Offset 8
+ MemberDecorate 26($Global) 2 Offset 16
+ MemberDecorate 26($Global) 3 Offset 32
+ Decorate 26($Global) Block
+ Decorate 28 DescriptorSet 0
+ Decorate 44(g_tTex2di4) DescriptorSet 0
+ Decorate 60(g_tTex2du4) DescriptorSet 0
+ Decorate 129(@entryPointOutput.Color) Location 0
+ Decorate 133(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 138(g_tTex1df4a) DescriptorSet 0
+ Decorate 138(g_tTex1df4a) Binding 1
+ Decorate 139(g_tTex1df4) DescriptorSet 0
+ Decorate 139(g_tTex1df4) Binding 0
+ Decorate 142(g_tTex1di4) DescriptorSet 0
+ Decorate 145(g_tTex1du4) DescriptorSet 0
+ Decorate 148(g_tTex3df4) DescriptorSet 0
+ Decorate 151(g_tTex3di4) DescriptorSet 0
+ Decorate 154(g_tTex3du4) DescriptorSet 0
+ Decorate 157(g_tTexcdf4) DescriptorSet 0
+ Decorate 160(g_tTexcdi4) DescriptorSet 0
+ Decorate 163(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -434,153 +534,174 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 7(fvec4)
- 14: TypeImage 6(float) 2D sampled format:Unknown
+ 14: TypeImage 6(float) 2D depth sampled format:Unknown
15: TypePointer UniformConstant 14
16(g_tTex2df4): 15(ptr) Variable UniformConstant
18: TypeSampler
19: TypePointer UniformConstant 18
20(g_sSampCmp): 19(ptr) Variable UniformConstant
- 22: TypeImage 6(float) 2D depth sampled format:Unknown
- 23: TypeSampledImage 22
- 25: TypeVector 6(float) 2
- 26: TypeVector 6(float) 3
- 27($Global): TypeStruct 6(float) 25(fvec2) 26(fvec3) 7(fvec4)
- 28: TypePointer Uniform 27($Global)
- 29: 28(ptr) Variable Uniform
- 30: TypeInt 32 1
- 31: 30(int) Constant 1
- 32: TypePointer Uniform 25(fvec2)
- 35: 6(float) Constant 1061158912
- 36: TypeVector 30(int) 2
- 37: 30(int) Constant 0
- 38: 36(ivec2) ConstantComposite 31 37
- 40: TypeVector 30(int) 4
- 41: TypePointer Function 40(ivec4)
- 43: TypeImage 30(int) 2D sampled format:Unknown
- 44: TypePointer UniformConstant 43
- 45(g_tTex2di4): 44(ptr) Variable UniformConstant
- 48: TypeImage 30(int) 2D depth sampled format:Unknown
- 49: TypeSampledImage 48
- 53: 30(int) Constant 4294967295
- 54: 36(ivec2) ConstantComposite 31 53
- 56: TypeInt 32 0
- 57: TypeVector 56(int) 4
- 58: TypePointer Function 57(ivec4)
- 60: TypeImage 56(int) 2D sampled format:Unknown
- 61: TypePointer UniformConstant 60
- 62(g_tTex2du4): 61(ptr) Variable UniformConstant
- 65: TypeImage 56(int) 2D depth sampled format:Unknown
- 66: TypeSampledImage 65
- 70: 36(ivec2) ConstantComposite 31 31
- 78: 56(int) Constant 4
- 79: TypeArray 36(ivec2) 78
- 80: 79 ConstantComposite 38 38 38 38
- 88: 79 ConstantComposite 54 54 54 54
- 96: 79 ConstantComposite 70 70 70 70
- 98: TypePointer Function 8(PS_OUTPUT)
- 100: 6(float) Constant 1065353216
- 101: 7(fvec4) ConstantComposite 100 100 100 100
- 103: TypePointer Function 6(float)
- 110: TypePointer Output 7(fvec4)
- 111(Color): 110(ptr) Variable Output
- 114: TypePointer Output 6(float)
- 115(Depth): 114(ptr) Variable Output
- 118: TypeImage 6(float) 1D sampled format:Unknown
- 119: TypePointer UniformConstant 118
-120(g_tTex1df4a): 119(ptr) Variable UniformConstant
- 121(g_tTex1df4): 119(ptr) Variable UniformConstant
- 122: TypeImage 30(int) 1D sampled format:Unknown
- 123: TypePointer UniformConstant 122
- 124(g_tTex1di4): 123(ptr) Variable UniformConstant
- 125: TypeImage 56(int) 1D sampled format:Unknown
- 126: TypePointer UniformConstant 125
- 127(g_tTex1du4): 126(ptr) Variable UniformConstant
- 128: TypeImage 6(float) 3D sampled format:Unknown
- 129: TypePointer UniformConstant 128
- 130(g_tTex3df4): 129(ptr) Variable UniformConstant
- 131: TypeImage 30(int) 3D sampled format:Unknown
- 132: TypePointer UniformConstant 131
- 133(g_tTex3di4): 132(ptr) Variable UniformConstant
- 134: TypeImage 56(int) 3D sampled format:Unknown
- 135: TypePointer UniformConstant 134
- 136(g_tTex3du4): 135(ptr) Variable UniformConstant
- 137: TypeImage 6(float) Cube sampled format:Unknown
- 138: TypePointer UniformConstant 137
- 139(g_tTexcdf4): 138(ptr) Variable UniformConstant
- 140: TypeImage 30(int) Cube sampled format:Unknown
+ 22: TypeSampledImage 14
+ 24: TypeVector 6(float) 2
+ 25: TypeVector 6(float) 3
+ 26($Global): TypeStruct 6(float) 24(fvec2) 25(fvec3) 7(fvec4)
+ 27: TypePointer Uniform 26($Global)
+ 28: 27(ptr) Variable Uniform
+ 29: TypeInt 32 1
+ 30: 29(int) Constant 1
+ 31: TypePointer Uniform 24(fvec2)
+ 34: 6(float) Constant 1061158912
+ 35: TypeVector 29(int) 2
+ 36: 29(int) Constant 0
+ 37: 35(ivec2) ConstantComposite 30 36
+ 39: TypeVector 29(int) 4
+ 40: TypePointer Function 39(ivec4)
+ 42: TypeImage 29(int) 2D depth sampled format:Unknown
+ 43: TypePointer UniformConstant 42
+ 44(g_tTex2di4): 43(ptr) Variable UniformConstant
+ 47: TypeSampledImage 42
+ 51: 29(int) Constant 4294967295
+ 52: 35(ivec2) ConstantComposite 30 51
+ 54: TypeInt 32 0
+ 55: TypeVector 54(int) 4
+ 56: TypePointer Function 55(ivec4)
+ 58: TypeImage 54(int) 2D depth sampled format:Unknown
+ 59: TypePointer UniformConstant 58
+ 60(g_tTex2du4): 59(ptr) Variable UniformConstant
+ 63: TypeSampledImage 58
+ 67: 35(ivec2) ConstantComposite 30 30
+ 75: 54(int) Constant 4
+ 76: TypeArray 35(ivec2) 75
+ 77: 76 ConstantComposite 37 37 37 37
+ 85: 76 ConstantComposite 52 52 52 52
+ 93: 76 ConstantComposite 67 67 67 67
+ 116: TypePointer Function 8(PS_OUTPUT)
+ 118: 6(float) Constant 1065353216
+ 119: 7(fvec4) ConstantComposite 118 118 118 118
+ 121: TypePointer Function 6(float)
+ 128: TypePointer Output 7(fvec4)
+129(@entryPointOutput.Color): 128(ptr) Variable Output
+ 132: TypePointer Output 6(float)
+133(@entryPointOutput.Depth): 132(ptr) Variable Output
+ 136: TypeImage 6(float) 1D sampled format:Unknown
+ 137: TypePointer UniformConstant 136
+138(g_tTex1df4a): 137(ptr) Variable UniformConstant
+ 139(g_tTex1df4): 137(ptr) Variable UniformConstant
+ 140: TypeImage 29(int) 1D sampled format:Unknown
141: TypePointer UniformConstant 140
- 142(g_tTexcdi4): 141(ptr) Variable UniformConstant
- 143: TypeImage 56(int) Cube sampled format:Unknown
+ 142(g_tTex1di4): 141(ptr) Variable UniformConstant
+ 143: TypeImage 54(int) 1D sampled format:Unknown
144: TypePointer UniformConstant 143
- 145(g_tTexcdu4): 144(ptr) Variable UniformConstant
+ 145(g_tTex1du4): 144(ptr) Variable UniformConstant
+ 146: TypeImage 6(float) 3D sampled format:Unknown
+ 147: TypePointer UniformConstant 146
+ 148(g_tTex3df4): 147(ptr) Variable UniformConstant
+ 149: TypeImage 29(int) 3D sampled format:Unknown
+ 150: TypePointer UniformConstant 149
+ 151(g_tTex3di4): 150(ptr) Variable UniformConstant
+ 152: TypeImage 54(int) 3D sampled format:Unknown
+ 153: TypePointer UniformConstant 152
+ 154(g_tTex3du4): 153(ptr) Variable UniformConstant
+ 155: TypeImage 6(float) Cube sampled format:Unknown
+ 156: TypePointer UniformConstant 155
+ 157(g_tTexcdf4): 156(ptr) Variable UniformConstant
+ 158: TypeImage 29(int) Cube sampled format:Unknown
+ 159: TypePointer UniformConstant 158
+ 160(g_tTexcdi4): 159(ptr) Variable UniformConstant
+ 161: TypeImage 54(int) Cube sampled format:Unknown
+ 162: TypePointer UniformConstant 161
+ 163(g_tTexcdu4): 162(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
-108(flattenTemp): 98(ptr) Variable Function
- 109:8(PS_OUTPUT) FunctionCall 10(@main()
- Store 108(flattenTemp) 109
- 112: 12(ptr) AccessChain 108(flattenTemp) 37
- 113: 7(fvec4) Load 112
- Store 111(Color) 113
- 116: 103(ptr) AccessChain 108(flattenTemp) 31
- 117: 6(float) Load 116
- Store 115(Depth) 117
+126(flattenTemp): 116(ptr) Variable Function
+ 127:8(PS_OUTPUT) FunctionCall 10(@main()
+ Store 126(flattenTemp) 127
+ 130: 12(ptr) AccessChain 126(flattenTemp) 36
+ 131: 7(fvec4) Load 130
+ Store 129(@entryPointOutput.Color) 131
+ 134: 121(ptr) AccessChain 126(flattenTemp) 30
+ 135: 6(float) Load 134
+ Store 133(@entryPointOutput.Depth) 135
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(txval001): 12(ptr) Variable Function
- 42(txval011): 41(ptr) Variable Function
- 59(txval021): 58(ptr) Variable Function
- 72(txval004): 12(ptr) Variable Function
- 82(txval014): 41(ptr) Variable Function
- 90(txval024): 58(ptr) Variable Function
- 99(psout): 98(ptr) Variable Function
+ 41(txval011): 40(ptr) Variable Function
+ 57(txval021): 56(ptr) Variable Function
+ 69(txval004): 12(ptr) Variable Function
+ 79(txval014): 40(ptr) Variable Function
+ 87(txval024): 56(ptr) Variable Function
+ 95(txval401): 12(ptr) Variable Function
+ 102(txval411): 40(ptr) Variable Function
+ 109(txval421): 56(ptr) Variable Function
+ 117(psout): 116(ptr) Variable Function
17: 14 Load 16(g_tTex2df4)
21: 18 Load 20(g_sSampCmp)
- 24: 23 SampledImage 17 21
- 33: 32(ptr) AccessChain 29 31
- 34: 25(fvec2) Load 33
- 39: 7(fvec4) ImageDrefGather 24 34 35 ConstOffset 38
- Store 13(txval001) 39
- 46: 43 Load 45(g_tTex2di4)
- 47: 18 Load 20(g_sSampCmp)
- 50: 49 SampledImage 46 47
- 51: 32(ptr) AccessChain 29 31
- 52: 25(fvec2) Load 51
- 55: 40(ivec4) ImageDrefGather 50 52 35 ConstOffset 54
- Store 42(txval011) 55
- 63: 60 Load 62(g_tTex2du4)
- 64: 18 Load 20(g_sSampCmp)
- 67: 66 SampledImage 63 64
- 68: 32(ptr) AccessChain 29 31
- 69: 25(fvec2) Load 68
- 71: 57(ivec4) ImageDrefGather 67 69 35 ConstOffset 70
- Store 59(txval021) 71
- 73: 14 Load 16(g_tTex2df4)
- 74: 18 Load 20(g_sSampCmp)
- 75: 23 SampledImage 73 74
- 76: 32(ptr) AccessChain 29 31
- 77: 25(fvec2) Load 76
- 81: 7(fvec4) ImageDrefGather 75 77 35 ConstOffsets 80
- Store 72(txval004) 81
- 83: 43 Load 45(g_tTex2di4)
- 84: 18 Load 20(g_sSampCmp)
- 85: 49 SampledImage 83 84
- 86: 32(ptr) AccessChain 29 31
- 87: 25(fvec2) Load 86
- 89: 40(ivec4) ImageDrefGather 85 87 35 ConstOffsets 88
- Store 82(txval014) 89
- 91: 60 Load 62(g_tTex2du4)
- 92: 18 Load 20(g_sSampCmp)
- 93: 66 SampledImage 91 92
- 94: 32(ptr) AccessChain 29 31
- 95: 25(fvec2) Load 94
- 97: 57(ivec4) ImageDrefGather 93 95 35 ConstOffsets 96
- Store 90(txval024) 97
- 102: 12(ptr) AccessChain 99(psout) 37
- Store 102 101
- 104: 103(ptr) AccessChain 99(psout) 31
- Store 104 100
- 105:8(PS_OUTPUT) Load 99(psout)
- ReturnValue 105
+ 23: 22 SampledImage 17 21
+ 32: 31(ptr) AccessChain 28 30
+ 33: 24(fvec2) Load 32
+ 38: 7(fvec4) ImageDrefGather 23 33 34 ConstOffset 37
+ Store 13(txval001) 38
+ 45: 42 Load 44(g_tTex2di4)
+ 46: 18 Load 20(g_sSampCmp)
+ 48: 47 SampledImage 45 46
+ 49: 31(ptr) AccessChain 28 30
+ 50: 24(fvec2) Load 49
+ 53: 39(ivec4) ImageDrefGather 48 50 34 ConstOffset 52
+ Store 41(txval011) 53
+ 61: 58 Load 60(g_tTex2du4)
+ 62: 18 Load 20(g_sSampCmp)
+ 64: 63 SampledImage 61 62
+ 65: 31(ptr) AccessChain 28 30
+ 66: 24(fvec2) Load 65
+ 68: 55(ivec4) ImageDrefGather 64 66 34 ConstOffset 67
+ Store 57(txval021) 68
+ 70: 14 Load 16(g_tTex2df4)
+ 71: 18 Load 20(g_sSampCmp)
+ 72: 22 SampledImage 70 71
+ 73: 31(ptr) AccessChain 28 30
+ 74: 24(fvec2) Load 73
+ 78: 7(fvec4) ImageDrefGather 72 74 34 ConstOffsets 77
+ Store 69(txval004) 78
+ 80: 42 Load 44(g_tTex2di4)
+ 81: 18 Load 20(g_sSampCmp)
+ 82: 47 SampledImage 80 81
+ 83: 31(ptr) AccessChain 28 30
+ 84: 24(fvec2) Load 83
+ 86: 39(ivec4) ImageDrefGather 82 84 34 ConstOffsets 85
+ Store 79(txval014) 86
+ 88: 58 Load 60(g_tTex2du4)
+ 89: 18 Load 20(g_sSampCmp)
+ 90: 63 SampledImage 88 89
+ 91: 31(ptr) AccessChain 28 30
+ 92: 24(fvec2) Load 91
+ 94: 55(ivec4) ImageDrefGather 90 92 34 ConstOffsets 93
+ Store 87(txval024) 94
+ 96: 14 Load 16(g_tTex2df4)
+ 97: 18 Load 20(g_sSampCmp)
+ 98: 22 SampledImage 96 97
+ 99: 31(ptr) AccessChain 28 30
+ 100: 24(fvec2) Load 99
+ 101: 7(fvec4) ImageDrefGather 98 100 34 ConstOffset 37
+ Store 95(txval401) 101
+ 103: 42 Load 44(g_tTex2di4)
+ 104: 18 Load 20(g_sSampCmp)
+ 105: 47 SampledImage 103 104
+ 106: 31(ptr) AccessChain 28 30
+ 107: 24(fvec2) Load 106
+ 108: 39(ivec4) ImageDrefGather 105 107 34 ConstOffset 52
+ Store 102(txval411) 108
+ 110: 58 Load 60(g_tTex2du4)
+ 111: 18 Load 20(g_sSampCmp)
+ 112: 63 SampledImage 110 111
+ 113: 31(ptr) AccessChain 28 30
+ 114: 24(fvec2) Load 113
+ 115: 55(ivec4) ImageDrefGather 112 114 34 ConstOffset 67
+ Store 109(txval421) 115
+ 120: 12(ptr) AccessChain 117(psout) 36
+ Store 120 119
+ 122: 121(ptr) AccessChain 117(psout) 30
+ Store 122 118
+ 123:8(PS_OUTPUT) Load 117(psout)
+ ReturnValue 123
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.dx10.frag.out
index 30483db50ef..2fdf4f17b56 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.getdimensions.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -1112,13 +1112,13 @@ gl_FragCoord origin is upper left
0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:46 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:46 Color: direct index for structure ( temp 4-component vector of float)
0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
0:46 0 (const int)
0:46 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:46 Depth: direct index for structure ( temp float)
0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
@@ -1152,14 +1152,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
0:? 'g_tTex2dmsi4a' ( uniform itexture2DMSArray)
0:? 'g_tTex2dmsu4a' ( uniform utexture2DMSArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -2272,13 +2272,13 @@ gl_FragCoord origin is upper left
0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:46 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:46 Color: direct index for structure ( temp 4-component vector of float)
0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
0:46 0 (const int)
0:46 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:46 Depth: direct index for structure ( temp float)
0:46 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
@@ -2312,22 +2312,22 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
0:? 'g_tTex2dmsi4a' ( uniform itexture2DMSArray)
0:? 'g_tTex2dmsu4a' ( uniform utexture2DMSArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 550
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
- Capability ImageMSArray
Capability ImageQuery
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 540 544
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -2416,8 +2416,8 @@ gl_FragCoord origin is upper left
Name 514 "g_tTex2dmsu4a"
Name 526 "psout"
Name 537 "flattenTemp"
- Name 540 "Color"
- Name 544 "Depth"
+ Name 540 "@entryPointOutput.Color"
+ Name 544 "@entryPointOutput.Depth"
Name 549 "g_sSamp"
Decorate 17(g_tTex1df4) DescriptorSet 0
Decorate 17(g_tTex1df4) Binding 0
@@ -2447,8 +2447,8 @@ gl_FragCoord origin is upper left
Decorate 486(g_tTex2dmsf4a) DescriptorSet 0
Decorate 500(g_tTex2dmsi4a) DescriptorSet 0
Decorate 514(g_tTex2dmsu4a) DescriptorSet 0
- Decorate 540(Color) Location 0
- Decorate 544(Depth) BuiltIn FragDepth
+ Decorate 540(@entryPointOutput.Color) Location 0
+ Decorate 544(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 549(g_sSamp) DescriptorSet 0
Decorate 549(g_sSamp) Binding 0
2: TypeVoid
@@ -2557,9 +2557,9 @@ gl_FragCoord origin is upper left
531: 19(int) Constant 1
532: TypePointer Function 6(float)
539: TypePointer Output 7(fvec4)
- 540(Color): 539(ptr) Variable Output
+540(@entryPointOutput.Color): 539(ptr) Variable Output
543: TypePointer Output 6(float)
- 544(Depth): 543(ptr) Variable Output
+544(@entryPointOutput.Depth): 543(ptr) Variable Output
547: TypeSampler
548: TypePointer UniformConstant 547
549(g_sSamp): 548(ptr) Variable UniformConstant
@@ -2570,10 +2570,10 @@ gl_FragCoord origin is upper left
Store 537(flattenTemp) 538
541: 529(ptr) AccessChain 537(flattenTemp) 20
542: 7(fvec4) Load 541
- Store 540(Color) 542
+ Store 540(@entryPointOutput.Color) 542
545: 532(ptr) AccessChain 537(flattenTemp) 531
546: 6(float) Load 545
- Store 544(Depth) 546
+ Store 544(@entryPointOutput.Depth) 546
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.dx10.vert.out
index 2faa744dbd3..8c940fe7cc7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.dx10.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.dx10.vert.out
@@ -1,5 +1,5 @@
hlsl.getdimensions.dx10.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:11 Function Parameters:
@@ -45,7 +45,7 @@ Shader version: 450
0:? Sequence
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:11 Pos: direct index for structure ( temp 4-component vector of float)
0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:11 Constant:
@@ -53,13 +53,13 @@ Shader version: 450
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:? '@entryPointOutput' (layout( location=0) out structure{})
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:11 Function Parameters:
@@ -105,7 +105,7 @@ Shader version: 450
0:? Sequence
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:11 Pos: direct index for structure ( temp 4-component vector of float)
0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:11 Constant:
@@ -113,18 +113,19 @@ Shader version: 450
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:? '@entryPointOutput' (layout( location=0) out structure{})
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 51
+// Generated by (magic number): 80002
+// Id's are bound by 48
Capability Shader
Capability Sampled1D
Capability ImageQuery
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 42 50
+ EntryPoint Vertex 4 "main" 42
+ Source HLSL 500
Name 4 "main"
Name 8 "VS_OUTPUT"
MemberName 8(VS_OUTPUT) 0 "Pos"
@@ -135,16 +136,13 @@ Shader version: 450
Name 24 "sizeQueryTemp"
Name 29 "NumberOfLevelsU"
Name 33 "vsout"
- Name 42 "@entryPointOutput_Pos"
+ Name 42 "@entryPointOutput.Pos"
Name 47 "g_sSamp"
- Name 48 "VS_OUTPUT"
- Name 50 "@entryPointOutput"
Decorate 17(g_tTex1df4) DescriptorSet 0
Decorate 17(g_tTex1df4) Binding 0
- Decorate 42(@entryPointOutput_Pos) BuiltIn Position
+ Decorate 42(@entryPointOutput.Pos) BuiltIn Position
Decorate 47(g_sSamp) DescriptorSet 0
Decorate 47(g_sSamp) Binding 0
- Decorate 50(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -164,18 +162,15 @@ Shader version: 450
35: 7(fvec4) ConstantComposite 34 34 34 34
36: TypePointer Function 7(fvec4)
41: TypePointer Output 7(fvec4)
-42(@entryPointOutput_Pos): 41(ptr) Variable Output
+42(@entryPointOutput.Pos): 41(ptr) Variable Output
45: TypeSampler
46: TypePointer UniformConstant 45
47(g_sSamp): 46(ptr) Variable UniformConstant
- 48(VS_OUTPUT): TypeStruct
- 49: TypePointer Output 48(VS_OUTPUT)
-50(@entryPointOutput): 49(ptr) Variable Output
4(main): 2 Function None 3
5: Label
43:8(VS_OUTPUT) FunctionCall 10(@main()
44: 7(fvec4) CompositeExtract 43 0
- Store 42(@entryPointOutput_Pos) 44
+ Store 42(@entryPointOutput.Pos) 44
Return
FunctionEnd
10(@main():8(VS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
index 781ed906632..b3d3ce0ddb5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.getdimensions.rw.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:44 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -320,13 +320,13 @@ gl_FragCoord origin is upper left
0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:44 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:44 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:44 Color: direct index for structure ( temp 4-component vector of float)
0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:44 Constant:
0:44 0 (const int)
0:44 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:44 Depth: direct index for structure ( temp float)
0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:44 Constant:
@@ -352,14 +352,14 @@ gl_FragCoord origin is upper left
0:? 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer)
0:? 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:44 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -680,13 +680,13 @@ gl_FragCoord origin is upper left
0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:44 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:44 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:44 Color: direct index for structure ( temp 4-component vector of float)
0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:44 Constant:
0:44 0 (const int)
0:44 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:44 Depth: direct index for structure ( temp float)
0:44 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:44 Constant:
@@ -712,21 +712,22 @@ gl_FragCoord origin is upper left
0:? 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer)
0:? 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 232
Capability Shader
- Capability Sampled1D
- Capability SampledBuffer
+ Capability Image1D
+ Capability ImageBuffer
Capability ImageQuery
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 216 220
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -774,8 +775,8 @@ gl_FragCoord origin is upper left
Name 191 "g_tTex3du4"
Name 201 "psout"
Name 213 "flattenTemp"
- Name 216 "Color"
- Name 220 "Depth"
+ Name 216 "@entryPointOutput.Color"
+ Name 220 "@entryPointOutput.Depth"
Name 225 "g_sSamp"
Name 229 "$Global"
MemberName 229($Global) 0 "c1"
@@ -806,8 +807,8 @@ gl_FragCoord origin is upper left
Decorate 166(g_tTex3df4) DescriptorSet 0
Decorate 179(g_tTex3di4) DescriptorSet 0
Decorate 191(g_tTex3du4) DescriptorSet 0
- Decorate 216(Color) Location 0
- Decorate 220(Depth) BuiltIn FragDepth
+ Decorate 216(@entryPointOutput.Color) Location 0
+ Decorate 220(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 225(g_sSamp) DescriptorSet 0
Decorate 225(g_sSamp) Binding 0
MemberDecorate 229($Global) 0 Offset 0
@@ -898,9 +899,9 @@ gl_FragCoord origin is upper left
207: 23(int) Constant 1
208: TypePointer Function 6(float)
215: TypePointer Output 7(fvec4)
- 216(Color): 215(ptr) Variable Output
+216(@entryPointOutput.Color): 215(ptr) Variable Output
219: TypePointer Output 6(float)
- 220(Depth): 219(ptr) Variable Output
+220(@entryPointOutput.Depth): 219(ptr) Variable Output
223: TypeSampler
224: TypePointer UniformConstant 223
225(g_sSamp): 224(ptr) Variable UniformConstant
@@ -917,10 +918,10 @@ gl_FragCoord origin is upper left
Store 213(flattenTemp) 214
217: 205(ptr) AccessChain 213(flattenTemp) 202
218: 7(fvec4) Load 217
- Store 216(Color) 218
+ Store 216(@entryPointOutput.Color) 218
221: 208(ptr) AccessChain 213(flattenTemp) 207
222: 6(float) Load 221
- Store 220(Depth) 222
+ Store 220(@entryPointOutput.Depth) 222
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
index 57097a410f9..22d601d382a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
@@ -1,31 +1,241 @@
hlsl.getsampleposition.dx10.frag
-ERROR: 0:16: '' : unimplemented: GetSamplePosition
-ERROR: 0:17: '' : unimplemented: GetSamplePosition
-ERROR: 2 compilation errors. No code generated.
-
-
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
-ERROR: node is still EOpNull!
-0:13 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:? Sequence
+0:13 Function Definition: @main(i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 Function Parameters:
+0:13 'sample' ( in int)
0:? Sequence
0:16 Sequence
0:16 move second child to first child ( temp 2-component vector of float)
0:16 'r00' ( temp 2-component vector of float)
-0:16 ERROR: Bad aggregation op
- ( temp 2-component vector of float)
-0:16 'g_tTex2dmsf4' ( uniform texture2DMS)
-0:16 Constant:
-0:16 1 (const int)
+0:16 Sequence
+0:16 move second child to first child ( temp uint)
+0:16 '@sampleCount' ( temp uint)
+0:16 imageQuerySamples ( temp uint)
+0:16 'g_tTex2dmsf4' ( uniform texture2DMS)
+0:16 Test condition and select ( temp 2-component vector of float)
+0:16 Condition
+0:16 Compare Equal ( temp bool)
+0:16 '@sampleCount' ( temp uint)
+0:16 Constant:
+0:16 2 (const int)
+0:16 true case
+0:16 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.250000
+0:? 0.250000
+0:? -0.250000
+0:? -0.250000
+0:16 'sample' ( in int)
+0:16 false case
+0:16 Test condition and select ( temp 2-component vector of float)
+0:16 Condition
+0:16 Compare Equal ( temp bool)
+0:16 '@sampleCount' ( temp uint)
+0:16 Constant:
+0:16 4 (const int)
+0:16 true case
+0:16 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? -0.125000
+0:? -0.375000
+0:? 0.375000
+0:? -0.125000
+0:? -0.375000
+0:? 0.125000
+0:? 0.125000
+0:? 0.375000
+0:16 'sample' ( in int)
+0:16 false case
+0:16 Test condition and select ( temp 2-component vector of float)
+0:16 Condition
+0:16 Compare Equal ( temp bool)
+0:16 '@sampleCount' ( temp uint)
+0:16 Constant:
+0:16 8 (const int)
+0:16 true case
+0:16 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.062500
+0:? -0.187500
+0:? -0.062500
+0:? 0.187500
+0:? 0.312500
+0:? 0.062500
+0:? -0.187500
+0:? -0.312500
+0:? -0.312500
+0:? 0.312500
+0:? -0.437500
+0:? -0.062500
+0:? 0.187500
+0:? 0.437500
+0:? 0.437500
+0:? -0.437500
+0:16 'sample' ( in int)
+0:16 false case
+0:16 Test condition and select ( temp 2-component vector of float)
+0:16 Condition
+0:16 Compare Equal ( temp bool)
+0:16 '@sampleCount' ( temp uint)
+0:16 Constant:
+0:16 16 (const int)
+0:16 true case
+0:16 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.062500
+0:? 0.062500
+0:? -0.062500
+0:? -0.187500
+0:? -0.187500
+0:? 0.125000
+0:? 0.250000
+0:? -0.062500
+0:? -0.312500
+0:? -0.125000
+0:? 0.125000
+0:? 0.312500
+0:? 0.312500
+0:? 0.187500
+0:? 0.187500
+0:? -0.312500
+0:? -0.125000
+0:? 0.375000
+0:? 0.000000
+0:? -0.437500
+0:? -0.250000
+0:? -0.375000
+0:? -0.375000
+0:? 0.250000
+0:? -0.500000
+0:? 0.000000
+0:? 0.437500
+0:? -0.250000
+0:? 0.375000
+0:? 0.437500
+0:? -0.437500
+0:? -0.500000
+0:16 'sample' ( in int)
+0:16 false case
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
0:17 Sequence
0:17 move second child to first child ( temp 2-component vector of float)
0:17 'r01' ( temp 2-component vector of float)
-0:17 ERROR: Bad aggregation op
- ( temp 2-component vector of float)
-0:17 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
-0:17 Constant:
-0:17 2 (const int)
+0:17 Sequence
+0:17 move second child to first child ( temp uint)
+0:17 '@sampleCount' ( temp uint)
+0:17 imageQuerySamples ( temp uint)
+0:17 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
+0:17 Test condition and select ( temp 2-component vector of float)
+0:17 Condition
+0:17 Compare Equal ( temp bool)
+0:17 '@sampleCount' ( temp uint)
+0:17 Constant:
+0:17 2 (const int)
+0:17 true case
+0:17 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.250000
+0:? 0.250000
+0:? -0.250000
+0:? -0.250000
+0:17 'sample' ( in int)
+0:17 false case
+0:17 Test condition and select ( temp 2-component vector of float)
+0:17 Condition
+0:17 Compare Equal ( temp bool)
+0:17 '@sampleCount' ( temp uint)
+0:17 Constant:
+0:17 4 (const int)
+0:17 true case
+0:17 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? -0.125000
+0:? -0.375000
+0:? 0.375000
+0:? -0.125000
+0:? -0.375000
+0:? 0.125000
+0:? 0.125000
+0:? 0.375000
+0:17 'sample' ( in int)
+0:17 false case
+0:17 Test condition and select ( temp 2-component vector of float)
+0:17 Condition
+0:17 Compare Equal ( temp bool)
+0:17 '@sampleCount' ( temp uint)
+0:17 Constant:
+0:17 8 (const int)
+0:17 true case
+0:17 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.062500
+0:? -0.187500
+0:? -0.062500
+0:? 0.187500
+0:? 0.312500
+0:? 0.062500
+0:? -0.187500
+0:? -0.312500
+0:? -0.312500
+0:? 0.312500
+0:? -0.437500
+0:? -0.062500
+0:? 0.187500
+0:? 0.437500
+0:? 0.437500
+0:? -0.437500
+0:17 'sample' ( in int)
+0:17 false case
+0:17 Test condition and select ( temp 2-component vector of float)
+0:17 Condition
+0:17 Compare Equal ( temp bool)
+0:17 '@sampleCount' ( temp uint)
+0:17 Constant:
+0:17 16 (const int)
+0:17 true case
+0:17 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.062500
+0:? 0.062500
+0:? -0.062500
+0:? -0.187500
+0:? -0.187500
+0:? 0.125000
+0:? 0.250000
+0:? -0.062500
+0:? -0.312500
+0:? -0.125000
+0:? 0.125000
+0:? 0.312500
+0:? 0.312500
+0:? 0.187500
+0:? 0.187500
+0:? -0.312500
+0:? -0.125000
+0:? 0.375000
+0:? 0.000000
+0:? -0.437500
+0:? -0.250000
+0:? -0.375000
+0:? -0.375000
+0:? 0.250000
+0:? -0.500000
+0:? 0.000000
+0:? 0.437500
+0:? -0.250000
+0:? 0.375000
+0:? 0.437500
+0:? -0.437500
+0:? -0.500000
+0:17 'sample' ( in int)
+0:17 false case
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
0:19 move second child to first child ( temp 4-component vector of float)
0:19 Color: direct index for structure ( temp 4-component vector of float)
0:19 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -48,18 +258,22 @@ ERROR: node is still EOpNull!
0:13 Function Definition: main( ( temp void)
0:13 Function Parameters:
0:? Sequence
+0:13 move second child to first child ( temp int)
+0:? 'sample' ( temp int)
+0:? 'sample' (layout( location=0) flat in int)
0:13 Sequence
0:13 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:13 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:13 Function Call: @main(i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:? 'sample' ( temp int)
0:13 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:13 Color: direct index for structure ( temp 4-component vector of float)
0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 Constant:
0:13 0 (const int)
0:13 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:13 Depth: direct index for structure ( temp float)
0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 Constant:
@@ -68,35 +282,251 @@ ERROR: node is still EOpNull!
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
0:? 'g_tTex2dmsf4' ( uniform texture2DMS)
0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
+0:? 'sample' (layout( location=0) flat in int)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
-ERROR: node is still EOpNull!
-0:13 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:? Sequence
+0:13 Function Definition: @main(i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 Function Parameters:
+0:13 'sample' ( in int)
0:? Sequence
0:16 Sequence
0:16 move second child to first child ( temp 2-component vector of float)
0:16 'r00' ( temp 2-component vector of float)
-0:16 ERROR: Bad aggregation op
- ( temp 2-component vector of float)
-0:16 'g_tTex2dmsf4' ( uniform texture2DMS)
-0:16 Constant:
-0:16 1 (const int)
+0:16 Sequence
+0:16 move second child to first child ( temp uint)
+0:16 '@sampleCount' ( temp uint)
+0:16 imageQuerySamples ( temp uint)
+0:16 'g_tTex2dmsf4' ( uniform texture2DMS)
+0:16 Test condition and select ( temp 2-component vector of float)
+0:16 Condition
+0:16 Compare Equal ( temp bool)
+0:16 '@sampleCount' ( temp uint)
+0:16 Constant:
+0:16 2 (const int)
+0:16 true case
+0:16 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.250000
+0:? 0.250000
+0:? -0.250000
+0:? -0.250000
+0:16 'sample' ( in int)
+0:16 false case
+0:16 Test condition and select ( temp 2-component vector of float)
+0:16 Condition
+0:16 Compare Equal ( temp bool)
+0:16 '@sampleCount' ( temp uint)
+0:16 Constant:
+0:16 4 (const int)
+0:16 true case
+0:16 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? -0.125000
+0:? -0.375000
+0:? 0.375000
+0:? -0.125000
+0:? -0.375000
+0:? 0.125000
+0:? 0.125000
+0:? 0.375000
+0:16 'sample' ( in int)
+0:16 false case
+0:16 Test condition and select ( temp 2-component vector of float)
+0:16 Condition
+0:16 Compare Equal ( temp bool)
+0:16 '@sampleCount' ( temp uint)
+0:16 Constant:
+0:16 8 (const int)
+0:16 true case
+0:16 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.062500
+0:? -0.187500
+0:? -0.062500
+0:? 0.187500
+0:? 0.312500
+0:? 0.062500
+0:? -0.187500
+0:? -0.312500
+0:? -0.312500
+0:? 0.312500
+0:? -0.437500
+0:? -0.062500
+0:? 0.187500
+0:? 0.437500
+0:? 0.437500
+0:? -0.437500
+0:16 'sample' ( in int)
+0:16 false case
+0:16 Test condition and select ( temp 2-component vector of float)
+0:16 Condition
+0:16 Compare Equal ( temp bool)
+0:16 '@sampleCount' ( temp uint)
+0:16 Constant:
+0:16 16 (const int)
+0:16 true case
+0:16 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.062500
+0:? 0.062500
+0:? -0.062500
+0:? -0.187500
+0:? -0.187500
+0:? 0.125000
+0:? 0.250000
+0:? -0.062500
+0:? -0.312500
+0:? -0.125000
+0:? 0.125000
+0:? 0.312500
+0:? 0.312500
+0:? 0.187500
+0:? 0.187500
+0:? -0.312500
+0:? -0.125000
+0:? 0.375000
+0:? 0.000000
+0:? -0.437500
+0:? -0.250000
+0:? -0.375000
+0:? -0.375000
+0:? 0.250000
+0:? -0.500000
+0:? 0.000000
+0:? 0.437500
+0:? -0.250000
+0:? 0.375000
+0:? 0.437500
+0:? -0.437500
+0:? -0.500000
+0:16 'sample' ( in int)
+0:16 false case
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
0:17 Sequence
0:17 move second child to first child ( temp 2-component vector of float)
0:17 'r01' ( temp 2-component vector of float)
-0:17 ERROR: Bad aggregation op
- ( temp 2-component vector of float)
-0:17 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
-0:17 Constant:
-0:17 2 (const int)
+0:17 Sequence
+0:17 move second child to first child ( temp uint)
+0:17 '@sampleCount' ( temp uint)
+0:17 imageQuerySamples ( temp uint)
+0:17 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
+0:17 Test condition and select ( temp 2-component vector of float)
+0:17 Condition
+0:17 Compare Equal ( temp bool)
+0:17 '@sampleCount' ( temp uint)
+0:17 Constant:
+0:17 2 (const int)
+0:17 true case
+0:17 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.250000
+0:? 0.250000
+0:? -0.250000
+0:? -0.250000
+0:17 'sample' ( in int)
+0:17 false case
+0:17 Test condition and select ( temp 2-component vector of float)
+0:17 Condition
+0:17 Compare Equal ( temp bool)
+0:17 '@sampleCount' ( temp uint)
+0:17 Constant:
+0:17 4 (const int)
+0:17 true case
+0:17 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? -0.125000
+0:? -0.375000
+0:? 0.375000
+0:? -0.125000
+0:? -0.375000
+0:? 0.125000
+0:? 0.125000
+0:? 0.375000
+0:17 'sample' ( in int)
+0:17 false case
+0:17 Test condition and select ( temp 2-component vector of float)
+0:17 Condition
+0:17 Compare Equal ( temp bool)
+0:17 '@sampleCount' ( temp uint)
+0:17 Constant:
+0:17 8 (const int)
+0:17 true case
+0:17 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.062500
+0:? -0.187500
+0:? -0.062500
+0:? 0.187500
+0:? 0.312500
+0:? 0.062500
+0:? -0.187500
+0:? -0.312500
+0:? -0.312500
+0:? 0.312500
+0:? -0.437500
+0:? -0.062500
+0:? 0.187500
+0:? 0.437500
+0:? 0.437500
+0:? -0.437500
+0:17 'sample' ( in int)
+0:17 false case
+0:17 Test condition and select ( temp 2-component vector of float)
+0:17 Condition
+0:17 Compare Equal ( temp bool)
+0:17 '@sampleCount' ( temp uint)
+0:17 Constant:
+0:17 16 (const int)
+0:17 true case
+0:17 indirect index ( temp 2-component vector of float)
+0:? Constant:
+0:? 0.062500
+0:? 0.062500
+0:? -0.062500
+0:? -0.187500
+0:? -0.187500
+0:? 0.125000
+0:? 0.250000
+0:? -0.062500
+0:? -0.312500
+0:? -0.125000
+0:? 0.125000
+0:? 0.312500
+0:? 0.312500
+0:? 0.187500
+0:? 0.187500
+0:? -0.312500
+0:? -0.125000
+0:? 0.375000
+0:? 0.000000
+0:? -0.437500
+0:? -0.250000
+0:? -0.375000
+0:? -0.375000
+0:? 0.250000
+0:? -0.500000
+0:? 0.000000
+0:? 0.437500
+0:? -0.250000
+0:? 0.375000
+0:? 0.437500
+0:? -0.437500
+0:? -0.500000
+0:17 'sample' ( in int)
+0:17 false case
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
0:19 move second child to first child ( temp 4-component vector of float)
0:19 Color: direct index for structure ( temp 4-component vector of float)
0:19 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -119,18 +549,22 @@ ERROR: node is still EOpNull!
0:13 Function Definition: main( ( temp void)
0:13 Function Parameters:
0:? Sequence
+0:13 move second child to first child ( temp int)
+0:? 'sample' ( temp int)
+0:? 'sample' (layout( location=0) flat in int)
0:13 Sequence
0:13 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:13 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:13 Function Call: @main(i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:? 'sample' ( temp int)
0:13 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:13 Color: direct index for structure ( temp 4-component vector of float)
0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 Constant:
0:13 0 (const int)
0:13 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:13 Depth: direct index for structure ( temp float)
0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 Constant:
@@ -139,7 +573,342 @@ ERROR: node is still EOpNull!
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
0:? 'g_tTex2dmsf4' ( uniform texture2DMS)
0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
+0:? 'sample' (layout( location=0) flat in int)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 221
-SPIR-V is not generated for failed compile or link
+ Capability Shader
+ Capability ImageQuery
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 204 211 215
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 10 "PS_OUTPUT"
+ MemberName 10(PS_OUTPUT) 0 "Color"
+ MemberName 10(PS_OUTPUT) 1 "Depth"
+ Name 13 "@main(i1;"
+ Name 12 "sample"
+ Name 17 "r00"
+ Name 20 "@sampleCount"
+ Name 23 "g_tTex2dmsf4"
+ Name 42 "indexable"
+ Name 65 "indexable"
+ Name 96 "indexable"
+ Name 129 "indexable"
+ Name 138 "r01"
+ Name 139 "@sampleCount"
+ Name 142 "g_tTex2dmsf4a"
+ Name 151 "indexable"
+ Name 161 "indexable"
+ Name 171 "indexable"
+ Name 181 "indexable"
+ Name 190 "psout"
+ Name 202 "sample"
+ Name 204 "sample"
+ Name 206 "flattenTemp"
+ Name 207 "param"
+ Name 211 "@entryPointOutput.Color"
+ Name 215 "@entryPointOutput.Depth"
+ Name 220 "g_sSamp"
+ Decorate 23(g_tTex2dmsf4) DescriptorSet 0
+ Decorate 142(g_tTex2dmsf4a) DescriptorSet 0
+ Decorate 204(sample) Flat
+ Decorate 204(sample) Location 0
+ Decorate 211(@entryPointOutput.Color) Location 0
+ Decorate 215(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 220(g_sSamp) DescriptorSet 0
+ Decorate 220(g_sSamp) Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypePointer Function 6(int)
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 4
+ 10(PS_OUTPUT): TypeStruct 9(fvec4) 8(float)
+ 11: TypeFunction 10(PS_OUTPUT) 7(ptr)
+ 15: TypeVector 8(float) 2
+ 16: TypePointer Function 15(fvec2)
+ 18: TypeInt 32 0
+ 19: TypePointer Function 18(int)
+ 21: TypeImage 8(float) 2D multi-sampled sampled format:Unknown
+ 22: TypePointer UniformConstant 21
+23(g_tTex2dmsf4): 22(ptr) Variable UniformConstant
+ 28: 6(int) Constant 2
+ 29: TypeBool
+ 33: 18(int) Constant 2
+ 34: TypeArray 15(fvec2) 33
+ 35: 8(float) Constant 1048576000
+ 36: 15(fvec2) ConstantComposite 35 35
+ 37: 8(float) Constant 3196059648
+ 38: 15(fvec2) ConstantComposite 37 37
+ 39: 34 ConstantComposite 36 38
+ 41: TypePointer Function 34
+ 48: 6(int) Constant 4
+ 52: 18(int) Constant 4
+ 53: TypeArray 15(fvec2) 52
+ 54: 8(float) Constant 3187671040
+ 55: 8(float) Constant 3200253952
+ 56: 15(fvec2) ConstantComposite 54 55
+ 57: 8(float) Constant 1052770304
+ 58: 15(fvec2) ConstantComposite 57 54
+ 59: 8(float) Constant 1040187392
+ 60: 15(fvec2) ConstantComposite 55 59
+ 61: 15(fvec2) ConstantComposite 59 57
+ 62: 53 ConstantComposite 56 58 60 61
+ 64: TypePointer Function 53
+ 71: 6(int) Constant 8
+ 75: 18(int) Constant 8
+ 76: TypeArray 15(fvec2) 75
+ 77: 8(float) Constant 1031798784
+ 78: 8(float) Constant 3191865344
+ 79: 15(fvec2) ConstantComposite 77 78
+ 80: 8(float) Constant 3179282432
+ 81: 8(float) Constant 1044381696
+ 82: 15(fvec2) ConstantComposite 80 81
+ 83: 8(float) Constant 1050673152
+ 84: 15(fvec2) ConstantComposite 83 77
+ 85: 8(float) Constant 3198156800
+ 86: 15(fvec2) ConstantComposite 78 85
+ 87: 15(fvec2) ConstantComposite 85 83
+ 88: 8(float) Constant 3202351104
+ 89: 15(fvec2) ConstantComposite 88 80
+ 90: 8(float) Constant 1054867456
+ 91: 15(fvec2) ConstantComposite 81 90
+ 92: 15(fvec2) ConstantComposite 90 88
+ 93: 76 ConstantComposite 79 82 84 86 87 89 91 92
+ 95: TypePointer Function 76
+ 102: 6(int) Constant 16
+ 106: 18(int) Constant 16
+ 107: TypeArray 15(fvec2) 106
+ 108: 15(fvec2) ConstantComposite 77 77
+ 109: 15(fvec2) ConstantComposite 80 78
+ 110: 15(fvec2) ConstantComposite 78 59
+ 111: 15(fvec2) ConstantComposite 35 80
+ 112: 15(fvec2) ConstantComposite 85 54
+ 113: 15(fvec2) ConstantComposite 59 83
+ 114: 15(fvec2) ConstantComposite 83 81
+ 115: 15(fvec2) ConstantComposite 81 85
+ 116: 15(fvec2) ConstantComposite 54 57
+ 117: 8(float) Constant 0
+ 118: 15(fvec2) ConstantComposite 117 88
+ 119: 15(fvec2) ConstantComposite 37 55
+ 120: 15(fvec2) ConstantComposite 55 35
+ 121: 8(float) Constant 3204448256
+ 122: 15(fvec2) ConstantComposite 121 117
+ 123: 15(fvec2) ConstantComposite 90 37
+ 124: 15(fvec2) ConstantComposite 57 90
+ 125: 15(fvec2) ConstantComposite 88 121
+ 126: 107 ConstantComposite 108 109 110 111 112 113 114 115 116 118 119 120 122 123 124 125
+ 128: TypePointer Function 107
+ 133: 15(fvec2) ConstantComposite 117 117
+ 140: TypeImage 8(float) 2D array multi-sampled sampled format:Unknown
+ 141: TypePointer UniformConstant 140
+142(g_tTex2dmsf4a): 141(ptr) Variable UniformConstant
+ 189: TypePointer Function 10(PS_OUTPUT)
+ 191: 6(int) Constant 0
+ 192: 8(float) Constant 1065353216
+ 193: 9(fvec4) ConstantComposite 192 192 192 192
+ 194: TypePointer Function 9(fvec4)
+ 196: 6(int) Constant 1
+ 197: TypePointer Function 8(float)
+ 203: TypePointer Input 6(int)
+ 204(sample): 203(ptr) Variable Input
+ 210: TypePointer Output 9(fvec4)
+211(@entryPointOutput.Color): 210(ptr) Variable Output
+ 214: TypePointer Output 8(float)
+215(@entryPointOutput.Depth): 214(ptr) Variable Output
+ 218: TypeSampler
+ 219: TypePointer UniformConstant 218
+ 220(g_sSamp): 219(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 202(sample): 7(ptr) Variable Function
+206(flattenTemp): 189(ptr) Variable Function
+ 207(param): 7(ptr) Variable Function
+ 205: 6(int) Load 204(sample)
+ Store 202(sample) 205
+ 208: 6(int) Load 202(sample)
+ Store 207(param) 208
+ 209:10(PS_OUTPUT) FunctionCall 13(@main(i1;) 207(param)
+ Store 206(flattenTemp) 209
+ 212: 194(ptr) AccessChain 206(flattenTemp) 191
+ 213: 9(fvec4) Load 212
+ Store 211(@entryPointOutput.Color) 213
+ 216: 197(ptr) AccessChain 206(flattenTemp) 196
+ 217: 8(float) Load 216
+ Store 215(@entryPointOutput.Depth) 217
+ Return
+ FunctionEnd
+ 13(@main(i1;):10(PS_OUTPUT) Function None 11
+ 12(sample): 7(ptr) FunctionParameter
+ 14: Label
+ 17(r00): 16(ptr) Variable Function
+20(@sampleCount): 19(ptr) Variable Function
+ 26: 16(ptr) Variable Function
+ 42(indexable): 41(ptr) Variable Function
+ 46: 16(ptr) Variable Function
+ 65(indexable): 64(ptr) Variable Function
+ 69: 16(ptr) Variable Function
+ 96(indexable): 95(ptr) Variable Function
+ 100: 16(ptr) Variable Function
+ 129(indexable): 128(ptr) Variable Function
+ 138(r01): 16(ptr) Variable Function
+139(@sampleCount): 19(ptr) Variable Function
+ 145: 16(ptr) Variable Function
+ 151(indexable): 41(ptr) Variable Function
+ 155: 16(ptr) Variable Function
+ 161(indexable): 64(ptr) Variable Function
+ 165: 16(ptr) Variable Function
+ 171(indexable): 95(ptr) Variable Function
+ 175: 16(ptr) Variable Function
+ 181(indexable): 128(ptr) Variable Function
+ 190(psout): 189(ptr) Variable Function
+ 24: 21 Load 23(g_tTex2dmsf4)
+ 25: 18(int) ImageQuerySamples 24
+ Store 20(@sampleCount) 25
+ 27: 18(int) Load 20(@sampleCount)
+ 30: 29(bool) IEqual 27 28
+ SelectionMerge 32 None
+ BranchConditional 30 31 45
+ 31: Label
+ 40: 6(int) Load 12(sample)
+ Store 42(indexable) 39
+ 43: 16(ptr) AccessChain 42(indexable) 40
+ 44: 15(fvec2) Load 43
+ Store 26 44
+ Branch 32
+ 45: Label
+ 47: 18(int) Load 20(@sampleCount)
+ 49: 29(bool) IEqual 47 48
+ SelectionMerge 51 None
+ BranchConditional 49 50 68
+ 50: Label
+ 63: 6(int) Load 12(sample)
+ Store 65(indexable) 62
+ 66: 16(ptr) AccessChain 65(indexable) 63
+ 67: 15(fvec2) Load 66
+ Store 46 67
+ Branch 51
+ 68: Label
+ 70: 18(int) Load 20(@sampleCount)
+ 72: 29(bool) IEqual 70 71
+ SelectionMerge 74 None
+ BranchConditional 72 73 99
+ 73: Label
+ 94: 6(int) Load 12(sample)
+ Store 96(indexable) 93
+ 97: 16(ptr) AccessChain 96(indexable) 94
+ 98: 15(fvec2) Load 97
+ Store 69 98
+ Branch 74
+ 99: Label
+ 101: 18(int) Load 20(@sampleCount)
+ 103: 29(bool) IEqual 101 102
+ SelectionMerge 105 None
+ BranchConditional 103 104 132
+ 104: Label
+ 127: 6(int) Load 12(sample)
+ Store 129(indexable) 126
+ 130: 16(ptr) AccessChain 129(indexable) 127
+ 131: 15(fvec2) Load 130
+ Store 100 131
+ Branch 105
+ 132: Label
+ Store 100 133
+ Branch 105
+ 105: Label
+ 134: 15(fvec2) Load 100
+ Store 69 134
+ Branch 74
+ 74: Label
+ 135: 15(fvec2) Load 69
+ Store 46 135
+ Branch 51
+ 51: Label
+ 136: 15(fvec2) Load 46
+ Store 26 136
+ Branch 32
+ 32: Label
+ 137: 15(fvec2) Load 26
+ Store 17(r00) 137
+ 143: 140 Load 142(g_tTex2dmsf4a)
+ 144: 18(int) ImageQuerySamples 143
+ Store 139(@sampleCount) 144
+ 146: 18(int) Load 139(@sampleCount)
+ 147: 29(bool) IEqual 146 28
+ SelectionMerge 149 None
+ BranchConditional 147 148 154
+ 148: Label
+ 150: 6(int) Load 12(sample)
+ Store 151(indexable) 39
+ 152: 16(ptr) AccessChain 151(indexable) 150
+ 153: 15(fvec2) Load 152
+ Store 145 153
+ Branch 149
+ 154: Label
+ 156: 18(int) Load 139(@sampleCount)
+ 157: 29(bool) IEqual 156 48
+ SelectionMerge 159 None
+ BranchConditional 157 158 164
+ 158: Label
+ 160: 6(int) Load 12(sample)
+ Store 161(indexable) 62
+ 162: 16(ptr) AccessChain 161(indexable) 160
+ 163: 15(fvec2) Load 162
+ Store 155 163
+ Branch 159
+ 164: Label
+ 166: 18(int) Load 139(@sampleCount)
+ 167: 29(bool) IEqual 166 71
+ SelectionMerge 169 None
+ BranchConditional 167 168 174
+ 168: Label
+ 170: 6(int) Load 12(sample)
+ Store 171(indexable) 93
+ 172: 16(ptr) AccessChain 171(indexable) 170
+ 173: 15(fvec2) Load 172
+ Store 165 173
+ Branch 169
+ 174: Label
+ 176: 18(int) Load 139(@sampleCount)
+ 177: 29(bool) IEqual 176 102
+ SelectionMerge 179 None
+ BranchConditional 177 178 184
+ 178: Label
+ 180: 6(int) Load 12(sample)
+ Store 181(indexable) 126
+ 182: 16(ptr) AccessChain 181(indexable) 180
+ 183: 15(fvec2) Load 182
+ Store 175 183
+ Branch 179
+ 184: Label
+ Store 175 133
+ Branch 179
+ 179: Label
+ 185: 15(fvec2) Load 175
+ Store 165 185
+ Branch 169
+ 169: Label
+ 186: 15(fvec2) Load 165
+ Store 155 186
+ Branch 159
+ 159: Label
+ 187: 15(fvec2) Load 155
+ Store 145 187
+ Branch 149
+ 149: Label
+ 188: 15(fvec2) Load 145
+ Store 138(r01) 188
+ 195: 194(ptr) AccessChain 190(psout) 191
+ Store 195 193
+ 198: 197(ptr) AccessChain 190(psout) 196
+ Store 198 192
+ 199:10(PS_OUTPUT) Load 190(psout)
+ ReturnValue 199
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.global-const-init.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.global-const-init.frag.out
new file mode 100644
index 00000000000..c76f54aaa5a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.global-const-init.frag.out
@@ -0,0 +1,178 @@
+hlsl.global-const-init.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6 Sequence
+0:6 move second child to first child ( temp 4-component vector of float)
+0:6 'bar' ( global 4-component vector of float)
+0:6 foo: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:6 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo})
+0:6 Constant:
+0:6 0 (const uint)
+0:8 Sequence
+0:8 move second child to first child ( temp 2-element array of 2-component vector of float)
+0:8 'a1' ( global 2-element array of 2-component vector of float)
+0:8 Construct vec2 ( temp 2-element array of 2-component vector of float)
+0:8 Constant:
+0:8 1.000000
+0:8 2.000000
+0:8 Construct vec2 ( temp 2-component vector of float)
+0:8 direct index ( temp float)
+0:8 foo: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:8 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo})
+0:8 Constant:
+0:8 0 (const uint)
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 4.000000
+0:12 Function Definition: @main( ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:? Sequence
+0:13 Branch: Return with expression
+0:13 'bar' ( global 4-component vector of float)
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:12 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo})
+0:? 'bar' ( global 4-component vector of float)
+0:? 'a1' ( global 2-element array of 2-component vector of float)
+0:? 'a2' ( const 2-element array of 2-component vector of float)
+0:? 5.000000
+0:? 6.000000
+0:? 7.000000
+0:? 8.000000
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6 Sequence
+0:6 move second child to first child ( temp 4-component vector of float)
+0:6 'bar' ( global 4-component vector of float)
+0:6 foo: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:6 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo})
+0:6 Constant:
+0:6 0 (const uint)
+0:8 Sequence
+0:8 move second child to first child ( temp 2-element array of 2-component vector of float)
+0:8 'a1' ( global 2-element array of 2-component vector of float)
+0:8 Construct vec2 ( temp 2-element array of 2-component vector of float)
+0:8 Constant:
+0:8 1.000000
+0:8 2.000000
+0:8 Construct vec2 ( temp 2-component vector of float)
+0:8 direct index ( temp float)
+0:8 foo: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:8 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo})
+0:8 Constant:
+0:8 0 (const uint)
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 4.000000
+0:12 Function Definition: @main( ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:? Sequence
+0:13 Branch: Return with expression
+0:13 'bar' ( global 4-component vector of float)
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:12 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float foo})
+0:? 'bar' ( global 4-component vector of float)
+0:? 'a1' ( global 2-element array of 2-component vector of float)
+0:? 'a2' ( const 2-element array of 2-component vector of float)
+0:? 5.000000
+0:? 6.000000
+0:? 7.000000
+0:? 8.000000
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 50
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 41
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 12 "bar"
+ Name 13 "CB"
+ MemberName 13(CB) 0 "foo"
+ Name 15 ""
+ Name 26 "a1"
+ Name 41 "@entryPointOutput"
+ MemberDecorate 13(CB) 0 Offset 0
+ Decorate 13(CB) Block
+ Decorate 15 DescriptorSet 0
+ Decorate 41(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypePointer Private 7(fvec4)
+ 12(bar): 11(ptr) Variable Private
+ 13(CB): TypeStruct 7(fvec4)
+ 14: TypePointer Uniform 13(CB)
+ 15: 14(ptr) Variable Uniform
+ 16: TypeInt 32 1
+ 17: 16(int) Constant 0
+ 18: TypePointer Uniform 7(fvec4)
+ 21: TypeVector 6(float) 2
+ 22: TypeInt 32 0
+ 23: 22(int) Constant 2
+ 24: TypeArray 21(fvec2) 23
+ 25: TypePointer Private 24
+ 26(a1): 25(ptr) Variable Private
+ 27: 6(float) Constant 1065353216
+ 28: 6(float) Constant 1073741824
+ 29: 21(fvec2) ConstantComposite 27 28
+ 30: 22(int) Constant 0
+ 31: TypePointer Uniform 6(float)
+ 34: 6(float) Constant 1082130432
+ 40: TypePointer Output 7(fvec4)
+41(@entryPointOutput): 40(ptr) Variable Output
+ 43: 6(float) Constant 1084227584
+ 44: 6(float) Constant 1086324736
+ 45: 21(fvec2) ConstantComposite 43 44
+ 46: 6(float) Constant 1088421888
+ 47: 6(float) Constant 1090519040
+ 48: 21(fvec2) ConstantComposite 46 47
+ 49: 24 ConstantComposite 45 48
+ 4(main): 2 Function None 3
+ 5: Label
+ 19: 18(ptr) AccessChain 15 17
+ 20: 7(fvec4) Load 19
+ Store 12(bar) 20
+ 32: 31(ptr) AccessChain 15 17 30
+ 33: 6(float) Load 32
+ 35: 21(fvec2) CompositeConstruct 33 34
+ 36: 24 CompositeConstruct 29 35
+ Store 26(a1) 36
+ 42: 7(fvec4) FunctionCall 9(@main()
+ Store 41(@entryPointOutput) 42
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 37: 7(fvec4) Load 12(bar)
+ ReturnValue 37
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gs-hs-mix.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gs-hs-mix.tesc.out
new file mode 100644
index 00000000000..92153c53ab2
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.gs-hs-mix.tesc.out
@@ -0,0 +1,1158 @@
+hlsl.gs-hs-mix.tesc
+Shader version: 500
+vertices = 3
+input primitive = triangles
+vertex spacing = fractional_odd_spacing
+triangle order = ccw
+0:? Sequence
+0:31 Function Definition: HSPatchConstant(struct-HSInput-vf3-vf31[3]; ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:31 Function Parameters:
+0:31 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? Sequence
+0:32 Sequence
+0:32 move second child to first child ( temp 3-component vector of float)
+0:32 'roundedEdgeTessFactor' ( temp 3-component vector of float)
+0:32 tess_factor: direct index for structure (layout( row_major std140) uniform 3-component vector of float)
+0:32 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
+0:32 Constant:
+0:32 6 (const uint)
+0:33 Sequence
+0:33 move second child to first child ( temp float)
+0:33 'roundedInsideTessFactor' ( temp float)
+0:33 Constant:
+0:33 3.000000
+0:34 Sequence
+0:34 move second child to first child ( temp float)
+0:34 'insideTessFactor' ( temp float)
+0:34 Constant:
+0:34 1.000000
+0:39 move second child to first child ( temp float)
+0:39 direct index ( temp float)
+0:39 EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:39 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( temp float)
+0:39 'roundedEdgeTessFactor' ( temp 3-component vector of float)
+0:39 Constant:
+0:39 0 (const int)
+0:40 move second child to first child ( temp float)
+0:40 direct index ( temp float)
+0:40 EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:40 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 direct index ( temp float)
+0:40 'roundedEdgeTessFactor' ( temp 3-component vector of float)
+0:40 Constant:
+0:40 1 (const int)
+0:41 move second child to first child ( temp float)
+0:41 direct index ( temp float)
+0:41 EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:41 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 2 (const int)
+0:41 direct index ( temp float)
+0:41 'roundedEdgeTessFactor' ( temp 3-component vector of float)
+0:41 Constant:
+0:41 2 (const int)
+0:42 move second child to first child ( temp float)
+0:42 InsideTessFactor: direct index for structure ( temp float)
+0:42 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:42 Constant:
+0:42 1 (const int)
+0:42 'roundedInsideTessFactor' ( temp float)
+0:45 move second child to first child ( temp 3-component vector of float)
+0:45 direct index ( temp 3-component vector of float)
+0:45 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
+0:45 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 NormalWS: direct index for structure ( temp 3-component vector of float)
+0:45 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:45 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 1 (const int)
+0:46 move second child to first child ( temp 3-component vector of float)
+0:46 direct index ( temp 3-component vector of float)
+0:46 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
+0:46 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:46 Constant:
+0:46 2 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 NormalWS: direct index for structure ( temp 3-component vector of float)
+0:46 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:46 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:46 Constant:
+0:46 1 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:47 move second child to first child ( temp 3-component vector of float)
+0:47 direct index ( temp 3-component vector of float)
+0:47 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
+0:47 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:47 Constant:
+0:47 2 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 NormalWS: direct index for structure ( temp 3-component vector of float)
+0:47 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:47 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:47 Constant:
+0:47 2 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:49 Branch: Return with expression
+0:49 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:61 Function Definition: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS})
+0:61 Function Parameters:
+0:61 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:61 'id' ( in uint)
+0:? Sequence
+0:63 move second child to first child ( temp 3-component vector of float)
+0:63 PositionWS: direct index for structure ( temp 3-component vector of float)
+0:63 'output' ( temp structure{ temp 3-component vector of float PositionWS})
+0:63 Constant:
+0:63 0 (const int)
+0:63 PositionWS: direct index for structure ( temp 3-component vector of float)
+0:63 indirect index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:63 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:63 'id' ( in uint)
+0:63 Constant:
+0:63 0 (const int)
+0:64 Branch: Return with expression
+0:64 'output' ( temp structure{ temp 3-component vector of float PositionWS})
+0:61 Function Definition: HSMain( ( temp void)
+0:61 Function Parameters:
+0:? Sequence
+0:61 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:61 move second child to first child ( temp uint)
+0:? 'id' ( temp uint)
+0:? 'id' ( in uint InvocationID)
+0:61 move second child to first child ( temp structure{ temp 3-component vector of float PositionWS})
+0:61 indirect index (layout( location=0) out structure{ temp 3-component vector of float PositionWS})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float PositionWS})
+0:? 'id' ( in uint InvocationID)
+0:61 Function Call: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS})
+0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? 'id' ( temp uint)
+0:? Barrier ( temp void)
+0:? Test condition and select ( temp void)
+0:? Condition
+0:? Compare Equal ( temp bool)
+0:? 'id' ( in uint InvocationID)
+0:? Constant:
+0:? 0 (const int)
+0:? true case
+0:? Sequence
+0:? move second child to first child ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Function Call: HSPatchConstant(struct-HSInput-vf3-vf31[3]; ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? Sequence
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 0 (const int)
+0:? direct index ( temp float)
+0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 0 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 1 (const int)
+0:? direct index ( temp float)
+0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 1 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 2 (const int)
+0:? direct index ( temp float)
+0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 2 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelInner)
+0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner)
+0:? Constant:
+0:? 0 (const int)
+0:? InsideTessFactor: direct index for structure ( temp float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 1 (const int)
+0:? move second child to first child ( temp 3-element array of 3-component vector of float)
+0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
+0:? '@patchConstantOutput' (layout( location=1) patch out structure{ temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 0 (const int)
+0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 2 (const int)
+0:84 Function Definition: GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41; ( temp void)
+0:84 Function Parameters:
+0:84 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:84 'output' ( out structure{ temp 4-component vector of float PositionCS})
+0:? Sequence
+0:86 Sequence
+0:86 move second child to first child ( temp 3-component vector of float)
+0:86 'P0' ( temp 3-component vector of float)
+0:86 vector swizzle ( temp 3-component vector of float)
+0:86 PositionWS: direct index for structure ( temp 3-component vector of float)
+0:86 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:86 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 0 (const int)
+0:86 Sequence
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 1 (const int)
+0:86 Constant:
+0:86 2 (const int)
+0:87 Sequence
+0:87 move second child to first child ( temp 3-component vector of float)
+0:87 'P1' ( temp 3-component vector of float)
+0:87 vector swizzle ( temp 3-component vector of float)
+0:87 PositionWS: direct index for structure ( temp 3-component vector of float)
+0:87 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:87 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 0 (const int)
+0:87 Sequence
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:88 Sequence
+0:88 move second child to first child ( temp 3-component vector of float)
+0:88 'P2' ( temp 3-component vector of float)
+0:88 vector swizzle ( temp 3-component vector of float)
+0:88 PositionWS: direct index for structure ( temp 3-component vector of float)
+0:88 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:88 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:88 Constant:
+0:88 2 (const int)
+0:88 Constant:
+0:88 0 (const int)
+0:88 Sequence
+0:88 Constant:
+0:88 0 (const int)
+0:88 Constant:
+0:88 1 (const int)
+0:88 Constant:
+0:88 2 (const int)
+0:92 add second child into first child ( temp float)
+0:92 direct index ( temp float)
+0:92 'P0' ( temp 3-component vector of float)
+0:92 Constant:
+0:92 2 (const int)
+0:92 Constant:
+0:92 0.001000
+0:93 add second child into first child ( temp float)
+0:93 direct index ( temp float)
+0:93 'P1' ( temp 3-component vector of float)
+0:93 Constant:
+0:93 2 (const int)
+0:93 Constant:
+0:93 0.001000
+0:94 add second child into first child ( temp float)
+0:94 direct index ( temp float)
+0:94 'P2' ( temp 3-component vector of float)
+0:94 Constant:
+0:94 2 (const int)
+0:94 Constant:
+0:94 0.001000
+0:95 Sequence
+0:95 move second child to first child ( temp 4-component vector of float)
+0:95 'Q0' ( temp 4-component vector of float)
+0:95 vector-times-matrix ( temp 4-component vector of float)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:95 'P0' ( temp 3-component vector of float)
+0:95 Constant:
+0:95 1.000000
+0:95 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float)
+0:95 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
+0:95 Constant:
+0:95 1 (const uint)
+0:96 Sequence
+0:96 move second child to first child ( temp 4-component vector of float)
+0:96 'Q1' ( temp 4-component vector of float)
+0:96 vector-times-matrix ( temp 4-component vector of float)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:96 'P1' ( temp 3-component vector of float)
+0:96 Constant:
+0:96 1.000000
+0:96 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float)
+0:96 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
+0:96 Constant:
+0:96 1 (const uint)
+0:97 Sequence
+0:97 move second child to first child ( temp 4-component vector of float)
+0:97 'Q2' ( temp 4-component vector of float)
+0:97 vector-times-matrix ( temp 4-component vector of float)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:97 'P2' ( temp 3-component vector of float)
+0:97 Constant:
+0:97 1.000000
+0:97 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float)
+0:97 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
+0:97 Constant:
+0:97 1 (const uint)
+0:100 move second child to first child ( temp 4-component vector of float)
+0:100 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:100 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:100 Constant:
+0:100 0 (const int)
+0:100 'Q0' ( temp 4-component vector of float)
+0:101 Constant:
+0:101 0.000000
+0:102 move second child to first child ( temp 4-component vector of float)
+0:102 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:102 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:102 Constant:
+0:102 0 (const int)
+0:102 'Q1' ( temp 4-component vector of float)
+0:103 Constant:
+0:103 0.000000
+0:104 Constant:
+0:104 0.000000
+0:107 move second child to first child ( temp 4-component vector of float)
+0:107 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:107 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:107 Constant:
+0:107 0 (const int)
+0:107 'Q1' ( temp 4-component vector of float)
+0:108 Constant:
+0:108 0.000000
+0:109 move second child to first child ( temp 4-component vector of float)
+0:109 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:109 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:109 Constant:
+0:109 0 (const int)
+0:109 'Q2' ( temp 4-component vector of float)
+0:110 Constant:
+0:110 0.000000
+0:111 Constant:
+0:111 0.000000
+0:114 move second child to first child ( temp 4-component vector of float)
+0:114 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:114 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:114 Constant:
+0:114 0 (const int)
+0:114 'Q2' ( temp 4-component vector of float)
+0:115 Constant:
+0:115 0.000000
+0:116 move second child to first child ( temp 4-component vector of float)
+0:116 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:116 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:116 Constant:
+0:116 0 (const int)
+0:116 'Q0' ( temp 4-component vector of float)
+0:117 Constant:
+0:117 0.000000
+0:118 Constant:
+0:118 0.000000
+0:? Linker Objects
+0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float PositionWS})
+0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? 'id' ( in uint InvocationID)
+0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner)
+0:? '@patchConstantOutput' (layout( location=1) patch out structure{ temp 3-element array of 3-component vector of float NormalWS})
+
+
+Linked tessellation control stage:
+
+
+Shader version: 500
+vertices = 3
+input primitive = triangles
+vertex spacing = fractional_odd_spacing
+triangle order = ccw
+0:? Sequence
+0:31 Function Definition: HSPatchConstant(struct-HSInput-vf3-vf31[3]; ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:31 Function Parameters:
+0:31 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? Sequence
+0:32 Sequence
+0:32 move second child to first child ( temp 3-component vector of float)
+0:32 'roundedEdgeTessFactor' ( temp 3-component vector of float)
+0:32 tess_factor: direct index for structure (layout( row_major std140) uniform 3-component vector of float)
+0:32 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
+0:32 Constant:
+0:32 6 (const uint)
+0:33 Sequence
+0:33 move second child to first child ( temp float)
+0:33 'roundedInsideTessFactor' ( temp float)
+0:33 Constant:
+0:33 3.000000
+0:34 Sequence
+0:34 move second child to first child ( temp float)
+0:34 'insideTessFactor' ( temp float)
+0:34 Constant:
+0:34 1.000000
+0:39 move second child to first child ( temp float)
+0:39 direct index ( temp float)
+0:39 EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:39 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( temp float)
+0:39 'roundedEdgeTessFactor' ( temp 3-component vector of float)
+0:39 Constant:
+0:39 0 (const int)
+0:40 move second child to first child ( temp float)
+0:40 direct index ( temp float)
+0:40 EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:40 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 direct index ( temp float)
+0:40 'roundedEdgeTessFactor' ( temp 3-component vector of float)
+0:40 Constant:
+0:40 1 (const int)
+0:41 move second child to first child ( temp float)
+0:41 direct index ( temp float)
+0:41 EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:41 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 2 (const int)
+0:41 direct index ( temp float)
+0:41 'roundedEdgeTessFactor' ( temp 3-component vector of float)
+0:41 Constant:
+0:41 2 (const int)
+0:42 move second child to first child ( temp float)
+0:42 InsideTessFactor: direct index for structure ( temp float)
+0:42 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:42 Constant:
+0:42 1 (const int)
+0:42 'roundedInsideTessFactor' ( temp float)
+0:45 move second child to first child ( temp 3-component vector of float)
+0:45 direct index ( temp 3-component vector of float)
+0:45 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
+0:45 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 NormalWS: direct index for structure ( temp 3-component vector of float)
+0:45 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:45 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 1 (const int)
+0:46 move second child to first child ( temp 3-component vector of float)
+0:46 direct index ( temp 3-component vector of float)
+0:46 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
+0:46 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:46 Constant:
+0:46 2 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 NormalWS: direct index for structure ( temp 3-component vector of float)
+0:46 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:46 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:46 Constant:
+0:46 1 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:47 move second child to first child ( temp 3-component vector of float)
+0:47 direct index ( temp 3-component vector of float)
+0:47 NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
+0:47 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:47 Constant:
+0:47 2 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 NormalWS: direct index for structure ( temp 3-component vector of float)
+0:47 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:47 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:47 Constant:
+0:47 2 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:49 Branch: Return with expression
+0:49 'result' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:61 Function Definition: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS})
+0:61 Function Parameters:
+0:61 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:61 'id' ( in uint)
+0:? Sequence
+0:63 move second child to first child ( temp 3-component vector of float)
+0:63 PositionWS: direct index for structure ( temp 3-component vector of float)
+0:63 'output' ( temp structure{ temp 3-component vector of float PositionWS})
+0:63 Constant:
+0:63 0 (const int)
+0:63 PositionWS: direct index for structure ( temp 3-component vector of float)
+0:63 indirect index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:63 'patch' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:63 'id' ( in uint)
+0:63 Constant:
+0:63 0 (const int)
+0:64 Branch: Return with expression
+0:64 'output' ( temp structure{ temp 3-component vector of float PositionWS})
+0:61 Function Definition: HSMain( ( temp void)
+0:61 Function Parameters:
+0:? Sequence
+0:61 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:61 move second child to first child ( temp uint)
+0:? 'id' ( temp uint)
+0:? 'id' ( in uint InvocationID)
+0:61 move second child to first child ( temp structure{ temp 3-component vector of float PositionWS})
+0:61 indirect index (layout( location=0) out structure{ temp 3-component vector of float PositionWS})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float PositionWS})
+0:? 'id' ( in uint InvocationID)
+0:61 Function Call: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS})
+0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? 'id' ( temp uint)
+0:? Barrier ( temp void)
+0:? Test condition and select ( temp void)
+0:? Condition
+0:? Compare Equal ( temp bool)
+0:? 'id' ( in uint InvocationID)
+0:? Constant:
+0:? 0 (const int)
+0:? true case
+0:? Sequence
+0:? move second child to first child ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Function Call: HSPatchConstant(struct-HSInput-vf3-vf31[3]; ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? Sequence
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 0 (const int)
+0:? direct index ( temp float)
+0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 0 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 1 (const int)
+0:? direct index ( temp float)
+0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 1 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 2 (const int)
+0:? direct index ( temp float)
+0:? EdgeTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 2 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelInner)
+0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner)
+0:? Constant:
+0:? 0 (const int)
+0:? InsideTessFactor: direct index for structure ( temp float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 1 (const int)
+0:? move second child to first child ( temp 3-element array of 3-component vector of float)
+0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
+0:? '@patchConstantOutput' (layout( location=1) patch out structure{ temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 0 (const int)
+0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
+0:? Constant:
+0:? 2 (const int)
+0:84 Function Definition: GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41; ( temp void)
+0:84 Function Parameters:
+0:84 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:84 'output' ( out structure{ temp 4-component vector of float PositionCS})
+0:? Sequence
+0:86 Sequence
+0:86 move second child to first child ( temp 3-component vector of float)
+0:86 'P0' ( temp 3-component vector of float)
+0:86 vector swizzle ( temp 3-component vector of float)
+0:86 PositionWS: direct index for structure ( temp 3-component vector of float)
+0:86 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:86 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 0 (const int)
+0:86 Sequence
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 1 (const int)
+0:86 Constant:
+0:86 2 (const int)
+0:87 Sequence
+0:87 move second child to first child ( temp 3-component vector of float)
+0:87 'P1' ( temp 3-component vector of float)
+0:87 vector swizzle ( temp 3-component vector of float)
+0:87 PositionWS: direct index for structure ( temp 3-component vector of float)
+0:87 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:87 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 0 (const int)
+0:87 Sequence
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:88 Sequence
+0:88 move second child to first child ( temp 3-component vector of float)
+0:88 'P2' ( temp 3-component vector of float)
+0:88 vector swizzle ( temp 3-component vector of float)
+0:88 PositionWS: direct index for structure ( temp 3-component vector of float)
+0:88 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:88 'input' ( in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:88 Constant:
+0:88 2 (const int)
+0:88 Constant:
+0:88 0 (const int)
+0:88 Sequence
+0:88 Constant:
+0:88 0 (const int)
+0:88 Constant:
+0:88 1 (const int)
+0:88 Constant:
+0:88 2 (const int)
+0:92 add second child into first child ( temp float)
+0:92 direct index ( temp float)
+0:92 'P0' ( temp 3-component vector of float)
+0:92 Constant:
+0:92 2 (const int)
+0:92 Constant:
+0:92 0.001000
+0:93 add second child into first child ( temp float)
+0:93 direct index ( temp float)
+0:93 'P1' ( temp 3-component vector of float)
+0:93 Constant:
+0:93 2 (const int)
+0:93 Constant:
+0:93 0.001000
+0:94 add second child into first child ( temp float)
+0:94 direct index ( temp float)
+0:94 'P2' ( temp 3-component vector of float)
+0:94 Constant:
+0:94 2 (const int)
+0:94 Constant:
+0:94 0.001000
+0:95 Sequence
+0:95 move second child to first child ( temp 4-component vector of float)
+0:95 'Q0' ( temp 4-component vector of float)
+0:95 vector-times-matrix ( temp 4-component vector of float)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:95 'P0' ( temp 3-component vector of float)
+0:95 Constant:
+0:95 1.000000
+0:95 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float)
+0:95 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
+0:95 Constant:
+0:95 1 (const uint)
+0:96 Sequence
+0:96 move second child to first child ( temp 4-component vector of float)
+0:96 'Q1' ( temp 4-component vector of float)
+0:96 vector-times-matrix ( temp 4-component vector of float)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:96 'P1' ( temp 3-component vector of float)
+0:96 Constant:
+0:96 1.000000
+0:96 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float)
+0:96 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
+0:96 Constant:
+0:96 1 (const uint)
+0:97 Sequence
+0:97 move second child to first child ( temp 4-component vector of float)
+0:97 'Q2' ( temp 4-component vector of float)
+0:97 vector-times-matrix ( temp 4-component vector of float)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:97 'P2' ( temp 3-component vector of float)
+0:97 Constant:
+0:97 1.000000
+0:97 proj_matrix: direct index for structure (layout( row_major std140) uniform 4X4 matrix of float)
+0:97 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
+0:97 Constant:
+0:97 1 (const uint)
+0:100 move second child to first child ( temp 4-component vector of float)
+0:100 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:100 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:100 Constant:
+0:100 0 (const int)
+0:100 'Q0' ( temp 4-component vector of float)
+0:101 Constant:
+0:101 0.000000
+0:102 move second child to first child ( temp 4-component vector of float)
+0:102 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:102 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:102 Constant:
+0:102 0 (const int)
+0:102 'Q1' ( temp 4-component vector of float)
+0:103 Constant:
+0:103 0.000000
+0:104 Constant:
+0:104 0.000000
+0:107 move second child to first child ( temp 4-component vector of float)
+0:107 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:107 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:107 Constant:
+0:107 0 (const int)
+0:107 'Q1' ( temp 4-component vector of float)
+0:108 Constant:
+0:108 0.000000
+0:109 move second child to first child ( temp 4-component vector of float)
+0:109 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:109 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:109 Constant:
+0:109 0 (const int)
+0:109 'Q2' ( temp 4-component vector of float)
+0:110 Constant:
+0:110 0.000000
+0:111 Constant:
+0:111 0.000000
+0:114 move second child to first child ( temp 4-component vector of float)
+0:114 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:114 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:114 Constant:
+0:114 0 (const int)
+0:114 'Q2' ( temp 4-component vector of float)
+0:115 Constant:
+0:115 0.000000
+0:116 move second child to first child ( temp 4-component vector of float)
+0:116 PositionCS: direct index for structure ( temp 4-component vector of float)
+0:116 'vertex' ( temp structure{ temp 4-component vector of float PositionCS})
+0:116 Constant:
+0:116 0 (const int)
+0:116 'Q0' ( temp 4-component vector of float)
+0:117 Constant:
+0:117 0.000000
+0:118 Constant:
+0:118 0.000000
+0:? Linker Objects
+0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float PositionWS})
+0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
+0:? 'id' ( in uint InvocationID)
+0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner)
+0:? '@patchConstantOutput' (layout( location=1) patch out structure{ temp 3-element array of 3-component vector of float NormalWS})
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 216
+
+ Capability Tessellation
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationControl 4 "HSMain" 97 101 105 126 139 145
+ ExecutionMode 4 OutputVertices 3
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 SpacingFractionalOdd
+ ExecutionMode 4 VertexOrderCcw
+ Source HLSL 500
+ Name 4 "HSMain"
+ Name 8 "HSInput"
+ MemberName 8(HSInput) 0 "PositionWS"
+ MemberName 8(HSInput) 1 "NormalWS"
+ Name 15 "HSTrianglePatchConstant"
+ MemberName 15(HSTrianglePatchConstant) 0 "EdgeTessFactor"
+ MemberName 15(HSTrianglePatchConstant) 1 "InsideTessFactor"
+ MemberName 15(HSTrianglePatchConstant) 2 "NormalWS"
+ Name 18 "HSPatchConstant(struct-HSInput-vf3-vf31[3];"
+ Name 17 "patch"
+ Name 21 "HSOutput"
+ MemberName 21(HSOutput) 0 "PositionWS"
+ Name 25 "@HSMain(struct-HSInput-vf3-vf31[3];u1;"
+ Name 23 "patch"
+ Name 24 "id"
+ Name 27 "GSVertexInput"
+ MemberName 27(GSVertexInput) 0 "PositionWS"
+ MemberName 27(GSVertexInput) 1 "NormalWS"
+ Name 31 "GSVertexOutput"
+ MemberName 31(GSVertexOutput) 0 "PositionCS"
+ Name 36 "GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41;"
+ Name 34 "input"
+ Name 35 "output"
+ Name 39 "roundedEdgeTessFactor"
+ Name 42 "UniformBlock0"
+ MemberName 42(UniformBlock0) 0 "model_view_matrix"
+ MemberName 42(UniformBlock0) 1 "proj_matrix"
+ MemberName 42(UniformBlock0) 2 "model_view_proj_matrix"
+ MemberName 42(UniformBlock0) 3 "normal_matrix"
+ MemberName 42(UniformBlock0) 4 "color"
+ MemberName 42(UniformBlock0) 5 "view_dir"
+ MemberName 42(UniformBlock0) 6 "tess_factor"
+ Name 44 ""
+ Name 51 "roundedInsideTessFactor"
+ Name 53 "insideTessFactor"
+ Name 56 "result"
+ Name 87 "output"
+ Name 95 "patch"
+ Name 97 "patch"
+ Name 99 "id"
+ Name 101 "id"
+ Name 105 "@entryPointOutput"
+ Name 107 "param"
+ Name 109 "param"
+ Name 119 "@patchConstantResult"
+ Name 120 "param"
+ Name 126 "@patchConstantOutput.EdgeTessFactor"
+ Name 139 "@patchConstantOutput.InsideTessFactor"
+ Name 143 "HSTrianglePatchConstant"
+ MemberName 143(HSTrianglePatchConstant) 0 "NormalWS"
+ Name 145 "@patchConstantOutput"
+ Name 151 "P0"
+ Name 154 "P1"
+ Name 157 "P2"
+ Name 174 "Q0"
+ Name 184 "Q1"
+ Name 193 "Q2"
+ Name 202 "vertex"
+ MemberDecorate 42(UniformBlock0) 0 RowMajor
+ MemberDecorate 42(UniformBlock0) 0 Offset 0
+ MemberDecorate 42(UniformBlock0) 0 MatrixStride 16
+ MemberDecorate 42(UniformBlock0) 1 RowMajor
+ MemberDecorate 42(UniformBlock0) 1 Offset 64
+ MemberDecorate 42(UniformBlock0) 1 MatrixStride 16
+ MemberDecorate 42(UniformBlock0) 2 RowMajor
+ MemberDecorate 42(UniformBlock0) 2 Offset 128
+ MemberDecorate 42(UniformBlock0) 2 MatrixStride 16
+ MemberDecorate 42(UniformBlock0) 3 RowMajor
+ MemberDecorate 42(UniformBlock0) 3 Offset 192
+ MemberDecorate 42(UniformBlock0) 3 MatrixStride 16
+ MemberDecorate 42(UniformBlock0) 4 Offset 240
+ MemberDecorate 42(UniformBlock0) 5 Offset 256
+ MemberDecorate 42(UniformBlock0) 6 Offset 272
+ Decorate 42(UniformBlock0) Block
+ Decorate 44 DescriptorSet 0
+ Decorate 44 Binding 0
+ Decorate 97(patch) Location 0
+ Decorate 101(id) BuiltIn InvocationId
+ Decorate 105(@entryPointOutput) Location 0
+ Decorate 126(@patchConstantOutput.EdgeTessFactor) Patch
+ Decorate 126(@patchConstantOutput.EdgeTessFactor) BuiltIn TessLevelOuter
+ Decorate 139(@patchConstantOutput.InsideTessFactor) Patch
+ Decorate 139(@patchConstantOutput.InsideTessFactor) BuiltIn TessLevelInner
+ MemberDecorate 143(HSTrianglePatchConstant) 0 Patch
+ Decorate 145(@patchConstantOutput) Patch
+ Decorate 145(@patchConstantOutput) Location 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8(HSInput): TypeStruct 7(fvec3) 7(fvec3)
+ 9: TypeInt 32 0
+ 10: 9(int) Constant 3
+ 11: TypeArray 8(HSInput) 10
+ 12: TypePointer Function 11
+ 13: TypeArray 6(float) 10
+ 14: TypeArray 7(fvec3) 10
+15(HSTrianglePatchConstant): TypeStruct 13 6(float) 14
+ 16: TypeFunction 15(HSTrianglePatchConstant) 12(ptr)
+ 20: TypePointer Function 9(int)
+ 21(HSOutput): TypeStruct 7(fvec3)
+ 22: TypeFunction 21(HSOutput) 12(ptr) 20(ptr)
+27(GSVertexInput): TypeStruct 7(fvec3) 7(fvec3)
+ 28: TypeArray 27(GSVertexInput) 10
+ 29: TypePointer Function 28
+ 30: TypeVector 6(float) 4
+31(GSVertexOutput): TypeStruct 30(fvec4)
+ 32: TypePointer Function 31(GSVertexOutput)
+ 33: TypeFunction 2 29(ptr) 32(ptr)
+ 38: TypePointer Function 7(fvec3)
+ 40: TypeMatrix 30(fvec4) 4
+ 41: TypeMatrix 7(fvec3) 3
+42(UniformBlock0): TypeStruct 40 40 40 41 7(fvec3) 7(fvec3) 7(fvec3)
+ 43: TypePointer Uniform 42(UniformBlock0)
+ 44: 43(ptr) Variable Uniform
+ 45: TypeInt 32 1
+ 46: 45(int) Constant 6
+ 47: TypePointer Uniform 7(fvec3)
+ 50: TypePointer Function 6(float)
+ 52: 6(float) Constant 1077936128
+ 54: 6(float) Constant 1065353216
+ 55: TypePointer Function 15(HSTrianglePatchConstant)
+ 57: 45(int) Constant 0
+ 58: 9(int) Constant 0
+ 62: 45(int) Constant 1
+ 63: 9(int) Constant 1
+ 67: 45(int) Constant 2
+ 68: 9(int) Constant 2
+ 86: TypePointer Function 21(HSOutput)
+ 96: TypePointer Input 11
+ 97(patch): 96(ptr) Variable Input
+ 100: TypePointer Input 9(int)
+ 101(id): 100(ptr) Variable Input
+ 103: TypeArray 21(HSOutput) 10
+ 104: TypePointer Output 103
+105(@entryPointOutput): 104(ptr) Variable Output
+ 112: TypePointer Output 21(HSOutput)
+ 115: TypeBool
+ 123: 9(int) Constant 4
+ 124: TypeArray 6(float) 123
+ 125: TypePointer Output 124
+126(@patchConstantOutput.EdgeTessFactor): 125(ptr) Variable Output
+ 129: TypePointer Output 6(float)
+ 137: TypeArray 6(float) 68
+ 138: TypePointer Output 137
+139(@patchConstantOutput.InsideTessFactor): 138(ptr) Variable Output
+143(HSTrianglePatchConstant): TypeStruct 14
+ 144: TypePointer Output 143(HSTrianglePatchConstant)
+145(@patchConstantOutput): 144(ptr) Variable Output
+ 146: TypePointer Function 14
+ 149: TypePointer Output 14
+ 160: 6(float) Constant 981668463
+ 173: TypePointer Function 30(fvec4)
+ 180: TypePointer Uniform 40
+ 205: 6(float) Constant 0
+ 4(HSMain): 2 Function None 3
+ 5: Label
+ 95(patch): 12(ptr) Variable Function
+ 99(id): 20(ptr) Variable Function
+ 107(param): 12(ptr) Variable Function
+ 109(param): 20(ptr) Variable Function
+119(@patchConstantResult): 55(ptr) Variable Function
+ 120(param): 12(ptr) Variable Function
+ 98: 11 Load 97(patch)
+ Store 95(patch) 98
+ 102: 9(int) Load 101(id)
+ Store 99(id) 102
+ 106: 9(int) Load 101(id)
+ 108: 11 Load 95(patch)
+ Store 107(param) 108
+ 110: 9(int) Load 99(id)
+ Store 109(param) 110
+ 111:21(HSOutput) FunctionCall 25(@HSMain(struct-HSInput-vf3-vf31[3];u1;) 107(param) 109(param)
+ 113: 112(ptr) AccessChain 105(@entryPointOutput) 106
+ Store 113 111
+ ControlBarrier 68 63 58
+ 114: 9(int) Load 101(id)
+ 116: 115(bool) IEqual 114 57
+ SelectionMerge 118 None
+ BranchConditional 116 117 118
+ 117: Label
+ 121: 11 Load 95(patch)
+ Store 120(param) 121
+ 122:15(HSTrianglePatchConstant) FunctionCall 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];) 120(param)
+ Store 119(@patchConstantResult) 122
+ 127: 50(ptr) AccessChain 119(@patchConstantResult) 57 57
+ 128: 6(float) Load 127
+ 130: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 57
+ Store 130 128
+ 131: 50(ptr) AccessChain 119(@patchConstantResult) 57 62
+ 132: 6(float) Load 131
+ 133: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 62
+ Store 133 132
+ 134: 50(ptr) AccessChain 119(@patchConstantResult) 57 67
+ 135: 6(float) Load 134
+ 136: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 67
+ Store 136 135
+ 140: 50(ptr) AccessChain 119(@patchConstantResult) 62
+ 141: 6(float) Load 140
+ 142: 129(ptr) AccessChain 139(@patchConstantOutput.InsideTessFactor) 57
+ Store 142 141
+ 147: 146(ptr) AccessChain 119(@patchConstantResult) 67
+ 148: 14 Load 147
+ 150: 149(ptr) AccessChain 145(@patchConstantOutput) 57
+ Store 150 148
+ Branch 118
+ 118: Label
+ Return
+ FunctionEnd
+18(HSPatchConstant(struct-HSInput-vf3-vf31[3];):15(HSTrianglePatchConstant) Function None 16
+ 17(patch): 12(ptr) FunctionParameter
+ 19: Label
+39(roundedEdgeTessFactor): 38(ptr) Variable Function
+51(roundedInsideTessFactor): 50(ptr) Variable Function
+53(insideTessFactor): 50(ptr) Variable Function
+ 56(result): 55(ptr) Variable Function
+ 48: 47(ptr) AccessChain 44 46
+ 49: 7(fvec3) Load 48
+ Store 39(roundedEdgeTessFactor) 49
+ Store 51(roundedInsideTessFactor) 52
+ Store 53(insideTessFactor) 54
+ 59: 50(ptr) AccessChain 39(roundedEdgeTessFactor) 58
+ 60: 6(float) Load 59
+ 61: 50(ptr) AccessChain 56(result) 57 57
+ Store 61 60
+ 64: 50(ptr) AccessChain 39(roundedEdgeTessFactor) 63
+ 65: 6(float) Load 64
+ 66: 50(ptr) AccessChain 56(result) 57 62
+ Store 66 65
+ 69: 50(ptr) AccessChain 39(roundedEdgeTessFactor) 68
+ 70: 6(float) Load 69
+ 71: 50(ptr) AccessChain 56(result) 57 67
+ Store 71 70
+ 72: 6(float) Load 51(roundedInsideTessFactor)
+ 73: 50(ptr) AccessChain 56(result) 62
+ Store 73 72
+ 74: 38(ptr) AccessChain 17(patch) 57 62
+ 75: 7(fvec3) Load 74
+ 76: 38(ptr) AccessChain 56(result) 67 57
+ Store 76 75
+ 77: 38(ptr) AccessChain 17(patch) 62 62
+ 78: 7(fvec3) Load 77
+ 79: 38(ptr) AccessChain 56(result) 67 62
+ Store 79 78
+ 80: 38(ptr) AccessChain 17(patch) 67 62
+ 81: 7(fvec3) Load 80
+ 82: 38(ptr) AccessChain 56(result) 67 67
+ Store 82 81
+ 83:15(HSTrianglePatchConstant) Load 56(result)
+ ReturnValue 83
+ FunctionEnd
+25(@HSMain(struct-HSInput-vf3-vf31[3];u1;):21(HSOutput) Function None 22
+ 23(patch): 12(ptr) FunctionParameter
+ 24(id): 20(ptr) FunctionParameter
+ 26: Label
+ 87(output): 86(ptr) Variable Function
+ 88: 9(int) Load 24(id)
+ 89: 38(ptr) AccessChain 23(patch) 88 57
+ 90: 7(fvec3) Load 89
+ 91: 38(ptr) AccessChain 87(output) 57
+ Store 91 90
+ 92:21(HSOutput) Load 87(output)
+ ReturnValue 92
+ FunctionEnd
+36(GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41;): 2 Function None 33
+ 34(input): 29(ptr) FunctionParameter
+ 35(output): 32(ptr) FunctionParameter
+ 37: Label
+ 151(P0): 38(ptr) Variable Function
+ 154(P1): 38(ptr) Variable Function
+ 157(P2): 38(ptr) Variable Function
+ 174(Q0): 173(ptr) Variable Function
+ 184(Q1): 173(ptr) Variable Function
+ 193(Q2): 173(ptr) Variable Function
+ 202(vertex): 32(ptr) Variable Function
+ 152: 38(ptr) AccessChain 34(input) 57 57
+ 153: 7(fvec3) Load 152
+ Store 151(P0) 153
+ 155: 38(ptr) AccessChain 34(input) 62 57
+ 156: 7(fvec3) Load 155
+ Store 154(P1) 156
+ 158: 38(ptr) AccessChain 34(input) 67 57
+ 159: 7(fvec3) Load 158
+ Store 157(P2) 159
+ 161: 50(ptr) AccessChain 151(P0) 68
+ 162: 6(float) Load 161
+ 163: 6(float) FAdd 162 160
+ 164: 50(ptr) AccessChain 151(P0) 68
+ Store 164 163
+ 165: 50(ptr) AccessChain 154(P1) 68
+ 166: 6(float) Load 165
+ 167: 6(float) FAdd 166 160
+ 168: 50(ptr) AccessChain 154(P1) 68
+ Store 168 167
+ 169: 50(ptr) AccessChain 157(P2) 68
+ 170: 6(float) Load 169
+ 171: 6(float) FAdd 170 160
+ 172: 50(ptr) AccessChain 157(P2) 68
+ Store 172 171
+ 175: 7(fvec3) Load 151(P0)
+ 176: 6(float) CompositeExtract 175 0
+ 177: 6(float) CompositeExtract 175 1
+ 178: 6(float) CompositeExtract 175 2
+ 179: 30(fvec4) CompositeConstruct 176 177 178 54
+ 181: 180(ptr) AccessChain 44 62
+ 182: 40 Load 181
+ 183: 30(fvec4) VectorTimesMatrix 179 182
+ Store 174(Q0) 183
+ 185: 7(fvec3) Load 154(P1)
+ 186: 6(float) CompositeExtract 185 0
+ 187: 6(float) CompositeExtract 185 1
+ 188: 6(float) CompositeExtract 185 2
+ 189: 30(fvec4) CompositeConstruct 186 187 188 54
+ 190: 180(ptr) AccessChain 44 62
+ 191: 40 Load 190
+ 192: 30(fvec4) VectorTimesMatrix 189 191
+ Store 184(Q1) 192
+ 194: 7(fvec3) Load 157(P2)
+ 195: 6(float) CompositeExtract 194 0
+ 196: 6(float) CompositeExtract 194 1
+ 197: 6(float) CompositeExtract 194 2
+ 198: 30(fvec4) CompositeConstruct 195 196 197 54
+ 199: 180(ptr) AccessChain 44 62
+ 200: 40 Load 199
+ 201: 30(fvec4) VectorTimesMatrix 198 200
+ Store 193(Q2) 201
+ 203: 30(fvec4) Load 174(Q0)
+ 204: 173(ptr) AccessChain 202(vertex) 57
+ Store 204 203
+ 206: 30(fvec4) Load 184(Q1)
+ 207: 173(ptr) AccessChain 202(vertex) 57
+ Store 207 206
+ 208: 30(fvec4) Load 184(Q1)
+ 209: 173(ptr) AccessChain 202(vertex) 57
+ Store 209 208
+ 210: 30(fvec4) Load 193(Q2)
+ 211: 173(ptr) AccessChain 202(vertex) 57
+ Store 211 210
+ 212: 30(fvec4) Load 193(Q2)
+ 213: 173(ptr) AccessChain 202(vertex) 57
+ Store 213 212
+ 214: 30(fvec4) Load 174(Q0)
+ 215: 173(ptr) AccessChain 202(vertex) 57
+ Store 215 214
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hlslOffset.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hlslOffset.vert.out
new file mode 100644
index 00000000000..4840e61e603
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hlslOffset.vert.out
@@ -0,0 +1,85 @@
+hlsl.hlslOffset.vert
+Shader version: 500
+0:? Sequence
+0:20 Function Definition: @main( ( temp void)
+0:20 Function Parameters:
+0:20 Function Definition: main( ( temp void)
+0:20 Function Parameters:
+0:? Sequence
+0:20 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float m0, layout( row_major std140) uniform 3-component vector of float m4, layout( row_major std140) uniform float m16, layout( row_major std140 offset=20) uniform 3-component vector of float m20, layout( row_major std140 offset=36) uniform 3-component vector of float m36, layout( row_major std140 offset=56) uniform 2-component vector of float m56, layout( row_major std140) uniform float m64, layout( row_major std140) uniform 2-component vector of float m68, layout( row_major std140) uniform float m76, layout( row_major std140) uniform float m80, layout( row_major std140) uniform 1-element array of 2-component vector of float m96})
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:20 Function Definition: @main( ( temp void)
+0:20 Function Parameters:
+0:20 Function Definition: main( ( temp void)
+0:20 Function Parameters:
+0:? Sequence
+0:20 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float m0, layout( row_major std140) uniform 3-component vector of float m4, layout( row_major std140) uniform float m16, layout( row_major std140 offset=20) uniform 3-component vector of float m20, layout( row_major std140 offset=36) uniform 3-component vector of float m36, layout( row_major std140 offset=56) uniform 2-component vector of float m56, layout( row_major std140) uniform float m64, layout( row_major std140) uniform 2-component vector of float m68, layout( row_major std140) uniform float m76, layout( row_major std140) uniform float m80, layout( row_major std140) uniform 1-element array of 2-component vector of float m96})
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 18
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main"
+ Source HLSL 500
+ Name 4 "main"
+ Name 6 "@main("
+ Name 15 "b"
+ MemberName 15(b) 0 "m0"
+ MemberName 15(b) 1 "m4"
+ MemberName 15(b) 2 "m16"
+ MemberName 15(b) 3 "m20"
+ MemberName 15(b) 4 "m36"
+ MemberName 15(b) 5 "m56"
+ MemberName 15(b) 6 "m64"
+ MemberName 15(b) 7 "m68"
+ MemberName 15(b) 8 "m76"
+ MemberName 15(b) 9 "m80"
+ MemberName 15(b) 10 "m96"
+ Name 17 ""
+ Decorate 14 ArrayStride 16
+ MemberDecorate 15(b) 0 Offset 0
+ MemberDecorate 15(b) 1 Offset 4
+ MemberDecorate 15(b) 2 Offset 16
+ MemberDecorate 15(b) 3 Offset 20
+ MemberDecorate 15(b) 4 Offset 36
+ MemberDecorate 15(b) 5 Offset 56
+ MemberDecorate 15(b) 6 Offset 64
+ MemberDecorate 15(b) 7 Offset 68
+ MemberDecorate 15(b) 8 Offset 76
+ MemberDecorate 15(b) 9 Offset 80
+ MemberDecorate 15(b) 10 Offset 96
+ Decorate 15(b) Block
+ Decorate 17 DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 9: TypeFloat 32
+ 10: TypeVector 9(float) 3
+ 11: TypeVector 9(float) 2
+ 12: TypeInt 32 0
+ 13: 12(int) Constant 1
+ 14: TypeArray 11(fvec2) 13
+ 15(b): TypeStruct 9(float) 10(fvec3) 9(float) 10(fvec3) 10(fvec3) 11(fvec2) 9(float) 11(fvec2) 9(float) 9(float) 14
+ 16: TypePointer Uniform 15(b)
+ 17: 16(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 8: 2 FunctionCall 6(@main()
+ Return
+ FunctionEnd
+ 6(@main(): 2 Function None 3
+ 7: Label
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.1.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.1.tesc.out
index 89ab4e63394..57020ee1921 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.1.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.1.tesc.out
@@ -1,6 +1,7 @@
hlsl.hull.1.tesc
-Shader version: 450
+Shader version: 500
vertices = 4
+vertex spacing = equal_spacing
0:? Sequence
0:26 Function Definition: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
0:26 Function Parameters:
@@ -31,7 +32,9 @@ vertices = 4
0:? 'm_cpid' ( temp uint)
0:? 'm_cpid' ( in uint InvocationID)
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'm_cpid' ( in uint InvocationID)
0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'm_cpid' ( temp uint)
@@ -50,8 +53,8 @@ vertices = 4
0:? 'pid' ( in uint PrimitiveID)
0:? Sequence
0:? move second child to first child ( temp float)
-0:? direct index ( out float TessLevelOuter)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:? Constant:
0:? 0 (const int)
0:? direct index ( temp float)
@@ -62,8 +65,8 @@ vertices = 4
0:? Constant:
0:? 0 (const int)
0:? move second child to first child ( temp float)
-0:? direct index ( out float TessLevelOuter)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:? Constant:
0:? 1 (const int)
0:? direct index ( temp float)
@@ -100,18 +103,19 @@ vertices = 4
0:38 Branch: Return with expression
0:38 'output' ( temp structure{ temp 2-element array of float edges})
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'm_cpid' ( in uint InvocationID)
0:? 'pid' ( in uint PrimitiveID)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
Linked tessellation control stage:
-Shader version: 450
+Shader version: 500
vertices = 4
+vertex spacing = equal_spacing
0:? Sequence
0:26 Function Definition: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
0:26 Function Parameters:
@@ -142,7 +146,9 @@ vertices = 4
0:? 'm_cpid' ( temp uint)
0:? 'm_cpid' ( in uint InvocationID)
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'm_cpid' ( in uint InvocationID)
0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'm_cpid' ( temp uint)
@@ -161,8 +167,8 @@ vertices = 4
0:? 'pid' ( in uint PrimitiveID)
0:? Sequence
0:? move second child to first child ( temp float)
-0:? direct index ( out float TessLevelOuter)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:? Constant:
0:? 0 (const int)
0:? direct index ( temp float)
@@ -173,8 +179,8 @@ vertices = 4
0:? Constant:
0:? 0 (const int)
0:? move second child to first child ( temp float)
-0:? direct index ( out float TessLevelOuter)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:? Constant:
0:? 1 (const int)
0:? direct index ( temp float)
@@ -211,21 +217,24 @@ vertices = 4
0:38 Branch: Return with expression
0:38 'output' ( temp structure{ temp 2-element array of float edges})
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'm_cpid' ( in uint InvocationID)
0:? 'pid' ( in uint PrimitiveID)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 85
+// Generated by (magic number): 80002
+// Id's are bound by 90
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 40 44 47 62 67
+ EntryPoint TessellationControl 4 "main" 40 44 48 66 72
ExecutionMode 4 OutputVertices 4
+ ExecutionMode 4 Isolines
+ ExecutionMode 4 SpacingEqual
+ Source HLSL 500
Name 4 "main"
Name 8 "VS_OUT"
MemberName 8(VS_OUT) 0 "cpoint"
@@ -243,19 +252,20 @@ vertices = 4
Name 40 "ip"
Name 42 "m_cpid"
Name 44 "m_cpid"
- Name 47 "@entryPointOutput"
- Name 48 "param"
+ Name 48 "@entryPointOutput"
Name 50 "param"
- Name 61 "@patchConstantResult"
- Name 62 "pid"
- Name 63 "param"
- Name 67 "@patchConstantOutput_edges"
- Name 77 "output"
+ Name 52 "param"
+ Name 65 "@patchConstantResult"
+ Name 66 "pid"
+ Name 67 "param"
+ Name 72 "@patchConstantOutput.edges"
+ Name 82 "output"
Decorate 40(ip) Location 0
Decorate 44(m_cpid) BuiltIn InvocationId
- Decorate 47(@entryPointOutput) Location 0
- Decorate 62(pid) BuiltIn PrimitiveId
- Decorate 67(@patchConstantOutput_edges) BuiltIn TessLevelOuter
+ Decorate 48(@entryPointOutput) Location 0
+ Decorate 66(pid) BuiltIn PrimitiveId
+ Decorate 72(@patchConstantOutput.edges) Patch
+ Decorate 72(@patchConstantOutput.edges) BuiltIn TessLevelOuter
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -280,58 +290,63 @@ vertices = 4
40(ip): 39(ptr) Variable Input
43: TypePointer Input 9(int)
44(m_cpid): 43(ptr) Variable Input
- 46: TypePointer Output 14(HS_OUT)
-47(@entryPointOutput): 46(ptr) Variable Output
- 53: 9(int) Constant 1
- 54: 9(int) Constant 0
- 56: TypeBool
- 60: TypePointer Function 22(HS_CONSTANT_OUT)
- 62(pid): 43(ptr) Variable Input
- 66: TypePointer Output 21
-67(@patchConstantOutput_edges): 66(ptr) Variable Output
- 68: TypePointer Function 6(float)
- 71: TypePointer Output 6(float)
- 73: 29(int) Constant 1
- 78: 6(float) Constant 1073741824
- 80: 6(float) Constant 1090519040
+ 46: TypeArray 14(HS_OUT) 10
+ 47: TypePointer Output 46
+48(@entryPointOutput): 47(ptr) Variable Output
+ 55: TypePointer Output 14(HS_OUT)
+ 57: 9(int) Constant 1
+ 58: 9(int) Constant 0
+ 60: TypeBool
+ 64: TypePointer Function 22(HS_CONSTANT_OUT)
+ 66(pid): 43(ptr) Variable Input
+ 70: TypeArray 6(float) 10
+ 71: TypePointer Output 70
+72(@patchConstantOutput.edges): 71(ptr) Variable Output
+ 73: TypePointer Function 6(float)
+ 76: TypePointer Output 6(float)
+ 78: 29(int) Constant 1
+ 83: 6(float) Constant 1073741824
+ 85: 6(float) Constant 1090519040
4(main): 2 Function None 3
5: Label
38(ip): 12(ptr) Variable Function
42(m_cpid): 13(ptr) Variable Function
- 48(param): 12(ptr) Variable Function
- 50(param): 13(ptr) Variable Function
-61(@patchConstantResult): 60(ptr) Variable Function
- 63(param): 13(ptr) Variable Function
+ 50(param): 12(ptr) Variable Function
+ 52(param): 13(ptr) Variable Function
+65(@patchConstantResult): 64(ptr) Variable Function
+ 67(param): 13(ptr) Variable Function
41: 11 Load 40(ip)
Store 38(ip) 41
45: 9(int) Load 44(m_cpid)
Store 42(m_cpid) 45
- 49: 11 Load 38(ip)
- Store 48(param) 49
- 51: 9(int) Load 42(m_cpid)
+ 49: 9(int) Load 44(m_cpid)
+ 51: 11 Load 38(ip)
Store 50(param) 51
- 52: 14(HS_OUT) FunctionCall 18(@main(struct-VS_OUT-vf31[4];u1;) 48(param) 50(param)
- Store 47(@entryPointOutput) 52
- ControlBarrier 20 53 54
- 55: 9(int) Load 44(m_cpid)
- 57: 56(bool) IEqual 55 30
- SelectionMerge 59 None
- BranchConditional 57 58 59
- 58: Label
- 64: 9(int) Load 62(pid)
- Store 63(param) 64
- 65:22(HS_CONSTANT_OUT) FunctionCall 25(PCF(u1;) 63(param)
- Store 61(@patchConstantResult) 65
- 69: 68(ptr) AccessChain 61(@patchConstantResult) 30 30
- 70: 6(float) Load 69
- 72: 71(ptr) AccessChain 67(@patchConstantOutput_edges) 30
- Store 72 70
- 74: 68(ptr) AccessChain 61(@patchConstantResult) 30 73
+ 53: 9(int) Load 42(m_cpid)
+ Store 52(param) 53
+ 54: 14(HS_OUT) FunctionCall 18(@main(struct-VS_OUT-vf31[4];u1;) 50(param) 52(param)
+ 56: 55(ptr) AccessChain 48(@entryPointOutput) 49
+ Store 56 54
+ ControlBarrier 20 57 58
+ 59: 9(int) Load 44(m_cpid)
+ 61: 60(bool) IEqual 59 30
+ SelectionMerge 63 None
+ BranchConditional 61 62 63
+ 62: Label
+ 68: 9(int) Load 66(pid)
+ Store 67(param) 68
+ 69:22(HS_CONSTANT_OUT) FunctionCall 25(PCF(u1;) 67(param)
+ Store 65(@patchConstantResult) 69
+ 74: 73(ptr) AccessChain 65(@patchConstantResult) 30 30
75: 6(float) Load 74
- 76: 71(ptr) AccessChain 67(@patchConstantOutput_edges) 73
- Store 76 75
- Branch 59
- 59: Label
+ 77: 76(ptr) AccessChain 72(@patchConstantOutput.edges) 30
+ Store 77 75
+ 79: 73(ptr) AccessChain 65(@patchConstantResult) 30 78
+ 80: 6(float) Load 79
+ 81: 76(ptr) AccessChain 72(@patchConstantOutput.edges) 78
+ Store 81 80
+ Branch 63
+ 63: Label
Return
FunctionEnd
18(@main(struct-VS_OUT-vf31[4];u1;): 14(HS_OUT) Function None 15
@@ -349,11 +364,11 @@ vertices = 4
25(PCF(u1;):22(HS_CONSTANT_OUT) Function None 23
24(pid): 13(ptr) FunctionParameter
26: Label
- 77(output): 60(ptr) Variable Function
- 79: 68(ptr) AccessChain 77(output) 30 30
- Store 79 78
- 81: 68(ptr) AccessChain 77(output) 30 73
- Store 81 80
- 82:22(HS_CONSTANT_OUT) Load 77(output)
- ReturnValue 82
+ 82(output): 64(ptr) Variable Function
+ 84: 73(ptr) AccessChain 82(output) 30 30
+ Store 84 83
+ 86: 73(ptr) AccessChain 82(output) 30 78
+ Store 86 85
+ 87:22(HS_CONSTANT_OUT) Load 82(output)
+ ReturnValue 87
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.2.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.2.tesc.out
index 9d848c61b92..8d0708ddcd1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.2.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.2.tesc.out
@@ -1,6 +1,7 @@
hlsl.hull.2.tesc
-Shader version: 450
+Shader version: 500
vertices = 4
+vertex spacing = equal_spacing
0:? Sequence
0:26 Function Definition: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
0:26 Function Parameters:
@@ -27,7 +28,9 @@ vertices = 4
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'InvocationId' ( in uint InvocationID)
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? Barrier ( temp void)
@@ -46,8 +49,8 @@ vertices = 4
0:? 'pos' ( in 4-component vector of float Position)
0:? Sequence
0:? move second child to first child ( temp float)
-0:? direct index ( out float TessLevelOuter)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:? Constant:
0:? 0 (const int)
0:? direct index ( temp float)
@@ -58,8 +61,8 @@ vertices = 4
0:? Constant:
0:? 0 (const int)
0:? move second child to first child ( temp float)
-0:? direct index ( out float TessLevelOuter)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:? Constant:
0:? 1 (const int)
0:? direct index ( temp float)
@@ -97,19 +100,20 @@ vertices = 4
0:38 Branch: Return with expression
0:38 'output' ( temp structure{ temp 2-element array of float edges})
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'InvocationId' ( in uint InvocationID)
0:? 'pid' ( in uint PrimitiveID)
0:? 'pos' ( in 4-component vector of float Position)
-0:? 'InvocationId' ( in uint InvocationID)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
Linked tessellation control stage:
-Shader version: 450
+Shader version: 500
vertices = 4
+vertex spacing = equal_spacing
0:? Sequence
0:26 Function Definition: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
0:26 Function Parameters:
@@ -136,7 +140,9 @@ vertices = 4
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'InvocationId' ( in uint InvocationID)
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? Barrier ( temp void)
@@ -155,8 +161,8 @@ vertices = 4
0:? 'pos' ( in 4-component vector of float Position)
0:? Sequence
0:? move second child to first child ( temp float)
-0:? direct index ( out float TessLevelOuter)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:? Constant:
0:? 0 (const int)
0:? direct index ( temp float)
@@ -167,8 +173,8 @@ vertices = 4
0:? Constant:
0:? 0 (const int)
0:? move second child to first child ( temp float)
-0:? direct index ( out float TessLevelOuter)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:? Constant:
0:? 1 (const int)
0:? direct index ( temp float)
@@ -206,22 +212,25 @@ vertices = 4
0:38 Branch: Return with expression
0:38 'output' ( temp structure{ temp 2-element array of float edges})
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'InvocationId' ( in uint InvocationID)
0:? 'pid' ( in uint PrimitiveID)
0:? 'pos' ( in 4-component vector of float Position)
-0:? 'InvocationId' ( in uint InvocationID)
-0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 87
+// Generated by (magic number): 80002
+// Id's are bound by 92
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 42 45 52 60 62 69
+ EntryPoint TessellationControl 4 "main" 42 46 48 64 66 74
ExecutionMode 4 OutputVertices 4
+ ExecutionMode 4 Isolines
+ ExecutionMode 4 SpacingEqual
+ Source HLSL 500
Name 4 "main"
Name 8 "VS_OUT"
MemberName 8(VS_OUT) 0 "cpoint"
@@ -237,22 +246,23 @@ vertices = 4
Name 30 "output"
Name 40 "ip"
Name 42 "ip"
- Name 45 "@entryPointOutput"
- Name 46 "param"
- Name 52 "InvocationId"
- Name 59 "@patchConstantResult"
- Name 60 "pid"
- Name 62 "pos"
- Name 63 "param"
- Name 65 "param"
- Name 69 "@patchConstantOutput_edges"
- Name 79 "output"
+ Name 46 "@entryPointOutput"
+ Name 48 "InvocationId"
+ Name 50 "param"
+ Name 63 "@patchConstantResult"
+ Name 64 "pid"
+ Name 66 "pos"
+ Name 67 "param"
+ Name 69 "param"
+ Name 74 "@patchConstantOutput.edges"
+ Name 84 "output"
Decorate 42(ip) Location 0
- Decorate 45(@entryPointOutput) Location 0
- Decorate 52(InvocationId) BuiltIn InvocationId
- Decorate 60(pid) BuiltIn PrimitiveId
- Decorate 62(pos) BuiltIn Position
- Decorate 69(@patchConstantOutput_edges) BuiltIn TessLevelOuter
+ Decorate 46(@entryPointOutput) Location 0
+ Decorate 48(InvocationId) BuiltIn InvocationId
+ Decorate 64(pid) BuiltIn PrimitiveId
+ Decorate 66(pos) BuiltIn Position
+ Decorate 74(@patchConstantOutput.edges) Patch
+ Decorate 74(@patchConstantOutput.edges) BuiltIn TessLevelOuter
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -277,59 +287,64 @@ vertices = 4
33: TypePointer Function 7(fvec3)
41: TypePointer Input 11
42(ip): 41(ptr) Variable Input
- 44: TypePointer Output 13(HS_OUT)
-45(@entryPointOutput): 44(ptr) Variable Output
- 49: 9(int) Constant 1
- 50: 9(int) Constant 0
- 51: TypePointer Input 9(int)
-52(InvocationId): 51(ptr) Variable Input
- 54: TypeBool
- 58: TypePointer Function 23(HS_CONSTANT_OUT)
- 60(pid): 51(ptr) Variable Input
- 61: TypePointer Input 19(fvec4)
- 62(pos): 61(ptr) Variable Input
- 68: TypePointer Output 22
-69(@patchConstantOutput_edges): 68(ptr) Variable Output
- 70: TypePointer Function 6(float)
- 73: TypePointer Output 6(float)
- 75: 31(int) Constant 1
- 80: 6(float) Constant 1073741824
- 82: 6(float) Constant 1090519040
+ 44: TypeArray 13(HS_OUT) 10
+ 45: TypePointer Output 44
+46(@entryPointOutput): 45(ptr) Variable Output
+ 47: TypePointer Input 9(int)
+48(InvocationId): 47(ptr) Variable Input
+ 53: TypePointer Output 13(HS_OUT)
+ 55: 9(int) Constant 1
+ 56: 9(int) Constant 0
+ 58: TypeBool
+ 62: TypePointer Function 23(HS_CONSTANT_OUT)
+ 64(pid): 47(ptr) Variable Input
+ 65: TypePointer Input 19(fvec4)
+ 66(pos): 65(ptr) Variable Input
+ 72: TypeArray 6(float) 10
+ 73: TypePointer Output 72
+74(@patchConstantOutput.edges): 73(ptr) Variable Output
+ 75: TypePointer Function 6(float)
+ 78: TypePointer Output 6(float)
+ 80: 31(int) Constant 1
+ 85: 6(float) Constant 1073741824
+ 87: 6(float) Constant 1090519040
4(main): 2 Function None 3
5: Label
40(ip): 12(ptr) Variable Function
- 46(param): 12(ptr) Variable Function
-59(@patchConstantResult): 58(ptr) Variable Function
- 63(param): 18(ptr) Variable Function
- 65(param): 20(ptr) Variable Function
+ 50(param): 12(ptr) Variable Function
+63(@patchConstantResult): 62(ptr) Variable Function
+ 67(param): 18(ptr) Variable Function
+ 69(param): 20(ptr) Variable Function
43: 11 Load 42(ip)
Store 40(ip) 43
- 47: 11 Load 40(ip)
- Store 46(param) 47
- 48: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 46(param)
- Store 45(@entryPointOutput) 48
- ControlBarrier 21 49 50
- 53: 9(int) Load 52(InvocationId)
- 55: 54(bool) IEqual 53 32
- SelectionMerge 57 None
- BranchConditional 55 56 57
- 56: Label
- 64: 9(int) Load 60(pid)
- Store 63(param) 64
- 66: 19(fvec4) Load 62(pos)
- Store 65(param) 66
- 67:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 63(param) 65(param)
- Store 59(@patchConstantResult) 67
- 71: 70(ptr) AccessChain 59(@patchConstantResult) 32 32
- 72: 6(float) Load 71
- 74: 73(ptr) AccessChain 69(@patchConstantOutput_edges) 32
- Store 74 72
- 76: 70(ptr) AccessChain 59(@patchConstantResult) 32 75
+ 49: 9(int) Load 48(InvocationId)
+ 51: 11 Load 40(ip)
+ Store 50(param) 51
+ 52: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 50(param)
+ 54: 53(ptr) AccessChain 46(@entryPointOutput) 49
+ Store 54 52
+ ControlBarrier 21 55 56
+ 57: 9(int) Load 48(InvocationId)
+ 59: 58(bool) IEqual 57 32
+ SelectionMerge 61 None
+ BranchConditional 59 60 61
+ 60: Label
+ 68: 9(int) Load 64(pid)
+ Store 67(param) 68
+ 70: 19(fvec4) Load 66(pos)
+ Store 69(param) 70
+ 71:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 67(param) 69(param)
+ Store 63(@patchConstantResult) 71
+ 76: 75(ptr) AccessChain 63(@patchConstantResult) 32 32
77: 6(float) Load 76
- 78: 73(ptr) AccessChain 69(@patchConstantOutput_edges) 75
- Store 78 77
- Branch 57
- 57: Label
+ 79: 78(ptr) AccessChain 74(@patchConstantOutput.edges) 32
+ Store 79 77
+ 81: 75(ptr) AccessChain 63(@patchConstantResult) 32 80
+ 82: 6(float) Load 81
+ 83: 78(ptr) AccessChain 74(@patchConstantOutput.edges) 80
+ Store 83 82
+ Branch 61
+ 61: Label
Return
FunctionEnd
16(@main(struct-VS_OUT-vf31[4];): 13(HS_OUT) Function None 14
@@ -347,11 +362,11 @@ vertices = 4
25(pid): 18(ptr) FunctionParameter
26(pos): 20(ptr) FunctionParameter
28: Label
- 79(output): 58(ptr) Variable Function
- 81: 70(ptr) AccessChain 79(output) 32 32
- Store 81 80
- 83: 70(ptr) AccessChain 79(output) 32 75
- Store 83 82
- 84:23(HS_CONSTANT_OUT) Load 79(output)
- ReturnValue 84
+ 84(output): 62(ptr) Variable Function
+ 86: 75(ptr) AccessChain 84(output) 32 32
+ Store 86 85
+ 88: 75(ptr) AccessChain 84(output) 32 80
+ Store 88 87
+ 89:23(HS_CONSTANT_OUT) Load 84(output)
+ ReturnValue 89
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.3.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.3.tesc.out
new file mode 100644
index 00000000000..59eed0d06d2
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.3.tesc.out
@@ -0,0 +1,373 @@
+hlsl.hull.3.tesc
+Shader version: 500
+vertices = 4
+vertex spacing = equal_spacing
+0:? Sequence
+0:26 Function Definition: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
+0:26 Function Parameters:
+0:26 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? Sequence
+0:28 move second child to first child ( temp 3-component vector of float)
+0:28 cpoint: direct index for structure ( temp 3-component vector of float)
+0:28 'output' ( temp structure{ temp 3-component vector of float cpoint})
+0:28 Constant:
+0:28 0 (const int)
+0:28 cpoint: direct index for structure ( temp 3-component vector of float)
+0:28 direct index ( temp structure{ temp 3-component vector of float cpoint})
+0:28 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 0 (const int)
+0:29 Branch: Return with expression
+0:29 'output' ( temp structure{ temp 3-component vector of float cpoint})
+0:26 Function Definition: main( ( temp void)
+0:26 Function Parameters:
+0:? Sequence
+0:26 move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
+0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
+0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'InvocationId' ( in uint InvocationID)
+0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
+0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? Barrier ( temp void)
+0:? Test condition and select ( temp void)
+0:? Condition
+0:? Compare Equal ( temp bool)
+0:? 'InvocationId' ( in uint InvocationID)
+0:? Constant:
+0:? 0 (const int)
+0:? true case
+0:? Sequence
+0:? move second child to first child ( temp structure{ temp 2-element array of float edges})
+0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
+0:? Function Call: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges})
+0:? 'pid' ( in uint PrimitiveID)
+0:? 'pos' ( in 4-component vector of float Position)
+0:? Sequence
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 0 (const int)
+0:? direct index ( temp float)
+0:? edges: direct index for structure ( temp 2-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 0 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 1 (const int)
+0:? direct index ( temp float)
+0:? edges: direct index for structure ( temp 2-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 1 (const int)
+0:33 Function Definition: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges})
+0:33 Function Parameters:
+0:33 'pid' ( in uint)
+0:33 'pos' ( in 4-component vector of float)
+0:? Sequence
+0:36 move second child to first child ( temp float)
+0:36 direct index ( temp float)
+0:36 edges: direct index for structure ( temp 2-element array of float)
+0:36 'output' ( temp structure{ temp 2-element array of float edges})
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 2.000000
+0:37 move second child to first child ( temp float)
+0:37 direct index ( temp float)
+0:37 edges: direct index for structure ( temp 2-element array of float)
+0:37 'output' ( temp structure{ temp 2-element array of float edges})
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 8.000000
+0:38 Branch: Return with expression
+0:38 'output' ( temp structure{ temp 2-element array of float edges})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'InvocationId' ( in uint InvocationID)
+0:? 'pid' ( in uint PrimitiveID)
+0:? 'pos' ( in 4-component vector of float Position)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
+
+
+Linked tessellation control stage:
+
+
+Shader version: 500
+vertices = 4
+vertex spacing = equal_spacing
+0:? Sequence
+0:26 Function Definition: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
+0:26 Function Parameters:
+0:26 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? Sequence
+0:28 move second child to first child ( temp 3-component vector of float)
+0:28 cpoint: direct index for structure ( temp 3-component vector of float)
+0:28 'output' ( temp structure{ temp 3-component vector of float cpoint})
+0:28 Constant:
+0:28 0 (const int)
+0:28 cpoint: direct index for structure ( temp 3-component vector of float)
+0:28 direct index ( temp structure{ temp 3-component vector of float cpoint})
+0:28 'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 0 (const int)
+0:29 Branch: Return with expression
+0:29 'output' ( temp structure{ temp 3-component vector of float cpoint})
+0:26 Function Definition: main( ( temp void)
+0:26 Function Parameters:
+0:? Sequence
+0:26 move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
+0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
+0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'InvocationId' ( in uint InvocationID)
+0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
+0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? Barrier ( temp void)
+0:? Test condition and select ( temp void)
+0:? Condition
+0:? Compare Equal ( temp bool)
+0:? 'InvocationId' ( in uint InvocationID)
+0:? Constant:
+0:? 0 (const int)
+0:? true case
+0:? Sequence
+0:? move second child to first child ( temp structure{ temp 2-element array of float edges})
+0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
+0:? Function Call: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges})
+0:? 'pid' ( in uint PrimitiveID)
+0:? 'pos' ( in 4-component vector of float Position)
+0:? Sequence
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 0 (const int)
+0:? direct index ( temp float)
+0:? edges: direct index for structure ( temp 2-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 0 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 1 (const int)
+0:? direct index ( temp float)
+0:? edges: direct index for structure ( temp 2-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 1 (const int)
+0:33 Function Definition: PCF(u1;vf4; ( temp structure{ temp 2-element array of float edges})
+0:33 Function Parameters:
+0:33 'pid' ( in uint)
+0:33 'pos' ( in 4-component vector of float)
+0:? Sequence
+0:36 move second child to first child ( temp float)
+0:36 direct index ( temp float)
+0:36 edges: direct index for structure ( temp 2-element array of float)
+0:36 'output' ( temp structure{ temp 2-element array of float edges})
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 2.000000
+0:37 move second child to first child ( temp float)
+0:37 direct index ( temp float)
+0:37 edges: direct index for structure ( temp 2-element array of float)
+0:37 'output' ( temp structure{ temp 2-element array of float edges})
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 8.000000
+0:38 Branch: Return with expression
+0:38 'output' ( temp structure{ temp 2-element array of float edges})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'InvocationId' ( in uint InvocationID)
+0:? 'pid' ( in uint PrimitiveID)
+0:? 'pos' ( in 4-component vector of float Position)
+0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 92
+
+ Capability Tessellation
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationControl 4 "main" 42 46 48 64 66 74
+ ExecutionMode 4 OutputVertices 4
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 SpacingEqual
+ ExecutionMode 4 PointMode
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "VS_OUT"
+ MemberName 8(VS_OUT) 0 "cpoint"
+ Name 13 "HS_OUT"
+ MemberName 13(HS_OUT) 0 "cpoint"
+ Name 16 "@main(struct-VS_OUT-vf31[4];"
+ Name 15 "ip"
+ Name 23 "HS_CONSTANT_OUT"
+ MemberName 23(HS_CONSTANT_OUT) 0 "edges"
+ Name 27 "PCF(u1;vf4;"
+ Name 25 "pid"
+ Name 26 "pos"
+ Name 30 "output"
+ Name 40 "ip"
+ Name 42 "ip"
+ Name 46 "@entryPointOutput"
+ Name 48 "InvocationId"
+ Name 50 "param"
+ Name 63 "@patchConstantResult"
+ Name 64 "pid"
+ Name 66 "pos"
+ Name 67 "param"
+ Name 69 "param"
+ Name 74 "@patchConstantOutput.edges"
+ Name 84 "output"
+ Decorate 42(ip) Location 0
+ Decorate 46(@entryPointOutput) Location 0
+ Decorate 48(InvocationId) BuiltIn InvocationId
+ Decorate 64(pid) BuiltIn PrimitiveId
+ Decorate 66(pos) BuiltIn Position
+ Decorate 74(@patchConstantOutput.edges) Patch
+ Decorate 74(@patchConstantOutput.edges) BuiltIn TessLevelOuter
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8(VS_OUT): TypeStruct 7(fvec3)
+ 9: TypeInt 32 0
+ 10: 9(int) Constant 4
+ 11: TypeArray 8(VS_OUT) 10
+ 12: TypePointer Function 11
+ 13(HS_OUT): TypeStruct 7(fvec3)
+ 14: TypeFunction 13(HS_OUT) 12(ptr)
+ 18: TypePointer Function 9(int)
+ 19: TypeVector 6(float) 4
+ 20: TypePointer Function 19(fvec4)
+ 21: 9(int) Constant 2
+ 22: TypeArray 6(float) 21
+23(HS_CONSTANT_OUT): TypeStruct 22
+ 24: TypeFunction 23(HS_CONSTANT_OUT) 18(ptr) 20(ptr)
+ 29: TypePointer Function 13(HS_OUT)
+ 31: TypeInt 32 1
+ 32: 31(int) Constant 0
+ 33: TypePointer Function 7(fvec3)
+ 41: TypePointer Input 11
+ 42(ip): 41(ptr) Variable Input
+ 44: TypeArray 13(HS_OUT) 10
+ 45: TypePointer Output 44
+46(@entryPointOutput): 45(ptr) Variable Output
+ 47: TypePointer Input 9(int)
+48(InvocationId): 47(ptr) Variable Input
+ 53: TypePointer Output 13(HS_OUT)
+ 55: 9(int) Constant 1
+ 56: 9(int) Constant 0
+ 58: TypeBool
+ 62: TypePointer Function 23(HS_CONSTANT_OUT)
+ 64(pid): 47(ptr) Variable Input
+ 65: TypePointer Input 19(fvec4)
+ 66(pos): 65(ptr) Variable Input
+ 72: TypeArray 6(float) 10
+ 73: TypePointer Output 72
+74(@patchConstantOutput.edges): 73(ptr) Variable Output
+ 75: TypePointer Function 6(float)
+ 78: TypePointer Output 6(float)
+ 80: 31(int) Constant 1
+ 85: 6(float) Constant 1073741824
+ 87: 6(float) Constant 1090519040
+ 4(main): 2 Function None 3
+ 5: Label
+ 40(ip): 12(ptr) Variable Function
+ 50(param): 12(ptr) Variable Function
+63(@patchConstantResult): 62(ptr) Variable Function
+ 67(param): 18(ptr) Variable Function
+ 69(param): 20(ptr) Variable Function
+ 43: 11 Load 42(ip)
+ Store 40(ip) 43
+ 49: 9(int) Load 48(InvocationId)
+ 51: 11 Load 40(ip)
+ Store 50(param) 51
+ 52: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 50(param)
+ 54: 53(ptr) AccessChain 46(@entryPointOutput) 49
+ Store 54 52
+ ControlBarrier 21 55 56
+ 57: 9(int) Load 48(InvocationId)
+ 59: 58(bool) IEqual 57 32
+ SelectionMerge 61 None
+ BranchConditional 59 60 61
+ 60: Label
+ 68: 9(int) Load 64(pid)
+ Store 67(param) 68
+ 70: 19(fvec4) Load 66(pos)
+ Store 69(param) 70
+ 71:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 67(param) 69(param)
+ Store 63(@patchConstantResult) 71
+ 76: 75(ptr) AccessChain 63(@patchConstantResult) 32 32
+ 77: 6(float) Load 76
+ 79: 78(ptr) AccessChain 74(@patchConstantOutput.edges) 32
+ Store 79 77
+ 81: 75(ptr) AccessChain 63(@patchConstantResult) 32 80
+ 82: 6(float) Load 81
+ 83: 78(ptr) AccessChain 74(@patchConstantOutput.edges) 80
+ Store 83 82
+ Branch 61
+ 61: Label
+ Return
+ FunctionEnd
+16(@main(struct-VS_OUT-vf31[4];): 13(HS_OUT) Function None 14
+ 15(ip): 12(ptr) FunctionParameter
+ 17: Label
+ 30(output): 29(ptr) Variable Function
+ 34: 33(ptr) AccessChain 15(ip) 32 32
+ 35: 7(fvec3) Load 34
+ 36: 33(ptr) AccessChain 30(output) 32
+ Store 36 35
+ 37: 13(HS_OUT) Load 30(output)
+ ReturnValue 37
+ FunctionEnd
+ 27(PCF(u1;vf4;):23(HS_CONSTANT_OUT) Function None 24
+ 25(pid): 18(ptr) FunctionParameter
+ 26(pos): 20(ptr) FunctionParameter
+ 28: Label
+ 84(output): 62(ptr) Variable Function
+ 86: 75(ptr) AccessChain 84(output) 32 32
+ Store 86 85
+ 88: 75(ptr) AccessChain 84(output) 32 80
+ Store 88 87
+ 89:23(HS_CONSTANT_OUT) Load 84(output)
+ ReturnValue 89
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.4.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.4.tesc.out
new file mode 100644
index 00000000000..139d7d41058
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.4.tesc.out
@@ -0,0 +1,681 @@
+hlsl.hull.4.tesc
+Shader version: 500
+vertices = 3
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+0:? Sequence
+0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:25 Function Parameters:
+0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? Sequence
+0:26 Sequence
+0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:26 Constant:
+0:26 0.000000
+0:26 0.000000
+0:26 0.000000
+0:26 0.000000
+0:28 move second child to first child ( temp float)
+0:28 fInsideTessFactor: direct index for structure ( temp float)
+0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:28 Constant:
+0:28 1 (const int)
+0:28 add ( temp float)
+0:28 direct index ( temp float)
+0:28 m_Position: direct index for structure ( temp 4-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 3 (const int)
+0:28 direct index ( temp float)
+0:28 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 1 (const int)
+0:28 Constant:
+0:28 3 (const int)
+0:30 Branch: Return with expression
+0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:39 Function Definition: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position})
+0:39 Function Parameters:
+0:39 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 'cpid' ( in uint)
+0:? Sequence
+0:40 Sequence
+0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position})
+0:40 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:40 Constant:
+0:40 0.000000
+0:40 0.000000
+0:40 0.000000
+0:40 0.000000
+0:41 move second child to first child ( temp 4-component vector of float)
+0:41 m_Position: direct index for structure ( temp 4-component vector of float)
+0:41 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 0.000000
+0:41 0.000000
+0:41 0.000000
+0:41 0.000000
+0:42 Branch: Return with expression
+0:42 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:39 Function Definition: main( ( temp void)
+0:39 Function Parameters:
+0:? Sequence
+0:39 Sequence
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Position: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( in 4-component vector of float Position)
+0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position)
+0:39 Constant:
+0:39 0 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal})
+0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Position: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 1 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( in 4-component vector of float Position)
+0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position)
+0:39 Constant:
+0:39 1 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 1 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal})
+0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 1 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Position: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 2 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( in 4-component vector of float Position)
+0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position)
+0:39 Constant:
+0:39 2 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 2 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal})
+0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 2 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 move second child to first child ( temp uint)
+0:? 'cpid' ( temp uint)
+0:? 'cpid' ( in uint InvocationID)
+0:39 Sequence
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 direct index ( out 4-component vector of float Position)
+0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
+0:39 Constant:
+0:39 0 (const int)
+0:39 m_Position: direct index for structure ( temp 4-component vector of float)
+0:39 Function Call: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'cpid' ( temp uint)
+0:39 Constant:
+0:39 0 (const int)
+0:? Barrier ( temp void)
+0:? Test condition and select ( temp void)
+0:? Condition
+0:? Compare Equal ( temp bool)
+0:? 'cpid' ( in uint InvocationID)
+0:? Constant:
+0:? 0 (const int)
+0:? true case
+0:? Sequence
+0:? move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? Function Call: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? Sequence
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 0 (const int)
+0:? direct index ( temp float)
+0:? fTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 0 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 1 (const int)
+0:? direct index ( temp float)
+0:? fTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 1 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 2 (const int)
+0:? direct index ( temp float)
+0:? fTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 2 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelInner)
+0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)
+0:? Constant:
+0:? 0 (const int)
+0:? fInsideTessFactor: direct index for structure ( temp float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? Constant:
+0:? 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
+0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position)
+0:? 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
+0:? 'cpid' ( in uint InvocationID)
+0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)
+
+
+Linked tessellation control stage:
+
+
+Shader version: 500
+vertices = 3
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+0:? Sequence
+0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:25 Function Parameters:
+0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? Sequence
+0:26 Sequence
+0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:26 Constant:
+0:26 0.000000
+0:26 0.000000
+0:26 0.000000
+0:26 0.000000
+0:28 move second child to first child ( temp float)
+0:28 fInsideTessFactor: direct index for structure ( temp float)
+0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:28 Constant:
+0:28 1 (const int)
+0:28 add ( temp float)
+0:28 direct index ( temp float)
+0:28 m_Position: direct index for structure ( temp 4-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 3 (const int)
+0:28 direct index ( temp float)
+0:28 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 1 (const int)
+0:28 Constant:
+0:28 3 (const int)
+0:30 Branch: Return with expression
+0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:39 Function Definition: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position})
+0:39 Function Parameters:
+0:39 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 'cpid' ( in uint)
+0:? Sequence
+0:40 Sequence
+0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position})
+0:40 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:40 Constant:
+0:40 0.000000
+0:40 0.000000
+0:40 0.000000
+0:40 0.000000
+0:41 move second child to first child ( temp 4-component vector of float)
+0:41 m_Position: direct index for structure ( temp 4-component vector of float)
+0:41 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 0.000000
+0:41 0.000000
+0:41 0.000000
+0:41 0.000000
+0:42 Branch: Return with expression
+0:42 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:39 Function Definition: main( ( temp void)
+0:39 Function Parameters:
+0:? Sequence
+0:39 Sequence
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Position: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( in 4-component vector of float Position)
+0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position)
+0:39 Constant:
+0:39 0 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal})
+0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Position: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 1 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( in 4-component vector of float Position)
+0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position)
+0:39 Constant:
+0:39 1 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 1 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal})
+0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 1 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Position: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 2 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( in 4-component vector of float Position)
+0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position)
+0:39 Constant:
+0:39 2 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 2 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal})
+0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
+0:39 Constant:
+0:39 2 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 move second child to first child ( temp uint)
+0:? 'cpid' ( temp uint)
+0:? 'cpid' ( in uint InvocationID)
+0:39 Sequence
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 direct index ( out 4-component vector of float Position)
+0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
+0:39 Constant:
+0:39 0 (const int)
+0:39 m_Position: direct index for structure ( temp 4-component vector of float)
+0:39 Function Call: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? 'cpid' ( temp uint)
+0:39 Constant:
+0:39 0 (const int)
+0:? Barrier ( temp void)
+0:? Test condition and select ( temp void)
+0:? Condition
+0:? Compare Equal ( temp bool)
+0:? 'cpid' ( in uint InvocationID)
+0:? Constant:
+0:? 0 (const int)
+0:? true case
+0:? Sequence
+0:? move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? Function Call: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? Sequence
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 0 (const int)
+0:? direct index ( temp float)
+0:? fTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 0 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 1 (const int)
+0:? direct index ( temp float)
+0:? fTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 1 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 2 (const int)
+0:? direct index ( temp float)
+0:? fTessFactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 2 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelInner)
+0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)
+0:? Constant:
+0:? 0 (const int)
+0:? fInsideTessFactor: direct index for structure ( temp float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:? Constant:
+0:? 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
+0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position)
+0:? 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
+0:? 'cpid' ( in uint InvocationID)
+0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 127
+
+ Capability Tessellation
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationControl 4 "main" 56 64 83 86 110 123
+ ExecutionMode 4 OutputVertices 3
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 SpacingFractionalOdd
+ ExecutionMode 4 VertexOrderCw
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "HS_Input"
+ MemberName 8(HS_Input) 0 "m_Position"
+ MemberName 8(HS_Input) 1 "m_Normal"
+ Name 14 "HS_Output"
+ MemberName 14(HS_Output) 0 "fTessFactor"
+ MemberName 14(HS_Output) 1 "fInsideTessFactor"
+ Name 17 "HS_ConstFunc(struct-HS_Input-vf4-vf41[3];"
+ Name 16 "I"
+ Name 20 "HS_Main_Output"
+ MemberName 20(HS_Main_Output) 0 "m_Position"
+ Name 24 "@main(struct-HS_Input-vf4-vf41[3];u1;"
+ Name 22 "I"
+ Name 23 "cpid"
+ Name 27 "O"
+ Name 45 "output"
+ Name 53 "I"
+ Name 56 "I.m_Position"
+ Name 61 "HS_Input"
+ MemberName 61(HS_Input) 0 "m_Normal"
+ Name 64 "I"
+ Name 81 "cpid"
+ Name 83 "cpid"
+ Name 86 "@entryPointOutput.m_Position"
+ Name 87 "param"
+ Name 89 "param"
+ Name 103 "@patchConstantResult"
+ Name 104 "param"
+ Name 110 "@patchConstantOutput.fTessFactor"
+ Name 123 "@patchConstantOutput.fInsideTessFactor"
+ Decorate 56(I.m_Position) BuiltIn Position
+ Decorate 64(I) Location 0
+ Decorate 83(cpid) BuiltIn InvocationId
+ Decorate 86(@entryPointOutput.m_Position) BuiltIn Position
+ Decorate 110(@patchConstantOutput.fTessFactor) Patch
+ Decorate 110(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter
+ Decorate 123(@patchConstantOutput.fInsideTessFactor) Patch
+ Decorate 123(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8(HS_Input): TypeStruct 7(fvec4) 7(fvec4)
+ 9: TypeInt 32 0
+ 10: 9(int) Constant 3
+ 11: TypeArray 8(HS_Input) 10
+ 12: TypePointer Function 11
+ 13: TypeArray 6(float) 10
+ 14(HS_Output): TypeStruct 13 6(float)
+ 15: TypeFunction 14(HS_Output) 12(ptr)
+ 19: TypePointer Function 9(int)
+20(HS_Main_Output): TypeStruct 7(fvec4)
+ 21: TypeFunction 20(HS_Main_Output) 12(ptr) 19(ptr)
+ 26: TypePointer Function 14(HS_Output)
+ 28: 6(float) Constant 0
+ 29: 13 ConstantComposite 28 28 28
+ 30:14(HS_Output) ConstantComposite 29 28
+ 31: TypeInt 32 1
+ 32: 31(int) Constant 1
+ 33: 31(int) Constant 0
+ 34: TypePointer Function 6(float)
+ 44: TypePointer Function 20(HS_Main_Output)
+ 46: 7(fvec4) ConstantComposite 28 28 28 28
+ 47:20(HS_Main_Output) ConstantComposite 46
+ 48: TypePointer Function 7(fvec4)
+ 54: TypeArray 7(fvec4) 10
+ 55: TypePointer Input 54
+56(I.m_Position): 55(ptr) Variable Input
+ 57: TypePointer Input 7(fvec4)
+ 61(HS_Input): TypeStruct 7(fvec4)
+ 62: TypeArray 61(HS_Input) 10
+ 63: TypePointer Input 62
+ 64(I): 63(ptr) Variable Input
+ 74: 31(int) Constant 2
+ 82: TypePointer Input 9(int)
+ 83(cpid): 82(ptr) Variable Input
+ 85: TypePointer Output 54
+86(@entryPointOutput.m_Position): 85(ptr) Variable Output
+ 93: TypePointer Output 7(fvec4)
+ 95: 9(int) Constant 2
+ 96: 9(int) Constant 1
+ 97: 9(int) Constant 0
+ 99: TypeBool
+ 107: 9(int) Constant 4
+ 108: TypeArray 6(float) 107
+ 109: TypePointer Output 108
+110(@patchConstantOutput.fTessFactor): 109(ptr) Variable Output
+ 113: TypePointer Output 6(float)
+ 121: TypeArray 6(float) 95
+ 122: TypePointer Output 121
+123(@patchConstantOutput.fInsideTessFactor): 122(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 53(I): 12(ptr) Variable Function
+ 81(cpid): 19(ptr) Variable Function
+ 87(param): 12(ptr) Variable Function
+ 89(param): 19(ptr) Variable Function
+103(@patchConstantResult): 26(ptr) Variable Function
+ 104(param): 12(ptr) Variable Function
+ 58: 57(ptr) AccessChain 56(I.m_Position) 33
+ 59: 7(fvec4) Load 58
+ 60: 48(ptr) AccessChain 53(I) 33 33
+ Store 60 59
+ 65: 57(ptr) AccessChain 64(I) 33 33
+ 66: 7(fvec4) Load 65
+ 67: 48(ptr) AccessChain 53(I) 33 32
+ Store 67 66
+ 68: 57(ptr) AccessChain 56(I.m_Position) 32
+ 69: 7(fvec4) Load 68
+ 70: 48(ptr) AccessChain 53(I) 32 33
+ Store 70 69
+ 71: 57(ptr) AccessChain 64(I) 32 33
+ 72: 7(fvec4) Load 71
+ 73: 48(ptr) AccessChain 53(I) 32 32
+ Store 73 72
+ 75: 57(ptr) AccessChain 56(I.m_Position) 74
+ 76: 7(fvec4) Load 75
+ 77: 48(ptr) AccessChain 53(I) 74 33
+ Store 77 76
+ 78: 57(ptr) AccessChain 64(I) 74 33
+ 79: 7(fvec4) Load 78
+ 80: 48(ptr) AccessChain 53(I) 74 32
+ Store 80 79
+ 84: 9(int) Load 83(cpid)
+ Store 81(cpid) 84
+ 88: 11 Load 53(I)
+ Store 87(param) 88
+ 90: 9(int) Load 81(cpid)
+ Store 89(param) 90
+ 91:20(HS_Main_Output) FunctionCall 24(@main(struct-HS_Input-vf4-vf41[3];u1;) 87(param) 89(param)
+ 92: 7(fvec4) CompositeExtract 91 0
+ 94: 93(ptr) AccessChain 86(@entryPointOutput.m_Position) 33
+ Store 94 92
+ ControlBarrier 95 96 97
+ 98: 9(int) Load 83(cpid)
+ 100: 99(bool) IEqual 98 33
+ SelectionMerge 102 None
+ BranchConditional 100 101 102
+ 101: Label
+ 105: 11 Load 53(I)
+ Store 104(param) 105
+ 106:14(HS_Output) FunctionCall 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];) 104(param)
+ Store 103(@patchConstantResult) 106
+ 111: 34(ptr) AccessChain 103(@patchConstantResult) 33 33
+ 112: 6(float) Load 111
+ 114: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 33
+ Store 114 112
+ 115: 34(ptr) AccessChain 103(@patchConstantResult) 33 32
+ 116: 6(float) Load 115
+ 117: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 32
+ Store 117 116
+ 118: 34(ptr) AccessChain 103(@patchConstantResult) 33 74
+ 119: 6(float) Load 118
+ 120: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 74
+ Store 120 119
+ 124: 34(ptr) AccessChain 103(@patchConstantResult) 32
+ 125: 6(float) Load 124
+ 126: 113(ptr) AccessChain 123(@patchConstantOutput.fInsideTessFactor) 33
+ Store 126 125
+ Branch 102
+ 102: Label
+ Return
+ FunctionEnd
+17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];):14(HS_Output) Function None 15
+ 16(I): 12(ptr) FunctionParameter
+ 18: Label
+ 27(O): 26(ptr) Variable Function
+ Store 27(O) 30
+ 35: 34(ptr) AccessChain 16(I) 33 33 10
+ 36: 6(float) Load 35
+ 37: 34(ptr) AccessChain 16(I) 33 32 10
+ 38: 6(float) Load 37
+ 39: 6(float) FAdd 36 38
+ 40: 34(ptr) AccessChain 27(O) 32
+ Store 40 39
+ 41:14(HS_Output) Load 27(O)
+ ReturnValue 41
+ FunctionEnd
+24(@main(struct-HS_Input-vf4-vf41[3];u1;):20(HS_Main_Output) Function None 21
+ 22(I): 12(ptr) FunctionParameter
+ 23(cpid): 19(ptr) FunctionParameter
+ 25: Label
+ 45(output): 44(ptr) Variable Function
+ Store 45(output) 47
+ 49: 48(ptr) AccessChain 45(output) 33
+ Store 49 46
+ 50:20(HS_Main_Output) Load 45(output)
+ ReturnValue 50
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.5.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.5.tesc.out
new file mode 100644
index 00000000000..3a42b52e6b7
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.5.tesc.out
@@ -0,0 +1,190 @@
+hlsl.hull.5.tesc
+ERROR: 0:0: '' : unimplemented: PCF input patch without entry point input patch parameter
+ERROR: 1 compilation errors. No code generated.
+
+
+Shader version: 500
+vertices = 3
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+ERROR: node is still EOpNull!
+0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:25 Function Parameters:
+0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? Sequence
+0:26 Sequence
+0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:26 Constant:
+0:26 0.000000
+0:26 0.000000
+0:26 0.000000
+0:26 0.000000
+0:28 move second child to first child ( temp float)
+0:28 fInsideTessFactor: direct index for structure ( temp float)
+0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:28 Constant:
+0:28 1 (const int)
+0:28 add ( temp float)
+0:28 direct index ( temp float)
+0:28 m_Position: direct index for structure ( temp 4-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 3 (const int)
+0:28 direct index ( temp float)
+0:28 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 1 (const int)
+0:28 Constant:
+0:28 3 (const int)
+0:30 Branch: Return with expression
+0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:39 Function Definition: @main(u1; ( temp structure{ temp 4-component vector of float m_Position})
+0:39 Function Parameters:
+0:39 'cpid' ( in uint)
+0:? Sequence
+0:40 Sequence
+0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position})
+0:40 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:40 Constant:
+0:40 0.000000
+0:40 0.000000
+0:40 0.000000
+0:40 0.000000
+0:41 move second child to first child ( temp 4-component vector of float)
+0:41 m_Position: direct index for structure ( temp 4-component vector of float)
+0:41 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 0.000000
+0:41 0.000000
+0:41 0.000000
+0:41 0.000000
+0:42 Branch: Return with expression
+0:42 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:39 Function Definition: main( ( temp void)
+0:39 Function Parameters:
+0:? Sequence
+0:39 move second child to first child ( temp uint)
+0:? 'cpid' ( temp uint)
+0:? 'cpid' ( in uint InvocationID)
+0:39 Sequence
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 direct index ( out 4-component vector of float Position)
+0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
+0:39 Constant:
+0:39 0 (const int)
+0:39 m_Position: direct index for structure ( temp 4-component vector of float)
+0:39 Function Call: @main(u1; ( temp structure{ temp 4-component vector of float m_Position})
+0:? 'cpid' ( temp uint)
+0:39 Constant:
+0:39 0 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
+0:? 'cpid' ( in uint InvocationID)
+
+
+Linked tessellation control stage:
+
+
+Shader version: 500
+vertices = 3
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+ERROR: node is still EOpNull!
+0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:25 Function Parameters:
+0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:? Sequence
+0:26 Sequence
+0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:26 Constant:
+0:26 0.000000
+0:26 0.000000
+0:26 0.000000
+0:26 0.000000
+0:28 move second child to first child ( temp float)
+0:28 fInsideTessFactor: direct index for structure ( temp float)
+0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:28 Constant:
+0:28 1 (const int)
+0:28 add ( temp float)
+0:28 direct index ( temp float)
+0:28 m_Position: direct index for structure ( temp 4-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 3 (const int)
+0:28 direct index ( temp float)
+0:28 m_Normal: direct index for structure ( temp 4-component vector of float)
+0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 1 (const int)
+0:28 Constant:
+0:28 3 (const int)
+0:30 Branch: Return with expression
+0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor})
+0:39 Function Definition: @main(u1; ( temp structure{ temp 4-component vector of float m_Position})
+0:39 Function Parameters:
+0:39 'cpid' ( in uint)
+0:? Sequence
+0:40 Sequence
+0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position})
+0:40 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:40 Constant:
+0:40 0.000000
+0:40 0.000000
+0:40 0.000000
+0:40 0.000000
+0:41 move second child to first child ( temp 4-component vector of float)
+0:41 m_Position: direct index for structure ( temp 4-component vector of float)
+0:41 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 0.000000
+0:41 0.000000
+0:41 0.000000
+0:41 0.000000
+0:42 Branch: Return with expression
+0:42 'output' ( temp structure{ temp 4-component vector of float m_Position})
+0:39 Function Definition: main( ( temp void)
+0:39 Function Parameters:
+0:? Sequence
+0:39 move second child to first child ( temp uint)
+0:? 'cpid' ( temp uint)
+0:? 'cpid' ( in uint InvocationID)
+0:39 Sequence
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 direct index ( out 4-component vector of float Position)
+0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
+0:39 Constant:
+0:39 0 (const int)
+0:39 m_Position: direct index for structure ( temp 4-component vector of float)
+0:39 Function Call: @main(u1; ( temp structure{ temp 4-component vector of float m_Position})
+0:? 'cpid' ( temp uint)
+0:39 Constant:
+0:39 0 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
+0:? 'cpid' ( in uint InvocationID)
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
new file mode 100644
index 00000000000..24e4aa7c33b
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
@@ -0,0 +1,604 @@
+hlsl.hull.ctrlpt-1.tesc
+Shader version: 500
+vertices = 3
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+0:? Sequence
+0:27 Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:27 Function Parameters:
+0:27 'i' ( in 3-element array of structure{ temp 3-component vector of float val})
+0:27 'cpid' ( in uint)
+0:? Sequence
+0:29 move second child to first child ( temp 3-component vector of float)
+0:29 val: direct index for structure ( temp 3-component vector of float)
+0:29 'o' ( temp structure{ temp 3-component vector of float val})
+0:29 Constant:
+0:29 0 (const int)
+0:29 Construct vec3 ( temp 3-component vector of float)
+0:29 Convert uint to float ( temp float)
+0:29 'cpid' ( in uint)
+0:30 Branch: Return with expression
+0:30 'o' ( temp structure{ temp 3-component vector of float val})
+0:27 Function Definition: main( ( temp void)
+0:27 Function Parameters:
+0:? Sequence
+0:27 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
+0:27 move second child to first child ( temp uint)
+0:? 'cpid' ( temp uint)
+0:? 'cpid' ( in uint InvocationID)
+0:27 move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:27 indirect index (layout( location=0) out structure{ temp 3-component vector of float val})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( in uint InvocationID)
+0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( temp uint)
+0:? Barrier ( temp void)
+0:? Test condition and select ( temp void)
+0:? Condition
+0:? Compare Equal ( temp bool)
+0:? 'cpid' ( in uint InvocationID)
+0:? Constant:
+0:? 0 (const int)
+0:? true case
+0:? Sequence
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 0 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 0 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 1 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 1 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 2 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 2 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Function Call: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Sequence
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 0 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 0 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 1 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 1 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 2 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 2 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelInner)
+0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
+0:? Constant:
+0:? 0 (const int)
+0:? flInFactor: direct index for structure ( temp float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 1 (const int)
+0:34 Function Definition: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:34 Function Parameters:
+0:34 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:? Sequence
+0:37 move second child to first child ( temp float)
+0:37 direct index ( temp float)
+0:37 tfactor: direct index for structure ( temp 3-element array of float)
+0:37 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 direct index ( temp float)
+0:37 val: direct index for structure ( temp 3-component vector of float)
+0:37 direct index ( temp structure{ temp 3-component vector of float val})
+0:37 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:38 move second child to first child ( temp float)
+0:38 direct index ( temp float)
+0:38 tfactor: direct index for structure ( temp 3-element array of float)
+0:38 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:38 Constant:
+0:38 0 (const int)
+0:38 Constant:
+0:38 1 (const int)
+0:38 direct index ( temp float)
+0:38 val: direct index for structure ( temp 3-component vector of float)
+0:38 direct index ( temp structure{ temp 3-component vector of float val})
+0:38 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:38 Constant:
+0:38 1 (const int)
+0:38 Constant:
+0:38 0 (const int)
+0:38 Constant:
+0:38 0 (const int)
+0:39 move second child to first child ( temp float)
+0:39 direct index ( temp float)
+0:39 tfactor: direct index for structure ( temp 3-element array of float)
+0:39 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 2 (const int)
+0:39 direct index ( temp float)
+0:39 val: direct index for structure ( temp 3-component vector of float)
+0:39 direct index ( temp structure{ temp 3-component vector of float val})
+0:39 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:39 Constant:
+0:39 2 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:40 move second child to first child ( temp float)
+0:40 flInFactor: direct index for structure ( temp float)
+0:40 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 4.000000
+0:42 Branch: Return with expression
+0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( in uint InvocationID)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
+
+
+Linked tessellation control stage:
+
+
+Shader version: 500
+vertices = 3
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+0:? Sequence
+0:27 Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:27 Function Parameters:
+0:27 'i' ( in 3-element array of structure{ temp 3-component vector of float val})
+0:27 'cpid' ( in uint)
+0:? Sequence
+0:29 move second child to first child ( temp 3-component vector of float)
+0:29 val: direct index for structure ( temp 3-component vector of float)
+0:29 'o' ( temp structure{ temp 3-component vector of float val})
+0:29 Constant:
+0:29 0 (const int)
+0:29 Construct vec3 ( temp 3-component vector of float)
+0:29 Convert uint to float ( temp float)
+0:29 'cpid' ( in uint)
+0:30 Branch: Return with expression
+0:30 'o' ( temp structure{ temp 3-component vector of float val})
+0:27 Function Definition: main( ( temp void)
+0:27 Function Parameters:
+0:? Sequence
+0:27 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
+0:27 move second child to first child ( temp uint)
+0:? 'cpid' ( temp uint)
+0:? 'cpid' ( in uint InvocationID)
+0:27 move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:27 indirect index (layout( location=0) out structure{ temp 3-component vector of float val})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( in uint InvocationID)
+0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( temp uint)
+0:? Barrier ( temp void)
+0:? Test condition and select ( temp void)
+0:? Condition
+0:? Compare Equal ( temp bool)
+0:? 'cpid' ( in uint InvocationID)
+0:? Constant:
+0:? 0 (const int)
+0:? true case
+0:? Sequence
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 0 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 0 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 1 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 1 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 2 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 2 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Function Call: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Sequence
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 0 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 0 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 1 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 1 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 2 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 2 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelInner)
+0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
+0:? Constant:
+0:? 0 (const int)
+0:? flInFactor: direct index for structure ( temp float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 1 (const int)
+0:34 Function Definition: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:34 Function Parameters:
+0:34 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:? Sequence
+0:37 move second child to first child ( temp float)
+0:37 direct index ( temp float)
+0:37 tfactor: direct index for structure ( temp 3-element array of float)
+0:37 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 direct index ( temp float)
+0:37 val: direct index for structure ( temp 3-component vector of float)
+0:37 direct index ( temp structure{ temp 3-component vector of float val})
+0:37 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:38 move second child to first child ( temp float)
+0:38 direct index ( temp float)
+0:38 tfactor: direct index for structure ( temp 3-element array of float)
+0:38 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:38 Constant:
+0:38 0 (const int)
+0:38 Constant:
+0:38 1 (const int)
+0:38 direct index ( temp float)
+0:38 val: direct index for structure ( temp 3-component vector of float)
+0:38 direct index ( temp structure{ temp 3-component vector of float val})
+0:38 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:38 Constant:
+0:38 1 (const int)
+0:38 Constant:
+0:38 0 (const int)
+0:38 Constant:
+0:38 0 (const int)
+0:39 move second child to first child ( temp float)
+0:39 direct index ( temp float)
+0:39 tfactor: direct index for structure ( temp 3-element array of float)
+0:39 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 2 (const int)
+0:39 direct index ( temp float)
+0:39 val: direct index for structure ( temp 3-component vector of float)
+0:39 direct index ( temp structure{ temp 3-component vector of float val})
+0:39 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:39 Constant:
+0:39 2 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 0 (const int)
+0:40 move second child to first child ( temp float)
+0:40 flInFactor: direct index for structure ( temp float)
+0:40 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 4.000000
+0:42 Branch: Return with expression
+0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( in uint InvocationID)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 124
+
+ Capability Tessellation
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationControl 4 "main" 41 45 48 94 108
+ ExecutionMode 4 OutputVertices 3
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 SpacingFractionalOdd
+ ExecutionMode 4 VertexOrderCw
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "hs_in_t"
+ MemberName 8(hs_in_t) 0 "val"
+ Name 14 "hs_out_t"
+ MemberName 14(hs_out_t) 0 "val"
+ Name 18 "@main(struct-hs_in_t-vf31[3];u1;"
+ Name 16 "i"
+ Name 17 "cpid"
+ Name 22 "hs_pcf_t"
+ MemberName 22(hs_pcf_t) 0 "tfactor"
+ MemberName 22(hs_pcf_t) 1 "flInFactor"
+ Name 25 "PCF(struct-hs_out_t-vf31[3];"
+ Name 24 "pcf_out"
+ Name 28 "o"
+ Name 39 "i"
+ Name 41 "i"
+ Name 43 "cpid"
+ Name 45 "cpid"
+ Name 48 "@entryPointOutput"
+ Name 50 "param"
+ Name 52 "param"
+ Name 66 "pcf_out"
+ Name 67 "i"
+ Name 68 "param"
+ Name 70 "param"
+ Name 74 "i"
+ Name 75 "param"
+ Name 77 "param"
+ Name 81 "i"
+ Name 82 "param"
+ Name 84 "param"
+ Name 88 "@patchConstantResult"
+ Name 94 "@patchConstantOutput.tfactor"
+ Name 108 "@patchConstantOutput.flInFactor"
+ Name 112 "o"
+ Decorate 41(i) Location 0
+ Decorate 45(cpid) BuiltIn InvocationId
+ Decorate 48(@entryPointOutput) Location 0
+ Decorate 94(@patchConstantOutput.tfactor) Patch
+ Decorate 94(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter
+ Decorate 108(@patchConstantOutput.flInFactor) Patch
+ Decorate 108(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8(hs_in_t): TypeStruct 7(fvec3)
+ 9: TypeInt 32 0
+ 10: 9(int) Constant 3
+ 11: TypeArray 8(hs_in_t) 10
+ 12: TypePointer Function 11
+ 13: TypePointer Function 9(int)
+ 14(hs_out_t): TypeStruct 7(fvec3)
+ 15: TypeFunction 14(hs_out_t) 12(ptr) 13(ptr)
+ 20: TypeArray 14(hs_out_t) 10
+ 21: TypeArray 6(float) 10
+ 22(hs_pcf_t): TypeStruct 21 6(float)
+ 23: TypeFunction 22(hs_pcf_t) 20
+ 27: TypePointer Function 14(hs_out_t)
+ 29: TypeInt 32 1
+ 30: 29(int) Constant 0
+ 34: TypePointer Function 7(fvec3)
+ 40: TypePointer Input 11
+ 41(i): 40(ptr) Variable Input
+ 44: TypePointer Input 9(int)
+ 45(cpid): 44(ptr) Variable Input
+ 47: TypePointer Output 20
+48(@entryPointOutput): 47(ptr) Variable Output
+ 55: TypePointer Output 14(hs_out_t)
+ 57: 9(int) Constant 2
+ 58: 9(int) Constant 1
+ 59: 9(int) Constant 0
+ 61: TypeBool
+ 65: TypePointer Function 20
+ 73: 29(int) Constant 1
+ 80: 29(int) Constant 2
+ 87: TypePointer Function 22(hs_pcf_t)
+ 91: 9(int) Constant 4
+ 92: TypeArray 6(float) 91
+ 93: TypePointer Output 92
+94(@patchConstantOutput.tfactor): 93(ptr) Variable Output
+ 95: TypePointer Function 6(float)
+ 98: TypePointer Output 6(float)
+ 106: TypeArray 6(float) 57
+ 107: TypePointer Output 106
+108(@patchConstantOutput.flInFactor): 107(ptr) Variable Output
+ 119: 6(float) Constant 1082130432
+ 4(main): 2 Function None 3
+ 5: Label
+ 39(i): 12(ptr) Variable Function
+ 43(cpid): 13(ptr) Variable Function
+ 50(param): 12(ptr) Variable Function
+ 52(param): 13(ptr) Variable Function
+ 66(pcf_out): 65(ptr) Variable Function
+ 67(i): 12(ptr) Variable Function
+ 68(param): 12(ptr) Variable Function
+ 70(param): 13(ptr) Variable Function
+ 74(i): 12(ptr) Variable Function
+ 75(param): 12(ptr) Variable Function
+ 77(param): 13(ptr) Variable Function
+ 81(i): 12(ptr) Variable Function
+ 82(param): 12(ptr) Variable Function
+ 84(param): 13(ptr) Variable Function
+88(@patchConstantResult): 87(ptr) Variable Function
+ 42: 11 Load 41(i)
+ Store 39(i) 42
+ 46: 9(int) Load 45(cpid)
+ Store 43(cpid) 46
+ 49: 9(int) Load 45(cpid)
+ 51: 11 Load 39(i)
+ Store 50(param) 51
+ 53: 9(int) Load 43(cpid)
+ Store 52(param) 53
+ 54:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 50(param) 52(param)
+ 56: 55(ptr) AccessChain 48(@entryPointOutput) 49
+ Store 56 54
+ ControlBarrier 57 58 59
+ 60: 9(int) Load 45(cpid)
+ 62: 61(bool) IEqual 60 30
+ SelectionMerge 64 None
+ BranchConditional 62 63 64
+ 63: Label
+ 69: 11 Load 67(i)
+ Store 68(param) 69
+ Store 70(param) 59
+ 71:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 68(param) 70(param)
+ 72: 27(ptr) AccessChain 66(pcf_out) 30
+ Store 72 71
+ 76: 11 Load 74(i)
+ Store 75(param) 76
+ Store 77(param) 58
+ 78:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 75(param) 77(param)
+ 79: 27(ptr) AccessChain 66(pcf_out) 73
+ Store 79 78
+ 83: 11 Load 81(i)
+ Store 82(param) 83
+ Store 84(param) 57
+ 85:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 82(param) 84(param)
+ 86: 27(ptr) AccessChain 66(pcf_out) 80
+ Store 86 85
+ 89: 20 Load 66(pcf_out)
+ 90:22(hs_pcf_t) FunctionCall 25(PCF(struct-hs_out_t-vf31[3];) 89
+ Store 88(@patchConstantResult) 90
+ 96: 95(ptr) AccessChain 88(@patchConstantResult) 30 30
+ 97: 6(float) Load 96
+ 99: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 30
+ Store 99 97
+ 100: 95(ptr) AccessChain 88(@patchConstantResult) 30 73
+ 101: 6(float) Load 100
+ 102: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 73
+ Store 102 101
+ 103: 95(ptr) AccessChain 88(@patchConstantResult) 30 80
+ 104: 6(float) Load 103
+ 105: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 80
+ Store 105 104
+ 109: 95(ptr) AccessChain 88(@patchConstantResult) 73
+ 110: 6(float) Load 109
+ 111: 98(ptr) AccessChain 108(@patchConstantOutput.flInFactor) 30
+ Store 111 110
+ Branch 64
+ 64: Label
+ Return
+ FunctionEnd
+18(@main(struct-hs_in_t-vf31[3];u1;):14(hs_out_t) Function None 15
+ 16(i): 12(ptr) FunctionParameter
+ 17(cpid): 13(ptr) FunctionParameter
+ 19: Label
+ 28(o): 27(ptr) Variable Function
+ 31: 9(int) Load 17(cpid)
+ 32: 6(float) ConvertUToF 31
+ 33: 7(fvec3) CompositeConstruct 32 32 32
+ 35: 34(ptr) AccessChain 28(o) 30
+ Store 35 33
+ 36:14(hs_out_t) Load 28(o)
+ ReturnValue 36
+ FunctionEnd
+25(PCF(struct-hs_out_t-vf31[3];):22(hs_pcf_t) Function None 23
+ 24(pcf_out): 20 FunctionParameter
+ 26: Label
+ 112(o): 87(ptr) Variable Function
+ 113: 6(float) CompositeExtract 24(pcf_out) 0 0 0
+ 114: 95(ptr) AccessChain 112(o) 30 30
+ Store 114 113
+ 115: 6(float) CompositeExtract 24(pcf_out) 1 0 0
+ 116: 95(ptr) AccessChain 112(o) 30 73
+ Store 116 115
+ 117: 6(float) CompositeExtract 24(pcf_out) 2 0 0
+ 118: 95(ptr) AccessChain 112(o) 30 80
+ Store 118 117
+ 120: 95(ptr) AccessChain 112(o) 73
+ Store 120 119
+ 121:22(hs_pcf_t) Load 112(o)
+ ReturnValue 121
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
new file mode 100644
index 00000000000..89582b73daf
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
@@ -0,0 +1,625 @@
+hlsl.hull.ctrlpt-2.tesc
+Shader version: 500
+vertices = 3
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+0:? Sequence
+0:28 Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:28 Function Parameters:
+0:28 'i' ( in 3-element array of structure{ temp 3-component vector of float val})
+0:28 'cpid' ( in uint)
+0:? Sequence
+0:29 val: direct index for structure ( temp 3-component vector of float)
+0:29 direct index ( temp structure{ temp 3-component vector of float val})
+0:29 'i' ( in 3-element array of structure{ temp 3-component vector of float val})
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 0 (const int)
+0:32 move second child to first child ( temp 3-component vector of float)
+0:32 val: direct index for structure ( temp 3-component vector of float)
+0:32 'o' ( temp structure{ temp 3-component vector of float val})
+0:32 Constant:
+0:32 0 (const int)
+0:32 Construct vec3 ( temp 3-component vector of float)
+0:32 Convert uint to float ( temp float)
+0:32 'cpid' ( in uint)
+0:33 Branch: Return with expression
+0:33 'o' ( temp structure{ temp 3-component vector of float val})
+0:28 Function Definition: main( ( temp void)
+0:28 Function Parameters:
+0:? Sequence
+0:28 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
+0:28 move second child to first child ( temp uint)
+0:? 'cpid' ( temp uint)
+0:? 'cpid' ( in uint InvocationID)
+0:28 move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:28 indirect index (layout( location=0) out structure{ temp 3-component vector of float val})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( in uint InvocationID)
+0:28 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( temp uint)
+0:? Barrier ( temp void)
+0:? Test condition and select ( temp void)
+0:? Condition
+0:? Compare Equal ( temp bool)
+0:? 'cpid' ( in uint InvocationID)
+0:? Constant:
+0:? 0 (const int)
+0:? true case
+0:? Sequence
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 0 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 0 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 1 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 1 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 2 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 2 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Function Call: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Sequence
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 0 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 0 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 1 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 1 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 2 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 2 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelInner)
+0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
+0:? Constant:
+0:? 0 (const int)
+0:? flInFactor: direct index for structure ( temp float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 1 (const int)
+0:38 Function Definition: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:38 Function Parameters:
+0:38 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:38 'pcf_in' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:? Sequence
+0:41 move second child to first child ( temp float)
+0:41 direct index ( temp float)
+0:41 tfactor: direct index for structure ( temp 3-element array of float)
+0:41 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 0 (const int)
+0:41 direct index ( temp float)
+0:41 val: direct index for structure ( temp 3-component vector of float)
+0:41 direct index ( temp structure{ temp 3-component vector of float val})
+0:41 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 0 (const int)
+0:42 move second child to first child ( temp float)
+0:42 direct index ( temp float)
+0:42 tfactor: direct index for structure ( temp 3-element array of float)
+0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 direct index ( temp float)
+0:42 val: direct index for structure ( temp 3-component vector of float)
+0:42 direct index ( temp structure{ temp 3-component vector of float val})
+0:42 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 0 (const int)
+0:43 move second child to first child ( temp float)
+0:43 direct index ( temp float)
+0:43 tfactor: direct index for structure ( temp 3-element array of float)
+0:43 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:43 Constant:
+0:43 0 (const int)
+0:43 Constant:
+0:43 2 (const int)
+0:43 direct index ( temp float)
+0:43 val: direct index for structure ( temp 3-component vector of float)
+0:43 direct index ( temp structure{ temp 3-component vector of float val})
+0:43 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:43 Constant:
+0:43 2 (const int)
+0:43 Constant:
+0:43 0 (const int)
+0:43 Constant:
+0:43 0 (const int)
+0:44 move second child to first child ( temp float)
+0:44 flInFactor: direct index for structure ( temp float)
+0:44 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:44 Constant:
+0:44 1 (const int)
+0:44 Constant:
+0:44 4.000000
+0:46 Branch: Return with expression
+0:46 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( in uint InvocationID)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
+
+
+Linked tessellation control stage:
+
+
+Shader version: 500
+vertices = 3
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+0:? Sequence
+0:28 Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:28 Function Parameters:
+0:28 'i' ( in 3-element array of structure{ temp 3-component vector of float val})
+0:28 'cpid' ( in uint)
+0:? Sequence
+0:29 val: direct index for structure ( temp 3-component vector of float)
+0:29 direct index ( temp structure{ temp 3-component vector of float val})
+0:29 'i' ( in 3-element array of structure{ temp 3-component vector of float val})
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 0 (const int)
+0:32 move second child to first child ( temp 3-component vector of float)
+0:32 val: direct index for structure ( temp 3-component vector of float)
+0:32 'o' ( temp structure{ temp 3-component vector of float val})
+0:32 Constant:
+0:32 0 (const int)
+0:32 Construct vec3 ( temp 3-component vector of float)
+0:32 Convert uint to float ( temp float)
+0:32 'cpid' ( in uint)
+0:33 Branch: Return with expression
+0:33 'o' ( temp structure{ temp 3-component vector of float val})
+0:28 Function Definition: main( ( temp void)
+0:28 Function Parameters:
+0:? Sequence
+0:28 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
+0:28 move second child to first child ( temp uint)
+0:? 'cpid' ( temp uint)
+0:? 'cpid' ( in uint InvocationID)
+0:28 move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:28 indirect index (layout( location=0) out structure{ temp 3-component vector of float val})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( in uint InvocationID)
+0:28 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( temp uint)
+0:? Barrier ( temp void)
+0:? Test condition and select ( temp void)
+0:? Condition
+0:? Compare Equal ( temp bool)
+0:? 'cpid' ( in uint InvocationID)
+0:? Constant:
+0:? 0 (const int)
+0:? true case
+0:? Sequence
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 0 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 0 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 1 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 1 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
+0:? direct index ( temp structure{ temp 3-component vector of float val})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 2 (const int)
+0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Constant:
+0:? 2 (const uint)
+0:? move second child to first child ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Function Call: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
+0:? Sequence
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 0 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 0 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 1 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 1 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelOuter)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? Constant:
+0:? 2 (const int)
+0:? direct index ( temp float)
+0:? tfactor: direct index for structure ( temp 3-element array of float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 0 (const int)
+0:? Constant:
+0:? 2 (const int)
+0:? move second child to first child ( temp float)
+0:? direct index ( patch out float TessLevelInner)
+0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
+0:? Constant:
+0:? 0 (const int)
+0:? flInFactor: direct index for structure ( temp float)
+0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Constant:
+0:? 1 (const int)
+0:38 Function Definition: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:38 Function Parameters:
+0:38 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:38 'pcf_in' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:? Sequence
+0:41 move second child to first child ( temp float)
+0:41 direct index ( temp float)
+0:41 tfactor: direct index for structure ( temp 3-element array of float)
+0:41 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 0 (const int)
+0:41 direct index ( temp float)
+0:41 val: direct index for structure ( temp 3-component vector of float)
+0:41 direct index ( temp structure{ temp 3-component vector of float val})
+0:41 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 0 (const int)
+0:42 move second child to first child ( temp float)
+0:42 direct index ( temp float)
+0:42 tfactor: direct index for structure ( temp 3-element array of float)
+0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 direct index ( temp float)
+0:42 val: direct index for structure ( temp 3-component vector of float)
+0:42 direct index ( temp structure{ temp 3-component vector of float val})
+0:42 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 0 (const int)
+0:43 move second child to first child ( temp float)
+0:43 direct index ( temp float)
+0:43 tfactor: direct index for structure ( temp 3-element array of float)
+0:43 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:43 Constant:
+0:43 0 (const int)
+0:43 Constant:
+0:43 2 (const int)
+0:43 direct index ( temp float)
+0:43 val: direct index for structure ( temp 3-component vector of float)
+0:43 direct index ( temp structure{ temp 3-component vector of float val})
+0:43 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
+0:43 Constant:
+0:43 2 (const int)
+0:43 Constant:
+0:43 0 (const int)
+0:43 Constant:
+0:43 0 (const int)
+0:44 move second child to first child ( temp float)
+0:44 flInFactor: direct index for structure ( temp float)
+0:44 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:44 Constant:
+0:44 1 (const int)
+0:44 Constant:
+0:44 4.000000
+0:46 Branch: Return with expression
+0:46 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
+0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
+0:? 'cpid' ( in uint InvocationID)
+0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
+0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 126
+
+ Capability Tessellation
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationControl 4 "main" 42 46 49 96 110
+ ExecutionMode 4 OutputVertices 3
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 SpacingFractionalOdd
+ ExecutionMode 4 VertexOrderCw
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "hs_in_t"
+ MemberName 8(hs_in_t) 0 "val"
+ Name 14 "hs_out_t"
+ MemberName 14(hs_out_t) 0 "val"
+ Name 18 "@main(struct-hs_in_t-vf31[3];u1;"
+ Name 16 "i"
+ Name 17 "cpid"
+ Name 22 "hs_pcf_t"
+ MemberName 22(hs_pcf_t) 0 "tfactor"
+ MemberName 22(hs_pcf_t) 1 "flInFactor"
+ Name 26 "PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];"
+ Name 24 "pcf_out"
+ Name 25 "pcf_in"
+ Name 31 "o"
+ Name 40 "i"
+ Name 42 "i"
+ Name 44 "cpid"
+ Name 46 "cpid"
+ Name 49 "@entryPointOutput"
+ Name 51 "param"
+ Name 53 "param"
+ Name 67 "pcf_out"
+ Name 68 "i"
+ Name 69 "param"
+ Name 71 "param"
+ Name 75 "i"
+ Name 76 "param"
+ Name 78 "param"
+ Name 82 "i"
+ Name 83 "param"
+ Name 85 "param"
+ Name 89 "@patchConstantResult"
+ Name 96 "@patchConstantOutput.tfactor"
+ Name 110 "@patchConstantOutput.flInFactor"
+ Name 114 "o"
+ Decorate 42(i) Location 0
+ Decorate 46(cpid) BuiltIn InvocationId
+ Decorate 49(@entryPointOutput) Location 0
+ Decorate 96(@patchConstantOutput.tfactor) Patch
+ Decorate 96(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter
+ Decorate 110(@patchConstantOutput.flInFactor) Patch
+ Decorate 110(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8(hs_in_t): TypeStruct 7(fvec3)
+ 9: TypeInt 32 0
+ 10: 9(int) Constant 3
+ 11: TypeArray 8(hs_in_t) 10
+ 12: TypePointer Function 11
+ 13: TypePointer Function 9(int)
+ 14(hs_out_t): TypeStruct 7(fvec3)
+ 15: TypeFunction 14(hs_out_t) 12(ptr) 13(ptr)
+ 20: TypeArray 14(hs_out_t) 10
+ 21: TypeArray 6(float) 10
+ 22(hs_pcf_t): TypeStruct 21 6(float)
+ 23: TypeFunction 22(hs_pcf_t) 20 11
+ 28: TypeInt 32 1
+ 29: 28(int) Constant 0
+ 30: TypePointer Function 14(hs_out_t)
+ 35: TypePointer Function 7(fvec3)
+ 41: TypePointer Input 11
+ 42(i): 41(ptr) Variable Input
+ 45: TypePointer Input 9(int)
+ 46(cpid): 45(ptr) Variable Input
+ 48: TypePointer Output 20
+49(@entryPointOutput): 48(ptr) Variable Output
+ 56: TypePointer Output 14(hs_out_t)
+ 58: 9(int) Constant 2
+ 59: 9(int) Constant 1
+ 60: 9(int) Constant 0
+ 62: TypeBool
+ 66: TypePointer Function 20
+ 74: 28(int) Constant 1
+ 81: 28(int) Constant 2
+ 88: TypePointer Function 22(hs_pcf_t)
+ 93: 9(int) Constant 4
+ 94: TypeArray 6(float) 93
+ 95: TypePointer Output 94
+96(@patchConstantOutput.tfactor): 95(ptr) Variable Output
+ 97: TypePointer Function 6(float)
+ 100: TypePointer Output 6(float)
+ 108: TypeArray 6(float) 58
+ 109: TypePointer Output 108
+110(@patchConstantOutput.flInFactor): 109(ptr) Variable Output
+ 121: 6(float) Constant 1082130432
+ 4(main): 2 Function None 3
+ 5: Label
+ 40(i): 12(ptr) Variable Function
+ 44(cpid): 13(ptr) Variable Function
+ 51(param): 12(ptr) Variable Function
+ 53(param): 13(ptr) Variable Function
+ 67(pcf_out): 66(ptr) Variable Function
+ 68(i): 12(ptr) Variable Function
+ 69(param): 12(ptr) Variable Function
+ 71(param): 13(ptr) Variable Function
+ 75(i): 12(ptr) Variable Function
+ 76(param): 12(ptr) Variable Function
+ 78(param): 13(ptr) Variable Function
+ 82(i): 12(ptr) Variable Function
+ 83(param): 12(ptr) Variable Function
+ 85(param): 13(ptr) Variable Function
+89(@patchConstantResult): 88(ptr) Variable Function
+ 43: 11 Load 42(i)
+ Store 40(i) 43
+ 47: 9(int) Load 46(cpid)
+ Store 44(cpid) 47
+ 50: 9(int) Load 46(cpid)
+ 52: 11 Load 40(i)
+ Store 51(param) 52
+ 54: 9(int) Load 44(cpid)
+ Store 53(param) 54
+ 55:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 51(param) 53(param)
+ 57: 56(ptr) AccessChain 49(@entryPointOutput) 50
+ Store 57 55
+ ControlBarrier 58 59 60
+ 61: 9(int) Load 46(cpid)
+ 63: 62(bool) IEqual 61 29
+ SelectionMerge 65 None
+ BranchConditional 63 64 65
+ 64: Label
+ 70: 11 Load 68(i)
+ Store 69(param) 70
+ Store 71(param) 60
+ 72:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 69(param) 71(param)
+ 73: 30(ptr) AccessChain 67(pcf_out) 29
+ Store 73 72
+ 77: 11 Load 75(i)
+ Store 76(param) 77
+ Store 78(param) 59
+ 79:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 76(param) 78(param)
+ 80: 30(ptr) AccessChain 67(pcf_out) 74
+ Store 80 79
+ 84: 11 Load 82(i)
+ Store 83(param) 84
+ Store 85(param) 58
+ 86:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 83(param) 85(param)
+ 87: 30(ptr) AccessChain 67(pcf_out) 81
+ Store 87 86
+ 90: 20 Load 67(pcf_out)
+ 91: 11 Load 40(i)
+ 92:22(hs_pcf_t) FunctionCall 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];) 90 91
+ Store 89(@patchConstantResult) 92
+ 98: 97(ptr) AccessChain 89(@patchConstantResult) 29 29
+ 99: 6(float) Load 98
+ 101: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 29
+ Store 101 99
+ 102: 97(ptr) AccessChain 89(@patchConstantResult) 29 74
+ 103: 6(float) Load 102
+ 104: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 74
+ Store 104 103
+ 105: 97(ptr) AccessChain 89(@patchConstantResult) 29 81
+ 106: 6(float) Load 105
+ 107: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 81
+ Store 107 106
+ 111: 97(ptr) AccessChain 89(@patchConstantResult) 74
+ 112: 6(float) Load 111
+ 113: 100(ptr) AccessChain 110(@patchConstantOutput.flInFactor) 29
+ Store 113 112
+ Branch 65
+ 65: Label
+ Return
+ FunctionEnd
+18(@main(struct-hs_in_t-vf31[3];u1;):14(hs_out_t) Function None 15
+ 16(i): 12(ptr) FunctionParameter
+ 17(cpid): 13(ptr) FunctionParameter
+ 19: Label
+ 31(o): 30(ptr) Variable Function
+ 32: 9(int) Load 17(cpid)
+ 33: 6(float) ConvertUToF 32
+ 34: 7(fvec3) CompositeConstruct 33 33 33
+ 36: 35(ptr) AccessChain 31(o) 29
+ Store 36 34
+ 37:14(hs_out_t) Load 31(o)
+ ReturnValue 37
+ FunctionEnd
+26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];):22(hs_pcf_t) Function None 23
+ 24(pcf_out): 20 FunctionParameter
+ 25(pcf_in): 11 FunctionParameter
+ 27: Label
+ 114(o): 88(ptr) Variable Function
+ 115: 6(float) CompositeExtract 24(pcf_out) 0 0 0
+ 116: 97(ptr) AccessChain 114(o) 29 29
+ Store 116 115
+ 117: 6(float) CompositeExtract 24(pcf_out) 1 0 0
+ 118: 97(ptr) AccessChain 114(o) 29 74
+ Store 118 117
+ 119: 6(float) CompositeExtract 24(pcf_out) 2 0 0
+ 120: 97(ptr) AccessChain 114(o) 29 81
+ Store 120 119
+ 122: 97(ptr) AccessChain 114(o) 74
+ Store 122 121
+ 123:22(hs_pcf_t) Load 114(o)
+ ReturnValue 123
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.void.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.void.tesc.out
index a2d0a1c7420..68524d9d2ee 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.void.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.hull.void.tesc.out
@@ -1,6 +1,8 @@
hlsl.hull.void.tesc
-Shader version: 450
+Shader version: 500
vertices = 3
+vertex spacing = fractional_even_spacing
+triangle order = ccw
0:? Sequence
0:26 Function Definition: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint})
0:26 Function Parameters:
@@ -27,7 +29,9 @@ vertices = 3
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint})
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'InvocationId' ( in uint InvocationID)
0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:? Barrier ( temp void)
@@ -38,11 +42,12 @@ vertices = 3
0:? Constant:
0:? 0 (const int)
0:? true case
-0:? Function Call: PCF( ( temp void)
+0:? Sequence
+0:? Function Call: PCF( ( temp void)
0:33 Function Definition: PCF( ( temp void)
0:33 Function Parameters:
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint})
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint})
0:? 'InvocationId' ( in uint InvocationID)
@@ -50,8 +55,10 @@ vertices = 3
Linked tessellation control stage:
-Shader version: 450
+Shader version: 500
vertices = 3
+vertex spacing = fractional_even_spacing
+triangle order = ccw
0:? Sequence
0:26 Function Definition: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint})
0:26 Function Parameters:
@@ -78,7 +85,9 @@ vertices = 3
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint})
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint})
+0:? 'InvocationId' ( in uint InvocationID)
0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:? Barrier ( temp void)
@@ -89,23 +98,28 @@ vertices = 3
0:? Constant:
0:? 0 (const int)
0:? true case
-0:? Function Call: PCF( ( temp void)
+0:? Sequence
+0:? Function Call: PCF( ( temp void)
0:33 Function Definition: PCF( ( temp void)
0:33 Function Parameters:
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
+0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint})
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint})
0:? 'InvocationId' ( in uint InvocationID)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 51
+// Generated by (magic number): 80002
+// Id's are bound by 55
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 33 36 44
+ EntryPoint TessellationControl 4 "main" 33 37 39
ExecutionMode 4 OutputVertices 3
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 SpacingFractionalEven
+ ExecutionMode 4 VertexOrderCcw
+ Source HLSL 500
Name 4 "main"
Name 8 "VS_OUT"
MemberName 8(VS_OUT) 0 "cpoint"
@@ -117,12 +131,12 @@ vertices = 3
Name 21 "output"
Name 31 "ip"
Name 33 "ip"
- Name 36 "@entryPointOutput"
- Name 37 "param"
- Name 44 "InvocationId"
+ Name 37 "@entryPointOutput"
+ Name 39 "InvocationId"
+ Name 41 "param"
Decorate 33(ip) Location 0
- Decorate 36(@entryPointOutput) Location 0
- Decorate 44(InvocationId) BuiltIn InvocationId
+ Decorate 37(@entryPointOutput) Location 0
+ Decorate 39(InvocationId) BuiltIn InvocationId
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -140,33 +154,37 @@ vertices = 3
24: TypePointer Function 7(fvec3)
32: TypePointer Input 11
33(ip): 32(ptr) Variable Input
- 35: TypePointer Output 13(HS_OUT)
-36(@entryPointOutput): 35(ptr) Variable Output
- 40: 9(int) Constant 2
- 41: 9(int) Constant 1
- 42: 9(int) Constant 0
- 43: TypePointer Input 9(int)
-44(InvocationId): 43(ptr) Variable Input
- 46: TypeBool
+ 35: TypeArray 13(HS_OUT) 10
+ 36: TypePointer Output 35
+37(@entryPointOutput): 36(ptr) Variable Output
+ 38: TypePointer Input 9(int)
+39(InvocationId): 38(ptr) Variable Input
+ 44: TypePointer Output 13(HS_OUT)
+ 46: 9(int) Constant 2
+ 47: 9(int) Constant 1
+ 48: 9(int) Constant 0
+ 50: TypeBool
4(main): 2 Function None 3
5: Label
31(ip): 12(ptr) Variable Function
- 37(param): 12(ptr) Variable Function
+ 41(param): 12(ptr) Variable Function
34: 11 Load 33(ip)
Store 31(ip) 34
- 38: 11 Load 31(ip)
- Store 37(param) 38
- 39: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[3];) 37(param)
- Store 36(@entryPointOutput) 39
- ControlBarrier 40 41 42
- 45: 9(int) Load 44(InvocationId)
- 47: 46(bool) IEqual 45 23
- SelectionMerge 49 None
- BranchConditional 47 48 49
- 48: Label
- 50: 2 FunctionCall 18(PCF()
- Branch 49
- 49: Label
+ 40: 9(int) Load 39(InvocationId)
+ 42: 11 Load 31(ip)
+ Store 41(param) 42
+ 43: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[3];) 41(param)
+ 45: 44(ptr) AccessChain 37(@entryPointOutput) 40
+ Store 45 43
+ ControlBarrier 46 47 48
+ 49: 9(int) Load 39(InvocationId)
+ 51: 50(bool) IEqual 49 23
+ SelectionMerge 53 None
+ BranchConditional 51 52 53
+ 52: Label
+ 54: 2 FunctionCall 18(PCF()
+ Branch 53
+ 53: Label
Return
FunctionEnd
16(@main(struct-VS_OUT-vf31[3];): 13(HS_OUT) Function None 14
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.identifier.sample.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.identifier.sample.frag.out
index 3583141ce6b..356a212536f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.identifier.sample.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.identifier.sample.frag.out
@@ -1,5 +1,5 @@
hlsl.identifier.sample.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: sample(i1; ( temp int)
@@ -44,7 +44,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: sample(i1; ( temp int)
@@ -86,7 +86,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 33
Capability Shader
@@ -94,6 +94,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 31
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 10 "sample(i1;"
Name 9 "x"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.if.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.if.frag.out
index 6f887ca78d2..8490324080e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.if.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.if.frag.out
@@ -1,5 +1,5 @@
hlsl.if.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -69,12 +69,13 @@ gl_FragCoord origin is upper left
0:26 'input' ( in 4-component vector of float)
0:30 Test condition and select ( temp void)
0:30 Condition
-0:30 move second child to first child ( temp float)
-0:30 'ii' ( temp float)
-0:30 direct index ( temp float)
-0:30 'input' ( in 4-component vector of float)
-0:30 Constant:
-0:30 2 (const int)
+0:30 Convert float to bool ( temp bool)
+0:30 move second child to first child ( temp float)
+0:30 'ii' ( temp float)
+0:30 direct index ( temp float)
+0:30 'input' ( in 4-component vector of float)
+0:30 Constant:
+0:30 2 (const int)
0:30 true case
0:31 Pre-Increment ( temp float)
0:31 'ii' ( temp float)
@@ -108,7 +109,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -178,12 +179,13 @@ gl_FragCoord origin is upper left
0:26 'input' ( in 4-component vector of float)
0:30 Test condition and select ( temp void)
0:30 Condition
-0:30 move second child to first child ( temp float)
-0:30 'ii' ( temp float)
-0:30 direct index ( temp float)
-0:30 'input' ( in 4-component vector of float)
-0:30 Constant:
-0:30 2 (const int)
+0:30 Convert float to bool ( temp bool)
+0:30 move second child to first child ( temp float)
+0:30 'ii' ( temp float)
+0:30 direct index ( temp float)
+0:30 'input' ( in 4-component vector of float)
+0:30 Constant:
+0:30 2 (const int)
0:30 true case
0:31 Pre-Increment ( temp float)
0:31 'ii' ( temp float)
@@ -214,25 +216,26 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 101
+// Generated by (magic number): 80002
+// Id's are bound by 103
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 94 97
+ EntryPoint Fragment 4 "PixelShaderFunction" 96 99
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "@PixelShaderFunction(vf4;"
Name 10 "input"
Name 68 "ii"
- Name 80 "ii"
- Name 92 "input"
+ Name 82 "ii"
Name 94 "input"
- Name 97 "@entryPointOutput"
- Name 98 "param"
- Decorate 94(input) Location 0
- Decorate 97(@entryPointOutput) Location 0
+ Name 96 "input"
+ Name 99 "@entryPointOutput"
+ Name 100 "param"
+ Decorate 96(input) Location 0
+ Decorate 99(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -244,31 +247,32 @@ gl_FragCoord origin is upper left
67: TypePointer Function 6(float)
69: TypeInt 32 0
70: 69(int) Constant 2
- 76: 6(float) Constant 1065353216
- 78: TypeInt 32 1
- 79: TypePointer Function 78(int)
- 82: 78(int) Constant 1
- 93: TypePointer Input 7(fvec4)
- 94(input): 93(ptr) Variable Input
- 96: TypePointer Output 7(fvec4)
-97(@entryPointOutput): 96(ptr) Variable Output
+ 73: 6(float) Constant 0
+ 78: 6(float) Constant 1065353216
+ 80: TypeInt 32 1
+ 81: TypePointer Function 80(int)
+ 84: 80(int) Constant 1
+ 95: TypePointer Input 7(fvec4)
+ 96(input): 95(ptr) Variable Input
+ 98: TypePointer Output 7(fvec4)
+99(@entryPointOutput): 98(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
- 92(input): 8(ptr) Variable Function
- 98(param): 8(ptr) Variable Function
- 95: 7(fvec4) Load 94(input)
- Store 92(input) 95
- 99: 7(fvec4) Load 92(input)
- Store 98(param) 99
- 100: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 98(param)
- Store 97(@entryPointOutput) 100
+ 94(input): 8(ptr) Variable Function
+ 100(param): 8(ptr) Variable Function
+ 97: 7(fvec4) Load 96(input)
+ Store 94(input) 97
+ 101: 7(fvec4) Load 94(input)
+ Store 100(param) 101
+ 102: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 100(param)
+ Store 99(@entryPointOutput) 102
Return
FunctionEnd
11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
10(input): 8(ptr) FunctionParameter
12: Label
68(ii): 67(ptr) Variable Function
- 80(ii): 79(ptr) Variable Function
+ 82(ii): 81(ptr) Variable Function
13: 7(fvec4) Load 10(input)
14: 7(fvec4) Load 10(input)
17: 16(bvec4) FOrdEqual 13 14
@@ -315,7 +319,7 @@ gl_FragCoord origin is upper left
48: 7(fvec4) Load 10(input)
49: 16(bvec4) FOrdEqual 47 48
50: 15(bool) All 49
- SelectionMerge 52 None
+ SelectionMerge 52 Flatten
BranchConditional 50 51 52
51: Label
53: 7(fvec4) Load 10(input)
@@ -338,28 +342,29 @@ gl_FragCoord origin is upper left
71: 67(ptr) AccessChain 10(input) 70
72: 6(float) Load 71
Store 68(ii) 72
- SelectionMerge 74 None
- BranchConditional 72 73 74
- 73: Label
- 75: 6(float) Load 68(ii)
- 77: 6(float) FAdd 75 76
- Store 68(ii) 77
- Branch 74
- 74: Label
- 81: 78(int) Load 80(ii)
- 83: 78(int) IAdd 81 82
- Store 80(ii) 83
- 84: 78(int) Load 80(ii)
- 85: 6(float) ConvertSToF 84
- 86: 15(bool) FOrdEqual 85 76
- SelectionMerge 88 None
- BranchConditional 86 87 88
- 87: Label
- 89: 78(int) Load 80(ii)
- 90: 78(int) IAdd 89 82
- Store 80(ii) 90
- Branch 88
- 88: Label
- 91: 7(fvec4) Undef
- ReturnValue 91
+ 74: 15(bool) FOrdNotEqual 72 73
+ SelectionMerge 76 None
+ BranchConditional 74 75 76
+ 75: Label
+ 77: 6(float) Load 68(ii)
+ 79: 6(float) FAdd 77 78
+ Store 68(ii) 79
+ Branch 76
+ 76: Label
+ 83: 80(int) Load 82(ii)
+ 85: 80(int) IAdd 83 84
+ Store 82(ii) 85
+ 86: 80(int) Load 82(ii)
+ 87: 6(float) ConvertSToF 86
+ 88: 15(bool) FOrdEqual 87 78
+ SelectionMerge 90 None
+ BranchConditional 88 89 90
+ 89: Label
+ 91: 80(int) Load 82(ii)
+ 92: 80(int) IAdd 91 84
+ Store 82(ii) 92
+ Branch 90
+ 90: Label
+ 93: 7(fvec4) Undef
+ ReturnValue 93
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.implicitBool.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.implicitBool.frag.out
new file mode 100644
index 00000000000..2da4fae3393
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.implicitBool.frag.out
@@ -0,0 +1,541 @@
+hlsl.implicitBool.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main( ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'a' ( temp 4-component vector of float)
+0:? Constant:
+0:? 2.000000
+0:? 2.000000
+0:? 2.000000
+0:? 2.000000
+0:9 Test condition and select ( temp void)
+0:9 Condition
+0:9 Convert int to bool ( temp bool)
+0:9 condi: direct index for structure ( uniform int)
+0:9 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:9 Constant:
+0:9 1 (const uint)
+0:9 true case
+0:10 Branch: Return with expression
+0:10 add ( temp 4-component vector of float)
+0:10 'a' ( temp 4-component vector of float)
+0:10 Constant:
+0:10 1.000000
+0:11 Test condition and select ( temp void)
+0:11 Condition
+0:11 Convert float to bool ( temp bool)
+0:11 condf: direct index for structure ( uniform float)
+0:11 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:11 Constant:
+0:11 0 (const uint)
+0:11 true case
+0:12 Branch: Return with expression
+0:12 add ( temp 4-component vector of float)
+0:12 'a' ( temp 4-component vector of float)
+0:12 Constant:
+0:12 2.000000
+0:13 Test condition and select ( temp void)
+0:13 Condition
+0:13 Convert float to bool ( temp bool)
+0:13 condf1: direct index for structure ( uniform 1-component vector of float)
+0:13 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:13 Constant:
+0:13 2 (const uint)
+0:13 true case
+0:14 Branch: Return with expression
+0:14 add ( temp 4-component vector of float)
+0:14 'a' ( temp 4-component vector of float)
+0:14 Constant:
+0:14 3.000000
+0:15 Test condition and select ( temp void)
+0:15 Condition
+0:15 Convert int to bool ( temp bool)
+0:15 condi1: direct index for structure ( uniform 1-component vector of int)
+0:15 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:15 Constant:
+0:15 3 (const uint)
+0:15 true case
+0:16 Branch: Return with expression
+0:16 add ( temp 4-component vector of float)
+0:16 'a' ( temp 4-component vector of float)
+0:16 Constant:
+0:16 4.000000
+0:17 Test condition and select ( temp void)
+0:17 Condition
+0:17 logical-or ( temp bool)
+0:17 logical-and ( temp bool)
+0:17 Convert int to bool ( temp bool)
+0:17 condi: direct index for structure ( uniform int)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:17 Constant:
+0:17 1 (const uint)
+0:17 Convert int to bool ( temp bool)
+0:17 Convert float to int ( temp int)
+0:17 condf: direct index for structure ( uniform float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 Convert float to bool ( temp bool)
+0:17 condf1: direct index for structure ( uniform 1-component vector of float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:17 Constant:
+0:17 2 (const uint)
+0:17 true case
+0:18 Branch: Return with expression
+0:18 add ( temp 4-component vector of float)
+0:18 'a' ( temp 4-component vector of float)
+0:18 Constant:
+0:18 5.000000
+0:20 Sequence
+0:20 move second child to first child ( temp float)
+0:20 'f' ( temp float)
+0:20 condf: direct index for structure ( uniform float)
+0:20 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:20 Constant:
+0:20 0 (const uint)
+0:21 Loop with condition tested first
+0:21 Loop Condition
+0:21 Convert float to bool ( temp bool)
+0:21 'f' ( temp float)
+0:21 Loop Body
+0:? Sequence
+0:21 Pre-Decrement ( temp float)
+0:21 'f' ( temp float)
+0:23 Sequence
+0:23 move second child to first child ( temp int)
+0:23 'i' ( temp int)
+0:23 condi: direct index for structure ( uniform int)
+0:23 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:23 Constant:
+0:23 1 (const uint)
+0:24 Loop with condition not tested first
+0:24 Loop Condition
+0:24 Convert int to bool ( temp bool)
+0:24 'i' ( temp int)
+0:24 Loop Body
+0:? Sequence
+0:24 Pre-Decrement ( temp int)
+0:24 'i' ( temp int)
+0:? Sequence
+0:26 Loop with condition tested first
+0:26 Loop Condition
+0:26 Convert int to bool ( temp bool)
+0:26 'i' ( temp int)
+0:26 Loop Body
+0:? Sequence
+0:26 Pre-Decrement ( temp int)
+0:26 'i' ( temp int)
+0:28 Sequence
+0:28 move second child to first child ( temp float)
+0:28 'g' ( temp float)
+0:28 Test condition and select ( temp float)
+0:28 Condition
+0:28 Convert float to bool ( temp bool)
+0:28 condf: direct index for structure ( uniform float)
+0:28 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:28 Constant:
+0:28 0 (const uint)
+0:28 true case
+0:28 Constant:
+0:28 7.000000
+0:28 false case
+0:28 Constant:
+0:28 8.000000
+0:29 add second child into first child ( temp 4-component vector of float)
+0:29 'a' ( temp 4-component vector of float)
+0:29 'g' ( temp float)
+0:31 Branch: Return with expression
+0:31 subtract ( temp 4-component vector of float)
+0:31 'a' ( temp 4-component vector of float)
+0:31 Constant:
+0:31 1.000000
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main( ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'a' ( temp 4-component vector of float)
+0:? Constant:
+0:? 2.000000
+0:? 2.000000
+0:? 2.000000
+0:? 2.000000
+0:9 Test condition and select ( temp void)
+0:9 Condition
+0:9 Convert int to bool ( temp bool)
+0:9 condi: direct index for structure ( uniform int)
+0:9 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:9 Constant:
+0:9 1 (const uint)
+0:9 true case
+0:10 Branch: Return with expression
+0:10 add ( temp 4-component vector of float)
+0:10 'a' ( temp 4-component vector of float)
+0:10 Constant:
+0:10 1.000000
+0:11 Test condition and select ( temp void)
+0:11 Condition
+0:11 Convert float to bool ( temp bool)
+0:11 condf: direct index for structure ( uniform float)
+0:11 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:11 Constant:
+0:11 0 (const uint)
+0:11 true case
+0:12 Branch: Return with expression
+0:12 add ( temp 4-component vector of float)
+0:12 'a' ( temp 4-component vector of float)
+0:12 Constant:
+0:12 2.000000
+0:13 Test condition and select ( temp void)
+0:13 Condition
+0:13 Convert float to bool ( temp bool)
+0:13 condf1: direct index for structure ( uniform 1-component vector of float)
+0:13 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:13 Constant:
+0:13 2 (const uint)
+0:13 true case
+0:14 Branch: Return with expression
+0:14 add ( temp 4-component vector of float)
+0:14 'a' ( temp 4-component vector of float)
+0:14 Constant:
+0:14 3.000000
+0:15 Test condition and select ( temp void)
+0:15 Condition
+0:15 Convert int to bool ( temp bool)
+0:15 condi1: direct index for structure ( uniform 1-component vector of int)
+0:15 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:15 Constant:
+0:15 3 (const uint)
+0:15 true case
+0:16 Branch: Return with expression
+0:16 add ( temp 4-component vector of float)
+0:16 'a' ( temp 4-component vector of float)
+0:16 Constant:
+0:16 4.000000
+0:17 Test condition and select ( temp void)
+0:17 Condition
+0:17 logical-or ( temp bool)
+0:17 logical-and ( temp bool)
+0:17 Convert int to bool ( temp bool)
+0:17 condi: direct index for structure ( uniform int)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:17 Constant:
+0:17 1 (const uint)
+0:17 Convert int to bool ( temp bool)
+0:17 Convert float to int ( temp int)
+0:17 condf: direct index for structure ( uniform float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 Convert float to bool ( temp bool)
+0:17 condf1: direct index for structure ( uniform 1-component vector of float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:17 Constant:
+0:17 2 (const uint)
+0:17 true case
+0:18 Branch: Return with expression
+0:18 add ( temp 4-component vector of float)
+0:18 'a' ( temp 4-component vector of float)
+0:18 Constant:
+0:18 5.000000
+0:20 Sequence
+0:20 move second child to first child ( temp float)
+0:20 'f' ( temp float)
+0:20 condf: direct index for structure ( uniform float)
+0:20 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:20 Constant:
+0:20 0 (const uint)
+0:21 Loop with condition tested first
+0:21 Loop Condition
+0:21 Convert float to bool ( temp bool)
+0:21 'f' ( temp float)
+0:21 Loop Body
+0:? Sequence
+0:21 Pre-Decrement ( temp float)
+0:21 'f' ( temp float)
+0:23 Sequence
+0:23 move second child to first child ( temp int)
+0:23 'i' ( temp int)
+0:23 condi: direct index for structure ( uniform int)
+0:23 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:23 Constant:
+0:23 1 (const uint)
+0:24 Loop with condition not tested first
+0:24 Loop Condition
+0:24 Convert int to bool ( temp bool)
+0:24 'i' ( temp int)
+0:24 Loop Body
+0:? Sequence
+0:24 Pre-Decrement ( temp int)
+0:24 'i' ( temp int)
+0:? Sequence
+0:26 Loop with condition tested first
+0:26 Loop Condition
+0:26 Convert int to bool ( temp bool)
+0:26 'i' ( temp int)
+0:26 Loop Body
+0:? Sequence
+0:26 Pre-Decrement ( temp int)
+0:26 'i' ( temp int)
+0:28 Sequence
+0:28 move second child to first child ( temp float)
+0:28 'g' ( temp float)
+0:28 Test condition and select ( temp float)
+0:28 Condition
+0:28 Convert float to bool ( temp bool)
+0:28 condf: direct index for structure ( uniform float)
+0:28 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:28 Constant:
+0:28 0 (const uint)
+0:28 true case
+0:28 Constant:
+0:28 7.000000
+0:28 false case
+0:28 Constant:
+0:28 8.000000
+0:29 add second child into first child ( temp 4-component vector of float)
+0:29 'a' ( temp 4-component vector of float)
+0:29 'g' ( temp float)
+0:31 Branch: Return with expression
+0:31 subtract ( temp 4-component vector of float)
+0:31 'a' ( temp 4-component vector of float)
+0:31 Constant:
+0:31 1.000000
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 140
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 138
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 12 "a"
+ Name 16 "$Global"
+ MemberName 16($Global) 0 "condf"
+ MemberName 16($Global) 1 "condi"
+ MemberName 16($Global) 2 "condf1"
+ MemberName 16($Global) 3 "condi1"
+ Name 18 ""
+ Name 88 "f"
+ Name 101 "i"
+ Name 121 "g"
+ Name 138 "@entryPointOutput"
+ MemberDecorate 16($Global) 0 Offset 0
+ MemberDecorate 16($Global) 1 Offset 4
+ MemberDecorate 16($Global) 2 Offset 16
+ MemberDecorate 16($Global) 3 Offset 32
+ Decorate 16($Global) Block
+ Decorate 18 DescriptorSet 0
+ Decorate 138(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypePointer Function 7(fvec4)
+ 13: 6(float) Constant 1073741824
+ 14: 7(fvec4) ConstantComposite 13 13 13 13
+ 15: TypeInt 32 1
+ 16($Global): TypeStruct 6(float) 15(int) 6(float) 15(int)
+ 17: TypePointer Uniform 16($Global)
+ 18: 17(ptr) Variable Uniform
+ 19: 15(int) Constant 1
+ 20: TypePointer Uniform 15(int)
+ 23: TypeBool
+ 24: TypeInt 32 0
+ 25: 24(int) Constant 0
+ 30: 6(float) Constant 1065353216
+ 34: 15(int) Constant 0
+ 35: TypePointer Uniform 6(float)
+ 38: 6(float) Constant 0
+ 46: 15(int) Constant 2
+ 53: 6(float) Constant 1077936128
+ 57: 15(int) Constant 3
+ 64: 6(float) Constant 1082130432
+ 83: 6(float) Constant 1084227584
+ 87: TypePointer Function 6(float)
+ 100: TypePointer Function 15(int)
+ 125: 6(float) Constant 1088421888
+ 126: 6(float) Constant 1090519040
+ 137: TypePointer Output 7(fvec4)
+138(@entryPointOutput): 137(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 139: 7(fvec4) FunctionCall 9(@main()
+ Store 138(@entryPointOutput) 139
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 12(a): 11(ptr) Variable Function
+ 88(f): 87(ptr) Variable Function
+ 101(i): 100(ptr) Variable Function
+ 121(g): 87(ptr) Variable Function
+ Store 12(a) 14
+ 21: 20(ptr) AccessChain 18 19
+ 22: 15(int) Load 21
+ 26: 23(bool) INotEqual 22 25
+ SelectionMerge 28 None
+ BranchConditional 26 27 28
+ 27: Label
+ 29: 7(fvec4) Load 12(a)
+ 31: 7(fvec4) CompositeConstruct 30 30 30 30
+ 32: 7(fvec4) FAdd 29 31
+ ReturnValue 32
+ 28: Label
+ 36: 35(ptr) AccessChain 18 34
+ 37: 6(float) Load 36
+ 39: 23(bool) FOrdNotEqual 37 38
+ SelectionMerge 41 None
+ BranchConditional 39 40 41
+ 40: Label
+ 42: 7(fvec4) Load 12(a)
+ 43: 7(fvec4) CompositeConstruct 13 13 13 13
+ 44: 7(fvec4) FAdd 42 43
+ ReturnValue 44
+ 41: Label
+ 47: 35(ptr) AccessChain 18 46
+ 48: 6(float) Load 47
+ 49: 23(bool) FOrdNotEqual 48 38
+ SelectionMerge 51 None
+ BranchConditional 49 50 51
+ 50: Label
+ 52: 7(fvec4) Load 12(a)
+ 54: 7(fvec4) CompositeConstruct 53 53 53 53
+ 55: 7(fvec4) FAdd 52 54
+ ReturnValue 55
+ 51: Label
+ 58: 20(ptr) AccessChain 18 57
+ 59: 15(int) Load 58
+ 60: 23(bool) INotEqual 59 25
+ SelectionMerge 62 None
+ BranchConditional 60 61 62
+ 61: Label
+ 63: 7(fvec4) Load 12(a)
+ 65: 7(fvec4) CompositeConstruct 64 64 64 64
+ 66: 7(fvec4) FAdd 63 65
+ ReturnValue 66
+ 62: Label
+ 68: 20(ptr) AccessChain 18 19
+ 69: 15(int) Load 68
+ 70: 23(bool) INotEqual 69 25
+ 71: 35(ptr) AccessChain 18 34
+ 72: 6(float) Load 71
+ 73: 15(int) ConvertFToS 72
+ 74: 23(bool) INotEqual 73 25
+ 75: 23(bool) LogicalAnd 70 74
+ 76: 35(ptr) AccessChain 18 46
+ 77: 6(float) Load 76
+ 78: 23(bool) FOrdNotEqual 77 38
+ 79: 23(bool) LogicalOr 75 78
+ SelectionMerge 81 None
+ BranchConditional 79 80 81
+ 80: Label
+ 82: 7(fvec4) Load 12(a)
+ 84: 7(fvec4) CompositeConstruct 83 83 83 83
+ 85: 7(fvec4) FAdd 82 84
+ ReturnValue 85
+ 81: Label
+ 89: 35(ptr) AccessChain 18 34
+ 90: 6(float) Load 89
+ Store 88(f) 90
+ Branch 91
+ 91: Label
+ LoopMerge 93 94 None
+ Branch 95
+ 95: Label
+ 96: 6(float) Load 88(f)
+ 97: 23(bool) FOrdNotEqual 96 38
+ BranchConditional 97 92 93
+ 92: Label
+ 98: 6(float) Load 88(f)
+ 99: 6(float) FSub 98 30
+ Store 88(f) 99
+ Branch 94
+ 94: Label
+ Branch 91
+ 93: Label
+ 102: 20(ptr) AccessChain 18 19
+ 103: 15(int) Load 102
+ Store 101(i) 103
+ Branch 104
+ 104: Label
+ LoopMerge 106 107 None
+ Branch 105
+ 105: Label
+ 108: 15(int) Load 101(i)
+ 109: 15(int) ISub 108 19
+ Store 101(i) 109
+ Branch 107
+ 107: Label
+ 110: 15(int) Load 101(i)
+ 111: 23(bool) INotEqual 110 25
+ BranchConditional 111 104 106
+ 106: Label
+ Branch 112
+ 112: Label
+ LoopMerge 114 115 None
+ Branch 116
+ 116: Label
+ 117: 15(int) Load 101(i)
+ 118: 23(bool) INotEqual 117 25
+ BranchConditional 118 113 114
+ 113: Label
+ 119: 15(int) Load 101(i)
+ 120: 15(int) ISub 119 19
+ Store 101(i) 120
+ Branch 115
+ 115: Label
+ Branch 112
+ 114: Label
+ 122: 35(ptr) AccessChain 18 34
+ 123: 6(float) Load 122
+ 124: 23(bool) FOrdNotEqual 123 38
+ 127: 6(float) Select 124 125 126
+ Store 121(g) 127
+ 128: 6(float) Load 121(g)
+ 129: 7(fvec4) Load 12(a)
+ 130: 7(fvec4) CompositeConstruct 128 128 128 128
+ 131: 7(fvec4) FAdd 129 130
+ Store 12(a) 131
+ 132: 7(fvec4) Load 12(a)
+ 133: 7(fvec4) CompositeConstruct 30 30 30 30
+ 134: 7(fvec4) FSub 132 133
+ ReturnValue 134
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.include.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.include.vert.out
new file mode 100644
index 00000000000..2a0532e026e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.include.vert.out
@@ -0,0 +1,75 @@
+../Test/hlsl.include.vert
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 44
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 42
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 11 "$Global"
+ MemberName 11($Global) 0 "i1"
+ MemberName 11($Global) 1 "i2"
+ MemberName 11($Global) 2 "i4"
+ MemberName 11($Global) 3 "i3"
+ MemberName 11($Global) 4 "i6"
+ MemberName 11($Global) 5 "i5"
+ Name 13 ""
+ Name 42 "@entryPointOutput"
+ MemberDecorate 11($Global) 0 Offset 0
+ MemberDecorate 11($Global) 1 Offset 16
+ MemberDecorate 11($Global) 2 Offset 32
+ MemberDecorate 11($Global) 3 Offset 48
+ MemberDecorate 11($Global) 4 Offset 64
+ MemberDecorate 11($Global) 5 Offset 80
+ Decorate 11($Global) Block
+ Decorate 13 DescriptorSet 0
+ Decorate 42(@entryPointOutput) BuiltIn Position
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11($Global): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4)
+ 12: TypePointer Uniform 11($Global)
+ 13: 12(ptr) Variable Uniform
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: TypePointer Uniform 7(fvec4)
+ 19: 14(int) Constant 1
+ 23: 14(int) Constant 3
+ 27: 14(int) Constant 2
+ 31: 14(int) Constant 5
+ 35: 14(int) Constant 4
+ 41: TypePointer Output 7(fvec4)
+42(@entryPointOutput): 41(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 43: 7(fvec4) FunctionCall 9(@main()
+ Store 42(@entryPointOutput) 43
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 17: 16(ptr) AccessChain 13 15
+ 18: 7(fvec4) Load 17
+ 20: 16(ptr) AccessChain 13 19
+ 21: 7(fvec4) Load 20
+ 22: 7(fvec4) FAdd 18 21
+ 24: 16(ptr) AccessChain 13 23
+ 25: 7(fvec4) Load 24
+ 26: 7(fvec4) FAdd 22 25
+ 28: 16(ptr) AccessChain 13 27
+ 29: 7(fvec4) Load 28
+ 30: 7(fvec4) FAdd 26 29
+ 32: 16(ptr) AccessChain 13 31
+ 33: 7(fvec4) Load 32
+ 34: 7(fvec4) FAdd 30 33
+ 36: 16(ptr) AccessChain 13 35
+ 37: 7(fvec4) Load 36
+ 38: 7(fvec4) FAdd 34 37
+ ReturnValue 38
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.includeNegative.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.includeNegative.vert.out
new file mode 100644
index 00000000000..5faa383fec4
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.includeNegative.vert.out
@@ -0,0 +1,10 @@
+hlsl.includeNegative.vert
+ERROR: ./foo.h:1: '#error' : should not be included
+ERROR: ./inc2/../foo.h:1: '#error' : should not be included
+ERROR: ./parentBad:3: '#error' : bad parent
+ERROR: hlsl.includeNegative.vert:7: '#error' : in main
+hlsl.includeNegative.vert(8): error at column 0, HLSL parsing failed.
+ERROR: 5 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.inf.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.inf.vert.out
new file mode 100644
index 00000000000..afb0a4fe2c6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.inf.vert.out
@@ -0,0 +1,172 @@
+hlsl.inf.vert
+Shader version: 500
+0:? Sequence
+0:2 Function Definition: @main( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Sequence
+0:3 move second child to first child ( temp float)
+0:3 'f1' ( temp float)
+0:3 Constant:
+0:3 -1.#INF
+0:4 Sequence
+0:4 move second child to first child ( temp float)
+0:4 'f2' ( temp float)
+0:4 Constant:
+0:4 +1.#INF
+0:5 Sequence
+0:5 move second child to first child ( temp float)
+0:5 'f3' ( temp float)
+0:5 Constant:
+0:5 +1.#INF
+0:6 Sequence
+0:6 move second child to first child ( temp float)
+0:6 'f4' ( temp float)
+0:6 add ( temp float)
+0:6 component-wise multiply ( temp float)
+0:6 'f2' ( temp float)
+0:6 Constant:
+0:6 +1.#INF
+0:6 Constant:
+0:6 +1.#INF
+0:10 Branch: Return with expression
+0:10 Construct vec4 ( temp 4-component vector of float)
+0:10 add ( temp float)
+0:10 add ( temp float)
+0:10 add ( temp float)
+0:10 add ( temp float)
+0:10 add ( temp float)
+0:10 'f1' ( temp float)
+0:10 'f2' ( temp float)
+0:10 'f3' ( temp float)
+0:10 'f4' ( temp float)
+0:10 Constant:
+0:10 -1.#INF
+0:10 Constant:
+0:10 1.#IND
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:2 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:2 Function Definition: @main( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Sequence
+0:3 move second child to first child ( temp float)
+0:3 'f1' ( temp float)
+0:3 Constant:
+0:3 -1.#INF
+0:4 Sequence
+0:4 move second child to first child ( temp float)
+0:4 'f2' ( temp float)
+0:4 Constant:
+0:4 +1.#INF
+0:5 Sequence
+0:5 move second child to first child ( temp float)
+0:5 'f3' ( temp float)
+0:5 Constant:
+0:5 +1.#INF
+0:6 Sequence
+0:6 move second child to first child ( temp float)
+0:6 'f4' ( temp float)
+0:6 add ( temp float)
+0:6 component-wise multiply ( temp float)
+0:6 'f2' ( temp float)
+0:6 Constant:
+0:6 +1.#INF
+0:6 Constant:
+0:6 +1.#INF
+0:10 Branch: Return with expression
+0:10 Construct vec4 ( temp 4-component vector of float)
+0:10 add ( temp float)
+0:10 add ( temp float)
+0:10 add ( temp float)
+0:10 add ( temp float)
+0:10 add ( temp float)
+0:10 'f1' ( temp float)
+0:10 'f2' ( temp float)
+0:10 'f3' ( temp float)
+0:10 'f4' ( temp float)
+0:10 Constant:
+0:10 -1.#INF
+0:10 Constant:
+0:10 1.#IND
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:2 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 37
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 35
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 12 "f1"
+ Name 14 "f2"
+ Name 16 "f3"
+ Name 17 "f4"
+ Name 35 "@entryPointOutput"
+ Decorate 35(@entryPointOutput) BuiltIn Position
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypePointer Function 6(float)
+ 13: 6(float) Constant 4286578688
+ 15: 6(float) Constant 2139095040
+ 29: 6(float) Constant 4290772992
+ 34: TypePointer Output 7(fvec4)
+35(@entryPointOutput): 34(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 36: 7(fvec4) FunctionCall 9(@main()
+ Store 35(@entryPointOutput) 36
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 12(f1): 11(ptr) Variable Function
+ 14(f2): 11(ptr) Variable Function
+ 16(f3): 11(ptr) Variable Function
+ 17(f4): 11(ptr) Variable Function
+ Store 12(f1) 13
+ Store 14(f2) 15
+ Store 16(f3) 15
+ 18: 6(float) Load 14(f2)
+ 19: 6(float) FMul 18 15
+ 20: 6(float) FAdd 19 15
+ Store 17(f4) 20
+ 21: 6(float) Load 12(f1)
+ 22: 6(float) Load 14(f2)
+ 23: 6(float) FAdd 21 22
+ 24: 6(float) Load 16(f3)
+ 25: 6(float) FAdd 23 24
+ 26: 6(float) Load 17(f4)
+ 27: 6(float) FAdd 25 26
+ 28: 6(float) FAdd 27 13
+ 30: 6(float) FAdd 28 29
+ 31: 7(fvec4) CompositeConstruct 30 30 30 30
+ ReturnValue 31
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.init.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.init.frag.out
index 7ae9475e165..9b5238840ad 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.init.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.init.frag.out
@@ -2,7 +2,7 @@ hlsl.init.frag
WARNING: 0:40: 'typedef' : struct-member initializers ignored
WARNING: 0:40: 'typedef' : struct-member initializers ignored
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
@@ -168,7 +168,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
@@ -331,7 +331,7 @@ gl_FragCoord origin is upper left
0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float a, layout( row_major std140) uniform float b, layout( row_major std140) uniform float c})
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 110
Capability Shader
@@ -339,6 +339,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "ShaderFunction" 98 101
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "ShaderFunction"
Name 11 "@ShaderFunction(vf4;"
Name 10 "input"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.init2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.init2.frag.out
index 33714aa486a..2aff3740e57 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.init2.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.init2.frag.out
@@ -1,5 +1,5 @@
hlsl.init2.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: Test1( ( temp void)
@@ -168,19 +168,19 @@ gl_FragCoord origin is upper left
0:? Sequence
0:45 Sequence
0:45 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:45 color: direct index for structure ( temp 4-component vector of float)
0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:45 Constant:
0:45 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: Test1( ( temp void)
@@ -349,16 +349,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:45 Sequence
0:45 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:45 color: direct index for structure ( temp 4-component vector of float)
0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:45 Constant:
0:45 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 112
Capability Shader
@@ -366,6 +366,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 109
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 6 "Test1("
Name 10 "PS_OUTPUT"
@@ -391,8 +392,8 @@ gl_FragCoord origin is upper left
MemberName 87(two) 1 "b"
Name 89 "twoNonConst"
Name 99 "ps_output"
- Name 109 "color"
- Decorate 109(color) Location 0
+ Name 109 "@entryPointOutput.color"
+ Decorate 109(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
8: TypeFloat 32
@@ -444,12 +445,12 @@ gl_FragCoord origin is upper left
102: 9(fvec4) ConstantComposite 18 18 18 18
103: TypePointer Function 9(fvec4)
108: TypePointer Output 9(fvec4)
- 109(color): 108(ptr) Variable Output
+109(@entryPointOutput.color): 108(ptr) Variable Output
4(main): 2 Function None 3
5: Label
110:10(PS_OUTPUT) FunctionCall 12(@main()
111: 9(fvec4) CompositeExtract 110 0
- Store 109(color) 111
+ Store 109(@entryPointOutput.color) 111
Return
FunctionEnd
6(Test1(): 2 Function None 3
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.inoutquals.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.inoutquals.frag.out
index 65017035b53..f02ba6deea2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.inoutquals.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.inoutquals.frag.out
@@ -1,12 +1,13 @@
hlsl.inoutquals.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
-0:8 Function Definition: MyFunc(f1;f1;f1; ( temp void)
+0:8 Function Definition: MyFunc(f1;f1;f1;f1; ( temp void)
0:8 Function Parameters:
0:8 'x' ( in float)
0:8 'y' ( out float)
0:8 'z' ( inout float)
+0:8 'w' ( inout float)
0:? Sequence
0:9 move second child to first child ( temp float)
0:9 'y' ( out float)
@@ -18,76 +19,84 @@ gl_FragCoord origin is upper left
0:11 'x' ( in float)
0:11 Constant:
0:11 -1.000000
-0:15 Function Definition: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 Function Parameters:
-0:15 'inpos' ( in 4-component vector of float)
-0:15 'sampleMask' ( out int)
+0:12 multiply second child into first child ( temp float)
+0:12 'w' ( inout float)
+0:12 Constant:
+0:12 1.000000
+0:16 Function Definition: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Function Parameters:
+0:16 'inpos' ( in 4-component vector of float)
+0:16 'sampleMask' ( out int)
0:? Sequence
-0:18 Sequence
-0:18 move second child to first child ( temp float)
-0:18 'x' ( temp float)
-0:18 Constant:
-0:18 7.000000
-0:18 move second child to first child ( temp float)
-0:18 'z' ( temp float)
-0:18 Constant:
-0:18 3.000000
-0:19 Function Call: MyFunc(f1;f1;f1; ( temp void)
-0:19 'x' ( temp float)
-0:19 'y' ( temp float)
-0:19 'z' ( temp float)
-0:21 move second child to first child ( temp 4-component vector of float)
-0:21 Color: direct index for structure ( temp 4-component vector of float)
-0:21 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:21 Constant:
-0:21 0 (const int)
-0:? Construct vec4 ( temp 4-component vector of float)
-0:21 'x' ( temp float)
-0:21 'y' ( temp float)
-0:21 'z' ( temp float)
-0:21 Constant:
-0:21 1.000000
-0:22 move second child to first child ( temp float)
-0:22 Depth: direct index for structure ( temp float)
+0:19 Sequence
+0:19 move second child to first child ( temp float)
+0:19 'x' ( temp float)
+0:19 Constant:
+0:19 7.000000
+0:19 move second child to first child ( temp float)
+0:19 'z' ( temp float)
+0:19 Constant:
+0:19 3.000000
+0:20 Function Call: MyFunc(f1;f1;f1;f1; ( temp void)
+0:20 'x' ( temp float)
+0:20 'y' ( temp float)
+0:20 'z' ( temp float)
+0:20 direct index ( temp float)
+0:20 'inpos' ( in 4-component vector of float)
+0:20 Constant:
+0:20 3 (const int)
+0:22 move second child to first child ( temp 4-component vector of float)
+0:22 Color: direct index for structure ( temp 4-component vector of float)
0:22 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:22 Constant:
-0:22 1 (const int)
-0:22 direct index ( temp float)
-0:22 'inpos' ( in 4-component vector of float)
+0:22 0 (const int)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:22 'x' ( temp float)
+0:22 'y' ( temp float)
+0:22 'z' ( temp float)
0:22 Constant:
-0:22 3 (const int)
-0:24 Branch: Return with expression
-0:24 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 Function Definition: main( ( temp void)
-0:15 Function Parameters:
+0:22 1.000000
+0:23 move second child to first child ( temp float)
+0:23 Depth: direct index for structure ( temp float)
+0:23 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:23 Constant:
+0:23 1 (const int)
+0:23 direct index ( temp float)
+0:23 'inpos' ( in 4-component vector of float)
+0:23 Constant:
+0:23 3 (const int)
+0:25 Branch: Return with expression
+0:25 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Function Definition: main( ( temp void)
+0:16 Function Parameters:
0:? Sequence
-0:15 move second child to first child ( temp 4-component vector of float)
+0:16 move second child to first child ( temp 4-component vector of float)
0:? 'inpos' ( temp 4-component vector of float)
0:? 'inpos' ( noperspective in 4-component vector of float FragCoord)
-0:15 Sequence
-0:15 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 Function Call: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Sequence
+0:16 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Function Call: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:? 'inpos' ( temp 4-component vector of float)
0:? 'sampleMask' ( temp int)
-0:15 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:15 Color: direct index for structure ( temp 4-component vector of float)
-0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 Constant:
-0:15 0 (const int)
-0:15 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
-0:15 Depth: direct index for structure ( temp float)
-0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 Constant:
-0:15 1 (const int)
-0:15 move second child to first child ( temp int)
+0:16 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
+0:16 Color: direct index for structure ( temp 4-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Constant:
+0:16 0 (const int)
+0:16 move second child to first child ( temp float)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:16 Depth: direct index for structure ( temp float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Constant:
+0:16 1 (const int)
+0:16 move second child to first child ( temp int)
0:? 'sampleMask' ( out int SampleMaskIn)
0:? 'sampleMask' ( temp int)
0:? Linker Objects
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:? 'inpos' ( noperspective in 4-component vector of float FragCoord)
0:? 'sampleMask' ( out int SampleMaskIn)
@@ -95,14 +104,15 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
-0:8 Function Definition: MyFunc(f1;f1;f1; ( temp void)
+0:8 Function Definition: MyFunc(f1;f1;f1;f1; ( temp void)
0:8 Function Parameters:
0:8 'x' ( in float)
0:8 'y' ( out float)
0:8 'z' ( inout float)
+0:8 'w' ( inout float)
0:? Sequence
0:9 move second child to first child ( temp float)
0:9 'y' ( out float)
@@ -114,218 +124,239 @@ gl_FragCoord origin is upper left
0:11 'x' ( in float)
0:11 Constant:
0:11 -1.000000
-0:15 Function Definition: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 Function Parameters:
-0:15 'inpos' ( in 4-component vector of float)
-0:15 'sampleMask' ( out int)
+0:12 multiply second child into first child ( temp float)
+0:12 'w' ( inout float)
+0:12 Constant:
+0:12 1.000000
+0:16 Function Definition: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Function Parameters:
+0:16 'inpos' ( in 4-component vector of float)
+0:16 'sampleMask' ( out int)
0:? Sequence
-0:18 Sequence
-0:18 move second child to first child ( temp float)
-0:18 'x' ( temp float)
-0:18 Constant:
-0:18 7.000000
-0:18 move second child to first child ( temp float)
-0:18 'z' ( temp float)
-0:18 Constant:
-0:18 3.000000
-0:19 Function Call: MyFunc(f1;f1;f1; ( temp void)
-0:19 'x' ( temp float)
-0:19 'y' ( temp float)
-0:19 'z' ( temp float)
-0:21 move second child to first child ( temp 4-component vector of float)
-0:21 Color: direct index for structure ( temp 4-component vector of float)
-0:21 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:21 Constant:
-0:21 0 (const int)
-0:? Construct vec4 ( temp 4-component vector of float)
-0:21 'x' ( temp float)
-0:21 'y' ( temp float)
-0:21 'z' ( temp float)
-0:21 Constant:
-0:21 1.000000
-0:22 move second child to first child ( temp float)
-0:22 Depth: direct index for structure ( temp float)
+0:19 Sequence
+0:19 move second child to first child ( temp float)
+0:19 'x' ( temp float)
+0:19 Constant:
+0:19 7.000000
+0:19 move second child to first child ( temp float)
+0:19 'z' ( temp float)
+0:19 Constant:
+0:19 3.000000
+0:20 Function Call: MyFunc(f1;f1;f1;f1; ( temp void)
+0:20 'x' ( temp float)
+0:20 'y' ( temp float)
+0:20 'z' ( temp float)
+0:20 direct index ( temp float)
+0:20 'inpos' ( in 4-component vector of float)
+0:20 Constant:
+0:20 3 (const int)
+0:22 move second child to first child ( temp 4-component vector of float)
+0:22 Color: direct index for structure ( temp 4-component vector of float)
0:22 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:22 Constant:
-0:22 1 (const int)
-0:22 direct index ( temp float)
-0:22 'inpos' ( in 4-component vector of float)
+0:22 0 (const int)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:22 'x' ( temp float)
+0:22 'y' ( temp float)
+0:22 'z' ( temp float)
0:22 Constant:
-0:22 3 (const int)
-0:24 Branch: Return with expression
-0:24 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 Function Definition: main( ( temp void)
-0:15 Function Parameters:
+0:22 1.000000
+0:23 move second child to first child ( temp float)
+0:23 Depth: direct index for structure ( temp float)
+0:23 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:23 Constant:
+0:23 1 (const int)
+0:23 direct index ( temp float)
+0:23 'inpos' ( in 4-component vector of float)
+0:23 Constant:
+0:23 3 (const int)
+0:25 Branch: Return with expression
+0:25 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Function Definition: main( ( temp void)
+0:16 Function Parameters:
0:? Sequence
-0:15 move second child to first child ( temp 4-component vector of float)
+0:16 move second child to first child ( temp 4-component vector of float)
0:? 'inpos' ( temp 4-component vector of float)
0:? 'inpos' ( noperspective in 4-component vector of float FragCoord)
-0:15 Sequence
-0:15 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 Function Call: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Sequence
+0:16 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Function Call: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:? 'inpos' ( temp 4-component vector of float)
0:? 'sampleMask' ( temp int)
-0:15 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:15 Color: direct index for structure ( temp 4-component vector of float)
-0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 Constant:
-0:15 0 (const int)
-0:15 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
-0:15 Depth: direct index for structure ( temp float)
-0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
-0:15 Constant:
-0:15 1 (const int)
-0:15 move second child to first child ( temp int)
+0:16 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
+0:16 Color: direct index for structure ( temp 4-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Constant:
+0:16 0 (const int)
+0:16 move second child to first child ( temp float)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:16 Depth: direct index for structure ( temp float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
+0:16 Constant:
+0:16 1 (const int)
+0:16 move second child to first child ( temp int)
0:? 'sampleMask' ( out int SampleMaskIn)
0:? 'sampleMask' ( temp int)
0:? Linker Objects
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:? 'inpos' ( noperspective in 4-component vector of float FragCoord)
0:? 'sampleMask' ( out int SampleMaskIn)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 80
+// Generated by (magic number): 80002
+// Id's are bound by 88
Capability Shader
- Capability SampleRateShading
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 60 70 74 78
+ EntryPoint Fragment 4 "main" 68 78 82 86
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
- Name 12 "MyFunc(f1;f1;f1;"
+ Name 13 "MyFunc(f1;f1;f1;f1;"
Name 9 "x"
Name 10 "y"
Name 11 "z"
- Name 18 "PS_OUTPUT"
- MemberName 18(PS_OUTPUT) 0 "Color"
- MemberName 18(PS_OUTPUT) 1 "Depth"
- Name 22 "@main(vf4;i1;"
- Name 20 "inpos"
- Name 21 "sampleMask"
- Name 27 "x"
- Name 29 "z"
- Name 31 "y"
- Name 32 "param"
- Name 34 "param"
- Name 35 "param"
- Name 41 "psout"
- Name 58 "inpos"
- Name 60 "inpos"
- Name 62 "flattenTemp"
- Name 63 "sampleMask"
- Name 64 "param"
- Name 66 "param"
- Name 70 "Color"
- Name 74 "Depth"
- Name 78 "sampleMask"
- Decorate 60(inpos) NoPerspective
- Decorate 60(inpos) BuiltIn FragCoord
- Decorate 70(Color) Location 0
- Decorate 74(Depth) BuiltIn FragDepth
- Decorate 78(sampleMask) BuiltIn SampleMask
+ Name 12 "w"
+ Name 19 "PS_OUTPUT"
+ MemberName 19(PS_OUTPUT) 0 "Color"
+ MemberName 19(PS_OUTPUT) 1 "Depth"
+ Name 23 "@main(vf4;i1;"
+ Name 21 "inpos"
+ Name 22 "sampleMask"
+ Name 31 "x"
+ Name 33 "z"
+ Name 35 "y"
+ Name 36 "param"
+ Name 38 "param"
+ Name 39 "param"
+ Name 41 "param"
+ Name 52 "psout"
+ Name 66 "inpos"
+ Name 68 "inpos"
+ Name 70 "flattenTemp"
+ Name 71 "sampleMask"
+ Name 72 "param"
+ Name 74 "param"
+ Name 78 "@entryPointOutput.Color"
+ Name 82 "@entryPointOutput.Depth"
+ Name 86 "sampleMask"
+ Decorate 68(inpos) NoPerspective
+ Decorate 68(inpos) BuiltIn FragCoord
+ Decorate 78(@entryPointOutput.Color) Location 0
+ Decorate 82(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 86(sampleMask) BuiltIn SampleMask
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Function 6(float)
- 8: TypeFunction 2 7(ptr) 7(ptr) 7(ptr)
- 14: TypeVector 6(float) 4
- 15: TypePointer Function 14(fvec4)
- 16: TypeInt 32 1
- 17: TypePointer Function 16(int)
- 18(PS_OUTPUT): TypeStruct 14(fvec4) 6(float)
- 19: TypeFunction 18(PS_OUTPUT) 15(ptr) 17(ptr)
- 26: 6(float) Constant 3212836864
- 28: 6(float) Constant 1088421888
- 30: 6(float) Constant 1077936128
- 40: TypePointer Function 18(PS_OUTPUT)
- 42: 16(int) Constant 0
- 46: 6(float) Constant 1065353216
- 49: 16(int) Constant 1
- 50: TypeInt 32 0
- 51: 50(int) Constant 3
- 59: TypePointer Input 14(fvec4)
- 60(inpos): 59(ptr) Variable Input
- 69: TypePointer Output 14(fvec4)
- 70(Color): 69(ptr) Variable Output
- 73: TypePointer Output 6(float)
- 74(Depth): 73(ptr) Variable Output
- 77: TypePointer Output 16(int)
- 78(sampleMask): 77(ptr) Variable Output
+ 8: TypeFunction 2 7(ptr) 7(ptr) 7(ptr) 7(ptr)
+ 15: TypeVector 6(float) 4
+ 16: TypePointer Function 15(fvec4)
+ 17: TypeInt 32 1
+ 18: TypePointer Function 17(int)
+ 19(PS_OUTPUT): TypeStruct 15(fvec4) 6(float)
+ 20: TypeFunction 19(PS_OUTPUT) 16(ptr) 18(ptr)
+ 27: 6(float) Constant 3212836864
+ 28: 6(float) Constant 1065353216
+ 32: 6(float) Constant 1088421888
+ 34: 6(float) Constant 1077936128
+ 42: TypeInt 32 0
+ 43: 42(int) Constant 3
+ 51: TypePointer Function 19(PS_OUTPUT)
+ 53: 17(int) Constant 0
+ 59: 17(int) Constant 1
+ 67: TypePointer Input 15(fvec4)
+ 68(inpos): 67(ptr) Variable Input
+ 77: TypePointer Output 15(fvec4)
+78(@entryPointOutput.Color): 77(ptr) Variable Output
+ 81: TypePointer Output 6(float)
+82(@entryPointOutput.Depth): 81(ptr) Variable Output
+ 85: TypePointer Output 17(int)
+ 86(sampleMask): 85(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 58(inpos): 15(ptr) Variable Function
- 62(flattenTemp): 40(ptr) Variable Function
- 63(sampleMask): 17(ptr) Variable Function
- 64(param): 15(ptr) Variable Function
- 66(param): 17(ptr) Variable Function
- 61: 14(fvec4) Load 60(inpos)
- Store 58(inpos) 61
- 65: 14(fvec4) Load 58(inpos)
- Store 64(param) 65
- 67:18(PS_OUTPUT) FunctionCall 22(@main(vf4;i1;) 64(param) 66(param)
- 68: 16(int) Load 66(param)
- Store 63(sampleMask) 68
- Store 62(flattenTemp) 67
- 71: 15(ptr) AccessChain 62(flattenTemp) 42
- 72: 14(fvec4) Load 71
- Store 70(Color) 72
- 75: 7(ptr) AccessChain 62(flattenTemp) 49
- 76: 6(float) Load 75
- Store 74(Depth) 76
- 79: 16(int) Load 63(sampleMask)
- Store 78(sampleMask) 79
+ 66(inpos): 16(ptr) Variable Function
+ 70(flattenTemp): 51(ptr) Variable Function
+ 71(sampleMask): 18(ptr) Variable Function
+ 72(param): 16(ptr) Variable Function
+ 74(param): 18(ptr) Variable Function
+ 69: 15(fvec4) Load 68(inpos)
+ Store 66(inpos) 69
+ 73: 15(fvec4) Load 66(inpos)
+ Store 72(param) 73
+ 75:19(PS_OUTPUT) FunctionCall 23(@main(vf4;i1;) 72(param) 74(param)
+ 76: 17(int) Load 74(param)
+ Store 71(sampleMask) 76
+ Store 70(flattenTemp) 75
+ 79: 16(ptr) AccessChain 70(flattenTemp) 53
+ 80: 15(fvec4) Load 79
+ Store 78(@entryPointOutput.Color) 80
+ 83: 7(ptr) AccessChain 70(flattenTemp) 59
+ 84: 6(float) Load 83
+ Store 82(@entryPointOutput.Depth) 84
+ 87: 17(int) Load 71(sampleMask)
+ Store 86(sampleMask) 87
Return
FunctionEnd
-12(MyFunc(f1;f1;f1;): 2 Function None 8
+13(MyFunc(f1;f1;f1;f1;): 2 Function None 8
9(x): 7(ptr) FunctionParameter
10(y): 7(ptr) FunctionParameter
11(z): 7(ptr) FunctionParameter
- 13: Label
- 24: 6(float) Load 9(x)
- Store 10(y) 24
- 25: 6(float) Load 10(y)
- Store 11(z) 25
- Store 9(x) 26
+ 12(w): 7(ptr) FunctionParameter
+ 14: Label
+ 25: 6(float) Load 9(x)
+ Store 10(y) 25
+ 26: 6(float) Load 10(y)
+ Store 11(z) 26
+ Store 9(x) 27
+ 29: 6(float) Load 12(w)
+ 30: 6(float) FMul 29 28
+ Store 12(w) 30
Return
FunctionEnd
-22(@main(vf4;i1;):18(PS_OUTPUT) Function None 19
- 20(inpos): 15(ptr) FunctionParameter
- 21(sampleMask): 17(ptr) FunctionParameter
- 23: Label
- 27(x): 7(ptr) Variable Function
- 29(z): 7(ptr) Variable Function
- 31(y): 7(ptr) Variable Function
- 32(param): 7(ptr) Variable Function
- 34(param): 7(ptr) Variable Function
- 35(param): 7(ptr) Variable Function
- 41(psout): 40(ptr) Variable Function
- Store 27(x) 28
- Store 29(z) 30
- 33: 6(float) Load 27(x)
- Store 32(param) 33
- 36: 6(float) Load 29(z)
- Store 35(param) 36
- 37: 2 FunctionCall 12(MyFunc(f1;f1;f1;) 32(param) 34(param) 35(param)
- 38: 6(float) Load 34(param)
- Store 31(y) 38
- 39: 6(float) Load 35(param)
- Store 29(z) 39
- 43: 6(float) Load 27(x)
- 44: 6(float) Load 31(y)
- 45: 6(float) Load 29(z)
- 47: 14(fvec4) CompositeConstruct 43 44 45 46
- 48: 15(ptr) AccessChain 41(psout) 42
- Store 48 47
- 52: 7(ptr) AccessChain 20(inpos) 51
- 53: 6(float) Load 52
- 54: 7(ptr) AccessChain 41(psout) 49
- Store 54 53
- 55:18(PS_OUTPUT) Load 41(psout)
- ReturnValue 55
+23(@main(vf4;i1;):19(PS_OUTPUT) Function None 20
+ 21(inpos): 16(ptr) FunctionParameter
+ 22(sampleMask): 18(ptr) FunctionParameter
+ 24: Label
+ 31(x): 7(ptr) Variable Function
+ 33(z): 7(ptr) Variable Function
+ 35(y): 7(ptr) Variable Function
+ 36(param): 7(ptr) Variable Function
+ 38(param): 7(ptr) Variable Function
+ 39(param): 7(ptr) Variable Function
+ 41(param): 7(ptr) Variable Function
+ 52(psout): 51(ptr) Variable Function
+ Store 31(x) 32
+ Store 33(z) 34
+ 37: 6(float) Load 31(x)
+ Store 36(param) 37
+ 40: 6(float) Load 33(z)
+ Store 39(param) 40
+ 44: 7(ptr) AccessChain 21(inpos) 43
+ 45: 6(float) Load 44
+ Store 41(param) 45
+ 46: 2 FunctionCall 13(MyFunc(f1;f1;f1;f1;) 36(param) 38(param) 39(param) 41(param)
+ 47: 6(float) Load 38(param)
+ Store 35(y) 47
+ 48: 6(float) Load 39(param)
+ Store 33(z) 48
+ 49: 6(float) Load 41(param)
+ 50: 7(ptr) AccessChain 21(inpos) 43
+ Store 50 49
+ 54: 6(float) Load 31(x)
+ 55: 6(float) Load 35(y)
+ 56: 6(float) Load 33(z)
+ 57: 15(fvec4) CompositeConstruct 54 55 56 28
+ 58: 16(ptr) AccessChain 52(psout) 53
+ Store 58 57
+ 60: 7(ptr) AccessChain 21(inpos) 43
+ 61: 6(float) Load 60
+ 62: 7(ptr) AccessChain 52(psout) 59
+ Store 62 61
+ 63:19(PS_OUTPUT) Load 52(psout)
+ ReturnValue 63
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsic.frexp.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsic.frexp.frag.out
new file mode 100644
index 00000000000..b04909ec713
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsic.frexp.frag.out
@@ -0,0 +1,336 @@
+hlsl.intrinsic.frexp.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:3 Function Definition: PixelShaderFunctionS(f1;f1; ( temp float)
+0:3 Function Parameters:
+0:3 'inF0' ( in float)
+0:3 'inF1' ( in float)
+0:? Sequence
+0:4 Sequence
+0:4 move second child to first child ( temp float)
+0:4 'r000' ( temp float)
+0:4 frexp ( temp float)
+0:4 'inF0' ( in float)
+0:4 'inF1' ( in float)
+0:5 Branch: Return with expression
+0:5 Constant:
+0:5 0.000000
+0:9 Function Definition: PixelShaderFunction2(vf2;vf2; ( temp 2-component vector of float)
+0:9 Function Parameters:
+0:9 'inF0' ( in 2-component vector of float)
+0:9 'inF1' ( in 2-component vector of float)
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child ( temp 2-component vector of float)
+0:10 'r000' ( temp 2-component vector of float)
+0:10 frexp ( temp 2-component vector of float)
+0:10 'inF0' ( in 2-component vector of float)
+0:10 'inF1' ( in 2-component vector of float)
+0:11 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:15 Function Definition: PixelShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
+0:15 Function Parameters:
+0:15 'inF0' ( in 3-component vector of float)
+0:15 'inF1' ( in 3-component vector of float)
+0:? Sequence
+0:16 Sequence
+0:16 move second child to first child ( temp 3-component vector of float)
+0:16 'r000' ( temp 3-component vector of float)
+0:16 frexp ( temp 3-component vector of float)
+0:16 'inF0' ( in 3-component vector of float)
+0:16 'inF1' ( in 3-component vector of float)
+0:17 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:21 Function Definition: PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float)
+0:21 Function Parameters:
+0:21 'inF0' ( in 4-component vector of float)
+0:21 'inF1' ( in 4-component vector of float)
+0:? Sequence
+0:22 Sequence
+0:22 move second child to first child ( temp 4-component vector of float)
+0:22 'r000' ( temp 4-component vector of float)
+0:22 frexp ( temp 4-component vector of float)
+0:22 'inF0' ( in 4-component vector of float)
+0:22 'inF1' ( in 4-component vector of float)
+0:23 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:33 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
+0:33 Function Parameters:
+0:? Sequence
+0:35 move second child to first child ( temp 4-component vector of float)
+0:35 color: direct index for structure ( temp 4-component vector of float)
+0:35 'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 1.000000
+0:35 1.000000
+0:35 1.000000
+0:35 1.000000
+0:36 Branch: Return with expression
+0:36 'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:33 Function Definition: main( ( temp void)
+0:33 Function Parameters:
+0:? Sequence
+0:33 Sequence
+0:33 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
+0:33 color: direct index for structure ( temp 4-component vector of float)
+0:33 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
+0:33 Constant:
+0:33 0 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:3 Function Definition: PixelShaderFunctionS(f1;f1; ( temp float)
+0:3 Function Parameters:
+0:3 'inF0' ( in float)
+0:3 'inF1' ( in float)
+0:? Sequence
+0:4 Sequence
+0:4 move second child to first child ( temp float)
+0:4 'r000' ( temp float)
+0:4 frexp ( temp float)
+0:4 'inF0' ( in float)
+0:4 'inF1' ( in float)
+0:5 Branch: Return with expression
+0:5 Constant:
+0:5 0.000000
+0:9 Function Definition: PixelShaderFunction2(vf2;vf2; ( temp 2-component vector of float)
+0:9 Function Parameters:
+0:9 'inF0' ( in 2-component vector of float)
+0:9 'inF1' ( in 2-component vector of float)
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child ( temp 2-component vector of float)
+0:10 'r000' ( temp 2-component vector of float)
+0:10 frexp ( temp 2-component vector of float)
+0:10 'inF0' ( in 2-component vector of float)
+0:10 'inF1' ( in 2-component vector of float)
+0:11 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:15 Function Definition: PixelShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
+0:15 Function Parameters:
+0:15 'inF0' ( in 3-component vector of float)
+0:15 'inF1' ( in 3-component vector of float)
+0:? Sequence
+0:16 Sequence
+0:16 move second child to first child ( temp 3-component vector of float)
+0:16 'r000' ( temp 3-component vector of float)
+0:16 frexp ( temp 3-component vector of float)
+0:16 'inF0' ( in 3-component vector of float)
+0:16 'inF1' ( in 3-component vector of float)
+0:17 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:21 Function Definition: PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float)
+0:21 Function Parameters:
+0:21 'inF0' ( in 4-component vector of float)
+0:21 'inF1' ( in 4-component vector of float)
+0:? Sequence
+0:22 Sequence
+0:22 move second child to first child ( temp 4-component vector of float)
+0:22 'r000' ( temp 4-component vector of float)
+0:22 frexp ( temp 4-component vector of float)
+0:22 'inF0' ( in 4-component vector of float)
+0:22 'inF1' ( in 4-component vector of float)
+0:23 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:33 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
+0:33 Function Parameters:
+0:? Sequence
+0:35 move second child to first child ( temp 4-component vector of float)
+0:35 color: direct index for structure ( temp 4-component vector of float)
+0:35 'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 1.000000
+0:35 1.000000
+0:35 1.000000
+0:35 1.000000
+0:36 Branch: Return with expression
+0:36 'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:33 Function Definition: main( ( temp void)
+0:33 Function Parameters:
+0:? Sequence
+0:33 Sequence
+0:33 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
+0:33 color: direct index for structure ( temp 4-component vector of float)
+0:33 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
+0:33 Constant:
+0:33 0 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 98
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 95
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "PixelShaderFunctionS(f1;f1;"
+ Name 9 "inF0"
+ Name 10 "inF1"
+ Name 18 "PixelShaderFunction2(vf2;vf2;"
+ Name 16 "inF0"
+ Name 17 "inF1"
+ Name 25 "PixelShaderFunction3(vf3;vf3;"
+ Name 23 "inF0"
+ Name 24 "inF1"
+ Name 32 "PixelShaderFunction(vf4;vf4;"
+ Name 30 "inF0"
+ Name 31 "inF1"
+ Name 34 "PS_OUTPUT"
+ MemberName 34(PS_OUTPUT) 0 "color"
+ Name 36 "@main("
+ Name 38 "r000"
+ Name 41 "ResType"
+ Name 49 "r000"
+ Name 52 "ResType"
+ Name 62 "r000"
+ Name 65 "ResType"
+ Name 74 "r000"
+ Name 77 "ResType"
+ Name 87 "ps_output"
+ Name 95 "@entryPointOutput.color"
+ Decorate 95(@entryPointOutput.color) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Function 6(float)
+ 8: TypeFunction 6(float) 7(ptr) 7(ptr)
+ 13: TypeVector 6(float) 2
+ 14: TypePointer Function 13(fvec2)
+ 15: TypeFunction 13(fvec2) 14(ptr) 14(ptr)
+ 20: TypeVector 6(float) 3
+ 21: TypePointer Function 20(fvec3)
+ 22: TypeFunction 20(fvec3) 21(ptr) 21(ptr)
+ 27: TypeVector 6(float) 4
+ 28: TypePointer Function 27(fvec4)
+ 29: TypeFunction 27(fvec4) 28(ptr) 28(ptr)
+ 34(PS_OUTPUT): TypeStruct 27(fvec4)
+ 35: TypeFunction 34(PS_OUTPUT)
+ 40: TypeInt 32 1
+ 41(ResType): TypeStruct 6(float) 40(int)
+ 46: 6(float) Constant 0
+ 51: TypeVector 40(int) 2
+ 52(ResType): TypeStruct 13(fvec2) 51(ivec2)
+ 57: 6(float) Constant 1065353216
+ 58: 6(float) Constant 1073741824
+ 59: 13(fvec2) ConstantComposite 57 58
+ 64: TypeVector 40(int) 3
+ 65(ResType): TypeStruct 20(fvec3) 64(ivec3)
+ 70: 6(float) Constant 1077936128
+ 71: 20(fvec3) ConstantComposite 57 58 70
+ 76: TypeVector 40(int) 4
+ 77(ResType): TypeStruct 27(fvec4) 76(ivec4)
+ 82: 6(float) Constant 1082130432
+ 83: 27(fvec4) ConstantComposite 57 58 70 82
+ 86: TypePointer Function 34(PS_OUTPUT)
+ 88: 40(int) Constant 0
+ 89: 27(fvec4) ConstantComposite 57 57 57 57
+ 94: TypePointer Output 27(fvec4)
+95(@entryPointOutput.color): 94(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 96:34(PS_OUTPUT) FunctionCall 36(@main()
+ 97: 27(fvec4) CompositeExtract 96 0
+ Store 95(@entryPointOutput.color) 97
+ Return
+ FunctionEnd
+11(PixelShaderFunctionS(f1;f1;): 6(float) Function None 8
+ 9(inF0): 7(ptr) FunctionParameter
+ 10(inF1): 7(ptr) FunctionParameter
+ 12: Label
+ 38(r000): 7(ptr) Variable Function
+ 39: 6(float) Load 9(inF0)
+ 42: 41(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 39
+ 43: 40(int) CompositeExtract 42 1
+ 44: 6(float) ConvertSToF 43
+ Store 10(inF1) 44
+ 45: 6(float) CompositeExtract 42 0
+ Store 38(r000) 45
+ ReturnValue 46
+ FunctionEnd
+18(PixelShaderFunction2(vf2;vf2;): 13(fvec2) Function None 15
+ 16(inF0): 14(ptr) FunctionParameter
+ 17(inF1): 14(ptr) FunctionParameter
+ 19: Label
+ 49(r000): 14(ptr) Variable Function
+ 50: 13(fvec2) Load 16(inF0)
+ 53: 52(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 50
+ 54: 51(ivec2) CompositeExtract 53 1
+ 55: 13(fvec2) ConvertSToF 54
+ Store 17(inF1) 55
+ 56: 13(fvec2) CompositeExtract 53 0
+ Store 49(r000) 56
+ ReturnValue 59
+ FunctionEnd
+25(PixelShaderFunction3(vf3;vf3;): 20(fvec3) Function None 22
+ 23(inF0): 21(ptr) FunctionParameter
+ 24(inF1): 21(ptr) FunctionParameter
+ 26: Label
+ 62(r000): 21(ptr) Variable Function
+ 63: 20(fvec3) Load 23(inF0)
+ 66: 65(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 63
+ 67: 64(ivec3) CompositeExtract 66 1
+ 68: 20(fvec3) ConvertSToF 67
+ Store 24(inF1) 68
+ 69: 20(fvec3) CompositeExtract 66 0
+ Store 62(r000) 69
+ ReturnValue 71
+ FunctionEnd
+32(PixelShaderFunction(vf4;vf4;): 27(fvec4) Function None 29
+ 30(inF0): 28(ptr) FunctionParameter
+ 31(inF1): 28(ptr) FunctionParameter
+ 33: Label
+ 74(r000): 28(ptr) Variable Function
+ 75: 27(fvec4) Load 30(inF0)
+ 78: 77(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 75
+ 79: 76(ivec4) CompositeExtract 78 1
+ 80: 27(fvec4) ConvertSToF 79
+ Store 31(inF1) 80
+ 81: 27(fvec4) CompositeExtract 78 0
+ Store 74(r000) 81
+ ReturnValue 83
+ FunctionEnd
+ 36(@main():34(PS_OUTPUT) Function None 35
+ 37: Label
+ 87(ps_output): 86(ptr) Variable Function
+ 90: 28(ptr) AccessChain 87(ps_output) 88
+ Store 90 89
+ 91:34(PS_OUTPUT) Load 87(ps_output)
+ ReturnValue 91
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsic.frexp.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsic.frexp.vert.out
new file mode 100644
index 00000000000..01fc5b2b761
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsic.frexp.vert.out
@@ -0,0 +1,222 @@
+hlsl.intrinsic.frexp.vert
+Shader version: 500
+0:? Sequence
+0:2 Function Definition: VertexShaderFunctionS(f1;f1; ( temp float)
+0:2 Function Parameters:
+0:2 'inF0' ( in float)
+0:2 'inF1' ( in float)
+0:? Sequence
+0:3 frexp ( temp float)
+0:3 'inF0' ( in float)
+0:3 'inF1' ( in float)
+0:4 Branch: Return with expression
+0:4 Constant:
+0:4 0.000000
+0:8 Function Definition: VertexShaderFunction2(vf2;vf2; ( temp 2-component vector of float)
+0:8 Function Parameters:
+0:8 'inF0' ( in 2-component vector of float)
+0:8 'inF1' ( in 2-component vector of float)
+0:? Sequence
+0:9 frexp ( temp 2-component vector of float)
+0:9 'inF0' ( in 2-component vector of float)
+0:9 'inF1' ( in 2-component vector of float)
+0:10 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:14 Function Definition: VertexShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
+0:14 Function Parameters:
+0:14 'inF0' ( in 3-component vector of float)
+0:14 'inF1' ( in 3-component vector of float)
+0:? Sequence
+0:15 frexp ( temp 3-component vector of float)
+0:15 'inF0' ( in 3-component vector of float)
+0:15 'inF1' ( in 3-component vector of float)
+0:16 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:20 Function Definition: VertexShaderFunction4(vf4;vf4; ( temp 4-component vector of float)
+0:20 Function Parameters:
+0:20 'inF0' ( in 4-component vector of float)
+0:20 'inF1' ( in 4-component vector of float)
+0:? Sequence
+0:21 frexp ( temp 4-component vector of float)
+0:21 'inF0' ( in 4-component vector of float)
+0:21 'inF1' ( in 4-component vector of float)
+0:22 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:? Linker Objects
+
+
+Linked vertex stage:
+
+WARNING: Linking vertex stage: Entry point not found
+
+Shader version: 500
+0:? Sequence
+0:2 Function Definition: VertexShaderFunctionS(f1;f1; ( temp float)
+0:2 Function Parameters:
+0:2 'inF0' ( in float)
+0:2 'inF1' ( in float)
+0:? Sequence
+0:3 frexp ( temp float)
+0:3 'inF0' ( in float)
+0:3 'inF1' ( in float)
+0:4 Branch: Return with expression
+0:4 Constant:
+0:4 0.000000
+0:8 Function Definition: VertexShaderFunction2(vf2;vf2; ( temp 2-component vector of float)
+0:8 Function Parameters:
+0:8 'inF0' ( in 2-component vector of float)
+0:8 'inF1' ( in 2-component vector of float)
+0:? Sequence
+0:9 frexp ( temp 2-component vector of float)
+0:9 'inF0' ( in 2-component vector of float)
+0:9 'inF1' ( in 2-component vector of float)
+0:10 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:14 Function Definition: VertexShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
+0:14 Function Parameters:
+0:14 'inF0' ( in 3-component vector of float)
+0:14 'inF1' ( in 3-component vector of float)
+0:? Sequence
+0:15 frexp ( temp 3-component vector of float)
+0:15 'inF0' ( in 3-component vector of float)
+0:15 'inF1' ( in 3-component vector of float)
+0:16 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:20 Function Definition: VertexShaderFunction4(vf4;vf4; ( temp 4-component vector of float)
+0:20 Function Parameters:
+0:20 'inF0' ( in 4-component vector of float)
+0:20 'inF1' ( in 4-component vector of float)
+0:? Sequence
+0:21 frexp ( temp 4-component vector of float)
+0:21 'inF0' ( in 4-component vector of float)
+0:21 'inF1' ( in 4-component vector of float)
+0:22 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:? Linker Objects
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 78
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "VertexShaderFunction"
+ Source HLSL 500
+ Name 4 "VertexShaderFunction"
+ Name 11 "VertexShaderFunctionS(f1;f1;"
+ Name 9 "inF0"
+ Name 10 "inF1"
+ Name 18 "VertexShaderFunction2(vf2;vf2;"
+ Name 16 "inF0"
+ Name 17 "inF1"
+ Name 25 "VertexShaderFunction3(vf3;vf3;"
+ Name 23 "inF0"
+ Name 24 "inF1"
+ Name 32 "VertexShaderFunction4(vf4;vf4;"
+ Name 30 "inF0"
+ Name 31 "inF1"
+ Name 36 "ResType"
+ Name 46 "ResType"
+ Name 58 "ResType"
+ Name 69 "ResType"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Function 6(float)
+ 8: TypeFunction 6(float) 7(ptr) 7(ptr)
+ 13: TypeVector 6(float) 2
+ 14: TypePointer Function 13(fvec2)
+ 15: TypeFunction 13(fvec2) 14(ptr) 14(ptr)
+ 20: TypeVector 6(float) 3
+ 21: TypePointer Function 20(fvec3)
+ 22: TypeFunction 20(fvec3) 21(ptr) 21(ptr)
+ 27: TypeVector 6(float) 4
+ 28: TypePointer Function 27(fvec4)
+ 29: TypeFunction 27(fvec4) 28(ptr) 28(ptr)
+ 35: TypeInt 32 1
+ 36(ResType): TypeStruct 6(float) 35(int)
+ 41: 6(float) Constant 0
+ 45: TypeVector 35(int) 2
+ 46(ResType): TypeStruct 13(fvec2) 45(ivec2)
+ 51: 6(float) Constant 1065353216
+ 52: 6(float) Constant 1073741824
+ 53: 13(fvec2) ConstantComposite 51 52
+ 57: TypeVector 35(int) 3
+ 58(ResType): TypeStruct 20(fvec3) 57(ivec3)
+ 63: 6(float) Constant 1077936128
+ 64: 20(fvec3) ConstantComposite 51 52 63
+ 68: TypeVector 35(int) 4
+ 69(ResType): TypeStruct 27(fvec4) 68(ivec4)
+ 74: 6(float) Constant 1082130432
+ 75: 27(fvec4) ConstantComposite 51 52 63 74
+4(VertexShaderFunction): 2 Function None 3
+ 5: Label
+ Return
+ FunctionEnd
+11(VertexShaderFunctionS(f1;f1;): 6(float) Function None 8
+ 9(inF0): 7(ptr) FunctionParameter
+ 10(inF1): 7(ptr) FunctionParameter
+ 12: Label
+ 34: 6(float) Load 9(inF0)
+ 37: 36(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 34
+ 38: 35(int) CompositeExtract 37 1
+ 39: 6(float) ConvertSToF 38
+ Store 10(inF1) 39
+ 40: 6(float) CompositeExtract 37 0
+ ReturnValue 41
+ FunctionEnd
+18(VertexShaderFunction2(vf2;vf2;): 13(fvec2) Function None 15
+ 16(inF0): 14(ptr) FunctionParameter
+ 17(inF1): 14(ptr) FunctionParameter
+ 19: Label
+ 44: 13(fvec2) Load 16(inF0)
+ 47: 46(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 44
+ 48: 45(ivec2) CompositeExtract 47 1
+ 49: 13(fvec2) ConvertSToF 48
+ Store 17(inF1) 49
+ 50: 13(fvec2) CompositeExtract 47 0
+ ReturnValue 53
+ FunctionEnd
+25(VertexShaderFunction3(vf3;vf3;): 20(fvec3) Function None 22
+ 23(inF0): 21(ptr) FunctionParameter
+ 24(inF1): 21(ptr) FunctionParameter
+ 26: Label
+ 56: 20(fvec3) Load 23(inF0)
+ 59: 58(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 56
+ 60: 57(ivec3) CompositeExtract 59 1
+ 61: 20(fvec3) ConvertSToF 60
+ Store 24(inF1) 61
+ 62: 20(fvec3) CompositeExtract 59 0
+ ReturnValue 64
+ FunctionEnd
+32(VertexShaderFunction4(vf4;vf4;): 27(fvec4) Function None 29
+ 30(inF0): 28(ptr) FunctionParameter
+ 31(inF1): 28(ptr) FunctionParameter
+ 33: Label
+ 67: 27(fvec4) Load 30(inF0)
+ 70: 69(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 67
+ 71: 68(ivec4) CompositeExtract 70 1
+ 72: 27(fvec4) ConvertSToF 71
+ Store 31(inF1) 72
+ 73: 27(fvec4) CompositeExtract 70 0
+ ReturnValue 75
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.barriers.comp.out
index c82ee0f0526..bc8a07352b3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.barriers.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.barriers.comp.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.barriers.comp
-Shader version: 450
+Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:3 Function Definition: @ComputeShaderFunction( ( temp float)
@@ -27,7 +27,7 @@ local_size = (1, 1, 1)
Linked compute stage:
-Shader version: 450
+Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:3 Function Definition: @ComputeShaderFunction( ( temp float)
@@ -52,7 +52,7 @@ local_size = (1, 1, 1)
0:? '@entryPointOutput' (layout( location=0) out float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 22
Capability Shader
@@ -60,6 +60,7 @@ local_size = (1, 1, 1)
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "ComputeShaderFunction" 20
ExecutionMode 4 LocalSize 1 1 1
+ Source HLSL 500
Name 4 "ComputeShaderFunction"
Name 8 "@ComputeShaderFunction("
Name 20 "@entryPointOutput"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.comp.out
index c4f7ac89ade..01b6f69c11f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.comp.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.comp
-Shader version: 450
+Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:17 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; ( temp float)
@@ -11,7 +11,8 @@ local_size = (1, 1, 1)
0:17 'inU1' ( in uint)
0:? Sequence
0:21 all ( temp bool)
-0:21 'inF0' ( in float)
+0:21 Convert float to bool ( temp bool)
+0:21 'inF0' ( in float)
0:24 AtomicAdd ( temp void)
0:24 'gs_ua' ( shared uint)
0:24 'gs_ub' ( shared uint)
@@ -92,7 +93,8 @@ local_size = (1, 1, 1)
0:51 'inU1' ( in 2-component vector of uint)
0:? Sequence
0:55 all ( temp bool)
-0:55 'inF0' ( in 2-component vector of float)
+0:55 Convert float to bool ( temp 2-component vector of bool)
+0:55 'inF0' ( in 2-component vector of float)
0:58 AtomicAdd ( temp void)
0:58 'gs_ua2' ( shared 2-component vector of uint)
0:58 'gs_ub2' ( shared 2-component vector of uint)
@@ -165,7 +167,8 @@ local_size = (1, 1, 1)
0:78 'inU1' ( in 3-component vector of uint)
0:? Sequence
0:82 all ( temp bool)
-0:82 'inF0' ( in 3-component vector of float)
+0:82 Convert float to bool ( temp 3-component vector of bool)
+0:82 'inF0' ( in 3-component vector of float)
0:85 AtomicAdd ( temp void)
0:85 'gs_ua3' ( shared 3-component vector of uint)
0:85 'gs_ub3' ( shared 3-component vector of uint)
@@ -239,7 +242,8 @@ local_size = (1, 1, 1)
0:105 'inU1' ( in 4-component vector of uint)
0:? Sequence
0:109 all ( temp bool)
-0:109 'inF0' ( in 4-component vector of float)
+0:109 Convert float to bool ( temp 4-component vector of bool)
+0:109 'inF0' ( in 4-component vector of float)
0:112 AtomicAdd ( temp void)
0:112 'gs_ua4' ( shared 4-component vector of uint)
0:112 'gs_ub4' ( shared 4-component vector of uint)
@@ -355,7 +359,7 @@ local_size = (1, 1, 1)
Linked compute stage:
-Shader version: 450
+Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:17 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; ( temp float)
@@ -367,7 +371,8 @@ local_size = (1, 1, 1)
0:17 'inU1' ( in uint)
0:? Sequence
0:21 all ( temp bool)
-0:21 'inF0' ( in float)
+0:21 Convert float to bool ( temp bool)
+0:21 'inF0' ( in float)
0:24 AtomicAdd ( temp void)
0:24 'gs_ua' ( shared uint)
0:24 'gs_ub' ( shared uint)
@@ -448,7 +453,8 @@ local_size = (1, 1, 1)
0:51 'inU1' ( in 2-component vector of uint)
0:? Sequence
0:55 all ( temp bool)
-0:55 'inF0' ( in 2-component vector of float)
+0:55 Convert float to bool ( temp 2-component vector of bool)
+0:55 'inF0' ( in 2-component vector of float)
0:58 AtomicAdd ( temp void)
0:58 'gs_ua2' ( shared 2-component vector of uint)
0:58 'gs_ub2' ( shared 2-component vector of uint)
@@ -521,7 +527,8 @@ local_size = (1, 1, 1)
0:78 'inU1' ( in 3-component vector of uint)
0:? Sequence
0:82 all ( temp bool)
-0:82 'inF0' ( in 3-component vector of float)
+0:82 Convert float to bool ( temp 3-component vector of bool)
+0:82 'inF0' ( in 3-component vector of float)
0:85 AtomicAdd ( temp void)
0:85 'gs_ua3' ( shared 3-component vector of uint)
0:85 'gs_ub3' ( shared 3-component vector of uint)
@@ -595,7 +602,8 @@ local_size = (1, 1, 1)
0:105 'inU1' ( in 4-component vector of uint)
0:? Sequence
0:109 all ( temp bool)
-0:109 'inF0' ( in 4-component vector of float)
+0:109 Convert float to bool ( temp 4-component vector of bool)
+0:109 'inF0' ( in 4-component vector of float)
0:112 AtomicAdd ( temp void)
0:112 'gs_ua4' ( shared 4-component vector of uint)
0:112 'gs_ub4' ( shared 4-component vector of uint)
@@ -708,14 +716,15 @@ local_size = (1, 1, 1)
0:? 'inU1' (layout( location=4) in 4-component vector of uint)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 255
+// Generated by (magic number): 80002
+// Id's are bound by 265
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint GLCompute 4 "ComputeShaderFunction" 227 230 233 237 240 243
+ EntryPoint GLCompute 4 "ComputeShaderFunction" 237 240 243 247 250 253
ExecutionMode 4 LocalSize 1 1 1
+ Source HLSL 500
Name 4 "ComputeShaderFunction"
Name 16 "ComputeShaderFunctionS(f1;f1;f1;u1;u1;"
Name 11 "inF0"
@@ -745,44 +754,44 @@ local_size = (1, 1, 1)
Name 55 "inF2"
Name 56 "inU0"
Name 57 "inU1"
- Name 64 "gs_ua"
- Name 65 "gs_ub"
- Name 70 "out_u1"
- Name 78 "gs_uc"
- Name 107 "gs_ua2"
- Name 108 "gs_ub2"
- Name 111 "out_u2"
- Name 119 "gs_uc2"
- Name 148 "gs_ua3"
- Name 149 "gs_ub3"
- Name 152 "out_u3"
- Name 160 "gs_uc3"
- Name 188 "gs_ua4"
- Name 189 "gs_ub4"
- Name 192 "out_u4"
- Name 200 "gs_uc4"
- Name 225 "inF0"
- Name 227 "inF0"
- Name 229 "inF1"
- Name 230 "inF1"
- Name 232 "inF2"
- Name 233 "inF2"
- Name 235 "inU0"
- Name 237 "inU0"
- Name 239 "inU1"
- Name 240 "inU1"
- Name 243 "@entryPointOutput"
- Name 244 "param"
- Name 246 "param"
- Name 248 "param"
- Name 250 "param"
- Name 252 "param"
- Decorate 227(inF0) Location 0
- Decorate 230(inF1) Location 1
- Decorate 233(inF2) Location 2
- Decorate 237(inU0) Location 3
- Decorate 240(inU1) Location 4
- Decorate 243(@entryPointOutput) Location 0
+ Name 66 "gs_ua"
+ Name 67 "gs_ub"
+ Name 72 "out_u1"
+ Name 80 "gs_uc"
+ Name 111 "gs_ua2"
+ Name 112 "gs_ub2"
+ Name 115 "out_u2"
+ Name 123 "gs_uc2"
+ Name 155 "gs_ua3"
+ Name 156 "gs_ub3"
+ Name 159 "out_u3"
+ Name 167 "gs_uc3"
+ Name 198 "gs_ua4"
+ Name 199 "gs_ub4"
+ Name 202 "out_u4"
+ Name 210 "gs_uc4"
+ Name 235 "inF0"
+ Name 237 "inF0"
+ Name 239 "inF1"
+ Name 240 "inF1"
+ Name 242 "inF2"
+ Name 243 "inF2"
+ Name 245 "inU0"
+ Name 247 "inU0"
+ Name 249 "inU1"
+ Name 250 "inU1"
+ Name 253 "@entryPointOutput"
+ Name 254 "param"
+ Name 256 "param"
+ Name 258 "param"
+ Name 260 "param"
+ Name 262 "param"
+ Decorate 237(inF0) Location 0
+ Decorate 240(inF1) Location 1
+ Decorate 243(inF2) Location 2
+ Decorate 247(inU0) Location 3
+ Decorate 250(inU1) Location 4
+ Decorate 253(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -807,75 +816,81 @@ local_size = (1, 1, 1)
51: TypePointer Function 50(ivec4)
52: TypeFunction 48(fvec4) 49(ptr) 49(ptr) 49(ptr) 51(ptr) 51(ptr)
61: TypeBool
- 63: TypePointer Workgroup 8(int)
- 64(gs_ua): 63(ptr) Variable Workgroup
- 65(gs_ub): 63(ptr) Variable Workgroup
- 67: 8(int) Constant 1
- 68: 8(int) Constant 0
- 78(gs_uc): 63(ptr) Variable Workgroup
- 99: 6(float) Constant 0
- 106: TypePointer Workgroup 26(ivec2)
- 107(gs_ua2): 106(ptr) Variable Workgroup
- 108(gs_ub2): 106(ptr) Variable Workgroup
- 119(gs_uc2): 106(ptr) Variable Workgroup
- 140: 6(float) Constant 1065353216
- 141: 6(float) Constant 1073741824
- 142: 24(fvec2) ConstantComposite 140 141
- 147: TypePointer Workgroup 38(ivec3)
- 148(gs_ua3): 147(ptr) Variable Workgroup
- 149(gs_ub3): 147(ptr) Variable Workgroup
- 160(gs_uc3): 147(ptr) Variable Workgroup
- 181: 6(float) Constant 1077936128
- 182: 36(fvec3) ConstantComposite 140 141 181
- 187: TypePointer Workgroup 50(ivec4)
- 188(gs_ua4): 187(ptr) Variable Workgroup
- 189(gs_ub4): 187(ptr) Variable Workgroup
- 200(gs_uc4): 187(ptr) Variable Workgroup
- 221: 6(float) Constant 1082130432
- 222: 48(fvec4) ConstantComposite 140 141 181 221
- 226: TypePointer Input 48(fvec4)
- 227(inF0): 226(ptr) Variable Input
- 230(inF1): 226(ptr) Variable Input
- 233(inF2): 226(ptr) Variable Input
- 236: TypePointer Input 50(ivec4)
- 237(inU0): 236(ptr) Variable Input
- 240(inU1): 236(ptr) Variable Input
- 242: TypePointer Output 48(fvec4)
-243(@entryPointOutput): 242(ptr) Variable Output
+ 62: 6(float) Constant 0
+ 65: TypePointer Workgroup 8(int)
+ 66(gs_ua): 65(ptr) Variable Workgroup
+ 67(gs_ub): 65(ptr) Variable Workgroup
+ 69: 8(int) Constant 1
+ 70: 8(int) Constant 0
+ 80(gs_uc): 65(ptr) Variable Workgroup
+ 106: TypeVector 61(bool) 2
+ 107: 24(fvec2) ConstantComposite 62 62
+ 110: TypePointer Workgroup 26(ivec2)
+ 111(gs_ua2): 110(ptr) Variable Workgroup
+ 112(gs_ub2): 110(ptr) Variable Workgroup
+ 123(gs_uc2): 110(ptr) Variable Workgroup
+ 144: 6(float) Constant 1065353216
+ 145: 6(float) Constant 1073741824
+ 146: 24(fvec2) ConstantComposite 144 145
+ 150: TypeVector 61(bool) 3
+ 151: 36(fvec3) ConstantComposite 62 62 62
+ 154: TypePointer Workgroup 38(ivec3)
+ 155(gs_ua3): 154(ptr) Variable Workgroup
+ 156(gs_ub3): 154(ptr) Variable Workgroup
+ 167(gs_uc3): 154(ptr) Variable Workgroup
+ 188: 6(float) Constant 1077936128
+ 189: 36(fvec3) ConstantComposite 144 145 188
+ 193: TypeVector 61(bool) 4
+ 194: 48(fvec4) ConstantComposite 62 62 62 62
+ 197: TypePointer Workgroup 50(ivec4)
+ 198(gs_ua4): 197(ptr) Variable Workgroup
+ 199(gs_ub4): 197(ptr) Variable Workgroup
+ 210(gs_uc4): 197(ptr) Variable Workgroup
+ 231: 6(float) Constant 1082130432
+ 232: 48(fvec4) ConstantComposite 144 145 188 231
+ 236: TypePointer Input 48(fvec4)
+ 237(inF0): 236(ptr) Variable Input
+ 240(inF1): 236(ptr) Variable Input
+ 243(inF2): 236(ptr) Variable Input
+ 246: TypePointer Input 50(ivec4)
+ 247(inU0): 246(ptr) Variable Input
+ 250(inU1): 246(ptr) Variable Input
+ 252: TypePointer Output 48(fvec4)
+253(@entryPointOutput): 252(ptr) Variable Output
4(ComputeShaderFunction): 2 Function None 3
5: Label
- 225(inF0): 49(ptr) Variable Function
- 229(inF1): 49(ptr) Variable Function
- 232(inF2): 49(ptr) Variable Function
- 235(inU0): 51(ptr) Variable Function
- 239(inU1): 51(ptr) Variable Function
- 244(param): 49(ptr) Variable Function
- 246(param): 49(ptr) Variable Function
- 248(param): 49(ptr) Variable Function
- 250(param): 51(ptr) Variable Function
- 252(param): 51(ptr) Variable Function
- 228: 48(fvec4) Load 227(inF0)
- Store 225(inF0) 228
- 231: 48(fvec4) Load 230(inF1)
- Store 229(inF1) 231
- 234: 48(fvec4) Load 233(inF2)
- Store 232(inF2) 234
- 238: 50(ivec4) Load 237(inU0)
- Store 235(inU0) 238
- 241: 50(ivec4) Load 240(inU1)
- Store 239(inU1) 241
- 245: 48(fvec4) Load 225(inF0)
- Store 244(param) 245
- 247: 48(fvec4) Load 229(inF1)
- Store 246(param) 247
- 249: 48(fvec4) Load 232(inF2)
- Store 248(param) 249
- 251: 50(ivec4) Load 235(inU0)
- Store 250(param) 251
- 253: 50(ivec4) Load 239(inU1)
- Store 252(param) 253
- 254: 48(fvec4) FunctionCall 58(@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;) 244(param) 246(param) 248(param) 250(param) 252(param)
- Store 243(@entryPointOutput) 254
+ 235(inF0): 49(ptr) Variable Function
+ 239(inF1): 49(ptr) Variable Function
+ 242(inF2): 49(ptr) Variable Function
+ 245(inU0): 51(ptr) Variable Function
+ 249(inU1): 51(ptr) Variable Function
+ 254(param): 49(ptr) Variable Function
+ 256(param): 49(ptr) Variable Function
+ 258(param): 49(ptr) Variable Function
+ 260(param): 51(ptr) Variable Function
+ 262(param): 51(ptr) Variable Function
+ 238: 48(fvec4) Load 237(inF0)
+ Store 235(inF0) 238
+ 241: 48(fvec4) Load 240(inF1)
+ Store 239(inF1) 241
+ 244: 48(fvec4) Load 243(inF2)
+ Store 242(inF2) 244
+ 248: 50(ivec4) Load 247(inU0)
+ Store 245(inU0) 248
+ 251: 50(ivec4) Load 250(inU1)
+ Store 249(inU1) 251
+ 255: 48(fvec4) Load 235(inF0)
+ Store 254(param) 255
+ 257: 48(fvec4) Load 239(inF1)
+ Store 256(param) 257
+ 259: 48(fvec4) Load 242(inF2)
+ Store 258(param) 259
+ 261: 50(ivec4) Load 245(inU0)
+ Store 260(param) 261
+ 263: 50(ivec4) Load 249(inU1)
+ Store 262(param) 263
+ 264: 48(fvec4) FunctionCall 58(@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;) 254(param) 256(param) 258(param) 260(param) 262(param)
+ Store 253(@entryPointOutput) 264
Return
FunctionEnd
16(ComputeShaderFunctionS(f1;f1;f1;u1;u1;): 6(float) Function None 10
@@ -885,54 +900,55 @@ local_size = (1, 1, 1)
14(inU0): 9(ptr) FunctionParameter
15(inU1): 9(ptr) FunctionParameter
17: Label
- 70(out_u1): 9(ptr) Variable Function
+ 72(out_u1): 9(ptr) Variable Function
60: 6(float) Load 11(inF0)
- 62: 61(bool) All 60
- 66: 8(int) Load 65(gs_ub)
- 69: 2 AtomicIAdd 64(gs_ua) 67 68 66
- 71: 8(int) Load 65(gs_ub)
- 72: 8(int) AtomicIAdd 64(gs_ua) 67 68 71
- Store 70(out_u1) 72
- 73: 8(int) Load 65(gs_ub)
- 74: 2 AtomicAnd 64(gs_ua) 67 68 73
- 75: 8(int) Load 65(gs_ub)
- 76: 8(int) AtomicAnd 64(gs_ua) 67 68 75
- Store 70(out_u1) 76
- 77: 8(int) Load 65(gs_ub)
- 79: 8(int) Load 78(gs_uc)
- 80: 8(int) AtomicCompareExchange 64(gs_ua) 67 68 68 79 77
- Store 70(out_u1) 80
- 81: 8(int) Load 65(gs_ub)
- 82: 8(int) AtomicExchange 64(gs_ua) 67 68 81
- Store 70(out_u1) 82
- 83: 8(int) Load 65(gs_ub)
- 84: 2 AtomicSMax 64(gs_ua) 67 68 83
- 85: 8(int) Load 65(gs_ub)
- 86: 8(int) AtomicUMax 64(gs_ua) 67 68 85
- Store 70(out_u1) 86
- 87: 8(int) Load 65(gs_ub)
- 88: 2 AtomicSMin 64(gs_ua) 67 68 87
- 89: 8(int) Load 65(gs_ub)
- 90: 8(int) AtomicUMin 64(gs_ua) 67 68 89
- Store 70(out_u1) 90
- 91: 8(int) Load 65(gs_ub)
- 92: 2 AtomicOr 64(gs_ua) 67 68 91
- 93: 8(int) Load 65(gs_ub)
- 94: 8(int) AtomicOr 64(gs_ua) 67 68 93
- Store 70(out_u1) 94
- 95: 8(int) Load 65(gs_ub)
- 96: 2 AtomicXor 64(gs_ua) 67 68 95
- 97: 8(int) Load 65(gs_ub)
- 98: 8(int) AtomicXor 64(gs_ua) 67 68 97
- Store 70(out_u1) 98
- ReturnValue 99
+ 63: 61(bool) FOrdNotEqual 60 62
+ 64: 61(bool) All 63
+ 68: 8(int) Load 67(gs_ub)
+ 71: 2 AtomicIAdd 66(gs_ua) 69 70 68
+ 73: 8(int) Load 67(gs_ub)
+ 74: 8(int) AtomicIAdd 66(gs_ua) 69 70 73
+ Store 72(out_u1) 74
+ 75: 8(int) Load 67(gs_ub)
+ 76: 2 AtomicAnd 66(gs_ua) 69 70 75
+ 77: 8(int) Load 67(gs_ub)
+ 78: 8(int) AtomicAnd 66(gs_ua) 69 70 77
+ Store 72(out_u1) 78
+ 79: 8(int) Load 67(gs_ub)
+ 81: 8(int) Load 80(gs_uc)
+ 82: 8(int) AtomicCompareExchange 66(gs_ua) 69 70 70 81 79
+ Store 72(out_u1) 82
+ 83: 8(int) Load 67(gs_ub)
+ 84: 8(int) AtomicExchange 66(gs_ua) 69 70 83
+ Store 72(out_u1) 84
+ 85: 8(int) Load 67(gs_ub)
+ 86: 2 AtomicSMax 66(gs_ua) 69 70 85
+ 87: 8(int) Load 67(gs_ub)
+ 88: 8(int) AtomicUMax 66(gs_ua) 69 70 87
+ Store 72(out_u1) 88
+ 89: 8(int) Load 67(gs_ub)
+ 90: 2 AtomicSMin 66(gs_ua) 69 70 89
+ 91: 8(int) Load 67(gs_ub)
+ 92: 8(int) AtomicUMin 66(gs_ua) 69 70 91
+ Store 72(out_u1) 92
+ 93: 8(int) Load 67(gs_ub)
+ 94: 2 AtomicOr 66(gs_ua) 69 70 93
+ 95: 8(int) Load 67(gs_ub)
+ 96: 8(int) AtomicOr 66(gs_ua) 69 70 95
+ Store 72(out_u1) 96
+ 97: 8(int) Load 67(gs_ub)
+ 98: 2 AtomicXor 66(gs_ua) 69 70 97
+ 99: 8(int) Load 67(gs_ub)
+ 100: 8(int) AtomicXor 66(gs_ua) 69 70 99
+ Store 72(out_u1) 100
+ ReturnValue 62
FunctionEnd
22(ComputeShaderFunction1(vf1;vf1;vf1;): 6(float) Function None 18
19(inF0): 7(ptr) FunctionParameter
20(inF1): 7(ptr) FunctionParameter
21(inF2): 7(ptr) FunctionParameter
23: Label
- ReturnValue 99
+ ReturnValue 62
FunctionEnd
34(ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2;): 24(fvec2) Function None 28
29(inF0): 25(ptr) FunctionParameter
@@ -941,47 +957,48 @@ local_size = (1, 1, 1)
32(inU0): 27(ptr) FunctionParameter
33(inU1): 27(ptr) FunctionParameter
35: Label
- 111(out_u2): 27(ptr) Variable Function
- 104: 24(fvec2) Load 29(inF0)
- 105: 61(bool) All 104
- 109: 26(ivec2) Load 108(gs_ub2)
- 110: 2 AtomicIAdd 107(gs_ua2) 67 68 109
- 112: 26(ivec2) Load 108(gs_ub2)
- 113: 26(ivec2) AtomicIAdd 107(gs_ua2) 67 68 112
- Store 111(out_u2) 113
- 114: 26(ivec2) Load 108(gs_ub2)
- 115: 2 AtomicAnd 107(gs_ua2) 67 68 114
- 116: 26(ivec2) Load 108(gs_ub2)
- 117: 26(ivec2) AtomicAnd 107(gs_ua2) 67 68 116
- Store 111(out_u2) 117
- 118: 26(ivec2) Load 108(gs_ub2)
- 120: 26(ivec2) Load 119(gs_uc2)
- 121: 26(ivec2) AtomicCompareExchange 107(gs_ua2) 67 68 68 120 118
- Store 111(out_u2) 121
- 122: 26(ivec2) Load 108(gs_ub2)
- 123: 26(ivec2) AtomicExchange 107(gs_ua2) 67 68 122
- Store 111(out_u2) 123
- 124: 26(ivec2) Load 108(gs_ub2)
- 125: 2 AtomicSMax 107(gs_ua2) 67 68 124
- 126: 26(ivec2) Load 108(gs_ub2)
- 127: 26(ivec2) AtomicUMax 107(gs_ua2) 67 68 126
- Store 111(out_u2) 127
- 128: 26(ivec2) Load 108(gs_ub2)
- 129: 2 AtomicSMin 107(gs_ua2) 67 68 128
- 130: 26(ivec2) Load 108(gs_ub2)
- 131: 26(ivec2) AtomicUMin 107(gs_ua2) 67 68 130
- Store 111(out_u2) 131
- 132: 26(ivec2) Load 108(gs_ub2)
- 133: 2 AtomicOr 107(gs_ua2) 67 68 132
- 134: 26(ivec2) Load 108(gs_ub2)
- 135: 26(ivec2) AtomicOr 107(gs_ua2) 67 68 134
- Store 111(out_u2) 135
- 136: 26(ivec2) Load 108(gs_ub2)
- 137: 2 AtomicXor 107(gs_ua2) 67 68 136
- 138: 26(ivec2) Load 108(gs_ub2)
- 139: 26(ivec2) AtomicXor 107(gs_ua2) 67 68 138
- Store 111(out_u2) 139
- ReturnValue 142
+ 115(out_u2): 27(ptr) Variable Function
+ 105: 24(fvec2) Load 29(inF0)
+ 108: 106(bvec2) FOrdNotEqual 105 107
+ 109: 61(bool) All 108
+ 113: 26(ivec2) Load 112(gs_ub2)
+ 114: 2 AtomicIAdd 111(gs_ua2) 69 70 113
+ 116: 26(ivec2) Load 112(gs_ub2)
+ 117: 26(ivec2) AtomicIAdd 111(gs_ua2) 69 70 116
+ Store 115(out_u2) 117
+ 118: 26(ivec2) Load 112(gs_ub2)
+ 119: 2 AtomicAnd 111(gs_ua2) 69 70 118
+ 120: 26(ivec2) Load 112(gs_ub2)
+ 121: 26(ivec2) AtomicAnd 111(gs_ua2) 69 70 120
+ Store 115(out_u2) 121
+ 122: 26(ivec2) Load 112(gs_ub2)
+ 124: 26(ivec2) Load 123(gs_uc2)
+ 125: 26(ivec2) AtomicCompareExchange 111(gs_ua2) 69 70 70 124 122
+ Store 115(out_u2) 125
+ 126: 26(ivec2) Load 112(gs_ub2)
+ 127: 26(ivec2) AtomicExchange 111(gs_ua2) 69 70 126
+ Store 115(out_u2) 127
+ 128: 26(ivec2) Load 112(gs_ub2)
+ 129: 2 AtomicSMax 111(gs_ua2) 69 70 128
+ 130: 26(ivec2) Load 112(gs_ub2)
+ 131: 26(ivec2) AtomicUMax 111(gs_ua2) 69 70 130
+ Store 115(out_u2) 131
+ 132: 26(ivec2) Load 112(gs_ub2)
+ 133: 2 AtomicSMin 111(gs_ua2) 69 70 132
+ 134: 26(ivec2) Load 112(gs_ub2)
+ 135: 26(ivec2) AtomicUMin 111(gs_ua2) 69 70 134
+ Store 115(out_u2) 135
+ 136: 26(ivec2) Load 112(gs_ub2)
+ 137: 2 AtomicOr 111(gs_ua2) 69 70 136
+ 138: 26(ivec2) Load 112(gs_ub2)
+ 139: 26(ivec2) AtomicOr 111(gs_ua2) 69 70 138
+ Store 115(out_u2) 139
+ 140: 26(ivec2) Load 112(gs_ub2)
+ 141: 2 AtomicXor 111(gs_ua2) 69 70 140
+ 142: 26(ivec2) Load 112(gs_ub2)
+ 143: 26(ivec2) AtomicXor 111(gs_ua2) 69 70 142
+ Store 115(out_u2) 143
+ ReturnValue 146
FunctionEnd
46(ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 36(fvec3) Function None 40
41(inF0): 37(ptr) FunctionParameter
@@ -990,47 +1007,48 @@ local_size = (1, 1, 1)
44(inU0): 39(ptr) FunctionParameter
45(inU1): 39(ptr) FunctionParameter
47: Label
- 152(out_u3): 39(ptr) Variable Function
- 145: 36(fvec3) Load 41(inF0)
- 146: 61(bool) All 145
- 150: 38(ivec3) Load 149(gs_ub3)
- 151: 2 AtomicIAdd 148(gs_ua3) 67 68 150
- 153: 38(ivec3) Load 149(gs_ub3)
- 154: 38(ivec3) AtomicIAdd 148(gs_ua3) 67 68 153
- Store 152(out_u3) 154
- 155: 38(ivec3) Load 149(gs_ub3)
- 156: 2 AtomicAnd 148(gs_ua3) 67 68 155
- 157: 38(ivec3) Load 149(gs_ub3)
- 158: 38(ivec3) AtomicAnd 148(gs_ua3) 67 68 157
- Store 152(out_u3) 158
- 159: 38(ivec3) Load 149(gs_ub3)
- 161: 38(ivec3) Load 160(gs_uc3)
- 162: 38(ivec3) AtomicCompareExchange 148(gs_ua3) 67 68 68 161 159
- Store 152(out_u3) 162
- 163: 38(ivec3) Load 149(gs_ub3)
- 164: 38(ivec3) AtomicExchange 148(gs_ua3) 67 68 163
- Store 152(out_u3) 164
- 165: 38(ivec3) Load 149(gs_ub3)
- 166: 2 AtomicSMax 148(gs_ua3) 67 68 165
- 167: 38(ivec3) Load 149(gs_ub3)
- 168: 38(ivec3) AtomicUMax 148(gs_ua3) 67 68 167
- Store 152(out_u3) 168
- 169: 38(ivec3) Load 149(gs_ub3)
- 170: 2 AtomicSMin 148(gs_ua3) 67 68 169
- 171: 38(ivec3) Load 149(gs_ub3)
- 172: 38(ivec3) AtomicUMin 148(gs_ua3) 67 68 171
- Store 152(out_u3) 172
- 173: 38(ivec3) Load 149(gs_ub3)
- 174: 2 AtomicOr 148(gs_ua3) 67 68 173
- 175: 38(ivec3) Load 149(gs_ub3)
- 176: 38(ivec3) AtomicOr 148(gs_ua3) 67 68 175
- Store 152(out_u3) 176
- 177: 38(ivec3) Load 149(gs_ub3)
- 178: 2 AtomicXor 148(gs_ua3) 67 68 177
- 179: 38(ivec3) Load 149(gs_ub3)
- 180: 38(ivec3) AtomicXor 148(gs_ua3) 67 68 179
- Store 152(out_u3) 180
- ReturnValue 182
+ 159(out_u3): 39(ptr) Variable Function
+ 149: 36(fvec3) Load 41(inF0)
+ 152: 150(bvec3) FOrdNotEqual 149 151
+ 153: 61(bool) All 152
+ 157: 38(ivec3) Load 156(gs_ub3)
+ 158: 2 AtomicIAdd 155(gs_ua3) 69 70 157
+ 160: 38(ivec3) Load 156(gs_ub3)
+ 161: 38(ivec3) AtomicIAdd 155(gs_ua3) 69 70 160
+ Store 159(out_u3) 161
+ 162: 38(ivec3) Load 156(gs_ub3)
+ 163: 2 AtomicAnd 155(gs_ua3) 69 70 162
+ 164: 38(ivec3) Load 156(gs_ub3)
+ 165: 38(ivec3) AtomicAnd 155(gs_ua3) 69 70 164
+ Store 159(out_u3) 165
+ 166: 38(ivec3) Load 156(gs_ub3)
+ 168: 38(ivec3) Load 167(gs_uc3)
+ 169: 38(ivec3) AtomicCompareExchange 155(gs_ua3) 69 70 70 168 166
+ Store 159(out_u3) 169
+ 170: 38(ivec3) Load 156(gs_ub3)
+ 171: 38(ivec3) AtomicExchange 155(gs_ua3) 69 70 170
+ Store 159(out_u3) 171
+ 172: 38(ivec3) Load 156(gs_ub3)
+ 173: 2 AtomicSMax 155(gs_ua3) 69 70 172
+ 174: 38(ivec3) Load 156(gs_ub3)
+ 175: 38(ivec3) AtomicUMax 155(gs_ua3) 69 70 174
+ Store 159(out_u3) 175
+ 176: 38(ivec3) Load 156(gs_ub3)
+ 177: 2 AtomicSMin 155(gs_ua3) 69 70 176
+ 178: 38(ivec3) Load 156(gs_ub3)
+ 179: 38(ivec3) AtomicUMin 155(gs_ua3) 69 70 178
+ Store 159(out_u3) 179
+ 180: 38(ivec3) Load 156(gs_ub3)
+ 181: 2 AtomicOr 155(gs_ua3) 69 70 180
+ 182: 38(ivec3) Load 156(gs_ub3)
+ 183: 38(ivec3) AtomicOr 155(gs_ua3) 69 70 182
+ Store 159(out_u3) 183
+ 184: 38(ivec3) Load 156(gs_ub3)
+ 185: 2 AtomicXor 155(gs_ua3) 69 70 184
+ 186: 38(ivec3) Load 156(gs_ub3)
+ 187: 38(ivec3) AtomicXor 155(gs_ua3) 69 70 186
+ Store 159(out_u3) 187
+ ReturnValue 189
FunctionEnd
58(@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;): 48(fvec4) Function None 52
53(inF0): 49(ptr) FunctionParameter
@@ -1039,45 +1057,46 @@ local_size = (1, 1, 1)
56(inU0): 51(ptr) FunctionParameter
57(inU1): 51(ptr) FunctionParameter
59: Label
- 192(out_u4): 51(ptr) Variable Function
- 185: 48(fvec4) Load 53(inF0)
- 186: 61(bool) All 185
- 190: 50(ivec4) Load 189(gs_ub4)
- 191: 2 AtomicIAdd 188(gs_ua4) 67 68 190
- 193: 50(ivec4) Load 189(gs_ub4)
- 194: 50(ivec4) AtomicIAdd 188(gs_ua4) 67 68 193
- Store 192(out_u4) 194
- 195: 50(ivec4) Load 189(gs_ub4)
- 196: 2 AtomicAnd 188(gs_ua4) 67 68 195
- 197: 50(ivec4) Load 189(gs_ub4)
- 198: 50(ivec4) AtomicAnd 188(gs_ua4) 67 68 197
- Store 192(out_u4) 198
- 199: 50(ivec4) Load 189(gs_ub4)
- 201: 50(ivec4) Load 200(gs_uc4)
- 202: 50(ivec4) AtomicCompareExchange 188(gs_ua4) 67 68 68 201 199
- Store 192(out_u4) 202
- 203: 50(ivec4) Load 189(gs_ub4)
- 204: 50(ivec4) AtomicExchange 188(gs_ua4) 67 68 203
- Store 192(out_u4) 204
- 205: 50(ivec4) Load 189(gs_ub4)
- 206: 2 AtomicSMax 188(gs_ua4) 67 68 205
- 207: 50(ivec4) Load 189(gs_ub4)
- 208: 50(ivec4) AtomicUMax 188(gs_ua4) 67 68 207
- Store 192(out_u4) 208
- 209: 50(ivec4) Load 189(gs_ub4)
- 210: 2 AtomicSMin 188(gs_ua4) 67 68 209
- 211: 50(ivec4) Load 189(gs_ub4)
- 212: 50(ivec4) AtomicUMin 188(gs_ua4) 67 68 211
- Store 192(out_u4) 212
- 213: 50(ivec4) Load 189(gs_ub4)
- 214: 2 AtomicOr 188(gs_ua4) 67 68 213
- 215: 50(ivec4) Load 189(gs_ub4)
- 216: 50(ivec4) AtomicOr 188(gs_ua4) 67 68 215
- Store 192(out_u4) 216
- 217: 50(ivec4) Load 189(gs_ub4)
- 218: 2 AtomicXor 188(gs_ua4) 67 68 217
- 219: 50(ivec4) Load 189(gs_ub4)
- 220: 50(ivec4) AtomicXor 188(gs_ua4) 67 68 219
- Store 192(out_u4) 220
- ReturnValue 222
+ 202(out_u4): 51(ptr) Variable Function
+ 192: 48(fvec4) Load 53(inF0)
+ 195: 193(bvec4) FOrdNotEqual 192 194
+ 196: 61(bool) All 195
+ 200: 50(ivec4) Load 199(gs_ub4)
+ 201: 2 AtomicIAdd 198(gs_ua4) 69 70 200
+ 203: 50(ivec4) Load 199(gs_ub4)
+ 204: 50(ivec4) AtomicIAdd 198(gs_ua4) 69 70 203
+ Store 202(out_u4) 204
+ 205: 50(ivec4) Load 199(gs_ub4)
+ 206: 2 AtomicAnd 198(gs_ua4) 69 70 205
+ 207: 50(ivec4) Load 199(gs_ub4)
+ 208: 50(ivec4) AtomicAnd 198(gs_ua4) 69 70 207
+ Store 202(out_u4) 208
+ 209: 50(ivec4) Load 199(gs_ub4)
+ 211: 50(ivec4) Load 210(gs_uc4)
+ 212: 50(ivec4) AtomicCompareExchange 198(gs_ua4) 69 70 70 211 209
+ Store 202(out_u4) 212
+ 213: 50(ivec4) Load 199(gs_ub4)
+ 214: 50(ivec4) AtomicExchange 198(gs_ua4) 69 70 213
+ Store 202(out_u4) 214
+ 215: 50(ivec4) Load 199(gs_ub4)
+ 216: 2 AtomicSMax 198(gs_ua4) 69 70 215
+ 217: 50(ivec4) Load 199(gs_ub4)
+ 218: 50(ivec4) AtomicUMax 198(gs_ua4) 69 70 217
+ Store 202(out_u4) 218
+ 219: 50(ivec4) Load 199(gs_ub4)
+ 220: 2 AtomicSMin 198(gs_ua4) 69 70 219
+ 221: 50(ivec4) Load 199(gs_ub4)
+ 222: 50(ivec4) AtomicUMin 198(gs_ua4) 69 70 221
+ Store 202(out_u4) 222
+ 223: 50(ivec4) Load 199(gs_ub4)
+ 224: 2 AtomicOr 198(gs_ua4) 69 70 223
+ 225: 50(ivec4) Load 199(gs_ub4)
+ 226: 50(ivec4) AtomicOr 198(gs_ua4) 69 70 225
+ Store 202(out_u4) 226
+ 227: 50(ivec4) Load 199(gs_ub4)
+ 228: 2 AtomicXor 198(gs_ua4) 69 70 227
+ 229: 50(ivec4) Load 199(gs_ub4)
+ 230: 50(ivec4) AtomicXor 198(gs_ua4) 69 70 229
+ Store 202(out_u4) 230
+ ReturnValue 232
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out
index e38e621b8f1..e365b981dfe 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.d3dcolortoubyte4.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main( ( temp 4-component vector of int)
@@ -38,7 +38,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main( ( temp 4-component vector of int)
@@ -74,7 +74,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 29
Capability Shader
@@ -82,6 +82,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 27
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 "@main("
Name 14 "$Global"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.double.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.double.frag.out
index 1a6524f788c..a2e7c5f2fe3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.double.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.double.frag.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.double.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float)
@@ -35,28 +35,28 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp double)
0:? 'inDV1a' ( temp double)
-0:? 'inDV1a' (layout( location=0) in double)
+0:? 'inDV1a' (layout( location=0) flat in double)
0:5 move second child to first child ( temp double)
0:? 'inDV1b' ( temp double)
-0:? 'inDV1b' (layout( location=1) in double)
+0:? 'inDV1b' (layout( location=1) flat in double)
0:5 move second child to first child ( temp double)
0:? 'inDV1c' ( temp double)
-0:? 'inDV1c' (layout( location=2) in double)
+0:? 'inDV1c' (layout( location=2) flat in double)
0:5 move second child to first child ( temp 2-component vector of double)
0:? 'inDV2' ( temp 2-component vector of double)
-0:? 'inDV2' (layout( location=3) in 2-component vector of double)
+0:? 'inDV2' (layout( location=3) flat in 2-component vector of double)
0:5 move second child to first child ( temp 3-component vector of double)
0:? 'inDV3' ( temp 3-component vector of double)
-0:? 'inDV3' (layout( location=4) in 3-component vector of double)
+0:? 'inDV3' (layout( location=4) flat in 3-component vector of double)
0:5 move second child to first child ( temp 4-component vector of double)
0:? 'inDV4' ( temp 4-component vector of double)
-0:? 'inDV4' (layout( location=6) in 4-component vector of double)
+0:? 'inDV4' (layout( location=6) flat in 4-component vector of double)
0:5 move second child to first child ( temp uint)
0:? 'inU1a' ( temp uint)
-0:? 'inU1a' (layout( location=8) in uint)
+0:? 'inU1a' (layout( location=8) flat in uint)
0:5 move second child to first child ( temp uint)
0:? 'inU1b' ( temp uint)
-0:? 'inU1b' (layout( location=9) in uint)
+0:? 'inU1b' (layout( location=9) flat in uint)
0:5 move second child to first child ( temp float)
0:? '@entryPointOutput' (layout( location=0) out float)
0:5 Function Call: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float)
@@ -70,20 +70,20 @@ gl_FragCoord origin is upper left
0:? 'inU1b' ( temp uint)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out float)
-0:? 'inDV1a' (layout( location=0) in double)
-0:? 'inDV1b' (layout( location=1) in double)
-0:? 'inDV1c' (layout( location=2) in double)
-0:? 'inDV2' (layout( location=3) in 2-component vector of double)
-0:? 'inDV3' (layout( location=4) in 3-component vector of double)
-0:? 'inDV4' (layout( location=6) in 4-component vector of double)
-0:? 'inU1a' (layout( location=8) in uint)
-0:? 'inU1b' (layout( location=9) in uint)
+0:? 'inDV1a' (layout( location=0) flat in double)
+0:? 'inDV1b' (layout( location=1) flat in double)
+0:? 'inDV1c' (layout( location=2) flat in double)
+0:? 'inDV2' (layout( location=3) flat in 2-component vector of double)
+0:? 'inDV3' (layout( location=4) flat in 3-component vector of double)
+0:? 'inDV4' (layout( location=6) flat in 4-component vector of double)
+0:? 'inU1a' (layout( location=8) flat in uint)
+0:? 'inU1b' (layout( location=9) flat in uint)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float)
@@ -119,28 +119,28 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp double)
0:? 'inDV1a' ( temp double)
-0:? 'inDV1a' (layout( location=0) in double)
+0:? 'inDV1a' (layout( location=0) flat in double)
0:5 move second child to first child ( temp double)
0:? 'inDV1b' ( temp double)
-0:? 'inDV1b' (layout( location=1) in double)
+0:? 'inDV1b' (layout( location=1) flat in double)
0:5 move second child to first child ( temp double)
0:? 'inDV1c' ( temp double)
-0:? 'inDV1c' (layout( location=2) in double)
+0:? 'inDV1c' (layout( location=2) flat in double)
0:5 move second child to first child ( temp 2-component vector of double)
0:? 'inDV2' ( temp 2-component vector of double)
-0:? 'inDV2' (layout( location=3) in 2-component vector of double)
+0:? 'inDV2' (layout( location=3) flat in 2-component vector of double)
0:5 move second child to first child ( temp 3-component vector of double)
0:? 'inDV3' ( temp 3-component vector of double)
-0:? 'inDV3' (layout( location=4) in 3-component vector of double)
+0:? 'inDV3' (layout( location=4) flat in 3-component vector of double)
0:5 move second child to first child ( temp 4-component vector of double)
0:? 'inDV4' ( temp 4-component vector of double)
-0:? 'inDV4' (layout( location=6) in 4-component vector of double)
+0:? 'inDV4' (layout( location=6) flat in 4-component vector of double)
0:5 move second child to first child ( temp uint)
0:? 'inU1a' ( temp uint)
-0:? 'inU1a' (layout( location=8) in uint)
+0:? 'inU1a' (layout( location=8) flat in uint)
0:5 move second child to first child ( temp uint)
0:? 'inU1b' ( temp uint)
-0:? 'inU1b' (layout( location=9) in uint)
+0:? 'inU1b' (layout( location=9) flat in uint)
0:5 move second child to first child ( temp float)
0:? '@entryPointOutput' (layout( location=0) out float)
0:5 Function Call: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float)
@@ -154,17 +154,17 @@ gl_FragCoord origin is upper left
0:? 'inU1b' ( temp uint)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out float)
-0:? 'inDV1a' (layout( location=0) in double)
-0:? 'inDV1b' (layout( location=1) in double)
-0:? 'inDV1c' (layout( location=2) in double)
-0:? 'inDV2' (layout( location=3) in 2-component vector of double)
-0:? 'inDV3' (layout( location=4) in 3-component vector of double)
-0:? 'inDV4' (layout( location=6) in 4-component vector of double)
-0:? 'inU1a' (layout( location=8) in uint)
-0:? 'inU1b' (layout( location=9) in uint)
+0:? 'inDV1a' (layout( location=0) flat in double)
+0:? 'inDV1b' (layout( location=1) flat in double)
+0:? 'inDV1c' (layout( location=2) flat in double)
+0:? 'inDV2' (layout( location=3) flat in 2-component vector of double)
+0:? 'inDV3' (layout( location=4) flat in 3-component vector of double)
+0:? 'inDV4' (layout( location=6) flat in 4-component vector of double)
+0:? 'inU1a' (layout( location=8) flat in uint)
+0:? 'inU1b' (layout( location=9) flat in uint)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 90
Capability Shader
@@ -173,6 +173,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 44 47 50 54 58 62 66 69 72
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 26 "@PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1;"
Name 18 "inDV1a"
@@ -210,13 +211,21 @@ gl_FragCoord origin is upper left
Name 83 "param"
Name 85 "param"
Name 87 "param"
+ Decorate 44(inDV1a) Flat
Decorate 44(inDV1a) Location 0
+ Decorate 47(inDV1b) Flat
Decorate 47(inDV1b) Location 1
+ Decorate 50(inDV1c) Flat
Decorate 50(inDV1c) Location 2
+ Decorate 54(inDV2) Flat
Decorate 54(inDV2) Location 3
+ Decorate 58(inDV3) Flat
Decorate 58(inDV3) Location 4
+ Decorate 62(inDV4) Flat
Decorate 62(inDV4) Location 6
+ Decorate 66(inU1a) Flat
Decorate 66(inU1a) Location 8
+ Decorate 69(inU1b) Flat
Decorate 69(inU1b) Location 9
Decorate 72(@entryPointOutput) Location 0
2: TypeVoid
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.evalfns.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
index 6d96f161998..6612451cd5e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.evalfns.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
@@ -60,7 +60,7 @@ gl_FragCoord origin is upper left
0:? 'inF4' (layout( location=3) in 4-component vector of float)
0:3 move second child to first child ( temp 2-component vector of int)
0:? 'inI2' ( temp 2-component vector of int)
-0:? 'inI2' (layout( location=4) in 2-component vector of int)
+0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
0:3 Function Call: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
0:? 'inF1' ( temp float)
0:? 'inF2' ( temp 2-component vector of float)
@@ -72,13 +72,13 @@ gl_FragCoord origin is upper left
0:? 'inF2' (layout( location=1) in 2-component vector of float)
0:? 'inF3' (layout( location=2) in 3-component vector of float)
0:? 'inF4' (layout( location=3) in 4-component vector of float)
-0:? 'inI2' (layout( location=4) in 2-component vector of int)
+0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
@@ -139,7 +139,7 @@ gl_FragCoord origin is upper left
0:? 'inF4' (layout( location=3) in 4-component vector of float)
0:3 move second child to first child ( temp 2-component vector of int)
0:? 'inI2' ( temp 2-component vector of int)
-0:? 'inI2' (layout( location=4) in 2-component vector of int)
+0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
0:3 Function Call: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
0:? 'inF1' ( temp float)
0:? 'inF2' ( temp 2-component vector of float)
@@ -151,10 +151,10 @@ gl_FragCoord origin is upper left
0:? 'inF2' (layout( location=1) in 2-component vector of float)
0:? 'inF3' (layout( location=2) in 3-component vector of float)
0:? 'inF4' (layout( location=3) in 4-component vector of float)
-0:? 'inI2' (layout( location=4) in 2-component vector of int)
+0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 80
Capability Shader
@@ -163,6 +163,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 51 55 59 63 67
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 23 "@main(f1;vf2;vf3;vf4;vi2;"
Name 18 "inF1"
@@ -189,6 +190,7 @@ gl_FragCoord origin is upper left
Decorate 55(inF2) Location 1
Decorate 59(inF3) Location 2
Decorate 63(inF4) Location 3
+ Decorate 67(inI2) Flat
Decorate 67(inI2) Location 4
2: TypeVoid
3: TypeFunction 2
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f1632.frag.out
index 6b9a18bb497..5c6f6ba45d5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f1632.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f1632.frag.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.f1632.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: PixelShaderFunctionS(u1; ( temp float)
@@ -131,7 +131,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: PixelShaderFunctionS(u1; ( temp float)
@@ -260,7 +260,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 103
Capability Shader
@@ -268,6 +268,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 101
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "PixelShaderFunctionS(u1;"
Name 10 "inF0"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f3216.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f3216.frag.out
index 30edb0ad0c6..01c08d23bdd 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f3216.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f3216.frag.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.f3216.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: PixelShaderFunctionS(f1; ( temp uint)
@@ -136,7 +136,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: PixelShaderFunctionS(f1; ( temp uint)
@@ -270,7 +270,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 106
Capability Shader
@@ -278,6 +278,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 104
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "PixelShaderFunctionS(f1;"
Name 10 "inF0"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.frag.out
index 1dbd218783c..105800b2315 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.frag.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:17 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; ( temp float)
@@ -14,7 +14,8 @@ gl_FragCoord origin is upper left
0:20 move second child to first child ( temp bool)
0:20 'r000' ( temp bool)
0:20 all ( temp bool)
-0:20 'inF0' ( in float)
+0:20 Convert float to bool ( temp bool)
+0:20 'inF0' ( in float)
0:21 Sequence
0:21 move second child to first child ( temp float)
0:21 'r001' ( temp float)
@@ -29,7 +30,8 @@ gl_FragCoord origin is upper left
0:23 move second child to first child ( temp bool)
0:23 'r003' ( temp bool)
0:23 any ( temp bool)
-0:23 'inF0' ( in float)
+0:23 Convert float to bool ( temp bool)
+0:23 'inF0' ( in float)
0:24 Sequence
0:24 move second child to first child ( temp float)
0:24 'r004' ( temp float)
@@ -81,103 +83,105 @@ gl_FragCoord origin is upper left
0:33 0.000000
0:33 true case
0:33 Branch: Kill
-0:34 Sequence
-0:34 move second child to first child ( temp float)
-0:34 'r014' ( temp float)
-0:34 cosine ( temp float)
-0:34 'inF0' ( in float)
+0:34 Test condition and select ( temp void)
+0:34 Condition
+0:34 Compare Less Than ( temp bool)
+0:34 'r005' ( temp int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 true case
+0:34 Branch: Kill
0:35 Sequence
0:35 move second child to first child ( temp float)
-0:35 'r015' ( temp float)
-0:35 hyp. cosine ( temp float)
+0:35 'r014' ( temp float)
+0:35 cosine ( temp float)
0:35 'inF0' ( in float)
0:36 Sequence
-0:36 move second child to first child ( temp int)
-0:36 'r016' ( temp int)
-0:36 bitCount ( temp int)
-0:36 Constant:
-0:36 7 (const int)
+0:36 move second child to first child ( temp float)
+0:36 'r015' ( temp float)
+0:36 hyp. cosine ( temp float)
+0:36 'inF0' ( in float)
0:37 Sequence
-0:37 move second child to first child ( temp float)
-0:37 'r017' ( temp float)
-0:37 dPdx ( temp float)
-0:37 'inF0' ( in float)
+0:37 move second child to first child ( temp int)
+0:37 'r016' ( temp int)
+0:37 bitCount ( temp int)
+0:37 Constant:
+0:37 7 (const int)
0:38 Sequence
0:38 move second child to first child ( temp float)
-0:38 'r018' ( temp float)
-0:38 dPdxCoarse ( temp float)
+0:38 'r017' ( temp float)
+0:38 dPdx ( temp float)
0:38 'inF0' ( in float)
0:39 Sequence
0:39 move second child to first child ( temp float)
-0:39 'r019' ( temp float)
-0:39 dPdxFine ( temp float)
+0:39 'r018' ( temp float)
+0:39 dPdxCoarse ( temp float)
0:39 'inF0' ( in float)
0:40 Sequence
0:40 move second child to first child ( temp float)
-0:40 'r020' ( temp float)
-0:40 dPdy ( temp float)
+0:40 'r019' ( temp float)
+0:40 dPdxFine ( temp float)
0:40 'inF0' ( in float)
0:41 Sequence
0:41 move second child to first child ( temp float)
-0:41 'r021' ( temp float)
-0:41 dPdyCoarse ( temp float)
+0:41 'r020' ( temp float)
+0:41 dPdy ( temp float)
0:41 'inF0' ( in float)
0:42 Sequence
0:42 move second child to first child ( temp float)
-0:42 'r022' ( temp float)
-0:42 dPdyFine ( temp float)
+0:42 'r021' ( temp float)
+0:42 dPdyCoarse ( temp float)
0:42 'inF0' ( in float)
0:43 Sequence
0:43 move second child to first child ( temp float)
-0:43 'r023' ( temp float)
-0:43 degrees ( temp float)
+0:43 'r022' ( temp float)
+0:43 dPdyFine ( temp float)
0:43 'inF0' ( in float)
-0:47 Sequence
-0:47 move second child to first child ( temp float)
-0:47 'r027' ( temp float)
-0:47 exp ( temp float)
-0:47 'inF0' ( in float)
+0:44 Sequence
+0:44 move second child to first child ( temp float)
+0:44 'r023' ( temp float)
+0:44 degrees ( temp float)
+0:44 'inF0' ( in float)
0:48 Sequence
0:48 move second child to first child ( temp float)
-0:48 'r028' ( temp float)
-0:48 exp2 ( temp float)
+0:48 'r027' ( temp float)
+0:48 exp ( temp float)
0:48 'inF0' ( in float)
0:49 Sequence
-0:49 move second child to first child ( temp uint)
-0:49 'r029' ( temp uint)
-0:49 Convert int to uint ( temp uint)
-0:49 findMSB ( temp int)
-0:49 Constant:
-0:49 7 (const int)
+0:49 move second child to first child ( temp float)
+0:49 'r028' ( temp float)
+0:49 exp2 ( temp float)
+0:49 'inF0' ( in float)
0:50 Sequence
0:50 move second child to first child ( temp uint)
-0:50 'r030' ( temp uint)
+0:50 'r029' ( temp uint)
0:50 Convert int to uint ( temp uint)
-0:50 findLSB ( temp int)
+0:50 findMSB ( temp int)
0:50 Constant:
0:50 7 (const int)
0:51 Sequence
-0:51 move second child to first child ( temp float)
-0:51 'r031' ( temp float)
-0:51 Floor ( temp float)
-0:51 'inF0' ( in float)
-0:53 Sequence
-0:53 move second child to first child ( temp float)
-0:53 'r033' ( temp float)
-0:53 mod ( temp float)
-0:53 'inF0' ( in float)
-0:53 'inF1' ( in float)
+0:51 move second child to first child ( temp uint)
+0:51 'r030' ( temp uint)
+0:51 Convert int to uint ( temp uint)
+0:51 findLSB ( temp int)
+0:51 Constant:
+0:51 7 (const int)
+0:52 Sequence
+0:52 move second child to first child ( temp float)
+0:52 'r031' ( temp float)
+0:52 Floor ( temp float)
+0:52 'inF0' ( in float)
0:54 Sequence
0:54 move second child to first child ( temp float)
-0:54 'r034' ( temp float)
-0:54 Fraction ( temp float)
+0:54 'r033' ( temp float)
+0:54 mod ( temp float)
0:54 'inF0' ( in float)
+0:54 'inF1' ( in float)
0:55 Sequence
0:55 move second child to first child ( temp float)
-0:55 'r035' ( temp float)
-0:55 frexp ( temp float)
+0:55 'r034' ( temp float)
+0:55 Fraction ( temp float)
0:55 'inF0' ( in float)
-0:55 'inF1' ( in float)
0:56 Sequence
0:56 move second child to first child ( temp float)
0:56 'r036' ( temp float)
@@ -361,7 +365,8 @@ gl_FragCoord origin is upper left
0:98 move second child to first child ( temp bool)
0:98 'r000' ( temp bool)
0:98 all ( temp bool)
-0:98 'inF0' ( in 2-component vector of float)
+0:98 Convert float to bool ( temp 2-component vector of bool)
+0:98 'inF0' ( in 2-component vector of float)
0:99 Sequence
0:99 move second child to first child ( temp 2-component vector of float)
0:99 'r001' ( temp 2-component vector of float)
@@ -376,7 +381,8 @@ gl_FragCoord origin is upper left
0:101 move second child to first child ( temp bool)
0:101 'r003' ( temp bool)
0:101 any ( temp bool)
-0:101 'inF0' ( in 2-component vector of float)
+0:101 Convert float to bool ( temp 2-component vector of bool)
+0:101 'inF0' ( in 2-component vector of float)
0:102 Sequence
0:102 move second child to first child ( temp 2-component vector of float)
0:102 'r004' ( temp 2-component vector of float)
@@ -430,123 +436,127 @@ gl_FragCoord origin is upper left
0:111 0.000000
0:111 true case
0:111 Branch: Kill
-0:112 Sequence
-0:112 move second child to first child ( temp 2-component vector of float)
-0:112 'r013' ( temp 2-component vector of float)
-0:112 cosine ( temp 2-component vector of float)
-0:112 'inF0' ( in 2-component vector of float)
+0:112 Test condition and select ( temp void)
+0:112 Condition
+0:112 any ( temp bool)
+0:112 Compare Less Than ( temp 2-component vector of bool)
+0:112 'inU0' ( in 2-component vector of uint)
+0:112 Constant:
+0:112 0.000000
+0:112 0.000000
+0:112 true case
+0:112 Branch: Kill
0:113 Sequence
0:113 move second child to first child ( temp 2-component vector of float)
-0:113 'r015' ( temp 2-component vector of float)
-0:113 hyp. cosine ( temp 2-component vector of float)
+0:113 'r013' ( temp 2-component vector of float)
+0:113 cosine ( temp 2-component vector of float)
0:113 'inF0' ( in 2-component vector of float)
0:114 Sequence
-0:114 move second child to first child ( temp 2-component vector of int)
-0:114 'r016' ( temp 2-component vector of int)
+0:114 move second child to first child ( temp 2-component vector of float)
+0:114 'r015' ( temp 2-component vector of float)
+0:114 hyp. cosine ( temp 2-component vector of float)
+0:114 'inF0' ( in 2-component vector of float)
+0:115 Sequence
+0:115 move second child to first child ( temp 2-component vector of int)
+0:115 'r016' ( temp 2-component vector of int)
0:? bitCount ( temp 2-component vector of int)
0:? Constant:
0:? 7 (const int)
0:? 3 (const int)
-0:115 Sequence
-0:115 move second child to first child ( temp 2-component vector of float)
-0:115 'r017' ( temp 2-component vector of float)
-0:115 dPdx ( temp 2-component vector of float)
-0:115 'inF0' ( in 2-component vector of float)
0:116 Sequence
0:116 move second child to first child ( temp 2-component vector of float)
-0:116 'r018' ( temp 2-component vector of float)
-0:116 dPdxCoarse ( temp 2-component vector of float)
+0:116 'r017' ( temp 2-component vector of float)
+0:116 dPdx ( temp 2-component vector of float)
0:116 'inF0' ( in 2-component vector of float)
0:117 Sequence
0:117 move second child to first child ( temp 2-component vector of float)
-0:117 'r019' ( temp 2-component vector of float)
-0:117 dPdxFine ( temp 2-component vector of float)
+0:117 'r018' ( temp 2-component vector of float)
+0:117 dPdxCoarse ( temp 2-component vector of float)
0:117 'inF0' ( in 2-component vector of float)
0:118 Sequence
0:118 move second child to first child ( temp 2-component vector of float)
-0:118 'r020' ( temp 2-component vector of float)
-0:118 dPdy ( temp 2-component vector of float)
+0:118 'r019' ( temp 2-component vector of float)
+0:118 dPdxFine ( temp 2-component vector of float)
0:118 'inF0' ( in 2-component vector of float)
0:119 Sequence
0:119 move second child to first child ( temp 2-component vector of float)
-0:119 'r021' ( temp 2-component vector of float)
-0:119 dPdyCoarse ( temp 2-component vector of float)
+0:119 'r020' ( temp 2-component vector of float)
+0:119 dPdy ( temp 2-component vector of float)
0:119 'inF0' ( in 2-component vector of float)
0:120 Sequence
0:120 move second child to first child ( temp 2-component vector of float)
-0:120 'r022' ( temp 2-component vector of float)
-0:120 dPdyFine ( temp 2-component vector of float)
+0:120 'r021' ( temp 2-component vector of float)
+0:120 dPdyCoarse ( temp 2-component vector of float)
0:120 'inF0' ( in 2-component vector of float)
0:121 Sequence
0:121 move second child to first child ( temp 2-component vector of float)
-0:121 'r023' ( temp 2-component vector of float)
-0:121 degrees ( temp 2-component vector of float)
+0:121 'r022' ( temp 2-component vector of float)
+0:121 dPdyFine ( temp 2-component vector of float)
0:121 'inF0' ( in 2-component vector of float)
-0:125 Sequence
-0:125 move second child to first child ( temp float)
-0:125 'r026' ( temp float)
-0:125 distance ( temp float)
-0:125 'inF0' ( in 2-component vector of float)
-0:125 'inF1' ( in 2-component vector of float)
+0:122 Sequence
+0:122 move second child to first child ( temp 2-component vector of float)
+0:122 'r023' ( temp 2-component vector of float)
+0:122 degrees ( temp 2-component vector of float)
+0:122 'inF0' ( in 2-component vector of float)
0:126 Sequence
0:126 move second child to first child ( temp float)
-0:126 'r027' ( temp float)
-0:126 dot-product ( temp float)
+0:126 'r026' ( temp float)
+0:126 distance ( temp float)
0:126 'inF0' ( in 2-component vector of float)
0:126 'inF1' ( in 2-component vector of float)
-0:130 Sequence
-0:130 move second child to first child ( temp 2-component vector of float)
-0:130 'r028' ( temp 2-component vector of float)
-0:130 exp ( temp 2-component vector of float)
-0:130 'inF0' ( in 2-component vector of float)
+0:127 Sequence
+0:127 move second child to first child ( temp float)
+0:127 'r027' ( temp float)
+0:127 dot-product ( temp float)
+0:127 'inF0' ( in 2-component vector of float)
+0:127 'inF1' ( in 2-component vector of float)
0:131 Sequence
0:131 move second child to first child ( temp 2-component vector of float)
-0:131 'r029' ( temp 2-component vector of float)
-0:131 exp2 ( temp 2-component vector of float)
+0:131 'r028' ( temp 2-component vector of float)
+0:131 exp ( temp 2-component vector of float)
0:131 'inF0' ( in 2-component vector of float)
0:132 Sequence
0:132 move second child to first child ( temp 2-component vector of float)
-0:132 'r030' ( temp 2-component vector of float)
-0:132 face-forward ( temp 2-component vector of float)
+0:132 'r029' ( temp 2-component vector of float)
+0:132 exp2 ( temp 2-component vector of float)
0:132 'inF0' ( in 2-component vector of float)
-0:132 'inF1' ( in 2-component vector of float)
-0:132 'inF2' ( in 2-component vector of float)
0:133 Sequence
-0:133 move second child to first child ( temp 2-component vector of uint)
-0:133 'r031' ( temp 2-component vector of uint)
+0:133 move second child to first child ( temp 2-component vector of float)
+0:133 'r030' ( temp 2-component vector of float)
+0:133 face-forward ( temp 2-component vector of float)
+0:133 'inF0' ( in 2-component vector of float)
+0:133 'inF1' ( in 2-component vector of float)
+0:133 'inF2' ( in 2-component vector of float)
+0:134 Sequence
+0:134 move second child to first child ( temp 2-component vector of uint)
+0:134 'r031' ( temp 2-component vector of uint)
0:? findMSB ( temp 2-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 8 (const uint)
-0:134 Sequence
-0:134 move second child to first child ( temp 2-component vector of uint)
-0:134 'r032' ( temp 2-component vector of uint)
+0:135 Sequence
+0:135 move second child to first child ( temp 2-component vector of uint)
+0:135 'r032' ( temp 2-component vector of uint)
0:? findLSB ( temp 2-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 8 (const uint)
-0:135 Sequence
-0:135 move second child to first child ( temp 2-component vector of float)
-0:135 'r033' ( temp 2-component vector of float)
-0:135 Floor ( temp 2-component vector of float)
-0:135 'inF0' ( in 2-component vector of float)
-0:137 Sequence
-0:137 move second child to first child ( temp 2-component vector of float)
-0:137 'r035' ( temp 2-component vector of float)
-0:137 mod ( temp 2-component vector of float)
-0:137 'inF0' ( in 2-component vector of float)
-0:137 'inF1' ( in 2-component vector of float)
+0:136 Sequence
+0:136 move second child to first child ( temp 2-component vector of float)
+0:136 'r033' ( temp 2-component vector of float)
+0:136 Floor ( temp 2-component vector of float)
+0:136 'inF0' ( in 2-component vector of float)
0:138 Sequence
0:138 move second child to first child ( temp 2-component vector of float)
-0:138 'r036' ( temp 2-component vector of float)
-0:138 Fraction ( temp 2-component vector of float)
+0:138 'r035' ( temp 2-component vector of float)
+0:138 mod ( temp 2-component vector of float)
0:138 'inF0' ( in 2-component vector of float)
+0:138 'inF1' ( in 2-component vector of float)
0:139 Sequence
0:139 move second child to first child ( temp 2-component vector of float)
-0:139 'r037' ( temp 2-component vector of float)
-0:139 frexp ( temp 2-component vector of float)
+0:139 'r036' ( temp 2-component vector of float)
+0:139 Fraction ( temp 2-component vector of float)
0:139 'inF0' ( in 2-component vector of float)
-0:139 'inF1' ( in 2-component vector of float)
0:140 Sequence
0:140 move second child to first child ( temp 2-component vector of float)
0:140 'r038' ( temp 2-component vector of float)
@@ -746,7 +756,8 @@ gl_FragCoord origin is upper left
0:181 move second child to first child ( temp bool)
0:181 'r000' ( temp bool)
0:181 all ( temp bool)
-0:181 'inF0' ( in 3-component vector of float)
+0:181 Convert float to bool ( temp 3-component vector of bool)
+0:181 'inF0' ( in 3-component vector of float)
0:182 Sequence
0:182 move second child to first child ( temp 3-component vector of float)
0:182 'r001' ( temp 3-component vector of float)
@@ -761,7 +772,8 @@ gl_FragCoord origin is upper left
0:184 move second child to first child ( temp bool)
0:184 'r003' ( temp bool)
0:184 any ( temp bool)
-0:184 'inF0' ( in 3-component vector of float)
+0:184 Convert float to bool ( temp 3-component vector of bool)
+0:184 'inF0' ( in 3-component vector of float)
0:185 Sequence
0:185 move second child to first child ( temp 3-component vector of float)
0:185 'r004' ( temp 3-component vector of float)
@@ -816,132 +828,137 @@ gl_FragCoord origin is upper left
0:194 0.000000
0:194 true case
0:194 Branch: Kill
-0:195 Sequence
-0:195 move second child to first child ( temp 3-component vector of float)
-0:195 'r013' ( temp 3-component vector of float)
-0:195 cosine ( temp 3-component vector of float)
-0:195 'inF0' ( in 3-component vector of float)
+0:195 Test condition and select ( temp void)
+0:195 Condition
+0:195 any ( temp bool)
+0:195 Compare Less Than ( temp 3-component vector of bool)
+0:195 'inU0' ( in 3-component vector of uint)
+0:195 Constant:
+0:195 0.000000
+0:195 0.000000
+0:195 0.000000
+0:195 true case
+0:195 Branch: Kill
0:196 Sequence
0:196 move second child to first child ( temp 3-component vector of float)
-0:196 'r014' ( temp 3-component vector of float)
-0:196 hyp. cosine ( temp 3-component vector of float)
+0:196 'r013' ( temp 3-component vector of float)
+0:196 cosine ( temp 3-component vector of float)
0:196 'inF0' ( in 3-component vector of float)
0:197 Sequence
-0:197 move second child to first child ( temp 3-component vector of uint)
-0:197 'r015' ( temp 3-component vector of uint)
+0:197 move second child to first child ( temp 3-component vector of float)
+0:197 'r014' ( temp 3-component vector of float)
+0:197 hyp. cosine ( temp 3-component vector of float)
+0:197 'inF0' ( in 3-component vector of float)
+0:198 Sequence
+0:198 move second child to first child ( temp 3-component vector of uint)
+0:198 'r015' ( temp 3-component vector of uint)
0:? bitCount ( temp 3-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 3 (const uint)
0:? 5 (const uint)
-0:198 Sequence
-0:198 move second child to first child ( temp 3-component vector of float)
-0:198 'r016' ( temp 3-component vector of float)
-0:198 cross-product ( temp 3-component vector of float)
-0:198 'inF0' ( in 3-component vector of float)
-0:198 'inF1' ( in 3-component vector of float)
0:199 Sequence
0:199 move second child to first child ( temp 3-component vector of float)
-0:199 'r017' ( temp 3-component vector of float)
-0:199 dPdx ( temp 3-component vector of float)
+0:199 'r016' ( temp 3-component vector of float)
+0:199 cross-product ( temp 3-component vector of float)
0:199 'inF0' ( in 3-component vector of float)
+0:199 'inF1' ( in 3-component vector of float)
0:200 Sequence
0:200 move second child to first child ( temp 3-component vector of float)
-0:200 'r018' ( temp 3-component vector of float)
-0:200 dPdxCoarse ( temp 3-component vector of float)
+0:200 'r017' ( temp 3-component vector of float)
+0:200 dPdx ( temp 3-component vector of float)
0:200 'inF0' ( in 3-component vector of float)
0:201 Sequence
0:201 move second child to first child ( temp 3-component vector of float)
-0:201 'r019' ( temp 3-component vector of float)
-0:201 dPdxFine ( temp 3-component vector of float)
+0:201 'r018' ( temp 3-component vector of float)
+0:201 dPdxCoarse ( temp 3-component vector of float)
0:201 'inF0' ( in 3-component vector of float)
0:202 Sequence
0:202 move second child to first child ( temp 3-component vector of float)
-0:202 'r020' ( temp 3-component vector of float)
-0:202 dPdy ( temp 3-component vector of float)
+0:202 'r019' ( temp 3-component vector of float)
+0:202 dPdxFine ( temp 3-component vector of float)
0:202 'inF0' ( in 3-component vector of float)
0:203 Sequence
0:203 move second child to first child ( temp 3-component vector of float)
-0:203 'r021' ( temp 3-component vector of float)
-0:203 dPdyCoarse ( temp 3-component vector of float)
+0:203 'r020' ( temp 3-component vector of float)
+0:203 dPdy ( temp 3-component vector of float)
0:203 'inF0' ( in 3-component vector of float)
0:204 Sequence
0:204 move second child to first child ( temp 3-component vector of float)
-0:204 'r022' ( temp 3-component vector of float)
-0:204 dPdyFine ( temp 3-component vector of float)
+0:204 'r021' ( temp 3-component vector of float)
+0:204 dPdyCoarse ( temp 3-component vector of float)
0:204 'inF0' ( in 3-component vector of float)
0:205 Sequence
0:205 move second child to first child ( temp 3-component vector of float)
-0:205 'r023' ( temp 3-component vector of float)
-0:205 degrees ( temp 3-component vector of float)
+0:205 'r022' ( temp 3-component vector of float)
+0:205 dPdyFine ( temp 3-component vector of float)
0:205 'inF0' ( in 3-component vector of float)
0:206 Sequence
-0:206 move second child to first child ( temp float)
-0:206 'r024' ( temp float)
-0:206 distance ( temp float)
+0:206 move second child to first child ( temp 3-component vector of float)
+0:206 'r023' ( temp 3-component vector of float)
+0:206 degrees ( temp 3-component vector of float)
0:206 'inF0' ( in 3-component vector of float)
-0:206 'inF1' ( in 3-component vector of float)
0:207 Sequence
0:207 move second child to first child ( temp float)
-0:207 'r025' ( temp float)
-0:207 dot-product ( temp float)
+0:207 'r024' ( temp float)
+0:207 distance ( temp float)
0:207 'inF0' ( in 3-component vector of float)
0:207 'inF1' ( in 3-component vector of float)
-0:211 Sequence
-0:211 move second child to first child ( temp 3-component vector of float)
-0:211 'r029' ( temp 3-component vector of float)
-0:211 exp ( temp 3-component vector of float)
-0:211 'inF0' ( in 3-component vector of float)
+0:208 Sequence
+0:208 move second child to first child ( temp float)
+0:208 'r025' ( temp float)
+0:208 dot-product ( temp float)
+0:208 'inF0' ( in 3-component vector of float)
+0:208 'inF1' ( in 3-component vector of float)
0:212 Sequence
0:212 move second child to first child ( temp 3-component vector of float)
-0:212 'r030' ( temp 3-component vector of float)
-0:212 exp2 ( temp 3-component vector of float)
+0:212 'r029' ( temp 3-component vector of float)
+0:212 exp ( temp 3-component vector of float)
0:212 'inF0' ( in 3-component vector of float)
0:213 Sequence
0:213 move second child to first child ( temp 3-component vector of float)
-0:213 'r031' ( temp 3-component vector of float)
-0:213 face-forward ( temp 3-component vector of float)
+0:213 'r030' ( temp 3-component vector of float)
+0:213 exp2 ( temp 3-component vector of float)
0:213 'inF0' ( in 3-component vector of float)
-0:213 'inF1' ( in 3-component vector of float)
-0:213 'inF2' ( in 3-component vector of float)
0:214 Sequence
-0:214 move second child to first child ( temp 3-component vector of uint)
-0:214 'r032' ( temp 3-component vector of uint)
+0:214 move second child to first child ( temp 3-component vector of float)
+0:214 'r031' ( temp 3-component vector of float)
+0:214 face-forward ( temp 3-component vector of float)
+0:214 'inF0' ( in 3-component vector of float)
+0:214 'inF1' ( in 3-component vector of float)
+0:214 'inF2' ( in 3-component vector of float)
+0:215 Sequence
+0:215 move second child to first child ( temp 3-component vector of uint)
+0:215 'r032' ( temp 3-component vector of uint)
0:? findMSB ( temp 3-component vector of uint)
0:? Constant:
0:? 2 (const uint)
0:? 3 (const uint)
0:? 4 (const uint)
-0:215 Sequence
-0:215 move second child to first child ( temp 3-component vector of uint)
-0:215 'r033' ( temp 3-component vector of uint)
+0:216 Sequence
+0:216 move second child to first child ( temp 3-component vector of uint)
+0:216 'r033' ( temp 3-component vector of uint)
0:? findLSB ( temp 3-component vector of uint)
0:? Constant:
0:? 2 (const uint)
0:? 3 (const uint)
0:? 4 (const uint)
-0:216 Sequence
-0:216 move second child to first child ( temp 3-component vector of float)
-0:216 'r034' ( temp 3-component vector of float)
-0:216 Floor ( temp 3-component vector of float)
-0:216 'inF0' ( in 3-component vector of float)
-0:218 Sequence
-0:218 move second child to first child ( temp 3-component vector of float)
-0:218 'r036' ( temp 3-component vector of float)
-0:218 mod ( temp 3-component vector of float)
-0:218 'inF0' ( in 3-component vector of float)
-0:218 'inF1' ( in 3-component vector of float)
+0:217 Sequence
+0:217 move second child to first child ( temp 3-component vector of float)
+0:217 'r034' ( temp 3-component vector of float)
+0:217 Floor ( temp 3-component vector of float)
+0:217 'inF0' ( in 3-component vector of float)
0:219 Sequence
0:219 move second child to first child ( temp 3-component vector of float)
-0:219 'r037' ( temp 3-component vector of float)
-0:219 Fraction ( temp 3-component vector of float)
+0:219 'r036' ( temp 3-component vector of float)
+0:219 mod ( temp 3-component vector of float)
0:219 'inF0' ( in 3-component vector of float)
+0:219 'inF1' ( in 3-component vector of float)
0:220 Sequence
0:220 move second child to first child ( temp 3-component vector of float)
-0:220 'r038' ( temp 3-component vector of float)
-0:220 frexp ( temp 3-component vector of float)
+0:220 'r037' ( temp 3-component vector of float)
+0:220 Fraction ( temp 3-component vector of float)
0:220 'inF0' ( in 3-component vector of float)
-0:220 'inF1' ( in 3-component vector of float)
0:221 Sequence
0:221 move second child to first child ( temp 3-component vector of float)
0:221 'r039' ( temp 3-component vector of float)
@@ -1151,7 +1168,8 @@ gl_FragCoord origin is upper left
0:263 move second child to first child ( temp bool)
0:263 'r000' ( temp bool)
0:263 all ( temp bool)
-0:263 'inF0' ( in 4-component vector of float)
+0:263 Convert float to bool ( temp 4-component vector of bool)
+0:263 'inF0' ( in 4-component vector of float)
0:264 Sequence
0:264 move second child to first child ( temp 4-component vector of float)
0:264 'r001' ( temp 4-component vector of float)
@@ -1166,7 +1184,8 @@ gl_FragCoord origin is upper left
0:266 move second child to first child ( temp bool)
0:266 'r003' ( temp bool)
0:266 any ( temp bool)
-0:266 'inF0' ( in 4-component vector of float)
+0:266 Convert float to bool ( temp 4-component vector of bool)
+0:266 'inF0' ( in 4-component vector of float)
0:267 Sequence
0:267 move second child to first child ( temp 4-component vector of float)
0:267 'r004' ( temp 4-component vector of float)
@@ -1222,152 +1241,158 @@ gl_FragCoord origin is upper left
0:276 0.000000
0:276 true case
0:276 Branch: Kill
-0:277 Sequence
-0:277 move second child to first child ( temp 4-component vector of float)
-0:277 'r013' ( temp 4-component vector of float)
-0:277 cosine ( temp 4-component vector of float)
-0:277 'inF0' ( in 4-component vector of float)
+0:277 Test condition and select ( temp void)
+0:277 Condition
+0:277 any ( temp bool)
+0:277 Compare Less Than ( temp 4-component vector of bool)
+0:277 'inU0' ( in 4-component vector of uint)
+0:277 Constant:
+0:277 0.000000
+0:277 0.000000
+0:277 0.000000
+0:277 0.000000
+0:277 true case
+0:277 Branch: Kill
0:278 Sequence
0:278 move second child to first child ( temp 4-component vector of float)
-0:278 'r014' ( temp 4-component vector of float)
-0:278 hyp. cosine ( temp 4-component vector of float)
+0:278 'r013' ( temp 4-component vector of float)
+0:278 cosine ( temp 4-component vector of float)
0:278 'inF0' ( in 4-component vector of float)
0:279 Sequence
-0:279 move second child to first child ( temp 4-component vector of uint)
-0:279 'r015' ( temp 4-component vector of uint)
+0:279 move second child to first child ( temp 4-component vector of float)
+0:279 'r014' ( temp 4-component vector of float)
+0:279 hyp. cosine ( temp 4-component vector of float)
+0:279 'inF0' ( in 4-component vector of float)
+0:280 Sequence
+0:280 move second child to first child ( temp 4-component vector of uint)
+0:280 'r015' ( temp 4-component vector of uint)
0:? bitCount ( temp 4-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 3 (const uint)
0:? 5 (const uint)
0:? 2 (const uint)
-0:280 Sequence
-0:280 move second child to first child ( temp 4-component vector of float)
-0:280 'r016' ( temp 4-component vector of float)
-0:280 dPdx ( temp 4-component vector of float)
-0:280 'inF0' ( in 4-component vector of float)
0:281 Sequence
0:281 move second child to first child ( temp 4-component vector of float)
-0:281 'r017' ( temp 4-component vector of float)
-0:281 dPdxCoarse ( temp 4-component vector of float)
+0:281 'r016' ( temp 4-component vector of float)
+0:281 dPdx ( temp 4-component vector of float)
0:281 'inF0' ( in 4-component vector of float)
0:282 Sequence
0:282 move second child to first child ( temp 4-component vector of float)
-0:282 'r018' ( temp 4-component vector of float)
-0:282 dPdxFine ( temp 4-component vector of float)
+0:282 'r017' ( temp 4-component vector of float)
+0:282 dPdxCoarse ( temp 4-component vector of float)
0:282 'inF0' ( in 4-component vector of float)
0:283 Sequence
0:283 move second child to first child ( temp 4-component vector of float)
-0:283 'r019' ( temp 4-component vector of float)
-0:283 dPdy ( temp 4-component vector of float)
+0:283 'r018' ( temp 4-component vector of float)
+0:283 dPdxFine ( temp 4-component vector of float)
0:283 'inF0' ( in 4-component vector of float)
0:284 Sequence
0:284 move second child to first child ( temp 4-component vector of float)
-0:284 'r020' ( temp 4-component vector of float)
-0:284 dPdyCoarse ( temp 4-component vector of float)
+0:284 'r019' ( temp 4-component vector of float)
+0:284 dPdy ( temp 4-component vector of float)
0:284 'inF0' ( in 4-component vector of float)
0:285 Sequence
0:285 move second child to first child ( temp 4-component vector of float)
-0:285 'r021' ( temp 4-component vector of float)
-0:285 dPdyFine ( temp 4-component vector of float)
+0:285 'r020' ( temp 4-component vector of float)
+0:285 dPdyCoarse ( temp 4-component vector of float)
0:285 'inF0' ( in 4-component vector of float)
0:286 Sequence
0:286 move second child to first child ( temp 4-component vector of float)
-0:286 'r022' ( temp 4-component vector of float)
-0:286 degrees ( temp 4-component vector of float)
+0:286 'r021' ( temp 4-component vector of float)
+0:286 dPdyFine ( temp 4-component vector of float)
0:286 'inF0' ( in 4-component vector of float)
0:287 Sequence
-0:287 move second child to first child ( temp float)
-0:287 'r023' ( temp float)
-0:287 distance ( temp float)
+0:287 move second child to first child ( temp 4-component vector of float)
+0:287 'r022' ( temp 4-component vector of float)
+0:287 degrees ( temp 4-component vector of float)
0:287 'inF0' ( in 4-component vector of float)
-0:287 'inF1' ( in 4-component vector of float)
0:288 Sequence
0:288 move second child to first child ( temp float)
-0:288 'r024' ( temp float)
-0:288 dot-product ( temp float)
+0:288 'r023' ( temp float)
+0:288 distance ( temp float)
0:288 'inF0' ( in 4-component vector of float)
0:288 'inF1' ( in 4-component vector of float)
0:289 Sequence
-0:289 move second child to first child ( temp 4-component vector of float)
-0:289 'r025' ( temp 4-component vector of float)
-0:289 Construct vec4 ( temp 4-component vector of float)
-0:289 Constant:
-0:289 1.000000
-0:289 component-wise multiply ( temp float)
-0:289 direct index ( temp float)
-0:289 'inF0' ( in 4-component vector of float)
-0:289 Constant:
-0:289 1 (const int)
-0:289 direct index ( temp float)
-0:289 'inF1' ( in 4-component vector of float)
-0:289 Constant:
-0:289 1 (const int)
-0:289 direct index ( temp float)
-0:289 'inF0' ( in 4-component vector of float)
-0:289 Constant:
-0:289 2 (const int)
-0:289 direct index ( temp float)
-0:289 'inF1' ( in 4-component vector of float)
-0:289 Constant:
-0:289 3 (const int)
-0:293 Sequence
-0:293 move second child to first child ( temp 4-component vector of float)
-0:293 'r029' ( temp 4-component vector of float)
-0:293 exp ( temp 4-component vector of float)
-0:293 'inF0' ( in 4-component vector of float)
+0:289 move second child to first child ( temp float)
+0:289 'r024' ( temp float)
+0:289 dot-product ( temp float)
+0:289 'inF0' ( in 4-component vector of float)
+0:289 'inF1' ( in 4-component vector of float)
+0:290 Sequence
+0:290 move second child to first child ( temp 4-component vector of float)
+0:290 'r025' ( temp 4-component vector of float)
+0:290 Construct vec4 ( temp 4-component vector of float)
+0:290 Constant:
+0:290 1.000000
+0:290 component-wise multiply ( temp float)
+0:290 direct index ( temp float)
+0:290 'inF0' ( in 4-component vector of float)
+0:290 Constant:
+0:290 1 (const int)
+0:290 direct index ( temp float)
+0:290 'inF1' ( in 4-component vector of float)
+0:290 Constant:
+0:290 1 (const int)
+0:290 direct index ( temp float)
+0:290 'inF0' ( in 4-component vector of float)
+0:290 Constant:
+0:290 2 (const int)
+0:290 direct index ( temp float)
+0:290 'inF1' ( in 4-component vector of float)
+0:290 Constant:
+0:290 3 (const int)
0:294 Sequence
0:294 move second child to first child ( temp 4-component vector of float)
-0:294 'r030' ( temp 4-component vector of float)
-0:294 exp2 ( temp 4-component vector of float)
+0:294 'r029' ( temp 4-component vector of float)
+0:294 exp ( temp 4-component vector of float)
0:294 'inF0' ( in 4-component vector of float)
0:295 Sequence
0:295 move second child to first child ( temp 4-component vector of float)
-0:295 'r031' ( temp 4-component vector of float)
-0:295 face-forward ( temp 4-component vector of float)
+0:295 'r030' ( temp 4-component vector of float)
+0:295 exp2 ( temp 4-component vector of float)
0:295 'inF0' ( in 4-component vector of float)
-0:295 'inF1' ( in 4-component vector of float)
-0:295 'inF2' ( in 4-component vector of float)
0:296 Sequence
-0:296 move second child to first child ( temp 4-component vector of uint)
-0:296 'r032' ( temp 4-component vector of uint)
+0:296 move second child to first child ( temp 4-component vector of float)
+0:296 'r031' ( temp 4-component vector of float)
+0:296 face-forward ( temp 4-component vector of float)
+0:296 'inF0' ( in 4-component vector of float)
+0:296 'inF1' ( in 4-component vector of float)
+0:296 'inF2' ( in 4-component vector of float)
+0:297 Sequence
+0:297 move second child to first child ( temp 4-component vector of uint)
+0:297 'r032' ( temp 4-component vector of uint)
0:? findMSB ( temp 4-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 8 (const uint)
0:? 9 (const uint)
0:? 10 (const uint)
-0:297 Sequence
-0:297 move second child to first child ( temp 4-component vector of uint)
-0:297 'r033' ( temp 4-component vector of uint)
+0:298 Sequence
+0:298 move second child to first child ( temp 4-component vector of uint)
+0:298 'r033' ( temp 4-component vector of uint)
0:? findLSB ( temp 4-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 8 (const uint)
0:? 9 (const uint)
0:? 10 (const uint)
-0:298 Sequence
-0:298 move second child to first child ( temp 4-component vector of float)
-0:298 'r034' ( temp 4-component vector of float)
-0:298 Floor ( temp 4-component vector of float)
-0:298 'inF0' ( in 4-component vector of float)
-0:300 Sequence
-0:300 move second child to first child ( temp 4-component vector of float)
-0:300 'r036' ( temp 4-component vector of float)
-0:300 mod ( temp 4-component vector of float)
-0:300 'inF0' ( in 4-component vector of float)
-0:300 'inF1' ( in 4-component vector of float)
+0:299 Sequence
+0:299 move second child to first child ( temp 4-component vector of float)
+0:299 'r034' ( temp 4-component vector of float)
+0:299 Floor ( temp 4-component vector of float)
+0:299 'inF0' ( in 4-component vector of float)
0:301 Sequence
0:301 move second child to first child ( temp 4-component vector of float)
-0:301 'r037' ( temp 4-component vector of float)
-0:301 Fraction ( temp 4-component vector of float)
+0:301 'r036' ( temp 4-component vector of float)
+0:301 mod ( temp 4-component vector of float)
0:301 'inF0' ( in 4-component vector of float)
+0:301 'inF1' ( in 4-component vector of float)
0:302 Sequence
0:302 move second child to first child ( temp 4-component vector of float)
-0:302 'r038' ( temp 4-component vector of float)
-0:302 frexp ( temp 4-component vector of float)
+0:302 'r037' ( temp 4-component vector of float)
+0:302 Fraction ( temp 4-component vector of float)
0:302 'inF0' ( in 4-component vector of float)
-0:302 'inF1' ( in 4-component vector of float)
0:303 Sequence
0:303 move second child to first child ( temp 4-component vector of float)
0:303 'r039' ( temp 4-component vector of float)
@@ -1559,582 +1584,574 @@ gl_FragCoord origin is upper left
0:? 2.000000
0:? 3.000000
0:? 4.000000
-0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
-0:401 Function Parameters:
-0:401 'inF0' ( in 2X2 matrix of float)
-0:401 'inF1' ( in 2X2 matrix of float)
-0:401 'inF2' ( in 2X2 matrix of float)
+0:400 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
+0:400 Function Parameters:
+0:400 'inF0' ( in 2X2 matrix of float)
+0:400 'inF1' ( in 2X2 matrix of float)
+0:400 'inF2' ( in 2X2 matrix of float)
0:? Sequence
-0:403 Sequence
-0:403 move second child to first child ( temp bool)
-0:403 'r000' ( temp bool)
-0:403 all ( temp bool)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r001' ( temp 2X2 matrix of float)
-0:403 Absolute value ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 arc cosine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp bool)
-0:403 'r003' ( temp bool)
-0:403 any ( temp bool)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r004' ( temp 2X2 matrix of float)
-0:403 arc sine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r005' ( temp 2X2 matrix of float)
-0:403 arc tangent ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r006' ( temp 2X2 matrix of float)
-0:403 arc tangent ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r007' ( temp 2X2 matrix of float)
-0:403 Ceiling ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Test condition and select ( temp void)
-0:403 Condition
-0:403 any ( temp bool)
-0:403 Compare Less Than ( temp 2X2 matrix of bool)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Constant:
-0:403 0.000000
-0:403 0.000000
-0:403 0.000000
-0:403 0.000000
-0:403 true case
-0:403 Branch: Kill
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r008' ( temp 2X2 matrix of float)
-0:403 clamp ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 'inF2' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r009' ( temp 2X2 matrix of float)
-0:403 cosine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r010' ( temp 2X2 matrix of float)
-0:403 hyp. cosine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r011' ( temp 2X2 matrix of float)
-0:403 dPdx ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r012' ( temp 2X2 matrix of float)
-0:403 dPdxCoarse ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r013' ( temp 2X2 matrix of float)
-0:403 dPdxFine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r014' ( temp 2X2 matrix of float)
-0:403 dPdy ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r015' ( temp 2X2 matrix of float)
-0:403 dPdyCoarse ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r016' ( temp 2X2 matrix of float)
-0:403 dPdyFine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r017' ( temp 2X2 matrix of float)
-0:403 degrees ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp float)
-0:403 'r018' ( temp float)
-0:403 determinant ( temp float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r019' ( temp 2X2 matrix of float)
-0:403 exp ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'R020' ( temp 2X2 matrix of float)
-0:403 exp2 ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r021' ( temp 2X2 matrix of float)
-0:403 Floor ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r022' ( temp 2X2 matrix of float)
-0:403 mod ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r023' ( temp 2X2 matrix of float)
-0:403 Fraction ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r024' ( temp 2X2 matrix of float)
-0:403 frexp ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r025' ( temp 2X2 matrix of float)
-0:403 fwidth ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r026' ( temp 2X2 matrix of float)
-0:403 ldexp ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r026a' ( temp 2X2 matrix of float)
-0:403 mix ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 'inF2' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r027' ( temp 2X2 matrix of float)
-0:403 log ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r028' ( temp 2X2 matrix of float)
-0:403 matrix-scale ( temp 2X2 matrix of float)
-0:403 log2 ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Constant:
-0:403 0.301030
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r029' ( temp 2X2 matrix of float)
-0:403 log2 ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r030' ( temp 2X2 matrix of float)
-0:403 max ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r031' ( temp 2X2 matrix of float)
-0:403 min ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r032' ( temp 2X2 matrix of float)
-0:403 pow ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r033' ( temp 2X2 matrix of float)
-0:403 radians ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r034' ( temp 2X2 matrix of float)
-0:403 roundEven ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r035' ( temp 2X2 matrix of float)
-0:403 inverse sqrt ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r036' ( temp 2X2 matrix of float)
-0:403 clamp ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Constant:
-0:403 0.000000
-0:403 Constant:
-0:403 1.000000
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r037' ( temp 2X2 matrix of float)
-0:403 Sign ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r038' ( temp 2X2 matrix of float)
-0:403 sine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 sine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'inF2' ( in 2X2 matrix of float)
-0:403 cosine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r039' ( temp 2X2 matrix of float)
-0:403 hyp. sine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r049' ( temp 2X2 matrix of float)
-0:403 smoothstep ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 'inF2' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r041' ( temp 2X2 matrix of float)
-0:403 sqrt ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r042' ( temp 2X2 matrix of float)
-0:403 step ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r043' ( temp 2X2 matrix of float)
-0:403 tangent ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r044' ( temp 2X2 matrix of float)
-0:403 hyp. tangent ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 transpose ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r046' ( temp 2X2 matrix of float)
-0:403 trunc ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:406 Branch: Return with expression
+0:402 Sequence
+0:402 move second child to first child ( temp bool)
+0:402 'r000' ( temp bool)
+0:402 all ( temp bool)
+0:402 Convert float to bool ( temp 2X2 matrix of bool)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r001' ( temp 2X2 matrix of float)
+0:402 Absolute value ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 arc cosine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp bool)
+0:402 'r003' ( temp bool)
+0:402 any ( temp bool)
+0:402 Convert float to bool ( temp 2X2 matrix of bool)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r004' ( temp 2X2 matrix of float)
+0:402 arc sine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r005' ( temp 2X2 matrix of float)
+0:402 arc tangent ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r006' ( temp 2X2 matrix of float)
+0:402 arc tangent ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r007' ( temp 2X2 matrix of float)
+0:402 Ceiling ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Test condition and select ( temp void)
+0:402 Condition
+0:402 any ( temp bool)
+0:402 Compare Less Than ( temp 2X2 matrix of bool)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Constant:
+0:402 0.000000
+0:402 0.000000
+0:402 0.000000
+0:402 0.000000
+0:402 true case
+0:402 Branch: Kill
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r008' ( temp 2X2 matrix of float)
+0:402 clamp ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 'inF2' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r009' ( temp 2X2 matrix of float)
+0:402 cosine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r010' ( temp 2X2 matrix of float)
+0:402 hyp. cosine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r011' ( temp 2X2 matrix of float)
+0:402 dPdx ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r012' ( temp 2X2 matrix of float)
+0:402 dPdxCoarse ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r013' ( temp 2X2 matrix of float)
+0:402 dPdxFine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r014' ( temp 2X2 matrix of float)
+0:402 dPdy ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r015' ( temp 2X2 matrix of float)
+0:402 dPdyCoarse ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r016' ( temp 2X2 matrix of float)
+0:402 dPdyFine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r017' ( temp 2X2 matrix of float)
+0:402 degrees ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp float)
+0:402 'r018' ( temp float)
+0:402 determinant ( temp float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r019' ( temp 2X2 matrix of float)
+0:402 exp ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'R020' ( temp 2X2 matrix of float)
+0:402 exp2 ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r021' ( temp 2X2 matrix of float)
+0:402 Floor ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r022' ( temp 2X2 matrix of float)
+0:402 mod ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r023' ( temp 2X2 matrix of float)
+0:402 Fraction ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r025' ( temp 2X2 matrix of float)
+0:402 fwidth ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r026' ( temp 2X2 matrix of float)
+0:402 ldexp ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r026a' ( temp 2X2 matrix of float)
+0:402 mix ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 'inF2' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r027' ( temp 2X2 matrix of float)
+0:402 log ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r028' ( temp 2X2 matrix of float)
+0:402 matrix-scale ( temp 2X2 matrix of float)
+0:402 log2 ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Constant:
+0:402 0.301030
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r029' ( temp 2X2 matrix of float)
+0:402 log2 ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r030' ( temp 2X2 matrix of float)
+0:402 max ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r031' ( temp 2X2 matrix of float)
+0:402 min ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r032' ( temp 2X2 matrix of float)
+0:402 pow ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r033' ( temp 2X2 matrix of float)
+0:402 radians ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r034' ( temp 2X2 matrix of float)
+0:402 roundEven ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r035' ( temp 2X2 matrix of float)
+0:402 inverse sqrt ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r036' ( temp 2X2 matrix of float)
+0:402 clamp ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Constant:
+0:402 0.000000
+0:402 Constant:
+0:402 1.000000
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r037' ( temp 2X2 matrix of float)
+0:402 Sign ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r038' ( temp 2X2 matrix of float)
+0:402 sine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 sine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'inF2' ( in 2X2 matrix of float)
+0:402 cosine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r039' ( temp 2X2 matrix of float)
+0:402 hyp. sine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r049' ( temp 2X2 matrix of float)
+0:402 smoothstep ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 'inF2' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r041' ( temp 2X2 matrix of float)
+0:402 sqrt ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r042' ( temp 2X2 matrix of float)
+0:402 step ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r043' ( temp 2X2 matrix of float)
+0:402 tangent ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r044' ( temp 2X2 matrix of float)
+0:402 hyp. tangent ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 transpose ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r046' ( temp 2X2 matrix of float)
+0:402 trunc ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:405 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
-0:410 Function Parameters:
-0:410 'inF0' ( in 3X3 matrix of float)
-0:410 'inF1' ( in 3X3 matrix of float)
-0:410 'inF2' ( in 3X3 matrix of float)
+0:409 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
+0:409 Function Parameters:
+0:409 'inF0' ( in 3X3 matrix of float)
+0:409 'inF1' ( in 3X3 matrix of float)
+0:409 'inF2' ( in 3X3 matrix of float)
0:? Sequence
-0:412 Sequence
-0:412 move second child to first child ( temp bool)
-0:412 'r000' ( temp bool)
-0:412 all ( temp bool)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r001' ( temp 3X3 matrix of float)
-0:412 Absolute value ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 arc cosine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp bool)
-0:412 'r003' ( temp bool)
-0:412 any ( temp bool)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r004' ( temp 3X3 matrix of float)
-0:412 arc sine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r005' ( temp 3X3 matrix of float)
-0:412 arc tangent ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r006' ( temp 3X3 matrix of float)
-0:412 arc tangent ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r007' ( temp 3X3 matrix of float)
-0:412 Ceiling ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Test condition and select ( temp void)
-0:412 Condition
-0:412 any ( temp bool)
-0:412 Compare Less Than ( temp 3X3 matrix of bool)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Constant:
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 true case
-0:412 Branch: Kill
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r008' ( temp 3X3 matrix of float)
-0:412 clamp ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 'inF2' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r009' ( temp 3X3 matrix of float)
-0:412 cosine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r010' ( temp 3X3 matrix of float)
-0:412 hyp. cosine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r011' ( temp 3X3 matrix of float)
-0:412 dPdx ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r012' ( temp 3X3 matrix of float)
-0:412 dPdxCoarse ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r013' ( temp 3X3 matrix of float)
-0:412 dPdxFine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r014' ( temp 3X3 matrix of float)
-0:412 dPdy ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r015' ( temp 3X3 matrix of float)
-0:412 dPdyCoarse ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r016' ( temp 3X3 matrix of float)
-0:412 dPdyFine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r017' ( temp 3X3 matrix of float)
-0:412 degrees ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp float)
-0:412 'r018' ( temp float)
-0:412 determinant ( temp float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r019' ( temp 3X3 matrix of float)
-0:412 exp ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'R020' ( temp 3X3 matrix of float)
-0:412 exp2 ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r021' ( temp 3X3 matrix of float)
-0:412 Floor ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r022' ( temp 3X3 matrix of float)
-0:412 mod ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r023' ( temp 3X3 matrix of float)
-0:412 Fraction ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r024' ( temp 3X3 matrix of float)
-0:412 frexp ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r025' ( temp 3X3 matrix of float)
-0:412 fwidth ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r026' ( temp 3X3 matrix of float)
-0:412 ldexp ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r026a' ( temp 3X3 matrix of float)
-0:412 mix ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 'inF2' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r027' ( temp 3X3 matrix of float)
-0:412 log ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r028' ( temp 3X3 matrix of float)
-0:412 matrix-scale ( temp 3X3 matrix of float)
-0:412 log2 ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Constant:
-0:412 0.301030
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r029' ( temp 3X3 matrix of float)
-0:412 log2 ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r030' ( temp 3X3 matrix of float)
-0:412 max ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r031' ( temp 3X3 matrix of float)
-0:412 min ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r032' ( temp 3X3 matrix of float)
-0:412 pow ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r033' ( temp 3X3 matrix of float)
-0:412 radians ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r034' ( temp 3X3 matrix of float)
-0:412 roundEven ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r035' ( temp 3X3 matrix of float)
-0:412 inverse sqrt ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r036' ( temp 3X3 matrix of float)
-0:412 clamp ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Constant:
-0:412 0.000000
-0:412 Constant:
-0:412 1.000000
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r037' ( temp 3X3 matrix of float)
-0:412 Sign ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r038' ( temp 3X3 matrix of float)
-0:412 sine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 sine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'inF2' ( in 3X3 matrix of float)
-0:412 cosine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r039' ( temp 3X3 matrix of float)
-0:412 hyp. sine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r049' ( temp 3X3 matrix of float)
-0:412 smoothstep ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 'inF2' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r041' ( temp 3X3 matrix of float)
-0:412 sqrt ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r042' ( temp 3X3 matrix of float)
-0:412 step ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r043' ( temp 3X3 matrix of float)
-0:412 tangent ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r044' ( temp 3X3 matrix of float)
-0:412 hyp. tangent ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 transpose ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r046' ( temp 3X3 matrix of float)
-0:412 trunc ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:415 Branch: Return with expression
+0:411 Sequence
+0:411 move second child to first child ( temp bool)
+0:411 'r000' ( temp bool)
+0:411 all ( temp bool)
+0:411 Convert float to bool ( temp 3X3 matrix of bool)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r001' ( temp 3X3 matrix of float)
+0:411 Absolute value ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 arc cosine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp bool)
+0:411 'r003' ( temp bool)
+0:411 any ( temp bool)
+0:411 Convert float to bool ( temp 3X3 matrix of bool)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r004' ( temp 3X3 matrix of float)
+0:411 arc sine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r005' ( temp 3X3 matrix of float)
+0:411 arc tangent ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r006' ( temp 3X3 matrix of float)
+0:411 arc tangent ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r007' ( temp 3X3 matrix of float)
+0:411 Ceiling ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Test condition and select ( temp void)
+0:411 Condition
+0:411 any ( temp bool)
+0:411 Compare Less Than ( temp 3X3 matrix of bool)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Constant:
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 true case
+0:411 Branch: Kill
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r008' ( temp 3X3 matrix of float)
+0:411 clamp ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 'inF2' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r009' ( temp 3X3 matrix of float)
+0:411 cosine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r010' ( temp 3X3 matrix of float)
+0:411 hyp. cosine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r011' ( temp 3X3 matrix of float)
+0:411 dPdx ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r012' ( temp 3X3 matrix of float)
+0:411 dPdxCoarse ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r013' ( temp 3X3 matrix of float)
+0:411 dPdxFine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r014' ( temp 3X3 matrix of float)
+0:411 dPdy ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r015' ( temp 3X3 matrix of float)
+0:411 dPdyCoarse ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r016' ( temp 3X3 matrix of float)
+0:411 dPdyFine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r017' ( temp 3X3 matrix of float)
+0:411 degrees ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp float)
+0:411 'r018' ( temp float)
+0:411 determinant ( temp float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r019' ( temp 3X3 matrix of float)
+0:411 exp ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'R020' ( temp 3X3 matrix of float)
+0:411 exp2 ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r021' ( temp 3X3 matrix of float)
+0:411 Floor ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r022' ( temp 3X3 matrix of float)
+0:411 mod ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r023' ( temp 3X3 matrix of float)
+0:411 Fraction ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r025' ( temp 3X3 matrix of float)
+0:411 fwidth ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r026' ( temp 3X3 matrix of float)
+0:411 ldexp ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r026a' ( temp 3X3 matrix of float)
+0:411 mix ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 'inF2' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r027' ( temp 3X3 matrix of float)
+0:411 log ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r028' ( temp 3X3 matrix of float)
+0:411 matrix-scale ( temp 3X3 matrix of float)
+0:411 log2 ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Constant:
+0:411 0.301030
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r029' ( temp 3X3 matrix of float)
+0:411 log2 ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r030' ( temp 3X3 matrix of float)
+0:411 max ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r031' ( temp 3X3 matrix of float)
+0:411 min ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r032' ( temp 3X3 matrix of float)
+0:411 pow ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r033' ( temp 3X3 matrix of float)
+0:411 radians ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r034' ( temp 3X3 matrix of float)
+0:411 roundEven ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r035' ( temp 3X3 matrix of float)
+0:411 inverse sqrt ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r036' ( temp 3X3 matrix of float)
+0:411 clamp ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Constant:
+0:411 0.000000
+0:411 Constant:
+0:411 1.000000
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r037' ( temp 3X3 matrix of float)
+0:411 Sign ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r038' ( temp 3X3 matrix of float)
+0:411 sine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 sine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'inF2' ( in 3X3 matrix of float)
+0:411 cosine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r039' ( temp 3X3 matrix of float)
+0:411 hyp. sine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r049' ( temp 3X3 matrix of float)
+0:411 smoothstep ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 'inF2' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r041' ( temp 3X3 matrix of float)
+0:411 sqrt ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r042' ( temp 3X3 matrix of float)
+0:411 step ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r043' ( temp 3X3 matrix of float)
+0:411 tangent ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r044' ( temp 3X3 matrix of float)
+0:411 hyp. tangent ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 transpose ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r046' ( temp 3X3 matrix of float)
+0:411 trunc ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:414 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
@@ -2145,301 +2162,297 @@ gl_FragCoord origin is upper left
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
-0:419 Function Parameters:
-0:419 'inF0' ( in 4X4 matrix of float)
-0:419 'inF1' ( in 4X4 matrix of float)
-0:419 'inF2' ( in 4X4 matrix of float)
+0:418 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
+0:418 Function Parameters:
+0:418 'inF0' ( in 4X4 matrix of float)
+0:418 'inF1' ( in 4X4 matrix of float)
+0:418 'inF2' ( in 4X4 matrix of float)
0:? Sequence
-0:421 Sequence
-0:421 move second child to first child ( temp bool)
-0:421 'r000' ( temp bool)
-0:421 all ( temp bool)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r001' ( temp 4X4 matrix of float)
-0:421 Absolute value ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 arc cosine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp bool)
-0:421 'r003' ( temp bool)
-0:421 any ( temp bool)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r004' ( temp 4X4 matrix of float)
-0:421 arc sine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r005' ( temp 4X4 matrix of float)
-0:421 arc tangent ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r006' ( temp 4X4 matrix of float)
-0:421 arc tangent ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r007' ( temp 4X4 matrix of float)
-0:421 Ceiling ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Test condition and select ( temp void)
-0:421 Condition
-0:421 any ( temp bool)
-0:421 Compare Less Than ( temp 4X4 matrix of bool)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Constant:
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 true case
-0:421 Branch: Kill
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r008' ( temp 4X4 matrix of float)
-0:421 clamp ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 'inF2' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r009' ( temp 4X4 matrix of float)
-0:421 cosine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r010' ( temp 4X4 matrix of float)
-0:421 hyp. cosine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r011' ( temp 4X4 matrix of float)
-0:421 dPdx ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r012' ( temp 4X4 matrix of float)
-0:421 dPdxCoarse ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r013' ( temp 4X4 matrix of float)
-0:421 dPdxFine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r014' ( temp 4X4 matrix of float)
-0:421 dPdy ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r015' ( temp 4X4 matrix of float)
-0:421 dPdyCoarse ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r016' ( temp 4X4 matrix of float)
-0:421 dPdyFine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r017' ( temp 4X4 matrix of float)
-0:421 degrees ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp float)
-0:421 'r018' ( temp float)
-0:421 determinant ( temp float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r019' ( temp 4X4 matrix of float)
-0:421 exp ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'R020' ( temp 4X4 matrix of float)
-0:421 exp2 ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r021' ( temp 4X4 matrix of float)
-0:421 Floor ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r022' ( temp 4X4 matrix of float)
-0:421 mod ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r023' ( temp 4X4 matrix of float)
-0:421 Fraction ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r024' ( temp 4X4 matrix of float)
-0:421 frexp ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r025' ( temp 4X4 matrix of float)
-0:421 fwidth ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r026' ( temp 4X4 matrix of float)
-0:421 ldexp ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r026a' ( temp 4X4 matrix of float)
-0:421 mix ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 'inF2' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r027' ( temp 4X4 matrix of float)
-0:421 log ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r028' ( temp 4X4 matrix of float)
-0:421 matrix-scale ( temp 4X4 matrix of float)
-0:421 log2 ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Constant:
-0:421 0.301030
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r029' ( temp 4X4 matrix of float)
-0:421 log2 ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r030' ( temp 4X4 matrix of float)
-0:421 max ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r031' ( temp 4X4 matrix of float)
-0:421 min ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r032' ( temp 4X4 matrix of float)
-0:421 pow ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r033' ( temp 4X4 matrix of float)
-0:421 radians ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r034' ( temp 4X4 matrix of float)
-0:421 roundEven ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r035' ( temp 4X4 matrix of float)
-0:421 inverse sqrt ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r036' ( temp 4X4 matrix of float)
-0:421 clamp ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Constant:
-0:421 0.000000
-0:421 Constant:
-0:421 1.000000
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r037' ( temp 4X4 matrix of float)
-0:421 Sign ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r038' ( temp 4X4 matrix of float)
-0:421 sine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 sine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'inF2' ( in 4X4 matrix of float)
-0:421 cosine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r039' ( temp 4X4 matrix of float)
-0:421 hyp. sine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r049' ( temp 4X4 matrix of float)
-0:421 smoothstep ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 'inF2' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r041' ( temp 4X4 matrix of float)
-0:421 sqrt ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r042' ( temp 4X4 matrix of float)
-0:421 step ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r043' ( temp 4X4 matrix of float)
-0:421 tangent ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r044' ( temp 4X4 matrix of float)
-0:421 hyp. tangent ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 transpose ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r046' ( temp 4X4 matrix of float)
-0:421 trunc ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:424 Branch: Return with expression
+0:420 Sequence
+0:420 move second child to first child ( temp bool)
+0:420 'r000' ( temp bool)
+0:420 all ( temp bool)
+0:420 Convert float to bool ( temp 4X4 matrix of bool)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r001' ( temp 4X4 matrix of float)
+0:420 Absolute value ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 arc cosine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp bool)
+0:420 'r003' ( temp bool)
+0:420 any ( temp bool)
+0:420 Convert float to bool ( temp 4X4 matrix of bool)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r004' ( temp 4X4 matrix of float)
+0:420 arc sine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r005' ( temp 4X4 matrix of float)
+0:420 arc tangent ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r006' ( temp 4X4 matrix of float)
+0:420 arc tangent ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r007' ( temp 4X4 matrix of float)
+0:420 Ceiling ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Test condition and select ( temp void)
+0:420 Condition
+0:420 any ( temp bool)
+0:420 Compare Less Than ( temp 4X4 matrix of bool)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Constant:
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 true case
+0:420 Branch: Kill
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r008' ( temp 4X4 matrix of float)
+0:420 clamp ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 'inF2' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r009' ( temp 4X4 matrix of float)
+0:420 cosine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r010' ( temp 4X4 matrix of float)
+0:420 hyp. cosine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r011' ( temp 4X4 matrix of float)
+0:420 dPdx ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r012' ( temp 4X4 matrix of float)
+0:420 dPdxCoarse ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r013' ( temp 4X4 matrix of float)
+0:420 dPdxFine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r014' ( temp 4X4 matrix of float)
+0:420 dPdy ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r015' ( temp 4X4 matrix of float)
+0:420 dPdyCoarse ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r016' ( temp 4X4 matrix of float)
+0:420 dPdyFine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r017' ( temp 4X4 matrix of float)
+0:420 degrees ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp float)
+0:420 'r018' ( temp float)
+0:420 determinant ( temp float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r019' ( temp 4X4 matrix of float)
+0:420 exp ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'R020' ( temp 4X4 matrix of float)
+0:420 exp2 ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r021' ( temp 4X4 matrix of float)
+0:420 Floor ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r022' ( temp 4X4 matrix of float)
+0:420 mod ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r023' ( temp 4X4 matrix of float)
+0:420 Fraction ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r025' ( temp 4X4 matrix of float)
+0:420 fwidth ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r026' ( temp 4X4 matrix of float)
+0:420 ldexp ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r026a' ( temp 4X4 matrix of float)
+0:420 mix ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 'inF2' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r027' ( temp 4X4 matrix of float)
+0:420 log ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r028' ( temp 4X4 matrix of float)
+0:420 matrix-scale ( temp 4X4 matrix of float)
+0:420 log2 ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Constant:
+0:420 0.301030
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r029' ( temp 4X4 matrix of float)
+0:420 log2 ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r030' ( temp 4X4 matrix of float)
+0:420 max ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r031' ( temp 4X4 matrix of float)
+0:420 min ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r032' ( temp 4X4 matrix of float)
+0:420 pow ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r033' ( temp 4X4 matrix of float)
+0:420 radians ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r034' ( temp 4X4 matrix of float)
+0:420 roundEven ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r035' ( temp 4X4 matrix of float)
+0:420 inverse sqrt ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r036' ( temp 4X4 matrix of float)
+0:420 clamp ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Constant:
+0:420 0.000000
+0:420 Constant:
+0:420 1.000000
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r037' ( temp 4X4 matrix of float)
+0:420 Sign ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r038' ( temp 4X4 matrix of float)
+0:420 sine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 sine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'inF2' ( in 4X4 matrix of float)
+0:420 cosine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r039' ( temp 4X4 matrix of float)
+0:420 hyp. sine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r049' ( temp 4X4 matrix of float)
+0:420 smoothstep ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 'inF2' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r041' ( temp 4X4 matrix of float)
+0:420 sqrt ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r042' ( temp 4X4 matrix of float)
+0:420 step ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r043' ( temp 4X4 matrix of float)
+0:420 tangent ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r044' ( temp 4X4 matrix of float)
+0:420 hyp. tangent ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 transpose ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r046' ( temp 4X4 matrix of float)
+0:420 trunc ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:423 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
@@ -2457,334 +2470,334 @@ gl_FragCoord origin is upper left
0:? 4.000000
0:? 4.000000
0:? 4.000000
-0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
-0:442 Function Parameters:
-0:442 'inF0' ( in float)
-0:442 'inF1' ( in float)
-0:442 'inFV0' ( in 2-component vector of float)
-0:442 'inFV1' ( in 2-component vector of float)
-0:442 'inFM0' ( in 2X2 matrix of float)
-0:442 'inFM1' ( in 2X2 matrix of float)
+0:441 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
+0:441 Function Parameters:
+0:441 'inF0' ( in float)
+0:441 'inF1' ( in float)
+0:441 'inFV0' ( in 2-component vector of float)
+0:441 'inFV1' ( in 2-component vector of float)
+0:441 'inFM0' ( in 2X2 matrix of float)
+0:441 'inFM1' ( in 2X2 matrix of float)
0:? Sequence
-0:443 Sequence
-0:443 move second child to first child ( temp float)
-0:443 'r0' ( temp float)
-0:443 component-wise multiply ( temp float)
-0:443 'inF1' ( in float)
-0:443 'inF0' ( in float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2-component vector of float)
-0:443 'r1' ( temp 2-component vector of float)
-0:443 vector-scale ( temp 2-component vector of float)
-0:443 'inF0' ( in float)
-0:443 'inFV0' ( in 2-component vector of float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2-component vector of float)
-0:443 'r2' ( temp 2-component vector of float)
-0:443 vector-scale ( temp 2-component vector of float)
-0:443 'inFV0' ( in 2-component vector of float)
-0:443 'inF0' ( in float)
-0:443 Sequence
-0:443 move second child to first child ( temp float)
-0:443 'r3' ( temp float)
-0:443 dot-product ( temp float)
-0:443 'inFV0' ( in 2-component vector of float)
-0:443 'inFV1' ( in 2-component vector of float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2-component vector of float)
-0:443 'r4' ( temp 2-component vector of float)
-0:443 vector-times-matrix ( temp 2-component vector of float)
-0:443 'inFV0' ( in 2-component vector of float)
-0:443 'inFM0' ( in 2X2 matrix of float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2-component vector of float)
-0:443 'r5' ( temp 2-component vector of float)
-0:443 matrix-times-vector ( temp 2-component vector of float)
-0:443 'inFM0' ( in 2X2 matrix of float)
-0:443 'inFV0' ( in 2-component vector of float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2X2 matrix of float)
-0:443 'r6' ( temp 2X2 matrix of float)
-0:443 matrix-scale ( temp 2X2 matrix of float)
-0:443 'inF0' ( in float)
-0:443 'inFM0' ( in 2X2 matrix of float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2X2 matrix of float)
-0:443 'r7' ( temp 2X2 matrix of float)
-0:443 matrix-scale ( temp 2X2 matrix of float)
-0:443 'inFM0' ( in 2X2 matrix of float)
-0:443 'inF0' ( in float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2X2 matrix of float)
-0:443 'r8' ( temp 2X2 matrix of float)
-0:443 matrix-multiply ( temp 2X2 matrix of float)
-0:443 'inFM1' ( in 2X2 matrix of float)
-0:443 'inFM0' ( in 2X2 matrix of float)
-0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
-0:449 Function Parameters:
-0:449 'inF0' ( in float)
-0:449 'inF1' ( in float)
-0:449 'inFV0' ( in 3-component vector of float)
-0:449 'inFV1' ( in 3-component vector of float)
-0:449 'inFM0' ( in 3X3 matrix of float)
-0:449 'inFM1' ( in 3X3 matrix of float)
+0:442 Sequence
+0:442 move second child to first child ( temp float)
+0:442 'r0' ( temp float)
+0:442 component-wise multiply ( temp float)
+0:442 'inF1' ( in float)
+0:442 'inF0' ( in float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2-component vector of float)
+0:442 'r1' ( temp 2-component vector of float)
+0:442 vector-scale ( temp 2-component vector of float)
+0:442 'inF0' ( in float)
+0:442 'inFV0' ( in 2-component vector of float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2-component vector of float)
+0:442 'r2' ( temp 2-component vector of float)
+0:442 vector-scale ( temp 2-component vector of float)
+0:442 'inFV0' ( in 2-component vector of float)
+0:442 'inF0' ( in float)
+0:442 Sequence
+0:442 move second child to first child ( temp float)
+0:442 'r3' ( temp float)
+0:442 dot-product ( temp float)
+0:442 'inFV0' ( in 2-component vector of float)
+0:442 'inFV1' ( in 2-component vector of float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2-component vector of float)
+0:442 'r4' ( temp 2-component vector of float)
+0:442 vector-times-matrix ( temp 2-component vector of float)
+0:442 'inFV0' ( in 2-component vector of float)
+0:442 'inFM0' ( in 2X2 matrix of float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2-component vector of float)
+0:442 'r5' ( temp 2-component vector of float)
+0:442 matrix-times-vector ( temp 2-component vector of float)
+0:442 'inFM0' ( in 2X2 matrix of float)
+0:442 'inFV0' ( in 2-component vector of float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2X2 matrix of float)
+0:442 'r6' ( temp 2X2 matrix of float)
+0:442 matrix-scale ( temp 2X2 matrix of float)
+0:442 'inF0' ( in float)
+0:442 'inFM0' ( in 2X2 matrix of float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2X2 matrix of float)
+0:442 'r7' ( temp 2X2 matrix of float)
+0:442 matrix-scale ( temp 2X2 matrix of float)
+0:442 'inFM0' ( in 2X2 matrix of float)
+0:442 'inF0' ( in float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2X2 matrix of float)
+0:442 'r8' ( temp 2X2 matrix of float)
+0:442 matrix-multiply ( temp 2X2 matrix of float)
+0:442 'inFM1' ( in 2X2 matrix of float)
+0:442 'inFM0' ( in 2X2 matrix of float)
+0:448 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
+0:448 Function Parameters:
+0:448 'inF0' ( in float)
+0:448 'inF1' ( in float)
+0:448 'inFV0' ( in 3-component vector of float)
+0:448 'inFV1' ( in 3-component vector of float)
+0:448 'inFM0' ( in 3X3 matrix of float)
+0:448 'inFM1' ( in 3X3 matrix of float)
0:? Sequence
-0:450 Sequence
-0:450 move second child to first child ( temp float)
-0:450 'r0' ( temp float)
-0:450 component-wise multiply ( temp float)
-0:450 'inF1' ( in float)
-0:450 'inF0' ( in float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3-component vector of float)
-0:450 'r1' ( temp 3-component vector of float)
-0:450 vector-scale ( temp 3-component vector of float)
-0:450 'inF0' ( in float)
-0:450 'inFV0' ( in 3-component vector of float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3-component vector of float)
-0:450 'r2' ( temp 3-component vector of float)
-0:450 vector-scale ( temp 3-component vector of float)
-0:450 'inFV0' ( in 3-component vector of float)
-0:450 'inF0' ( in float)
-0:450 Sequence
-0:450 move second child to first child ( temp float)
-0:450 'r3' ( temp float)
-0:450 dot-product ( temp float)
-0:450 'inFV0' ( in 3-component vector of float)
-0:450 'inFV1' ( in 3-component vector of float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3-component vector of float)
-0:450 'r4' ( temp 3-component vector of float)
-0:450 vector-times-matrix ( temp 3-component vector of float)
-0:450 'inFV0' ( in 3-component vector of float)
-0:450 'inFM0' ( in 3X3 matrix of float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3-component vector of float)
-0:450 'r5' ( temp 3-component vector of float)
-0:450 matrix-times-vector ( temp 3-component vector of float)
-0:450 'inFM0' ( in 3X3 matrix of float)
-0:450 'inFV0' ( in 3-component vector of float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3X3 matrix of float)
-0:450 'r6' ( temp 3X3 matrix of float)
-0:450 matrix-scale ( temp 3X3 matrix of float)
-0:450 'inF0' ( in float)
-0:450 'inFM0' ( in 3X3 matrix of float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3X3 matrix of float)
-0:450 'r7' ( temp 3X3 matrix of float)
-0:450 matrix-scale ( temp 3X3 matrix of float)
-0:450 'inFM0' ( in 3X3 matrix of float)
-0:450 'inF0' ( in float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3X3 matrix of float)
-0:450 'r8' ( temp 3X3 matrix of float)
-0:450 matrix-multiply ( temp 3X3 matrix of float)
-0:450 'inFM1' ( in 3X3 matrix of float)
-0:450 'inFM0' ( in 3X3 matrix of float)
-0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
-0:456 Function Parameters:
-0:456 'inF0' ( in float)
-0:456 'inF1' ( in float)
-0:456 'inFV0' ( in 4-component vector of float)
-0:456 'inFV1' ( in 4-component vector of float)
-0:456 'inFM0' ( in 4X4 matrix of float)
-0:456 'inFM1' ( in 4X4 matrix of float)
+0:449 Sequence
+0:449 move second child to first child ( temp float)
+0:449 'r0' ( temp float)
+0:449 component-wise multiply ( temp float)
+0:449 'inF1' ( in float)
+0:449 'inF0' ( in float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3-component vector of float)
+0:449 'r1' ( temp 3-component vector of float)
+0:449 vector-scale ( temp 3-component vector of float)
+0:449 'inF0' ( in float)
+0:449 'inFV0' ( in 3-component vector of float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3-component vector of float)
+0:449 'r2' ( temp 3-component vector of float)
+0:449 vector-scale ( temp 3-component vector of float)
+0:449 'inFV0' ( in 3-component vector of float)
+0:449 'inF0' ( in float)
+0:449 Sequence
+0:449 move second child to first child ( temp float)
+0:449 'r3' ( temp float)
+0:449 dot-product ( temp float)
+0:449 'inFV0' ( in 3-component vector of float)
+0:449 'inFV1' ( in 3-component vector of float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3-component vector of float)
+0:449 'r4' ( temp 3-component vector of float)
+0:449 vector-times-matrix ( temp 3-component vector of float)
+0:449 'inFV0' ( in 3-component vector of float)
+0:449 'inFM0' ( in 3X3 matrix of float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3-component vector of float)
+0:449 'r5' ( temp 3-component vector of float)
+0:449 matrix-times-vector ( temp 3-component vector of float)
+0:449 'inFM0' ( in 3X3 matrix of float)
+0:449 'inFV0' ( in 3-component vector of float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3X3 matrix of float)
+0:449 'r6' ( temp 3X3 matrix of float)
+0:449 matrix-scale ( temp 3X3 matrix of float)
+0:449 'inF0' ( in float)
+0:449 'inFM0' ( in 3X3 matrix of float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3X3 matrix of float)
+0:449 'r7' ( temp 3X3 matrix of float)
+0:449 matrix-scale ( temp 3X3 matrix of float)
+0:449 'inFM0' ( in 3X3 matrix of float)
+0:449 'inF0' ( in float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3X3 matrix of float)
+0:449 'r8' ( temp 3X3 matrix of float)
+0:449 matrix-multiply ( temp 3X3 matrix of float)
+0:449 'inFM1' ( in 3X3 matrix of float)
+0:449 'inFM0' ( in 3X3 matrix of float)
+0:455 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
+0:455 Function Parameters:
+0:455 'inF0' ( in float)
+0:455 'inF1' ( in float)
+0:455 'inFV0' ( in 4-component vector of float)
+0:455 'inFV1' ( in 4-component vector of float)
+0:455 'inFM0' ( in 4X4 matrix of float)
+0:455 'inFM1' ( in 4X4 matrix of float)
0:? Sequence
-0:457 Sequence
-0:457 move second child to first child ( temp float)
-0:457 'r0' ( temp float)
-0:457 component-wise multiply ( temp float)
-0:457 'inF1' ( in float)
-0:457 'inF0' ( in float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4-component vector of float)
-0:457 'r1' ( temp 4-component vector of float)
-0:457 vector-scale ( temp 4-component vector of float)
-0:457 'inF0' ( in float)
-0:457 'inFV0' ( in 4-component vector of float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4-component vector of float)
-0:457 'r2' ( temp 4-component vector of float)
-0:457 vector-scale ( temp 4-component vector of float)
-0:457 'inFV0' ( in 4-component vector of float)
-0:457 'inF0' ( in float)
-0:457 Sequence
-0:457 move second child to first child ( temp float)
-0:457 'r3' ( temp float)
-0:457 dot-product ( temp float)
-0:457 'inFV0' ( in 4-component vector of float)
-0:457 'inFV1' ( in 4-component vector of float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4-component vector of float)
-0:457 'r4' ( temp 4-component vector of float)
-0:457 vector-times-matrix ( temp 4-component vector of float)
-0:457 'inFV0' ( in 4-component vector of float)
-0:457 'inFM0' ( in 4X4 matrix of float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4-component vector of float)
-0:457 'r5' ( temp 4-component vector of float)
-0:457 matrix-times-vector ( temp 4-component vector of float)
-0:457 'inFM0' ( in 4X4 matrix of float)
-0:457 'inFV0' ( in 4-component vector of float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4X4 matrix of float)
-0:457 'r6' ( temp 4X4 matrix of float)
-0:457 matrix-scale ( temp 4X4 matrix of float)
-0:457 'inF0' ( in float)
-0:457 'inFM0' ( in 4X4 matrix of float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4X4 matrix of float)
-0:457 'r7' ( temp 4X4 matrix of float)
-0:457 matrix-scale ( temp 4X4 matrix of float)
-0:457 'inFM0' ( in 4X4 matrix of float)
-0:457 'inF0' ( in float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4X4 matrix of float)
-0:457 'r8' ( temp 4X4 matrix of float)
-0:457 matrix-multiply ( temp 4X4 matrix of float)
-0:457 'inFM1' ( in 4X4 matrix of float)
-0:457 'inFM0' ( in 4X4 matrix of float)
-0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
-0:466 Function Parameters:
-0:466 'inF0' ( in float)
-0:466 'inF1' ( in float)
-0:466 'inFV2' ( in 2-component vector of float)
-0:466 'inFV3' ( in 3-component vector of float)
-0:466 'inFM2x3' ( in 2X3 matrix of float)
-0:466 'inFM3x2' ( in 3X2 matrix of float)
-0:466 'inFM3x3' ( in 3X3 matrix of float)
-0:466 'inFM3x4' ( in 3X4 matrix of float)
-0:466 'inFM2x4' ( in 2X4 matrix of float)
+0:456 Sequence
+0:456 move second child to first child ( temp float)
+0:456 'r0' ( temp float)
+0:456 component-wise multiply ( temp float)
+0:456 'inF1' ( in float)
+0:456 'inF0' ( in float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4-component vector of float)
+0:456 'r1' ( temp 4-component vector of float)
+0:456 vector-scale ( temp 4-component vector of float)
+0:456 'inF0' ( in float)
+0:456 'inFV0' ( in 4-component vector of float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4-component vector of float)
+0:456 'r2' ( temp 4-component vector of float)
+0:456 vector-scale ( temp 4-component vector of float)
+0:456 'inFV0' ( in 4-component vector of float)
+0:456 'inF0' ( in float)
+0:456 Sequence
+0:456 move second child to first child ( temp float)
+0:456 'r3' ( temp float)
+0:456 dot-product ( temp float)
+0:456 'inFV0' ( in 4-component vector of float)
+0:456 'inFV1' ( in 4-component vector of float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4-component vector of float)
+0:456 'r4' ( temp 4-component vector of float)
+0:456 vector-times-matrix ( temp 4-component vector of float)
+0:456 'inFV0' ( in 4-component vector of float)
+0:456 'inFM0' ( in 4X4 matrix of float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4-component vector of float)
+0:456 'r5' ( temp 4-component vector of float)
+0:456 matrix-times-vector ( temp 4-component vector of float)
+0:456 'inFM0' ( in 4X4 matrix of float)
+0:456 'inFV0' ( in 4-component vector of float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4X4 matrix of float)
+0:456 'r6' ( temp 4X4 matrix of float)
+0:456 matrix-scale ( temp 4X4 matrix of float)
+0:456 'inF0' ( in float)
+0:456 'inFM0' ( in 4X4 matrix of float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4X4 matrix of float)
+0:456 'r7' ( temp 4X4 matrix of float)
+0:456 matrix-scale ( temp 4X4 matrix of float)
+0:456 'inFM0' ( in 4X4 matrix of float)
+0:456 'inF0' ( in float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4X4 matrix of float)
+0:456 'r8' ( temp 4X4 matrix of float)
+0:456 matrix-multiply ( temp 4X4 matrix of float)
+0:456 'inFM1' ( in 4X4 matrix of float)
+0:456 'inFM0' ( in 4X4 matrix of float)
+0:465 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
+0:465 Function Parameters:
+0:465 'inF0' ( in float)
+0:465 'inF1' ( in float)
+0:465 'inFV2' ( in 2-component vector of float)
+0:465 'inFV3' ( in 3-component vector of float)
+0:465 'inFM2x3' ( in 2X3 matrix of float)
+0:465 'inFM3x2' ( in 3X2 matrix of float)
+0:465 'inFM3x3' ( in 3X3 matrix of float)
+0:465 'inFM3x4' ( in 3X4 matrix of float)
+0:465 'inFM2x4' ( in 2X4 matrix of float)
0:? Sequence
+0:466 Sequence
+0:466 move second child to first child ( temp float)
+0:466 'r00' ( temp float)
+0:466 component-wise multiply ( temp float)
+0:466 'inF1' ( in float)
+0:466 'inF0' ( in float)
0:467 Sequence
-0:467 move second child to first child ( temp float)
-0:467 'r00' ( temp float)
-0:467 component-wise multiply ( temp float)
-0:467 'inF1' ( in float)
+0:467 move second child to first child ( temp 2-component vector of float)
+0:467 'r01' ( temp 2-component vector of float)
+0:467 vector-scale ( temp 2-component vector of float)
0:467 'inF0' ( in float)
+0:467 'inFV2' ( in 2-component vector of float)
0:468 Sequence
-0:468 move second child to first child ( temp 2-component vector of float)
-0:468 'r01' ( temp 2-component vector of float)
-0:468 vector-scale ( temp 2-component vector of float)
+0:468 move second child to first child ( temp 3-component vector of float)
+0:468 'r02' ( temp 3-component vector of float)
+0:468 vector-scale ( temp 3-component vector of float)
0:468 'inF0' ( in float)
-0:468 'inFV2' ( in 2-component vector of float)
+0:468 'inFV3' ( in 3-component vector of float)
0:469 Sequence
-0:469 move second child to first child ( temp 3-component vector of float)
-0:469 'r02' ( temp 3-component vector of float)
-0:469 vector-scale ( temp 3-component vector of float)
+0:469 move second child to first child ( temp 2-component vector of float)
+0:469 'r03' ( temp 2-component vector of float)
+0:469 vector-scale ( temp 2-component vector of float)
+0:469 'inFV2' ( in 2-component vector of float)
0:469 'inF0' ( in float)
-0:469 'inFV3' ( in 3-component vector of float)
0:470 Sequence
-0:470 move second child to first child ( temp 2-component vector of float)
-0:470 'r03' ( temp 2-component vector of float)
-0:470 vector-scale ( temp 2-component vector of float)
-0:470 'inFV2' ( in 2-component vector of float)
+0:470 move second child to first child ( temp 3-component vector of float)
+0:470 'r04' ( temp 3-component vector of float)
+0:470 vector-scale ( temp 3-component vector of float)
+0:470 'inFV3' ( in 3-component vector of float)
0:470 'inF0' ( in float)
0:471 Sequence
-0:471 move second child to first child ( temp 3-component vector of float)
-0:471 'r04' ( temp 3-component vector of float)
-0:471 vector-scale ( temp 3-component vector of float)
-0:471 'inFV3' ( in 3-component vector of float)
-0:471 'inF0' ( in float)
+0:471 move second child to first child ( temp float)
+0:471 'r05' ( temp float)
+0:471 dot-product ( temp float)
+0:471 'inFV2' ( in 2-component vector of float)
+0:471 'inFV2' ( in 2-component vector of float)
0:472 Sequence
0:472 move second child to first child ( temp float)
-0:472 'r05' ( temp float)
+0:472 'r06' ( temp float)
0:472 dot-product ( temp float)
-0:472 'inFV2' ( in 2-component vector of float)
-0:472 'inFV2' ( in 2-component vector of float)
+0:472 'inFV3' ( in 3-component vector of float)
+0:472 'inFV3' ( in 3-component vector of float)
0:473 Sequence
-0:473 move second child to first child ( temp float)
-0:473 'r06' ( temp float)
-0:473 dot-product ( temp float)
-0:473 'inFV3' ( in 3-component vector of float)
-0:473 'inFV3' ( in 3-component vector of float)
+0:473 move second child to first child ( temp 3-component vector of float)
+0:473 'r07' ( temp 3-component vector of float)
+0:473 matrix-times-vector ( temp 3-component vector of float)
+0:473 'inFM2x3' ( in 2X3 matrix of float)
+0:473 'inFV2' ( in 2-component vector of float)
0:474 Sequence
-0:474 move second child to first child ( temp 3-component vector of float)
-0:474 'r07' ( temp 3-component vector of float)
-0:474 matrix-times-vector ( temp 3-component vector of float)
-0:474 'inFM2x3' ( in 2X3 matrix of float)
-0:474 'inFV2' ( in 2-component vector of float)
+0:474 move second child to first child ( temp 2-component vector of float)
+0:474 'r08' ( temp 2-component vector of float)
+0:474 matrix-times-vector ( temp 2-component vector of float)
+0:474 'inFM3x2' ( in 3X2 matrix of float)
+0:474 'inFV3' ( in 3-component vector of float)
0:475 Sequence
0:475 move second child to first child ( temp 2-component vector of float)
-0:475 'r08' ( temp 2-component vector of float)
-0:475 matrix-times-vector ( temp 2-component vector of float)
-0:475 'inFM3x2' ( in 3X2 matrix of float)
+0:475 'r09' ( temp 2-component vector of float)
+0:475 vector-times-matrix ( temp 2-component vector of float)
0:475 'inFV3' ( in 3-component vector of float)
+0:475 'inFM2x3' ( in 2X3 matrix of float)
0:476 Sequence
-0:476 move second child to first child ( temp 2-component vector of float)
-0:476 'r09' ( temp 2-component vector of float)
-0:476 vector-times-matrix ( temp 2-component vector of float)
-0:476 'inFV3' ( in 3-component vector of float)
-0:476 'inFM2x3' ( in 2X3 matrix of float)
+0:476 move second child to first child ( temp 3-component vector of float)
+0:476 'r10' ( temp 3-component vector of float)
+0:476 vector-times-matrix ( temp 3-component vector of float)
+0:476 'inFV2' ( in 2-component vector of float)
+0:476 'inFM3x2' ( in 3X2 matrix of float)
0:477 Sequence
-0:477 move second child to first child ( temp 3-component vector of float)
-0:477 'r10' ( temp 3-component vector of float)
-0:477 vector-times-matrix ( temp 3-component vector of float)
-0:477 'inFV2' ( in 2-component vector of float)
-0:477 'inFM3x2' ( in 3X2 matrix of float)
+0:477 move second child to first child ( temp 2X3 matrix of float)
+0:477 'r11' ( temp 2X3 matrix of float)
+0:477 matrix-scale ( temp 2X3 matrix of float)
+0:477 'inF0' ( in float)
+0:477 'inFM2x3' ( in 2X3 matrix of float)
0:478 Sequence
-0:478 move second child to first child ( temp 2X3 matrix of float)
-0:478 'r11' ( temp 2X3 matrix of float)
-0:478 matrix-scale ( temp 2X3 matrix of float)
+0:478 move second child to first child ( temp 3X2 matrix of float)
+0:478 'r12' ( temp 3X2 matrix of float)
+0:478 matrix-scale ( temp 3X2 matrix of float)
0:478 'inF0' ( in float)
-0:478 'inFM2x3' ( in 2X3 matrix of float)
+0:478 'inFM3x2' ( in 3X2 matrix of float)
0:479 Sequence
-0:479 move second child to first child ( temp 3X2 matrix of float)
-0:479 'r12' ( temp 3X2 matrix of float)
-0:479 matrix-scale ( temp 3X2 matrix of float)
-0:479 'inF0' ( in float)
+0:479 move second child to first child ( temp 2X2 matrix of float)
+0:479 'r13' ( temp 2X2 matrix of float)
+0:479 matrix-multiply ( temp 2X2 matrix of float)
0:479 'inFM3x2' ( in 3X2 matrix of float)
+0:479 'inFM2x3' ( in 2X3 matrix of float)
0:480 Sequence
-0:480 move second child to first child ( temp 2X2 matrix of float)
-0:480 'r13' ( temp 2X2 matrix of float)
-0:480 matrix-multiply ( temp 2X2 matrix of float)
-0:480 'inFM3x2' ( in 3X2 matrix of float)
+0:480 move second child to first child ( temp 2X3 matrix of float)
+0:480 'r14' ( temp 2X3 matrix of float)
+0:480 matrix-multiply ( temp 2X3 matrix of float)
+0:480 'inFM3x3' ( in 3X3 matrix of float)
0:480 'inFM2x3' ( in 2X3 matrix of float)
0:481 Sequence
-0:481 move second child to first child ( temp 2X3 matrix of float)
-0:481 'r14' ( temp 2X3 matrix of float)
-0:481 matrix-multiply ( temp 2X3 matrix of float)
-0:481 'inFM3x3' ( in 3X3 matrix of float)
+0:481 move second child to first child ( temp 2X4 matrix of float)
+0:481 'r15' ( temp 2X4 matrix of float)
+0:481 matrix-multiply ( temp 2X4 matrix of float)
+0:481 'inFM3x4' ( in 3X4 matrix of float)
0:481 'inFM2x3' ( in 2X3 matrix of float)
0:482 Sequence
-0:482 move second child to first child ( temp 2X4 matrix of float)
-0:482 'r15' ( temp 2X4 matrix of float)
-0:482 matrix-multiply ( temp 2X4 matrix of float)
-0:482 'inFM3x4' ( in 3X4 matrix of float)
-0:482 'inFM2x3' ( in 2X3 matrix of float)
-0:483 Sequence
-0:483 move second child to first child ( temp 3X4 matrix of float)
-0:483 'r16' ( temp 3X4 matrix of float)
-0:483 matrix-multiply ( temp 3X4 matrix of float)
-0:483 'inFM2x4' ( in 2X4 matrix of float)
-0:483 'inFM3x2' ( in 3X2 matrix of float)
-0:489 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
-0:489 Function Parameters:
+0:482 move second child to first child ( temp 3X4 matrix of float)
+0:482 'r16' ( temp 3X4 matrix of float)
+0:482 matrix-multiply ( temp 3X4 matrix of float)
+0:482 'inFM2x4' ( in 2X4 matrix of float)
+0:482 'inFM3x2' ( in 3X2 matrix of float)
+0:488 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
+0:488 Function Parameters:
0:? Sequence
-0:491 move second child to first child ( temp 4-component vector of float)
-0:491 color: direct index for structure ( temp 4-component vector of float)
-0:491 'ps_output' ( temp structure{ temp 4-component vector of float color})
-0:491 Constant:
-0:491 0 (const int)
-0:491 Constant:
-0:491 1.000000
-0:491 1.000000
-0:491 1.000000
-0:491 1.000000
-0:492 Branch: Return with expression
-0:492 'ps_output' ( temp structure{ temp 4-component vector of float color})
-0:489 Function Definition: main( ( temp void)
-0:489 Function Parameters:
+0:490 move second child to first child ( temp 4-component vector of float)
+0:490 color: direct index for structure ( temp 4-component vector of float)
+0:490 'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:490 Constant:
+0:490 0 (const int)
+0:490 Constant:
+0:490 1.000000
+0:490 1.000000
+0:490 1.000000
+0:490 1.000000
+0:491 Branch: Return with expression
+0:491 'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:488 Function Definition: main( ( temp void)
+0:488 Function Parameters:
0:? Sequence
-0:489 Sequence
-0:489 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
-0:489 color: direct index for structure ( temp 4-component vector of float)
-0:489 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
-0:489 Constant:
-0:489 0 (const int)
+0:488 Sequence
+0:488 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
+0:488 color: direct index for structure ( temp 4-component vector of float)
+0:488 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
+0:488 Constant:
+0:488 0 (const int)
0:? Linker Objects
0:? 'gs_ua' ( shared uint)
0:? 'gs_ub' ( shared uint)
@@ -2798,13 +2811,13 @@ gl_FragCoord origin is upper left
0:? 'gs_ua4' ( shared 4-component vector of uint)
0:? 'gs_ub4' ( shared 4-component vector of uint)
0:? 'gs_uc4' ( shared 4-component vector of uint)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:17 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; ( temp float)
@@ -2819,7 +2832,8 @@ gl_FragCoord origin is upper left
0:20 move second child to first child ( temp bool)
0:20 'r000' ( temp bool)
0:20 all ( temp bool)
-0:20 'inF0' ( in float)
+0:20 Convert float to bool ( temp bool)
+0:20 'inF0' ( in float)
0:21 Sequence
0:21 move second child to first child ( temp float)
0:21 'r001' ( temp float)
@@ -2834,7 +2848,8 @@ gl_FragCoord origin is upper left
0:23 move second child to first child ( temp bool)
0:23 'r003' ( temp bool)
0:23 any ( temp bool)
-0:23 'inF0' ( in float)
+0:23 Convert float to bool ( temp bool)
+0:23 'inF0' ( in float)
0:24 Sequence
0:24 move second child to first child ( temp float)
0:24 'r004' ( temp float)
@@ -2886,103 +2901,105 @@ gl_FragCoord origin is upper left
0:33 0.000000
0:33 true case
0:33 Branch: Kill
-0:34 Sequence
-0:34 move second child to first child ( temp float)
-0:34 'r014' ( temp float)
-0:34 cosine ( temp float)
-0:34 'inF0' ( in float)
+0:34 Test condition and select ( temp void)
+0:34 Condition
+0:34 Compare Less Than ( temp bool)
+0:34 'r005' ( temp int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 true case
+0:34 Branch: Kill
0:35 Sequence
0:35 move second child to first child ( temp float)
-0:35 'r015' ( temp float)
-0:35 hyp. cosine ( temp float)
+0:35 'r014' ( temp float)
+0:35 cosine ( temp float)
0:35 'inF0' ( in float)
0:36 Sequence
-0:36 move second child to first child ( temp int)
-0:36 'r016' ( temp int)
-0:36 bitCount ( temp int)
-0:36 Constant:
-0:36 7 (const int)
+0:36 move second child to first child ( temp float)
+0:36 'r015' ( temp float)
+0:36 hyp. cosine ( temp float)
+0:36 'inF0' ( in float)
0:37 Sequence
-0:37 move second child to first child ( temp float)
-0:37 'r017' ( temp float)
-0:37 dPdx ( temp float)
-0:37 'inF0' ( in float)
+0:37 move second child to first child ( temp int)
+0:37 'r016' ( temp int)
+0:37 bitCount ( temp int)
+0:37 Constant:
+0:37 7 (const int)
0:38 Sequence
0:38 move second child to first child ( temp float)
-0:38 'r018' ( temp float)
-0:38 dPdxCoarse ( temp float)
+0:38 'r017' ( temp float)
+0:38 dPdx ( temp float)
0:38 'inF0' ( in float)
0:39 Sequence
0:39 move second child to first child ( temp float)
-0:39 'r019' ( temp float)
-0:39 dPdxFine ( temp float)
+0:39 'r018' ( temp float)
+0:39 dPdxCoarse ( temp float)
0:39 'inF0' ( in float)
0:40 Sequence
0:40 move second child to first child ( temp float)
-0:40 'r020' ( temp float)
-0:40 dPdy ( temp float)
+0:40 'r019' ( temp float)
+0:40 dPdxFine ( temp float)
0:40 'inF0' ( in float)
0:41 Sequence
0:41 move second child to first child ( temp float)
-0:41 'r021' ( temp float)
-0:41 dPdyCoarse ( temp float)
+0:41 'r020' ( temp float)
+0:41 dPdy ( temp float)
0:41 'inF0' ( in float)
0:42 Sequence
0:42 move second child to first child ( temp float)
-0:42 'r022' ( temp float)
-0:42 dPdyFine ( temp float)
+0:42 'r021' ( temp float)
+0:42 dPdyCoarse ( temp float)
0:42 'inF0' ( in float)
0:43 Sequence
0:43 move second child to first child ( temp float)
-0:43 'r023' ( temp float)
-0:43 degrees ( temp float)
+0:43 'r022' ( temp float)
+0:43 dPdyFine ( temp float)
0:43 'inF0' ( in float)
-0:47 Sequence
-0:47 move second child to first child ( temp float)
-0:47 'r027' ( temp float)
-0:47 exp ( temp float)
-0:47 'inF0' ( in float)
+0:44 Sequence
+0:44 move second child to first child ( temp float)
+0:44 'r023' ( temp float)
+0:44 degrees ( temp float)
+0:44 'inF0' ( in float)
0:48 Sequence
0:48 move second child to first child ( temp float)
-0:48 'r028' ( temp float)
-0:48 exp2 ( temp float)
+0:48 'r027' ( temp float)
+0:48 exp ( temp float)
0:48 'inF0' ( in float)
0:49 Sequence
-0:49 move second child to first child ( temp uint)
-0:49 'r029' ( temp uint)
-0:49 Convert int to uint ( temp uint)
-0:49 findMSB ( temp int)
-0:49 Constant:
-0:49 7 (const int)
+0:49 move second child to first child ( temp float)
+0:49 'r028' ( temp float)
+0:49 exp2 ( temp float)
+0:49 'inF0' ( in float)
0:50 Sequence
0:50 move second child to first child ( temp uint)
-0:50 'r030' ( temp uint)
+0:50 'r029' ( temp uint)
0:50 Convert int to uint ( temp uint)
-0:50 findLSB ( temp int)
+0:50 findMSB ( temp int)
0:50 Constant:
0:50 7 (const int)
0:51 Sequence
-0:51 move second child to first child ( temp float)
-0:51 'r031' ( temp float)
-0:51 Floor ( temp float)
-0:51 'inF0' ( in float)
-0:53 Sequence
-0:53 move second child to first child ( temp float)
-0:53 'r033' ( temp float)
-0:53 mod ( temp float)
-0:53 'inF0' ( in float)
-0:53 'inF1' ( in float)
+0:51 move second child to first child ( temp uint)
+0:51 'r030' ( temp uint)
+0:51 Convert int to uint ( temp uint)
+0:51 findLSB ( temp int)
+0:51 Constant:
+0:51 7 (const int)
+0:52 Sequence
+0:52 move second child to first child ( temp float)
+0:52 'r031' ( temp float)
+0:52 Floor ( temp float)
+0:52 'inF0' ( in float)
0:54 Sequence
0:54 move second child to first child ( temp float)
-0:54 'r034' ( temp float)
-0:54 Fraction ( temp float)
+0:54 'r033' ( temp float)
+0:54 mod ( temp float)
0:54 'inF0' ( in float)
+0:54 'inF1' ( in float)
0:55 Sequence
0:55 move second child to first child ( temp float)
-0:55 'r035' ( temp float)
-0:55 frexp ( temp float)
+0:55 'r034' ( temp float)
+0:55 Fraction ( temp float)
0:55 'inF0' ( in float)
-0:55 'inF1' ( in float)
0:56 Sequence
0:56 move second child to first child ( temp float)
0:56 'r036' ( temp float)
@@ -3166,7 +3183,8 @@ gl_FragCoord origin is upper left
0:98 move second child to first child ( temp bool)
0:98 'r000' ( temp bool)
0:98 all ( temp bool)
-0:98 'inF0' ( in 2-component vector of float)
+0:98 Convert float to bool ( temp 2-component vector of bool)
+0:98 'inF0' ( in 2-component vector of float)
0:99 Sequence
0:99 move second child to first child ( temp 2-component vector of float)
0:99 'r001' ( temp 2-component vector of float)
@@ -3181,7 +3199,8 @@ gl_FragCoord origin is upper left
0:101 move second child to first child ( temp bool)
0:101 'r003' ( temp bool)
0:101 any ( temp bool)
-0:101 'inF0' ( in 2-component vector of float)
+0:101 Convert float to bool ( temp 2-component vector of bool)
+0:101 'inF0' ( in 2-component vector of float)
0:102 Sequence
0:102 move second child to first child ( temp 2-component vector of float)
0:102 'r004' ( temp 2-component vector of float)
@@ -3235,123 +3254,127 @@ gl_FragCoord origin is upper left
0:111 0.000000
0:111 true case
0:111 Branch: Kill
-0:112 Sequence
-0:112 move second child to first child ( temp 2-component vector of float)
-0:112 'r013' ( temp 2-component vector of float)
-0:112 cosine ( temp 2-component vector of float)
-0:112 'inF0' ( in 2-component vector of float)
+0:112 Test condition and select ( temp void)
+0:112 Condition
+0:112 any ( temp bool)
+0:112 Compare Less Than ( temp 2-component vector of bool)
+0:112 'inU0' ( in 2-component vector of uint)
+0:112 Constant:
+0:112 0.000000
+0:112 0.000000
+0:112 true case
+0:112 Branch: Kill
0:113 Sequence
0:113 move second child to first child ( temp 2-component vector of float)
-0:113 'r015' ( temp 2-component vector of float)
-0:113 hyp. cosine ( temp 2-component vector of float)
+0:113 'r013' ( temp 2-component vector of float)
+0:113 cosine ( temp 2-component vector of float)
0:113 'inF0' ( in 2-component vector of float)
0:114 Sequence
-0:114 move second child to first child ( temp 2-component vector of int)
-0:114 'r016' ( temp 2-component vector of int)
+0:114 move second child to first child ( temp 2-component vector of float)
+0:114 'r015' ( temp 2-component vector of float)
+0:114 hyp. cosine ( temp 2-component vector of float)
+0:114 'inF0' ( in 2-component vector of float)
+0:115 Sequence
+0:115 move second child to first child ( temp 2-component vector of int)
+0:115 'r016' ( temp 2-component vector of int)
0:? bitCount ( temp 2-component vector of int)
0:? Constant:
0:? 7 (const int)
0:? 3 (const int)
-0:115 Sequence
-0:115 move second child to first child ( temp 2-component vector of float)
-0:115 'r017' ( temp 2-component vector of float)
-0:115 dPdx ( temp 2-component vector of float)
-0:115 'inF0' ( in 2-component vector of float)
0:116 Sequence
0:116 move second child to first child ( temp 2-component vector of float)
-0:116 'r018' ( temp 2-component vector of float)
-0:116 dPdxCoarse ( temp 2-component vector of float)
+0:116 'r017' ( temp 2-component vector of float)
+0:116 dPdx ( temp 2-component vector of float)
0:116 'inF0' ( in 2-component vector of float)
0:117 Sequence
0:117 move second child to first child ( temp 2-component vector of float)
-0:117 'r019' ( temp 2-component vector of float)
-0:117 dPdxFine ( temp 2-component vector of float)
+0:117 'r018' ( temp 2-component vector of float)
+0:117 dPdxCoarse ( temp 2-component vector of float)
0:117 'inF0' ( in 2-component vector of float)
0:118 Sequence
0:118 move second child to first child ( temp 2-component vector of float)
-0:118 'r020' ( temp 2-component vector of float)
-0:118 dPdy ( temp 2-component vector of float)
+0:118 'r019' ( temp 2-component vector of float)
+0:118 dPdxFine ( temp 2-component vector of float)
0:118 'inF0' ( in 2-component vector of float)
0:119 Sequence
0:119 move second child to first child ( temp 2-component vector of float)
-0:119 'r021' ( temp 2-component vector of float)
-0:119 dPdyCoarse ( temp 2-component vector of float)
+0:119 'r020' ( temp 2-component vector of float)
+0:119 dPdy ( temp 2-component vector of float)
0:119 'inF0' ( in 2-component vector of float)
0:120 Sequence
0:120 move second child to first child ( temp 2-component vector of float)
-0:120 'r022' ( temp 2-component vector of float)
-0:120 dPdyFine ( temp 2-component vector of float)
+0:120 'r021' ( temp 2-component vector of float)
+0:120 dPdyCoarse ( temp 2-component vector of float)
0:120 'inF0' ( in 2-component vector of float)
0:121 Sequence
0:121 move second child to first child ( temp 2-component vector of float)
-0:121 'r023' ( temp 2-component vector of float)
-0:121 degrees ( temp 2-component vector of float)
+0:121 'r022' ( temp 2-component vector of float)
+0:121 dPdyFine ( temp 2-component vector of float)
0:121 'inF0' ( in 2-component vector of float)
-0:125 Sequence
-0:125 move second child to first child ( temp float)
-0:125 'r026' ( temp float)
-0:125 distance ( temp float)
-0:125 'inF0' ( in 2-component vector of float)
-0:125 'inF1' ( in 2-component vector of float)
+0:122 Sequence
+0:122 move second child to first child ( temp 2-component vector of float)
+0:122 'r023' ( temp 2-component vector of float)
+0:122 degrees ( temp 2-component vector of float)
+0:122 'inF0' ( in 2-component vector of float)
0:126 Sequence
0:126 move second child to first child ( temp float)
-0:126 'r027' ( temp float)
-0:126 dot-product ( temp float)
+0:126 'r026' ( temp float)
+0:126 distance ( temp float)
0:126 'inF0' ( in 2-component vector of float)
0:126 'inF1' ( in 2-component vector of float)
-0:130 Sequence
-0:130 move second child to first child ( temp 2-component vector of float)
-0:130 'r028' ( temp 2-component vector of float)
-0:130 exp ( temp 2-component vector of float)
-0:130 'inF0' ( in 2-component vector of float)
+0:127 Sequence
+0:127 move second child to first child ( temp float)
+0:127 'r027' ( temp float)
+0:127 dot-product ( temp float)
+0:127 'inF0' ( in 2-component vector of float)
+0:127 'inF1' ( in 2-component vector of float)
0:131 Sequence
0:131 move second child to first child ( temp 2-component vector of float)
-0:131 'r029' ( temp 2-component vector of float)
-0:131 exp2 ( temp 2-component vector of float)
+0:131 'r028' ( temp 2-component vector of float)
+0:131 exp ( temp 2-component vector of float)
0:131 'inF0' ( in 2-component vector of float)
0:132 Sequence
0:132 move second child to first child ( temp 2-component vector of float)
-0:132 'r030' ( temp 2-component vector of float)
-0:132 face-forward ( temp 2-component vector of float)
+0:132 'r029' ( temp 2-component vector of float)
+0:132 exp2 ( temp 2-component vector of float)
0:132 'inF0' ( in 2-component vector of float)
-0:132 'inF1' ( in 2-component vector of float)
-0:132 'inF2' ( in 2-component vector of float)
0:133 Sequence
-0:133 move second child to first child ( temp 2-component vector of uint)
-0:133 'r031' ( temp 2-component vector of uint)
+0:133 move second child to first child ( temp 2-component vector of float)
+0:133 'r030' ( temp 2-component vector of float)
+0:133 face-forward ( temp 2-component vector of float)
+0:133 'inF0' ( in 2-component vector of float)
+0:133 'inF1' ( in 2-component vector of float)
+0:133 'inF2' ( in 2-component vector of float)
+0:134 Sequence
+0:134 move second child to first child ( temp 2-component vector of uint)
+0:134 'r031' ( temp 2-component vector of uint)
0:? findMSB ( temp 2-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 8 (const uint)
-0:134 Sequence
-0:134 move second child to first child ( temp 2-component vector of uint)
-0:134 'r032' ( temp 2-component vector of uint)
+0:135 Sequence
+0:135 move second child to first child ( temp 2-component vector of uint)
+0:135 'r032' ( temp 2-component vector of uint)
0:? findLSB ( temp 2-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 8 (const uint)
-0:135 Sequence
-0:135 move second child to first child ( temp 2-component vector of float)
-0:135 'r033' ( temp 2-component vector of float)
-0:135 Floor ( temp 2-component vector of float)
-0:135 'inF0' ( in 2-component vector of float)
-0:137 Sequence
-0:137 move second child to first child ( temp 2-component vector of float)
-0:137 'r035' ( temp 2-component vector of float)
-0:137 mod ( temp 2-component vector of float)
-0:137 'inF0' ( in 2-component vector of float)
-0:137 'inF1' ( in 2-component vector of float)
+0:136 Sequence
+0:136 move second child to first child ( temp 2-component vector of float)
+0:136 'r033' ( temp 2-component vector of float)
+0:136 Floor ( temp 2-component vector of float)
+0:136 'inF0' ( in 2-component vector of float)
0:138 Sequence
0:138 move second child to first child ( temp 2-component vector of float)
-0:138 'r036' ( temp 2-component vector of float)
-0:138 Fraction ( temp 2-component vector of float)
+0:138 'r035' ( temp 2-component vector of float)
+0:138 mod ( temp 2-component vector of float)
0:138 'inF0' ( in 2-component vector of float)
+0:138 'inF1' ( in 2-component vector of float)
0:139 Sequence
0:139 move second child to first child ( temp 2-component vector of float)
-0:139 'r037' ( temp 2-component vector of float)
-0:139 frexp ( temp 2-component vector of float)
+0:139 'r036' ( temp 2-component vector of float)
+0:139 Fraction ( temp 2-component vector of float)
0:139 'inF0' ( in 2-component vector of float)
-0:139 'inF1' ( in 2-component vector of float)
0:140 Sequence
0:140 move second child to first child ( temp 2-component vector of float)
0:140 'r038' ( temp 2-component vector of float)
@@ -3551,7 +3574,8 @@ gl_FragCoord origin is upper left
0:181 move second child to first child ( temp bool)
0:181 'r000' ( temp bool)
0:181 all ( temp bool)
-0:181 'inF0' ( in 3-component vector of float)
+0:181 Convert float to bool ( temp 3-component vector of bool)
+0:181 'inF0' ( in 3-component vector of float)
0:182 Sequence
0:182 move second child to first child ( temp 3-component vector of float)
0:182 'r001' ( temp 3-component vector of float)
@@ -3566,7 +3590,8 @@ gl_FragCoord origin is upper left
0:184 move second child to first child ( temp bool)
0:184 'r003' ( temp bool)
0:184 any ( temp bool)
-0:184 'inF0' ( in 3-component vector of float)
+0:184 Convert float to bool ( temp 3-component vector of bool)
+0:184 'inF0' ( in 3-component vector of float)
0:185 Sequence
0:185 move second child to first child ( temp 3-component vector of float)
0:185 'r004' ( temp 3-component vector of float)
@@ -3621,132 +3646,137 @@ gl_FragCoord origin is upper left
0:194 0.000000
0:194 true case
0:194 Branch: Kill
-0:195 Sequence
-0:195 move second child to first child ( temp 3-component vector of float)
-0:195 'r013' ( temp 3-component vector of float)
-0:195 cosine ( temp 3-component vector of float)
-0:195 'inF0' ( in 3-component vector of float)
+0:195 Test condition and select ( temp void)
+0:195 Condition
+0:195 any ( temp bool)
+0:195 Compare Less Than ( temp 3-component vector of bool)
+0:195 'inU0' ( in 3-component vector of uint)
+0:195 Constant:
+0:195 0.000000
+0:195 0.000000
+0:195 0.000000
+0:195 true case
+0:195 Branch: Kill
0:196 Sequence
0:196 move second child to first child ( temp 3-component vector of float)
-0:196 'r014' ( temp 3-component vector of float)
-0:196 hyp. cosine ( temp 3-component vector of float)
+0:196 'r013' ( temp 3-component vector of float)
+0:196 cosine ( temp 3-component vector of float)
0:196 'inF0' ( in 3-component vector of float)
0:197 Sequence
-0:197 move second child to first child ( temp 3-component vector of uint)
-0:197 'r015' ( temp 3-component vector of uint)
+0:197 move second child to first child ( temp 3-component vector of float)
+0:197 'r014' ( temp 3-component vector of float)
+0:197 hyp. cosine ( temp 3-component vector of float)
+0:197 'inF0' ( in 3-component vector of float)
+0:198 Sequence
+0:198 move second child to first child ( temp 3-component vector of uint)
+0:198 'r015' ( temp 3-component vector of uint)
0:? bitCount ( temp 3-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 3 (const uint)
0:? 5 (const uint)
-0:198 Sequence
-0:198 move second child to first child ( temp 3-component vector of float)
-0:198 'r016' ( temp 3-component vector of float)
-0:198 cross-product ( temp 3-component vector of float)
-0:198 'inF0' ( in 3-component vector of float)
-0:198 'inF1' ( in 3-component vector of float)
0:199 Sequence
0:199 move second child to first child ( temp 3-component vector of float)
-0:199 'r017' ( temp 3-component vector of float)
-0:199 dPdx ( temp 3-component vector of float)
+0:199 'r016' ( temp 3-component vector of float)
+0:199 cross-product ( temp 3-component vector of float)
0:199 'inF0' ( in 3-component vector of float)
+0:199 'inF1' ( in 3-component vector of float)
0:200 Sequence
0:200 move second child to first child ( temp 3-component vector of float)
-0:200 'r018' ( temp 3-component vector of float)
-0:200 dPdxCoarse ( temp 3-component vector of float)
+0:200 'r017' ( temp 3-component vector of float)
+0:200 dPdx ( temp 3-component vector of float)
0:200 'inF0' ( in 3-component vector of float)
0:201 Sequence
0:201 move second child to first child ( temp 3-component vector of float)
-0:201 'r019' ( temp 3-component vector of float)
-0:201 dPdxFine ( temp 3-component vector of float)
+0:201 'r018' ( temp 3-component vector of float)
+0:201 dPdxCoarse ( temp 3-component vector of float)
0:201 'inF0' ( in 3-component vector of float)
0:202 Sequence
0:202 move second child to first child ( temp 3-component vector of float)
-0:202 'r020' ( temp 3-component vector of float)
-0:202 dPdy ( temp 3-component vector of float)
+0:202 'r019' ( temp 3-component vector of float)
+0:202 dPdxFine ( temp 3-component vector of float)
0:202 'inF0' ( in 3-component vector of float)
0:203 Sequence
0:203 move second child to first child ( temp 3-component vector of float)
-0:203 'r021' ( temp 3-component vector of float)
-0:203 dPdyCoarse ( temp 3-component vector of float)
+0:203 'r020' ( temp 3-component vector of float)
+0:203 dPdy ( temp 3-component vector of float)
0:203 'inF0' ( in 3-component vector of float)
0:204 Sequence
0:204 move second child to first child ( temp 3-component vector of float)
-0:204 'r022' ( temp 3-component vector of float)
-0:204 dPdyFine ( temp 3-component vector of float)
+0:204 'r021' ( temp 3-component vector of float)
+0:204 dPdyCoarse ( temp 3-component vector of float)
0:204 'inF0' ( in 3-component vector of float)
0:205 Sequence
0:205 move second child to first child ( temp 3-component vector of float)
-0:205 'r023' ( temp 3-component vector of float)
-0:205 degrees ( temp 3-component vector of float)
+0:205 'r022' ( temp 3-component vector of float)
+0:205 dPdyFine ( temp 3-component vector of float)
0:205 'inF0' ( in 3-component vector of float)
0:206 Sequence
-0:206 move second child to first child ( temp float)
-0:206 'r024' ( temp float)
-0:206 distance ( temp float)
+0:206 move second child to first child ( temp 3-component vector of float)
+0:206 'r023' ( temp 3-component vector of float)
+0:206 degrees ( temp 3-component vector of float)
0:206 'inF0' ( in 3-component vector of float)
-0:206 'inF1' ( in 3-component vector of float)
0:207 Sequence
0:207 move second child to first child ( temp float)
-0:207 'r025' ( temp float)
-0:207 dot-product ( temp float)
+0:207 'r024' ( temp float)
+0:207 distance ( temp float)
0:207 'inF0' ( in 3-component vector of float)
0:207 'inF1' ( in 3-component vector of float)
-0:211 Sequence
-0:211 move second child to first child ( temp 3-component vector of float)
-0:211 'r029' ( temp 3-component vector of float)
-0:211 exp ( temp 3-component vector of float)
-0:211 'inF0' ( in 3-component vector of float)
+0:208 Sequence
+0:208 move second child to first child ( temp float)
+0:208 'r025' ( temp float)
+0:208 dot-product ( temp float)
+0:208 'inF0' ( in 3-component vector of float)
+0:208 'inF1' ( in 3-component vector of float)
0:212 Sequence
0:212 move second child to first child ( temp 3-component vector of float)
-0:212 'r030' ( temp 3-component vector of float)
-0:212 exp2 ( temp 3-component vector of float)
+0:212 'r029' ( temp 3-component vector of float)
+0:212 exp ( temp 3-component vector of float)
0:212 'inF0' ( in 3-component vector of float)
0:213 Sequence
0:213 move second child to first child ( temp 3-component vector of float)
-0:213 'r031' ( temp 3-component vector of float)
-0:213 face-forward ( temp 3-component vector of float)
+0:213 'r030' ( temp 3-component vector of float)
+0:213 exp2 ( temp 3-component vector of float)
0:213 'inF0' ( in 3-component vector of float)
-0:213 'inF1' ( in 3-component vector of float)
-0:213 'inF2' ( in 3-component vector of float)
0:214 Sequence
-0:214 move second child to first child ( temp 3-component vector of uint)
-0:214 'r032' ( temp 3-component vector of uint)
+0:214 move second child to first child ( temp 3-component vector of float)
+0:214 'r031' ( temp 3-component vector of float)
+0:214 face-forward ( temp 3-component vector of float)
+0:214 'inF0' ( in 3-component vector of float)
+0:214 'inF1' ( in 3-component vector of float)
+0:214 'inF2' ( in 3-component vector of float)
+0:215 Sequence
+0:215 move second child to first child ( temp 3-component vector of uint)
+0:215 'r032' ( temp 3-component vector of uint)
0:? findMSB ( temp 3-component vector of uint)
0:? Constant:
0:? 2 (const uint)
0:? 3 (const uint)
0:? 4 (const uint)
-0:215 Sequence
-0:215 move second child to first child ( temp 3-component vector of uint)
-0:215 'r033' ( temp 3-component vector of uint)
+0:216 Sequence
+0:216 move second child to first child ( temp 3-component vector of uint)
+0:216 'r033' ( temp 3-component vector of uint)
0:? findLSB ( temp 3-component vector of uint)
0:? Constant:
0:? 2 (const uint)
0:? 3 (const uint)
0:? 4 (const uint)
-0:216 Sequence
-0:216 move second child to first child ( temp 3-component vector of float)
-0:216 'r034' ( temp 3-component vector of float)
-0:216 Floor ( temp 3-component vector of float)
-0:216 'inF0' ( in 3-component vector of float)
-0:218 Sequence
-0:218 move second child to first child ( temp 3-component vector of float)
-0:218 'r036' ( temp 3-component vector of float)
-0:218 mod ( temp 3-component vector of float)
-0:218 'inF0' ( in 3-component vector of float)
-0:218 'inF1' ( in 3-component vector of float)
+0:217 Sequence
+0:217 move second child to first child ( temp 3-component vector of float)
+0:217 'r034' ( temp 3-component vector of float)
+0:217 Floor ( temp 3-component vector of float)
+0:217 'inF0' ( in 3-component vector of float)
0:219 Sequence
0:219 move second child to first child ( temp 3-component vector of float)
-0:219 'r037' ( temp 3-component vector of float)
-0:219 Fraction ( temp 3-component vector of float)
+0:219 'r036' ( temp 3-component vector of float)
+0:219 mod ( temp 3-component vector of float)
0:219 'inF0' ( in 3-component vector of float)
+0:219 'inF1' ( in 3-component vector of float)
0:220 Sequence
0:220 move second child to first child ( temp 3-component vector of float)
-0:220 'r038' ( temp 3-component vector of float)
-0:220 frexp ( temp 3-component vector of float)
+0:220 'r037' ( temp 3-component vector of float)
+0:220 Fraction ( temp 3-component vector of float)
0:220 'inF0' ( in 3-component vector of float)
-0:220 'inF1' ( in 3-component vector of float)
0:221 Sequence
0:221 move second child to first child ( temp 3-component vector of float)
0:221 'r039' ( temp 3-component vector of float)
@@ -3956,7 +3986,8 @@ gl_FragCoord origin is upper left
0:263 move second child to first child ( temp bool)
0:263 'r000' ( temp bool)
0:263 all ( temp bool)
-0:263 'inF0' ( in 4-component vector of float)
+0:263 Convert float to bool ( temp 4-component vector of bool)
+0:263 'inF0' ( in 4-component vector of float)
0:264 Sequence
0:264 move second child to first child ( temp 4-component vector of float)
0:264 'r001' ( temp 4-component vector of float)
@@ -3971,7 +4002,8 @@ gl_FragCoord origin is upper left
0:266 move second child to first child ( temp bool)
0:266 'r003' ( temp bool)
0:266 any ( temp bool)
-0:266 'inF0' ( in 4-component vector of float)
+0:266 Convert float to bool ( temp 4-component vector of bool)
+0:266 'inF0' ( in 4-component vector of float)
0:267 Sequence
0:267 move second child to first child ( temp 4-component vector of float)
0:267 'r004' ( temp 4-component vector of float)
@@ -4027,152 +4059,158 @@ gl_FragCoord origin is upper left
0:276 0.000000
0:276 true case
0:276 Branch: Kill
-0:277 Sequence
-0:277 move second child to first child ( temp 4-component vector of float)
-0:277 'r013' ( temp 4-component vector of float)
-0:277 cosine ( temp 4-component vector of float)
-0:277 'inF0' ( in 4-component vector of float)
+0:277 Test condition and select ( temp void)
+0:277 Condition
+0:277 any ( temp bool)
+0:277 Compare Less Than ( temp 4-component vector of bool)
+0:277 'inU0' ( in 4-component vector of uint)
+0:277 Constant:
+0:277 0.000000
+0:277 0.000000
+0:277 0.000000
+0:277 0.000000
+0:277 true case
+0:277 Branch: Kill
0:278 Sequence
0:278 move second child to first child ( temp 4-component vector of float)
-0:278 'r014' ( temp 4-component vector of float)
-0:278 hyp. cosine ( temp 4-component vector of float)
+0:278 'r013' ( temp 4-component vector of float)
+0:278 cosine ( temp 4-component vector of float)
0:278 'inF0' ( in 4-component vector of float)
0:279 Sequence
-0:279 move second child to first child ( temp 4-component vector of uint)
-0:279 'r015' ( temp 4-component vector of uint)
+0:279 move second child to first child ( temp 4-component vector of float)
+0:279 'r014' ( temp 4-component vector of float)
+0:279 hyp. cosine ( temp 4-component vector of float)
+0:279 'inF0' ( in 4-component vector of float)
+0:280 Sequence
+0:280 move second child to first child ( temp 4-component vector of uint)
+0:280 'r015' ( temp 4-component vector of uint)
0:? bitCount ( temp 4-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 3 (const uint)
0:? 5 (const uint)
0:? 2 (const uint)
-0:280 Sequence
-0:280 move second child to first child ( temp 4-component vector of float)
-0:280 'r016' ( temp 4-component vector of float)
-0:280 dPdx ( temp 4-component vector of float)
-0:280 'inF0' ( in 4-component vector of float)
0:281 Sequence
0:281 move second child to first child ( temp 4-component vector of float)
-0:281 'r017' ( temp 4-component vector of float)
-0:281 dPdxCoarse ( temp 4-component vector of float)
+0:281 'r016' ( temp 4-component vector of float)
+0:281 dPdx ( temp 4-component vector of float)
0:281 'inF0' ( in 4-component vector of float)
0:282 Sequence
0:282 move second child to first child ( temp 4-component vector of float)
-0:282 'r018' ( temp 4-component vector of float)
-0:282 dPdxFine ( temp 4-component vector of float)
+0:282 'r017' ( temp 4-component vector of float)
+0:282 dPdxCoarse ( temp 4-component vector of float)
0:282 'inF0' ( in 4-component vector of float)
0:283 Sequence
0:283 move second child to first child ( temp 4-component vector of float)
-0:283 'r019' ( temp 4-component vector of float)
-0:283 dPdy ( temp 4-component vector of float)
+0:283 'r018' ( temp 4-component vector of float)
+0:283 dPdxFine ( temp 4-component vector of float)
0:283 'inF0' ( in 4-component vector of float)
0:284 Sequence
0:284 move second child to first child ( temp 4-component vector of float)
-0:284 'r020' ( temp 4-component vector of float)
-0:284 dPdyCoarse ( temp 4-component vector of float)
+0:284 'r019' ( temp 4-component vector of float)
+0:284 dPdy ( temp 4-component vector of float)
0:284 'inF0' ( in 4-component vector of float)
0:285 Sequence
0:285 move second child to first child ( temp 4-component vector of float)
-0:285 'r021' ( temp 4-component vector of float)
-0:285 dPdyFine ( temp 4-component vector of float)
+0:285 'r020' ( temp 4-component vector of float)
+0:285 dPdyCoarse ( temp 4-component vector of float)
0:285 'inF0' ( in 4-component vector of float)
0:286 Sequence
0:286 move second child to first child ( temp 4-component vector of float)
-0:286 'r022' ( temp 4-component vector of float)
-0:286 degrees ( temp 4-component vector of float)
+0:286 'r021' ( temp 4-component vector of float)
+0:286 dPdyFine ( temp 4-component vector of float)
0:286 'inF0' ( in 4-component vector of float)
0:287 Sequence
-0:287 move second child to first child ( temp float)
-0:287 'r023' ( temp float)
-0:287 distance ( temp float)
+0:287 move second child to first child ( temp 4-component vector of float)
+0:287 'r022' ( temp 4-component vector of float)
+0:287 degrees ( temp 4-component vector of float)
0:287 'inF0' ( in 4-component vector of float)
-0:287 'inF1' ( in 4-component vector of float)
0:288 Sequence
0:288 move second child to first child ( temp float)
-0:288 'r024' ( temp float)
-0:288 dot-product ( temp float)
+0:288 'r023' ( temp float)
+0:288 distance ( temp float)
0:288 'inF0' ( in 4-component vector of float)
0:288 'inF1' ( in 4-component vector of float)
0:289 Sequence
-0:289 move second child to first child ( temp 4-component vector of float)
-0:289 'r025' ( temp 4-component vector of float)
-0:289 Construct vec4 ( temp 4-component vector of float)
-0:289 Constant:
-0:289 1.000000
-0:289 component-wise multiply ( temp float)
-0:289 direct index ( temp float)
-0:289 'inF0' ( in 4-component vector of float)
-0:289 Constant:
-0:289 1 (const int)
-0:289 direct index ( temp float)
-0:289 'inF1' ( in 4-component vector of float)
-0:289 Constant:
-0:289 1 (const int)
-0:289 direct index ( temp float)
-0:289 'inF0' ( in 4-component vector of float)
-0:289 Constant:
-0:289 2 (const int)
-0:289 direct index ( temp float)
-0:289 'inF1' ( in 4-component vector of float)
-0:289 Constant:
-0:289 3 (const int)
-0:293 Sequence
-0:293 move second child to first child ( temp 4-component vector of float)
-0:293 'r029' ( temp 4-component vector of float)
-0:293 exp ( temp 4-component vector of float)
-0:293 'inF0' ( in 4-component vector of float)
+0:289 move second child to first child ( temp float)
+0:289 'r024' ( temp float)
+0:289 dot-product ( temp float)
+0:289 'inF0' ( in 4-component vector of float)
+0:289 'inF1' ( in 4-component vector of float)
+0:290 Sequence
+0:290 move second child to first child ( temp 4-component vector of float)
+0:290 'r025' ( temp 4-component vector of float)
+0:290 Construct vec4 ( temp 4-component vector of float)
+0:290 Constant:
+0:290 1.000000
+0:290 component-wise multiply ( temp float)
+0:290 direct index ( temp float)
+0:290 'inF0' ( in 4-component vector of float)
+0:290 Constant:
+0:290 1 (const int)
+0:290 direct index ( temp float)
+0:290 'inF1' ( in 4-component vector of float)
+0:290 Constant:
+0:290 1 (const int)
+0:290 direct index ( temp float)
+0:290 'inF0' ( in 4-component vector of float)
+0:290 Constant:
+0:290 2 (const int)
+0:290 direct index ( temp float)
+0:290 'inF1' ( in 4-component vector of float)
+0:290 Constant:
+0:290 3 (const int)
0:294 Sequence
0:294 move second child to first child ( temp 4-component vector of float)
-0:294 'r030' ( temp 4-component vector of float)
-0:294 exp2 ( temp 4-component vector of float)
+0:294 'r029' ( temp 4-component vector of float)
+0:294 exp ( temp 4-component vector of float)
0:294 'inF0' ( in 4-component vector of float)
0:295 Sequence
0:295 move second child to first child ( temp 4-component vector of float)
-0:295 'r031' ( temp 4-component vector of float)
-0:295 face-forward ( temp 4-component vector of float)
+0:295 'r030' ( temp 4-component vector of float)
+0:295 exp2 ( temp 4-component vector of float)
0:295 'inF0' ( in 4-component vector of float)
-0:295 'inF1' ( in 4-component vector of float)
-0:295 'inF2' ( in 4-component vector of float)
0:296 Sequence
-0:296 move second child to first child ( temp 4-component vector of uint)
-0:296 'r032' ( temp 4-component vector of uint)
+0:296 move second child to first child ( temp 4-component vector of float)
+0:296 'r031' ( temp 4-component vector of float)
+0:296 face-forward ( temp 4-component vector of float)
+0:296 'inF0' ( in 4-component vector of float)
+0:296 'inF1' ( in 4-component vector of float)
+0:296 'inF2' ( in 4-component vector of float)
+0:297 Sequence
+0:297 move second child to first child ( temp 4-component vector of uint)
+0:297 'r032' ( temp 4-component vector of uint)
0:? findMSB ( temp 4-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 8 (const uint)
0:? 9 (const uint)
0:? 10 (const uint)
-0:297 Sequence
-0:297 move second child to first child ( temp 4-component vector of uint)
-0:297 'r033' ( temp 4-component vector of uint)
+0:298 Sequence
+0:298 move second child to first child ( temp 4-component vector of uint)
+0:298 'r033' ( temp 4-component vector of uint)
0:? findLSB ( temp 4-component vector of uint)
0:? Constant:
0:? 7 (const uint)
0:? 8 (const uint)
0:? 9 (const uint)
0:? 10 (const uint)
-0:298 Sequence
-0:298 move second child to first child ( temp 4-component vector of float)
-0:298 'r034' ( temp 4-component vector of float)
-0:298 Floor ( temp 4-component vector of float)
-0:298 'inF0' ( in 4-component vector of float)
-0:300 Sequence
-0:300 move second child to first child ( temp 4-component vector of float)
-0:300 'r036' ( temp 4-component vector of float)
-0:300 mod ( temp 4-component vector of float)
-0:300 'inF0' ( in 4-component vector of float)
-0:300 'inF1' ( in 4-component vector of float)
+0:299 Sequence
+0:299 move second child to first child ( temp 4-component vector of float)
+0:299 'r034' ( temp 4-component vector of float)
+0:299 Floor ( temp 4-component vector of float)
+0:299 'inF0' ( in 4-component vector of float)
0:301 Sequence
0:301 move second child to first child ( temp 4-component vector of float)
-0:301 'r037' ( temp 4-component vector of float)
-0:301 Fraction ( temp 4-component vector of float)
+0:301 'r036' ( temp 4-component vector of float)
+0:301 mod ( temp 4-component vector of float)
0:301 'inF0' ( in 4-component vector of float)
+0:301 'inF1' ( in 4-component vector of float)
0:302 Sequence
0:302 move second child to first child ( temp 4-component vector of float)
-0:302 'r038' ( temp 4-component vector of float)
-0:302 frexp ( temp 4-component vector of float)
+0:302 'r037' ( temp 4-component vector of float)
+0:302 Fraction ( temp 4-component vector of float)
0:302 'inF0' ( in 4-component vector of float)
-0:302 'inF1' ( in 4-component vector of float)
0:303 Sequence
0:303 move second child to first child ( temp 4-component vector of float)
0:303 'r039' ( temp 4-component vector of float)
@@ -4364,582 +4402,574 @@ gl_FragCoord origin is upper left
0:? 2.000000
0:? 3.000000
0:? 4.000000
-0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
-0:401 Function Parameters:
-0:401 'inF0' ( in 2X2 matrix of float)
-0:401 'inF1' ( in 2X2 matrix of float)
-0:401 'inF2' ( in 2X2 matrix of float)
+0:400 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
+0:400 Function Parameters:
+0:400 'inF0' ( in 2X2 matrix of float)
+0:400 'inF1' ( in 2X2 matrix of float)
+0:400 'inF2' ( in 2X2 matrix of float)
0:? Sequence
-0:403 Sequence
-0:403 move second child to first child ( temp bool)
-0:403 'r000' ( temp bool)
-0:403 all ( temp bool)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r001' ( temp 2X2 matrix of float)
-0:403 Absolute value ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 arc cosine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp bool)
-0:403 'r003' ( temp bool)
-0:403 any ( temp bool)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r004' ( temp 2X2 matrix of float)
-0:403 arc sine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r005' ( temp 2X2 matrix of float)
-0:403 arc tangent ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r006' ( temp 2X2 matrix of float)
-0:403 arc tangent ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r007' ( temp 2X2 matrix of float)
-0:403 Ceiling ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Test condition and select ( temp void)
-0:403 Condition
-0:403 any ( temp bool)
-0:403 Compare Less Than ( temp 2X2 matrix of bool)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Constant:
-0:403 0.000000
-0:403 0.000000
-0:403 0.000000
-0:403 0.000000
-0:403 true case
-0:403 Branch: Kill
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r008' ( temp 2X2 matrix of float)
-0:403 clamp ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 'inF2' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r009' ( temp 2X2 matrix of float)
-0:403 cosine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r010' ( temp 2X2 matrix of float)
-0:403 hyp. cosine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r011' ( temp 2X2 matrix of float)
-0:403 dPdx ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r012' ( temp 2X2 matrix of float)
-0:403 dPdxCoarse ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r013' ( temp 2X2 matrix of float)
-0:403 dPdxFine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r014' ( temp 2X2 matrix of float)
-0:403 dPdy ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r015' ( temp 2X2 matrix of float)
-0:403 dPdyCoarse ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r016' ( temp 2X2 matrix of float)
-0:403 dPdyFine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r017' ( temp 2X2 matrix of float)
-0:403 degrees ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp float)
-0:403 'r018' ( temp float)
-0:403 determinant ( temp float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r019' ( temp 2X2 matrix of float)
-0:403 exp ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'R020' ( temp 2X2 matrix of float)
-0:403 exp2 ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r021' ( temp 2X2 matrix of float)
-0:403 Floor ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r022' ( temp 2X2 matrix of float)
-0:403 mod ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r023' ( temp 2X2 matrix of float)
-0:403 Fraction ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r024' ( temp 2X2 matrix of float)
-0:403 frexp ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r025' ( temp 2X2 matrix of float)
-0:403 fwidth ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r026' ( temp 2X2 matrix of float)
-0:403 ldexp ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r026a' ( temp 2X2 matrix of float)
-0:403 mix ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 'inF2' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r027' ( temp 2X2 matrix of float)
-0:403 log ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r028' ( temp 2X2 matrix of float)
-0:403 matrix-scale ( temp 2X2 matrix of float)
-0:403 log2 ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Constant:
-0:403 0.301030
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r029' ( temp 2X2 matrix of float)
-0:403 log2 ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r030' ( temp 2X2 matrix of float)
-0:403 max ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r031' ( temp 2X2 matrix of float)
-0:403 min ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r032' ( temp 2X2 matrix of float)
-0:403 pow ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r033' ( temp 2X2 matrix of float)
-0:403 radians ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r034' ( temp 2X2 matrix of float)
-0:403 roundEven ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r035' ( temp 2X2 matrix of float)
-0:403 inverse sqrt ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r036' ( temp 2X2 matrix of float)
-0:403 clamp ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Constant:
-0:403 0.000000
-0:403 Constant:
-0:403 1.000000
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r037' ( temp 2X2 matrix of float)
-0:403 Sign ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r038' ( temp 2X2 matrix of float)
-0:403 sine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 sine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'inF2' ( in 2X2 matrix of float)
-0:403 cosine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r039' ( temp 2X2 matrix of float)
-0:403 hyp. sine ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r049' ( temp 2X2 matrix of float)
-0:403 smoothstep ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 'inF2' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r041' ( temp 2X2 matrix of float)
-0:403 sqrt ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r042' ( temp 2X2 matrix of float)
-0:403 step ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 'inF1' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r043' ( temp 2X2 matrix of float)
-0:403 tangent ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r044' ( temp 2X2 matrix of float)
-0:403 hyp. tangent ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 transpose ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:403 Sequence
-0:403 move second child to first child ( temp 2X2 matrix of float)
-0:403 'r046' ( temp 2X2 matrix of float)
-0:403 trunc ( temp 2X2 matrix of float)
-0:403 'inF0' ( in 2X2 matrix of float)
-0:406 Branch: Return with expression
+0:402 Sequence
+0:402 move second child to first child ( temp bool)
+0:402 'r000' ( temp bool)
+0:402 all ( temp bool)
+0:402 Convert float to bool ( temp 2X2 matrix of bool)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r001' ( temp 2X2 matrix of float)
+0:402 Absolute value ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 arc cosine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp bool)
+0:402 'r003' ( temp bool)
+0:402 any ( temp bool)
+0:402 Convert float to bool ( temp 2X2 matrix of bool)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r004' ( temp 2X2 matrix of float)
+0:402 arc sine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r005' ( temp 2X2 matrix of float)
+0:402 arc tangent ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r006' ( temp 2X2 matrix of float)
+0:402 arc tangent ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r007' ( temp 2X2 matrix of float)
+0:402 Ceiling ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Test condition and select ( temp void)
+0:402 Condition
+0:402 any ( temp bool)
+0:402 Compare Less Than ( temp 2X2 matrix of bool)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Constant:
+0:402 0.000000
+0:402 0.000000
+0:402 0.000000
+0:402 0.000000
+0:402 true case
+0:402 Branch: Kill
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r008' ( temp 2X2 matrix of float)
+0:402 clamp ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 'inF2' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r009' ( temp 2X2 matrix of float)
+0:402 cosine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r010' ( temp 2X2 matrix of float)
+0:402 hyp. cosine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r011' ( temp 2X2 matrix of float)
+0:402 dPdx ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r012' ( temp 2X2 matrix of float)
+0:402 dPdxCoarse ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r013' ( temp 2X2 matrix of float)
+0:402 dPdxFine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r014' ( temp 2X2 matrix of float)
+0:402 dPdy ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r015' ( temp 2X2 matrix of float)
+0:402 dPdyCoarse ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r016' ( temp 2X2 matrix of float)
+0:402 dPdyFine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r017' ( temp 2X2 matrix of float)
+0:402 degrees ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp float)
+0:402 'r018' ( temp float)
+0:402 determinant ( temp float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r019' ( temp 2X2 matrix of float)
+0:402 exp ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'R020' ( temp 2X2 matrix of float)
+0:402 exp2 ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r021' ( temp 2X2 matrix of float)
+0:402 Floor ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r022' ( temp 2X2 matrix of float)
+0:402 mod ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r023' ( temp 2X2 matrix of float)
+0:402 Fraction ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r025' ( temp 2X2 matrix of float)
+0:402 fwidth ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r026' ( temp 2X2 matrix of float)
+0:402 ldexp ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r026a' ( temp 2X2 matrix of float)
+0:402 mix ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 'inF2' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r027' ( temp 2X2 matrix of float)
+0:402 log ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r028' ( temp 2X2 matrix of float)
+0:402 matrix-scale ( temp 2X2 matrix of float)
+0:402 log2 ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Constant:
+0:402 0.301030
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r029' ( temp 2X2 matrix of float)
+0:402 log2 ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r030' ( temp 2X2 matrix of float)
+0:402 max ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r031' ( temp 2X2 matrix of float)
+0:402 min ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r032' ( temp 2X2 matrix of float)
+0:402 pow ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r033' ( temp 2X2 matrix of float)
+0:402 radians ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r034' ( temp 2X2 matrix of float)
+0:402 roundEven ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r035' ( temp 2X2 matrix of float)
+0:402 inverse sqrt ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r036' ( temp 2X2 matrix of float)
+0:402 clamp ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Constant:
+0:402 0.000000
+0:402 Constant:
+0:402 1.000000
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r037' ( temp 2X2 matrix of float)
+0:402 Sign ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r038' ( temp 2X2 matrix of float)
+0:402 sine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 sine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'inF2' ( in 2X2 matrix of float)
+0:402 cosine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r039' ( temp 2X2 matrix of float)
+0:402 hyp. sine ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r049' ( temp 2X2 matrix of float)
+0:402 smoothstep ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 'inF2' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r041' ( temp 2X2 matrix of float)
+0:402 sqrt ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r042' ( temp 2X2 matrix of float)
+0:402 step ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 'inF1' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r043' ( temp 2X2 matrix of float)
+0:402 tangent ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r044' ( temp 2X2 matrix of float)
+0:402 hyp. tangent ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 transpose ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:402 Sequence
+0:402 move second child to first child ( temp 2X2 matrix of float)
+0:402 'r046' ( temp 2X2 matrix of float)
+0:402 trunc ( temp 2X2 matrix of float)
+0:402 'inF0' ( in 2X2 matrix of float)
+0:405 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
-0:410 Function Parameters:
-0:410 'inF0' ( in 3X3 matrix of float)
-0:410 'inF1' ( in 3X3 matrix of float)
-0:410 'inF2' ( in 3X3 matrix of float)
+0:409 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
+0:409 Function Parameters:
+0:409 'inF0' ( in 3X3 matrix of float)
+0:409 'inF1' ( in 3X3 matrix of float)
+0:409 'inF2' ( in 3X3 matrix of float)
0:? Sequence
-0:412 Sequence
-0:412 move second child to first child ( temp bool)
-0:412 'r000' ( temp bool)
-0:412 all ( temp bool)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r001' ( temp 3X3 matrix of float)
-0:412 Absolute value ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 arc cosine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp bool)
-0:412 'r003' ( temp bool)
-0:412 any ( temp bool)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r004' ( temp 3X3 matrix of float)
-0:412 arc sine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r005' ( temp 3X3 matrix of float)
-0:412 arc tangent ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r006' ( temp 3X3 matrix of float)
-0:412 arc tangent ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r007' ( temp 3X3 matrix of float)
-0:412 Ceiling ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Test condition and select ( temp void)
-0:412 Condition
-0:412 any ( temp bool)
-0:412 Compare Less Than ( temp 3X3 matrix of bool)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Constant:
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 0.000000
-0:412 true case
-0:412 Branch: Kill
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r008' ( temp 3X3 matrix of float)
-0:412 clamp ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 'inF2' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r009' ( temp 3X3 matrix of float)
-0:412 cosine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r010' ( temp 3X3 matrix of float)
-0:412 hyp. cosine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r011' ( temp 3X3 matrix of float)
-0:412 dPdx ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r012' ( temp 3X3 matrix of float)
-0:412 dPdxCoarse ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r013' ( temp 3X3 matrix of float)
-0:412 dPdxFine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r014' ( temp 3X3 matrix of float)
-0:412 dPdy ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r015' ( temp 3X3 matrix of float)
-0:412 dPdyCoarse ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r016' ( temp 3X3 matrix of float)
-0:412 dPdyFine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r017' ( temp 3X3 matrix of float)
-0:412 degrees ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp float)
-0:412 'r018' ( temp float)
-0:412 determinant ( temp float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r019' ( temp 3X3 matrix of float)
-0:412 exp ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'R020' ( temp 3X3 matrix of float)
-0:412 exp2 ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r021' ( temp 3X3 matrix of float)
-0:412 Floor ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r022' ( temp 3X3 matrix of float)
-0:412 mod ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r023' ( temp 3X3 matrix of float)
-0:412 Fraction ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r024' ( temp 3X3 matrix of float)
-0:412 frexp ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r025' ( temp 3X3 matrix of float)
-0:412 fwidth ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r026' ( temp 3X3 matrix of float)
-0:412 ldexp ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r026a' ( temp 3X3 matrix of float)
-0:412 mix ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 'inF2' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r027' ( temp 3X3 matrix of float)
-0:412 log ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r028' ( temp 3X3 matrix of float)
-0:412 matrix-scale ( temp 3X3 matrix of float)
-0:412 log2 ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Constant:
-0:412 0.301030
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r029' ( temp 3X3 matrix of float)
-0:412 log2 ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r030' ( temp 3X3 matrix of float)
-0:412 max ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r031' ( temp 3X3 matrix of float)
-0:412 min ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r032' ( temp 3X3 matrix of float)
-0:412 pow ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r033' ( temp 3X3 matrix of float)
-0:412 radians ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r034' ( temp 3X3 matrix of float)
-0:412 roundEven ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r035' ( temp 3X3 matrix of float)
-0:412 inverse sqrt ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r036' ( temp 3X3 matrix of float)
-0:412 clamp ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Constant:
-0:412 0.000000
-0:412 Constant:
-0:412 1.000000
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r037' ( temp 3X3 matrix of float)
-0:412 Sign ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r038' ( temp 3X3 matrix of float)
-0:412 sine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 sine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'inF2' ( in 3X3 matrix of float)
-0:412 cosine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r039' ( temp 3X3 matrix of float)
-0:412 hyp. sine ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r049' ( temp 3X3 matrix of float)
-0:412 smoothstep ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 'inF2' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r041' ( temp 3X3 matrix of float)
-0:412 sqrt ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r042' ( temp 3X3 matrix of float)
-0:412 step ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 'inF1' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r043' ( temp 3X3 matrix of float)
-0:412 tangent ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r044' ( temp 3X3 matrix of float)
-0:412 hyp. tangent ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 transpose ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:412 Sequence
-0:412 move second child to first child ( temp 3X3 matrix of float)
-0:412 'r046' ( temp 3X3 matrix of float)
-0:412 trunc ( temp 3X3 matrix of float)
-0:412 'inF0' ( in 3X3 matrix of float)
-0:415 Branch: Return with expression
+0:411 Sequence
+0:411 move second child to first child ( temp bool)
+0:411 'r000' ( temp bool)
+0:411 all ( temp bool)
+0:411 Convert float to bool ( temp 3X3 matrix of bool)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r001' ( temp 3X3 matrix of float)
+0:411 Absolute value ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 arc cosine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp bool)
+0:411 'r003' ( temp bool)
+0:411 any ( temp bool)
+0:411 Convert float to bool ( temp 3X3 matrix of bool)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r004' ( temp 3X3 matrix of float)
+0:411 arc sine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r005' ( temp 3X3 matrix of float)
+0:411 arc tangent ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r006' ( temp 3X3 matrix of float)
+0:411 arc tangent ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r007' ( temp 3X3 matrix of float)
+0:411 Ceiling ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Test condition and select ( temp void)
+0:411 Condition
+0:411 any ( temp bool)
+0:411 Compare Less Than ( temp 3X3 matrix of bool)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Constant:
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 0.000000
+0:411 true case
+0:411 Branch: Kill
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r008' ( temp 3X3 matrix of float)
+0:411 clamp ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 'inF2' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r009' ( temp 3X3 matrix of float)
+0:411 cosine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r010' ( temp 3X3 matrix of float)
+0:411 hyp. cosine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r011' ( temp 3X3 matrix of float)
+0:411 dPdx ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r012' ( temp 3X3 matrix of float)
+0:411 dPdxCoarse ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r013' ( temp 3X3 matrix of float)
+0:411 dPdxFine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r014' ( temp 3X3 matrix of float)
+0:411 dPdy ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r015' ( temp 3X3 matrix of float)
+0:411 dPdyCoarse ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r016' ( temp 3X3 matrix of float)
+0:411 dPdyFine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r017' ( temp 3X3 matrix of float)
+0:411 degrees ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp float)
+0:411 'r018' ( temp float)
+0:411 determinant ( temp float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r019' ( temp 3X3 matrix of float)
+0:411 exp ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'R020' ( temp 3X3 matrix of float)
+0:411 exp2 ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r021' ( temp 3X3 matrix of float)
+0:411 Floor ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r022' ( temp 3X3 matrix of float)
+0:411 mod ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r023' ( temp 3X3 matrix of float)
+0:411 Fraction ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r025' ( temp 3X3 matrix of float)
+0:411 fwidth ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r026' ( temp 3X3 matrix of float)
+0:411 ldexp ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r026a' ( temp 3X3 matrix of float)
+0:411 mix ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 'inF2' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r027' ( temp 3X3 matrix of float)
+0:411 log ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r028' ( temp 3X3 matrix of float)
+0:411 matrix-scale ( temp 3X3 matrix of float)
+0:411 log2 ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Constant:
+0:411 0.301030
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r029' ( temp 3X3 matrix of float)
+0:411 log2 ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r030' ( temp 3X3 matrix of float)
+0:411 max ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r031' ( temp 3X3 matrix of float)
+0:411 min ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r032' ( temp 3X3 matrix of float)
+0:411 pow ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r033' ( temp 3X3 matrix of float)
+0:411 radians ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r034' ( temp 3X3 matrix of float)
+0:411 roundEven ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r035' ( temp 3X3 matrix of float)
+0:411 inverse sqrt ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r036' ( temp 3X3 matrix of float)
+0:411 clamp ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Constant:
+0:411 0.000000
+0:411 Constant:
+0:411 1.000000
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r037' ( temp 3X3 matrix of float)
+0:411 Sign ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r038' ( temp 3X3 matrix of float)
+0:411 sine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 sine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'inF2' ( in 3X3 matrix of float)
+0:411 cosine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r039' ( temp 3X3 matrix of float)
+0:411 hyp. sine ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r049' ( temp 3X3 matrix of float)
+0:411 smoothstep ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 'inF2' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r041' ( temp 3X3 matrix of float)
+0:411 sqrt ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r042' ( temp 3X3 matrix of float)
+0:411 step ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 'inF1' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r043' ( temp 3X3 matrix of float)
+0:411 tangent ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r044' ( temp 3X3 matrix of float)
+0:411 hyp. tangent ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 transpose ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:411 Sequence
+0:411 move second child to first child ( temp 3X3 matrix of float)
+0:411 'r046' ( temp 3X3 matrix of float)
+0:411 trunc ( temp 3X3 matrix of float)
+0:411 'inF0' ( in 3X3 matrix of float)
+0:414 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
@@ -4950,301 +4980,297 @@ gl_FragCoord origin is upper left
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
-0:419 Function Parameters:
-0:419 'inF0' ( in 4X4 matrix of float)
-0:419 'inF1' ( in 4X4 matrix of float)
-0:419 'inF2' ( in 4X4 matrix of float)
+0:418 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
+0:418 Function Parameters:
+0:418 'inF0' ( in 4X4 matrix of float)
+0:418 'inF1' ( in 4X4 matrix of float)
+0:418 'inF2' ( in 4X4 matrix of float)
0:? Sequence
-0:421 Sequence
-0:421 move second child to first child ( temp bool)
-0:421 'r000' ( temp bool)
-0:421 all ( temp bool)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r001' ( temp 4X4 matrix of float)
-0:421 Absolute value ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 arc cosine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp bool)
-0:421 'r003' ( temp bool)
-0:421 any ( temp bool)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r004' ( temp 4X4 matrix of float)
-0:421 arc sine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r005' ( temp 4X4 matrix of float)
-0:421 arc tangent ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r006' ( temp 4X4 matrix of float)
-0:421 arc tangent ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r007' ( temp 4X4 matrix of float)
-0:421 Ceiling ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Test condition and select ( temp void)
-0:421 Condition
-0:421 any ( temp bool)
-0:421 Compare Less Than ( temp 4X4 matrix of bool)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Constant:
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 0.000000
-0:421 true case
-0:421 Branch: Kill
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r008' ( temp 4X4 matrix of float)
-0:421 clamp ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 'inF2' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r009' ( temp 4X4 matrix of float)
-0:421 cosine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r010' ( temp 4X4 matrix of float)
-0:421 hyp. cosine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r011' ( temp 4X4 matrix of float)
-0:421 dPdx ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r012' ( temp 4X4 matrix of float)
-0:421 dPdxCoarse ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r013' ( temp 4X4 matrix of float)
-0:421 dPdxFine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r014' ( temp 4X4 matrix of float)
-0:421 dPdy ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r015' ( temp 4X4 matrix of float)
-0:421 dPdyCoarse ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r016' ( temp 4X4 matrix of float)
-0:421 dPdyFine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r017' ( temp 4X4 matrix of float)
-0:421 degrees ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp float)
-0:421 'r018' ( temp float)
-0:421 determinant ( temp float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r019' ( temp 4X4 matrix of float)
-0:421 exp ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'R020' ( temp 4X4 matrix of float)
-0:421 exp2 ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r021' ( temp 4X4 matrix of float)
-0:421 Floor ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r022' ( temp 4X4 matrix of float)
-0:421 mod ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r023' ( temp 4X4 matrix of float)
-0:421 Fraction ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r024' ( temp 4X4 matrix of float)
-0:421 frexp ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r025' ( temp 4X4 matrix of float)
-0:421 fwidth ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r026' ( temp 4X4 matrix of float)
-0:421 ldexp ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r026a' ( temp 4X4 matrix of float)
-0:421 mix ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 'inF2' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r027' ( temp 4X4 matrix of float)
-0:421 log ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r028' ( temp 4X4 matrix of float)
-0:421 matrix-scale ( temp 4X4 matrix of float)
-0:421 log2 ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Constant:
-0:421 0.301030
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r029' ( temp 4X4 matrix of float)
-0:421 log2 ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r030' ( temp 4X4 matrix of float)
-0:421 max ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r031' ( temp 4X4 matrix of float)
-0:421 min ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r032' ( temp 4X4 matrix of float)
-0:421 pow ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r033' ( temp 4X4 matrix of float)
-0:421 radians ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r034' ( temp 4X4 matrix of float)
-0:421 roundEven ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r035' ( temp 4X4 matrix of float)
-0:421 inverse sqrt ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r036' ( temp 4X4 matrix of float)
-0:421 clamp ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Constant:
-0:421 0.000000
-0:421 Constant:
-0:421 1.000000
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r037' ( temp 4X4 matrix of float)
-0:421 Sign ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r038' ( temp 4X4 matrix of float)
-0:421 sine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 sine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'inF2' ( in 4X4 matrix of float)
-0:421 cosine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r039' ( temp 4X4 matrix of float)
-0:421 hyp. sine ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r049' ( temp 4X4 matrix of float)
-0:421 smoothstep ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 'inF2' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r041' ( temp 4X4 matrix of float)
-0:421 sqrt ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r042' ( temp 4X4 matrix of float)
-0:421 step ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 'inF1' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r043' ( temp 4X4 matrix of float)
-0:421 tangent ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r044' ( temp 4X4 matrix of float)
-0:421 hyp. tangent ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 transpose ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:421 Sequence
-0:421 move second child to first child ( temp 4X4 matrix of float)
-0:421 'r046' ( temp 4X4 matrix of float)
-0:421 trunc ( temp 4X4 matrix of float)
-0:421 'inF0' ( in 4X4 matrix of float)
-0:424 Branch: Return with expression
+0:420 Sequence
+0:420 move second child to first child ( temp bool)
+0:420 'r000' ( temp bool)
+0:420 all ( temp bool)
+0:420 Convert float to bool ( temp 4X4 matrix of bool)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r001' ( temp 4X4 matrix of float)
+0:420 Absolute value ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 arc cosine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp bool)
+0:420 'r003' ( temp bool)
+0:420 any ( temp bool)
+0:420 Convert float to bool ( temp 4X4 matrix of bool)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r004' ( temp 4X4 matrix of float)
+0:420 arc sine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r005' ( temp 4X4 matrix of float)
+0:420 arc tangent ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r006' ( temp 4X4 matrix of float)
+0:420 arc tangent ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r007' ( temp 4X4 matrix of float)
+0:420 Ceiling ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Test condition and select ( temp void)
+0:420 Condition
+0:420 any ( temp bool)
+0:420 Compare Less Than ( temp 4X4 matrix of bool)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Constant:
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 0.000000
+0:420 true case
+0:420 Branch: Kill
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r008' ( temp 4X4 matrix of float)
+0:420 clamp ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 'inF2' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r009' ( temp 4X4 matrix of float)
+0:420 cosine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r010' ( temp 4X4 matrix of float)
+0:420 hyp. cosine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r011' ( temp 4X4 matrix of float)
+0:420 dPdx ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r012' ( temp 4X4 matrix of float)
+0:420 dPdxCoarse ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r013' ( temp 4X4 matrix of float)
+0:420 dPdxFine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r014' ( temp 4X4 matrix of float)
+0:420 dPdy ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r015' ( temp 4X4 matrix of float)
+0:420 dPdyCoarse ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r016' ( temp 4X4 matrix of float)
+0:420 dPdyFine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r017' ( temp 4X4 matrix of float)
+0:420 degrees ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp float)
+0:420 'r018' ( temp float)
+0:420 determinant ( temp float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r019' ( temp 4X4 matrix of float)
+0:420 exp ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'R020' ( temp 4X4 matrix of float)
+0:420 exp2 ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r021' ( temp 4X4 matrix of float)
+0:420 Floor ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r022' ( temp 4X4 matrix of float)
+0:420 mod ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r023' ( temp 4X4 matrix of float)
+0:420 Fraction ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r025' ( temp 4X4 matrix of float)
+0:420 fwidth ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r026' ( temp 4X4 matrix of float)
+0:420 ldexp ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r026a' ( temp 4X4 matrix of float)
+0:420 mix ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 'inF2' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r027' ( temp 4X4 matrix of float)
+0:420 log ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r028' ( temp 4X4 matrix of float)
+0:420 matrix-scale ( temp 4X4 matrix of float)
+0:420 log2 ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Constant:
+0:420 0.301030
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r029' ( temp 4X4 matrix of float)
+0:420 log2 ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r030' ( temp 4X4 matrix of float)
+0:420 max ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r031' ( temp 4X4 matrix of float)
+0:420 min ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r032' ( temp 4X4 matrix of float)
+0:420 pow ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r033' ( temp 4X4 matrix of float)
+0:420 radians ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r034' ( temp 4X4 matrix of float)
+0:420 roundEven ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r035' ( temp 4X4 matrix of float)
+0:420 inverse sqrt ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r036' ( temp 4X4 matrix of float)
+0:420 clamp ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Constant:
+0:420 0.000000
+0:420 Constant:
+0:420 1.000000
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r037' ( temp 4X4 matrix of float)
+0:420 Sign ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r038' ( temp 4X4 matrix of float)
+0:420 sine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 sine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'inF2' ( in 4X4 matrix of float)
+0:420 cosine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r039' ( temp 4X4 matrix of float)
+0:420 hyp. sine ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r049' ( temp 4X4 matrix of float)
+0:420 smoothstep ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 'inF2' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r041' ( temp 4X4 matrix of float)
+0:420 sqrt ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r042' ( temp 4X4 matrix of float)
+0:420 step ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 'inF1' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r043' ( temp 4X4 matrix of float)
+0:420 tangent ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r044' ( temp 4X4 matrix of float)
+0:420 hyp. tangent ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 transpose ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:420 Sequence
+0:420 move second child to first child ( temp 4X4 matrix of float)
+0:420 'r046' ( temp 4X4 matrix of float)
+0:420 trunc ( temp 4X4 matrix of float)
+0:420 'inF0' ( in 4X4 matrix of float)
+0:423 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
@@ -5262,334 +5288,334 @@ gl_FragCoord origin is upper left
0:? 4.000000
0:? 4.000000
0:? 4.000000
-0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
-0:442 Function Parameters:
-0:442 'inF0' ( in float)
-0:442 'inF1' ( in float)
-0:442 'inFV0' ( in 2-component vector of float)
-0:442 'inFV1' ( in 2-component vector of float)
-0:442 'inFM0' ( in 2X2 matrix of float)
-0:442 'inFM1' ( in 2X2 matrix of float)
+0:441 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
+0:441 Function Parameters:
+0:441 'inF0' ( in float)
+0:441 'inF1' ( in float)
+0:441 'inFV0' ( in 2-component vector of float)
+0:441 'inFV1' ( in 2-component vector of float)
+0:441 'inFM0' ( in 2X2 matrix of float)
+0:441 'inFM1' ( in 2X2 matrix of float)
0:? Sequence
-0:443 Sequence
-0:443 move second child to first child ( temp float)
-0:443 'r0' ( temp float)
-0:443 component-wise multiply ( temp float)
-0:443 'inF1' ( in float)
-0:443 'inF0' ( in float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2-component vector of float)
-0:443 'r1' ( temp 2-component vector of float)
-0:443 vector-scale ( temp 2-component vector of float)
-0:443 'inF0' ( in float)
-0:443 'inFV0' ( in 2-component vector of float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2-component vector of float)
-0:443 'r2' ( temp 2-component vector of float)
-0:443 vector-scale ( temp 2-component vector of float)
-0:443 'inFV0' ( in 2-component vector of float)
-0:443 'inF0' ( in float)
-0:443 Sequence
-0:443 move second child to first child ( temp float)
-0:443 'r3' ( temp float)
-0:443 dot-product ( temp float)
-0:443 'inFV0' ( in 2-component vector of float)
-0:443 'inFV1' ( in 2-component vector of float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2-component vector of float)
-0:443 'r4' ( temp 2-component vector of float)
-0:443 vector-times-matrix ( temp 2-component vector of float)
-0:443 'inFV0' ( in 2-component vector of float)
-0:443 'inFM0' ( in 2X2 matrix of float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2-component vector of float)
-0:443 'r5' ( temp 2-component vector of float)
-0:443 matrix-times-vector ( temp 2-component vector of float)
-0:443 'inFM0' ( in 2X2 matrix of float)
-0:443 'inFV0' ( in 2-component vector of float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2X2 matrix of float)
-0:443 'r6' ( temp 2X2 matrix of float)
-0:443 matrix-scale ( temp 2X2 matrix of float)
-0:443 'inF0' ( in float)
-0:443 'inFM0' ( in 2X2 matrix of float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2X2 matrix of float)
-0:443 'r7' ( temp 2X2 matrix of float)
-0:443 matrix-scale ( temp 2X2 matrix of float)
-0:443 'inFM0' ( in 2X2 matrix of float)
-0:443 'inF0' ( in float)
-0:443 Sequence
-0:443 move second child to first child ( temp 2X2 matrix of float)
-0:443 'r8' ( temp 2X2 matrix of float)
-0:443 matrix-multiply ( temp 2X2 matrix of float)
-0:443 'inFM1' ( in 2X2 matrix of float)
-0:443 'inFM0' ( in 2X2 matrix of float)
-0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
-0:449 Function Parameters:
-0:449 'inF0' ( in float)
-0:449 'inF1' ( in float)
-0:449 'inFV0' ( in 3-component vector of float)
-0:449 'inFV1' ( in 3-component vector of float)
-0:449 'inFM0' ( in 3X3 matrix of float)
-0:449 'inFM1' ( in 3X3 matrix of float)
+0:442 Sequence
+0:442 move second child to first child ( temp float)
+0:442 'r0' ( temp float)
+0:442 component-wise multiply ( temp float)
+0:442 'inF1' ( in float)
+0:442 'inF0' ( in float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2-component vector of float)
+0:442 'r1' ( temp 2-component vector of float)
+0:442 vector-scale ( temp 2-component vector of float)
+0:442 'inF0' ( in float)
+0:442 'inFV0' ( in 2-component vector of float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2-component vector of float)
+0:442 'r2' ( temp 2-component vector of float)
+0:442 vector-scale ( temp 2-component vector of float)
+0:442 'inFV0' ( in 2-component vector of float)
+0:442 'inF0' ( in float)
+0:442 Sequence
+0:442 move second child to first child ( temp float)
+0:442 'r3' ( temp float)
+0:442 dot-product ( temp float)
+0:442 'inFV0' ( in 2-component vector of float)
+0:442 'inFV1' ( in 2-component vector of float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2-component vector of float)
+0:442 'r4' ( temp 2-component vector of float)
+0:442 vector-times-matrix ( temp 2-component vector of float)
+0:442 'inFV0' ( in 2-component vector of float)
+0:442 'inFM0' ( in 2X2 matrix of float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2-component vector of float)
+0:442 'r5' ( temp 2-component vector of float)
+0:442 matrix-times-vector ( temp 2-component vector of float)
+0:442 'inFM0' ( in 2X2 matrix of float)
+0:442 'inFV0' ( in 2-component vector of float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2X2 matrix of float)
+0:442 'r6' ( temp 2X2 matrix of float)
+0:442 matrix-scale ( temp 2X2 matrix of float)
+0:442 'inF0' ( in float)
+0:442 'inFM0' ( in 2X2 matrix of float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2X2 matrix of float)
+0:442 'r7' ( temp 2X2 matrix of float)
+0:442 matrix-scale ( temp 2X2 matrix of float)
+0:442 'inFM0' ( in 2X2 matrix of float)
+0:442 'inF0' ( in float)
+0:442 Sequence
+0:442 move second child to first child ( temp 2X2 matrix of float)
+0:442 'r8' ( temp 2X2 matrix of float)
+0:442 matrix-multiply ( temp 2X2 matrix of float)
+0:442 'inFM1' ( in 2X2 matrix of float)
+0:442 'inFM0' ( in 2X2 matrix of float)
+0:448 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
+0:448 Function Parameters:
+0:448 'inF0' ( in float)
+0:448 'inF1' ( in float)
+0:448 'inFV0' ( in 3-component vector of float)
+0:448 'inFV1' ( in 3-component vector of float)
+0:448 'inFM0' ( in 3X3 matrix of float)
+0:448 'inFM1' ( in 3X3 matrix of float)
0:? Sequence
-0:450 Sequence
-0:450 move second child to first child ( temp float)
-0:450 'r0' ( temp float)
-0:450 component-wise multiply ( temp float)
-0:450 'inF1' ( in float)
-0:450 'inF0' ( in float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3-component vector of float)
-0:450 'r1' ( temp 3-component vector of float)
-0:450 vector-scale ( temp 3-component vector of float)
-0:450 'inF0' ( in float)
-0:450 'inFV0' ( in 3-component vector of float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3-component vector of float)
-0:450 'r2' ( temp 3-component vector of float)
-0:450 vector-scale ( temp 3-component vector of float)
-0:450 'inFV0' ( in 3-component vector of float)
-0:450 'inF0' ( in float)
-0:450 Sequence
-0:450 move second child to first child ( temp float)
-0:450 'r3' ( temp float)
-0:450 dot-product ( temp float)
-0:450 'inFV0' ( in 3-component vector of float)
-0:450 'inFV1' ( in 3-component vector of float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3-component vector of float)
-0:450 'r4' ( temp 3-component vector of float)
-0:450 vector-times-matrix ( temp 3-component vector of float)
-0:450 'inFV0' ( in 3-component vector of float)
-0:450 'inFM0' ( in 3X3 matrix of float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3-component vector of float)
-0:450 'r5' ( temp 3-component vector of float)
-0:450 matrix-times-vector ( temp 3-component vector of float)
-0:450 'inFM0' ( in 3X3 matrix of float)
-0:450 'inFV0' ( in 3-component vector of float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3X3 matrix of float)
-0:450 'r6' ( temp 3X3 matrix of float)
-0:450 matrix-scale ( temp 3X3 matrix of float)
-0:450 'inF0' ( in float)
-0:450 'inFM0' ( in 3X3 matrix of float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3X3 matrix of float)
-0:450 'r7' ( temp 3X3 matrix of float)
-0:450 matrix-scale ( temp 3X3 matrix of float)
-0:450 'inFM0' ( in 3X3 matrix of float)
-0:450 'inF0' ( in float)
-0:450 Sequence
-0:450 move second child to first child ( temp 3X3 matrix of float)
-0:450 'r8' ( temp 3X3 matrix of float)
-0:450 matrix-multiply ( temp 3X3 matrix of float)
-0:450 'inFM1' ( in 3X3 matrix of float)
-0:450 'inFM0' ( in 3X3 matrix of float)
-0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
-0:456 Function Parameters:
-0:456 'inF0' ( in float)
-0:456 'inF1' ( in float)
-0:456 'inFV0' ( in 4-component vector of float)
-0:456 'inFV1' ( in 4-component vector of float)
-0:456 'inFM0' ( in 4X4 matrix of float)
-0:456 'inFM1' ( in 4X4 matrix of float)
+0:449 Sequence
+0:449 move second child to first child ( temp float)
+0:449 'r0' ( temp float)
+0:449 component-wise multiply ( temp float)
+0:449 'inF1' ( in float)
+0:449 'inF0' ( in float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3-component vector of float)
+0:449 'r1' ( temp 3-component vector of float)
+0:449 vector-scale ( temp 3-component vector of float)
+0:449 'inF0' ( in float)
+0:449 'inFV0' ( in 3-component vector of float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3-component vector of float)
+0:449 'r2' ( temp 3-component vector of float)
+0:449 vector-scale ( temp 3-component vector of float)
+0:449 'inFV0' ( in 3-component vector of float)
+0:449 'inF0' ( in float)
+0:449 Sequence
+0:449 move second child to first child ( temp float)
+0:449 'r3' ( temp float)
+0:449 dot-product ( temp float)
+0:449 'inFV0' ( in 3-component vector of float)
+0:449 'inFV1' ( in 3-component vector of float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3-component vector of float)
+0:449 'r4' ( temp 3-component vector of float)
+0:449 vector-times-matrix ( temp 3-component vector of float)
+0:449 'inFV0' ( in 3-component vector of float)
+0:449 'inFM0' ( in 3X3 matrix of float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3-component vector of float)
+0:449 'r5' ( temp 3-component vector of float)
+0:449 matrix-times-vector ( temp 3-component vector of float)
+0:449 'inFM0' ( in 3X3 matrix of float)
+0:449 'inFV0' ( in 3-component vector of float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3X3 matrix of float)
+0:449 'r6' ( temp 3X3 matrix of float)
+0:449 matrix-scale ( temp 3X3 matrix of float)
+0:449 'inF0' ( in float)
+0:449 'inFM0' ( in 3X3 matrix of float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3X3 matrix of float)
+0:449 'r7' ( temp 3X3 matrix of float)
+0:449 matrix-scale ( temp 3X3 matrix of float)
+0:449 'inFM0' ( in 3X3 matrix of float)
+0:449 'inF0' ( in float)
+0:449 Sequence
+0:449 move second child to first child ( temp 3X3 matrix of float)
+0:449 'r8' ( temp 3X3 matrix of float)
+0:449 matrix-multiply ( temp 3X3 matrix of float)
+0:449 'inFM1' ( in 3X3 matrix of float)
+0:449 'inFM0' ( in 3X3 matrix of float)
+0:455 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
+0:455 Function Parameters:
+0:455 'inF0' ( in float)
+0:455 'inF1' ( in float)
+0:455 'inFV0' ( in 4-component vector of float)
+0:455 'inFV1' ( in 4-component vector of float)
+0:455 'inFM0' ( in 4X4 matrix of float)
+0:455 'inFM1' ( in 4X4 matrix of float)
0:? Sequence
-0:457 Sequence
-0:457 move second child to first child ( temp float)
-0:457 'r0' ( temp float)
-0:457 component-wise multiply ( temp float)
-0:457 'inF1' ( in float)
-0:457 'inF0' ( in float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4-component vector of float)
-0:457 'r1' ( temp 4-component vector of float)
-0:457 vector-scale ( temp 4-component vector of float)
-0:457 'inF0' ( in float)
-0:457 'inFV0' ( in 4-component vector of float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4-component vector of float)
-0:457 'r2' ( temp 4-component vector of float)
-0:457 vector-scale ( temp 4-component vector of float)
-0:457 'inFV0' ( in 4-component vector of float)
-0:457 'inF0' ( in float)
-0:457 Sequence
-0:457 move second child to first child ( temp float)
-0:457 'r3' ( temp float)
-0:457 dot-product ( temp float)
-0:457 'inFV0' ( in 4-component vector of float)
-0:457 'inFV1' ( in 4-component vector of float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4-component vector of float)
-0:457 'r4' ( temp 4-component vector of float)
-0:457 vector-times-matrix ( temp 4-component vector of float)
-0:457 'inFV0' ( in 4-component vector of float)
-0:457 'inFM0' ( in 4X4 matrix of float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4-component vector of float)
-0:457 'r5' ( temp 4-component vector of float)
-0:457 matrix-times-vector ( temp 4-component vector of float)
-0:457 'inFM0' ( in 4X4 matrix of float)
-0:457 'inFV0' ( in 4-component vector of float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4X4 matrix of float)
-0:457 'r6' ( temp 4X4 matrix of float)
-0:457 matrix-scale ( temp 4X4 matrix of float)
-0:457 'inF0' ( in float)
-0:457 'inFM0' ( in 4X4 matrix of float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4X4 matrix of float)
-0:457 'r7' ( temp 4X4 matrix of float)
-0:457 matrix-scale ( temp 4X4 matrix of float)
-0:457 'inFM0' ( in 4X4 matrix of float)
-0:457 'inF0' ( in float)
-0:457 Sequence
-0:457 move second child to first child ( temp 4X4 matrix of float)
-0:457 'r8' ( temp 4X4 matrix of float)
-0:457 matrix-multiply ( temp 4X4 matrix of float)
-0:457 'inFM1' ( in 4X4 matrix of float)
-0:457 'inFM0' ( in 4X4 matrix of float)
-0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
-0:466 Function Parameters:
-0:466 'inF0' ( in float)
-0:466 'inF1' ( in float)
-0:466 'inFV2' ( in 2-component vector of float)
-0:466 'inFV3' ( in 3-component vector of float)
-0:466 'inFM2x3' ( in 2X3 matrix of float)
-0:466 'inFM3x2' ( in 3X2 matrix of float)
-0:466 'inFM3x3' ( in 3X3 matrix of float)
-0:466 'inFM3x4' ( in 3X4 matrix of float)
-0:466 'inFM2x4' ( in 2X4 matrix of float)
+0:456 Sequence
+0:456 move second child to first child ( temp float)
+0:456 'r0' ( temp float)
+0:456 component-wise multiply ( temp float)
+0:456 'inF1' ( in float)
+0:456 'inF0' ( in float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4-component vector of float)
+0:456 'r1' ( temp 4-component vector of float)
+0:456 vector-scale ( temp 4-component vector of float)
+0:456 'inF0' ( in float)
+0:456 'inFV0' ( in 4-component vector of float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4-component vector of float)
+0:456 'r2' ( temp 4-component vector of float)
+0:456 vector-scale ( temp 4-component vector of float)
+0:456 'inFV0' ( in 4-component vector of float)
+0:456 'inF0' ( in float)
+0:456 Sequence
+0:456 move second child to first child ( temp float)
+0:456 'r3' ( temp float)
+0:456 dot-product ( temp float)
+0:456 'inFV0' ( in 4-component vector of float)
+0:456 'inFV1' ( in 4-component vector of float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4-component vector of float)
+0:456 'r4' ( temp 4-component vector of float)
+0:456 vector-times-matrix ( temp 4-component vector of float)
+0:456 'inFV0' ( in 4-component vector of float)
+0:456 'inFM0' ( in 4X4 matrix of float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4-component vector of float)
+0:456 'r5' ( temp 4-component vector of float)
+0:456 matrix-times-vector ( temp 4-component vector of float)
+0:456 'inFM0' ( in 4X4 matrix of float)
+0:456 'inFV0' ( in 4-component vector of float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4X4 matrix of float)
+0:456 'r6' ( temp 4X4 matrix of float)
+0:456 matrix-scale ( temp 4X4 matrix of float)
+0:456 'inF0' ( in float)
+0:456 'inFM0' ( in 4X4 matrix of float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4X4 matrix of float)
+0:456 'r7' ( temp 4X4 matrix of float)
+0:456 matrix-scale ( temp 4X4 matrix of float)
+0:456 'inFM0' ( in 4X4 matrix of float)
+0:456 'inF0' ( in float)
+0:456 Sequence
+0:456 move second child to first child ( temp 4X4 matrix of float)
+0:456 'r8' ( temp 4X4 matrix of float)
+0:456 matrix-multiply ( temp 4X4 matrix of float)
+0:456 'inFM1' ( in 4X4 matrix of float)
+0:456 'inFM0' ( in 4X4 matrix of float)
+0:465 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
+0:465 Function Parameters:
+0:465 'inF0' ( in float)
+0:465 'inF1' ( in float)
+0:465 'inFV2' ( in 2-component vector of float)
+0:465 'inFV3' ( in 3-component vector of float)
+0:465 'inFM2x3' ( in 2X3 matrix of float)
+0:465 'inFM3x2' ( in 3X2 matrix of float)
+0:465 'inFM3x3' ( in 3X3 matrix of float)
+0:465 'inFM3x4' ( in 3X4 matrix of float)
+0:465 'inFM2x4' ( in 2X4 matrix of float)
0:? Sequence
+0:466 Sequence
+0:466 move second child to first child ( temp float)
+0:466 'r00' ( temp float)
+0:466 component-wise multiply ( temp float)
+0:466 'inF1' ( in float)
+0:466 'inF0' ( in float)
0:467 Sequence
-0:467 move second child to first child ( temp float)
-0:467 'r00' ( temp float)
-0:467 component-wise multiply ( temp float)
-0:467 'inF1' ( in float)
+0:467 move second child to first child ( temp 2-component vector of float)
+0:467 'r01' ( temp 2-component vector of float)
+0:467 vector-scale ( temp 2-component vector of float)
0:467 'inF0' ( in float)
+0:467 'inFV2' ( in 2-component vector of float)
0:468 Sequence
-0:468 move second child to first child ( temp 2-component vector of float)
-0:468 'r01' ( temp 2-component vector of float)
-0:468 vector-scale ( temp 2-component vector of float)
+0:468 move second child to first child ( temp 3-component vector of float)
+0:468 'r02' ( temp 3-component vector of float)
+0:468 vector-scale ( temp 3-component vector of float)
0:468 'inF0' ( in float)
-0:468 'inFV2' ( in 2-component vector of float)
+0:468 'inFV3' ( in 3-component vector of float)
0:469 Sequence
-0:469 move second child to first child ( temp 3-component vector of float)
-0:469 'r02' ( temp 3-component vector of float)
-0:469 vector-scale ( temp 3-component vector of float)
+0:469 move second child to first child ( temp 2-component vector of float)
+0:469 'r03' ( temp 2-component vector of float)
+0:469 vector-scale ( temp 2-component vector of float)
+0:469 'inFV2' ( in 2-component vector of float)
0:469 'inF0' ( in float)
-0:469 'inFV3' ( in 3-component vector of float)
0:470 Sequence
-0:470 move second child to first child ( temp 2-component vector of float)
-0:470 'r03' ( temp 2-component vector of float)
-0:470 vector-scale ( temp 2-component vector of float)
-0:470 'inFV2' ( in 2-component vector of float)
+0:470 move second child to first child ( temp 3-component vector of float)
+0:470 'r04' ( temp 3-component vector of float)
+0:470 vector-scale ( temp 3-component vector of float)
+0:470 'inFV3' ( in 3-component vector of float)
0:470 'inF0' ( in float)
0:471 Sequence
-0:471 move second child to first child ( temp 3-component vector of float)
-0:471 'r04' ( temp 3-component vector of float)
-0:471 vector-scale ( temp 3-component vector of float)
-0:471 'inFV3' ( in 3-component vector of float)
-0:471 'inF0' ( in float)
+0:471 move second child to first child ( temp float)
+0:471 'r05' ( temp float)
+0:471 dot-product ( temp float)
+0:471 'inFV2' ( in 2-component vector of float)
+0:471 'inFV2' ( in 2-component vector of float)
0:472 Sequence
0:472 move second child to first child ( temp float)
-0:472 'r05' ( temp float)
+0:472 'r06' ( temp float)
0:472 dot-product ( temp float)
-0:472 'inFV2' ( in 2-component vector of float)
-0:472 'inFV2' ( in 2-component vector of float)
+0:472 'inFV3' ( in 3-component vector of float)
+0:472 'inFV3' ( in 3-component vector of float)
0:473 Sequence
-0:473 move second child to first child ( temp float)
-0:473 'r06' ( temp float)
-0:473 dot-product ( temp float)
-0:473 'inFV3' ( in 3-component vector of float)
-0:473 'inFV3' ( in 3-component vector of float)
+0:473 move second child to first child ( temp 3-component vector of float)
+0:473 'r07' ( temp 3-component vector of float)
+0:473 matrix-times-vector ( temp 3-component vector of float)
+0:473 'inFM2x3' ( in 2X3 matrix of float)
+0:473 'inFV2' ( in 2-component vector of float)
0:474 Sequence
-0:474 move second child to first child ( temp 3-component vector of float)
-0:474 'r07' ( temp 3-component vector of float)
-0:474 matrix-times-vector ( temp 3-component vector of float)
-0:474 'inFM2x3' ( in 2X3 matrix of float)
-0:474 'inFV2' ( in 2-component vector of float)
+0:474 move second child to first child ( temp 2-component vector of float)
+0:474 'r08' ( temp 2-component vector of float)
+0:474 matrix-times-vector ( temp 2-component vector of float)
+0:474 'inFM3x2' ( in 3X2 matrix of float)
+0:474 'inFV3' ( in 3-component vector of float)
0:475 Sequence
0:475 move second child to first child ( temp 2-component vector of float)
-0:475 'r08' ( temp 2-component vector of float)
-0:475 matrix-times-vector ( temp 2-component vector of float)
-0:475 'inFM3x2' ( in 3X2 matrix of float)
+0:475 'r09' ( temp 2-component vector of float)
+0:475 vector-times-matrix ( temp 2-component vector of float)
0:475 'inFV3' ( in 3-component vector of float)
+0:475 'inFM2x3' ( in 2X3 matrix of float)
0:476 Sequence
-0:476 move second child to first child ( temp 2-component vector of float)
-0:476 'r09' ( temp 2-component vector of float)
-0:476 vector-times-matrix ( temp 2-component vector of float)
-0:476 'inFV3' ( in 3-component vector of float)
-0:476 'inFM2x3' ( in 2X3 matrix of float)
+0:476 move second child to first child ( temp 3-component vector of float)
+0:476 'r10' ( temp 3-component vector of float)
+0:476 vector-times-matrix ( temp 3-component vector of float)
+0:476 'inFV2' ( in 2-component vector of float)
+0:476 'inFM3x2' ( in 3X2 matrix of float)
0:477 Sequence
-0:477 move second child to first child ( temp 3-component vector of float)
-0:477 'r10' ( temp 3-component vector of float)
-0:477 vector-times-matrix ( temp 3-component vector of float)
-0:477 'inFV2' ( in 2-component vector of float)
-0:477 'inFM3x2' ( in 3X2 matrix of float)
+0:477 move second child to first child ( temp 2X3 matrix of float)
+0:477 'r11' ( temp 2X3 matrix of float)
+0:477 matrix-scale ( temp 2X3 matrix of float)
+0:477 'inF0' ( in float)
+0:477 'inFM2x3' ( in 2X3 matrix of float)
0:478 Sequence
-0:478 move second child to first child ( temp 2X3 matrix of float)
-0:478 'r11' ( temp 2X3 matrix of float)
-0:478 matrix-scale ( temp 2X3 matrix of float)
+0:478 move second child to first child ( temp 3X2 matrix of float)
+0:478 'r12' ( temp 3X2 matrix of float)
+0:478 matrix-scale ( temp 3X2 matrix of float)
0:478 'inF0' ( in float)
-0:478 'inFM2x3' ( in 2X3 matrix of float)
+0:478 'inFM3x2' ( in 3X2 matrix of float)
0:479 Sequence
-0:479 move second child to first child ( temp 3X2 matrix of float)
-0:479 'r12' ( temp 3X2 matrix of float)
-0:479 matrix-scale ( temp 3X2 matrix of float)
-0:479 'inF0' ( in float)
+0:479 move second child to first child ( temp 2X2 matrix of float)
+0:479 'r13' ( temp 2X2 matrix of float)
+0:479 matrix-multiply ( temp 2X2 matrix of float)
0:479 'inFM3x2' ( in 3X2 matrix of float)
+0:479 'inFM2x3' ( in 2X3 matrix of float)
0:480 Sequence
-0:480 move second child to first child ( temp 2X2 matrix of float)
-0:480 'r13' ( temp 2X2 matrix of float)
-0:480 matrix-multiply ( temp 2X2 matrix of float)
-0:480 'inFM3x2' ( in 3X2 matrix of float)
+0:480 move second child to first child ( temp 2X3 matrix of float)
+0:480 'r14' ( temp 2X3 matrix of float)
+0:480 matrix-multiply ( temp 2X3 matrix of float)
+0:480 'inFM3x3' ( in 3X3 matrix of float)
0:480 'inFM2x3' ( in 2X3 matrix of float)
0:481 Sequence
-0:481 move second child to first child ( temp 2X3 matrix of float)
-0:481 'r14' ( temp 2X3 matrix of float)
-0:481 matrix-multiply ( temp 2X3 matrix of float)
-0:481 'inFM3x3' ( in 3X3 matrix of float)
+0:481 move second child to first child ( temp 2X4 matrix of float)
+0:481 'r15' ( temp 2X4 matrix of float)
+0:481 matrix-multiply ( temp 2X4 matrix of float)
+0:481 'inFM3x4' ( in 3X4 matrix of float)
0:481 'inFM2x3' ( in 2X3 matrix of float)
0:482 Sequence
-0:482 move second child to first child ( temp 2X4 matrix of float)
-0:482 'r15' ( temp 2X4 matrix of float)
-0:482 matrix-multiply ( temp 2X4 matrix of float)
-0:482 'inFM3x4' ( in 3X4 matrix of float)
-0:482 'inFM2x3' ( in 2X3 matrix of float)
-0:483 Sequence
-0:483 move second child to first child ( temp 3X4 matrix of float)
-0:483 'r16' ( temp 3X4 matrix of float)
-0:483 matrix-multiply ( temp 3X4 matrix of float)
-0:483 'inFM2x4' ( in 2X4 matrix of float)
-0:483 'inFM3x2' ( in 3X2 matrix of float)
-0:489 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
-0:489 Function Parameters:
+0:482 move second child to first child ( temp 3X4 matrix of float)
+0:482 'r16' ( temp 3X4 matrix of float)
+0:482 matrix-multiply ( temp 3X4 matrix of float)
+0:482 'inFM2x4' ( in 2X4 matrix of float)
+0:482 'inFM3x2' ( in 3X2 matrix of float)
+0:488 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
+0:488 Function Parameters:
0:? Sequence
-0:491 move second child to first child ( temp 4-component vector of float)
-0:491 color: direct index for structure ( temp 4-component vector of float)
-0:491 'ps_output' ( temp structure{ temp 4-component vector of float color})
-0:491 Constant:
-0:491 0 (const int)
-0:491 Constant:
-0:491 1.000000
-0:491 1.000000
-0:491 1.000000
-0:491 1.000000
-0:492 Branch: Return with expression
-0:492 'ps_output' ( temp structure{ temp 4-component vector of float color})
-0:489 Function Definition: main( ( temp void)
-0:489 Function Parameters:
+0:490 move second child to first child ( temp 4-component vector of float)
+0:490 color: direct index for structure ( temp 4-component vector of float)
+0:490 'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:490 Constant:
+0:490 0 (const int)
+0:490 Constant:
+0:490 1.000000
+0:490 1.000000
+0:490 1.000000
+0:490 1.000000
+0:491 Branch: Return with expression
+0:491 'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:488 Function Definition: main( ( temp void)
+0:488 Function Parameters:
0:? Sequence
-0:489 Sequence
-0:489 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
-0:489 color: direct index for structure ( temp 4-component vector of float)
-0:489 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
-0:489 Constant:
-0:489 0 (const int)
+0:488 Sequence
+0:488 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
+0:488 color: direct index for structure ( temp 4-component vector of float)
+0:488 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
+0:488 Constant:
+0:488 0 (const int)
0:? Linker Objects
0:? 'gs_ua' ( shared uint)
0:? 'gs_ub' ( shared uint)
@@ -5603,18 +5629,19 @@ gl_FragCoord origin is upper left
0:? 'gs_ua4' ( shared 4-component vector of uint)
0:? 'gs_ub4' ( shared 4-component vector of uint)
0:? 'gs_uc4' ( shared 4-component vector of uint)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 1833
+// Generated by (magic number): 80002
+// Id's are bound by 1832
Capability Shader
Capability DerivativeControl
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 1814
+ EntryPoint Fragment 4 "main" 1813
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 16 "PixelShaderFunctionS(f1;f1;f1;u1;u1;"
Name 11 "inF0"
@@ -5691,376 +5718,362 @@ gl_FragCoord origin is upper left
MemberName 131(PS_OUTPUT) 0 "color"
Name 133 "@main("
Name 137 "r000"
- Name 140 "r001"
- Name 143 "r002"
- Name 146 "r003"
- Name 149 "r004"
- Name 154 "r005"
- Name 157 "r006"
- Name 160 "r007"
- Name 163 "r009"
- Name 166 "r010"
- Name 170 "r011"
- Name 173 "r012"
- Name 184 "r014"
- Name 187 "r015"
- Name 190 "r016"
- Name 193 "r017"
- Name 196 "r018"
- Name 199 "r019"
- Name 202 "r020"
- Name 205 "r021"
- Name 208 "r022"
- Name 211 "r023"
- Name 214 "r027"
- Name 217 "r028"
- Name 220 "r029"
- Name 223 "r030"
- Name 226 "r031"
- Name 229 "r033"
- Name 233 "r034"
- Name 236 "r035"
- Name 238 "ResType"
- Name 242 "r036"
- Name 245 "r037"
- Name 248 "r038"
- Name 251 "r039"
- Name 255 "r039a"
- Name 260 "r040"
- Name 263 "r041"
- Name 268 "r042"
- Name 271 "r043"
- Name 275 "r044"
- Name 279 "r045"
- Name 283 "r046"
- Name 286 "r047"
- Name 290 "r048"
- Name 294 "r049"
- Name 297 "r050"
- Name 300 "r051"
- Name 303 "r052"
- Name 306 "r053"
- Name 313 "r055"
- Name 316 "r056"
- Name 321 "r057"
- Name 324 "r058"
- Name 328 "r059"
- Name 331 "r060"
- Name 334 "r061"
- Name 341 "r000"
- Name 344 "r001"
- Name 347 "r002"
- Name 350 "r003"
- Name 353 "r004"
- Name 358 "r005"
- Name 361 "r006"
- Name 364 "r007"
- Name 367 "r009"
- Name 370 "r010"
- Name 374 "r011"
- Name 377 "r012"
- Name 390 "r013"
- Name 393 "r015"
- Name 396 "r016"
- Name 400 "r017"
- Name 403 "r018"
- Name 406 "r019"
- Name 409 "r020"
- Name 412 "r021"
- Name 415 "r022"
- Name 418 "r023"
- Name 421 "r026"
- Name 425 "r027"
- Name 429 "r028"
- Name 432 "r029"
- Name 435 "r030"
- Name 440 "r031"
- Name 445 "r032"
- Name 447 "r033"
- Name 450 "r035"
- Name 454 "r036"
- Name 457 "r037"
- Name 459 "ResType"
- Name 463 "r038"
- Name 467 "r039"
- Name 470 "r040"
- Name 473 "r041"
- Name 477 "r039a"
- Name 482 "r042"
- Name 485 "r043"
- Name 488 "r044"
- Name 492 "r045"
- Name 495 "r046"
- Name 499 "r047"
- Name 503 "r048"
- Name 506 "r049"
- Name 510 "r050"
- Name 513 "r051"
- Name 517 "r052"
- Name 521 "r053"
- Name 526 "r054"
- Name 531 "r055"
- Name 534 "r056"
- Name 537 "r057"
- Name 542 "r058"
- Name 545 "r059"
- Name 552 "r060"
- Name 555 "r061"
- Name 560 "r062"
- Name 563 "r063"
- Name 567 "r064"
- Name 570 "r065"
- Name 573 "r066"
- Name 579 "r000"
- Name 582 "r001"
- Name 585 "r002"
- Name 588 "r003"
- Name 591 "r004"
- Name 596 "r005"
- Name 599 "r006"
- Name 602 "r007"
- Name 605 "r009"
- Name 608 "r010"
- Name 612 "r011"
- Name 615 "r012"
- Name 628 "r013"
- Name 631 "r014"
- Name 634 "r015"
- Name 639 "r016"
- Name 643 "r017"
- Name 646 "r018"
- Name 649 "r019"
- Name 652 "r020"
- Name 655 "r021"
- Name 658 "r022"
- Name 661 "r023"
- Name 664 "r024"
- Name 668 "r025"
- Name 672 "r029"
- Name 675 "r030"
- Name 678 "r031"
- Name 683 "r032"
- Name 687 "r033"
- Name 689 "r034"
- Name 692 "r036"
- Name 696 "r037"
- Name 699 "r038"
- Name 701 "ResType"
- Name 705 "r039"
- Name 709 "r040"
- Name 712 "r041"
- Name 715 "r042"
- Name 719 "r039a"
- Name 724 "r039b"
- Name 730 "r043"
- Name 733 "r044"
- Name 736 "r045"
- Name 740 "r046"
- Name 743 "r047"
- Name 747 "r048"
- Name 751 "r049"
- Name 754 "r050"
- Name 758 "r051"
- Name 761 "r052"
- Name 765 "r053"
- Name 769 "r054"
- Name 773 "r055"
- Name 776 "r056"
- Name 779 "r057"
- Name 782 "r058"
- Name 787 "r059"
- Name 790 "r060"
- Name 797 "r061"
- Name 800 "r062"
- Name 805 "r063"
- Name 808 "r064"
- Name 812 "r065"
- Name 815 "r066"
- Name 818 "r067"
- Name 825 "r000"
- Name 828 "r001"
- Name 831 "r002"
- Name 834 "r003"
- Name 837 "r004"
- Name 842 "r005"
- Name 845 "r006"
- Name 848 "r007"
- Name 851 "r009"
- Name 854 "r010"
- Name 858 "r011"
- Name 861 "r012"
- Name 874 "r013"
- Name 877 "r014"
- Name 880 "r015"
- Name 883 "r016"
- Name 886 "r017"
- Name 889 "r018"
- Name 892 "r019"
- Name 895 "r020"
- Name 898 "r021"
- Name 901 "r022"
- Name 904 "r023"
- Name 908 "r024"
- Name 912 "r025"
- Name 923 "r029"
- Name 926 "r030"
- Name 929 "r031"
- Name 934 "r032"
- Name 939 "r033"
- Name 941 "r034"
- Name 944 "r036"
- Name 948 "r037"
- Name 951 "r038"
- Name 953 "ResType"
- Name 957 "r039"
- Name 961 "r040"
- Name 964 "r041"
- Name 967 "r042"
- Name 971 "r039a"
- Name 976 "r043"
- Name 979 "r044"
- Name 982 "r045"
- Name 986 "r046"
- Name 989 "r047"
- Name 993 "r048"
- Name 997 "r049"
- Name 1000 "r050"
- Name 1004 "r051"
- Name 1007 "r052"
- Name 1011 "r053"
- Name 1015 "r054"
- Name 1019 "r055"
- Name 1022 "r056"
- Name 1025 "r057"
- Name 1028 "r058"
- Name 1033 "r059"
- Name 1036 "r060"
- Name 1043 "r061"
- Name 1046 "r062"
- Name 1051 "r063"
- Name 1054 "r064"
- Name 1058 "r065"
- Name 1061 "r066"
- Name 1064 "r067"
- Name 1071 "r000"
- Name 1074 "r001"
- Name 1079 "r003"
- Name 1082 "r004"
- Name 1085 "r005"
- Name 1088 "r006"
- Name 1092 "r007"
- Name 1103 "r008"
- Name 1108 "r009"
- Name 1111 "r010"
- Name 1114 "r011"
- Name 1117 "r012"
- Name 1120 "r013"
- Name 1123 "r014"
- Name 1126 "r015"
- Name 1129 "r016"
- Name 1132 "r017"
- Name 1135 "r018"
- Name 1138 "r019"
- Name 1141 "R020"
- Name 1144 "r021"
- Name 1147 "r022"
- Name 1157 "r023"
- Name 1160 "r024"
- Name 1162 "ResType"
- Name 1166 "r025"
- Name 1169 "r026"
- Name 1173 "r026a"
- Name 1178 "r027"
- Name 1181 "r028"
- Name 1185 "r029"
- Name 1188 "r030"
- Name 1192 "r031"
- Name 1196 "r032"
- Name 1200 "r033"
- Name 1203 "r034"
- Name 1206 "r035"
- Name 1209 "r036"
- Name 1214 "r037"
- Name 1217 "r038"
- Name 1224 "r039"
- Name 1227 "r049"
- Name 1232 "r041"
- Name 1235 "r042"
- Name 1239 "r043"
- Name 1242 "r044"
- Name 1247 "r046"
- Name 1254 "r000"
- Name 1257 "r001"
- Name 1262 "r003"
- Name 1265 "r004"
- Name 1268 "r005"
- Name 1271 "r006"
- Name 1275 "r007"
- Name 1286 "r008"
- Name 1291 "r009"
- Name 1294 "r010"
- Name 1297 "r011"
- Name 1300 "r012"
- Name 1303 "r013"
- Name 1306 "r014"
- Name 1309 "r015"
- Name 1312 "r016"
- Name 1315 "r017"
- Name 1318 "r018"
- Name 1321 "r019"
- Name 1324 "R020"
- Name 1327 "r021"
- Name 1330 "r022"
- Name 1343 "r023"
- Name 1346 "r024"
- Name 1348 "ResType"
- Name 1352 "r025"
- Name 1355 "r026"
- Name 1359 "r026a"
- Name 1364 "r027"
- Name 1367 "r028"
- Name 1371 "r029"
- Name 1374 "r030"
- Name 1378 "r031"
- Name 1382 "r032"
- Name 1386 "r033"
- Name 1389 "r034"
- Name 1392 "r035"
- Name 1395 "r036"
- Name 1400 "r037"
- Name 1403 "r038"
- Name 1410 "r039"
- Name 1413 "r049"
- Name 1418 "r041"
- Name 1421 "r042"
- Name 1425 "r043"
- Name 1428 "r044"
- Name 1433 "r046"
- Name 1440 "r000"
- Name 1443 "r001"
- Name 1448 "r003"
- Name 1451 "r004"
- Name 1454 "r005"
- Name 1457 "r006"
- Name 1461 "r007"
- Name 1472 "r008"
- Name 1477 "r009"
- Name 1480 "r010"
- Name 1483 "r011"
- Name 1486 "r012"
- Name 1489 "r013"
- Name 1492 "r014"
- Name 1495 "r015"
- Name 1498 "r016"
- Name 1501 "r017"
- Name 1504 "r018"
- Name 1507 "r019"
- Name 1510 "R020"
- Name 1513 "r021"
- Name 1516 "r022"
- Name 1532 "r023"
- Name 1535 "r024"
- Name 1537 "ResType"
+ Name 142 "r001"
+ Name 145 "r002"
+ Name 148 "r003"
+ Name 152 "r004"
+ Name 157 "r005"
+ Name 160 "r006"
+ Name 163 "r007"
+ Name 166 "r009"
+ Name 169 "r010"
+ Name 173 "r011"
+ Name 176 "r012"
+ Name 192 "r014"
+ Name 195 "r015"
+ Name 198 "r016"
+ Name 201 "r017"
+ Name 204 "r018"
+ Name 207 "r019"
+ Name 210 "r020"
+ Name 213 "r021"
+ Name 216 "r022"
+ Name 219 "r023"
+ Name 222 "r027"
+ Name 225 "r028"
+ Name 228 "r029"
+ Name 231 "r030"
+ Name 234 "r031"
+ Name 237 "r033"
+ Name 241 "r034"
+ Name 244 "r036"
+ Name 247 "r037"
+ Name 250 "r038"
+ Name 253 "r039"
+ Name 257 "r039a"
+ Name 262 "r040"
+ Name 265 "r041"
+ Name 270 "r042"
+ Name 273 "r043"
+ Name 277 "r044"
+ Name 281 "r045"
+ Name 285 "r046"
+ Name 288 "r047"
+ Name 292 "r048"
+ Name 296 "r049"
+ Name 299 "r050"
+ Name 302 "r051"
+ Name 305 "r052"
+ Name 308 "r053"
+ Name 315 "r055"
+ Name 318 "r056"
+ Name 323 "r057"
+ Name 326 "r058"
+ Name 330 "r059"
+ Name 333 "r060"
+ Name 336 "r061"
+ Name 343 "r000"
+ Name 349 "r001"
+ Name 352 "r002"
+ Name 355 "r003"
+ Name 359 "r004"
+ Name 364 "r005"
+ Name 367 "r006"
+ Name 370 "r007"
+ Name 373 "r009"
+ Name 376 "r010"
+ Name 380 "r011"
+ Name 383 "r012"
+ Name 402 "r013"
+ Name 405 "r015"
+ Name 408 "r016"
+ Name 412 "r017"
+ Name 415 "r018"
+ Name 418 "r019"
+ Name 421 "r020"
+ Name 424 "r021"
+ Name 427 "r022"
+ Name 430 "r023"
+ Name 433 "r026"
+ Name 437 "r027"
+ Name 441 "r028"
+ Name 444 "r029"
+ Name 447 "r030"
+ Name 452 "r031"
+ Name 457 "r032"
+ Name 459 "r033"
+ Name 462 "r035"
+ Name 466 "r036"
+ Name 469 "r038"
+ Name 473 "r039"
+ Name 476 "r040"
+ Name 479 "r041"
+ Name 483 "r039a"
+ Name 488 "r042"
+ Name 491 "r043"
+ Name 494 "r044"
+ Name 498 "r045"
+ Name 501 "r046"
+ Name 505 "r047"
+ Name 509 "r048"
+ Name 512 "r049"
+ Name 516 "r050"
+ Name 519 "r051"
+ Name 523 "r052"
+ Name 527 "r053"
+ Name 532 "r054"
+ Name 537 "r055"
+ Name 540 "r056"
+ Name 543 "r057"
+ Name 548 "r058"
+ Name 551 "r059"
+ Name 558 "r060"
+ Name 561 "r061"
+ Name 566 "r062"
+ Name 569 "r063"
+ Name 573 "r064"
+ Name 576 "r065"
+ Name 579 "r066"
+ Name 585 "r000"
+ Name 591 "r001"
+ Name 594 "r002"
+ Name 597 "r003"
+ Name 601 "r004"
+ Name 606 "r005"
+ Name 609 "r006"
+ Name 612 "r007"
+ Name 615 "r009"
+ Name 618 "r010"
+ Name 622 "r011"
+ Name 625 "r012"
+ Name 643 "r013"
+ Name 646 "r014"
+ Name 649 "r015"
+ Name 654 "r016"
+ Name 658 "r017"
+ Name 661 "r018"
+ Name 664 "r019"
+ Name 667 "r020"
+ Name 670 "r021"
+ Name 673 "r022"
+ Name 676 "r023"
+ Name 679 "r024"
+ Name 683 "r025"
+ Name 687 "r029"
+ Name 690 "r030"
+ Name 693 "r031"
+ Name 698 "r032"
+ Name 702 "r033"
+ Name 704 "r034"
+ Name 707 "r036"
+ Name 711 "r037"
+ Name 714 "r039"
+ Name 718 "r040"
+ Name 721 "r041"
+ Name 724 "r042"
+ Name 728 "r039a"
+ Name 733 "r039b"
+ Name 739 "r043"
+ Name 742 "r044"
+ Name 745 "r045"
+ Name 749 "r046"
+ Name 752 "r047"
+ Name 756 "r048"
+ Name 760 "r049"
+ Name 763 "r050"
+ Name 767 "r051"
+ Name 770 "r052"
+ Name 774 "r053"
+ Name 778 "r054"
+ Name 782 "r055"
+ Name 785 "r056"
+ Name 788 "r057"
+ Name 791 "r058"
+ Name 796 "r059"
+ Name 799 "r060"
+ Name 806 "r061"
+ Name 809 "r062"
+ Name 814 "r063"
+ Name 817 "r064"
+ Name 821 "r065"
+ Name 824 "r066"
+ Name 827 "r067"
+ Name 834 "r000"
+ Name 840 "r001"
+ Name 843 "r002"
+ Name 846 "r003"
+ Name 850 "r004"
+ Name 855 "r005"
+ Name 858 "r006"
+ Name 861 "r007"
+ Name 864 "r009"
+ Name 867 "r010"
+ Name 871 "r011"
+ Name 874 "r012"
+ Name 892 "r013"
+ Name 895 "r014"
+ Name 898 "r015"
+ Name 901 "r016"
+ Name 904 "r017"
+ Name 907 "r018"
+ Name 910 "r019"
+ Name 913 "r020"
+ Name 916 "r021"
+ Name 919 "r022"
+ Name 922 "r023"
+ Name 926 "r024"
+ Name 930 "r025"
+ Name 941 "r029"
+ Name 944 "r030"
+ Name 947 "r031"
+ Name 952 "r032"
+ Name 957 "r033"
+ Name 959 "r034"
+ Name 962 "r036"
+ Name 966 "r037"
+ Name 969 "r039"
+ Name 973 "r040"
+ Name 976 "r041"
+ Name 979 "r042"
+ Name 983 "r039a"
+ Name 988 "r043"
+ Name 991 "r044"
+ Name 994 "r045"
+ Name 998 "r046"
+ Name 1001 "r047"
+ Name 1005 "r048"
+ Name 1009 "r049"
+ Name 1012 "r050"
+ Name 1016 "r051"
+ Name 1019 "r052"
+ Name 1023 "r053"
+ Name 1027 "r054"
+ Name 1031 "r055"
+ Name 1034 "r056"
+ Name 1037 "r057"
+ Name 1040 "r058"
+ Name 1045 "r059"
+ Name 1048 "r060"
+ Name 1055 "r061"
+ Name 1058 "r062"
+ Name 1063 "r063"
+ Name 1066 "r064"
+ Name 1070 "r065"
+ Name 1073 "r066"
+ Name 1076 "r067"
+ Name 1083 "r000"
+ Name 1088 "r001"
+ Name 1093 "r003"
+ Name 1097 "r004"
+ Name 1100 "r005"
+ Name 1103 "r006"
+ Name 1107 "r007"
+ Name 1117 "r008"
+ Name 1122 "r009"
+ Name 1125 "r010"
+ Name 1128 "r011"
+ Name 1131 "r012"
+ Name 1134 "r013"
+ Name 1137 "r014"
+ Name 1140 "r015"
+ Name 1143 "r016"
+ Name 1146 "r017"
+ Name 1149 "r018"
+ Name 1152 "r019"
+ Name 1155 "R020"
+ Name 1158 "r021"
+ Name 1161 "r022"
+ Name 1171 "r023"
+ Name 1174 "r025"
+ Name 1177 "r026"
+ Name 1181 "r026a"
+ Name 1186 "r027"
+ Name 1189 "r028"
+ Name 1193 "r029"
+ Name 1196 "r030"
+ Name 1200 "r031"
+ Name 1204 "r032"
+ Name 1208 "r033"
+ Name 1211 "r034"
+ Name 1214 "r035"
+ Name 1217 "r036"
+ Name 1222 "r037"
+ Name 1225 "r038"
+ Name 1232 "r039"
+ Name 1235 "r049"
+ Name 1240 "r041"
+ Name 1243 "r042"
+ Name 1247 "r043"
+ Name 1250 "r044"
+ Name 1255 "r046"
+ Name 1262 "r000"
+ Name 1267 "r001"
+ Name 1272 "r003"
+ Name 1276 "r004"
+ Name 1279 "r005"
+ Name 1282 "r006"
+ Name 1286 "r007"
+ Name 1296 "r008"
+ Name 1301 "r009"
+ Name 1304 "r010"
+ Name 1307 "r011"
+ Name 1310 "r012"
+ Name 1313 "r013"
+ Name 1316 "r014"
+ Name 1319 "r015"
+ Name 1322 "r016"
+ Name 1325 "r017"
+ Name 1328 "r018"
+ Name 1331 "r019"
+ Name 1334 "R020"
+ Name 1337 "r021"
+ Name 1340 "r022"
+ Name 1353 "r023"
+ Name 1356 "r025"
+ Name 1359 "r026"
+ Name 1363 "r026a"
+ Name 1368 "r027"
+ Name 1371 "r028"
+ Name 1375 "r029"
+ Name 1378 "r030"
+ Name 1382 "r031"
+ Name 1386 "r032"
+ Name 1390 "r033"
+ Name 1393 "r034"
+ Name 1396 "r035"
+ Name 1399 "r036"
+ Name 1404 "r037"
+ Name 1407 "r038"
+ Name 1414 "r039"
+ Name 1417 "r049"
+ Name 1422 "r041"
+ Name 1425 "r042"
+ Name 1429 "r043"
+ Name 1432 "r044"
+ Name 1437 "r046"
+ Name 1444 "r000"
+ Name 1449 "r001"
+ Name 1454 "r003"
+ Name 1458 "r004"
+ Name 1461 "r005"
+ Name 1464 "r006"
+ Name 1468 "r007"
+ Name 1478 "r008"
+ Name 1483 "r009"
+ Name 1486 "r010"
+ Name 1489 "r011"
+ Name 1492 "r012"
+ Name 1495 "r013"
+ Name 1498 "r014"
+ Name 1501 "r015"
+ Name 1504 "r016"
+ Name 1507 "r017"
+ Name 1510 "r018"
+ Name 1513 "r019"
+ Name 1516 "R020"
+ Name 1519 "r021"
+ Name 1522 "r022"
+ Name 1538 "r023"
Name 1541 "r025"
Name 1544 "r026"
Name 1548 "r026a"
@@ -6128,20 +6141,20 @@ gl_FragCoord origin is upper left
Name 1797 "r15"
Name 1801 "r16"
Name 1806 "ps_output"
- Name 1814 "color"
- Name 1818 "gs_ua"
- Name 1819 "gs_ub"
- Name 1820 "gs_uc"
- Name 1822 "gs_ua2"
- Name 1823 "gs_ub2"
- Name 1824 "gs_uc2"
- Name 1826 "gs_ua3"
- Name 1827 "gs_ub3"
- Name 1828 "gs_uc3"
- Name 1830 "gs_ua4"
- Name 1831 "gs_ub4"
- Name 1832 "gs_uc4"
- Decorate 1814(color) Location 0
+ Name 1813 "@entryPointOutput.color"
+ Name 1817 "gs_ua"
+ Name 1818 "gs_ub"
+ Name 1819 "gs_uc"
+ Name 1821 "gs_ua2"
+ Name 1822 "gs_ub2"
+ Name 1823 "gs_uc2"
+ Name 1825 "gs_ua3"
+ Name 1826 "gs_ub3"
+ Name 1827 "gs_uc3"
+ Name 1829 "gs_ua4"
+ Name 1830 "gs_ub4"
+ Name 1831 "gs_uc4"
+ Decorate 1813(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -6190,99 +6203,96 @@ gl_FragCoord origin is upper left
132: TypeFunction 131(PS_OUTPUT)
135: TypeBool
136: TypePointer Function 135(bool)
- 152: TypeInt 32 1
- 153: TypePointer Function 152(int)
- 179: 6(float) Constant 0
- 191: 152(int) Constant 7
- 238(ResType): TypeStruct 6(float) 152(int)
- 266: 6(float) Constant 1050288283
- 287: 6(float) Constant 1065353216
- 291: 152(int) Constant 2
- 356: TypeVector 152(int) 2
- 357: TypePointer Function 356(ivec2)
- 383: 24(fvec2) ConstantComposite 179 179
- 384: TypeVector 135(bool) 2
- 397: 152(int) Constant 3
- 398: 356(ivec2) ConstantComposite 191 397
- 441: 8(int) Constant 7
- 442: 8(int) Constant 8
- 443: 26(ivec2) ConstantComposite 441 442
- 459(ResType): TypeStruct 24(fvec2) 356(ivec2)
- 466: TypePointer Function 384(bvec2)
- 524: 6(float) Constant 1073741824
- 527: 8(int) Constant 1
- 528: 8(int) Constant 2
- 529: 26(ivec2) ConstantComposite 527 528
- 576: 24(fvec2) ConstantComposite 287 524
- 594: TypeVector 152(int) 3
- 595: TypePointer Function 594(ivec3)
- 621: 36(fvec3) ConstantComposite 179 179 179
- 622: TypeVector 135(bool) 3
- 635: 8(int) Constant 3
- 636: 8(int) Constant 5
- 637: 38(ivec3) ConstantComposite 441 635 636
- 684: 8(int) Constant 4
- 685: 38(ivec3) ConstantComposite 528 635 684
- 701(ResType): TypeStruct 36(fvec3) 594(ivec3)
- 708: TypePointer Function 622(bvec3)
- 727: 6(float) Constant 1050253722
- 774: 38(ivec3) ConstantComposite 527 528 635
- 821: 6(float) Constant 1077936128
- 822: 36(fvec3) ConstantComposite 287 524 821
- 840: TypeVector 152(int) 4
- 841: TypePointer Function 840(ivec4)
- 867: 48(fvec4) ConstantComposite 179 179 179 179
- 868: TypeVector 135(bool) 4
- 881: 50(ivec4) ConstantComposite 441 635 636 528
- 935: 8(int) Constant 9
- 936: 8(int) Constant 10
- 937: 50(ivec4) ConstantComposite 441 442 935 936
- 953(ResType): TypeStruct 48(fvec4) 840(ivec4)
- 960: TypePointer Function 868(bvec4)
- 1020: 50(ivec4) ConstantComposite 527 528 635 684
- 1067: 6(float) Constant 1082130432
- 1068: 48(fvec4) ConstantComposite 287 524 821 1067
- 1096: 60 ConstantComposite 383 383
- 1097: TypeMatrix 384(bvec2) 2
- 1162(ResType): TypeStruct 60 356(ivec2)
- 1250: 24(fvec2) ConstantComposite 524 524
- 1251: 60 ConstantComposite 1250 1250
- 1279: 68 ConstantComposite 621 621 621
- 1280: TypeMatrix 622(bvec3) 3
- 1348(ResType): TypeStruct 68 594(ivec3)
- 1436: 36(fvec3) ConstantComposite 821 821 821
- 1437: 68 ConstantComposite 1436 1436 1436
- 1465: 76 ConstantComposite 867 867 867 867
- 1466: TypeMatrix 868(bvec4) 4
- 1537(ResType): TypeStruct 76 840(ivec4)
- 1625: 48(fvec4) ConstantComposite 1067 1067 1067 1067
+ 139: 6(float) Constant 0
+ 155: TypeInt 32 1
+ 156: TypePointer Function 155(int)
+ 187: 155(int) Constant 0
+ 199: 155(int) Constant 7
+ 268: 6(float) Constant 1050288283
+ 289: 6(float) Constant 1065353216
+ 293: 155(int) Constant 2
+ 345: TypeVector 135(bool) 2
+ 346: 24(fvec2) ConstantComposite 139 139
+ 362: TypeVector 155(int) 2
+ 363: TypePointer Function 362(ivec2)
+ 395: 8(int) Constant 0
+ 396: 26(ivec2) ConstantComposite 395 395
+ 409: 155(int) Constant 3
+ 410: 362(ivec2) ConstantComposite 199 409
+ 453: 8(int) Constant 7
+ 454: 8(int) Constant 8
+ 455: 26(ivec2) ConstantComposite 453 454
+ 472: TypePointer Function 345(bvec2)
+ 530: 6(float) Constant 1073741824
+ 533: 8(int) Constant 1
+ 534: 8(int) Constant 2
+ 535: 26(ivec2) ConstantComposite 533 534
+ 582: 24(fvec2) ConstantComposite 289 530
+ 587: TypeVector 135(bool) 3
+ 588: 36(fvec3) ConstantComposite 139 139 139
+ 604: TypeVector 155(int) 3
+ 605: TypePointer Function 604(ivec3)
+ 637: 38(ivec3) ConstantComposite 395 395 395
+ 650: 8(int) Constant 3
+ 651: 8(int) Constant 5
+ 652: 38(ivec3) ConstantComposite 453 650 651
+ 699: 8(int) Constant 4
+ 700: 38(ivec3) ConstantComposite 534 650 699
+ 717: TypePointer Function 587(bvec3)
+ 736: 6(float) Constant 1050253722
+ 783: 38(ivec3) ConstantComposite 533 534 650
+ 830: 6(float) Constant 1077936128
+ 831: 36(fvec3) ConstantComposite 289 530 830
+ 836: TypeVector 135(bool) 4
+ 837: 48(fvec4) ConstantComposite 139 139 139 139
+ 853: TypeVector 155(int) 4
+ 854: TypePointer Function 853(ivec4)
+ 886: 50(ivec4) ConstantComposite 395 395 395 395
+ 899: 50(ivec4) ConstantComposite 453 650 651 534
+ 953: 8(int) Constant 9
+ 954: 8(int) Constant 10
+ 955: 50(ivec4) ConstantComposite 453 454 953 954
+ 972: TypePointer Function 836(bvec4)
+ 1032: 50(ivec4) ConstantComposite 533 534 650 699
+ 1079: 6(float) Constant 1082130432
+ 1080: 48(fvec4) ConstantComposite 289 530 830 1079
+ 1085: TypeMatrix 345(bvec2) 2
+ 1111: 60 ConstantComposite 346 346
+ 1258: 24(fvec2) ConstantComposite 530 530
+ 1259: 60 ConstantComposite 1258 1258
+ 1264: TypeMatrix 587(bvec3) 3
+ 1290: 68 ConstantComposite 588 588 588
+ 1440: 36(fvec3) ConstantComposite 830 830 830
+ 1441: 68 ConstantComposite 1440 1440 1440
+ 1446: TypeMatrix 836(bvec4) 4
+ 1472: 76 ConstantComposite 837 837 837 837
+ 1625: 48(fvec4) ConstantComposite 1079 1079 1079 1079
1626: 76 ConstantComposite 1625 1625 1625 1625
1805: TypePointer Function 131(PS_OUTPUT)
- 1807: 152(int) Constant 0
- 1808: 48(fvec4) ConstantComposite 287 287 287 287
- 1813: TypePointer Output 48(fvec4)
- 1814(color): 1813(ptr) Variable Output
- 1817: TypePointer Workgroup 8(int)
- 1818(gs_ua): 1817(ptr) Variable Workgroup
- 1819(gs_ub): 1817(ptr) Variable Workgroup
- 1820(gs_uc): 1817(ptr) Variable Workgroup
- 1821: TypePointer Workgroup 26(ivec2)
- 1822(gs_ua2): 1821(ptr) Variable Workgroup
- 1823(gs_ub2): 1821(ptr) Variable Workgroup
- 1824(gs_uc2): 1821(ptr) Variable Workgroup
- 1825: TypePointer Workgroup 38(ivec3)
- 1826(gs_ua3): 1825(ptr) Variable Workgroup
- 1827(gs_ub3): 1825(ptr) Variable Workgroup
- 1828(gs_uc3): 1825(ptr) Variable Workgroup
- 1829: TypePointer Workgroup 50(ivec4)
- 1830(gs_ua4): 1829(ptr) Variable Workgroup
- 1831(gs_ub4): 1829(ptr) Variable Workgroup
- 1832(gs_uc4): 1829(ptr) Variable Workgroup
+ 1807: 48(fvec4) ConstantComposite 289 289 289 289
+ 1812: TypePointer Output 48(fvec4)
+1813(@entryPointOutput.color): 1812(ptr) Variable Output
+ 1816: TypePointer Workgroup 8(int)
+ 1817(gs_ua): 1816(ptr) Variable Workgroup
+ 1818(gs_ub): 1816(ptr) Variable Workgroup
+ 1819(gs_uc): 1816(ptr) Variable Workgroup
+ 1820: TypePointer Workgroup 26(ivec2)
+ 1821(gs_ua2): 1820(ptr) Variable Workgroup
+ 1822(gs_ub2): 1820(ptr) Variable Workgroup
+ 1823(gs_uc2): 1820(ptr) Variable Workgroup
+ 1824: TypePointer Workgroup 38(ivec3)
+ 1825(gs_ua3): 1824(ptr) Variable Workgroup
+ 1826(gs_ub3): 1824(ptr) Variable Workgroup
+ 1827(gs_uc3): 1824(ptr) Variable Workgroup
+ 1828: TypePointer Workgroup 50(ivec4)
+ 1829(gs_ua4): 1828(ptr) Variable Workgroup
+ 1830(gs_ub4): 1828(ptr) Variable Workgroup
+ 1831(gs_uc4): 1828(ptr) Variable Workgroup
4(main): 2 Function None 3
5: Label
- 1815:131(PS_OUTPUT) FunctionCall 133(@main()
- 1816: 48(fvec4) CompositeExtract 1815 0
- Store 1814(color) 1816
+ 1814:131(PS_OUTPUT) FunctionCall 133(@main()
+ 1815: 48(fvec4) CompositeExtract 1814 0
+ Store 1813(@entryPointOutput.color) 1815
Return
FunctionEnd
16(PixelShaderFunctionS(f1;f1;f1;u1;u1;): 6(float) Function None 10
@@ -6293,266 +6303,268 @@ gl_FragCoord origin is upper left
15(inU1): 9(ptr) FunctionParameter
17: Label
137(r000): 136(ptr) Variable Function
- 140(r001): 7(ptr) Variable Function
- 143(r002): 7(ptr) Variable Function
- 146(r003): 136(ptr) Variable Function
- 149(r004): 7(ptr) Variable Function
- 154(r005): 153(ptr) Variable Function
- 157(r006): 9(ptr) Variable Function
- 160(r007): 7(ptr) Variable Function
- 163(r009): 7(ptr) Variable Function
- 166(r010): 7(ptr) Variable Function
- 170(r011): 7(ptr) Variable Function
- 173(r012): 7(ptr) Variable Function
- 184(r014): 7(ptr) Variable Function
- 187(r015): 7(ptr) Variable Function
- 190(r016): 153(ptr) Variable Function
- 193(r017): 7(ptr) Variable Function
- 196(r018): 7(ptr) Variable Function
- 199(r019): 7(ptr) Variable Function
- 202(r020): 7(ptr) Variable Function
- 205(r021): 7(ptr) Variable Function
- 208(r022): 7(ptr) Variable Function
- 211(r023): 7(ptr) Variable Function
- 214(r027): 7(ptr) Variable Function
- 217(r028): 7(ptr) Variable Function
- 220(r029): 9(ptr) Variable Function
- 223(r030): 9(ptr) Variable Function
- 226(r031): 7(ptr) Variable Function
- 229(r033): 7(ptr) Variable Function
- 233(r034): 7(ptr) Variable Function
- 236(r035): 7(ptr) Variable Function
- 242(r036): 7(ptr) Variable Function
- 245(r037): 136(ptr) Variable Function
- 248(r038): 136(ptr) Variable Function
- 251(r039): 7(ptr) Variable Function
- 255(r039a): 7(ptr) Variable Function
- 260(r040): 7(ptr) Variable Function
- 263(r041): 7(ptr) Variable Function
- 268(r042): 7(ptr) Variable Function
- 271(r043): 7(ptr) Variable Function
- 275(r044): 7(ptr) Variable Function
- 279(r045): 7(ptr) Variable Function
- 283(r046): 7(ptr) Variable Function
- 286(r047): 7(ptr) Variable Function
- 290(r048): 9(ptr) Variable Function
- 294(r049): 7(ptr) Variable Function
- 297(r050): 7(ptr) Variable Function
- 300(r051): 7(ptr) Variable Function
- 303(r052): 7(ptr) Variable Function
- 306(r053): 7(ptr) Variable Function
- 313(r055): 7(ptr) Variable Function
- 316(r056): 7(ptr) Variable Function
- 321(r057): 7(ptr) Variable Function
- 324(r058): 7(ptr) Variable Function
- 328(r059): 7(ptr) Variable Function
- 331(r060): 7(ptr) Variable Function
- 334(r061): 7(ptr) Variable Function
+ 142(r001): 7(ptr) Variable Function
+ 145(r002): 7(ptr) Variable Function
+ 148(r003): 136(ptr) Variable Function
+ 152(r004): 7(ptr) Variable Function
+ 157(r005): 156(ptr) Variable Function
+ 160(r006): 9(ptr) Variable Function
+ 163(r007): 7(ptr) Variable Function
+ 166(r009): 7(ptr) Variable Function
+ 169(r010): 7(ptr) Variable Function
+ 173(r011): 7(ptr) Variable Function
+ 176(r012): 7(ptr) Variable Function
+ 192(r014): 7(ptr) Variable Function
+ 195(r015): 7(ptr) Variable Function
+ 198(r016): 156(ptr) Variable Function
+ 201(r017): 7(ptr) Variable Function
+ 204(r018): 7(ptr) Variable Function
+ 207(r019): 7(ptr) Variable Function
+ 210(r020): 7(ptr) Variable Function
+ 213(r021): 7(ptr) Variable Function
+ 216(r022): 7(ptr) Variable Function
+ 219(r023): 7(ptr) Variable Function
+ 222(r027): 7(ptr) Variable Function
+ 225(r028): 7(ptr) Variable Function
+ 228(r029): 9(ptr) Variable Function
+ 231(r030): 9(ptr) Variable Function
+ 234(r031): 7(ptr) Variable Function
+ 237(r033): 7(ptr) Variable Function
+ 241(r034): 7(ptr) Variable Function
+ 244(r036): 7(ptr) Variable Function
+ 247(r037): 136(ptr) Variable Function
+ 250(r038): 136(ptr) Variable Function
+ 253(r039): 7(ptr) Variable Function
+ 257(r039a): 7(ptr) Variable Function
+ 262(r040): 7(ptr) Variable Function
+ 265(r041): 7(ptr) Variable Function
+ 270(r042): 7(ptr) Variable Function
+ 273(r043): 7(ptr) Variable Function
+ 277(r044): 7(ptr) Variable Function
+ 281(r045): 7(ptr) Variable Function
+ 285(r046): 7(ptr) Variable Function
+ 288(r047): 7(ptr) Variable Function
+ 292(r048): 9(ptr) Variable Function
+ 296(r049): 7(ptr) Variable Function
+ 299(r050): 7(ptr) Variable Function
+ 302(r051): 7(ptr) Variable Function
+ 305(r052): 7(ptr) Variable Function
+ 308(r053): 7(ptr) Variable Function
+ 315(r055): 7(ptr) Variable Function
+ 318(r056): 7(ptr) Variable Function
+ 323(r057): 7(ptr) Variable Function
+ 326(r058): 7(ptr) Variable Function
+ 330(r059): 7(ptr) Variable Function
+ 333(r060): 7(ptr) Variable Function
+ 336(r061): 7(ptr) Variable Function
138: 6(float) Load 11(inF0)
- 139: 135(bool) All 138
- Store 137(r000) 139
- 141: 6(float) Load 11(inF0)
- 142: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 141
- Store 140(r001) 142
- 144: 6(float) Load 11(inF0)
- 145: 6(float) ExtInst 1(GLSL.std.450) 17(Acos) 144
- Store 143(r002) 145
- 147: 6(float) Load 11(inF0)
- 148: 135(bool) Any 147
- Store 146(r003) 148
- 150: 6(float) Load 11(inF0)
- 151: 6(float) ExtInst 1(GLSL.std.450) 16(Asin) 150
- Store 149(r004) 151
- 155: 6(float) Load 11(inF0)
- 156: 152(int) Bitcast 155
- Store 154(r005) 156
+ 140: 135(bool) FOrdNotEqual 138 139
+ 141: 135(bool) All 140
+ Store 137(r000) 141
+ 143: 6(float) Load 11(inF0)
+ 144: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 143
+ Store 142(r001) 144
+ 146: 6(float) Load 11(inF0)
+ 147: 6(float) ExtInst 1(GLSL.std.450) 17(Acos) 146
+ Store 145(r002) 147
+ 149: 6(float) Load 11(inF0)
+ 150: 135(bool) FOrdNotEqual 149 139
+ 151: 135(bool) Any 150
+ Store 148(r003) 151
+ 153: 6(float) Load 11(inF0)
+ 154: 6(float) ExtInst 1(GLSL.std.450) 16(Asin) 153
+ Store 152(r004) 154
158: 6(float) Load 11(inF0)
- 159: 8(int) Bitcast 158
- Store 157(r006) 159
- 161: 8(int) Load 14(inU0)
- 162: 6(float) Bitcast 161
- Store 160(r007) 162
- 164: 6(float) Load 11(inF0)
- 165: 6(float) ExtInst 1(GLSL.std.450) 18(Atan) 164
- Store 163(r009) 165
+ 159: 155(int) Bitcast 158
+ Store 157(r005) 159
+ 161: 6(float) Load 11(inF0)
+ 162: 8(int) Bitcast 161
+ Store 160(r006) 162
+ 164: 8(int) Load 14(inU0)
+ 165: 6(float) Bitcast 164
+ Store 163(r007) 165
167: 6(float) Load 11(inF0)
- 168: 6(float) Load 12(inF1)
- 169: 6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 167 168
- Store 166(r010) 169
- 171: 6(float) Load 11(inF0)
- 172: 6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 171
- Store 170(r011) 172
+ 168: 6(float) ExtInst 1(GLSL.std.450) 18(Atan) 167
+ Store 166(r009) 168
+ 170: 6(float) Load 11(inF0)
+ 171: 6(float) Load 12(inF1)
+ 172: 6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 170 171
+ Store 169(r010) 172
174: 6(float) Load 11(inF0)
- 175: 6(float) Load 12(inF1)
- 176: 6(float) Load 13(inF2)
- 177: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 174 175 176
- Store 173(r012) 177
- 178: 6(float) Load 11(inF0)
- 180: 135(bool) FOrdLessThan 178 179
- SelectionMerge 182 None
- BranchConditional 180 181 182
- 181: Label
+ 175: 6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 174
+ Store 173(r011) 175
+ 177: 6(float) Load 11(inF0)
+ 178: 6(float) Load 12(inF1)
+ 179: 6(float) Load 13(inF2)
+ 180: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 177 178 179
+ Store 176(r012) 180
+ 181: 6(float) Load 11(inF0)
+ 182: 135(bool) FOrdLessThan 181 139
+ SelectionMerge 184 None
+ BranchConditional 182 183 184
+ 183: Label
Kill
- 182: Label
- 185: 6(float) Load 11(inF0)
- 186: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 185
- Store 184(r014) 186
- 188: 6(float) Load 11(inF0)
- 189: 6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 188
- Store 187(r015) 189
- 192: 152(int) BitCount 191
- Store 190(r016) 192
- 194: 6(float) Load 11(inF0)
- 195: 6(float) DPdx 194
- Store 193(r017) 195
- 197: 6(float) Load 11(inF0)
- 198: 6(float) DPdxCoarse 197
- Store 196(r018) 198
- 200: 6(float) Load 11(inF0)
- 201: 6(float) DPdxFine 200
- Store 199(r019) 201
- 203: 6(float) Load 11(inF0)
- 204: 6(float) DPdy 203
- Store 202(r020) 204
- 206: 6(float) Load 11(inF0)
- 207: 6(float) DPdyCoarse 206
- Store 205(r021) 207
- 209: 6(float) Load 11(inF0)
- 210: 6(float) DPdyFine 209
- Store 208(r022) 210
- 212: 6(float) Load 11(inF0)
- 213: 6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 212
- Store 211(r023) 213
- 215: 6(float) Load 11(inF0)
- 216: 6(float) ExtInst 1(GLSL.std.450) 27(Exp) 215
- Store 214(r027) 216
- 218: 6(float) Load 11(inF0)
- 219: 6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 218
- Store 217(r028) 219
- 221: 152(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 191
- 222: 8(int) Bitcast 221
- Store 220(r029) 222
- 224: 152(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 191
- 225: 8(int) Bitcast 224
- Store 223(r030) 225
- 227: 6(float) Load 11(inF0)
- 228: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 227
- Store 226(r031) 228
- 230: 6(float) Load 11(inF0)
- 231: 6(float) Load 12(inF1)
- 232: 6(float) FMod 230 231
- Store 229(r033) 232
- 234: 6(float) Load 11(inF0)
- 235: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 234
- Store 233(r034) 235
- 237: 6(float) Load 11(inF0)
- 239:238(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 237
- 240: 152(int) CompositeExtract 239 1
- Store 12(inF1) 240
- 241: 6(float) CompositeExtract 239 0
- Store 236(r035) 241
- 243: 6(float) Load 11(inF0)
- 244: 6(float) Fwidth 243
- Store 242(r036) 244
- 246: 6(float) Load 11(inF0)
- 247: 135(bool) IsInf 246
- Store 245(r037) 247
- 249: 6(float) Load 11(inF0)
- 250: 135(bool) IsNan 249
- Store 248(r038) 250
- 252: 6(float) Load 11(inF0)
- 253: 6(float) Load 12(inF1)
- 254: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 252 253
- Store 251(r039) 254
- 256: 6(float) Load 11(inF0)
- 257: 6(float) Load 12(inF1)
- 258: 6(float) Load 13(inF2)
- 259: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 256 257 258
- Store 255(r039a) 259
- 261: 6(float) Load 11(inF0)
- 262: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 261
- Store 260(r040) 262
- 264: 6(float) Load 11(inF0)
- 265: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 264
- 267: 6(float) FMul 265 266
- Store 263(r041) 267
- 269: 6(float) Load 11(inF0)
- 270: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 269
- Store 268(r042) 270
- 272: 6(float) Load 11(inF0)
- 273: 6(float) Load 12(inF1)
- 274: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 272 273
- Store 271(r043) 274
- 276: 6(float) Load 11(inF0)
- 277: 6(float) Load 12(inF1)
- 278: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 276 277
- Store 275(r044) 278
- 280: 6(float) Load 11(inF0)
- 281: 6(float) Load 12(inF1)
- 282: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 280 281
- Store 279(r045) 282
- 284: 6(float) Load 11(inF0)
- 285: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 284
- Store 283(r046) 285
- 288: 6(float) Load 11(inF0)
- 289: 6(float) FDiv 287 288
- Store 286(r047) 289
- 292: 152(int) BitReverse 291
- 293: 8(int) Bitcast 292
- Store 290(r048) 293
- 295: 6(float) Load 11(inF0)
- 296: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 295
- Store 294(r049) 296
- 298: 6(float) Load 11(inF0)
- 299: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 298
- Store 297(r050) 299
- 301: 6(float) Load 11(inF0)
- 302: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 301 179 287
- Store 300(r051) 302
- 304: 6(float) Load 11(inF0)
- 305: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 304
- Store 303(r052) 305
- 307: 6(float) Load 11(inF0)
- 308: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 307
- Store 306(r053) 308
+ 184: Label
+ 186: 155(int) Load 157(r005)
+ 188: 135(bool) SLessThan 186 187
+ SelectionMerge 190 None
+ BranchConditional 188 189 190
+ 189: Label
+ Kill
+ 190: Label
+ 193: 6(float) Load 11(inF0)
+ 194: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 193
+ Store 192(r014) 194
+ 196: 6(float) Load 11(inF0)
+ 197: 6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 196
+ Store 195(r015) 197
+ 200: 155(int) BitCount 199
+ Store 198(r016) 200
+ 202: 6(float) Load 11(inF0)
+ 203: 6(float) DPdx 202
+ Store 201(r017) 203
+ 205: 6(float) Load 11(inF0)
+ 206: 6(float) DPdxCoarse 205
+ Store 204(r018) 206
+ 208: 6(float) Load 11(inF0)
+ 209: 6(float) DPdxFine 208
+ Store 207(r019) 209
+ 211: 6(float) Load 11(inF0)
+ 212: 6(float) DPdy 211
+ Store 210(r020) 212
+ 214: 6(float) Load 11(inF0)
+ 215: 6(float) DPdyCoarse 214
+ Store 213(r021) 215
+ 217: 6(float) Load 11(inF0)
+ 218: 6(float) DPdyFine 217
+ Store 216(r022) 218
+ 220: 6(float) Load 11(inF0)
+ 221: 6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 220
+ Store 219(r023) 221
+ 223: 6(float) Load 11(inF0)
+ 224: 6(float) ExtInst 1(GLSL.std.450) 27(Exp) 223
+ Store 222(r027) 224
+ 226: 6(float) Load 11(inF0)
+ 227: 6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 226
+ Store 225(r028) 227
+ 229: 155(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 199
+ 230: 8(int) Bitcast 229
+ Store 228(r029) 230
+ 232: 155(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 199
+ 233: 8(int) Bitcast 232
+ Store 231(r030) 233
+ 235: 6(float) Load 11(inF0)
+ 236: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 235
+ Store 234(r031) 236
+ 238: 6(float) Load 11(inF0)
+ 239: 6(float) Load 12(inF1)
+ 240: 6(float) FMod 238 239
+ Store 237(r033) 240
+ 242: 6(float) Load 11(inF0)
+ 243: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 242
+ Store 241(r034) 243
+ 245: 6(float) Load 11(inF0)
+ 246: 6(float) Fwidth 245
+ Store 244(r036) 246
+ 248: 6(float) Load 11(inF0)
+ 249: 135(bool) IsInf 248
+ Store 247(r037) 249
+ 251: 6(float) Load 11(inF0)
+ 252: 135(bool) IsNan 251
+ Store 250(r038) 252
+ 254: 6(float) Load 11(inF0)
+ 255: 6(float) Load 12(inF1)
+ 256: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 254 255
+ Store 253(r039) 256
+ 258: 6(float) Load 11(inF0)
+ 259: 6(float) Load 12(inF1)
+ 260: 6(float) Load 13(inF2)
+ 261: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 258 259 260
+ Store 257(r039a) 261
+ 263: 6(float) Load 11(inF0)
+ 264: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 263
+ Store 262(r040) 264
+ 266: 6(float) Load 11(inF0)
+ 267: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 266
+ 269: 6(float) FMul 267 268
+ Store 265(r041) 269
+ 271: 6(float) Load 11(inF0)
+ 272: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 271
+ Store 270(r042) 272
+ 274: 6(float) Load 11(inF0)
+ 275: 6(float) Load 12(inF1)
+ 276: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 274 275
+ Store 273(r043) 276
+ 278: 6(float) Load 11(inF0)
+ 279: 6(float) Load 12(inF1)
+ 280: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 278 279
+ Store 277(r044) 280
+ 282: 6(float) Load 11(inF0)
+ 283: 6(float) Load 12(inF1)
+ 284: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 282 283
+ Store 281(r045) 284
+ 286: 6(float) Load 11(inF0)
+ 287: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 286
+ Store 285(r046) 287
+ 290: 6(float) Load 11(inF0)
+ 291: 6(float) FDiv 289 290
+ Store 288(r047) 291
+ 294: 155(int) BitReverse 293
+ 295: 8(int) Bitcast 294
+ Store 292(r048) 295
+ 297: 6(float) Load 11(inF0)
+ 298: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 297
+ Store 296(r049) 298
+ 300: 6(float) Load 11(inF0)
+ 301: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 300
+ Store 299(r050) 301
+ 303: 6(float) Load 11(inF0)
+ 304: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 303 139 289
+ Store 302(r051) 304
+ 306: 6(float) Load 11(inF0)
+ 307: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 306
+ Store 305(r052) 307
309: 6(float) Load 11(inF0)
310: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 309
- Store 12(inF1) 310
+ Store 308(r053) 310
311: 6(float) Load 11(inF0)
- 312: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 311
- Store 13(inF2) 312
- 314: 6(float) Load 11(inF0)
- 315: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 314
- Store 313(r055) 315
- 317: 6(float) Load 11(inF0)
- 318: 6(float) Load 12(inF1)
- 319: 6(float) Load 13(inF2)
- 320: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 317 318 319
- Store 316(r056) 320
- 322: 6(float) Load 11(inF0)
- 323: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 322
- Store 321(r057) 323
- 325: 6(float) Load 11(inF0)
- 326: 6(float) Load 12(inF1)
- 327: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 325 326
- Store 324(r058) 327
- 329: 6(float) Load 11(inF0)
- 330: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 329
- Store 328(r059) 330
- 332: 6(float) Load 11(inF0)
- 333: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 332
- Store 331(r060) 333
- 335: 6(float) Load 11(inF0)
- 336: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 335
- Store 334(r061) 336
- ReturnValue 179
+ 312: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 311
+ Store 12(inF1) 312
+ 313: 6(float) Load 11(inF0)
+ 314: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 313
+ Store 13(inF2) 314
+ 316: 6(float) Load 11(inF0)
+ 317: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 316
+ Store 315(r055) 317
+ 319: 6(float) Load 11(inF0)
+ 320: 6(float) Load 12(inF1)
+ 321: 6(float) Load 13(inF2)
+ 322: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 319 320 321
+ Store 318(r056) 322
+ 324: 6(float) Load 11(inF0)
+ 325: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 324
+ Store 323(r057) 325
+ 327: 6(float) Load 11(inF0)
+ 328: 6(float) Load 12(inF1)
+ 329: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 327 328
+ Store 326(r058) 329
+ 331: 6(float) Load 11(inF0)
+ 332: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 331
+ Store 330(r059) 332
+ 334: 6(float) Load 11(inF0)
+ 335: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 334
+ Store 333(r060) 335
+ 337: 6(float) Load 11(inF0)
+ 338: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 337
+ Store 336(r061) 338
+ ReturnValue 139
FunctionEnd
22(PixelShaderFunction1(vf1;vf1;vf1;): 6(float) Function None 18
19(inF0): 7(ptr) FunctionParameter
20(inF1): 7(ptr) FunctionParameter
21(inF2): 7(ptr) FunctionParameter
23: Label
- ReturnValue 179
+ ReturnValue 139
FunctionEnd
34(PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2;): 24(fvec2) Function None 28
29(inF0): 25(ptr) FunctionParameter
@@ -6561,295 +6573,298 @@ gl_FragCoord origin is upper left
32(inU0): 27(ptr) FunctionParameter
33(inU1): 27(ptr) FunctionParameter
35: Label
- 341(r000): 136(ptr) Variable Function
- 344(r001): 25(ptr) Variable Function
- 347(r002): 25(ptr) Variable Function
- 350(r003): 136(ptr) Variable Function
- 353(r004): 25(ptr) Variable Function
- 358(r005): 357(ptr) Variable Function
- 361(r006): 27(ptr) Variable Function
- 364(r007): 25(ptr) Variable Function
- 367(r009): 25(ptr) Variable Function
- 370(r010): 25(ptr) Variable Function
- 374(r011): 25(ptr) Variable Function
- 377(r012): 25(ptr) Variable Function
- 390(r013): 25(ptr) Variable Function
- 393(r015): 25(ptr) Variable Function
- 396(r016): 357(ptr) Variable Function
- 400(r017): 25(ptr) Variable Function
- 403(r018): 25(ptr) Variable Function
- 406(r019): 25(ptr) Variable Function
- 409(r020): 25(ptr) Variable Function
- 412(r021): 25(ptr) Variable Function
- 415(r022): 25(ptr) Variable Function
- 418(r023): 25(ptr) Variable Function
- 421(r026): 7(ptr) Variable Function
- 425(r027): 7(ptr) Variable Function
- 429(r028): 25(ptr) Variable Function
- 432(r029): 25(ptr) Variable Function
- 435(r030): 25(ptr) Variable Function
- 440(r031): 27(ptr) Variable Function
- 445(r032): 27(ptr) Variable Function
- 447(r033): 25(ptr) Variable Function
- 450(r035): 25(ptr) Variable Function
- 454(r036): 25(ptr) Variable Function
- 457(r037): 25(ptr) Variable Function
- 463(r038): 25(ptr) Variable Function
- 467(r039): 466(ptr) Variable Function
- 470(r040): 466(ptr) Variable Function
- 473(r041): 25(ptr) Variable Function
- 477(r039a): 25(ptr) Variable Function
- 482(r042): 7(ptr) Variable Function
- 485(r043): 25(ptr) Variable Function
- 488(r044): 25(ptr) Variable Function
- 492(r045): 25(ptr) Variable Function
- 495(r046): 25(ptr) Variable Function
- 499(r047): 25(ptr) Variable Function
- 503(r048): 25(ptr) Variable Function
- 506(r049): 25(ptr) Variable Function
- 510(r050): 25(ptr) Variable Function
- 513(r051): 25(ptr) Variable Function
- 517(r052): 25(ptr) Variable Function
- 521(r053): 25(ptr) Variable Function
- 526(r054): 27(ptr) Variable Function
- 531(r055): 25(ptr) Variable Function
- 534(r056): 25(ptr) Variable Function
- 537(r057): 25(ptr) Variable Function
- 542(r058): 25(ptr) Variable Function
- 545(r059): 25(ptr) Variable Function
- 552(r060): 25(ptr) Variable Function
- 555(r061): 25(ptr) Variable Function
- 560(r062): 25(ptr) Variable Function
- 563(r063): 25(ptr) Variable Function
- 567(r064): 25(ptr) Variable Function
- 570(r065): 25(ptr) Variable Function
- 573(r066): 25(ptr) Variable Function
- 342: 24(fvec2) Load 29(inF0)
- 343: 135(bool) All 342
- Store 341(r000) 343
- 345: 24(fvec2) Load 29(inF0)
- 346: 24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 345
- Store 344(r001) 346
- 348: 24(fvec2) Load 29(inF0)
- 349: 24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 348
- Store 347(r002) 349
- 351: 24(fvec2) Load 29(inF0)
- 352: 135(bool) Any 351
- Store 350(r003) 352
- 354: 24(fvec2) Load 29(inF0)
- 355: 24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 354
- Store 353(r004) 355
- 359: 24(fvec2) Load 29(inF0)
- 360: 356(ivec2) Bitcast 359
- Store 358(r005) 360
- 362: 24(fvec2) Load 29(inF0)
- 363: 26(ivec2) Bitcast 362
- Store 361(r006) 363
- 365: 26(ivec2) Load 32(inU0)
- 366: 24(fvec2) Bitcast 365
- Store 364(r007) 366
+ 343(r000): 136(ptr) Variable Function
+ 349(r001): 25(ptr) Variable Function
+ 352(r002): 25(ptr) Variable Function
+ 355(r003): 136(ptr) Variable Function
+ 359(r004): 25(ptr) Variable Function
+ 364(r005): 363(ptr) Variable Function
+ 367(r006): 27(ptr) Variable Function
+ 370(r007): 25(ptr) Variable Function
+ 373(r009): 25(ptr) Variable Function
+ 376(r010): 25(ptr) Variable Function
+ 380(r011): 25(ptr) Variable Function
+ 383(r012): 25(ptr) Variable Function
+ 402(r013): 25(ptr) Variable Function
+ 405(r015): 25(ptr) Variable Function
+ 408(r016): 363(ptr) Variable Function
+ 412(r017): 25(ptr) Variable Function
+ 415(r018): 25(ptr) Variable Function
+ 418(r019): 25(ptr) Variable Function
+ 421(r020): 25(ptr) Variable Function
+ 424(r021): 25(ptr) Variable Function
+ 427(r022): 25(ptr) Variable Function
+ 430(r023): 25(ptr) Variable Function
+ 433(r026): 7(ptr) Variable Function
+ 437(r027): 7(ptr) Variable Function
+ 441(r028): 25(ptr) Variable Function
+ 444(r029): 25(ptr) Variable Function
+ 447(r030): 25(ptr) Variable Function
+ 452(r031): 27(ptr) Variable Function
+ 457(r032): 27(ptr) Variable Function
+ 459(r033): 25(ptr) Variable Function
+ 462(r035): 25(ptr) Variable Function
+ 466(r036): 25(ptr) Variable Function
+ 469(r038): 25(ptr) Variable Function
+ 473(r039): 472(ptr) Variable Function
+ 476(r040): 472(ptr) Variable Function
+ 479(r041): 25(ptr) Variable Function
+ 483(r039a): 25(ptr) Variable Function
+ 488(r042): 7(ptr) Variable Function
+ 491(r043): 25(ptr) Variable Function
+ 494(r044): 25(ptr) Variable Function
+ 498(r045): 25(ptr) Variable Function
+ 501(r046): 25(ptr) Variable Function
+ 505(r047): 25(ptr) Variable Function
+ 509(r048): 25(ptr) Variable Function
+ 512(r049): 25(ptr) Variable Function
+ 516(r050): 25(ptr) Variable Function
+ 519(r051): 25(ptr) Variable Function
+ 523(r052): 25(ptr) Variable Function
+ 527(r053): 25(ptr) Variable Function
+ 532(r054): 27(ptr) Variable Function
+ 537(r055): 25(ptr) Variable Function
+ 540(r056): 25(ptr) Variable Function
+ 543(r057): 25(ptr) Variable Function
+ 548(r058): 25(ptr) Variable Function
+ 551(r059): 25(ptr) Variable Function
+ 558(r060): 25(ptr) Variable Function
+ 561(r061): 25(ptr) Variable Function
+ 566(r062): 25(ptr) Variable Function
+ 569(r063): 25(ptr) Variable Function
+ 573(r064): 25(ptr) Variable Function
+ 576(r065): 25(ptr) Variable Function
+ 579(r066): 25(ptr) Variable Function
+ 344: 24(fvec2) Load 29(inF0)
+ 347: 345(bvec2) FOrdNotEqual 344 346
+ 348: 135(bool) All 347
+ Store 343(r000) 348
+ 350: 24(fvec2) Load 29(inF0)
+ 351: 24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 350
+ Store 349(r001) 351
+ 353: 24(fvec2) Load 29(inF0)
+ 354: 24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 353
+ Store 352(r002) 354
+ 356: 24(fvec2) Load 29(inF0)
+ 357: 345(bvec2) FOrdNotEqual 356 346
+ 358: 135(bool) Any 357
+ Store 355(r003) 358
+ 360: 24(fvec2) Load 29(inF0)
+ 361: 24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 360
+ Store 359(r004) 361
+ 365: 24(fvec2) Load 29(inF0)
+ 366: 362(ivec2) Bitcast 365
+ Store 364(r005) 366
368: 24(fvec2) Load 29(inF0)
- 369: 24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 368
- Store 367(r009) 369
- 371: 24(fvec2) Load 29(inF0)
- 372: 24(fvec2) Load 30(inF1)
- 373: 24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 371 372
- Store 370(r010) 373
- 375: 24(fvec2) Load 29(inF0)
- 376: 24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 375
- Store 374(r011) 376
- 378: 24(fvec2) Load 29(inF0)
- 379: 24(fvec2) Load 30(inF1)
- 380: 24(fvec2) Load 31(inF2)
- 381: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 378 379 380
- Store 377(r012) 381
- 382: 24(fvec2) Load 29(inF0)
- 385: 384(bvec2) FOrdLessThan 382 383
- 386: 135(bool) Any 385
- SelectionMerge 388 None
- BranchConditional 386 387 388
- 387: Label
+ 369: 26(ivec2) Bitcast 368
+ Store 367(r006) 369
+ 371: 26(ivec2) Load 32(inU0)
+ 372: 24(fvec2) Bitcast 371
+ Store 370(r007) 372
+ 374: 24(fvec2) Load 29(inF0)
+ 375: 24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 374
+ Store 373(r009) 375
+ 377: 24(fvec2) Load 29(inF0)
+ 378: 24(fvec2) Load 30(inF1)
+ 379: 24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 377 378
+ Store 376(r010) 379
+ 381: 24(fvec2) Load 29(inF0)
+ 382: 24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 381
+ Store 380(r011) 382
+ 384: 24(fvec2) Load 29(inF0)
+ 385: 24(fvec2) Load 30(inF1)
+ 386: 24(fvec2) Load 31(inF2)
+ 387: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 384 385 386
+ Store 383(r012) 387
+ 388: 24(fvec2) Load 29(inF0)
+ 389: 345(bvec2) FOrdLessThan 388 346
+ 390: 135(bool) Any 389
+ SelectionMerge 392 None
+ BranchConditional 390 391 392
+ 391: Label
+ Kill
+ 392: Label
+ 394: 26(ivec2) Load 32(inU0)
+ 397: 345(bvec2) ULessThan 394 396
+ 398: 135(bool) Any 397
+ SelectionMerge 400 None
+ BranchConditional 398 399 400
+ 399: Label
Kill
- 388: Label
- 391: 24(fvec2) Load 29(inF0)
- 392: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 391
- Store 390(r013) 392
- 394: 24(fvec2) Load 29(inF0)
- 395: 24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 394
- Store 393(r015) 395
- 399: 356(ivec2) BitCount 398
- Store 396(r016) 399
- 401: 24(fvec2) Load 29(inF0)
- 402: 24(fvec2) DPdx 401
- Store 400(r017) 402
- 404: 24(fvec2) Load 29(inF0)
- 405: 24(fvec2) DPdxCoarse 404
- Store 403(r018) 405
- 407: 24(fvec2) Load 29(inF0)
- 408: 24(fvec2) DPdxFine 407
- Store 406(r019) 408
- 410: 24(fvec2) Load 29(inF0)
- 411: 24(fvec2) DPdy 410
- Store 409(r020) 411
+ 400: Label
+ 403: 24(fvec2) Load 29(inF0)
+ 404: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 403
+ Store 402(r013) 404
+ 406: 24(fvec2) Load 29(inF0)
+ 407: 24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 406
+ Store 405(r015) 407
+ 411: 362(ivec2) BitCount 410
+ Store 408(r016) 411
413: 24(fvec2) Load 29(inF0)
- 414: 24(fvec2) DPdyCoarse 413
- Store 412(r021) 414
+ 414: 24(fvec2) DPdx 413
+ Store 412(r017) 414
416: 24(fvec2) Load 29(inF0)
- 417: 24(fvec2) DPdyFine 416
- Store 415(r022) 417
+ 417: 24(fvec2) DPdxCoarse 416
+ Store 415(r018) 417
419: 24(fvec2) Load 29(inF0)
- 420: 24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 419
- Store 418(r023) 420
+ 420: 24(fvec2) DPdxFine 419
+ Store 418(r019) 420
422: 24(fvec2) Load 29(inF0)
- 423: 24(fvec2) Load 30(inF1)
- 424: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 422 423
- Store 421(r026) 424
- 426: 24(fvec2) Load 29(inF0)
- 427: 24(fvec2) Load 30(inF1)
- 428: 6(float) Dot 426 427
- Store 425(r027) 428
- 430: 24(fvec2) Load 29(inF0)
- 431: 24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 430
- Store 429(r028) 431
- 433: 24(fvec2) Load 29(inF0)
- 434: 24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 433
- Store 432(r029) 434
- 436: 24(fvec2) Load 29(inF0)
- 437: 24(fvec2) Load 30(inF1)
- 438: 24(fvec2) Load 31(inF2)
- 439: 24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 436 437 438
- Store 435(r030) 439
- 444: 26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 443
- Store 440(r031) 444
- 446: 26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 443
- Store 445(r032) 446
+ 423: 24(fvec2) DPdy 422
+ Store 421(r020) 423
+ 425: 24(fvec2) Load 29(inF0)
+ 426: 24(fvec2) DPdyCoarse 425
+ Store 424(r021) 426
+ 428: 24(fvec2) Load 29(inF0)
+ 429: 24(fvec2) DPdyFine 428
+ Store 427(r022) 429
+ 431: 24(fvec2) Load 29(inF0)
+ 432: 24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 431
+ Store 430(r023) 432
+ 434: 24(fvec2) Load 29(inF0)
+ 435: 24(fvec2) Load 30(inF1)
+ 436: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 434 435
+ Store 433(r026) 436
+ 438: 24(fvec2) Load 29(inF0)
+ 439: 24(fvec2) Load 30(inF1)
+ 440: 6(float) Dot 438 439
+ Store 437(r027) 440
+ 442: 24(fvec2) Load 29(inF0)
+ 443: 24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 442
+ Store 441(r028) 443
+ 445: 24(fvec2) Load 29(inF0)
+ 446: 24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 445
+ Store 444(r029) 446
448: 24(fvec2) Load 29(inF0)
- 449: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 448
- Store 447(r033) 449
- 451: 24(fvec2) Load 29(inF0)
- 452: 24(fvec2) Load 30(inF1)
- 453: 24(fvec2) FMod 451 452
- Store 450(r035) 453
- 455: 24(fvec2) Load 29(inF0)
- 456: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 455
- Store 454(r036) 456
- 458: 24(fvec2) Load 29(inF0)
- 460:459(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 458
- 461: 356(ivec2) CompositeExtract 460 1
- Store 30(inF1) 461
- 462: 24(fvec2) CompositeExtract 460 0
- Store 457(r037) 462
- 464: 24(fvec2) Load 29(inF0)
- 465: 24(fvec2) Fwidth 464
- Store 463(r038) 465
- 468: 24(fvec2) Load 29(inF0)
- 469: 384(bvec2) IsInf 468
- Store 467(r039) 469
- 471: 24(fvec2) Load 29(inF0)
- 472: 384(bvec2) IsNan 471
- Store 470(r040) 472
+ 449: 24(fvec2) Load 30(inF1)
+ 450: 24(fvec2) Load 31(inF2)
+ 451: 24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 448 449 450
+ Store 447(r030) 451
+ 456: 26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 455
+ Store 452(r031) 456
+ 458: 26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 455
+ Store 457(r032) 458
+ 460: 24(fvec2) Load 29(inF0)
+ 461: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 460
+ Store 459(r033) 461
+ 463: 24(fvec2) Load 29(inF0)
+ 464: 24(fvec2) Load 30(inF1)
+ 465: 24(fvec2) FMod 463 464
+ Store 462(r035) 465
+ 467: 24(fvec2) Load 29(inF0)
+ 468: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 467
+ Store 466(r036) 468
+ 470: 24(fvec2) Load 29(inF0)
+ 471: 24(fvec2) Fwidth 470
+ Store 469(r038) 471
474: 24(fvec2) Load 29(inF0)
- 475: 24(fvec2) Load 30(inF1)
- 476: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 474 475
- Store 473(r041) 476
- 478: 24(fvec2) Load 29(inF0)
- 479: 24(fvec2) Load 30(inF1)
- 480: 24(fvec2) Load 31(inF2)
- 481: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 478 479 480
- Store 477(r039a) 481
- 483: 24(fvec2) Load 29(inF0)
- 484: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 483
- Store 482(r042) 484
- 486: 24(fvec2) Load 29(inF0)
- 487: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 486
- Store 485(r043) 487
+ 475: 345(bvec2) IsInf 474
+ Store 473(r039) 475
+ 477: 24(fvec2) Load 29(inF0)
+ 478: 345(bvec2) IsNan 477
+ Store 476(r040) 478
+ 480: 24(fvec2) Load 29(inF0)
+ 481: 24(fvec2) Load 30(inF1)
+ 482: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 480 481
+ Store 479(r041) 482
+ 484: 24(fvec2) Load 29(inF0)
+ 485: 24(fvec2) Load 30(inF1)
+ 486: 24(fvec2) Load 31(inF2)
+ 487: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 484 485 486
+ Store 483(r039a) 487
489: 24(fvec2) Load 29(inF0)
- 490: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 489
- 491: 24(fvec2) VectorTimesScalar 490 266
- Store 488(r044) 491
- 493: 24(fvec2) Load 29(inF0)
- 494: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 493
- Store 492(r045) 494
- 496: 24(fvec2) Load 29(inF0)
- 497: 24(fvec2) Load 30(inF1)
- 498: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 496 497
- Store 495(r046) 498
- 500: 24(fvec2) Load 29(inF0)
- 501: 24(fvec2) Load 30(inF1)
- 502: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 500 501
- Store 499(r047) 502
- 504: 24(fvec2) Load 29(inF0)
- 505: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 504
- Store 503(r048) 505
- 507: 24(fvec2) Load 29(inF0)
- 508: 24(fvec2) Load 30(inF1)
- 509: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 507 508
- Store 506(r049) 509
- 511: 24(fvec2) Load 29(inF0)
- 512: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 511
- Store 510(r050) 512
- 514: 24(fvec2) Load 29(inF0)
- 515: 24(fvec2) CompositeConstruct 287 287
- 516: 24(fvec2) FDiv 515 514
- Store 513(r051) 516
- 518: 24(fvec2) Load 29(inF0)
- 519: 24(fvec2) Load 30(inF1)
- 520: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 518 519
- Store 517(r052) 520
- 522: 24(fvec2) Load 29(inF0)
- 523: 24(fvec2) Load 30(inF1)
- 525: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 522 523 524
- Store 521(r053) 525
- 530: 26(ivec2) BitReverse 529
- Store 526(r054) 530
- 532: 24(fvec2) Load 29(inF0)
- 533: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 532
- Store 531(r055) 533
- 535: 24(fvec2) Load 29(inF0)
- 536: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 535
- Store 534(r056) 536
+ 490: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 489
+ Store 488(r042) 490
+ 492: 24(fvec2) Load 29(inF0)
+ 493: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 492
+ Store 491(r043) 493
+ 495: 24(fvec2) Load 29(inF0)
+ 496: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 495
+ 497: 24(fvec2) VectorTimesScalar 496 268
+ Store 494(r044) 497
+ 499: 24(fvec2) Load 29(inF0)
+ 500: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 499
+ Store 498(r045) 500
+ 502: 24(fvec2) Load 29(inF0)
+ 503: 24(fvec2) Load 30(inF1)
+ 504: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 502 503
+ Store 501(r046) 504
+ 506: 24(fvec2) Load 29(inF0)
+ 507: 24(fvec2) Load 30(inF1)
+ 508: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 506 507
+ Store 505(r047) 508
+ 510: 24(fvec2) Load 29(inF0)
+ 511: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 510
+ Store 509(r048) 511
+ 513: 24(fvec2) Load 29(inF0)
+ 514: 24(fvec2) Load 30(inF1)
+ 515: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 513 514
+ Store 512(r049) 515
+ 517: 24(fvec2) Load 29(inF0)
+ 518: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 517
+ Store 516(r050) 518
+ 520: 24(fvec2) Load 29(inF0)
+ 521: 24(fvec2) CompositeConstruct 289 289
+ 522: 24(fvec2) FDiv 521 520
+ Store 519(r051) 522
+ 524: 24(fvec2) Load 29(inF0)
+ 525: 24(fvec2) Load 30(inF1)
+ 526: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 524 525
+ Store 523(r052) 526
+ 528: 24(fvec2) Load 29(inF0)
+ 529: 24(fvec2) Load 30(inF1)
+ 531: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 528 529 530
+ Store 527(r053) 531
+ 536: 26(ivec2) BitReverse 535
+ Store 532(r054) 536
538: 24(fvec2) Load 29(inF0)
- 539: 24(fvec2) CompositeConstruct 179 179
- 540: 24(fvec2) CompositeConstruct 287 287
- 541: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 538 539 540
- Store 537(r057) 541
- 543: 24(fvec2) Load 29(inF0)
- 544: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 543
- Store 542(r058) 544
- 546: 24(fvec2) Load 29(inF0)
- 547: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 546
- Store 545(r059) 547
- 548: 24(fvec2) Load 29(inF0)
- 549: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 548
- Store 30(inF1) 549
- 550: 24(fvec2) Load 29(inF0)
- 551: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 550
- Store 31(inF2) 551
- 553: 24(fvec2) Load 29(inF0)
- 554: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 553
- Store 552(r060) 554
+ 539: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 538
+ Store 537(r055) 539
+ 541: 24(fvec2) Load 29(inF0)
+ 542: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 541
+ Store 540(r056) 542
+ 544: 24(fvec2) Load 29(inF0)
+ 545: 24(fvec2) CompositeConstruct 139 139
+ 546: 24(fvec2) CompositeConstruct 289 289
+ 547: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 544 545 546
+ Store 543(r057) 547
+ 549: 24(fvec2) Load 29(inF0)
+ 550: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 549
+ Store 548(r058) 550
+ 552: 24(fvec2) Load 29(inF0)
+ 553: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 552
+ Store 551(r059) 553
+ 554: 24(fvec2) Load 29(inF0)
+ 555: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 554
+ Store 30(inF1) 555
556: 24(fvec2) Load 29(inF0)
- 557: 24(fvec2) Load 30(inF1)
- 558: 24(fvec2) Load 31(inF2)
- 559: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 556 557 558
- Store 555(r061) 559
- 561: 24(fvec2) Load 29(inF0)
- 562: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 561
- Store 560(r062) 562
- 564: 24(fvec2) Load 29(inF0)
- 565: 24(fvec2) Load 30(inF1)
- 566: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 564 565
- Store 563(r063) 566
- 568: 24(fvec2) Load 29(inF0)
- 569: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 568
- Store 567(r064) 569
- 571: 24(fvec2) Load 29(inF0)
- 572: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 571
- Store 570(r065) 572
+ 557: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 556
+ Store 31(inF2) 557
+ 559: 24(fvec2) Load 29(inF0)
+ 560: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 559
+ Store 558(r060) 560
+ 562: 24(fvec2) Load 29(inF0)
+ 563: 24(fvec2) Load 30(inF1)
+ 564: 24(fvec2) Load 31(inF2)
+ 565: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 562 563 564
+ Store 561(r061) 565
+ 567: 24(fvec2) Load 29(inF0)
+ 568: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 567
+ Store 566(r062) 568
+ 570: 24(fvec2) Load 29(inF0)
+ 571: 24(fvec2) Load 30(inF1)
+ 572: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 570 571
+ Store 569(r063) 572
574: 24(fvec2) Load 29(inF0)
- 575: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 574
- Store 573(r066) 575
- ReturnValue 576
+ 575: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 574
+ Store 573(r064) 575
+ 577: 24(fvec2) Load 29(inF0)
+ 578: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 577
+ Store 576(r065) 578
+ 580: 24(fvec2) Load 29(inF0)
+ 581: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 580
+ Store 579(r066) 581
+ ReturnValue 582
FunctionEnd
46(PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 36(fvec3) Function None 40
41(inF0): 37(ptr) FunctionParameter
@@ -6858,306 +6873,309 @@ gl_FragCoord origin is upper left
44(inU0): 39(ptr) FunctionParameter
45(inU1): 39(ptr) FunctionParameter
47: Label
- 579(r000): 136(ptr) Variable Function
- 582(r001): 37(ptr) Variable Function
- 585(r002): 37(ptr) Variable Function
- 588(r003): 136(ptr) Variable Function
- 591(r004): 37(ptr) Variable Function
- 596(r005): 595(ptr) Variable Function
- 599(r006): 39(ptr) Variable Function
- 602(r007): 37(ptr) Variable Function
- 605(r009): 37(ptr) Variable Function
- 608(r010): 37(ptr) Variable Function
- 612(r011): 37(ptr) Variable Function
- 615(r012): 37(ptr) Variable Function
- 628(r013): 37(ptr) Variable Function
- 631(r014): 37(ptr) Variable Function
- 634(r015): 39(ptr) Variable Function
- 639(r016): 37(ptr) Variable Function
- 643(r017): 37(ptr) Variable Function
- 646(r018): 37(ptr) Variable Function
- 649(r019): 37(ptr) Variable Function
- 652(r020): 37(ptr) Variable Function
- 655(r021): 37(ptr) Variable Function
- 658(r022): 37(ptr) Variable Function
- 661(r023): 37(ptr) Variable Function
- 664(r024): 7(ptr) Variable Function
- 668(r025): 7(ptr) Variable Function
- 672(r029): 37(ptr) Variable Function
- 675(r030): 37(ptr) Variable Function
- 678(r031): 37(ptr) Variable Function
- 683(r032): 39(ptr) Variable Function
- 687(r033): 39(ptr) Variable Function
- 689(r034): 37(ptr) Variable Function
- 692(r036): 37(ptr) Variable Function
- 696(r037): 37(ptr) Variable Function
- 699(r038): 37(ptr) Variable Function
- 705(r039): 37(ptr) Variable Function
- 709(r040): 708(ptr) Variable Function
- 712(r041): 708(ptr) Variable Function
- 715(r042): 37(ptr) Variable Function
- 719(r039a): 37(ptr) Variable Function
- 724(r039b): 37(ptr) Variable Function
- 730(r043): 7(ptr) Variable Function
- 733(r044): 37(ptr) Variable Function
- 736(r045): 37(ptr) Variable Function
- 740(r046): 37(ptr) Variable Function
- 743(r047): 37(ptr) Variable Function
- 747(r048): 37(ptr) Variable Function
- 751(r049): 37(ptr) Variable Function
- 754(r050): 37(ptr) Variable Function
- 758(r051): 37(ptr) Variable Function
- 761(r052): 37(ptr) Variable Function
- 765(r053): 37(ptr) Variable Function
- 769(r054): 37(ptr) Variable Function
- 773(r055): 39(ptr) Variable Function
- 776(r056): 37(ptr) Variable Function
- 779(r057): 37(ptr) Variable Function
- 782(r058): 37(ptr) Variable Function
- 787(r059): 37(ptr) Variable Function
- 790(r060): 37(ptr) Variable Function
- 797(r061): 37(ptr) Variable Function
- 800(r062): 37(ptr) Variable Function
- 805(r063): 37(ptr) Variable Function
- 808(r064): 37(ptr) Variable Function
- 812(r065): 37(ptr) Variable Function
- 815(r066): 37(ptr) Variable Function
- 818(r067): 37(ptr) Variable Function
- 580: 36(fvec3) Load 41(inF0)
- 581: 135(bool) All 580
- Store 579(r000) 581
- 583: 36(fvec3) Load 41(inF0)
- 584: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 583
- Store 582(r001) 584
+ 585(r000): 136(ptr) Variable Function
+ 591(r001): 37(ptr) Variable Function
+ 594(r002): 37(ptr) Variable Function
+ 597(r003): 136(ptr) Variable Function
+ 601(r004): 37(ptr) Variable Function
+ 606(r005): 605(ptr) Variable Function
+ 609(r006): 39(ptr) Variable Function
+ 612(r007): 37(ptr) Variable Function
+ 615(r009): 37(ptr) Variable Function
+ 618(r010): 37(ptr) Variable Function
+ 622(r011): 37(ptr) Variable Function
+ 625(r012): 37(ptr) Variable Function
+ 643(r013): 37(ptr) Variable Function
+ 646(r014): 37(ptr) Variable Function
+ 649(r015): 39(ptr) Variable Function
+ 654(r016): 37(ptr) Variable Function
+ 658(r017): 37(ptr) Variable Function
+ 661(r018): 37(ptr) Variable Function
+ 664(r019): 37(ptr) Variable Function
+ 667(r020): 37(ptr) Variable Function
+ 670(r021): 37(ptr) Variable Function
+ 673(r022): 37(ptr) Variable Function
+ 676(r023): 37(ptr) Variable Function
+ 679(r024): 7(ptr) Variable Function
+ 683(r025): 7(ptr) Variable Function
+ 687(r029): 37(ptr) Variable Function
+ 690(r030): 37(ptr) Variable Function
+ 693(r031): 37(ptr) Variable Function
+ 698(r032): 39(ptr) Variable Function
+ 702(r033): 39(ptr) Variable Function
+ 704(r034): 37(ptr) Variable Function
+ 707(r036): 37(ptr) Variable Function
+ 711(r037): 37(ptr) Variable Function
+ 714(r039): 37(ptr) Variable Function
+ 718(r040): 717(ptr) Variable Function
+ 721(r041): 717(ptr) Variable Function
+ 724(r042): 37(ptr) Variable Function
+ 728(r039a): 37(ptr) Variable Function
+ 733(r039b): 37(ptr) Variable Function
+ 739(r043): 7(ptr) Variable Function
+ 742(r044): 37(ptr) Variable Function
+ 745(r045): 37(ptr) Variable Function
+ 749(r046): 37(ptr) Variable Function
+ 752(r047): 37(ptr) Variable Function
+ 756(r048): 37(ptr) Variable Function
+ 760(r049): 37(ptr) Variable Function
+ 763(r050): 37(ptr) Variable Function
+ 767(r051): 37(ptr) Variable Function
+ 770(r052): 37(ptr) Variable Function
+ 774(r053): 37(ptr) Variable Function
+ 778(r054): 37(ptr) Variable Function
+ 782(r055): 39(ptr) Variable Function
+ 785(r056): 37(ptr) Variable Function
+ 788(r057): 37(ptr) Variable Function
+ 791(r058): 37(ptr) Variable Function
+ 796(r059): 37(ptr) Variable Function
+ 799(r060): 37(ptr) Variable Function
+ 806(r061): 37(ptr) Variable Function
+ 809(r062): 37(ptr) Variable Function
+ 814(r063): 37(ptr) Variable Function
+ 817(r064): 37(ptr) Variable Function
+ 821(r065): 37(ptr) Variable Function
+ 824(r066): 37(ptr) Variable Function
+ 827(r067): 37(ptr) Variable Function
586: 36(fvec3) Load 41(inF0)
- 587: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 586
- Store 585(r002) 587
- 589: 36(fvec3) Load 41(inF0)
- 590: 135(bool) Any 589
- Store 588(r003) 590
+ 589: 587(bvec3) FOrdNotEqual 586 588
+ 590: 135(bool) All 589
+ Store 585(r000) 590
592: 36(fvec3) Load 41(inF0)
- 593: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 592
- Store 591(r004) 593
- 597: 36(fvec3) Load 41(inF0)
- 598: 594(ivec3) Bitcast 597
- Store 596(r005) 598
- 600: 36(fvec3) Load 41(inF0)
- 601: 38(ivec3) Bitcast 600
- Store 599(r006) 601
- 603: 38(ivec3) Load 44(inU0)
- 604: 36(fvec3) Bitcast 603
- Store 602(r007) 604
- 606: 36(fvec3) Load 41(inF0)
- 607: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 606
- Store 605(r009) 607
- 609: 36(fvec3) Load 41(inF0)
- 610: 36(fvec3) Load 42(inF1)
- 611: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 609 610
- Store 608(r010) 611
- 613: 36(fvec3) Load 41(inF0)
- 614: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 613
- Store 612(r011) 614
+ 593: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 592
+ Store 591(r001) 593
+ 595: 36(fvec3) Load 41(inF0)
+ 596: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 595
+ Store 594(r002) 596
+ 598: 36(fvec3) Load 41(inF0)
+ 599: 587(bvec3) FOrdNotEqual 598 588
+ 600: 135(bool) Any 599
+ Store 597(r003) 600
+ 602: 36(fvec3) Load 41(inF0)
+ 603: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 602
+ Store 601(r004) 603
+ 607: 36(fvec3) Load 41(inF0)
+ 608: 604(ivec3) Bitcast 607
+ Store 606(r005) 608
+ 610: 36(fvec3) Load 41(inF0)
+ 611: 38(ivec3) Bitcast 610
+ Store 609(r006) 611
+ 613: 38(ivec3) Load 44(inU0)
+ 614: 36(fvec3) Bitcast 613
+ Store 612(r007) 614
616: 36(fvec3) Load 41(inF0)
- 617: 36(fvec3) Load 42(inF1)
- 618: 36(fvec3) Load 43(inF2)
- 619: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 616 617 618
- Store 615(r012) 619
- 620: 36(fvec3) Load 41(inF0)
- 623: 622(bvec3) FOrdLessThan 620 621
- 624: 135(bool) Any 623
- SelectionMerge 626 None
- BranchConditional 624 625 626
- 625: Label
+ 617: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 616
+ Store 615(r009) 617
+ 619: 36(fvec3) Load 41(inF0)
+ 620: 36(fvec3) Load 42(inF1)
+ 621: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 619 620
+ Store 618(r010) 621
+ 623: 36(fvec3) Load 41(inF0)
+ 624: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 623
+ Store 622(r011) 624
+ 626: 36(fvec3) Load 41(inF0)
+ 627: 36(fvec3) Load 42(inF1)
+ 628: 36(fvec3) Load 43(inF2)
+ 629: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 626 627 628
+ Store 625(r012) 629
+ 630: 36(fvec3) Load 41(inF0)
+ 631: 587(bvec3) FOrdLessThan 630 588
+ 632: 135(bool) Any 631
+ SelectionMerge 634 None
+ BranchConditional 632 633 634
+ 633: Label
+ Kill
+ 634: Label
+ 636: 38(ivec3) Load 44(inU0)
+ 638: 587(bvec3) ULessThan 636 637
+ 639: 135(bool) Any 638
+ SelectionMerge 641 None
+ BranchConditional 639 640 641
+ 640: Label
Kill
- 626: Label
- 629: 36(fvec3) Load 41(inF0)
- 630: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 629
- Store 628(r013) 630
- 632: 36(fvec3) Load 41(inF0)
- 633: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 632
- Store 631(r014) 633
- 638: 38(ivec3) BitCount 637
- Store 634(r015) 638
- 640: 36(fvec3) Load 41(inF0)
- 641: 36(fvec3) Load 42(inF1)
- 642: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 640 641
- Store 639(r016) 642
+ 641: Label
644: 36(fvec3) Load 41(inF0)
- 645: 36(fvec3) DPdx 644
- Store 643(r017) 645
+ 645: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 644
+ Store 643(r013) 645
647: 36(fvec3) Load 41(inF0)
- 648: 36(fvec3) DPdxCoarse 647
- Store 646(r018) 648
- 650: 36(fvec3) Load 41(inF0)
- 651: 36(fvec3) DPdxFine 650
- Store 649(r019) 651
- 653: 36(fvec3) Load 41(inF0)
- 654: 36(fvec3) DPdy 653
- Store 652(r020) 654
- 656: 36(fvec3) Load 41(inF0)
- 657: 36(fvec3) DPdyCoarse 656
- Store 655(r021) 657
+ 648: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 647
+ Store 646(r014) 648
+ 653: 38(ivec3) BitCount 652
+ Store 649(r015) 653
+ 655: 36(fvec3) Load 41(inF0)
+ 656: 36(fvec3) Load 42(inF1)
+ 657: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 655 656
+ Store 654(r016) 657
659: 36(fvec3) Load 41(inF0)
- 660: 36(fvec3) DPdyFine 659
- Store 658(r022) 660
+ 660: 36(fvec3) DPdx 659
+ Store 658(r017) 660
662: 36(fvec3) Load 41(inF0)
- 663: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 662
- Store 661(r023) 663
+ 663: 36(fvec3) DPdxCoarse 662
+ Store 661(r018) 663
665: 36(fvec3) Load 41(inF0)
- 666: 36(fvec3) Load 42(inF1)
- 667: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 665 666
- Store 664(r024) 667
- 669: 36(fvec3) Load 41(inF0)
- 670: 36(fvec3) Load 42(inF1)
- 671: 6(float) Dot 669 670
- Store 668(r025) 671
- 673: 36(fvec3) Load 41(inF0)
- 674: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 673
- Store 672(r029) 674
- 676: 36(fvec3) Load 41(inF0)
- 677: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 676
- Store 675(r030) 677
- 679: 36(fvec3) Load 41(inF0)
- 680: 36(fvec3) Load 42(inF1)
- 681: 36(fvec3) Load 43(inF2)
- 682: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 679 680 681
- Store 678(r031) 682
- 686: 38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 685
- Store 683(r032) 686
- 688: 38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 685
- Store 687(r033) 688
- 690: 36(fvec3) Load 41(inF0)
- 691: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 690
- Store 689(r034) 691
- 693: 36(fvec3) Load 41(inF0)
- 694: 36(fvec3) Load 42(inF1)
- 695: 36(fvec3) FMod 693 694
- Store 692(r036) 695
- 697: 36(fvec3) Load 41(inF0)
- 698: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 697
- Store 696(r037) 698
- 700: 36(fvec3) Load 41(inF0)
- 702:701(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 700
- 703: 594(ivec3) CompositeExtract 702 1
- Store 42(inF1) 703
- 704: 36(fvec3) CompositeExtract 702 0
- Store 699(r038) 704
- 706: 36(fvec3) Load 41(inF0)
- 707: 36(fvec3) Fwidth 706
- Store 705(r039) 707
- 710: 36(fvec3) Load 41(inF0)
- 711: 622(bvec3) IsInf 710
- Store 709(r040) 711
- 713: 36(fvec3) Load 41(inF0)
- 714: 622(bvec3) IsNan 713
- Store 712(r041) 714
- 716: 36(fvec3) Load 41(inF0)
- 717: 36(fvec3) Load 42(inF1)
- 718: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 716 717
- Store 715(r042) 718
- 720: 36(fvec3) Load 41(inF0)
- 721: 36(fvec3) Load 42(inF1)
- 722: 36(fvec3) Load 43(inF2)
- 723: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 720 721 722
- Store 719(r039a) 723
+ 666: 36(fvec3) DPdxFine 665
+ Store 664(r019) 666
+ 668: 36(fvec3) Load 41(inF0)
+ 669: 36(fvec3) DPdy 668
+ Store 667(r020) 669
+ 671: 36(fvec3) Load 41(inF0)
+ 672: 36(fvec3) DPdyCoarse 671
+ Store 670(r021) 672
+ 674: 36(fvec3) Load 41(inF0)
+ 675: 36(fvec3) DPdyFine 674
+ Store 673(r022) 675
+ 677: 36(fvec3) Load 41(inF0)
+ 678: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 677
+ Store 676(r023) 678
+ 680: 36(fvec3) Load 41(inF0)
+ 681: 36(fvec3) Load 42(inF1)
+ 682: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 680 681
+ Store 679(r024) 682
+ 684: 36(fvec3) Load 41(inF0)
+ 685: 36(fvec3) Load 42(inF1)
+ 686: 6(float) Dot 684 685
+ Store 683(r025) 686
+ 688: 36(fvec3) Load 41(inF0)
+ 689: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 688
+ Store 687(r029) 689
+ 691: 36(fvec3) Load 41(inF0)
+ 692: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 691
+ Store 690(r030) 692
+ 694: 36(fvec3) Load 41(inF0)
+ 695: 36(fvec3) Load 42(inF1)
+ 696: 36(fvec3) Load 43(inF2)
+ 697: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 694 695 696
+ Store 693(r031) 697
+ 701: 38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 700
+ Store 698(r032) 701
+ 703: 38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 700
+ Store 702(r033) 703
+ 705: 36(fvec3) Load 41(inF0)
+ 706: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 705
+ Store 704(r034) 706
+ 708: 36(fvec3) Load 41(inF0)
+ 709: 36(fvec3) Load 42(inF1)
+ 710: 36(fvec3) FMod 708 709
+ Store 707(r036) 710
+ 712: 36(fvec3) Load 41(inF0)
+ 713: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 712
+ Store 711(r037) 713
+ 715: 36(fvec3) Load 41(inF0)
+ 716: 36(fvec3) Fwidth 715
+ Store 714(r039) 716
+ 719: 36(fvec3) Load 41(inF0)
+ 720: 587(bvec3) IsInf 719
+ Store 718(r040) 720
+ 722: 36(fvec3) Load 41(inF0)
+ 723: 587(bvec3) IsNan 722
+ Store 721(r041) 723
725: 36(fvec3) Load 41(inF0)
726: 36(fvec3) Load 42(inF1)
- 728: 36(fvec3) CompositeConstruct 727 727 727
- 729: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 725 726 728
- Store 724(r039b) 729
- 731: 36(fvec3) Load 41(inF0)
- 732: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 731
- Store 730(r043) 732
+ 727: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 725 726
+ Store 724(r042) 727
+ 729: 36(fvec3) Load 41(inF0)
+ 730: 36(fvec3) Load 42(inF1)
+ 731: 36(fvec3) Load 43(inF2)
+ 732: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 729 730 731
+ Store 728(r039a) 732
734: 36(fvec3) Load 41(inF0)
- 735: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 734
- Store 733(r044) 735
- 737: 36(fvec3) Load 41(inF0)
- 738: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 737
- 739: 36(fvec3) VectorTimesScalar 738 266
- Store 736(r045) 739
- 741: 36(fvec3) Load 41(inF0)
- 742: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 741
- Store 740(r046) 742
- 744: 36(fvec3) Load 41(inF0)
- 745: 36(fvec3) Load 42(inF1)
- 746: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 744 745
- Store 743(r047) 746
- 748: 36(fvec3) Load 41(inF0)
- 749: 36(fvec3) Load 42(inF1)
- 750: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 748 749
- Store 747(r048) 750
- 752: 36(fvec3) Load 41(inF0)
- 753: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 752
- Store 751(r049) 753
- 755: 36(fvec3) Load 41(inF0)
- 756: 36(fvec3) Load 42(inF1)
- 757: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 755 756
- Store 754(r050) 757
- 759: 36(fvec3) Load 41(inF0)
- 760: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 759
- Store 758(r051) 760
- 762: 36(fvec3) Load 41(inF0)
- 763: 36(fvec3) CompositeConstruct 287 287 287
- 764: 36(fvec3) FDiv 763 762
- Store 761(r052) 764
- 766: 36(fvec3) Load 41(inF0)
- 767: 36(fvec3) Load 42(inF1)
- 768: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 766 767
- Store 765(r053) 768
- 770: 36(fvec3) Load 41(inF0)
- 771: 36(fvec3) Load 42(inF1)
- 772: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 770 771 524
- Store 769(r054) 772
- 775: 38(ivec3) BitReverse 774
- Store 773(r055) 775
- 777: 36(fvec3) Load 41(inF0)
- 778: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 777
- Store 776(r056) 778
- 780: 36(fvec3) Load 41(inF0)
- 781: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 780
- Store 779(r057) 781
- 783: 36(fvec3) Load 41(inF0)
- 784: 36(fvec3) CompositeConstruct 179 179 179
- 785: 36(fvec3) CompositeConstruct 287 287 287
- 786: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 783 784 785
- Store 782(r058) 786
- 788: 36(fvec3) Load 41(inF0)
- 789: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 788
- Store 787(r059) 789
- 791: 36(fvec3) Load 41(inF0)
- 792: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 791
- Store 790(r060) 792
- 793: 36(fvec3) Load 41(inF0)
- 794: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 793
- Store 42(inF1) 794
- 795: 36(fvec3) Load 41(inF0)
- 796: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 795
- Store 43(inF2) 796
- 798: 36(fvec3) Load 41(inF0)
- 799: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 798
- Store 797(r061) 799
- 801: 36(fvec3) Load 41(inF0)
- 802: 36(fvec3) Load 42(inF1)
- 803: 36(fvec3) Load 43(inF2)
- 804: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 801 802 803
- Store 800(r062) 804
- 806: 36(fvec3) Load 41(inF0)
- 807: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 806
- Store 805(r063) 807
- 809: 36(fvec3) Load 41(inF0)
- 810: 36(fvec3) Load 42(inF1)
- 811: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 809 810
- Store 808(r064) 811
- 813: 36(fvec3) Load 41(inF0)
- 814: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 813
- Store 812(r065) 814
- 816: 36(fvec3) Load 41(inF0)
- 817: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 816
- Store 815(r066) 817
- 819: 36(fvec3) Load 41(inF0)
- 820: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 819
- Store 818(r067) 820
- ReturnValue 822
+ 735: 36(fvec3) Load 42(inF1)
+ 737: 36(fvec3) CompositeConstruct 736 736 736
+ 738: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 734 735 737
+ Store 733(r039b) 738
+ 740: 36(fvec3) Load 41(inF0)
+ 741: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 740
+ Store 739(r043) 741
+ 743: 36(fvec3) Load 41(inF0)
+ 744: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 743
+ Store 742(r044) 744
+ 746: 36(fvec3) Load 41(inF0)
+ 747: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 746
+ 748: 36(fvec3) VectorTimesScalar 747 268
+ Store 745(r045) 748
+ 750: 36(fvec3) Load 41(inF0)
+ 751: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 750
+ Store 749(r046) 751
+ 753: 36(fvec3) Load 41(inF0)
+ 754: 36(fvec3) Load 42(inF1)
+ 755: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 753 754
+ Store 752(r047) 755
+ 757: 36(fvec3) Load 41(inF0)
+ 758: 36(fvec3) Load 42(inF1)
+ 759: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 757 758
+ Store 756(r048) 759
+ 761: 36(fvec3) Load 41(inF0)
+ 762: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 761
+ Store 760(r049) 762
+ 764: 36(fvec3) Load 41(inF0)
+ 765: 36(fvec3) Load 42(inF1)
+ 766: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 764 765
+ Store 763(r050) 766
+ 768: 36(fvec3) Load 41(inF0)
+ 769: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 768
+ Store 767(r051) 769
+ 771: 36(fvec3) Load 41(inF0)
+ 772: 36(fvec3) CompositeConstruct 289 289 289
+ 773: 36(fvec3) FDiv 772 771
+ Store 770(r052) 773
+ 775: 36(fvec3) Load 41(inF0)
+ 776: 36(fvec3) Load 42(inF1)
+ 777: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 775 776
+ Store 774(r053) 777
+ 779: 36(fvec3) Load 41(inF0)
+ 780: 36(fvec3) Load 42(inF1)
+ 781: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 779 780 530
+ Store 778(r054) 781
+ 784: 38(ivec3) BitReverse 783
+ Store 782(r055) 784
+ 786: 36(fvec3) Load 41(inF0)
+ 787: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 786
+ Store 785(r056) 787
+ 789: 36(fvec3) Load 41(inF0)
+ 790: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 789
+ Store 788(r057) 790
+ 792: 36(fvec3) Load 41(inF0)
+ 793: 36(fvec3) CompositeConstruct 139 139 139
+ 794: 36(fvec3) CompositeConstruct 289 289 289
+ 795: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 792 793 794
+ Store 791(r058) 795
+ 797: 36(fvec3) Load 41(inF0)
+ 798: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 797
+ Store 796(r059) 798
+ 800: 36(fvec3) Load 41(inF0)
+ 801: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 800
+ Store 799(r060) 801
+ 802: 36(fvec3) Load 41(inF0)
+ 803: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 802
+ Store 42(inF1) 803
+ 804: 36(fvec3) Load 41(inF0)
+ 805: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 804
+ Store 43(inF2) 805
+ 807: 36(fvec3) Load 41(inF0)
+ 808: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 807
+ Store 806(r061) 808
+ 810: 36(fvec3) Load 41(inF0)
+ 811: 36(fvec3) Load 42(inF1)
+ 812: 36(fvec3) Load 43(inF2)
+ 813: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 810 811 812
+ Store 809(r062) 813
+ 815: 36(fvec3) Load 41(inF0)
+ 816: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 815
+ Store 814(r063) 816
+ 818: 36(fvec3) Load 41(inF0)
+ 819: 36(fvec3) Load 42(inF1)
+ 820: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 818 819
+ Store 817(r064) 820
+ 822: 36(fvec3) Load 41(inF0)
+ 823: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 822
+ Store 821(r065) 823
+ 825: 36(fvec3) Load 41(inF0)
+ 826: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 825
+ Store 824(r066) 826
+ 828: 36(fvec3) Load 41(inF0)
+ 829: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 828
+ Store 827(r067) 829
+ ReturnValue 831
FunctionEnd
58(PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;): 48(fvec4) Function None 52
53(inF0): 49(ptr) FunctionParameter
@@ -7166,808 +7184,800 @@ gl_FragCoord origin is upper left
56(inU0): 51(ptr) FunctionParameter
57(inU1): 51(ptr) FunctionParameter
59: Label
- 825(r000): 136(ptr) Variable Function
- 828(r001): 49(ptr) Variable Function
- 831(r002): 49(ptr) Variable Function
- 834(r003): 136(ptr) Variable Function
- 837(r004): 49(ptr) Variable Function
- 842(r005): 841(ptr) Variable Function
- 845(r006): 51(ptr) Variable Function
- 848(r007): 49(ptr) Variable Function
- 851(r009): 49(ptr) Variable Function
- 854(r010): 49(ptr) Variable Function
- 858(r011): 49(ptr) Variable Function
- 861(r012): 49(ptr) Variable Function
- 874(r013): 49(ptr) Variable Function
- 877(r014): 49(ptr) Variable Function
- 880(r015): 51(ptr) Variable Function
- 883(r016): 49(ptr) Variable Function
- 886(r017): 49(ptr) Variable Function
- 889(r018): 49(ptr) Variable Function
- 892(r019): 49(ptr) Variable Function
- 895(r020): 49(ptr) Variable Function
- 898(r021): 49(ptr) Variable Function
- 901(r022): 49(ptr) Variable Function
- 904(r023): 7(ptr) Variable Function
- 908(r024): 7(ptr) Variable Function
- 912(r025): 49(ptr) Variable Function
- 923(r029): 49(ptr) Variable Function
- 926(r030): 49(ptr) Variable Function
- 929(r031): 49(ptr) Variable Function
- 934(r032): 51(ptr) Variable Function
- 939(r033): 51(ptr) Variable Function
- 941(r034): 49(ptr) Variable Function
- 944(r036): 49(ptr) Variable Function
- 948(r037): 49(ptr) Variable Function
- 951(r038): 49(ptr) Variable Function
- 957(r039): 49(ptr) Variable Function
- 961(r040): 960(ptr) Variable Function
- 964(r041): 960(ptr) Variable Function
- 967(r042): 49(ptr) Variable Function
- 971(r039a): 49(ptr) Variable Function
- 976(r043): 7(ptr) Variable Function
- 979(r044): 49(ptr) Variable Function
- 982(r045): 49(ptr) Variable Function
- 986(r046): 49(ptr) Variable Function
- 989(r047): 49(ptr) Variable Function
- 993(r048): 49(ptr) Variable Function
- 997(r049): 49(ptr) Variable Function
- 1000(r050): 49(ptr) Variable Function
- 1004(r051): 49(ptr) Variable Function
- 1007(r052): 49(ptr) Variable Function
- 1011(r053): 49(ptr) Variable Function
- 1015(r054): 49(ptr) Variable Function
- 1019(r055): 51(ptr) Variable Function
- 1022(r056): 49(ptr) Variable Function
- 1025(r057): 49(ptr) Variable Function
- 1028(r058): 49(ptr) Variable Function
- 1033(r059): 49(ptr) Variable Function
- 1036(r060): 49(ptr) Variable Function
- 1043(r061): 49(ptr) Variable Function
- 1046(r062): 49(ptr) Variable Function
- 1051(r063): 49(ptr) Variable Function
- 1054(r064): 49(ptr) Variable Function
- 1058(r065): 49(ptr) Variable Function
- 1061(r066): 49(ptr) Variable Function
- 1064(r067): 49(ptr) Variable Function
- 826: 48(fvec4) Load 53(inF0)
- 827: 135(bool) All 826
- Store 825(r000) 827
- 829: 48(fvec4) Load 53(inF0)
- 830: 48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 829
- Store 828(r001) 830
- 832: 48(fvec4) Load 53(inF0)
- 833: 48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 832
- Store 831(r002) 833
+ 834(r000): 136(ptr) Variable Function
+ 840(r001): 49(ptr) Variable Function
+ 843(r002): 49(ptr) Variable Function
+ 846(r003): 136(ptr) Variable Function
+ 850(r004): 49(ptr) Variable Function
+ 855(r005): 854(ptr) Variable Function
+ 858(r006): 51(ptr) Variable Function
+ 861(r007): 49(ptr) Variable Function
+ 864(r009): 49(ptr) Variable Function
+ 867(r010): 49(ptr) Variable Function
+ 871(r011): 49(ptr) Variable Function
+ 874(r012): 49(ptr) Variable Function
+ 892(r013): 49(ptr) Variable Function
+ 895(r014): 49(ptr) Variable Function
+ 898(r015): 51(ptr) Variable Function
+ 901(r016): 49(ptr) Variable Function
+ 904(r017): 49(ptr) Variable Function
+ 907(r018): 49(ptr) Variable Function
+ 910(r019): 49(ptr) Variable Function
+ 913(r020): 49(ptr) Variable Function
+ 916(r021): 49(ptr) Variable Function
+ 919(r022): 49(ptr) Variable Function
+ 922(r023): 7(ptr) Variable Function
+ 926(r024): 7(ptr) Variable Function
+ 930(r025): 49(ptr) Variable Function
+ 941(r029): 49(ptr) Variable Function
+ 944(r030): 49(ptr) Variable Function
+ 947(r031): 49(ptr) Variable Function
+ 952(r032): 51(ptr) Variable Function
+ 957(r033): 51(ptr) Variable Function
+ 959(r034): 49(ptr) Variable Function
+ 962(r036): 49(ptr) Variable Function
+ 966(r037): 49(ptr) Variable Function
+ 969(r039): 49(ptr) Variable Function
+ 973(r040): 972(ptr) Variable Function
+ 976(r041): 972(ptr) Variable Function
+ 979(r042): 49(ptr) Variable Function
+ 983(r039a): 49(ptr) Variable Function
+ 988(r043): 7(ptr) Variable Function
+ 991(r044): 49(ptr) Variable Function
+ 994(r045): 49(ptr) Variable Function
+ 998(r046): 49(ptr) Variable Function
+ 1001(r047): 49(ptr) Variable Function
+ 1005(r048): 49(ptr) Variable Function
+ 1009(r049): 49(ptr) Variable Function
+ 1012(r050): 49(ptr) Variable Function
+ 1016(r051): 49(ptr) Variable Function
+ 1019(r052): 49(ptr) Variable Function
+ 1023(r053): 49(ptr) Variable Function
+ 1027(r054): 49(ptr) Variable Function
+ 1031(r055): 51(ptr) Variable Function
+ 1034(r056): 49(ptr) Variable Function
+ 1037(r057): 49(ptr) Variable Function
+ 1040(r058): 49(ptr) Variable Function
+ 1045(r059): 49(ptr) Variable Function
+ 1048(r060): 49(ptr) Variable Function
+ 1055(r061): 49(ptr) Variable Function
+ 1058(r062): 49(ptr) Variable Function
+ 1063(r063): 49(ptr) Variable Function
+ 1066(r064): 49(ptr) Variable Function
+ 1070(r065): 49(ptr) Variable Function
+ 1073(r066): 49(ptr) Variable Function
+ 1076(r067): 49(ptr) Variable Function
835: 48(fvec4) Load 53(inF0)
- 836: 135(bool) Any 835
- Store 834(r003) 836
- 838: 48(fvec4) Load 53(inF0)
- 839: 48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 838
- Store 837(r004) 839
- 843: 48(fvec4) Load 53(inF0)
- 844: 840(ivec4) Bitcast 843
- Store 842(r005) 844
- 846: 48(fvec4) Load 53(inF0)
- 847: 50(ivec4) Bitcast 846
- Store 845(r006) 847
- 849: 50(ivec4) Load 56(inU0)
- 850: 48(fvec4) Bitcast 849
- Store 848(r007) 850
- 852: 48(fvec4) Load 53(inF0)
- 853: 48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 852
- Store 851(r009) 853
- 855: 48(fvec4) Load 53(inF0)
- 856: 48(fvec4) Load 54(inF1)
- 857: 48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 855 856
- Store 854(r010) 857
+ 838: 836(bvec4) FOrdNotEqual 835 837
+ 839: 135(bool) All 838
+ Store 834(r000) 839
+ 841: 48(fvec4) Load 53(inF0)
+ 842: 48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 841
+ Store 840(r001) 842
+ 844: 48(fvec4) Load 53(inF0)
+ 845: 48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 844
+ Store 843(r002) 845
+ 847: 48(fvec4) Load 53(inF0)
+ 848: 836(bvec4) FOrdNotEqual 847 837
+ 849: 135(bool) Any 848
+ Store 846(r003) 849
+ 851: 48(fvec4) Load 53(inF0)
+ 852: 48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 851
+ Store 850(r004) 852
+ 856: 48(fvec4) Load 53(inF0)
+ 857: 853(ivec4) Bitcast 856
+ Store 855(r005) 857
859: 48(fvec4) Load 53(inF0)
- 860: 48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 859
- Store 858(r011) 860
- 862: 48(fvec4) Load 53(inF0)
- 863: 48(fvec4) Load 54(inF1)
- 864: 48(fvec4) Load 55(inF2)
- 865: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 862 863 864
- Store 861(r012) 865
- 866: 48(fvec4) Load 53(inF0)
- 869: 868(bvec4) FOrdLessThan 866 867
- 870: 135(bool) Any 869
- SelectionMerge 872 None
- BranchConditional 870 871 872
- 871: Label
- Kill
- 872: Label
+ 860: 50(ivec4) Bitcast 859
+ Store 858(r006) 860
+ 862: 50(ivec4) Load 56(inU0)
+ 863: 48(fvec4) Bitcast 862
+ Store 861(r007) 863
+ 865: 48(fvec4) Load 53(inF0)
+ 866: 48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 865
+ Store 864(r009) 866
+ 868: 48(fvec4) Load 53(inF0)
+ 869: 48(fvec4) Load 54(inF1)
+ 870: 48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 868 869
+ Store 867(r010) 870
+ 872: 48(fvec4) Load 53(inF0)
+ 873: 48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 872
+ Store 871(r011) 873
875: 48(fvec4) Load 53(inF0)
- 876: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 875
- Store 874(r013) 876
- 878: 48(fvec4) Load 53(inF0)
- 879: 48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 878
- Store 877(r014) 879
- 882: 50(ivec4) BitCount 881
- Store 880(r015) 882
- 884: 48(fvec4) Load 53(inF0)
- 885: 48(fvec4) DPdx 884
- Store 883(r016) 885
- 887: 48(fvec4) Load 53(inF0)
- 888: 48(fvec4) DPdxCoarse 887
- Store 886(r017) 888
- 890: 48(fvec4) Load 53(inF0)
- 891: 48(fvec4) DPdxFine 890
- Store 889(r018) 891
+ 876: 48(fvec4) Load 54(inF1)
+ 877: 48(fvec4) Load 55(inF2)
+ 878: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 875 876 877
+ Store 874(r012) 878
+ 879: 48(fvec4) Load 53(inF0)
+ 880: 836(bvec4) FOrdLessThan 879 837
+ 881: 135(bool) Any 880
+ SelectionMerge 883 None
+ BranchConditional 881 882 883
+ 882: Label
+ Kill
+ 883: Label
+ 885: 50(ivec4) Load 56(inU0)
+ 887: 836(bvec4) ULessThan 885 886
+ 888: 135(bool) Any 887
+ SelectionMerge 890 None
+ BranchConditional 888 889 890
+ 889: Label
+ Kill
+ 890: Label
893: 48(fvec4) Load 53(inF0)
- 894: 48(fvec4) DPdy 893
- Store 892(r019) 894
+ 894: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 893
+ Store 892(r013) 894
896: 48(fvec4) Load 53(inF0)
- 897: 48(fvec4) DPdyCoarse 896
- Store 895(r020) 897
- 899: 48(fvec4) Load 53(inF0)
- 900: 48(fvec4) DPdyFine 899
- Store 898(r021) 900
+ 897: 48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 896
+ Store 895(r014) 897
+ 900: 50(ivec4) BitCount 899
+ Store 898(r015) 900
902: 48(fvec4) Load 53(inF0)
- 903: 48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 902
- Store 901(r022) 903
+ 903: 48(fvec4) DPdx 902
+ Store 901(r016) 903
905: 48(fvec4) Load 53(inF0)
- 906: 48(fvec4) Load 54(inF1)
- 907: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 905 906
- Store 904(r023) 907
- 909: 48(fvec4) Load 53(inF0)
- 910: 48(fvec4) Load 54(inF1)
- 911: 6(float) Dot 909 910
- Store 908(r024) 911
- 913: 7(ptr) AccessChain 53(inF0) 527
- 914: 6(float) Load 913
- 915: 7(ptr) AccessChain 54(inF1) 527
- 916: 6(float) Load 915
- 917: 6(float) FMul 914 916
- 918: 7(ptr) AccessChain 53(inF0) 528
- 919: 6(float) Load 918
- 920: 7(ptr) AccessChain 54(inF1) 635
- 921: 6(float) Load 920
- 922: 48(fvec4) CompositeConstruct 287 917 919 921
- Store 912(r025) 922
- 924: 48(fvec4) Load 53(inF0)
- 925: 48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 924
- Store 923(r029) 925
+ 906: 48(fvec4) DPdxCoarse 905
+ Store 904(r017) 906
+ 908: 48(fvec4) Load 53(inF0)
+ 909: 48(fvec4) DPdxFine 908
+ Store 907(r018) 909
+ 911: 48(fvec4) Load 53(inF0)
+ 912: 48(fvec4) DPdy 911
+ Store 910(r019) 912
+ 914: 48(fvec4) Load 53(inF0)
+ 915: 48(fvec4) DPdyCoarse 914
+ Store 913(r020) 915
+ 917: 48(fvec4) Load 53(inF0)
+ 918: 48(fvec4) DPdyFine 917
+ Store 916(r021) 918
+ 920: 48(fvec4) Load 53(inF0)
+ 921: 48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 920
+ Store 919(r022) 921
+ 923: 48(fvec4) Load 53(inF0)
+ 924: 48(fvec4) Load 54(inF1)
+ 925: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 923 924
+ Store 922(r023) 925
927: 48(fvec4) Load 53(inF0)
- 928: 48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 927
- Store 926(r030) 928
- 930: 48(fvec4) Load 53(inF0)
- 931: 48(fvec4) Load 54(inF1)
- 932: 48(fvec4) Load 55(inF2)
- 933: 48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 930 931 932
- Store 929(r031) 933
- 938: 50(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 937
- Store 934(r032) 938
- 940: 50(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 937
- Store 939(r033) 940
+ 928: 48(fvec4) Load 54(inF1)
+ 929: 6(float) Dot 927 928
+ Store 926(r024) 929
+ 931: 7(ptr) AccessChain 53(inF0) 533
+ 932: 6(float) Load 931
+ 933: 7(ptr) AccessChain 54(inF1) 533
+ 934: 6(float) Load 933
+ 935: 6(float) FMul 932 934
+ 936: 7(ptr) AccessChain 53(inF0) 534
+ 937: 6(float) Load 936
+ 938: 7(ptr) AccessChain 54(inF1) 650
+ 939: 6(float) Load 938
+ 940: 48(fvec4) CompositeConstruct 289 935 937 939
+ Store 930(r025) 940
942: 48(fvec4) Load 53(inF0)
- 943: 48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 942
- Store 941(r034) 943
+ 943: 48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 942
+ Store 941(r029) 943
945: 48(fvec4) Load 53(inF0)
- 946: 48(fvec4) Load 54(inF1)
- 947: 48(fvec4) FMod 945 946
- Store 944(r036) 947
- 949: 48(fvec4) Load 53(inF0)
- 950: 48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 949
- Store 948(r037) 950
- 952: 48(fvec4) Load 53(inF0)
- 954:953(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 952
- 955: 840(ivec4) CompositeExtract 954 1
- Store 54(inF1) 955
- 956: 48(fvec4) CompositeExtract 954 0
- Store 951(r038) 956
- 958: 48(fvec4) Load 53(inF0)
- 959: 48(fvec4) Fwidth 958
- Store 957(r039) 959
- 962: 48(fvec4) Load 53(inF0)
- 963: 868(bvec4) IsInf 962
- Store 961(r040) 963
- 965: 48(fvec4) Load 53(inF0)
- 966: 868(bvec4) IsNan 965
- Store 964(r041) 966
- 968: 48(fvec4) Load 53(inF0)
- 969: 48(fvec4) Load 54(inF1)
- 970: 48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 968 969
- Store 967(r042) 970
- 972: 48(fvec4) Load 53(inF0)
- 973: 48(fvec4) Load 54(inF1)
- 974: 48(fvec4) Load 55(inF2)
- 975: 48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 972 973 974
- Store 971(r039a) 975
+ 946: 48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 945
+ Store 944(r030) 946
+ 948: 48(fvec4) Load 53(inF0)
+ 949: 48(fvec4) Load 54(inF1)
+ 950: 48(fvec4) Load 55(inF2)
+ 951: 48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 948 949 950
+ Store 947(r031) 951
+ 956: 50(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 955
+ Store 952(r032) 956
+ 958: 50(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 955
+ Store 957(r033) 958
+ 960: 48(fvec4) Load 53(inF0)
+ 961: 48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 960
+ Store 959(r034) 961
+ 963: 48(fvec4) Load 53(inF0)
+ 964: 48(fvec4) Load 54(inF1)
+ 965: 48(fvec4) FMod 963 964
+ Store 962(r036) 965
+ 967: 48(fvec4) Load 53(inF0)
+ 968: 48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 967
+ Store 966(r037) 968
+ 970: 48(fvec4) Load 53(inF0)
+ 971: 48(fvec4) Fwidth 970
+ Store 969(r039) 971
+ 974: 48(fvec4) Load 53(inF0)
+ 975: 836(bvec4) IsInf 974
+ Store 973(r040) 975
977: 48(fvec4) Load 53(inF0)
- 978: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 977
- Store 976(r043) 978
+ 978: 836(bvec4) IsNan 977
+ Store 976(r041) 978
980: 48(fvec4) Load 53(inF0)
- 981: 48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 980
- Store 979(r044) 981
- 983: 48(fvec4) Load 53(inF0)
- 984: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 983
- 985: 48(fvec4) VectorTimesScalar 984 266
- Store 982(r045) 985
- 987: 48(fvec4) Load 53(inF0)
- 988: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 987
- Store 986(r046) 988
- 990: 48(fvec4) Load 53(inF0)
- 991: 48(fvec4) Load 54(inF1)
- 992: 48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 990 991
- Store 989(r047) 992
- 994: 48(fvec4) Load 53(inF0)
- 995: 48(fvec4) Load 54(inF1)
- 996: 48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 994 995
- Store 993(r048) 996
- 998: 48(fvec4) Load 53(inF0)
- 999: 48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 998
- Store 997(r049) 999
- 1001: 48(fvec4) Load 53(inF0)
- 1002: 48(fvec4) Load 54(inF1)
- 1003: 48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 1001 1002
- Store 1000(r050) 1003
- 1005: 48(fvec4) Load 53(inF0)
- 1006: 48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 1005
- Store 1004(r051) 1006
- 1008: 48(fvec4) Load 53(inF0)
- 1009: 48(fvec4) CompositeConstruct 287 287 287 287
- 1010: 48(fvec4) FDiv 1009 1008
- Store 1007(r052) 1010
- 1012: 48(fvec4) Load 53(inF0)
- 1013: 48(fvec4) Load 54(inF1)
- 1014: 48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1012 1013
- Store 1011(r053) 1014
- 1016: 48(fvec4) Load 53(inF0)
- 1017: 48(fvec4) Load 54(inF1)
- 1018: 48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1016 1017 524
- Store 1015(r054) 1018
- 1021: 50(ivec4) BitReverse 1020
- Store 1019(r055) 1021
- 1023: 48(fvec4) Load 53(inF0)
- 1024: 48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1023
- Store 1022(r056) 1024
- 1026: 48(fvec4) Load 53(inF0)
- 1027: 48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1026
- Store 1025(r057) 1027
- 1029: 48(fvec4) Load 53(inF0)
- 1030: 48(fvec4) CompositeConstruct 179 179 179 179
- 1031: 48(fvec4) CompositeConstruct 287 287 287 287
- 1032: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1029 1030 1031
- Store 1028(r058) 1032
- 1034: 48(fvec4) Load 53(inF0)
- 1035: 48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1034
- Store 1033(r059) 1035
- 1037: 48(fvec4) Load 53(inF0)
- 1038: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1037
- Store 1036(r060) 1038
- 1039: 48(fvec4) Load 53(inF0)
- 1040: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1039
- Store 54(inF1) 1040
+ 981: 48(fvec4) Load 54(inF1)
+ 982: 48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 980 981
+ Store 979(r042) 982
+ 984: 48(fvec4) Load 53(inF0)
+ 985: 48(fvec4) Load 54(inF1)
+ 986: 48(fvec4) Load 55(inF2)
+ 987: 48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 984 985 986
+ Store 983(r039a) 987
+ 989: 48(fvec4) Load 53(inF0)
+ 990: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 989
+ Store 988(r043) 990
+ 992: 48(fvec4) Load 53(inF0)
+ 993: 48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 992
+ Store 991(r044) 993
+ 995: 48(fvec4) Load 53(inF0)
+ 996: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 995
+ 997: 48(fvec4) VectorTimesScalar 996 268
+ Store 994(r045) 997
+ 999: 48(fvec4) Load 53(inF0)
+ 1000: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 999
+ Store 998(r046) 1000
+ 1002: 48(fvec4) Load 53(inF0)
+ 1003: 48(fvec4) Load 54(inF1)
+ 1004: 48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 1002 1003
+ Store 1001(r047) 1004
+ 1006: 48(fvec4) Load 53(inF0)
+ 1007: 48(fvec4) Load 54(inF1)
+ 1008: 48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 1006 1007
+ Store 1005(r048) 1008
+ 1010: 48(fvec4) Load 53(inF0)
+ 1011: 48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 1010
+ Store 1009(r049) 1011
+ 1013: 48(fvec4) Load 53(inF0)
+ 1014: 48(fvec4) Load 54(inF1)
+ 1015: 48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 1013 1014
+ Store 1012(r050) 1015
+ 1017: 48(fvec4) Load 53(inF0)
+ 1018: 48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 1017
+ Store 1016(r051) 1018
+ 1020: 48(fvec4) Load 53(inF0)
+ 1021: 48(fvec4) CompositeConstruct 289 289 289 289
+ 1022: 48(fvec4) FDiv 1021 1020
+ Store 1019(r052) 1022
+ 1024: 48(fvec4) Load 53(inF0)
+ 1025: 48(fvec4) Load 54(inF1)
+ 1026: 48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1024 1025
+ Store 1023(r053) 1026
+ 1028: 48(fvec4) Load 53(inF0)
+ 1029: 48(fvec4) Load 54(inF1)
+ 1030: 48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1028 1029 530
+ Store 1027(r054) 1030
+ 1033: 50(ivec4) BitReverse 1032
+ Store 1031(r055) 1033
+ 1035: 48(fvec4) Load 53(inF0)
+ 1036: 48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1035
+ Store 1034(r056) 1036
+ 1038: 48(fvec4) Load 53(inF0)
+ 1039: 48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1038
+ Store 1037(r057) 1039
1041: 48(fvec4) Load 53(inF0)
- 1042: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1041
- Store 55(inF2) 1042
- 1044: 48(fvec4) Load 53(inF0)
- 1045: 48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1044
- Store 1043(r061) 1045
- 1047: 48(fvec4) Load 53(inF0)
- 1048: 48(fvec4) Load 54(inF1)
- 1049: 48(fvec4) Load 55(inF2)
- 1050: 48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1047 1048 1049
- Store 1046(r062) 1050
- 1052: 48(fvec4) Load 53(inF0)
- 1053: 48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1052
- Store 1051(r063) 1053
- 1055: 48(fvec4) Load 53(inF0)
- 1056: 48(fvec4) Load 54(inF1)
- 1057: 48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1055 1056
- Store 1054(r064) 1057
+ 1042: 48(fvec4) CompositeConstruct 139 139 139 139
+ 1043: 48(fvec4) CompositeConstruct 289 289 289 289
+ 1044: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1041 1042 1043
+ Store 1040(r058) 1044
+ 1046: 48(fvec4) Load 53(inF0)
+ 1047: 48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1046
+ Store 1045(r059) 1047
+ 1049: 48(fvec4) Load 53(inF0)
+ 1050: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1049
+ Store 1048(r060) 1050
+ 1051: 48(fvec4) Load 53(inF0)
+ 1052: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1051
+ Store 54(inF1) 1052
+ 1053: 48(fvec4) Load 53(inF0)
+ 1054: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1053
+ Store 55(inF2) 1054
+ 1056: 48(fvec4) Load 53(inF0)
+ 1057: 48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1056
+ Store 1055(r061) 1057
1059: 48(fvec4) Load 53(inF0)
- 1060: 48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1059
- Store 1058(r065) 1060
- 1062: 48(fvec4) Load 53(inF0)
- 1063: 48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1062
- Store 1061(r066) 1063
- 1065: 48(fvec4) Load 53(inF0)
- 1066: 48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1065
- Store 1064(r067) 1066
- ReturnValue 1068
+ 1060: 48(fvec4) Load 54(inF1)
+ 1061: 48(fvec4) Load 55(inF2)
+ 1062: 48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1059 1060 1061
+ Store 1058(r062) 1062
+ 1064: 48(fvec4) Load 53(inF0)
+ 1065: 48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1064
+ Store 1063(r063) 1065
+ 1067: 48(fvec4) Load 53(inF0)
+ 1068: 48(fvec4) Load 54(inF1)
+ 1069: 48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1067 1068
+ Store 1066(r064) 1069
+ 1071: 48(fvec4) Load 53(inF0)
+ 1072: 48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1071
+ Store 1070(r065) 1072
+ 1074: 48(fvec4) Load 53(inF0)
+ 1075: 48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1074
+ Store 1073(r066) 1075
+ 1077: 48(fvec4) Load 53(inF0)
+ 1078: 48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1077
+ Store 1076(r067) 1078
+ ReturnValue 1080
FunctionEnd
66(PixelShaderFunction2x2(mf22;mf22;mf22;): 60 Function None 62
63(inF0): 61(ptr) FunctionParameter
64(inF1): 61(ptr) FunctionParameter
65(inF2): 61(ptr) FunctionParameter
67: Label
- 1071(r000): 136(ptr) Variable Function
- 1074(r001): 61(ptr) Variable Function
- 1079(r003): 136(ptr) Variable Function
- 1082(r004): 61(ptr) Variable Function
- 1085(r005): 61(ptr) Variable Function
- 1088(r006): 61(ptr) Variable Function
- 1092(r007): 61(ptr) Variable Function
- 1103(r008): 61(ptr) Variable Function
- 1108(r009): 61(ptr) Variable Function
- 1111(r010): 61(ptr) Variable Function
- 1114(r011): 61(ptr) Variable Function
- 1117(r012): 61(ptr) Variable Function
- 1120(r013): 61(ptr) Variable Function
- 1123(r014): 61(ptr) Variable Function
- 1126(r015): 61(ptr) Variable Function
- 1129(r016): 61(ptr) Variable Function
- 1132(r017): 61(ptr) Variable Function
- 1135(r018): 7(ptr) Variable Function
- 1138(r019): 61(ptr) Variable Function
- 1141(R020): 61(ptr) Variable Function
- 1144(r021): 61(ptr) Variable Function
- 1147(r022): 61(ptr) Variable Function
- 1157(r023): 61(ptr) Variable Function
- 1160(r024): 61(ptr) Variable Function
- 1166(r025): 61(ptr) Variable Function
- 1169(r026): 61(ptr) Variable Function
- 1173(r026a): 61(ptr) Variable Function
- 1178(r027): 61(ptr) Variable Function
- 1181(r028): 61(ptr) Variable Function
- 1185(r029): 61(ptr) Variable Function
- 1188(r030): 61(ptr) Variable Function
- 1192(r031): 61(ptr) Variable Function
- 1196(r032): 61(ptr) Variable Function
- 1200(r033): 61(ptr) Variable Function
- 1203(r034): 61(ptr) Variable Function
- 1206(r035): 61(ptr) Variable Function
- 1209(r036): 61(ptr) Variable Function
- 1214(r037): 61(ptr) Variable Function
- 1217(r038): 61(ptr) Variable Function
- 1224(r039): 61(ptr) Variable Function
- 1227(r049): 61(ptr) Variable Function
- 1232(r041): 61(ptr) Variable Function
- 1235(r042): 61(ptr) Variable Function
- 1239(r043): 61(ptr) Variable Function
- 1242(r044): 61(ptr) Variable Function
- 1247(r046): 61(ptr) Variable Function
- 1072: 60 Load 63(inF0)
- 1073: 135(bool) All 1072
- Store 1071(r000) 1073
- 1075: 60 Load 63(inF0)
- 1076: 60 ExtInst 1(GLSL.std.450) 4(FAbs) 1075
- Store 1074(r001) 1076
- 1077: 60 Load 63(inF0)
- 1078: 60 ExtInst 1(GLSL.std.450) 17(Acos) 1077
- 1080: 60 Load 63(inF0)
- 1081: 135(bool) Any 1080
- Store 1079(r003) 1081
- 1083: 60 Load 63(inF0)
- 1084: 60 ExtInst 1(GLSL.std.450) 16(Asin) 1083
- Store 1082(r004) 1084
- 1086: 60 Load 63(inF0)
- 1087: 60 ExtInst 1(GLSL.std.450) 18(Atan) 1086
- Store 1085(r005) 1087
+ 1083(r000): 136(ptr) Variable Function
+ 1088(r001): 61(ptr) Variable Function
+ 1093(r003): 136(ptr) Variable Function
+ 1097(r004): 61(ptr) Variable Function
+ 1100(r005): 61(ptr) Variable Function
+ 1103(r006): 61(ptr) Variable Function
+ 1107(r007): 61(ptr) Variable Function
+ 1117(r008): 61(ptr) Variable Function
+ 1122(r009): 61(ptr) Variable Function
+ 1125(r010): 61(ptr) Variable Function
+ 1128(r011): 61(ptr) Variable Function
+ 1131(r012): 61(ptr) Variable Function
+ 1134(r013): 61(ptr) Variable Function
+ 1137(r014): 61(ptr) Variable Function
+ 1140(r015): 61(ptr) Variable Function
+ 1143(r016): 61(ptr) Variable Function
+ 1146(r017): 61(ptr) Variable Function
+ 1149(r018): 7(ptr) Variable Function
+ 1152(r019): 61(ptr) Variable Function
+ 1155(R020): 61(ptr) Variable Function
+ 1158(r021): 61(ptr) Variable Function
+ 1161(r022): 61(ptr) Variable Function
+ 1171(r023): 61(ptr) Variable Function
+ 1174(r025): 61(ptr) Variable Function
+ 1177(r026): 61(ptr) Variable Function
+ 1181(r026a): 61(ptr) Variable Function
+ 1186(r027): 61(ptr) Variable Function
+ 1189(r028): 61(ptr) Variable Function
+ 1193(r029): 61(ptr) Variable Function
+ 1196(r030): 61(ptr) Variable Function
+ 1200(r031): 61(ptr) Variable Function
+ 1204(r032): 61(ptr) Variable Function
+ 1208(r033): 61(ptr) Variable Function
+ 1211(r034): 61(ptr) Variable Function
+ 1214(r035): 61(ptr) Variable Function
+ 1217(r036): 61(ptr) Variable Function
+ 1222(r037): 61(ptr) Variable Function
+ 1225(r038): 61(ptr) Variable Function
+ 1232(r039): 61(ptr) Variable Function
+ 1235(r049): 61(ptr) Variable Function
+ 1240(r041): 61(ptr) Variable Function
+ 1243(r042): 61(ptr) Variable Function
+ 1247(r043): 61(ptr) Variable Function
+ 1250(r044): 61(ptr) Variable Function
+ 1255(r046): 61(ptr) Variable Function
+ 1084: 60 Load 63(inF0)
+ 1086: 1085 FOrdNotEqual 1084 139
+ 1087: 135(bool) All 1086
+ Store 1083(r000) 1087
1089: 60 Load 63(inF0)
- 1090: 60 Load 64(inF1)
- 1091: 60 ExtInst 1(GLSL.std.450) 25(Atan2) 1089 1090
- Store 1088(r006) 1091
- 1093: 60 Load 63(inF0)
- 1094: 60 ExtInst 1(GLSL.std.450) 9(Ceil) 1093
- Store 1092(r007) 1094
- 1095: 60 Load 63(inF0)
- 1098: 1097 FOrdLessThan 1095 1096
- 1099: 135(bool) Any 1098
- SelectionMerge 1101 None
- BranchConditional 1099 1100 1101
- 1100: Label
- Kill
- 1101: Label
+ 1090: 60 ExtInst 1(GLSL.std.450) 4(FAbs) 1089
+ Store 1088(r001) 1090
+ 1091: 60 Load 63(inF0)
+ 1092: 60 ExtInst 1(GLSL.std.450) 17(Acos) 1091
+ 1094: 60 Load 63(inF0)
+ 1095: 1085 FOrdNotEqual 1094 139
+ 1096: 135(bool) Any 1095
+ Store 1093(r003) 1096
+ 1098: 60 Load 63(inF0)
+ 1099: 60 ExtInst 1(GLSL.std.450) 16(Asin) 1098
+ Store 1097(r004) 1099
+ 1101: 60 Load 63(inF0)
+ 1102: 60 ExtInst 1(GLSL.std.450) 18(Atan) 1101
+ Store 1100(r005) 1102
1104: 60 Load 63(inF0)
1105: 60 Load 64(inF1)
- 1106: 60 Load 65(inF2)
- 1107: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 1104 1105 1106
- Store 1103(r008) 1107
- 1109: 60 Load 63(inF0)
- 1110: 60 ExtInst 1(GLSL.std.450) 14(Cos) 1109
- Store 1108(r009) 1110
- 1112: 60 Load 63(inF0)
- 1113: 60 ExtInst 1(GLSL.std.450) 20(Cosh) 1112
- Store 1111(r010) 1113
- 1115: 60 Load 63(inF0)
- 1116: 60 DPdx 1115
- Store 1114(r011) 1116
+ 1106: 60 ExtInst 1(GLSL.std.450) 25(Atan2) 1104 1105
+ Store 1103(r006) 1106
+ 1108: 60 Load 63(inF0)
+ 1109: 60 ExtInst 1(GLSL.std.450) 9(Ceil) 1108
+ Store 1107(r007) 1109
+ 1110: 60 Load 63(inF0)
+ 1112: 1085 FOrdLessThan 1110 1111
+ 1113: 135(bool) Any 1112
+ SelectionMerge 1115 None
+ BranchConditional 1113 1114 1115
+ 1114: Label
+ Kill
+ 1115: Label
1118: 60 Load 63(inF0)
- 1119: 60 DPdxCoarse 1118
- Store 1117(r012) 1119
- 1121: 60 Load 63(inF0)
- 1122: 60 DPdxFine 1121
- Store 1120(r013) 1122
- 1124: 60 Load 63(inF0)
- 1125: 60 DPdy 1124
- Store 1123(r014) 1125
- 1127: 60 Load 63(inF0)
- 1128: 60 DPdyCoarse 1127
- Store 1126(r015) 1128
- 1130: 60 Load 63(inF0)
- 1131: 60 DPdyFine 1130
- Store 1129(r016) 1131
- 1133: 60 Load 63(inF0)
- 1134: 60 ExtInst 1(GLSL.std.450) 12(Degrees) 1133
- Store 1132(r017) 1134
- 1136: 60 Load 63(inF0)
- 1137: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1136
- Store 1135(r018) 1137
- 1139: 60 Load 63(inF0)
- 1140: 60 ExtInst 1(GLSL.std.450) 27(Exp) 1139
- Store 1138(r019) 1140
- 1142: 60 Load 63(inF0)
- 1143: 60 ExtInst 1(GLSL.std.450) 29(Exp2) 1142
- Store 1141(R020) 1143
- 1145: 60 Load 63(inF0)
- 1146: 60 ExtInst 1(GLSL.std.450) 8(Floor) 1145
- Store 1144(r021) 1146
- 1148: 60 Load 63(inF0)
- 1149: 60 Load 64(inF1)
- 1150: 24(fvec2) CompositeExtract 1148 0
- 1151: 24(fvec2) CompositeExtract 1149 0
- 1152: 24(fvec2) FMod 1150 1151
- 1153: 24(fvec2) CompositeExtract 1148 1
- 1154: 24(fvec2) CompositeExtract 1149 1
- 1155: 24(fvec2) FMod 1153 1154
- 1156: 60 CompositeConstruct 1152 1155
- Store 1147(r022) 1156
- 1158: 60 Load 63(inF0)
- 1159: 60 ExtInst 1(GLSL.std.450) 10(Fract) 1158
- Store 1157(r023) 1159
- 1161: 60 Load 63(inF0)
- 1163:1162(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1161
- 1164: 356(ivec2) CompositeExtract 1163 1
- Store 64(inF1) 1164
- 1165: 60 CompositeExtract 1163 0
- Store 1160(r024) 1165
- 1167: 60 Load 63(inF0)
- 1168: 60 Fwidth 1167
- Store 1166(r025) 1168
- 1170: 60 Load 63(inF0)
- 1171: 60 Load 64(inF1)
- 1172: 60 ExtInst 1(GLSL.std.450) 53(Ldexp) 1170 1171
- Store 1169(r026) 1172
- 1174: 60 Load 63(inF0)
- 1175: 60 Load 64(inF1)
- 1176: 60 Load 65(inF2)
- 1177: 60 ExtInst 1(GLSL.std.450) 46(FMix) 1174 1175 1176
- Store 1173(r026a) 1177
- 1179: 60 Load 63(inF0)
- 1180: 60 ExtInst 1(GLSL.std.450) 28(Log) 1179
- Store 1178(r027) 1180
+ 1119: 60 Load 64(inF1)
+ 1120: 60 Load 65(inF2)
+ 1121: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 1118 1119 1120
+ Store 1117(r008) 1121
+ 1123: 60 Load 63(inF0)
+ 1124: 60 ExtInst 1(GLSL.std.450) 14(Cos) 1123
+ Store 1122(r009) 1124
+ 1126: 60 Load 63(inF0)
+ 1127: 60 ExtInst 1(GLSL.std.450) 20(Cosh) 1126
+ Store 1125(r010) 1127
+ 1129: 60 Load 63(inF0)
+ 1130: 60 DPdx 1129
+ Store 1128(r011) 1130
+ 1132: 60 Load 63(inF0)
+ 1133: 60 DPdxCoarse 1132
+ Store 1131(r012) 1133
+ 1135: 60 Load 63(inF0)
+ 1136: 60 DPdxFine 1135
+ Store 1134(r013) 1136
+ 1138: 60 Load 63(inF0)
+ 1139: 60 DPdy 1138
+ Store 1137(r014) 1139
+ 1141: 60 Load 63(inF0)
+ 1142: 60 DPdyCoarse 1141
+ Store 1140(r015) 1142
+ 1144: 60 Load 63(inF0)
+ 1145: 60 DPdyFine 1144
+ Store 1143(r016) 1145
+ 1147: 60 Load 63(inF0)
+ 1148: 60 ExtInst 1(GLSL.std.450) 12(Degrees) 1147
+ Store 1146(r017) 1148
+ 1150: 60 Load 63(inF0)
+ 1151: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1150
+ Store 1149(r018) 1151
+ 1153: 60 Load 63(inF0)
+ 1154: 60 ExtInst 1(GLSL.std.450) 27(Exp) 1153
+ Store 1152(r019) 1154
+ 1156: 60 Load 63(inF0)
+ 1157: 60 ExtInst 1(GLSL.std.450) 29(Exp2) 1156
+ Store 1155(R020) 1157
+ 1159: 60 Load 63(inF0)
+ 1160: 60 ExtInst 1(GLSL.std.450) 8(Floor) 1159
+ Store 1158(r021) 1160
+ 1162: 60 Load 63(inF0)
+ 1163: 60 Load 64(inF1)
+ 1164: 24(fvec2) CompositeExtract 1162 0
+ 1165: 24(fvec2) CompositeExtract 1163 0
+ 1166: 24(fvec2) FMod 1164 1165
+ 1167: 24(fvec2) CompositeExtract 1162 1
+ 1168: 24(fvec2) CompositeExtract 1163 1
+ 1169: 24(fvec2) FMod 1167 1168
+ 1170: 60 CompositeConstruct 1166 1169
+ Store 1161(r022) 1170
+ 1172: 60 Load 63(inF0)
+ 1173: 60 ExtInst 1(GLSL.std.450) 10(Fract) 1172
+ Store 1171(r023) 1173
+ 1175: 60 Load 63(inF0)
+ 1176: 60 Fwidth 1175
+ Store 1174(r025) 1176
+ 1178: 60 Load 63(inF0)
+ 1179: 60 Load 64(inF1)
+ 1180: 60 ExtInst 1(GLSL.std.450) 53(Ldexp) 1178 1179
+ Store 1177(r026) 1180
1182: 60 Load 63(inF0)
- 1183: 60 ExtInst 1(GLSL.std.450) 30(Log2) 1182
- 1184: 60 MatrixTimesScalar 1183 266
- Store 1181(r028) 1184
- 1186: 60 Load 63(inF0)
- 1187: 60 ExtInst 1(GLSL.std.450) 30(Log2) 1186
- Store 1185(r029) 1187
- 1189: 60 Load 63(inF0)
- 1190: 60 Load 64(inF1)
- 1191: 60 ExtInst 1(GLSL.std.450) 40(FMax) 1189 1190
- Store 1188(r030) 1191
- 1193: 60 Load 63(inF0)
- 1194: 60 Load 64(inF1)
- 1195: 60 ExtInst 1(GLSL.std.450) 37(FMin) 1193 1194
- Store 1192(r031) 1195
+ 1183: 60 Load 64(inF1)
+ 1184: 60 Load 65(inF2)
+ 1185: 60 ExtInst 1(GLSL.std.450) 46(FMix) 1182 1183 1184
+ Store 1181(r026a) 1185
+ 1187: 60 Load 63(inF0)
+ 1188: 60 ExtInst 1(GLSL.std.450) 28(Log) 1187
+ Store 1186(r027) 1188
+ 1190: 60 Load 63(inF0)
+ 1191: 60 ExtInst 1(GLSL.std.450) 30(Log2) 1190
+ 1192: 60 MatrixTimesScalar 1191 268
+ Store 1189(r028) 1192
+ 1194: 60 Load 63(inF0)
+ 1195: 60 ExtInst 1(GLSL.std.450) 30(Log2) 1194
+ Store 1193(r029) 1195
1197: 60 Load 63(inF0)
1198: 60 Load 64(inF1)
- 1199: 60 ExtInst 1(GLSL.std.450) 26(Pow) 1197 1198
- Store 1196(r032) 1199
+ 1199: 60 ExtInst 1(GLSL.std.450) 40(FMax) 1197 1198
+ Store 1196(r030) 1199
1201: 60 Load 63(inF0)
- 1202: 60 ExtInst 1(GLSL.std.450) 11(Radians) 1201
- Store 1200(r033) 1202
- 1204: 60 Load 63(inF0)
- 1205: 60 ExtInst 1(GLSL.std.450) 2(RoundEven) 1204
- Store 1203(r034) 1205
- 1207: 60 Load 63(inF0)
- 1208: 60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1207
- Store 1206(r035) 1208
- 1210: 60 Load 63(inF0)
- 1211: 24(fvec2) CompositeConstruct 179 179
- 1212: 24(fvec2) CompositeConstruct 287 287
- 1213: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 1210 1211 1212
- Store 1209(r036) 1213
+ 1202: 60 Load 64(inF1)
+ 1203: 60 ExtInst 1(GLSL.std.450) 37(FMin) 1201 1202
+ Store 1200(r031) 1203
+ 1205: 60 Load 63(inF0)
+ 1206: 60 Load 64(inF1)
+ 1207: 60 ExtInst 1(GLSL.std.450) 26(Pow) 1205 1206
+ Store 1204(r032) 1207
+ 1209: 60 Load 63(inF0)
+ 1210: 60 ExtInst 1(GLSL.std.450) 11(Radians) 1209
+ Store 1208(r033) 1210
+ 1212: 60 Load 63(inF0)
+ 1213: 60 ExtInst 1(GLSL.std.450) 2(RoundEven) 1212
+ Store 1211(r034) 1213
1215: 60 Load 63(inF0)
- 1216: 60 ExtInst 1(GLSL.std.450) 6(FSign) 1215
- Store 1214(r037) 1216
+ 1216: 60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1215
+ Store 1214(r035) 1216
1218: 60 Load 63(inF0)
- 1219: 60 ExtInst 1(GLSL.std.450) 13(Sin) 1218
- Store 1217(r038) 1219
- 1220: 60 Load 63(inF0)
- 1221: 60 ExtInst 1(GLSL.std.450) 13(Sin) 1220
- Store 64(inF1) 1221
- 1222: 60 Load 63(inF0)
- 1223: 60 ExtInst 1(GLSL.std.450) 14(Cos) 1222
- Store 65(inF2) 1223
- 1225: 60 Load 63(inF0)
- 1226: 60 ExtInst 1(GLSL.std.450) 19(Sinh) 1225
- Store 1224(r039) 1226
+ 1219: 24(fvec2) CompositeConstruct 139 139
+ 1220: 24(fvec2) CompositeConstruct 289 289
+ 1221: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 1218 1219 1220
+ Store 1217(r036) 1221
+ 1223: 60 Load 63(inF0)
+ 1224: 60 ExtInst 1(GLSL.std.450) 6(FSign) 1223
+ Store 1222(r037) 1224
+ 1226: 60 Load 63(inF0)
+ 1227: 60 ExtInst 1(GLSL.std.450) 13(Sin) 1226
+ Store 1225(r038) 1227
1228: 60 Load 63(inF0)
- 1229: 60 Load 64(inF1)
- 1230: 60 Load 65(inF2)
- 1231: 60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1228 1229 1230
- Store 1227(r049) 1231
+ 1229: 60 ExtInst 1(GLSL.std.450) 13(Sin) 1228
+ Store 64(inF1) 1229
+ 1230: 60 Load 63(inF0)
+ 1231: 60 ExtInst 1(GLSL.std.450) 14(Cos) 1230
+ Store 65(inF2) 1231
1233: 60 Load 63(inF0)
- 1234: 60 ExtInst 1(GLSL.std.450) 31(Sqrt) 1233
- Store 1232(r041) 1234
+ 1234: 60 ExtInst 1(GLSL.std.450) 19(Sinh) 1233
+ Store 1232(r039) 1234
1236: 60 Load 63(inF0)
1237: 60 Load 64(inF1)
- 1238: 60 ExtInst 1(GLSL.std.450) 48(Step) 1236 1237
- Store 1235(r042) 1238
- 1240: 60 Load 63(inF0)
- 1241: 60 ExtInst 1(GLSL.std.450) 15(Tan) 1240
- Store 1239(r043) 1241
- 1243: 60 Load 63(inF0)
- 1244: 60 ExtInst 1(GLSL.std.450) 21(Tanh) 1243
- Store 1242(r044) 1244
- 1245: 60 Load 63(inF0)
- 1246: 60 Transpose 1245
+ 1238: 60 Load 65(inF2)
+ 1239: 60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1236 1237 1238
+ Store 1235(r049) 1239
+ 1241: 60 Load 63(inF0)
+ 1242: 60 ExtInst 1(GLSL.std.450) 31(Sqrt) 1241
+ Store 1240(r041) 1242
+ 1244: 60 Load 63(inF0)
+ 1245: 60 Load 64(inF1)
+ 1246: 60 ExtInst 1(GLSL.std.450) 48(Step) 1244 1245
+ Store 1243(r042) 1246
1248: 60 Load 63(inF0)
- 1249: 60 ExtInst 1(GLSL.std.450) 3(Trunc) 1248
- Store 1247(r046) 1249
- ReturnValue 1251
+ 1249: 60 ExtInst 1(GLSL.std.450) 15(Tan) 1248
+ Store 1247(r043) 1249
+ 1251: 60 Load 63(inF0)
+ 1252: 60 ExtInst 1(GLSL.std.450) 21(Tanh) 1251
+ Store 1250(r044) 1252
+ 1253: 60 Load 63(inF0)
+ 1254: 60 Transpose 1253
+ 1256: 60 Load 63(inF0)
+ 1257: 60 ExtInst 1(GLSL.std.450) 3(Trunc) 1256
+ Store 1255(r046) 1257
+ ReturnValue 1259
FunctionEnd
74(PixelShaderFunction3x3(mf33;mf33;mf33;): 68 Function None 70
71(inF0): 69(ptr) FunctionParameter
72(inF1): 69(ptr) FunctionParameter
73(inF2): 69(ptr) FunctionParameter
75: Label
- 1254(r000): 136(ptr) Variable Function
- 1257(r001): 69(ptr) Variable Function
- 1262(r003): 136(ptr) Variable Function
- 1265(r004): 69(ptr) Variable Function
- 1268(r005): 69(ptr) Variable Function
- 1271(r006): 69(ptr) Variable Function
- 1275(r007): 69(ptr) Variable Function
- 1286(r008): 69(ptr) Variable Function
- 1291(r009): 69(ptr) Variable Function
- 1294(r010): 69(ptr) Variable Function
- 1297(r011): 69(ptr) Variable Function
- 1300(r012): 69(ptr) Variable Function
- 1303(r013): 69(ptr) Variable Function
- 1306(r014): 69(ptr) Variable Function
- 1309(r015): 69(ptr) Variable Function
- 1312(r016): 69(ptr) Variable Function
- 1315(r017): 69(ptr) Variable Function
- 1318(r018): 7(ptr) Variable Function
- 1321(r019): 69(ptr) Variable Function
- 1324(R020): 69(ptr) Variable Function
- 1327(r021): 69(ptr) Variable Function
- 1330(r022): 69(ptr) Variable Function
- 1343(r023): 69(ptr) Variable Function
- 1346(r024): 69(ptr) Variable Function
- 1352(r025): 69(ptr) Variable Function
- 1355(r026): 69(ptr) Variable Function
- 1359(r026a): 69(ptr) Variable Function
- 1364(r027): 69(ptr) Variable Function
- 1367(r028): 69(ptr) Variable Function
- 1371(r029): 69(ptr) Variable Function
- 1374(r030): 69(ptr) Variable Function
- 1378(r031): 69(ptr) Variable Function
- 1382(r032): 69(ptr) Variable Function
- 1386(r033): 69(ptr) Variable Function
- 1389(r034): 69(ptr) Variable Function
- 1392(r035): 69(ptr) Variable Function
- 1395(r036): 69(ptr) Variable Function
- 1400(r037): 69(ptr) Variable Function
- 1403(r038): 69(ptr) Variable Function
- 1410(r039): 69(ptr) Variable Function
- 1413(r049): 69(ptr) Variable Function
- 1418(r041): 69(ptr) Variable Function
- 1421(r042): 69(ptr) Variable Function
- 1425(r043): 69(ptr) Variable Function
- 1428(r044): 69(ptr) Variable Function
- 1433(r046): 69(ptr) Variable Function
- 1255: 68 Load 71(inF0)
- 1256: 135(bool) All 1255
- Store 1254(r000) 1256
- 1258: 68 Load 71(inF0)
- 1259: 68 ExtInst 1(GLSL.std.450) 4(FAbs) 1258
- Store 1257(r001) 1259
- 1260: 68 Load 71(inF0)
- 1261: 68 ExtInst 1(GLSL.std.450) 17(Acos) 1260
+ 1262(r000): 136(ptr) Variable Function
+ 1267(r001): 69(ptr) Variable Function
+ 1272(r003): 136(ptr) Variable Function
+ 1276(r004): 69(ptr) Variable Function
+ 1279(r005): 69(ptr) Variable Function
+ 1282(r006): 69(ptr) Variable Function
+ 1286(r007): 69(ptr) Variable Function
+ 1296(r008): 69(ptr) Variable Function
+ 1301(r009): 69(ptr) Variable Function
+ 1304(r010): 69(ptr) Variable Function
+ 1307(r011): 69(ptr) Variable Function
+ 1310(r012): 69(ptr) Variable Function
+ 1313(r013): 69(ptr) Variable Function
+ 1316(r014): 69(ptr) Variable Function
+ 1319(r015): 69(ptr) Variable Function
+ 1322(r016): 69(ptr) Variable Function
+ 1325(r017): 69(ptr) Variable Function
+ 1328(r018): 7(ptr) Variable Function
+ 1331(r019): 69(ptr) Variable Function
+ 1334(R020): 69(ptr) Variable Function
+ 1337(r021): 69(ptr) Variable Function
+ 1340(r022): 69(ptr) Variable Function
+ 1353(r023): 69(ptr) Variable Function
+ 1356(r025): 69(ptr) Variable Function
+ 1359(r026): 69(ptr) Variable Function
+ 1363(r026a): 69(ptr) Variable Function
+ 1368(r027): 69(ptr) Variable Function
+ 1371(r028): 69(ptr) Variable Function
+ 1375(r029): 69(ptr) Variable Function
+ 1378(r030): 69(ptr) Variable Function
+ 1382(r031): 69(ptr) Variable Function
+ 1386(r032): 69(ptr) Variable Function
+ 1390(r033): 69(ptr) Variable Function
+ 1393(r034): 69(ptr) Variable Function
+ 1396(r035): 69(ptr) Variable Function
+ 1399(r036): 69(ptr) Variable Function
+ 1404(r037): 69(ptr) Variable Function
+ 1407(r038): 69(ptr) Variable Function
+ 1414(r039): 69(ptr) Variable Function
+ 1417(r049): 69(ptr) Variable Function
+ 1422(r041): 69(ptr) Variable Function
+ 1425(r042): 69(ptr) Variable Function
+ 1429(r043): 69(ptr) Variable Function
+ 1432(r044): 69(ptr) Variable Function
+ 1437(r046): 69(ptr) Variable Function
1263: 68 Load 71(inF0)
- 1264: 135(bool) Any 1263
- Store 1262(r003) 1264
- 1266: 68 Load 71(inF0)
- 1267: 68 ExtInst 1(GLSL.std.450) 16(Asin) 1266
- Store 1265(r004) 1267
- 1269: 68 Load 71(inF0)
- 1270: 68 ExtInst 1(GLSL.std.450) 18(Atan) 1269
- Store 1268(r005) 1270
- 1272: 68 Load 71(inF0)
- 1273: 68 Load 72(inF1)
- 1274: 68 ExtInst 1(GLSL.std.450) 25(Atan2) 1272 1273
- Store 1271(r006) 1274
- 1276: 68 Load 71(inF0)
- 1277: 68 ExtInst 1(GLSL.std.450) 9(Ceil) 1276
- Store 1275(r007) 1277
- 1278: 68 Load 71(inF0)
- 1281: 1280 FOrdLessThan 1278 1279
- 1282: 135(bool) Any 1281
- SelectionMerge 1284 None
- BranchConditional 1282 1283 1284
- 1283: Label
- Kill
- 1284: Label
+ 1265: 1264 FOrdNotEqual 1263 139
+ 1266: 135(bool) All 1265
+ Store 1262(r000) 1266
+ 1268: 68 Load 71(inF0)
+ 1269: 68 ExtInst 1(GLSL.std.450) 4(FAbs) 1268
+ Store 1267(r001) 1269
+ 1270: 68 Load 71(inF0)
+ 1271: 68 ExtInst 1(GLSL.std.450) 17(Acos) 1270
+ 1273: 68 Load 71(inF0)
+ 1274: 1264 FOrdNotEqual 1273 139
+ 1275: 135(bool) Any 1274
+ Store 1272(r003) 1275
+ 1277: 68 Load 71(inF0)
+ 1278: 68 ExtInst 1(GLSL.std.450) 16(Asin) 1277
+ Store 1276(r004) 1278
+ 1280: 68 Load 71(inF0)
+ 1281: 68 ExtInst 1(GLSL.std.450) 18(Atan) 1280
+ Store 1279(r005) 1281
+ 1283: 68 Load 71(inF0)
+ 1284: 68 Load 72(inF1)
+ 1285: 68 ExtInst 1(GLSL.std.450) 25(Atan2) 1283 1284
+ Store 1282(r006) 1285
1287: 68 Load 71(inF0)
- 1288: 68 Load 72(inF1)
- 1289: 68 Load 73(inF2)
- 1290: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 1287 1288 1289
- Store 1286(r008) 1290
- 1292: 68 Load 71(inF0)
- 1293: 68 ExtInst 1(GLSL.std.450) 14(Cos) 1292
- Store 1291(r009) 1293
- 1295: 68 Load 71(inF0)
- 1296: 68 ExtInst 1(GLSL.std.450) 20(Cosh) 1295
- Store 1294(r010) 1296
- 1298: 68 Load 71(inF0)
- 1299: 68 DPdx 1298
- Store 1297(r011) 1299
- 1301: 68 Load 71(inF0)
- 1302: 68 DPdxCoarse 1301
- Store 1300(r012) 1302
- 1304: 68 Load 71(inF0)
- 1305: 68 DPdxFine 1304
- Store 1303(r013) 1305
- 1307: 68 Load 71(inF0)
- 1308: 68 DPdy 1307
- Store 1306(r014) 1308
- 1310: 68 Load 71(inF0)
- 1311: 68 DPdyCoarse 1310
- Store 1309(r015) 1311
- 1313: 68 Load 71(inF0)
- 1314: 68 DPdyFine 1313
- Store 1312(r016) 1314
- 1316: 68 Load 71(inF0)
- 1317: 68 ExtInst 1(GLSL.std.450) 12(Degrees) 1316
- Store 1315(r017) 1317
- 1319: 68 Load 71(inF0)
- 1320: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1319
- Store 1318(r018) 1320
- 1322: 68 Load 71(inF0)
- 1323: 68 ExtInst 1(GLSL.std.450) 27(Exp) 1322
- Store 1321(r019) 1323
- 1325: 68 Load 71(inF0)
- 1326: 68 ExtInst 1(GLSL.std.450) 29(Exp2) 1325
- Store 1324(R020) 1326
- 1328: 68 Load 71(inF0)
- 1329: 68 ExtInst 1(GLSL.std.450) 8(Floor) 1328
- Store 1327(r021) 1329
- 1331: 68 Load 71(inF0)
- 1332: 68 Load 72(inF1)
- 1333: 36(fvec3) CompositeExtract 1331 0
- 1334: 36(fvec3) CompositeExtract 1332 0
- 1335: 36(fvec3) FMod 1333 1334
- 1336: 36(fvec3) CompositeExtract 1331 1
- 1337: 36(fvec3) CompositeExtract 1332 1
- 1338: 36(fvec3) FMod 1336 1337
- 1339: 36(fvec3) CompositeExtract 1331 2
- 1340: 36(fvec3) CompositeExtract 1332 2
- 1341: 36(fvec3) FMod 1339 1340
- 1342: 68 CompositeConstruct 1335 1338 1341
- Store 1330(r022) 1342
- 1344: 68 Load 71(inF0)
- 1345: 68 ExtInst 1(GLSL.std.450) 10(Fract) 1344
- Store 1343(r023) 1345
- 1347: 68 Load 71(inF0)
- 1349:1348(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1347
- 1350: 594(ivec3) CompositeExtract 1349 1
- Store 72(inF1) 1350
- 1351: 68 CompositeExtract 1349 0
- Store 1346(r024) 1351
- 1353: 68 Load 71(inF0)
- 1354: 68 Fwidth 1353
- Store 1352(r025) 1354
- 1356: 68 Load 71(inF0)
- 1357: 68 Load 72(inF1)
- 1358: 68 ExtInst 1(GLSL.std.450) 53(Ldexp) 1356 1357
- Store 1355(r026) 1358
+ 1288: 68 ExtInst 1(GLSL.std.450) 9(Ceil) 1287
+ Store 1286(r007) 1288
+ 1289: 68 Load 71(inF0)
+ 1291: 1264 FOrdLessThan 1289 1290
+ 1292: 135(bool) Any 1291
+ SelectionMerge 1294 None
+ BranchConditional 1292 1293 1294
+ 1293: Label
+ Kill
+ 1294: Label
+ 1297: 68 Load 71(inF0)
+ 1298: 68 Load 72(inF1)
+ 1299: 68 Load 73(inF2)
+ 1300: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 1297 1298 1299
+ Store 1296(r008) 1300
+ 1302: 68 Load 71(inF0)
+ 1303: 68 ExtInst 1(GLSL.std.450) 14(Cos) 1302
+ Store 1301(r009) 1303
+ 1305: 68 Load 71(inF0)
+ 1306: 68 ExtInst 1(GLSL.std.450) 20(Cosh) 1305
+ Store 1304(r010) 1306
+ 1308: 68 Load 71(inF0)
+ 1309: 68 DPdx 1308
+ Store 1307(r011) 1309
+ 1311: 68 Load 71(inF0)
+ 1312: 68 DPdxCoarse 1311
+ Store 1310(r012) 1312
+ 1314: 68 Load 71(inF0)
+ 1315: 68 DPdxFine 1314
+ Store 1313(r013) 1315
+ 1317: 68 Load 71(inF0)
+ 1318: 68 DPdy 1317
+ Store 1316(r014) 1318
+ 1320: 68 Load 71(inF0)
+ 1321: 68 DPdyCoarse 1320
+ Store 1319(r015) 1321
+ 1323: 68 Load 71(inF0)
+ 1324: 68 DPdyFine 1323
+ Store 1322(r016) 1324
+ 1326: 68 Load 71(inF0)
+ 1327: 68 ExtInst 1(GLSL.std.450) 12(Degrees) 1326
+ Store 1325(r017) 1327
+ 1329: 68 Load 71(inF0)
+ 1330: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1329
+ Store 1328(r018) 1330
+ 1332: 68 Load 71(inF0)
+ 1333: 68 ExtInst 1(GLSL.std.450) 27(Exp) 1332
+ Store 1331(r019) 1333
+ 1335: 68 Load 71(inF0)
+ 1336: 68 ExtInst 1(GLSL.std.450) 29(Exp2) 1335
+ Store 1334(R020) 1336
+ 1338: 68 Load 71(inF0)
+ 1339: 68 ExtInst 1(GLSL.std.450) 8(Floor) 1338
+ Store 1337(r021) 1339
+ 1341: 68 Load 71(inF0)
+ 1342: 68 Load 72(inF1)
+ 1343: 36(fvec3) CompositeExtract 1341 0
+ 1344: 36(fvec3) CompositeExtract 1342 0
+ 1345: 36(fvec3) FMod 1343 1344
+ 1346: 36(fvec3) CompositeExtract 1341 1
+ 1347: 36(fvec3) CompositeExtract 1342 1
+ 1348: 36(fvec3) FMod 1346 1347
+ 1349: 36(fvec3) CompositeExtract 1341 2
+ 1350: 36(fvec3) CompositeExtract 1342 2
+ 1351: 36(fvec3) FMod 1349 1350
+ 1352: 68 CompositeConstruct 1345 1348 1351
+ Store 1340(r022) 1352
+ 1354: 68 Load 71(inF0)
+ 1355: 68 ExtInst 1(GLSL.std.450) 10(Fract) 1354
+ Store 1353(r023) 1355
+ 1357: 68 Load 71(inF0)
+ 1358: 68 Fwidth 1357
+ Store 1356(r025) 1358
1360: 68 Load 71(inF0)
1361: 68 Load 72(inF1)
- 1362: 68 Load 73(inF2)
- 1363: 68 ExtInst 1(GLSL.std.450) 46(FMix) 1360 1361 1362
- Store 1359(r026a) 1363
- 1365: 68 Load 71(inF0)
- 1366: 68 ExtInst 1(GLSL.std.450) 28(Log) 1365
- Store 1364(r027) 1366
- 1368: 68 Load 71(inF0)
- 1369: 68 ExtInst 1(GLSL.std.450) 30(Log2) 1368
- 1370: 68 MatrixTimesScalar 1369 266
- Store 1367(r028) 1370
+ 1362: 68 ExtInst 1(GLSL.std.450) 53(Ldexp) 1360 1361
+ Store 1359(r026) 1362
+ 1364: 68 Load 71(inF0)
+ 1365: 68 Load 72(inF1)
+ 1366: 68 Load 73(inF2)
+ 1367: 68 ExtInst 1(GLSL.std.450) 46(FMix) 1364 1365 1366
+ Store 1363(r026a) 1367
+ 1369: 68 Load 71(inF0)
+ 1370: 68 ExtInst 1(GLSL.std.450) 28(Log) 1369
+ Store 1368(r027) 1370
1372: 68 Load 71(inF0)
1373: 68 ExtInst 1(GLSL.std.450) 30(Log2) 1372
- Store 1371(r029) 1373
- 1375: 68 Load 71(inF0)
- 1376: 68 Load 72(inF1)
- 1377: 68 ExtInst 1(GLSL.std.450) 40(FMax) 1375 1376
- Store 1374(r030) 1377
+ 1374: 68 MatrixTimesScalar 1373 268
+ Store 1371(r028) 1374
+ 1376: 68 Load 71(inF0)
+ 1377: 68 ExtInst 1(GLSL.std.450) 30(Log2) 1376
+ Store 1375(r029) 1377
1379: 68 Load 71(inF0)
1380: 68 Load 72(inF1)
- 1381: 68 ExtInst 1(GLSL.std.450) 37(FMin) 1379 1380
- Store 1378(r031) 1381
+ 1381: 68 ExtInst 1(GLSL.std.450) 40(FMax) 1379 1380
+ Store 1378(r030) 1381
1383: 68 Load 71(inF0)
1384: 68 Load 72(inF1)
- 1385: 68 ExtInst 1(GLSL.std.450) 26(Pow) 1383 1384
- Store 1382(r032) 1385
+ 1385: 68 ExtInst 1(GLSL.std.450) 37(FMin) 1383 1384
+ Store 1382(r031) 1385
1387: 68 Load 71(inF0)
- 1388: 68 ExtInst 1(GLSL.std.450) 11(Radians) 1387
- Store 1386(r033) 1388
- 1390: 68 Load 71(inF0)
- 1391: 68 ExtInst 1(GLSL.std.450) 2(RoundEven) 1390
- Store 1389(r034) 1391
- 1393: 68 Load 71(inF0)
- 1394: 68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1393
- Store 1392(r035) 1394
- 1396: 68 Load 71(inF0)
- 1397: 36(fvec3) CompositeConstruct 179 179 179
- 1398: 36(fvec3) CompositeConstruct 287 287 287
- 1399: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 1396 1397 1398
- Store 1395(r036) 1399
- 1401: 68 Load 71(inF0)
- 1402: 68 ExtInst 1(GLSL.std.450) 6(FSign) 1401
- Store 1400(r037) 1402
- 1404: 68 Load 71(inF0)
- 1405: 68 ExtInst 1(GLSL.std.450) 13(Sin) 1404
- Store 1403(r038) 1405
- 1406: 68 Load 71(inF0)
- 1407: 68 ExtInst 1(GLSL.std.450) 13(Sin) 1406
- Store 72(inF1) 1407
+ 1388: 68 Load 72(inF1)
+ 1389: 68 ExtInst 1(GLSL.std.450) 26(Pow) 1387 1388
+ Store 1386(r032) 1389
+ 1391: 68 Load 71(inF0)
+ 1392: 68 ExtInst 1(GLSL.std.450) 11(Radians) 1391
+ Store 1390(r033) 1392
+ 1394: 68 Load 71(inF0)
+ 1395: 68 ExtInst 1(GLSL.std.450) 2(RoundEven) 1394
+ Store 1393(r034) 1395
+ 1397: 68 Load 71(inF0)
+ 1398: 68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1397
+ Store 1396(r035) 1398
+ 1400: 68 Load 71(inF0)
+ 1401: 36(fvec3) CompositeConstruct 139 139 139
+ 1402: 36(fvec3) CompositeConstruct 289 289 289
+ 1403: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 1400 1401 1402
+ Store 1399(r036) 1403
+ 1405: 68 Load 71(inF0)
+ 1406: 68 ExtInst 1(GLSL.std.450) 6(FSign) 1405
+ Store 1404(r037) 1406
1408: 68 Load 71(inF0)
- 1409: 68 ExtInst 1(GLSL.std.450) 14(Cos) 1408
- Store 73(inF2) 1409
- 1411: 68 Load 71(inF0)
- 1412: 68 ExtInst 1(GLSL.std.450) 19(Sinh) 1411
- Store 1410(r039) 1412
- 1414: 68 Load 71(inF0)
- 1415: 68 Load 72(inF1)
- 1416: 68 Load 73(inF2)
- 1417: 68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1414 1415 1416
- Store 1413(r049) 1417
- 1419: 68 Load 71(inF0)
- 1420: 68 ExtInst 1(GLSL.std.450) 31(Sqrt) 1419
- Store 1418(r041) 1420
- 1422: 68 Load 71(inF0)
- 1423: 68 Load 72(inF1)
- 1424: 68 ExtInst 1(GLSL.std.450) 48(Step) 1422 1423
- Store 1421(r042) 1424
+ 1409: 68 ExtInst 1(GLSL.std.450) 13(Sin) 1408
+ Store 1407(r038) 1409
+ 1410: 68 Load 71(inF0)
+ 1411: 68 ExtInst 1(GLSL.std.450) 13(Sin) 1410
+ Store 72(inF1) 1411
+ 1412: 68 Load 71(inF0)
+ 1413: 68 ExtInst 1(GLSL.std.450) 14(Cos) 1412
+ Store 73(inF2) 1413
+ 1415: 68 Load 71(inF0)
+ 1416: 68 ExtInst 1(GLSL.std.450) 19(Sinh) 1415
+ Store 1414(r039) 1416
+ 1418: 68 Load 71(inF0)
+ 1419: 68 Load 72(inF1)
+ 1420: 68 Load 73(inF2)
+ 1421: 68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1418 1419 1420
+ Store 1417(r049) 1421
+ 1423: 68 Load 71(inF0)
+ 1424: 68 ExtInst 1(GLSL.std.450) 31(Sqrt) 1423
+ Store 1422(r041) 1424
1426: 68 Load 71(inF0)
- 1427: 68 ExtInst 1(GLSL.std.450) 15(Tan) 1426
- Store 1425(r043) 1427
- 1429: 68 Load 71(inF0)
- 1430: 68 ExtInst 1(GLSL.std.450) 21(Tanh) 1429
- Store 1428(r044) 1430
- 1431: 68 Load 71(inF0)
- 1432: 68 Transpose 1431
- 1434: 68 Load 71(inF0)
- 1435: 68 ExtInst 1(GLSL.std.450) 3(Trunc) 1434
- Store 1433(r046) 1435
- ReturnValue 1437
+ 1427: 68 Load 72(inF1)
+ 1428: 68 ExtInst 1(GLSL.std.450) 48(Step) 1426 1427
+ Store 1425(r042) 1428
+ 1430: 68 Load 71(inF0)
+ 1431: 68 ExtInst 1(GLSL.std.450) 15(Tan) 1430
+ Store 1429(r043) 1431
+ 1433: 68 Load 71(inF0)
+ 1434: 68 ExtInst 1(GLSL.std.450) 21(Tanh) 1433
+ Store 1432(r044) 1434
+ 1435: 68 Load 71(inF0)
+ 1436: 68 Transpose 1435
+ 1438: 68 Load 71(inF0)
+ 1439: 68 ExtInst 1(GLSL.std.450) 3(Trunc) 1438
+ Store 1437(r046) 1439
+ ReturnValue 1441
FunctionEnd
82(PixelShaderFunction4x4(mf44;mf44;mf44;): 76 Function None 78
79(inF0): 77(ptr) FunctionParameter
80(inF1): 77(ptr) FunctionParameter
81(inF2): 77(ptr) FunctionParameter
83: Label
- 1440(r000): 136(ptr) Variable Function
- 1443(r001): 77(ptr) Variable Function
- 1448(r003): 136(ptr) Variable Function
- 1451(r004): 77(ptr) Variable Function
- 1454(r005): 77(ptr) Variable Function
- 1457(r006): 77(ptr) Variable Function
- 1461(r007): 77(ptr) Variable Function
- 1472(r008): 77(ptr) Variable Function
- 1477(r009): 77(ptr) Variable Function
- 1480(r010): 77(ptr) Variable Function
- 1483(r011): 77(ptr) Variable Function
- 1486(r012): 77(ptr) Variable Function
- 1489(r013): 77(ptr) Variable Function
- 1492(r014): 77(ptr) Variable Function
- 1495(r015): 77(ptr) Variable Function
- 1498(r016): 77(ptr) Variable Function
- 1501(r017): 77(ptr) Variable Function
- 1504(r018): 7(ptr) Variable Function
- 1507(r019): 77(ptr) Variable Function
- 1510(R020): 77(ptr) Variable Function
- 1513(r021): 77(ptr) Variable Function
- 1516(r022): 77(ptr) Variable Function
- 1532(r023): 77(ptr) Variable Function
- 1535(r024): 77(ptr) Variable Function
+ 1444(r000): 136(ptr) Variable Function
+ 1449(r001): 77(ptr) Variable Function
+ 1454(r003): 136(ptr) Variable Function
+ 1458(r004): 77(ptr) Variable Function
+ 1461(r005): 77(ptr) Variable Function
+ 1464(r006): 77(ptr) Variable Function
+ 1468(r007): 77(ptr) Variable Function
+ 1478(r008): 77(ptr) Variable Function
+ 1483(r009): 77(ptr) Variable Function
+ 1486(r010): 77(ptr) Variable Function
+ 1489(r011): 77(ptr) Variable Function
+ 1492(r012): 77(ptr) Variable Function
+ 1495(r013): 77(ptr) Variable Function
+ 1498(r014): 77(ptr) Variable Function
+ 1501(r015): 77(ptr) Variable Function
+ 1504(r016): 77(ptr) Variable Function
+ 1507(r017): 77(ptr) Variable Function
+ 1510(r018): 7(ptr) Variable Function
+ 1513(r019): 77(ptr) Variable Function
+ 1516(R020): 77(ptr) Variable Function
+ 1519(r021): 77(ptr) Variable Function
+ 1522(r022): 77(ptr) Variable Function
+ 1538(r023): 77(ptr) Variable Function
1541(r025): 77(ptr) Variable Function
1544(r026): 77(ptr) Variable Function
1548(r026a): 77(ptr) Variable Function
@@ -7990,107 +8000,103 @@ gl_FragCoord origin is upper left
1614(r043): 77(ptr) Variable Function
1617(r044): 77(ptr) Variable Function
1622(r046): 77(ptr) Variable Function
- 1441: 76 Load 79(inF0)
- 1442: 135(bool) All 1441
- Store 1440(r000) 1442
- 1444: 76 Load 79(inF0)
- 1445: 76 ExtInst 1(GLSL.std.450) 4(FAbs) 1444
- Store 1443(r001) 1445
- 1446: 76 Load 79(inF0)
- 1447: 76 ExtInst 1(GLSL.std.450) 17(Acos) 1446
- 1449: 76 Load 79(inF0)
- 1450: 135(bool) Any 1449
- Store 1448(r003) 1450
+ 1445: 76 Load 79(inF0)
+ 1447: 1446 FOrdNotEqual 1445 139
+ 1448: 135(bool) All 1447
+ Store 1444(r000) 1448
+ 1450: 76 Load 79(inF0)
+ 1451: 76 ExtInst 1(GLSL.std.450) 4(FAbs) 1450
+ Store 1449(r001) 1451
1452: 76 Load 79(inF0)
- 1453: 76 ExtInst 1(GLSL.std.450) 16(Asin) 1452
- Store 1451(r004) 1453
+ 1453: 76 ExtInst 1(GLSL.std.450) 17(Acos) 1452
1455: 76 Load 79(inF0)
- 1456: 76 ExtInst 1(GLSL.std.450) 18(Atan) 1455
- Store 1454(r005) 1456
- 1458: 76 Load 79(inF0)
- 1459: 76 Load 80(inF1)
- 1460: 76 ExtInst 1(GLSL.std.450) 25(Atan2) 1458 1459
- Store 1457(r006) 1460
+ 1456: 1446 FOrdNotEqual 1455 139
+ 1457: 135(bool) Any 1456
+ Store 1454(r003) 1457
+ 1459: 76 Load 79(inF0)
+ 1460: 76 ExtInst 1(GLSL.std.450) 16(Asin) 1459
+ Store 1458(r004) 1460
1462: 76 Load 79(inF0)
- 1463: 76 ExtInst 1(GLSL.std.450) 9(Ceil) 1462
- Store 1461(r007) 1463
- 1464: 76 Load 79(inF0)
- 1467: 1466 FOrdLessThan 1464 1465
- 1468: 135(bool) Any 1467
- SelectionMerge 1470 None
- BranchConditional 1468 1469 1470
- 1469: Label
+ 1463: 76 ExtInst 1(GLSL.std.450) 18(Atan) 1462
+ Store 1461(r005) 1463
+ 1465: 76 Load 79(inF0)
+ 1466: 76 Load 80(inF1)
+ 1467: 76 ExtInst 1(GLSL.std.450) 25(Atan2) 1465 1466
+ Store 1464(r006) 1467
+ 1469: 76 Load 79(inF0)
+ 1470: 76 ExtInst 1(GLSL.std.450) 9(Ceil) 1469
+ Store 1468(r007) 1470
+ 1471: 76 Load 79(inF0)
+ 1473: 1446 FOrdLessThan 1471 1472
+ 1474: 135(bool) Any 1473
+ SelectionMerge 1476 None
+ BranchConditional 1474 1475 1476
+ 1475: Label
Kill
- 1470: Label
- 1473: 76 Load 79(inF0)
- 1474: 76 Load 80(inF1)
- 1475: 76 Load 81(inF2)
- 1476: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1473 1474 1475
- Store 1472(r008) 1476
- 1478: 76 Load 79(inF0)
- 1479: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1478
- Store 1477(r009) 1479
- 1481: 76 Load 79(inF0)
- 1482: 76 ExtInst 1(GLSL.std.450) 20(Cosh) 1481
- Store 1480(r010) 1482
+ 1476: Label
+ 1479: 76 Load 79(inF0)
+ 1480: 76 Load 80(inF1)
+ 1481: 76 Load 81(inF2)
+ 1482: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1479 1480 1481
+ Store 1478(r008) 1482
1484: 76 Load 79(inF0)
- 1485: 76 DPdx 1484
- Store 1483(r011) 1485
+ 1485: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1484
+ Store 1483(r009) 1485
1487: 76 Load 79(inF0)
- 1488: 76 DPdxCoarse 1487
- Store 1486(r012) 1488
+ 1488: 76 ExtInst 1(GLSL.std.450) 20(Cosh) 1487
+ Store 1486(r010) 1488
1490: 76 Load 79(inF0)
- 1491: 76 DPdxFine 1490
- Store 1489(r013) 1491
+ 1491: 76 DPdx 1490
+ Store 1489(r011) 1491
1493: 76 Load 79(inF0)
- 1494: 76 DPdy 1493
- Store 1492(r014) 1494
+ 1494: 76 DPdxCoarse 1493
+ Store 1492(r012) 1494
1496: 76 Load 79(inF0)
- 1497: 76 DPdyCoarse 1496
- Store 1495(r015) 1497
+ 1497: 76 DPdxFine 1496
+ Store 1495(r013) 1497
1499: 76 Load 79(inF0)
- 1500: 76 DPdyFine 1499
- Store 1498(r016) 1500
+ 1500: 76 DPdy 1499
+ Store 1498(r014) 1500
1502: 76 Load 79(inF0)
- 1503: 76 ExtInst 1(GLSL.std.450) 12(Degrees) 1502
- Store 1501(r017) 1503
+ 1503: 76 DPdyCoarse 1502
+ Store 1501(r015) 1503
1505: 76 Load 79(inF0)
- 1506: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1505
- Store 1504(r018) 1506
+ 1506: 76 DPdyFine 1505
+ Store 1504(r016) 1506
1508: 76 Load 79(inF0)
- 1509: 76 ExtInst 1(GLSL.std.450) 27(Exp) 1508
- Store 1507(r019) 1509
+ 1509: 76 ExtInst 1(GLSL.std.450) 12(Degrees) 1508
+ Store 1507(r017) 1509
1511: 76 Load 79(inF0)
- 1512: 76 ExtInst 1(GLSL.std.450) 29(Exp2) 1511
- Store 1510(R020) 1512
+ 1512: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1511
+ Store 1510(r018) 1512
1514: 76 Load 79(inF0)
- 1515: 76 ExtInst 1(GLSL.std.450) 8(Floor) 1514
- Store 1513(r021) 1515
+ 1515: 76 ExtInst 1(GLSL.std.450) 27(Exp) 1514
+ Store 1513(r019) 1515
1517: 76 Load 79(inF0)
- 1518: 76 Load 80(inF1)
- 1519: 48(fvec4) CompositeExtract 1517 0
- 1520: 48(fvec4) CompositeExtract 1518 0
- 1521: 48(fvec4) FMod 1519 1520
- 1522: 48(fvec4) CompositeExtract 1517 1
- 1523: 48(fvec4) CompositeExtract 1518 1
- 1524: 48(fvec4) FMod 1522 1523
- 1525: 48(fvec4) CompositeExtract 1517 2
- 1526: 48(fvec4) CompositeExtract 1518 2
+ 1518: 76 ExtInst 1(GLSL.std.450) 29(Exp2) 1517
+ Store 1516(R020) 1518
+ 1520: 76 Load 79(inF0)
+ 1521: 76 ExtInst 1(GLSL.std.450) 8(Floor) 1520
+ Store 1519(r021) 1521
+ 1523: 76 Load 79(inF0)
+ 1524: 76 Load 80(inF1)
+ 1525: 48(fvec4) CompositeExtract 1523 0
+ 1526: 48(fvec4) CompositeExtract 1524 0
1527: 48(fvec4) FMod 1525 1526
- 1528: 48(fvec4) CompositeExtract 1517 3
- 1529: 48(fvec4) CompositeExtract 1518 3
+ 1528: 48(fvec4) CompositeExtract 1523 1
+ 1529: 48(fvec4) CompositeExtract 1524 1
1530: 48(fvec4) FMod 1528 1529
- 1531: 76 CompositeConstruct 1521 1524 1527 1530
- Store 1516(r022) 1531
- 1533: 76 Load 79(inF0)
- 1534: 76 ExtInst 1(GLSL.std.450) 10(Fract) 1533
- Store 1532(r023) 1534
- 1536: 76 Load 79(inF0)
- 1538:1537(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1536
- 1539: 840(ivec4) CompositeExtract 1538 1
- Store 80(inF1) 1539
- 1540: 76 CompositeExtract 1538 0
- Store 1535(r024) 1540
+ 1531: 48(fvec4) CompositeExtract 1523 2
+ 1532: 48(fvec4) CompositeExtract 1524 2
+ 1533: 48(fvec4) FMod 1531 1532
+ 1534: 48(fvec4) CompositeExtract 1523 3
+ 1535: 48(fvec4) CompositeExtract 1524 3
+ 1536: 48(fvec4) FMod 1534 1535
+ 1537: 76 CompositeConstruct 1527 1530 1533 1536
+ Store 1522(r022) 1537
+ 1539: 76 Load 79(inF0)
+ 1540: 76 ExtInst 1(GLSL.std.450) 10(Fract) 1539
+ Store 1538(r023) 1540
1542: 76 Load 79(inF0)
1543: 76 Fwidth 1542
Store 1541(r025) 1543
@@ -8108,7 +8114,7 @@ gl_FragCoord origin is upper left
Store 1553(r027) 1555
1557: 76 Load 79(inF0)
1558: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1557
- 1559: 76 MatrixTimesScalar 1558 266
+ 1559: 76 MatrixTimesScalar 1558 268
Store 1556(r028) 1559
1561: 76 Load 79(inF0)
1562: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1561
@@ -8135,8 +8141,8 @@ gl_FragCoord origin is upper left
1583: 76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1582
Store 1581(r035) 1583
1585: 76 Load 79(inF0)
- 1586: 48(fvec4) CompositeConstruct 179 179 179 179
- 1587: 48(fvec4) CompositeConstruct 287 287 287 287
+ 1586: 48(fvec4) CompositeConstruct 139 139 139 139
+ 1587: 48(fvec4) CompositeConstruct 289 289 289 289
1588: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1585 1586 1587
Store 1584(r036) 1588
1590: 76 Load 79(inF0)
@@ -8445,8 +8451,8 @@ gl_FragCoord origin is upper left
133(@main():131(PS_OUTPUT) Function None 132
134: Label
1806(ps_output): 1805(ptr) Variable Function
- 1809: 49(ptr) AccessChain 1806(ps_output) 1807
- Store 1809 1808
- 1810:131(PS_OUTPUT) Load 1806(ps_output)
- ReturnValue 1810
+ 1808: 49(ptr) AccessChain 1806(ps_output) 187
+ Store 1808 1807
+ 1809:131(PS_OUTPUT) Load 1806(ps_output)
+ ReturnValue 1809
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.lit.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.lit.frag.out
index affed169b60..a280db13da8 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.lit.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.lit.frag.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.lit.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(f1;f1;f1; ( temp void)
@@ -60,7 +60,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(f1;f1;f1; ( temp void)
@@ -118,7 +118,7 @@ gl_FragCoord origin is upper left
0:? 'm' (layout( location=2) in float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 52
Capability Shader
@@ -126,6 +126,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 37 40 43
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 12 "@PixelShaderFunction(f1;f1;f1;"
Name 9 "n_dot_l"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.comp.out
index 2c8b9157d3c..ce8947df0f1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.comp.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.negative.comp
-Shader version: 450
+Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:2 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; ( temp float)
@@ -91,7 +91,7 @@ local_size = (1, 1, 1)
Linked compute stage:
-Shader version: 450
+Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:2 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; ( temp float)
@@ -180,7 +180,7 @@ local_size = (1, 1, 1)
0:? 'inI0' (layout( location=3) in 4-component vector of int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 99
Capability Shader
@@ -188,6 +188,7 @@ local_size = (1, 1, 1)
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "ComputeShaderFunction" 76 79 82 86 89
ExecutionMode 4 LocalSize 1 1 1
+ Source HLSL 500
Name 4 "ComputeShaderFunction"
Name 15 "ComputeShaderFunctionS(f1;f1;f1;i1;"
Name 11 "inF0"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out
index 8f770c88aed..980cc96d02d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out
@@ -1,11 +1,10 @@
hlsl.intrinsics.negative.frag
-ERROR: 0:10: 'determinant' : no matching overloaded function found
-ERROR: 0:23: 'length' : ambiguous best function under implicit type conversion
+ERROR: 0:10: 'determinant' : ambiguous best function under implicit type conversion
ERROR: 0:25: 'normalize' : ambiguous best function under implicit type conversion
ERROR: 0:26: 'reflect' : ambiguous best function under implicit type conversion
ERROR: 0:27: 'refract' : ambiguous best function under implicit type conversion
ERROR: 0:28: 'refract' : no matching overloaded function found
-ERROR: 0:30: 'transpose' : no matching overloaded function found
+ERROR: 0:30: 'transpose' : ambiguous best function under implicit type conversion
ERROR: 0:39: 'GetRenderTargetSamplePosition' : no matching overloaded function found
ERROR: 0:46: 'asdouble' : double2 conversion not implemented
ERROR: 0:47: 'CheckAccessFullyMapped' : no matching overloaded function found
@@ -59,10 +58,10 @@ ERROR: 0:133: 'normalize' : no matching overloaded function found
ERROR: 0:133: 'reflect' : no matching overloaded function found
ERROR: 0:133: 'refract' : no matching overloaded function found
ERROR: 0:133: 'reversebits' : no matching overloaded function found
-ERROR: 60 compilation errors. No code generated.
+ERROR: 59 compilation errors. No code generated.
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:2 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; ( temp float)
@@ -105,8 +104,9 @@ ERROR: node is still EOpNull!
0:9 0 (const int)
0:9 Constant:
0:9 3 (const int)
-0:10 Constant:
-0:10 0.000000
+0:10 determinant ( temp float)
+ERROR: node is still EOpNull!
+0:10 'inF0' ( in float)
0:12 direct index ( temp float)
0:12 unpackHalf2x16 ( temp 2-component vector of float)
0:12 Convert float to uint ( temp uint)
@@ -120,8 +120,7 @@ ERROR: node is still EOpNull!
0:14 Convert float to uint ( temp uint)
0:14 'inF0' ( in float)
0:23 length ( temp float)
-0:23 Construct vec2 ( in 2-component vector of float)
-0:23 'inF0' ( in float)
+0:23 'inF0' ( in float)
0:24 Function Call: msad4(u1;vu2;vu4; ( temp 4-component vector of uint)
0:24 Convert float to uint ( temp uint)
0:24 'inF0' ( in float)
@@ -152,8 +151,9 @@ ERROR: node is still EOpNull!
0:29 bitFieldReverse ( temp uint)
0:29 Convert float to uint ( temp uint)
0:29 'inF0' ( in float)
-0:30 Constant:
-0:30 0.000000
+0:30 transpose ( temp 1X1 matrix of float)
+ERROR: node is still EOpNull!
+0:30 'inF0' ( in float)
0:32 Branch: Return with expression
0:32 Constant:
0:32 0.000000
@@ -374,7 +374,7 @@ ERROR: node is still EOpNull!
0:? 'inF2' (layout( location=2) in 4-component vector of float)
0:80 move second child to first child ( temp 4-component vector of int)
0:? 'inI0' ( temp 4-component vector of int)
-0:? 'inI0' (layout( location=3) in 4-component vector of int)
+0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
0:80 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:80 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
@@ -518,13 +518,13 @@ ERROR: node is still EOpNull!
0:? 'inF0' (layout( location=0) in 4-component vector of float)
0:? 'inF1' (layout( location=1) in 4-component vector of float)
0:? 'inF2' (layout( location=2) in 4-component vector of float)
-0:? 'inI0' (layout( location=3) in 4-component vector of int)
+0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:2 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; ( temp float)
@@ -567,8 +567,9 @@ ERROR: node is still EOpNull!
0:9 0 (const int)
0:9 Constant:
0:9 3 (const int)
-0:10 Constant:
-0:10 0.000000
+0:10 determinant ( temp float)
+ERROR: node is still EOpNull!
+0:10 'inF0' ( in float)
0:12 direct index ( temp float)
0:12 unpackHalf2x16 ( temp 2-component vector of float)
0:12 Convert float to uint ( temp uint)
@@ -582,8 +583,7 @@ ERROR: node is still EOpNull!
0:14 Convert float to uint ( temp uint)
0:14 'inF0' ( in float)
0:23 length ( temp float)
-0:23 Construct vec2 ( in 2-component vector of float)
-0:23 'inF0' ( in float)
+0:23 'inF0' ( in float)
0:24 Function Call: msad4(u1;vu2;vu4; ( temp 4-component vector of uint)
0:24 Convert float to uint ( temp uint)
0:24 'inF0' ( in float)
@@ -614,8 +614,9 @@ ERROR: node is still EOpNull!
0:29 bitFieldReverse ( temp uint)
0:29 Convert float to uint ( temp uint)
0:29 'inF0' ( in float)
-0:30 Constant:
-0:30 0.000000
+0:30 transpose ( temp 1X1 matrix of float)
+ERROR: node is still EOpNull!
+0:30 'inF0' ( in float)
0:32 Branch: Return with expression
0:32 Constant:
0:32 0.000000
@@ -836,7 +837,7 @@ ERROR: node is still EOpNull!
0:? 'inF2' (layout( location=2) in 4-component vector of float)
0:80 move second child to first child ( temp 4-component vector of int)
0:? 'inI0' ( temp 4-component vector of int)
-0:? 'inI0' (layout( location=3) in 4-component vector of int)
+0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
0:80 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:80 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
@@ -980,6 +981,6 @@ ERROR: node is still EOpNull!
0:? 'inF0' (layout( location=0) in 4-component vector of float)
0:? 'inF1' (layout( location=1) in 4-component vector of float)
0:? 'inF2' (layout( location=2) in 4-component vector of float)
-0:? 'inI0' (layout( location=3) in 4-component vector of int)
+0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.vert.out
index 9808b1cb38f..31e3ec46c9b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.vert.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.negative.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:15 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; ( temp float)
0:15 Function Parameters:
@@ -155,7 +155,7 @@ Shader version: 450
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:15 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; ( temp float)
0:15 Function Parameters:
@@ -308,13 +308,14 @@ Shader version: 450
0:? 'inI0' (layout( location=3) in 4-component vector of int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 155
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "VertexShaderFunction" 100 103 106 110 113
+ Source HLSL 500
Name 4 "VertexShaderFunction"
Name 15 "VertexShaderFunctionS(f1;f1;f1;i1;"
Name 11 "inF0"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.down.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
index 4f47d86f317..8df57aa0c10 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.promote.down.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:15 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
@@ -40,20 +40,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:15 Sequence
0:15 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:15 color: direct index for structure ( temp 4-component vector of float)
0:15 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:15 Constant:
0:15 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2})
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:15 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
@@ -94,17 +94,17 @@ gl_FragCoord origin is upper left
0:? Sequence
0:15 Sequence
0:15 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:15 color: direct index for structure ( temp 4-component vector of float)
0:15 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:15 Constant:
0:15 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2})
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 50
Capability Shader
@@ -112,6 +112,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 47
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "color"
@@ -129,7 +130,7 @@ gl_FragCoord origin is upper left
Name 21 ""
Name 29 "r01"
Name 37 "ps_output"
- Name 47 "color"
+ Name 47 "@entryPointOutput.color"
MemberDecorate 19($Global) 0 Offset 0
MemberDecorate 19($Global) 1 Offset 4
MemberDecorate 19($Global) 2 Offset 8
@@ -140,7 +141,7 @@ gl_FragCoord origin is upper left
MemberDecorate 19($Global) 7 Offset 40
Decorate 19($Global) Block
Decorate 21 DescriptorSet 0
- Decorate 47(color) Location 0
+ Decorate 47(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -167,12 +168,12 @@ gl_FragCoord origin is upper left
40: 7(fvec4) ConstantComposite 39 39 39 39
41: TypePointer Function 7(fvec4)
46: TypePointer Output 7(fvec4)
- 47(color): 46(ptr) Variable Output
+47(@entryPointOutput.color): 46(ptr) Variable Output
4(main): 2 Function None 3
5: Label
48:8(PS_OUTPUT) FunctionCall 10(@main()
49: 7(fvec4) CompositeExtract 48 0
- Store 47(color) 49
+ Store 47(@entryPointOutput.color) 49
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.frag.out
index 7fec7a20b81..6df1915b7bb 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.frag.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.promote.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
@@ -341,8 +341,8 @@ gl_FragCoord origin is upper left
0:51 move second child to first child ( temp float)
0:51 'r50' ( temp float)
0:51 Construct float ( temp float)
-0:? imageLoad ( temp 4-component vector of float)
-0:51 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
+0:? textureFetch ( temp 4-component vector of float)
+0:51 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
0:51 Convert uint to int ( temp int)
0:51 upos: direct index for structure ( uniform uint)
0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
@@ -352,8 +352,8 @@ gl_FragCoord origin is upper left
0:52 move second child to first child ( temp float)
0:52 'r51' ( temp float)
0:52 Construct float ( temp float)
-0:? imageLoad ( temp 4-component vector of float)
-0:52 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
+0:? textureFetch ( temp 4-component vector of float)
+0:52 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
0:52 Convert float to int ( temp int)
0:52 fpos: direct index for structure ( uniform float)
0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
@@ -430,22 +430,22 @@ gl_FragCoord origin is upper left
0:? Sequence
0:20 Sequence
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:20 color: direct index for structure ( temp 4-component vector of float)
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:20 Constant:
0:20 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
-0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
+0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
0:? 'g_tTex1df4' ( uniform texture1D)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
@@ -787,8 +787,8 @@ gl_FragCoord origin is upper left
0:51 move second child to first child ( temp float)
0:51 'r50' ( temp float)
0:51 Construct float ( temp float)
-0:? imageLoad ( temp 4-component vector of float)
-0:51 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
+0:? textureFetch ( temp 4-component vector of float)
+0:51 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
0:51 Convert uint to int ( temp int)
0:51 upos: direct index for structure ( uniform uint)
0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
@@ -798,8 +798,8 @@ gl_FragCoord origin is upper left
0:52 move second child to first child ( temp float)
0:52 'r51' ( temp float)
0:52 Construct float ( temp float)
-0:? imageLoad ( temp 4-component vector of float)
-0:52 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
+0:? textureFetch ( temp 4-component vector of float)
+0:52 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
0:52 Convert float to int ( temp int)
0:52 fpos: direct index for structure ( uniform float)
0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
@@ -876,19 +876,19 @@ gl_FragCoord origin is upper left
0:? Sequence
0:20 Sequence
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:20 color: direct index for structure ( temp 4-component vector of float)
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:20 Constant:
0:20 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
-0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
+0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
0:? 'g_tTex1df4' ( uniform texture1D)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 322
Capability Shader
@@ -899,6 +899,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 319
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "color"
@@ -950,7 +951,7 @@ gl_FragCoord origin is upper left
Name 297 "NumberOfLevelsI"
Name 301 "sizeQueryTemp"
Name 310 "ps_output"
- Name 319 "color"
+ Name 319 "@entryPointOutput.color"
MemberDecorate 19($Global) 0 Offset 0
MemberDecorate 19($Global) 1 Offset 4
MemberDecorate 19($Global) 2 Offset 8
@@ -964,9 +965,8 @@ gl_FragCoord origin is upper left
Decorate 19($Global) Block
Decorate 21 DescriptorSet 0
Decorate 258(g_tTexbfs) DescriptorSet 0
- Decorate 258(g_tTexbfs) NonWritable
Decorate 277(g_tTex1df4) DescriptorSet 0
- Decorate 319(color) Location 0
+ Decorate 319(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -1013,7 +1013,7 @@ gl_FragCoord origin is upper left
107: 16(ivec2) ConstantComposite 44 44
109: 14(int) Constant 4
110: TypePointer Uniform 16(ivec2)
- 256: TypeImage 6(float) Buffer nonsampled format:R32f
+ 256: TypeImage 6(float) Buffer sampled format:R32f
257: TypePointer UniformConstant 256
258(g_tTexbfs): 257(ptr) Variable UniformConstant
260: 14(int) Constant 8
@@ -1025,12 +1025,12 @@ gl_FragCoord origin is upper left
309: TypePointer Function 8(PS_OUTPUT)
313: TypePointer Function 7(fvec4)
318: TypePointer Output 7(fvec4)
- 319(color): 318(ptr) Variable Output
+319(@entryPointOutput.color): 318(ptr) Variable Output
4(main): 2 Function None 3
5: Label
320:8(PS_OUTPUT) FunctionCall 10(@main()
321: 7(fvec4) CompositeExtract 320 0
- Store 319(color) 321
+ Store 319(@entryPointOutput.color) 321
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
@@ -1275,14 +1275,14 @@ gl_FragCoord origin is upper left
261: 23(ptr) AccessChain 21 260
262: 15(int) Load 261
263: 14(int) Bitcast 262
- 264: 7(fvec4) ImageRead 259 263
+ 264: 7(fvec4) ImageFetch 259 263
265: 6(float) CompositeExtract 264 0
Store 255(r50) 265
267: 256 Load 258(g_tTexbfs)
269: 33(ptr) AccessChain 21 268
270: 6(float) Load 269
271: 14(int) ConvertFToS 270
- 272: 7(fvec4) ImageRead 267 271
+ 272: 7(fvec4) ImageFetch 267 271
273: 6(float) CompositeExtract 272 0
Store 266(r51) 273
278: 275 Load 277(g_tTex1df4)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
index 7ccc596bdc2..703d9f6d18a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.promote.outputs.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
@@ -88,22 +88,22 @@ gl_FragCoord origin is upper left
0:? Sequence
0:20 Sequence
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:20 color: direct index for structure ( temp 4-component vector of float)
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:20 Constant:
0:20 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
-0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
+0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
0:? 'g_tTex1df4' ( uniform texture1D)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
@@ -192,19 +192,19 @@ gl_FragCoord origin is upper left
0:? Sequence
0:20 Sequence
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:20 color: direct index for structure ( temp 4-component vector of float)
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:20 Constant:
0:20 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
-0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
+0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
0:? 'g_tTex1df4' ( uniform texture1D)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 80
Capability Shader
@@ -215,6 +215,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 74
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "color"
@@ -241,7 +242,7 @@ gl_FragCoord origin is upper left
Name 53 "NumberOfLevelsI"
Name 57 "sizeQueryTemp"
Name 66 "ps_output"
- Name 74 "color"
+ Name 74 "@entryPointOutput.color"
Name 79 "g_tTexbfs"
MemberDecorate 17($Global) 0 Offset 0
MemberDecorate 17($Global) 1 Offset 4
@@ -256,9 +257,8 @@ gl_FragCoord origin is upper left
Decorate 17($Global) Block
Decorate 19 DescriptorSet 0
Decorate 31(g_tTex1df4) DescriptorSet 0
- Decorate 74(color) Location 0
+ Decorate 74(@entryPointOutput.color) Location 0
Decorate 79(g_tTexbfs) DescriptorSet 0
- Decorate 79(g_tTexbfs) NonWritable
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -288,15 +288,15 @@ gl_FragCoord origin is upper left
67: 7(fvec4) ConstantComposite 24 24 24 24
68: TypePointer Function 7(fvec4)
73: TypePointer Output 7(fvec4)
- 74(color): 73(ptr) Variable Output
- 77: TypeImage 6(float) Buffer nonsampled format:R32f
+74(@entryPointOutput.color): 73(ptr) Variable Output
+ 77: TypeImage 6(float) Buffer sampled format:R32f
78: TypePointer UniformConstant 77
79(g_tTexbfs): 78(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
75:8(PS_OUTPUT) FunctionCall 10(@main()
76: 7(fvec4) CompositeExtract 75 0
- Store 74(color) 76
+ Store 74(@entryPointOutput.color) 76
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.vert.out
index 107575b7525..e92a8a72e9e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.vert.out
@@ -1,5 +1,5 @@
hlsl.intrinsics.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:2 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; ( temp float)
0:2 Function Parameters:
@@ -10,13 +10,15 @@ Shader version: 450
0:2 'inU1' ( in uint)
0:? Sequence
0:3 all ( temp bool)
-0:3 'inF0' ( in float)
+0:3 Convert float to bool ( temp bool)
+0:3 'inF0' ( in float)
0:4 Absolute value ( temp float)
0:4 'inF0' ( in float)
0:5 arc cosine ( temp float)
0:5 'inF0' ( in float)
0:6 any ( temp bool)
-0:6 'inF0' ( in float)
+0:6 Convert float to bool ( temp bool)
+0:6 'inF0' ( in float)
0:7 arc sine ( temp float)
0:7 'inF0' ( in float)
0:8 floatBitsToInt ( temp int)
@@ -62,880 +64,872 @@ Shader version: 450
0:29 'inF1' ( in float)
0:30 Fraction ( temp float)
0:30 'inF0' ( in float)
-0:31 frexp ( temp float)
+0:31 isinf ( temp bool)
0:31 'inF0' ( in float)
-0:31 'inF1' ( in float)
-0:32 isinf ( temp bool)
+0:32 isnan ( temp bool)
0:32 'inF0' ( in float)
-0:33 isnan ( temp bool)
+0:33 ldexp ( temp float)
0:33 'inF0' ( in float)
-0:34 ldexp ( temp float)
+0:33 'inF1' ( in float)
+0:34 mix ( temp float)
0:34 'inF0' ( in float)
0:34 'inF1' ( in float)
-0:35 mix ( temp float)
+0:34 'inF2' ( in float)
+0:35 log ( temp float)
0:35 'inF0' ( in float)
-0:35 'inF1' ( in float)
-0:35 'inF2' ( in float)
-0:36 log ( temp float)
-0:36 'inF0' ( in float)
-0:37 component-wise multiply ( temp float)
-0:37 log2 ( temp float)
-0:37 'inF0' ( in float)
-0:37 Constant:
-0:37 0.301030
-0:38 log2 ( temp float)
+0:36 component-wise multiply ( temp float)
+0:36 log2 ( temp float)
+0:36 'inF0' ( in float)
+0:36 Constant:
+0:36 0.301030
+0:37 log2 ( temp float)
+0:37 'inF0' ( in float)
+0:38 max ( temp float)
0:38 'inF0' ( in float)
-0:39 max ( temp float)
+0:38 'inF1' ( in float)
+0:39 min ( temp float)
0:39 'inF0' ( in float)
0:39 'inF1' ( in float)
-0:40 min ( temp float)
-0:40 'inF0' ( in float)
-0:40 'inF1' ( in float)
-0:42 pow ( temp float)
+0:41 pow ( temp float)
+0:41 'inF0' ( in float)
+0:41 'inF1' ( in float)
+0:42 radians ( temp float)
0:42 'inF0' ( in float)
-0:42 'inF1' ( in float)
-0:43 radians ( temp float)
-0:43 'inF0' ( in float)
-0:44 bitFieldReverse ( temp int)
-0:44 Constant:
-0:44 2 (const int)
-0:45 roundEven ( temp float)
+0:43 bitFieldReverse ( temp int)
+0:43 Constant:
+0:43 2 (const int)
+0:44 roundEven ( temp float)
+0:44 'inF0' ( in float)
+0:45 inverse sqrt ( temp float)
0:45 'inF0' ( in float)
-0:46 inverse sqrt ( temp float)
+0:46 clamp ( temp float)
0:46 'inF0' ( in float)
-0:47 clamp ( temp float)
+0:46 Constant:
+0:46 0.000000
+0:46 Constant:
+0:46 1.000000
+0:47 Sign ( temp float)
0:47 'inF0' ( in float)
-0:47 Constant:
-0:47 0.000000
-0:47 Constant:
-0:47 1.000000
-0:48 Sign ( temp float)
+0:48 sine ( temp float)
0:48 'inF0' ( in float)
-0:49 sine ( temp float)
-0:49 'inF0' ( in float)
-0:50 Sequence
-0:50 move second child to first child ( temp float)
-0:50 'inF1' ( in float)
-0:50 sine ( temp float)
-0:50 'inF0' ( in float)
-0:50 move second child to first child ( temp float)
-0:50 'inF2' ( in float)
-0:50 cosine ( temp float)
-0:50 'inF0' ( in float)
-0:51 hyp. sine ( temp float)
+0:49 Sequence
+0:49 move second child to first child ( temp float)
+0:49 'inF1' ( in float)
+0:49 sine ( temp float)
+0:49 'inF0' ( in float)
+0:49 move second child to first child ( temp float)
+0:49 'inF2' ( in float)
+0:49 cosine ( temp float)
+0:49 'inF0' ( in float)
+0:50 hyp. sine ( temp float)
+0:50 'inF0' ( in float)
+0:51 smoothstep ( temp float)
0:51 'inF0' ( in float)
-0:52 smoothstep ( temp float)
+0:51 'inF1' ( in float)
+0:51 'inF2' ( in float)
+0:52 sqrt ( temp float)
0:52 'inF0' ( in float)
-0:52 'inF1' ( in float)
-0:52 'inF2' ( in float)
-0:53 sqrt ( temp float)
+0:53 step ( temp float)
0:53 'inF0' ( in float)
-0:54 step ( temp float)
+0:53 'inF1' ( in float)
+0:54 tangent ( temp float)
0:54 'inF0' ( in float)
-0:54 'inF1' ( in float)
-0:55 tangent ( temp float)
+0:55 hyp. tangent ( temp float)
0:55 'inF0' ( in float)
-0:56 hyp. tangent ( temp float)
-0:56 'inF0' ( in float)
-0:58 trunc ( temp float)
-0:58 'inF0' ( in float)
-0:60 Branch: Return with expression
-0:60 Constant:
-0:60 0.000000
-0:64 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float)
-0:64 Function Parameters:
-0:64 'inF0' ( in 1-component vector of float)
-0:64 'inF1' ( in 1-component vector of float)
-0:64 'inF2' ( in 1-component vector of float)
+0:57 trunc ( temp float)
+0:57 'inF0' ( in float)
+0:59 Branch: Return with expression
+0:59 Constant:
+0:59 0.000000
+0:63 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float)
+0:63 Function Parameters:
+0:63 'inF0' ( in 1-component vector of float)
+0:63 'inF1' ( in 1-component vector of float)
+0:63 'inF2' ( in 1-component vector of float)
0:? Sequence
-0:66 Branch: Return with expression
-0:66 Constant:
-0:66 0.000000
-0:70 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float)
-0:70 Function Parameters:
-0:70 'inF0' ( in 2-component vector of float)
-0:70 'inF1' ( in 2-component vector of float)
-0:70 'inF2' ( in 2-component vector of float)
-0:70 'inU0' ( in 2-component vector of uint)
-0:70 'inU1' ( in 2-component vector of uint)
+0:65 Branch: Return with expression
+0:65 Constant:
+0:65 0.000000
+0:69 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float)
+0:69 Function Parameters:
+0:69 'inF0' ( in 2-component vector of float)
+0:69 'inF1' ( in 2-component vector of float)
+0:69 'inF2' ( in 2-component vector of float)
+0:69 'inU0' ( in 2-component vector of uint)
+0:69 'inU1' ( in 2-component vector of uint)
0:? Sequence
-0:71 all ( temp bool)
+0:70 all ( temp bool)
+0:70 Convert float to bool ( temp 2-component vector of bool)
+0:70 'inF0' ( in 2-component vector of float)
+0:71 Absolute value ( temp 2-component vector of float)
0:71 'inF0' ( in 2-component vector of float)
-0:72 Absolute value ( temp 2-component vector of float)
+0:72 arc cosine ( temp 2-component vector of float)
0:72 'inF0' ( in 2-component vector of float)
-0:73 arc cosine ( temp 2-component vector of float)
-0:73 'inF0' ( in 2-component vector of float)
-0:74 any ( temp bool)
+0:73 any ( temp bool)
+0:73 Convert float to bool ( temp 2-component vector of bool)
+0:73 'inF0' ( in 2-component vector of float)
+0:74 arc sine ( temp 2-component vector of float)
0:74 'inF0' ( in 2-component vector of float)
-0:75 arc sine ( temp 2-component vector of float)
+0:75 floatBitsToInt ( temp 2-component vector of int)
0:75 'inF0' ( in 2-component vector of float)
-0:76 floatBitsToInt ( temp 2-component vector of int)
+0:76 floatBitsToUint ( temp 2-component vector of uint)
0:76 'inF0' ( in 2-component vector of float)
-0:77 floatBitsToUint ( temp 2-component vector of uint)
-0:77 'inF0' ( in 2-component vector of float)
-0:78 intBitsToFloat ( temp 2-component vector of float)
-0:78 'inU0' ( in 2-component vector of uint)
+0:77 intBitsToFloat ( temp 2-component vector of float)
+0:77 'inU0' ( in 2-component vector of uint)
+0:79 arc tangent ( temp 2-component vector of float)
+0:79 'inF0' ( in 2-component vector of float)
0:80 arc tangent ( temp 2-component vector of float)
0:80 'inF0' ( in 2-component vector of float)
-0:81 arc tangent ( temp 2-component vector of float)
+0:80 'inF1' ( in 2-component vector of float)
+0:81 Ceiling ( temp 2-component vector of float)
0:81 'inF0' ( in 2-component vector of float)
-0:81 'inF1' ( in 2-component vector of float)
-0:82 Ceiling ( temp 2-component vector of float)
+0:82 clamp ( temp 2-component vector of float)
0:82 'inF0' ( in 2-component vector of float)
-0:83 clamp ( temp 2-component vector of float)
+0:82 'inF1' ( in 2-component vector of float)
+0:82 'inF2' ( in 2-component vector of float)
+0:83 cosine ( temp 2-component vector of float)
0:83 'inF0' ( in 2-component vector of float)
-0:83 'inF1' ( in 2-component vector of float)
-0:83 'inF2' ( in 2-component vector of float)
-0:84 cosine ( temp 2-component vector of float)
+0:84 hyp. cosine ( temp 2-component vector of float)
0:84 'inF0' ( in 2-component vector of float)
-0:85 hyp. cosine ( temp 2-component vector of float)
-0:85 'inF0' ( in 2-component vector of float)
0:? bitCount ( temp 2-component vector of int)
0:? Constant:
0:? 7 (const int)
0:? 3 (const int)
-0:87 degrees ( temp 2-component vector of float)
+0:86 degrees ( temp 2-component vector of float)
+0:86 'inF0' ( in 2-component vector of float)
+0:87 distance ( temp float)
0:87 'inF0' ( in 2-component vector of float)
-0:88 distance ( temp float)
+0:87 'inF1' ( in 2-component vector of float)
+0:88 dot-product ( temp float)
0:88 'inF0' ( in 2-component vector of float)
0:88 'inF1' ( in 2-component vector of float)
-0:89 dot-product ( temp float)
-0:89 'inF0' ( in 2-component vector of float)
-0:89 'inF1' ( in 2-component vector of float)
-0:93 exp ( temp 2-component vector of float)
+0:92 exp ( temp 2-component vector of float)
+0:92 'inF0' ( in 2-component vector of float)
+0:93 exp2 ( temp 2-component vector of float)
0:93 'inF0' ( in 2-component vector of float)
-0:94 exp2 ( temp 2-component vector of float)
+0:94 face-forward ( temp 2-component vector of float)
0:94 'inF0' ( in 2-component vector of float)
-0:95 face-forward ( temp 2-component vector of float)
-0:95 'inF0' ( in 2-component vector of float)
-0:95 'inF1' ( in 2-component vector of float)
-0:95 'inF2' ( in 2-component vector of float)
-0:96 findMSB ( temp int)
+0:94 'inF1' ( in 2-component vector of float)
+0:94 'inF2' ( in 2-component vector of float)
+0:95 findMSB ( temp int)
+0:95 Constant:
+0:95 7 (const int)
+0:96 findLSB ( temp int)
0:96 Constant:
0:96 7 (const int)
-0:97 findLSB ( temp int)
-0:97 Constant:
-0:97 7 (const int)
-0:98 Floor ( temp 2-component vector of float)
-0:98 'inF0' ( in 2-component vector of float)
-0:100 mod ( temp 2-component vector of float)
+0:97 Floor ( temp 2-component vector of float)
+0:97 'inF0' ( in 2-component vector of float)
+0:99 mod ( temp 2-component vector of float)
+0:99 'inF0' ( in 2-component vector of float)
+0:99 'inF1' ( in 2-component vector of float)
+0:100 Fraction ( temp 2-component vector of float)
0:100 'inF0' ( in 2-component vector of float)
-0:100 'inF1' ( in 2-component vector of float)
-0:101 Fraction ( temp 2-component vector of float)
+0:101 isinf ( temp 2-component vector of bool)
0:101 'inF0' ( in 2-component vector of float)
-0:102 frexp ( temp 2-component vector of float)
+0:102 isnan ( temp 2-component vector of bool)
0:102 'inF0' ( in 2-component vector of float)
-0:102 'inF1' ( in 2-component vector of float)
-0:103 isinf ( temp 2-component vector of bool)
+0:103 ldexp ( temp 2-component vector of float)
0:103 'inF0' ( in 2-component vector of float)
-0:104 isnan ( temp 2-component vector of bool)
+0:103 'inF1' ( in 2-component vector of float)
+0:104 mix ( temp 2-component vector of float)
0:104 'inF0' ( in 2-component vector of float)
-0:105 ldexp ( temp 2-component vector of float)
+0:104 'inF1' ( in 2-component vector of float)
+0:104 'inF2' ( in 2-component vector of float)
+0:105 length ( temp float)
0:105 'inF0' ( in 2-component vector of float)
-0:105 'inF1' ( in 2-component vector of float)
-0:106 mix ( temp 2-component vector of float)
+0:106 log ( temp 2-component vector of float)
0:106 'inF0' ( in 2-component vector of float)
-0:106 'inF1' ( in 2-component vector of float)
-0:106 'inF2' ( in 2-component vector of float)
-0:107 length ( temp float)
-0:107 'inF0' ( in 2-component vector of float)
-0:108 log ( temp 2-component vector of float)
+0:107 vector-scale ( temp 2-component vector of float)
+0:107 log2 ( temp 2-component vector of float)
+0:107 'inF0' ( in 2-component vector of float)
+0:107 Constant:
+0:107 0.301030
+0:108 log2 ( temp 2-component vector of float)
0:108 'inF0' ( in 2-component vector of float)
-0:109 vector-scale ( temp 2-component vector of float)
-0:109 log2 ( temp 2-component vector of float)
-0:109 'inF0' ( in 2-component vector of float)
-0:109 Constant:
-0:109 0.301030
-0:110 log2 ( temp 2-component vector of float)
+0:109 max ( temp 2-component vector of float)
+0:109 'inF0' ( in 2-component vector of float)
+0:109 'inF1' ( in 2-component vector of float)
+0:110 min ( temp 2-component vector of float)
0:110 'inF0' ( in 2-component vector of float)
-0:111 max ( temp 2-component vector of float)
-0:111 'inF0' ( in 2-component vector of float)
-0:111 'inF1' ( in 2-component vector of float)
-0:112 min ( temp 2-component vector of float)
+0:110 'inF1' ( in 2-component vector of float)
+0:112 normalize ( temp 2-component vector of float)
0:112 'inF0' ( in 2-component vector of float)
-0:112 'inF1' ( in 2-component vector of float)
-0:114 normalize ( temp 2-component vector of float)
+0:113 pow ( temp 2-component vector of float)
+0:113 'inF0' ( in 2-component vector of float)
+0:113 'inF1' ( in 2-component vector of float)
+0:114 radians ( temp 2-component vector of float)
0:114 'inF0' ( in 2-component vector of float)
-0:115 pow ( temp 2-component vector of float)
+0:115 reflect ( temp 2-component vector of float)
0:115 'inF0' ( in 2-component vector of float)
0:115 'inF1' ( in 2-component vector of float)
-0:116 radians ( temp 2-component vector of float)
+0:116 refract ( temp 2-component vector of float)
0:116 'inF0' ( in 2-component vector of float)
-0:117 reflect ( temp 2-component vector of float)
-0:117 'inF0' ( in 2-component vector of float)
-0:117 'inF1' ( in 2-component vector of float)
-0:118 refract ( temp 2-component vector of float)
-0:118 'inF0' ( in 2-component vector of float)
-0:118 'inF1' ( in 2-component vector of float)
-0:118 Constant:
-0:118 2.000000
+0:116 'inF1' ( in 2-component vector of float)
+0:116 Constant:
+0:116 2.000000
0:? bitFieldReverse ( temp 2-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
-0:120 roundEven ( temp 2-component vector of float)
+0:118 roundEven ( temp 2-component vector of float)
+0:118 'inF0' ( in 2-component vector of float)
+0:119 inverse sqrt ( temp 2-component vector of float)
+0:119 'inF0' ( in 2-component vector of float)
+0:120 clamp ( temp 2-component vector of float)
0:120 'inF0' ( in 2-component vector of float)
-0:121 inverse sqrt ( temp 2-component vector of float)
+0:120 Constant:
+0:120 0.000000
+0:120 Constant:
+0:120 1.000000
+0:121 Sign ( temp 2-component vector of float)
0:121 'inF0' ( in 2-component vector of float)
-0:122 clamp ( temp 2-component vector of float)
+0:122 sine ( temp 2-component vector of float)
0:122 'inF0' ( in 2-component vector of float)
-0:122 Constant:
-0:122 0.000000
-0:122 Constant:
-0:122 1.000000
-0:123 Sign ( temp 2-component vector of float)
-0:123 'inF0' ( in 2-component vector of float)
-0:124 sine ( temp 2-component vector of float)
+0:123 Sequence
+0:123 move second child to first child ( temp 2-component vector of float)
+0:123 'inF1' ( in 2-component vector of float)
+0:123 sine ( temp 2-component vector of float)
+0:123 'inF0' ( in 2-component vector of float)
+0:123 move second child to first child ( temp 2-component vector of float)
+0:123 'inF2' ( in 2-component vector of float)
+0:123 cosine ( temp 2-component vector of float)
+0:123 'inF0' ( in 2-component vector of float)
+0:124 hyp. sine ( temp 2-component vector of float)
0:124 'inF0' ( in 2-component vector of float)
-0:125 Sequence
-0:125 move second child to first child ( temp 2-component vector of float)
-0:125 'inF1' ( in 2-component vector of float)
-0:125 sine ( temp 2-component vector of float)
-0:125 'inF0' ( in 2-component vector of float)
-0:125 move second child to first child ( temp 2-component vector of float)
-0:125 'inF2' ( in 2-component vector of float)
-0:125 cosine ( temp 2-component vector of float)
-0:125 'inF0' ( in 2-component vector of float)
-0:126 hyp. sine ( temp 2-component vector of float)
+0:125 smoothstep ( temp 2-component vector of float)
+0:125 'inF0' ( in 2-component vector of float)
+0:125 'inF1' ( in 2-component vector of float)
+0:125 'inF2' ( in 2-component vector of float)
+0:126 sqrt ( temp 2-component vector of float)
0:126 'inF0' ( in 2-component vector of float)
-0:127 smoothstep ( temp 2-component vector of float)
+0:127 step ( temp 2-component vector of float)
0:127 'inF0' ( in 2-component vector of float)
0:127 'inF1' ( in 2-component vector of float)
-0:127 'inF2' ( in 2-component vector of float)
-0:128 sqrt ( temp 2-component vector of float)
+0:128 tangent ( temp 2-component vector of float)
0:128 'inF0' ( in 2-component vector of float)
-0:129 step ( temp 2-component vector of float)
+0:129 hyp. tangent ( temp 2-component vector of float)
0:129 'inF0' ( in 2-component vector of float)
-0:129 'inF1' ( in 2-component vector of float)
-0:130 tangent ( temp 2-component vector of float)
-0:130 'inF0' ( in 2-component vector of float)
-0:131 hyp. tangent ( temp 2-component vector of float)
+0:131 trunc ( temp 2-component vector of float)
0:131 'inF0' ( in 2-component vector of float)
-0:133 trunc ( temp 2-component vector of float)
-0:133 'inF0' ( in 2-component vector of float)
-0:136 Branch: Return with expression
+0:134 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:140 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
-0:140 Function Parameters:
-0:140 'inF0' ( in 3-component vector of float)
-0:140 'inF1' ( in 3-component vector of float)
-0:140 'inF2' ( in 3-component vector of float)
-0:140 'inU0' ( in 3-component vector of uint)
-0:140 'inU1' ( in 3-component vector of uint)
+0:138 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
+0:138 Function Parameters:
+0:138 'inF0' ( in 3-component vector of float)
+0:138 'inF1' ( in 3-component vector of float)
+0:138 'inF2' ( in 3-component vector of float)
+0:138 'inU0' ( in 3-component vector of uint)
+0:138 'inU1' ( in 3-component vector of uint)
0:? Sequence
-0:141 all ( temp bool)
+0:139 all ( temp bool)
+0:139 Convert float to bool ( temp 3-component vector of bool)
+0:139 'inF0' ( in 3-component vector of float)
+0:140 Absolute value ( temp 3-component vector of float)
+0:140 'inF0' ( in 3-component vector of float)
+0:141 arc cosine ( temp 3-component vector of float)
0:141 'inF0' ( in 3-component vector of float)
-0:142 Absolute value ( temp 3-component vector of float)
-0:142 'inF0' ( in 3-component vector of float)
-0:143 arc cosine ( temp 3-component vector of float)
+0:142 any ( temp bool)
+0:142 Convert float to bool ( temp 3-component vector of bool)
+0:142 'inF0' ( in 3-component vector of float)
+0:143 arc sine ( temp 3-component vector of float)
0:143 'inF0' ( in 3-component vector of float)
-0:144 any ( temp bool)
+0:144 floatBitsToInt ( temp 3-component vector of int)
0:144 'inF0' ( in 3-component vector of float)
-0:145 arc sine ( temp 3-component vector of float)
+0:145 floatBitsToUint ( temp 3-component vector of uint)
0:145 'inF0' ( in 3-component vector of float)
-0:146 floatBitsToInt ( temp 3-component vector of int)
-0:146 'inF0' ( in 3-component vector of float)
-0:147 floatBitsToUint ( temp 3-component vector of uint)
-0:147 'inF0' ( in 3-component vector of float)
-0:148 intBitsToFloat ( temp 3-component vector of float)
-0:148 'inU0' ( in 3-component vector of uint)
-0:150 arc tangent ( temp 3-component vector of float)
+0:146 intBitsToFloat ( temp 3-component vector of float)
+0:146 'inU0' ( in 3-component vector of uint)
+0:148 arc tangent ( temp 3-component vector of float)
+0:148 'inF0' ( in 3-component vector of float)
+0:149 arc tangent ( temp 3-component vector of float)
+0:149 'inF0' ( in 3-component vector of float)
+0:149 'inF1' ( in 3-component vector of float)
+0:150 Ceiling ( temp 3-component vector of float)
0:150 'inF0' ( in 3-component vector of float)
-0:151 arc tangent ( temp 3-component vector of float)
+0:151 clamp ( temp 3-component vector of float)
0:151 'inF0' ( in 3-component vector of float)
0:151 'inF1' ( in 3-component vector of float)
-0:152 Ceiling ( temp 3-component vector of float)
+0:151 'inF2' ( in 3-component vector of float)
+0:152 cosine ( temp 3-component vector of float)
0:152 'inF0' ( in 3-component vector of float)
-0:153 clamp ( temp 3-component vector of float)
+0:153 hyp. cosine ( temp 3-component vector of float)
0:153 'inF0' ( in 3-component vector of float)
-0:153 'inF1' ( in 3-component vector of float)
-0:153 'inF2' ( in 3-component vector of float)
-0:154 cosine ( temp 3-component vector of float)
-0:154 'inF0' ( in 3-component vector of float)
-0:155 hyp. cosine ( temp 3-component vector of float)
-0:155 'inF0' ( in 3-component vector of float)
0:? bitCount ( temp 3-component vector of int)
0:? Constant:
0:? 7 (const int)
0:? 3 (const int)
0:? 5 (const int)
-0:157 cross-product ( temp 3-component vector of float)
+0:155 cross-product ( temp 3-component vector of float)
+0:155 'inF0' ( in 3-component vector of float)
+0:155 'inF1' ( in 3-component vector of float)
+0:156 degrees ( temp 3-component vector of float)
+0:156 'inF0' ( in 3-component vector of float)
+0:157 distance ( temp float)
0:157 'inF0' ( in 3-component vector of float)
0:157 'inF1' ( in 3-component vector of float)
-0:158 degrees ( temp 3-component vector of float)
+0:158 dot-product ( temp float)
0:158 'inF0' ( in 3-component vector of float)
-0:159 distance ( temp float)
-0:159 'inF0' ( in 3-component vector of float)
-0:159 'inF1' ( in 3-component vector of float)
-0:160 dot-product ( temp float)
-0:160 'inF0' ( in 3-component vector of float)
-0:160 'inF1' ( in 3-component vector of float)
-0:164 exp ( temp 3-component vector of float)
+0:158 'inF1' ( in 3-component vector of float)
+0:162 exp ( temp 3-component vector of float)
+0:162 'inF0' ( in 3-component vector of float)
+0:163 exp2 ( temp 3-component vector of float)
+0:163 'inF0' ( in 3-component vector of float)
+0:164 face-forward ( temp 3-component vector of float)
0:164 'inF0' ( in 3-component vector of float)
-0:165 exp2 ( temp 3-component vector of float)
-0:165 'inF0' ( in 3-component vector of float)
-0:166 face-forward ( temp 3-component vector of float)
-0:166 'inF0' ( in 3-component vector of float)
-0:166 'inF1' ( in 3-component vector of float)
-0:166 'inF2' ( in 3-component vector of float)
-0:167 findMSB ( temp int)
-0:167 Constant:
-0:167 7 (const int)
-0:168 findLSB ( temp int)
-0:168 Constant:
-0:168 7 (const int)
-0:169 Floor ( temp 3-component vector of float)
+0:164 'inF1' ( in 3-component vector of float)
+0:164 'inF2' ( in 3-component vector of float)
+0:165 findMSB ( temp int)
+0:165 Constant:
+0:165 7 (const int)
+0:166 findLSB ( temp int)
+0:166 Constant:
+0:166 7 (const int)
+0:167 Floor ( temp 3-component vector of float)
+0:167 'inF0' ( in 3-component vector of float)
+0:169 mod ( temp 3-component vector of float)
0:169 'inF0' ( in 3-component vector of float)
-0:171 mod ( temp 3-component vector of float)
+0:169 'inF1' ( in 3-component vector of float)
+0:170 Fraction ( temp 3-component vector of float)
+0:170 'inF0' ( in 3-component vector of float)
+0:171 isinf ( temp 3-component vector of bool)
0:171 'inF0' ( in 3-component vector of float)
-0:171 'inF1' ( in 3-component vector of float)
-0:172 Fraction ( temp 3-component vector of float)
+0:172 isnan ( temp 3-component vector of bool)
0:172 'inF0' ( in 3-component vector of float)
-0:173 frexp ( temp 3-component vector of float)
+0:173 ldexp ( temp 3-component vector of float)
0:173 'inF0' ( in 3-component vector of float)
0:173 'inF1' ( in 3-component vector of float)
-0:174 isinf ( temp 3-component vector of bool)
+0:174 mix ( temp 3-component vector of float)
0:174 'inF0' ( in 3-component vector of float)
-0:175 isnan ( temp 3-component vector of bool)
+0:174 'inF1' ( in 3-component vector of float)
+0:174 'inF2' ( in 3-component vector of float)
+0:175 length ( temp float)
0:175 'inF0' ( in 3-component vector of float)
-0:176 ldexp ( temp 3-component vector of float)
+0:176 log ( temp 3-component vector of float)
0:176 'inF0' ( in 3-component vector of float)
-0:176 'inF1' ( in 3-component vector of float)
-0:177 mix ( temp 3-component vector of float)
-0:177 'inF0' ( in 3-component vector of float)
-0:177 'inF1' ( in 3-component vector of float)
-0:177 'inF2' ( in 3-component vector of float)
-0:178 length ( temp float)
+0:177 vector-scale ( temp 3-component vector of float)
+0:177 log2 ( temp 3-component vector of float)
+0:177 'inF0' ( in 3-component vector of float)
+0:177 Constant:
+0:177 0.301030
+0:178 log2 ( temp 3-component vector of float)
0:178 'inF0' ( in 3-component vector of float)
-0:179 log ( temp 3-component vector of float)
+0:179 max ( temp 3-component vector of float)
0:179 'inF0' ( in 3-component vector of float)
-0:180 vector-scale ( temp 3-component vector of float)
-0:180 log2 ( temp 3-component vector of float)
-0:180 'inF0' ( in 3-component vector of float)
-0:180 Constant:
-0:180 0.301030
-0:181 log2 ( temp 3-component vector of float)
-0:181 'inF0' ( in 3-component vector of float)
-0:182 max ( temp 3-component vector of float)
+0:179 'inF1' ( in 3-component vector of float)
+0:180 min ( temp 3-component vector of float)
+0:180 'inF0' ( in 3-component vector of float)
+0:180 'inF1' ( in 3-component vector of float)
+0:182 normalize ( temp 3-component vector of float)
0:182 'inF0' ( in 3-component vector of float)
-0:182 'inF1' ( in 3-component vector of float)
-0:183 min ( temp 3-component vector of float)
+0:183 pow ( temp 3-component vector of float)
0:183 'inF0' ( in 3-component vector of float)
0:183 'inF1' ( in 3-component vector of float)
-0:185 normalize ( temp 3-component vector of float)
+0:184 radians ( temp 3-component vector of float)
+0:184 'inF0' ( in 3-component vector of float)
+0:185 reflect ( temp 3-component vector of float)
0:185 'inF0' ( in 3-component vector of float)
-0:186 pow ( temp 3-component vector of float)
+0:185 'inF1' ( in 3-component vector of float)
+0:186 refract ( temp 3-component vector of float)
0:186 'inF0' ( in 3-component vector of float)
0:186 'inF1' ( in 3-component vector of float)
-0:187 radians ( temp 3-component vector of float)
-0:187 'inF0' ( in 3-component vector of float)
-0:188 reflect ( temp 3-component vector of float)
-0:188 'inF0' ( in 3-component vector of float)
-0:188 'inF1' ( in 3-component vector of float)
-0:189 refract ( temp 3-component vector of float)
-0:189 'inF0' ( in 3-component vector of float)
-0:189 'inF1' ( in 3-component vector of float)
-0:189 Constant:
-0:189 2.000000
+0:186 Constant:
+0:186 2.000000
0:? bitFieldReverse ( temp 3-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
0:? 3 (const int)
-0:191 roundEven ( temp 3-component vector of float)
+0:188 roundEven ( temp 3-component vector of float)
+0:188 'inF0' ( in 3-component vector of float)
+0:189 inverse sqrt ( temp 3-component vector of float)
+0:189 'inF0' ( in 3-component vector of float)
+0:190 clamp ( temp 3-component vector of float)
+0:190 'inF0' ( in 3-component vector of float)
+0:190 Constant:
+0:190 0.000000
+0:190 Constant:
+0:190 1.000000
+0:191 Sign ( temp 3-component vector of float)
0:191 'inF0' ( in 3-component vector of float)
-0:192 inverse sqrt ( temp 3-component vector of float)
+0:192 sine ( temp 3-component vector of float)
0:192 'inF0' ( in 3-component vector of float)
-0:193 clamp ( temp 3-component vector of float)
-0:193 'inF0' ( in 3-component vector of float)
-0:193 Constant:
-0:193 0.000000
-0:193 Constant:
-0:193 1.000000
-0:194 Sign ( temp 3-component vector of float)
+0:193 Sequence
+0:193 move second child to first child ( temp 3-component vector of float)
+0:193 'inF1' ( in 3-component vector of float)
+0:193 sine ( temp 3-component vector of float)
+0:193 'inF0' ( in 3-component vector of float)
+0:193 move second child to first child ( temp 3-component vector of float)
+0:193 'inF2' ( in 3-component vector of float)
+0:193 cosine ( temp 3-component vector of float)
+0:193 'inF0' ( in 3-component vector of float)
+0:194 hyp. sine ( temp 3-component vector of float)
0:194 'inF0' ( in 3-component vector of float)
-0:195 sine ( temp 3-component vector of float)
+0:195 smoothstep ( temp 3-component vector of float)
0:195 'inF0' ( in 3-component vector of float)
-0:196 Sequence
-0:196 move second child to first child ( temp 3-component vector of float)
-0:196 'inF1' ( in 3-component vector of float)
-0:196 sine ( temp 3-component vector of float)
-0:196 'inF0' ( in 3-component vector of float)
-0:196 move second child to first child ( temp 3-component vector of float)
-0:196 'inF2' ( in 3-component vector of float)
-0:196 cosine ( temp 3-component vector of float)
-0:196 'inF0' ( in 3-component vector of float)
-0:197 hyp. sine ( temp 3-component vector of float)
+0:195 'inF1' ( in 3-component vector of float)
+0:195 'inF2' ( in 3-component vector of float)
+0:196 sqrt ( temp 3-component vector of float)
+0:196 'inF0' ( in 3-component vector of float)
+0:197 step ( temp 3-component vector of float)
0:197 'inF0' ( in 3-component vector of float)
-0:198 smoothstep ( temp 3-component vector of float)
+0:197 'inF1' ( in 3-component vector of float)
+0:198 tangent ( temp 3-component vector of float)
0:198 'inF0' ( in 3-component vector of float)
-0:198 'inF1' ( in 3-component vector of float)
-0:198 'inF2' ( in 3-component vector of float)
-0:199 sqrt ( temp 3-component vector of float)
+0:199 hyp. tangent ( temp 3-component vector of float)
0:199 'inF0' ( in 3-component vector of float)
-0:200 step ( temp 3-component vector of float)
-0:200 'inF0' ( in 3-component vector of float)
-0:200 'inF1' ( in 3-component vector of float)
-0:201 tangent ( temp 3-component vector of float)
+0:201 trunc ( temp 3-component vector of float)
0:201 'inF0' ( in 3-component vector of float)
-0:202 hyp. tangent ( temp 3-component vector of float)
-0:202 'inF0' ( in 3-component vector of float)
-0:204 trunc ( temp 3-component vector of float)
-0:204 'inF0' ( in 3-component vector of float)
-0:207 Branch: Return with expression
+0:204 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:211 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
-0:211 Function Parameters:
-0:211 'inF0' ( in 4-component vector of float)
-0:211 'inF1' ( in 4-component vector of float)
-0:211 'inF2' ( in 4-component vector of float)
-0:211 'inU0' ( in 4-component vector of uint)
-0:211 'inU1' ( in 4-component vector of uint)
+0:208 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
+0:208 Function Parameters:
+0:208 'inF0' ( in 4-component vector of float)
+0:208 'inF1' ( in 4-component vector of float)
+0:208 'inF2' ( in 4-component vector of float)
+0:208 'inU0' ( in 4-component vector of uint)
+0:208 'inU1' ( in 4-component vector of uint)
0:? Sequence
-0:212 all ( temp bool)
-0:212 'inF0' ( in 4-component vector of float)
-0:213 Absolute value ( temp 4-component vector of float)
+0:209 all ( temp bool)
+0:209 Convert float to bool ( temp 4-component vector of bool)
+0:209 'inF0' ( in 4-component vector of float)
+0:210 Absolute value ( temp 4-component vector of float)
+0:210 'inF0' ( in 4-component vector of float)
+0:211 arc cosine ( temp 4-component vector of float)
+0:211 'inF0' ( in 4-component vector of float)
+0:212 any ( temp bool)
+0:212 Convert float to bool ( temp 4-component vector of bool)
+0:212 'inF0' ( in 4-component vector of float)
+0:213 arc sine ( temp 4-component vector of float)
0:213 'inF0' ( in 4-component vector of float)
-0:214 arc cosine ( temp 4-component vector of float)
+0:214 floatBitsToInt ( temp 4-component vector of int)
0:214 'inF0' ( in 4-component vector of float)
-0:215 any ( temp bool)
+0:215 floatBitsToUint ( temp 4-component vector of uint)
0:215 'inF0' ( in 4-component vector of float)
-0:216 arc sine ( temp 4-component vector of float)
-0:216 'inF0' ( in 4-component vector of float)
-0:217 floatBitsToInt ( temp 4-component vector of int)
-0:217 'inF0' ( in 4-component vector of float)
-0:218 floatBitsToUint ( temp 4-component vector of uint)
+0:216 intBitsToFloat ( temp 4-component vector of float)
+0:216 'inU0' ( in 4-component vector of uint)
+0:218 arc tangent ( temp 4-component vector of float)
0:218 'inF0' ( in 4-component vector of float)
-0:219 intBitsToFloat ( temp 4-component vector of float)
-0:219 'inU0' ( in 4-component vector of uint)
-0:221 arc tangent ( temp 4-component vector of float)
+0:219 arc tangent ( temp 4-component vector of float)
+0:219 'inF0' ( in 4-component vector of float)
+0:219 'inF1' ( in 4-component vector of float)
+0:220 Ceiling ( temp 4-component vector of float)
+0:220 'inF0' ( in 4-component vector of float)
+0:221 clamp ( temp 4-component vector of float)
0:221 'inF0' ( in 4-component vector of float)
-0:222 arc tangent ( temp 4-component vector of float)
+0:221 'inF1' ( in 4-component vector of float)
+0:221 'inF2' ( in 4-component vector of float)
+0:222 cosine ( temp 4-component vector of float)
0:222 'inF0' ( in 4-component vector of float)
-0:222 'inF1' ( in 4-component vector of float)
-0:223 Ceiling ( temp 4-component vector of float)
+0:223 hyp. cosine ( temp 4-component vector of float)
0:223 'inF0' ( in 4-component vector of float)
-0:224 clamp ( temp 4-component vector of float)
-0:224 'inF0' ( in 4-component vector of float)
-0:224 'inF1' ( in 4-component vector of float)
-0:224 'inF2' ( in 4-component vector of float)
-0:225 cosine ( temp 4-component vector of float)
-0:225 'inF0' ( in 4-component vector of float)
-0:226 hyp. cosine ( temp 4-component vector of float)
-0:226 'inF0' ( in 4-component vector of float)
0:? bitCount ( temp 4-component vector of int)
0:? Constant:
0:? 7 (const int)
0:? 3 (const int)
0:? 5 (const int)
0:? 2 (const int)
-0:228 degrees ( temp 4-component vector of float)
-0:228 'inF0' ( in 4-component vector of float)
-0:229 distance ( temp float)
-0:229 'inF0' ( in 4-component vector of float)
-0:229 'inF1' ( in 4-component vector of float)
-0:230 dot-product ( temp float)
-0:230 'inF0' ( in 4-component vector of float)
-0:230 'inF1' ( in 4-component vector of float)
-0:231 Construct vec4 ( temp 4-component vector of float)
-0:231 Constant:
-0:231 1.000000
-0:231 component-wise multiply ( temp float)
-0:231 direct index ( temp float)
-0:231 'inF0' ( in 4-component vector of float)
-0:231 Constant:
-0:231 1 (const int)
-0:231 direct index ( temp float)
-0:231 'inF1' ( in 4-component vector of float)
-0:231 Constant:
-0:231 1 (const int)
-0:231 direct index ( temp float)
-0:231 'inF0' ( in 4-component vector of float)
-0:231 Constant:
-0:231 2 (const int)
-0:231 direct index ( temp float)
-0:231 'inF1' ( in 4-component vector of float)
-0:231 Constant:
-0:231 3 (const int)
-0:235 exp ( temp 4-component vector of float)
-0:235 'inF0' ( in 4-component vector of float)
-0:236 exp2 ( temp 4-component vector of float)
-0:236 'inF0' ( in 4-component vector of float)
-0:237 face-forward ( temp 4-component vector of float)
+0:225 degrees ( temp 4-component vector of float)
+0:225 'inF0' ( in 4-component vector of float)
+0:226 distance ( temp float)
+0:226 'inF0' ( in 4-component vector of float)
+0:226 'inF1' ( in 4-component vector of float)
+0:227 dot-product ( temp float)
+0:227 'inF0' ( in 4-component vector of float)
+0:227 'inF1' ( in 4-component vector of float)
+0:228 Construct vec4 ( temp 4-component vector of float)
+0:228 Constant:
+0:228 1.000000
+0:228 component-wise multiply ( temp float)
+0:228 direct index ( temp float)
+0:228 'inF0' ( in 4-component vector of float)
+0:228 Constant:
+0:228 1 (const int)
+0:228 direct index ( temp float)
+0:228 'inF1' ( in 4-component vector of float)
+0:228 Constant:
+0:228 1 (const int)
+0:228 direct index ( temp float)
+0:228 'inF0' ( in 4-component vector of float)
+0:228 Constant:
+0:228 2 (const int)
+0:228 direct index ( temp float)
+0:228 'inF1' ( in 4-component vector of float)
+0:228 Constant:
+0:228 3 (const int)
+0:232 exp ( temp 4-component vector of float)
+0:232 'inF0' ( in 4-component vector of float)
+0:233 exp2 ( temp 4-component vector of float)
+0:233 'inF0' ( in 4-component vector of float)
+0:234 face-forward ( temp 4-component vector of float)
+0:234 'inF0' ( in 4-component vector of float)
+0:234 'inF1' ( in 4-component vector of float)
+0:234 'inF2' ( in 4-component vector of float)
+0:235 findMSB ( temp int)
+0:235 Constant:
+0:235 7 (const int)
+0:236 findLSB ( temp int)
+0:236 Constant:
+0:236 7 (const int)
+0:237 Floor ( temp 4-component vector of float)
0:237 'inF0' ( in 4-component vector of float)
-0:237 'inF1' ( in 4-component vector of float)
-0:237 'inF2' ( in 4-component vector of float)
-0:238 findMSB ( temp int)
-0:238 Constant:
-0:238 7 (const int)
-0:239 findLSB ( temp int)
-0:239 Constant:
-0:239 7 (const int)
-0:240 Floor ( temp 4-component vector of float)
+0:239 mod ( temp 4-component vector of float)
+0:239 'inF0' ( in 4-component vector of float)
+0:239 'inF1' ( in 4-component vector of float)
+0:240 Fraction ( temp 4-component vector of float)
0:240 'inF0' ( in 4-component vector of float)
-0:242 mod ( temp 4-component vector of float)
+0:241 isinf ( temp 4-component vector of bool)
+0:241 'inF0' ( in 4-component vector of float)
+0:242 isnan ( temp 4-component vector of bool)
0:242 'inF0' ( in 4-component vector of float)
-0:242 'inF1' ( in 4-component vector of float)
-0:243 Fraction ( temp 4-component vector of float)
+0:243 ldexp ( temp 4-component vector of float)
0:243 'inF0' ( in 4-component vector of float)
-0:244 frexp ( temp 4-component vector of float)
+0:243 'inF1' ( in 4-component vector of float)
+0:244 mix ( temp 4-component vector of float)
0:244 'inF0' ( in 4-component vector of float)
0:244 'inF1' ( in 4-component vector of float)
-0:245 isinf ( temp 4-component vector of bool)
+0:244 'inF2' ( in 4-component vector of float)
+0:245 length ( temp float)
0:245 'inF0' ( in 4-component vector of float)
-0:246 isnan ( temp 4-component vector of bool)
+0:246 log ( temp 4-component vector of float)
0:246 'inF0' ( in 4-component vector of float)
-0:247 ldexp ( temp 4-component vector of float)
-0:247 'inF0' ( in 4-component vector of float)
-0:247 'inF1' ( in 4-component vector of float)
-0:248 mix ( temp 4-component vector of float)
+0:247 vector-scale ( temp 4-component vector of float)
+0:247 log2 ( temp 4-component vector of float)
+0:247 'inF0' ( in 4-component vector of float)
+0:247 Constant:
+0:247 0.301030
+0:248 log2 ( temp 4-component vector of float)
0:248 'inF0' ( in 4-component vector of float)
-0:248 'inF1' ( in 4-component vector of float)
-0:248 'inF2' ( in 4-component vector of float)
-0:249 length ( temp float)
+0:249 max ( temp 4-component vector of float)
0:249 'inF0' ( in 4-component vector of float)
-0:250 log ( temp 4-component vector of float)
+0:249 'inF1' ( in 4-component vector of float)
+0:250 min ( temp 4-component vector of float)
0:250 'inF0' ( in 4-component vector of float)
-0:251 vector-scale ( temp 4-component vector of float)
-0:251 log2 ( temp 4-component vector of float)
-0:251 'inF0' ( in 4-component vector of float)
-0:251 Constant:
-0:251 0.301030
-0:252 log2 ( temp 4-component vector of float)
+0:250 'inF1' ( in 4-component vector of float)
+0:252 normalize ( temp 4-component vector of float)
0:252 'inF0' ( in 4-component vector of float)
-0:253 max ( temp 4-component vector of float)
+0:253 pow ( temp 4-component vector of float)
0:253 'inF0' ( in 4-component vector of float)
0:253 'inF1' ( in 4-component vector of float)
-0:254 min ( temp 4-component vector of float)
+0:254 radians ( temp 4-component vector of float)
0:254 'inF0' ( in 4-component vector of float)
-0:254 'inF1' ( in 4-component vector of float)
-0:256 normalize ( temp 4-component vector of float)
+0:255 reflect ( temp 4-component vector of float)
+0:255 'inF0' ( in 4-component vector of float)
+0:255 'inF1' ( in 4-component vector of float)
+0:256 refract ( temp 4-component vector of float)
0:256 'inF0' ( in 4-component vector of float)
-0:257 pow ( temp 4-component vector of float)
-0:257 'inF0' ( in 4-component vector of float)
-0:257 'inF1' ( in 4-component vector of float)
-0:258 radians ( temp 4-component vector of float)
-0:258 'inF0' ( in 4-component vector of float)
-0:259 reflect ( temp 4-component vector of float)
-0:259 'inF0' ( in 4-component vector of float)
-0:259 'inF1' ( in 4-component vector of float)
-0:260 refract ( temp 4-component vector of float)
-0:260 'inF0' ( in 4-component vector of float)
-0:260 'inF1' ( in 4-component vector of float)
-0:260 Constant:
-0:260 2.000000
+0:256 'inF1' ( in 4-component vector of float)
+0:256 Constant:
+0:256 2.000000
0:? bitFieldReverse ( temp 4-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
0:? 3 (const int)
0:? 4 (const int)
-0:262 roundEven ( temp 4-component vector of float)
+0:258 roundEven ( temp 4-component vector of float)
+0:258 'inF0' ( in 4-component vector of float)
+0:259 inverse sqrt ( temp 4-component vector of float)
+0:259 'inF0' ( in 4-component vector of float)
+0:260 clamp ( temp 4-component vector of float)
+0:260 'inF0' ( in 4-component vector of float)
+0:260 Constant:
+0:260 0.000000
+0:260 Constant:
+0:260 1.000000
+0:261 Sign ( temp 4-component vector of float)
+0:261 'inF0' ( in 4-component vector of float)
+0:262 sine ( temp 4-component vector of float)
0:262 'inF0' ( in 4-component vector of float)
-0:263 inverse sqrt ( temp 4-component vector of float)
-0:263 'inF0' ( in 4-component vector of float)
-0:264 clamp ( temp 4-component vector of float)
+0:263 Sequence
+0:263 move second child to first child ( temp 4-component vector of float)
+0:263 'inF1' ( in 4-component vector of float)
+0:263 sine ( temp 4-component vector of float)
+0:263 'inF0' ( in 4-component vector of float)
+0:263 move second child to first child ( temp 4-component vector of float)
+0:263 'inF2' ( in 4-component vector of float)
+0:263 cosine ( temp 4-component vector of float)
+0:263 'inF0' ( in 4-component vector of float)
+0:264 hyp. sine ( temp 4-component vector of float)
0:264 'inF0' ( in 4-component vector of float)
-0:264 Constant:
-0:264 0.000000
-0:264 Constant:
-0:264 1.000000
-0:265 Sign ( temp 4-component vector of float)
+0:265 smoothstep ( temp 4-component vector of float)
0:265 'inF0' ( in 4-component vector of float)
-0:266 sine ( temp 4-component vector of float)
+0:265 'inF1' ( in 4-component vector of float)
+0:265 'inF2' ( in 4-component vector of float)
+0:266 sqrt ( temp 4-component vector of float)
0:266 'inF0' ( in 4-component vector of float)
-0:267 Sequence
-0:267 move second child to first child ( temp 4-component vector of float)
-0:267 'inF1' ( in 4-component vector of float)
-0:267 sine ( temp 4-component vector of float)
-0:267 'inF0' ( in 4-component vector of float)
-0:267 move second child to first child ( temp 4-component vector of float)
-0:267 'inF2' ( in 4-component vector of float)
-0:267 cosine ( temp 4-component vector of float)
-0:267 'inF0' ( in 4-component vector of float)
-0:268 hyp. sine ( temp 4-component vector of float)
+0:267 step ( temp 4-component vector of float)
+0:267 'inF0' ( in 4-component vector of float)
+0:267 'inF1' ( in 4-component vector of float)
+0:268 tangent ( temp 4-component vector of float)
0:268 'inF0' ( in 4-component vector of float)
-0:269 smoothstep ( temp 4-component vector of float)
+0:269 hyp. tangent ( temp 4-component vector of float)
0:269 'inF0' ( in 4-component vector of float)
-0:269 'inF1' ( in 4-component vector of float)
-0:269 'inF2' ( in 4-component vector of float)
-0:270 sqrt ( temp 4-component vector of float)
-0:270 'inF0' ( in 4-component vector of float)
-0:271 step ( temp 4-component vector of float)
+0:271 trunc ( temp 4-component vector of float)
0:271 'inF0' ( in 4-component vector of float)
-0:271 'inF1' ( in 4-component vector of float)
-0:272 tangent ( temp 4-component vector of float)
-0:272 'inF0' ( in 4-component vector of float)
-0:273 hyp. tangent ( temp 4-component vector of float)
-0:273 'inF0' ( in 4-component vector of float)
-0:275 trunc ( temp 4-component vector of float)
-0:275 'inF0' ( in 4-component vector of float)
-0:278 Branch: Return with expression
+0:274 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
-0:336 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
-0:336 Function Parameters:
-0:336 'inF0' ( in 2X2 matrix of float)
-0:336 'inF1' ( in 2X2 matrix of float)
-0:336 'inF2' ( in 2X2 matrix of float)
+0:331 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
+0:331 Function Parameters:
+0:331 'inF0' ( in 2X2 matrix of float)
+0:331 'inF1' ( in 2X2 matrix of float)
+0:331 'inF2' ( in 2X2 matrix of float)
0:? Sequence
-0:338 all ( temp bool)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 Absolute value ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 arc cosine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 any ( temp bool)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 arc sine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 arc tangent ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 arc tangent ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 Ceiling ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 clamp ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 'inF2' ( in 2X2 matrix of float)
-0:338 cosine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 hyp. cosine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 degrees ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 determinant ( temp float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 exp ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 exp2 ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 findMSB ( temp int)
-0:338 Constant:
-0:338 7 (const int)
-0:338 findLSB ( temp int)
-0:338 Constant:
-0:338 7 (const int)
-0:338 Floor ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 mod ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 Fraction ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 frexp ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 ldexp ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 mix ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 'inF2' ( in 2X2 matrix of float)
-0:338 log ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 matrix-scale ( temp 2X2 matrix of float)
-0:338 log2 ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 Constant:
-0:338 0.301030
-0:338 log2 ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 max ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 min ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 pow ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 radians ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 roundEven ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 inverse sqrt ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 clamp ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 Constant:
-0:338 0.000000
-0:338 Constant:
-0:338 1.000000
-0:338 Sign ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 sine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 Sequence
-0:338 move second child to first child ( temp 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 sine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 move second child to first child ( temp 2X2 matrix of float)
-0:338 'inF2' ( in 2X2 matrix of float)
-0:338 cosine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 hyp. sine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 smoothstep ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 'inF2' ( in 2X2 matrix of float)
-0:338 sqrt ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 step ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 tangent ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 hyp. tangent ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 transpose ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 trunc ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:341 Branch: Return with expression
+0:333 all ( temp bool)
+0:333 Convert float to bool ( temp 2X2 matrix of bool)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 Absolute value ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 arc cosine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 any ( temp bool)
+0:333 Convert float to bool ( temp 2X2 matrix of bool)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 arc sine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 arc tangent ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 arc tangent ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 Ceiling ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 clamp ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 'inF2' ( in 2X2 matrix of float)
+0:333 cosine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 hyp. cosine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 degrees ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 determinant ( temp float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 exp ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 exp2 ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 findMSB ( temp int)
+0:333 Constant:
+0:333 7 (const int)
+0:333 findLSB ( temp int)
+0:333 Constant:
+0:333 7 (const int)
+0:333 Floor ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 mod ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 Fraction ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 ldexp ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 mix ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 'inF2' ( in 2X2 matrix of float)
+0:333 log ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 matrix-scale ( temp 2X2 matrix of float)
+0:333 log2 ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 Constant:
+0:333 0.301030
+0:333 log2 ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 max ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 min ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 pow ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 radians ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 roundEven ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 inverse sqrt ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 clamp ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 Constant:
+0:333 0.000000
+0:333 Constant:
+0:333 1.000000
+0:333 Sign ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 sine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 Sequence
+0:333 move second child to first child ( temp 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 sine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 move second child to first child ( temp 2X2 matrix of float)
+0:333 'inF2' ( in 2X2 matrix of float)
+0:333 cosine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 hyp. sine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 smoothstep ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 'inF2' ( in 2X2 matrix of float)
+0:333 sqrt ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 step ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 tangent ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 hyp. tangent ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 transpose ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 trunc ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:336 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:345 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
-0:345 Function Parameters:
-0:345 'inF0' ( in 3X3 matrix of float)
-0:345 'inF1' ( in 3X3 matrix of float)
-0:345 'inF2' ( in 3X3 matrix of float)
+0:340 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
+0:340 Function Parameters:
+0:340 'inF0' ( in 3X3 matrix of float)
+0:340 'inF1' ( in 3X3 matrix of float)
+0:340 'inF2' ( in 3X3 matrix of float)
0:? Sequence
-0:347 all ( temp bool)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 Absolute value ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 arc cosine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 any ( temp bool)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 arc sine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 arc tangent ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 arc tangent ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 Ceiling ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 clamp ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 'inF2' ( in 3X3 matrix of float)
-0:347 cosine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 hyp. cosine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 degrees ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 determinant ( temp float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 exp ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 exp2 ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 findMSB ( temp int)
-0:347 Constant:
-0:347 7 (const int)
-0:347 findLSB ( temp int)
-0:347 Constant:
-0:347 7 (const int)
-0:347 Floor ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 mod ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 Fraction ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 frexp ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 ldexp ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 mix ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 'inF2' ( in 3X3 matrix of float)
-0:347 log ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 matrix-scale ( temp 3X3 matrix of float)
-0:347 log2 ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 Constant:
-0:347 0.301030
-0:347 log2 ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 max ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 min ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 pow ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 radians ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 roundEven ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 inverse sqrt ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 clamp ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 Constant:
-0:347 0.000000
-0:347 Constant:
-0:347 1.000000
-0:347 Sign ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 sine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 Sequence
-0:347 move second child to first child ( temp 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 sine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 move second child to first child ( temp 3X3 matrix of float)
-0:347 'inF2' ( in 3X3 matrix of float)
-0:347 cosine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 hyp. sine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 smoothstep ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 'inF2' ( in 3X3 matrix of float)
-0:347 sqrt ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 step ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 tangent ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 hyp. tangent ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 transpose ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 trunc ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:350 Branch: Return with expression
+0:342 all ( temp bool)
+0:342 Convert float to bool ( temp 3X3 matrix of bool)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 Absolute value ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 arc cosine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 any ( temp bool)
+0:342 Convert float to bool ( temp 3X3 matrix of bool)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 arc sine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 arc tangent ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 arc tangent ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 Ceiling ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 clamp ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 'inF2' ( in 3X3 matrix of float)
+0:342 cosine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 hyp. cosine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 degrees ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 determinant ( temp float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 exp ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 exp2 ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 findMSB ( temp int)
+0:342 Constant:
+0:342 7 (const int)
+0:342 findLSB ( temp int)
+0:342 Constant:
+0:342 7 (const int)
+0:342 Floor ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 mod ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 Fraction ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 ldexp ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 mix ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 'inF2' ( in 3X3 matrix of float)
+0:342 log ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 matrix-scale ( temp 3X3 matrix of float)
+0:342 log2 ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 Constant:
+0:342 0.301030
+0:342 log2 ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 max ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 min ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 pow ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 radians ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 roundEven ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 inverse sqrt ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 clamp ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 Constant:
+0:342 0.000000
+0:342 Constant:
+0:342 1.000000
+0:342 Sign ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 sine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 Sequence
+0:342 move second child to first child ( temp 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 sine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 move second child to first child ( temp 3X3 matrix of float)
+0:342 'inF2' ( in 3X3 matrix of float)
+0:342 cosine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 hyp. sine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 smoothstep ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 'inF2' ( in 3X3 matrix of float)
+0:342 sqrt ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 step ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 tangent ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 hyp. tangent ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 transpose ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 trunc ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:345 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
@@ -946,131 +940,130 @@ Shader version: 450
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:354 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
-0:354 Function Parameters:
-0:354 'inF0' ( in 4X4 matrix of float)
-0:354 'inF1' ( in 4X4 matrix of float)
-0:354 'inF2' ( in 4X4 matrix of float)
+0:349 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
+0:349 Function Parameters:
+0:349 'inF0' ( in 4X4 matrix of float)
+0:349 'inF1' ( in 4X4 matrix of float)
+0:349 'inF2' ( in 4X4 matrix of float)
0:? Sequence
-0:356 all ( temp bool)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 Absolute value ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 arc cosine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 any ( temp bool)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 arc sine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 arc tangent ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 arc tangent ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 Ceiling ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 clamp ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 'inF2' ( in 4X4 matrix of float)
-0:356 cosine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 hyp. cosine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 degrees ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 determinant ( temp float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 exp ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 exp2 ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 findMSB ( temp int)
-0:356 Constant:
-0:356 7 (const int)
-0:356 findLSB ( temp int)
-0:356 Constant:
-0:356 7 (const int)
-0:356 Floor ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 mod ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 Fraction ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 frexp ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 ldexp ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 mix ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 'inF2' ( in 4X4 matrix of float)
-0:356 log ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 matrix-scale ( temp 4X4 matrix of float)
-0:356 log2 ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 Constant:
-0:356 0.301030
-0:356 log2 ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 max ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 min ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 pow ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 radians ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 roundEven ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 inverse sqrt ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 clamp ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 Constant:
-0:356 0.000000
-0:356 Constant:
-0:356 1.000000
-0:356 Sign ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 sine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 Sequence
-0:356 move second child to first child ( temp 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 sine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 move second child to first child ( temp 4X4 matrix of float)
-0:356 'inF2' ( in 4X4 matrix of float)
-0:356 cosine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 hyp. sine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 smoothstep ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 'inF2' ( in 4X4 matrix of float)
-0:356 sqrt ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 step ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 tangent ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 hyp. tangent ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 transpose ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 trunc ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:359 Branch: Return with expression
+0:351 all ( temp bool)
+0:351 Convert float to bool ( temp 4X4 matrix of bool)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 Absolute value ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 arc cosine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 any ( temp bool)
+0:351 Convert float to bool ( temp 4X4 matrix of bool)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 arc sine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 arc tangent ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 arc tangent ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 Ceiling ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 clamp ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 'inF2' ( in 4X4 matrix of float)
+0:351 cosine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 hyp. cosine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 degrees ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 determinant ( temp float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 exp ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 exp2 ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 findMSB ( temp int)
+0:351 Constant:
+0:351 7 (const int)
+0:351 findLSB ( temp int)
+0:351 Constant:
+0:351 7 (const int)
+0:351 Floor ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 mod ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 Fraction ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 ldexp ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 mix ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 'inF2' ( in 4X4 matrix of float)
+0:351 log ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 matrix-scale ( temp 4X4 matrix of float)
+0:351 log2 ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 Constant:
+0:351 0.301030
+0:351 log2 ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 max ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 min ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 pow ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 radians ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 roundEven ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 inverse sqrt ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 clamp ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 Constant:
+0:351 0.000000
+0:351 Constant:
+0:351 1.000000
+0:351 Sign ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 sine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 Sequence
+0:351 move second child to first child ( temp 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 sine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 move second child to first child ( temp 4X4 matrix of float)
+0:351 'inF2' ( in 4X4 matrix of float)
+0:351 cosine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 hyp. sine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 smoothstep ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 'inF2' ( in 4X4 matrix of float)
+0:351 sqrt ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 step ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 tangent ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 hyp. tangent ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 transpose ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 trunc ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:354 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
@@ -1088,309 +1081,309 @@ Shader version: 450
0:? 4.000000
0:? 4.000000
0:? 4.000000
-0:377 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
-0:377 Function Parameters:
-0:377 'inF0' ( in float)
-0:377 'inF1' ( in float)
-0:377 'inFV0' ( in 2-component vector of float)
-0:377 'inFV1' ( in 2-component vector of float)
-0:377 'inFM0' ( in 2X2 matrix of float)
-0:377 'inFM1' ( in 2X2 matrix of float)
+0:372 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
+0:372 Function Parameters:
+0:372 'inF0' ( in float)
+0:372 'inF1' ( in float)
+0:372 'inFV0' ( in 2-component vector of float)
+0:372 'inFV1' ( in 2-component vector of float)
+0:372 'inFM0' ( in 2X2 matrix of float)
+0:372 'inFM1' ( in 2X2 matrix of float)
0:? Sequence
-0:378 Sequence
-0:378 move second child to first child ( temp float)
-0:378 'r0' ( temp float)
-0:378 component-wise multiply ( temp float)
-0:378 'inF1' ( in float)
-0:378 'inF0' ( in float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2-component vector of float)
-0:378 'r1' ( temp 2-component vector of float)
-0:378 vector-scale ( temp 2-component vector of float)
-0:378 'inF0' ( in float)
-0:378 'inFV0' ( in 2-component vector of float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2-component vector of float)
-0:378 'r2' ( temp 2-component vector of float)
-0:378 vector-scale ( temp 2-component vector of float)
-0:378 'inFV0' ( in 2-component vector of float)
-0:378 'inF0' ( in float)
-0:378 Sequence
-0:378 move second child to first child ( temp float)
-0:378 'r3' ( temp float)
-0:378 dot-product ( temp float)
-0:378 'inFV0' ( in 2-component vector of float)
-0:378 'inFV1' ( in 2-component vector of float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2-component vector of float)
-0:378 'r4' ( temp 2-component vector of float)
-0:378 vector-times-matrix ( temp 2-component vector of float)
-0:378 'inFV0' ( in 2-component vector of float)
-0:378 'inFM0' ( in 2X2 matrix of float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2-component vector of float)
-0:378 'r5' ( temp 2-component vector of float)
-0:378 matrix-times-vector ( temp 2-component vector of float)
-0:378 'inFM0' ( in 2X2 matrix of float)
-0:378 'inFV0' ( in 2-component vector of float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2X2 matrix of float)
-0:378 'r6' ( temp 2X2 matrix of float)
-0:378 matrix-scale ( temp 2X2 matrix of float)
-0:378 'inF0' ( in float)
-0:378 'inFM0' ( in 2X2 matrix of float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2X2 matrix of float)
-0:378 'r7' ( temp 2X2 matrix of float)
-0:378 matrix-scale ( temp 2X2 matrix of float)
-0:378 'inFM0' ( in 2X2 matrix of float)
-0:378 'inF0' ( in float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2X2 matrix of float)
-0:378 'r8' ( temp 2X2 matrix of float)
-0:378 matrix-multiply ( temp 2X2 matrix of float)
-0:378 'inFM1' ( in 2X2 matrix of float)
-0:378 'inFM0' ( in 2X2 matrix of float)
-0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
-0:384 Function Parameters:
-0:384 'inF0' ( in float)
-0:384 'inF1' ( in float)
-0:384 'inFV0' ( in 3-component vector of float)
-0:384 'inFV1' ( in 3-component vector of float)
-0:384 'inFM0' ( in 3X3 matrix of float)
-0:384 'inFM1' ( in 3X3 matrix of float)
+0:373 Sequence
+0:373 move second child to first child ( temp float)
+0:373 'r0' ( temp float)
+0:373 component-wise multiply ( temp float)
+0:373 'inF1' ( in float)
+0:373 'inF0' ( in float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2-component vector of float)
+0:373 'r1' ( temp 2-component vector of float)
+0:373 vector-scale ( temp 2-component vector of float)
+0:373 'inF0' ( in float)
+0:373 'inFV0' ( in 2-component vector of float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2-component vector of float)
+0:373 'r2' ( temp 2-component vector of float)
+0:373 vector-scale ( temp 2-component vector of float)
+0:373 'inFV0' ( in 2-component vector of float)
+0:373 'inF0' ( in float)
+0:373 Sequence
+0:373 move second child to first child ( temp float)
+0:373 'r3' ( temp float)
+0:373 dot-product ( temp float)
+0:373 'inFV0' ( in 2-component vector of float)
+0:373 'inFV1' ( in 2-component vector of float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2-component vector of float)
+0:373 'r4' ( temp 2-component vector of float)
+0:373 vector-times-matrix ( temp 2-component vector of float)
+0:373 'inFV0' ( in 2-component vector of float)
+0:373 'inFM0' ( in 2X2 matrix of float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2-component vector of float)
+0:373 'r5' ( temp 2-component vector of float)
+0:373 matrix-times-vector ( temp 2-component vector of float)
+0:373 'inFM0' ( in 2X2 matrix of float)
+0:373 'inFV0' ( in 2-component vector of float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2X2 matrix of float)
+0:373 'r6' ( temp 2X2 matrix of float)
+0:373 matrix-scale ( temp 2X2 matrix of float)
+0:373 'inF0' ( in float)
+0:373 'inFM0' ( in 2X2 matrix of float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2X2 matrix of float)
+0:373 'r7' ( temp 2X2 matrix of float)
+0:373 matrix-scale ( temp 2X2 matrix of float)
+0:373 'inFM0' ( in 2X2 matrix of float)
+0:373 'inF0' ( in float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2X2 matrix of float)
+0:373 'r8' ( temp 2X2 matrix of float)
+0:373 matrix-multiply ( temp 2X2 matrix of float)
+0:373 'inFM1' ( in 2X2 matrix of float)
+0:373 'inFM0' ( in 2X2 matrix of float)
+0:379 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
+0:379 Function Parameters:
+0:379 'inF0' ( in float)
+0:379 'inF1' ( in float)
+0:379 'inFV0' ( in 3-component vector of float)
+0:379 'inFV1' ( in 3-component vector of float)
+0:379 'inFM0' ( in 3X3 matrix of float)
+0:379 'inFM1' ( in 3X3 matrix of float)
0:? Sequence
-0:385 Sequence
-0:385 move second child to first child ( temp float)
-0:385 'r0' ( temp float)
-0:385 component-wise multiply ( temp float)
-0:385 'inF1' ( in float)
-0:385 'inF0' ( in float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3-component vector of float)
-0:385 'r1' ( temp 3-component vector of float)
-0:385 vector-scale ( temp 3-component vector of float)
-0:385 'inF0' ( in float)
-0:385 'inFV0' ( in 3-component vector of float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3-component vector of float)
-0:385 'r2' ( temp 3-component vector of float)
-0:385 vector-scale ( temp 3-component vector of float)
-0:385 'inFV0' ( in 3-component vector of float)
-0:385 'inF0' ( in float)
-0:385 Sequence
-0:385 move second child to first child ( temp float)
-0:385 'r3' ( temp float)
-0:385 dot-product ( temp float)
-0:385 'inFV0' ( in 3-component vector of float)
-0:385 'inFV1' ( in 3-component vector of float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3-component vector of float)
-0:385 'r4' ( temp 3-component vector of float)
-0:385 vector-times-matrix ( temp 3-component vector of float)
-0:385 'inFV0' ( in 3-component vector of float)
-0:385 'inFM0' ( in 3X3 matrix of float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3-component vector of float)
-0:385 'r5' ( temp 3-component vector of float)
-0:385 matrix-times-vector ( temp 3-component vector of float)
-0:385 'inFM0' ( in 3X3 matrix of float)
-0:385 'inFV0' ( in 3-component vector of float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3X3 matrix of float)
-0:385 'r6' ( temp 3X3 matrix of float)
-0:385 matrix-scale ( temp 3X3 matrix of float)
-0:385 'inF0' ( in float)
-0:385 'inFM0' ( in 3X3 matrix of float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3X3 matrix of float)
-0:385 'r7' ( temp 3X3 matrix of float)
-0:385 matrix-scale ( temp 3X3 matrix of float)
-0:385 'inFM0' ( in 3X3 matrix of float)
-0:385 'inF0' ( in float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3X3 matrix of float)
-0:385 'r8' ( temp 3X3 matrix of float)
-0:385 matrix-multiply ( temp 3X3 matrix of float)
-0:385 'inFM1' ( in 3X3 matrix of float)
-0:385 'inFM0' ( in 3X3 matrix of float)
-0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
-0:391 Function Parameters:
-0:391 'inF0' ( in float)
-0:391 'inF1' ( in float)
-0:391 'inFV0' ( in 4-component vector of float)
-0:391 'inFV1' ( in 4-component vector of float)
-0:391 'inFM0' ( in 4X4 matrix of float)
-0:391 'inFM1' ( in 4X4 matrix of float)
+0:380 Sequence
+0:380 move second child to first child ( temp float)
+0:380 'r0' ( temp float)
+0:380 component-wise multiply ( temp float)
+0:380 'inF1' ( in float)
+0:380 'inF0' ( in float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3-component vector of float)
+0:380 'r1' ( temp 3-component vector of float)
+0:380 vector-scale ( temp 3-component vector of float)
+0:380 'inF0' ( in float)
+0:380 'inFV0' ( in 3-component vector of float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3-component vector of float)
+0:380 'r2' ( temp 3-component vector of float)
+0:380 vector-scale ( temp 3-component vector of float)
+0:380 'inFV0' ( in 3-component vector of float)
+0:380 'inF0' ( in float)
+0:380 Sequence
+0:380 move second child to first child ( temp float)
+0:380 'r3' ( temp float)
+0:380 dot-product ( temp float)
+0:380 'inFV0' ( in 3-component vector of float)
+0:380 'inFV1' ( in 3-component vector of float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3-component vector of float)
+0:380 'r4' ( temp 3-component vector of float)
+0:380 vector-times-matrix ( temp 3-component vector of float)
+0:380 'inFV0' ( in 3-component vector of float)
+0:380 'inFM0' ( in 3X3 matrix of float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3-component vector of float)
+0:380 'r5' ( temp 3-component vector of float)
+0:380 matrix-times-vector ( temp 3-component vector of float)
+0:380 'inFM0' ( in 3X3 matrix of float)
+0:380 'inFV0' ( in 3-component vector of float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3X3 matrix of float)
+0:380 'r6' ( temp 3X3 matrix of float)
+0:380 matrix-scale ( temp 3X3 matrix of float)
+0:380 'inF0' ( in float)
+0:380 'inFM0' ( in 3X3 matrix of float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3X3 matrix of float)
+0:380 'r7' ( temp 3X3 matrix of float)
+0:380 matrix-scale ( temp 3X3 matrix of float)
+0:380 'inFM0' ( in 3X3 matrix of float)
+0:380 'inF0' ( in float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3X3 matrix of float)
+0:380 'r8' ( temp 3X3 matrix of float)
+0:380 matrix-multiply ( temp 3X3 matrix of float)
+0:380 'inFM1' ( in 3X3 matrix of float)
+0:380 'inFM0' ( in 3X3 matrix of float)
+0:386 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
+0:386 Function Parameters:
+0:386 'inF0' ( in float)
+0:386 'inF1' ( in float)
+0:386 'inFV0' ( in 4-component vector of float)
+0:386 'inFV1' ( in 4-component vector of float)
+0:386 'inFM0' ( in 4X4 matrix of float)
+0:386 'inFM1' ( in 4X4 matrix of float)
0:? Sequence
-0:392 Sequence
-0:392 move second child to first child ( temp float)
-0:392 'r0' ( temp float)
-0:392 component-wise multiply ( temp float)
-0:392 'inF1' ( in float)
-0:392 'inF0' ( in float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4-component vector of float)
-0:392 'r1' ( temp 4-component vector of float)
-0:392 vector-scale ( temp 4-component vector of float)
-0:392 'inF0' ( in float)
-0:392 'inFV0' ( in 4-component vector of float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4-component vector of float)
-0:392 'r2' ( temp 4-component vector of float)
-0:392 vector-scale ( temp 4-component vector of float)
-0:392 'inFV0' ( in 4-component vector of float)
-0:392 'inF0' ( in float)
-0:392 Sequence
-0:392 move second child to first child ( temp float)
-0:392 'r3' ( temp float)
-0:392 dot-product ( temp float)
-0:392 'inFV0' ( in 4-component vector of float)
-0:392 'inFV1' ( in 4-component vector of float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4-component vector of float)
-0:392 'r4' ( temp 4-component vector of float)
-0:392 vector-times-matrix ( temp 4-component vector of float)
-0:392 'inFV0' ( in 4-component vector of float)
-0:392 'inFM0' ( in 4X4 matrix of float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4-component vector of float)
-0:392 'r5' ( temp 4-component vector of float)
-0:392 matrix-times-vector ( temp 4-component vector of float)
-0:392 'inFM0' ( in 4X4 matrix of float)
-0:392 'inFV0' ( in 4-component vector of float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4X4 matrix of float)
-0:392 'r6' ( temp 4X4 matrix of float)
-0:392 matrix-scale ( temp 4X4 matrix of float)
-0:392 'inF0' ( in float)
-0:392 'inFM0' ( in 4X4 matrix of float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4X4 matrix of float)
-0:392 'r7' ( temp 4X4 matrix of float)
-0:392 matrix-scale ( temp 4X4 matrix of float)
-0:392 'inFM0' ( in 4X4 matrix of float)
-0:392 'inF0' ( in float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4X4 matrix of float)
-0:392 'r8' ( temp 4X4 matrix of float)
-0:392 matrix-multiply ( temp 4X4 matrix of float)
-0:392 'inFM1' ( in 4X4 matrix of float)
-0:392 'inFM0' ( in 4X4 matrix of float)
-0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
-0:401 Function Parameters:
-0:401 'inF0' ( in float)
-0:401 'inF1' ( in float)
-0:401 'inFV2' ( in 2-component vector of float)
-0:401 'inFV3' ( in 3-component vector of float)
-0:401 'inFM2x3' ( in 2X3 matrix of float)
-0:401 'inFM3x2' ( in 3X2 matrix of float)
-0:401 'inFM3x3' ( in 3X3 matrix of float)
-0:401 'inFM3x4' ( in 3X4 matrix of float)
-0:401 'inFM2x4' ( in 2X4 matrix of float)
+0:387 Sequence
+0:387 move second child to first child ( temp float)
+0:387 'r0' ( temp float)
+0:387 component-wise multiply ( temp float)
+0:387 'inF1' ( in float)
+0:387 'inF0' ( in float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4-component vector of float)
+0:387 'r1' ( temp 4-component vector of float)
+0:387 vector-scale ( temp 4-component vector of float)
+0:387 'inF0' ( in float)
+0:387 'inFV0' ( in 4-component vector of float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4-component vector of float)
+0:387 'r2' ( temp 4-component vector of float)
+0:387 vector-scale ( temp 4-component vector of float)
+0:387 'inFV0' ( in 4-component vector of float)
+0:387 'inF0' ( in float)
+0:387 Sequence
+0:387 move second child to first child ( temp float)
+0:387 'r3' ( temp float)
+0:387 dot-product ( temp float)
+0:387 'inFV0' ( in 4-component vector of float)
+0:387 'inFV1' ( in 4-component vector of float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4-component vector of float)
+0:387 'r4' ( temp 4-component vector of float)
+0:387 vector-times-matrix ( temp 4-component vector of float)
+0:387 'inFV0' ( in 4-component vector of float)
+0:387 'inFM0' ( in 4X4 matrix of float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4-component vector of float)
+0:387 'r5' ( temp 4-component vector of float)
+0:387 matrix-times-vector ( temp 4-component vector of float)
+0:387 'inFM0' ( in 4X4 matrix of float)
+0:387 'inFV0' ( in 4-component vector of float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4X4 matrix of float)
+0:387 'r6' ( temp 4X4 matrix of float)
+0:387 matrix-scale ( temp 4X4 matrix of float)
+0:387 'inF0' ( in float)
+0:387 'inFM0' ( in 4X4 matrix of float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4X4 matrix of float)
+0:387 'r7' ( temp 4X4 matrix of float)
+0:387 matrix-scale ( temp 4X4 matrix of float)
+0:387 'inFM0' ( in 4X4 matrix of float)
+0:387 'inF0' ( in float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4X4 matrix of float)
+0:387 'r8' ( temp 4X4 matrix of float)
+0:387 matrix-multiply ( temp 4X4 matrix of float)
+0:387 'inFM1' ( in 4X4 matrix of float)
+0:387 'inFM0' ( in 4X4 matrix of float)
+0:396 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
+0:396 Function Parameters:
+0:396 'inF0' ( in float)
+0:396 'inF1' ( in float)
+0:396 'inFV2' ( in 2-component vector of float)
+0:396 'inFV3' ( in 3-component vector of float)
+0:396 'inFM2x3' ( in 2X3 matrix of float)
+0:396 'inFM3x2' ( in 3X2 matrix of float)
+0:396 'inFM3x3' ( in 3X3 matrix of float)
+0:396 'inFM3x4' ( in 3X4 matrix of float)
+0:396 'inFM2x4' ( in 2X4 matrix of float)
0:? Sequence
+0:397 Sequence
+0:397 move second child to first child ( temp float)
+0:397 'r00' ( temp float)
+0:397 component-wise multiply ( temp float)
+0:397 'inF1' ( in float)
+0:397 'inF0' ( in float)
+0:398 Sequence
+0:398 move second child to first child ( temp 2-component vector of float)
+0:398 'r01' ( temp 2-component vector of float)
+0:398 vector-scale ( temp 2-component vector of float)
+0:398 'inF0' ( in float)
+0:398 'inFV2' ( in 2-component vector of float)
+0:399 Sequence
+0:399 move second child to first child ( temp 3-component vector of float)
+0:399 'r02' ( temp 3-component vector of float)
+0:399 vector-scale ( temp 3-component vector of float)
+0:399 'inF0' ( in float)
+0:399 'inFV3' ( in 3-component vector of float)
+0:400 Sequence
+0:400 move second child to first child ( temp 2-component vector of float)
+0:400 'r03' ( temp 2-component vector of float)
+0:400 vector-scale ( temp 2-component vector of float)
+0:400 'inFV2' ( in 2-component vector of float)
+0:400 'inF0' ( in float)
+0:401 Sequence
+0:401 move second child to first child ( temp 3-component vector of float)
+0:401 'r04' ( temp 3-component vector of float)
+0:401 vector-scale ( temp 3-component vector of float)
+0:401 'inFV3' ( in 3-component vector of float)
+0:401 'inF0' ( in float)
0:402 Sequence
0:402 move second child to first child ( temp float)
-0:402 'r00' ( temp float)
-0:402 component-wise multiply ( temp float)
-0:402 'inF1' ( in float)
-0:402 'inF0' ( in float)
+0:402 'r05' ( temp float)
+0:402 dot-product ( temp float)
+0:402 'inFV2' ( in 2-component vector of float)
+0:402 'inFV2' ( in 2-component vector of float)
0:403 Sequence
-0:403 move second child to first child ( temp 2-component vector of float)
-0:403 'r01' ( temp 2-component vector of float)
-0:403 vector-scale ( temp 2-component vector of float)
-0:403 'inF0' ( in float)
-0:403 'inFV2' ( in 2-component vector of float)
+0:403 move second child to first child ( temp float)
+0:403 'r06' ( temp float)
+0:403 dot-product ( temp float)
+0:403 'inFV3' ( in 3-component vector of float)
+0:403 'inFV3' ( in 3-component vector of float)
0:404 Sequence
0:404 move second child to first child ( temp 3-component vector of float)
-0:404 'r02' ( temp 3-component vector of float)
-0:404 vector-scale ( temp 3-component vector of float)
-0:404 'inF0' ( in float)
-0:404 'inFV3' ( in 3-component vector of float)
+0:404 'r07' ( temp 3-component vector of float)
+0:404 matrix-times-vector ( temp 3-component vector of float)
+0:404 'inFM2x3' ( in 2X3 matrix of float)
+0:404 'inFV2' ( in 2-component vector of float)
0:405 Sequence
0:405 move second child to first child ( temp 2-component vector of float)
-0:405 'r03' ( temp 2-component vector of float)
-0:405 vector-scale ( temp 2-component vector of float)
-0:405 'inFV2' ( in 2-component vector of float)
-0:405 'inF0' ( in float)
+0:405 'r08' ( temp 2-component vector of float)
+0:405 matrix-times-vector ( temp 2-component vector of float)
+0:405 'inFM3x2' ( in 3X2 matrix of float)
+0:405 'inFV3' ( in 3-component vector of float)
0:406 Sequence
-0:406 move second child to first child ( temp 3-component vector of float)
-0:406 'r04' ( temp 3-component vector of float)
-0:406 vector-scale ( temp 3-component vector of float)
+0:406 move second child to first child ( temp 2-component vector of float)
+0:406 'r09' ( temp 2-component vector of float)
+0:406 vector-times-matrix ( temp 2-component vector of float)
0:406 'inFV3' ( in 3-component vector of float)
-0:406 'inF0' ( in float)
+0:406 'inFM2x3' ( in 2X3 matrix of float)
0:407 Sequence
-0:407 move second child to first child ( temp float)
-0:407 'r05' ( temp float)
-0:407 dot-product ( temp float)
-0:407 'inFV2' ( in 2-component vector of float)
+0:407 move second child to first child ( temp 3-component vector of float)
+0:407 'r10' ( temp 3-component vector of float)
+0:407 vector-times-matrix ( temp 3-component vector of float)
0:407 'inFV2' ( in 2-component vector of float)
+0:407 'inFM3x2' ( in 3X2 matrix of float)
0:408 Sequence
-0:408 move second child to first child ( temp float)
-0:408 'r06' ( temp float)
-0:408 dot-product ( temp float)
-0:408 'inFV3' ( in 3-component vector of float)
-0:408 'inFV3' ( in 3-component vector of float)
+0:408 move second child to first child ( temp 2X3 matrix of float)
+0:408 'r11' ( temp 2X3 matrix of float)
+0:408 matrix-scale ( temp 2X3 matrix of float)
+0:408 'inF0' ( in float)
+0:408 'inFM2x3' ( in 2X3 matrix of float)
0:409 Sequence
-0:409 move second child to first child ( temp 3-component vector of float)
-0:409 'r07' ( temp 3-component vector of float)
-0:409 matrix-times-vector ( temp 3-component vector of float)
-0:409 'inFM2x3' ( in 2X3 matrix of float)
-0:409 'inFV2' ( in 2-component vector of float)
+0:409 move second child to first child ( temp 3X2 matrix of float)
+0:409 'r12' ( temp 3X2 matrix of float)
+0:409 matrix-scale ( temp 3X2 matrix of float)
+0:409 'inF0' ( in float)
+0:409 'inFM3x2' ( in 3X2 matrix of float)
0:410 Sequence
-0:410 move second child to first child ( temp 2-component vector of float)
-0:410 'r08' ( temp 2-component vector of float)
-0:410 matrix-times-vector ( temp 2-component vector of float)
+0:410 move second child to first child ( temp 2X2 matrix of float)
+0:410 'r13' ( temp 2X2 matrix of float)
+0:410 matrix-multiply ( temp 2X2 matrix of float)
0:410 'inFM3x2' ( in 3X2 matrix of float)
-0:410 'inFV3' ( in 3-component vector of float)
+0:410 'inFM2x3' ( in 2X3 matrix of float)
0:411 Sequence
-0:411 move second child to first child ( temp 2-component vector of float)
-0:411 'r09' ( temp 2-component vector of float)
-0:411 vector-times-matrix ( temp 2-component vector of float)
-0:411 'inFV3' ( in 3-component vector of float)
+0:411 move second child to first child ( temp 2X3 matrix of float)
+0:411 'r14' ( temp 2X3 matrix of float)
+0:411 matrix-multiply ( temp 2X3 matrix of float)
+0:411 'inFM3x3' ( in 3X3 matrix of float)
0:411 'inFM2x3' ( in 2X3 matrix of float)
0:412 Sequence
-0:412 move second child to first child ( temp 3-component vector of float)
-0:412 'r10' ( temp 3-component vector of float)
-0:412 vector-times-matrix ( temp 3-component vector of float)
-0:412 'inFV2' ( in 2-component vector of float)
-0:412 'inFM3x2' ( in 3X2 matrix of float)
+0:412 move second child to first child ( temp 2X4 matrix of float)
+0:412 'r15' ( temp 2X4 matrix of float)
+0:412 matrix-multiply ( temp 2X4 matrix of float)
+0:412 'inFM3x4' ( in 3X4 matrix of float)
+0:412 'inFM2x3' ( in 2X3 matrix of float)
0:413 Sequence
-0:413 move second child to first child ( temp 2X3 matrix of float)
-0:413 'r11' ( temp 2X3 matrix of float)
-0:413 matrix-scale ( temp 2X3 matrix of float)
-0:413 'inF0' ( in float)
-0:413 'inFM2x3' ( in 2X3 matrix of float)
-0:414 Sequence
-0:414 move second child to first child ( temp 3X2 matrix of float)
-0:414 'r12' ( temp 3X2 matrix of float)
-0:414 matrix-scale ( temp 3X2 matrix of float)
-0:414 'inF0' ( in float)
-0:414 'inFM3x2' ( in 3X2 matrix of float)
-0:415 Sequence
-0:415 move second child to first child ( temp 2X2 matrix of float)
-0:415 'r13' ( temp 2X2 matrix of float)
-0:415 matrix-multiply ( temp 2X2 matrix of float)
-0:415 'inFM3x2' ( in 3X2 matrix of float)
-0:415 'inFM2x3' ( in 2X3 matrix of float)
-0:416 Sequence
-0:416 move second child to first child ( temp 2X3 matrix of float)
-0:416 'r14' ( temp 2X3 matrix of float)
-0:416 matrix-multiply ( temp 2X3 matrix of float)
-0:416 'inFM3x3' ( in 3X3 matrix of float)
-0:416 'inFM2x3' ( in 2X3 matrix of float)
-0:417 Sequence
-0:417 move second child to first child ( temp 2X4 matrix of float)
-0:417 'r15' ( temp 2X4 matrix of float)
-0:417 matrix-multiply ( temp 2X4 matrix of float)
-0:417 'inFM3x4' ( in 3X4 matrix of float)
-0:417 'inFM2x3' ( in 2X3 matrix of float)
-0:418 Sequence
-0:418 move second child to first child ( temp 3X4 matrix of float)
-0:418 'r16' ( temp 3X4 matrix of float)
-0:418 matrix-multiply ( temp 3X4 matrix of float)
-0:418 'inFM2x4' ( in 2X4 matrix of float)
-0:418 'inFM3x2' ( in 3X2 matrix of float)
+0:413 move second child to first child ( temp 3X4 matrix of float)
+0:413 'r16' ( temp 3X4 matrix of float)
+0:413 matrix-multiply ( temp 3X4 matrix of float)
+0:413 'inFM2x4' ( in 2X4 matrix of float)
+0:413 'inFM3x2' ( in 3X2 matrix of float)
0:? Linker Objects
@@ -1398,7 +1391,7 @@ Linked vertex stage:
WARNING: Linking vertex stage: Entry point not found
-Shader version: 450
+Shader version: 500
0:? Sequence
0:2 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; ( temp float)
0:2 Function Parameters:
@@ -1409,13 +1402,15 @@ Shader version: 450
0:2 'inU1' ( in uint)
0:? Sequence
0:3 all ( temp bool)
-0:3 'inF0' ( in float)
+0:3 Convert float to bool ( temp bool)
+0:3 'inF0' ( in float)
0:4 Absolute value ( temp float)
0:4 'inF0' ( in float)
0:5 arc cosine ( temp float)
0:5 'inF0' ( in float)
0:6 any ( temp bool)
-0:6 'inF0' ( in float)
+0:6 Convert float to bool ( temp bool)
+0:6 'inF0' ( in float)
0:7 arc sine ( temp float)
0:7 'inF0' ( in float)
0:8 floatBitsToInt ( temp int)
@@ -1461,880 +1456,872 @@ Shader version: 450
0:29 'inF1' ( in float)
0:30 Fraction ( temp float)
0:30 'inF0' ( in float)
-0:31 frexp ( temp float)
+0:31 isinf ( temp bool)
0:31 'inF0' ( in float)
-0:31 'inF1' ( in float)
-0:32 isinf ( temp bool)
+0:32 isnan ( temp bool)
0:32 'inF0' ( in float)
-0:33 isnan ( temp bool)
+0:33 ldexp ( temp float)
0:33 'inF0' ( in float)
-0:34 ldexp ( temp float)
+0:33 'inF1' ( in float)
+0:34 mix ( temp float)
0:34 'inF0' ( in float)
0:34 'inF1' ( in float)
-0:35 mix ( temp float)
+0:34 'inF2' ( in float)
+0:35 log ( temp float)
0:35 'inF0' ( in float)
-0:35 'inF1' ( in float)
-0:35 'inF2' ( in float)
-0:36 log ( temp float)
-0:36 'inF0' ( in float)
-0:37 component-wise multiply ( temp float)
-0:37 log2 ( temp float)
-0:37 'inF0' ( in float)
-0:37 Constant:
-0:37 0.301030
-0:38 log2 ( temp float)
+0:36 component-wise multiply ( temp float)
+0:36 log2 ( temp float)
+0:36 'inF0' ( in float)
+0:36 Constant:
+0:36 0.301030
+0:37 log2 ( temp float)
+0:37 'inF0' ( in float)
+0:38 max ( temp float)
0:38 'inF0' ( in float)
-0:39 max ( temp float)
+0:38 'inF1' ( in float)
+0:39 min ( temp float)
0:39 'inF0' ( in float)
0:39 'inF1' ( in float)
-0:40 min ( temp float)
-0:40 'inF0' ( in float)
-0:40 'inF1' ( in float)
-0:42 pow ( temp float)
+0:41 pow ( temp float)
+0:41 'inF0' ( in float)
+0:41 'inF1' ( in float)
+0:42 radians ( temp float)
0:42 'inF0' ( in float)
-0:42 'inF1' ( in float)
-0:43 radians ( temp float)
-0:43 'inF0' ( in float)
-0:44 bitFieldReverse ( temp int)
-0:44 Constant:
-0:44 2 (const int)
-0:45 roundEven ( temp float)
+0:43 bitFieldReverse ( temp int)
+0:43 Constant:
+0:43 2 (const int)
+0:44 roundEven ( temp float)
+0:44 'inF0' ( in float)
+0:45 inverse sqrt ( temp float)
0:45 'inF0' ( in float)
-0:46 inverse sqrt ( temp float)
+0:46 clamp ( temp float)
0:46 'inF0' ( in float)
-0:47 clamp ( temp float)
+0:46 Constant:
+0:46 0.000000
+0:46 Constant:
+0:46 1.000000
+0:47 Sign ( temp float)
0:47 'inF0' ( in float)
-0:47 Constant:
-0:47 0.000000
-0:47 Constant:
-0:47 1.000000
-0:48 Sign ( temp float)
+0:48 sine ( temp float)
0:48 'inF0' ( in float)
-0:49 sine ( temp float)
-0:49 'inF0' ( in float)
-0:50 Sequence
-0:50 move second child to first child ( temp float)
-0:50 'inF1' ( in float)
-0:50 sine ( temp float)
-0:50 'inF0' ( in float)
-0:50 move second child to first child ( temp float)
-0:50 'inF2' ( in float)
-0:50 cosine ( temp float)
-0:50 'inF0' ( in float)
-0:51 hyp. sine ( temp float)
+0:49 Sequence
+0:49 move second child to first child ( temp float)
+0:49 'inF1' ( in float)
+0:49 sine ( temp float)
+0:49 'inF0' ( in float)
+0:49 move second child to first child ( temp float)
+0:49 'inF2' ( in float)
+0:49 cosine ( temp float)
+0:49 'inF0' ( in float)
+0:50 hyp. sine ( temp float)
+0:50 'inF0' ( in float)
+0:51 smoothstep ( temp float)
0:51 'inF0' ( in float)
-0:52 smoothstep ( temp float)
+0:51 'inF1' ( in float)
+0:51 'inF2' ( in float)
+0:52 sqrt ( temp float)
0:52 'inF0' ( in float)
-0:52 'inF1' ( in float)
-0:52 'inF2' ( in float)
-0:53 sqrt ( temp float)
+0:53 step ( temp float)
0:53 'inF0' ( in float)
-0:54 step ( temp float)
+0:53 'inF1' ( in float)
+0:54 tangent ( temp float)
0:54 'inF0' ( in float)
-0:54 'inF1' ( in float)
-0:55 tangent ( temp float)
+0:55 hyp. tangent ( temp float)
0:55 'inF0' ( in float)
-0:56 hyp. tangent ( temp float)
-0:56 'inF0' ( in float)
-0:58 trunc ( temp float)
-0:58 'inF0' ( in float)
-0:60 Branch: Return with expression
-0:60 Constant:
-0:60 0.000000
-0:64 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float)
-0:64 Function Parameters:
-0:64 'inF0' ( in 1-component vector of float)
-0:64 'inF1' ( in 1-component vector of float)
-0:64 'inF2' ( in 1-component vector of float)
+0:57 trunc ( temp float)
+0:57 'inF0' ( in float)
+0:59 Branch: Return with expression
+0:59 Constant:
+0:59 0.000000
+0:63 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float)
+0:63 Function Parameters:
+0:63 'inF0' ( in 1-component vector of float)
+0:63 'inF1' ( in 1-component vector of float)
+0:63 'inF2' ( in 1-component vector of float)
0:? Sequence
-0:66 Branch: Return with expression
-0:66 Constant:
-0:66 0.000000
-0:70 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float)
-0:70 Function Parameters:
-0:70 'inF0' ( in 2-component vector of float)
-0:70 'inF1' ( in 2-component vector of float)
-0:70 'inF2' ( in 2-component vector of float)
-0:70 'inU0' ( in 2-component vector of uint)
-0:70 'inU1' ( in 2-component vector of uint)
+0:65 Branch: Return with expression
+0:65 Constant:
+0:65 0.000000
+0:69 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float)
+0:69 Function Parameters:
+0:69 'inF0' ( in 2-component vector of float)
+0:69 'inF1' ( in 2-component vector of float)
+0:69 'inF2' ( in 2-component vector of float)
+0:69 'inU0' ( in 2-component vector of uint)
+0:69 'inU1' ( in 2-component vector of uint)
0:? Sequence
-0:71 all ( temp bool)
+0:70 all ( temp bool)
+0:70 Convert float to bool ( temp 2-component vector of bool)
+0:70 'inF0' ( in 2-component vector of float)
+0:71 Absolute value ( temp 2-component vector of float)
0:71 'inF0' ( in 2-component vector of float)
-0:72 Absolute value ( temp 2-component vector of float)
+0:72 arc cosine ( temp 2-component vector of float)
0:72 'inF0' ( in 2-component vector of float)
-0:73 arc cosine ( temp 2-component vector of float)
-0:73 'inF0' ( in 2-component vector of float)
-0:74 any ( temp bool)
+0:73 any ( temp bool)
+0:73 Convert float to bool ( temp 2-component vector of bool)
+0:73 'inF0' ( in 2-component vector of float)
+0:74 arc sine ( temp 2-component vector of float)
0:74 'inF0' ( in 2-component vector of float)
-0:75 arc sine ( temp 2-component vector of float)
+0:75 floatBitsToInt ( temp 2-component vector of int)
0:75 'inF0' ( in 2-component vector of float)
-0:76 floatBitsToInt ( temp 2-component vector of int)
+0:76 floatBitsToUint ( temp 2-component vector of uint)
0:76 'inF0' ( in 2-component vector of float)
-0:77 floatBitsToUint ( temp 2-component vector of uint)
-0:77 'inF0' ( in 2-component vector of float)
-0:78 intBitsToFloat ( temp 2-component vector of float)
-0:78 'inU0' ( in 2-component vector of uint)
+0:77 intBitsToFloat ( temp 2-component vector of float)
+0:77 'inU0' ( in 2-component vector of uint)
+0:79 arc tangent ( temp 2-component vector of float)
+0:79 'inF0' ( in 2-component vector of float)
0:80 arc tangent ( temp 2-component vector of float)
0:80 'inF0' ( in 2-component vector of float)
-0:81 arc tangent ( temp 2-component vector of float)
+0:80 'inF1' ( in 2-component vector of float)
+0:81 Ceiling ( temp 2-component vector of float)
0:81 'inF0' ( in 2-component vector of float)
-0:81 'inF1' ( in 2-component vector of float)
-0:82 Ceiling ( temp 2-component vector of float)
+0:82 clamp ( temp 2-component vector of float)
0:82 'inF0' ( in 2-component vector of float)
-0:83 clamp ( temp 2-component vector of float)
+0:82 'inF1' ( in 2-component vector of float)
+0:82 'inF2' ( in 2-component vector of float)
+0:83 cosine ( temp 2-component vector of float)
0:83 'inF0' ( in 2-component vector of float)
-0:83 'inF1' ( in 2-component vector of float)
-0:83 'inF2' ( in 2-component vector of float)
-0:84 cosine ( temp 2-component vector of float)
+0:84 hyp. cosine ( temp 2-component vector of float)
0:84 'inF0' ( in 2-component vector of float)
-0:85 hyp. cosine ( temp 2-component vector of float)
-0:85 'inF0' ( in 2-component vector of float)
0:? bitCount ( temp 2-component vector of int)
0:? Constant:
0:? 7 (const int)
0:? 3 (const int)
-0:87 degrees ( temp 2-component vector of float)
+0:86 degrees ( temp 2-component vector of float)
+0:86 'inF0' ( in 2-component vector of float)
+0:87 distance ( temp float)
0:87 'inF0' ( in 2-component vector of float)
-0:88 distance ( temp float)
+0:87 'inF1' ( in 2-component vector of float)
+0:88 dot-product ( temp float)
0:88 'inF0' ( in 2-component vector of float)
0:88 'inF1' ( in 2-component vector of float)
-0:89 dot-product ( temp float)
-0:89 'inF0' ( in 2-component vector of float)
-0:89 'inF1' ( in 2-component vector of float)
-0:93 exp ( temp 2-component vector of float)
+0:92 exp ( temp 2-component vector of float)
+0:92 'inF0' ( in 2-component vector of float)
+0:93 exp2 ( temp 2-component vector of float)
0:93 'inF0' ( in 2-component vector of float)
-0:94 exp2 ( temp 2-component vector of float)
+0:94 face-forward ( temp 2-component vector of float)
0:94 'inF0' ( in 2-component vector of float)
-0:95 face-forward ( temp 2-component vector of float)
-0:95 'inF0' ( in 2-component vector of float)
-0:95 'inF1' ( in 2-component vector of float)
-0:95 'inF2' ( in 2-component vector of float)
-0:96 findMSB ( temp int)
+0:94 'inF1' ( in 2-component vector of float)
+0:94 'inF2' ( in 2-component vector of float)
+0:95 findMSB ( temp int)
+0:95 Constant:
+0:95 7 (const int)
+0:96 findLSB ( temp int)
0:96 Constant:
0:96 7 (const int)
-0:97 findLSB ( temp int)
-0:97 Constant:
-0:97 7 (const int)
-0:98 Floor ( temp 2-component vector of float)
-0:98 'inF0' ( in 2-component vector of float)
-0:100 mod ( temp 2-component vector of float)
+0:97 Floor ( temp 2-component vector of float)
+0:97 'inF0' ( in 2-component vector of float)
+0:99 mod ( temp 2-component vector of float)
+0:99 'inF0' ( in 2-component vector of float)
+0:99 'inF1' ( in 2-component vector of float)
+0:100 Fraction ( temp 2-component vector of float)
0:100 'inF0' ( in 2-component vector of float)
-0:100 'inF1' ( in 2-component vector of float)
-0:101 Fraction ( temp 2-component vector of float)
+0:101 isinf ( temp 2-component vector of bool)
0:101 'inF0' ( in 2-component vector of float)
-0:102 frexp ( temp 2-component vector of float)
+0:102 isnan ( temp 2-component vector of bool)
0:102 'inF0' ( in 2-component vector of float)
-0:102 'inF1' ( in 2-component vector of float)
-0:103 isinf ( temp 2-component vector of bool)
+0:103 ldexp ( temp 2-component vector of float)
0:103 'inF0' ( in 2-component vector of float)
-0:104 isnan ( temp 2-component vector of bool)
+0:103 'inF1' ( in 2-component vector of float)
+0:104 mix ( temp 2-component vector of float)
0:104 'inF0' ( in 2-component vector of float)
-0:105 ldexp ( temp 2-component vector of float)
+0:104 'inF1' ( in 2-component vector of float)
+0:104 'inF2' ( in 2-component vector of float)
+0:105 length ( temp float)
0:105 'inF0' ( in 2-component vector of float)
-0:105 'inF1' ( in 2-component vector of float)
-0:106 mix ( temp 2-component vector of float)
+0:106 log ( temp 2-component vector of float)
0:106 'inF0' ( in 2-component vector of float)
-0:106 'inF1' ( in 2-component vector of float)
-0:106 'inF2' ( in 2-component vector of float)
-0:107 length ( temp float)
-0:107 'inF0' ( in 2-component vector of float)
-0:108 log ( temp 2-component vector of float)
+0:107 vector-scale ( temp 2-component vector of float)
+0:107 log2 ( temp 2-component vector of float)
+0:107 'inF0' ( in 2-component vector of float)
+0:107 Constant:
+0:107 0.301030
+0:108 log2 ( temp 2-component vector of float)
0:108 'inF0' ( in 2-component vector of float)
-0:109 vector-scale ( temp 2-component vector of float)
-0:109 log2 ( temp 2-component vector of float)
-0:109 'inF0' ( in 2-component vector of float)
-0:109 Constant:
-0:109 0.301030
-0:110 log2 ( temp 2-component vector of float)
+0:109 max ( temp 2-component vector of float)
+0:109 'inF0' ( in 2-component vector of float)
+0:109 'inF1' ( in 2-component vector of float)
+0:110 min ( temp 2-component vector of float)
0:110 'inF0' ( in 2-component vector of float)
-0:111 max ( temp 2-component vector of float)
-0:111 'inF0' ( in 2-component vector of float)
-0:111 'inF1' ( in 2-component vector of float)
-0:112 min ( temp 2-component vector of float)
+0:110 'inF1' ( in 2-component vector of float)
+0:112 normalize ( temp 2-component vector of float)
0:112 'inF0' ( in 2-component vector of float)
-0:112 'inF1' ( in 2-component vector of float)
-0:114 normalize ( temp 2-component vector of float)
+0:113 pow ( temp 2-component vector of float)
+0:113 'inF0' ( in 2-component vector of float)
+0:113 'inF1' ( in 2-component vector of float)
+0:114 radians ( temp 2-component vector of float)
0:114 'inF0' ( in 2-component vector of float)
-0:115 pow ( temp 2-component vector of float)
+0:115 reflect ( temp 2-component vector of float)
0:115 'inF0' ( in 2-component vector of float)
0:115 'inF1' ( in 2-component vector of float)
-0:116 radians ( temp 2-component vector of float)
+0:116 refract ( temp 2-component vector of float)
0:116 'inF0' ( in 2-component vector of float)
-0:117 reflect ( temp 2-component vector of float)
-0:117 'inF0' ( in 2-component vector of float)
-0:117 'inF1' ( in 2-component vector of float)
-0:118 refract ( temp 2-component vector of float)
-0:118 'inF0' ( in 2-component vector of float)
-0:118 'inF1' ( in 2-component vector of float)
-0:118 Constant:
-0:118 2.000000
+0:116 'inF1' ( in 2-component vector of float)
+0:116 Constant:
+0:116 2.000000
0:? bitFieldReverse ( temp 2-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
-0:120 roundEven ( temp 2-component vector of float)
+0:118 roundEven ( temp 2-component vector of float)
+0:118 'inF0' ( in 2-component vector of float)
+0:119 inverse sqrt ( temp 2-component vector of float)
+0:119 'inF0' ( in 2-component vector of float)
+0:120 clamp ( temp 2-component vector of float)
0:120 'inF0' ( in 2-component vector of float)
-0:121 inverse sqrt ( temp 2-component vector of float)
+0:120 Constant:
+0:120 0.000000
+0:120 Constant:
+0:120 1.000000
+0:121 Sign ( temp 2-component vector of float)
0:121 'inF0' ( in 2-component vector of float)
-0:122 clamp ( temp 2-component vector of float)
+0:122 sine ( temp 2-component vector of float)
0:122 'inF0' ( in 2-component vector of float)
-0:122 Constant:
-0:122 0.000000
-0:122 Constant:
-0:122 1.000000
-0:123 Sign ( temp 2-component vector of float)
-0:123 'inF0' ( in 2-component vector of float)
-0:124 sine ( temp 2-component vector of float)
+0:123 Sequence
+0:123 move second child to first child ( temp 2-component vector of float)
+0:123 'inF1' ( in 2-component vector of float)
+0:123 sine ( temp 2-component vector of float)
+0:123 'inF0' ( in 2-component vector of float)
+0:123 move second child to first child ( temp 2-component vector of float)
+0:123 'inF2' ( in 2-component vector of float)
+0:123 cosine ( temp 2-component vector of float)
+0:123 'inF0' ( in 2-component vector of float)
+0:124 hyp. sine ( temp 2-component vector of float)
0:124 'inF0' ( in 2-component vector of float)
-0:125 Sequence
-0:125 move second child to first child ( temp 2-component vector of float)
-0:125 'inF1' ( in 2-component vector of float)
-0:125 sine ( temp 2-component vector of float)
-0:125 'inF0' ( in 2-component vector of float)
-0:125 move second child to first child ( temp 2-component vector of float)
-0:125 'inF2' ( in 2-component vector of float)
-0:125 cosine ( temp 2-component vector of float)
-0:125 'inF0' ( in 2-component vector of float)
-0:126 hyp. sine ( temp 2-component vector of float)
+0:125 smoothstep ( temp 2-component vector of float)
+0:125 'inF0' ( in 2-component vector of float)
+0:125 'inF1' ( in 2-component vector of float)
+0:125 'inF2' ( in 2-component vector of float)
+0:126 sqrt ( temp 2-component vector of float)
0:126 'inF0' ( in 2-component vector of float)
-0:127 smoothstep ( temp 2-component vector of float)
+0:127 step ( temp 2-component vector of float)
0:127 'inF0' ( in 2-component vector of float)
0:127 'inF1' ( in 2-component vector of float)
-0:127 'inF2' ( in 2-component vector of float)
-0:128 sqrt ( temp 2-component vector of float)
+0:128 tangent ( temp 2-component vector of float)
0:128 'inF0' ( in 2-component vector of float)
-0:129 step ( temp 2-component vector of float)
+0:129 hyp. tangent ( temp 2-component vector of float)
0:129 'inF0' ( in 2-component vector of float)
-0:129 'inF1' ( in 2-component vector of float)
-0:130 tangent ( temp 2-component vector of float)
-0:130 'inF0' ( in 2-component vector of float)
-0:131 hyp. tangent ( temp 2-component vector of float)
+0:131 trunc ( temp 2-component vector of float)
0:131 'inF0' ( in 2-component vector of float)
-0:133 trunc ( temp 2-component vector of float)
-0:133 'inF0' ( in 2-component vector of float)
-0:136 Branch: Return with expression
+0:134 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:140 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
-0:140 Function Parameters:
-0:140 'inF0' ( in 3-component vector of float)
-0:140 'inF1' ( in 3-component vector of float)
-0:140 'inF2' ( in 3-component vector of float)
-0:140 'inU0' ( in 3-component vector of uint)
-0:140 'inU1' ( in 3-component vector of uint)
+0:138 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
+0:138 Function Parameters:
+0:138 'inF0' ( in 3-component vector of float)
+0:138 'inF1' ( in 3-component vector of float)
+0:138 'inF2' ( in 3-component vector of float)
+0:138 'inU0' ( in 3-component vector of uint)
+0:138 'inU1' ( in 3-component vector of uint)
0:? Sequence
-0:141 all ( temp bool)
+0:139 all ( temp bool)
+0:139 Convert float to bool ( temp 3-component vector of bool)
+0:139 'inF0' ( in 3-component vector of float)
+0:140 Absolute value ( temp 3-component vector of float)
+0:140 'inF0' ( in 3-component vector of float)
+0:141 arc cosine ( temp 3-component vector of float)
0:141 'inF0' ( in 3-component vector of float)
-0:142 Absolute value ( temp 3-component vector of float)
-0:142 'inF0' ( in 3-component vector of float)
-0:143 arc cosine ( temp 3-component vector of float)
+0:142 any ( temp bool)
+0:142 Convert float to bool ( temp 3-component vector of bool)
+0:142 'inF0' ( in 3-component vector of float)
+0:143 arc sine ( temp 3-component vector of float)
0:143 'inF0' ( in 3-component vector of float)
-0:144 any ( temp bool)
+0:144 floatBitsToInt ( temp 3-component vector of int)
0:144 'inF0' ( in 3-component vector of float)
-0:145 arc sine ( temp 3-component vector of float)
+0:145 floatBitsToUint ( temp 3-component vector of uint)
0:145 'inF0' ( in 3-component vector of float)
-0:146 floatBitsToInt ( temp 3-component vector of int)
-0:146 'inF0' ( in 3-component vector of float)
-0:147 floatBitsToUint ( temp 3-component vector of uint)
-0:147 'inF0' ( in 3-component vector of float)
-0:148 intBitsToFloat ( temp 3-component vector of float)
-0:148 'inU0' ( in 3-component vector of uint)
-0:150 arc tangent ( temp 3-component vector of float)
+0:146 intBitsToFloat ( temp 3-component vector of float)
+0:146 'inU0' ( in 3-component vector of uint)
+0:148 arc tangent ( temp 3-component vector of float)
+0:148 'inF0' ( in 3-component vector of float)
+0:149 arc tangent ( temp 3-component vector of float)
+0:149 'inF0' ( in 3-component vector of float)
+0:149 'inF1' ( in 3-component vector of float)
+0:150 Ceiling ( temp 3-component vector of float)
0:150 'inF0' ( in 3-component vector of float)
-0:151 arc tangent ( temp 3-component vector of float)
+0:151 clamp ( temp 3-component vector of float)
0:151 'inF0' ( in 3-component vector of float)
0:151 'inF1' ( in 3-component vector of float)
-0:152 Ceiling ( temp 3-component vector of float)
+0:151 'inF2' ( in 3-component vector of float)
+0:152 cosine ( temp 3-component vector of float)
0:152 'inF0' ( in 3-component vector of float)
-0:153 clamp ( temp 3-component vector of float)
+0:153 hyp. cosine ( temp 3-component vector of float)
0:153 'inF0' ( in 3-component vector of float)
-0:153 'inF1' ( in 3-component vector of float)
-0:153 'inF2' ( in 3-component vector of float)
-0:154 cosine ( temp 3-component vector of float)
-0:154 'inF0' ( in 3-component vector of float)
-0:155 hyp. cosine ( temp 3-component vector of float)
-0:155 'inF0' ( in 3-component vector of float)
0:? bitCount ( temp 3-component vector of int)
0:? Constant:
0:? 7 (const int)
0:? 3 (const int)
0:? 5 (const int)
-0:157 cross-product ( temp 3-component vector of float)
+0:155 cross-product ( temp 3-component vector of float)
+0:155 'inF0' ( in 3-component vector of float)
+0:155 'inF1' ( in 3-component vector of float)
+0:156 degrees ( temp 3-component vector of float)
+0:156 'inF0' ( in 3-component vector of float)
+0:157 distance ( temp float)
0:157 'inF0' ( in 3-component vector of float)
0:157 'inF1' ( in 3-component vector of float)
-0:158 degrees ( temp 3-component vector of float)
+0:158 dot-product ( temp float)
0:158 'inF0' ( in 3-component vector of float)
-0:159 distance ( temp float)
-0:159 'inF0' ( in 3-component vector of float)
-0:159 'inF1' ( in 3-component vector of float)
-0:160 dot-product ( temp float)
-0:160 'inF0' ( in 3-component vector of float)
-0:160 'inF1' ( in 3-component vector of float)
-0:164 exp ( temp 3-component vector of float)
+0:158 'inF1' ( in 3-component vector of float)
+0:162 exp ( temp 3-component vector of float)
+0:162 'inF0' ( in 3-component vector of float)
+0:163 exp2 ( temp 3-component vector of float)
+0:163 'inF0' ( in 3-component vector of float)
+0:164 face-forward ( temp 3-component vector of float)
0:164 'inF0' ( in 3-component vector of float)
-0:165 exp2 ( temp 3-component vector of float)
-0:165 'inF0' ( in 3-component vector of float)
-0:166 face-forward ( temp 3-component vector of float)
-0:166 'inF0' ( in 3-component vector of float)
-0:166 'inF1' ( in 3-component vector of float)
-0:166 'inF2' ( in 3-component vector of float)
-0:167 findMSB ( temp int)
-0:167 Constant:
-0:167 7 (const int)
-0:168 findLSB ( temp int)
-0:168 Constant:
-0:168 7 (const int)
-0:169 Floor ( temp 3-component vector of float)
+0:164 'inF1' ( in 3-component vector of float)
+0:164 'inF2' ( in 3-component vector of float)
+0:165 findMSB ( temp int)
+0:165 Constant:
+0:165 7 (const int)
+0:166 findLSB ( temp int)
+0:166 Constant:
+0:166 7 (const int)
+0:167 Floor ( temp 3-component vector of float)
+0:167 'inF0' ( in 3-component vector of float)
+0:169 mod ( temp 3-component vector of float)
0:169 'inF0' ( in 3-component vector of float)
-0:171 mod ( temp 3-component vector of float)
+0:169 'inF1' ( in 3-component vector of float)
+0:170 Fraction ( temp 3-component vector of float)
+0:170 'inF0' ( in 3-component vector of float)
+0:171 isinf ( temp 3-component vector of bool)
0:171 'inF0' ( in 3-component vector of float)
-0:171 'inF1' ( in 3-component vector of float)
-0:172 Fraction ( temp 3-component vector of float)
+0:172 isnan ( temp 3-component vector of bool)
0:172 'inF0' ( in 3-component vector of float)
-0:173 frexp ( temp 3-component vector of float)
+0:173 ldexp ( temp 3-component vector of float)
0:173 'inF0' ( in 3-component vector of float)
0:173 'inF1' ( in 3-component vector of float)
-0:174 isinf ( temp 3-component vector of bool)
+0:174 mix ( temp 3-component vector of float)
0:174 'inF0' ( in 3-component vector of float)
-0:175 isnan ( temp 3-component vector of bool)
+0:174 'inF1' ( in 3-component vector of float)
+0:174 'inF2' ( in 3-component vector of float)
+0:175 length ( temp float)
0:175 'inF0' ( in 3-component vector of float)
-0:176 ldexp ( temp 3-component vector of float)
+0:176 log ( temp 3-component vector of float)
0:176 'inF0' ( in 3-component vector of float)
-0:176 'inF1' ( in 3-component vector of float)
-0:177 mix ( temp 3-component vector of float)
-0:177 'inF0' ( in 3-component vector of float)
-0:177 'inF1' ( in 3-component vector of float)
-0:177 'inF2' ( in 3-component vector of float)
-0:178 length ( temp float)
+0:177 vector-scale ( temp 3-component vector of float)
+0:177 log2 ( temp 3-component vector of float)
+0:177 'inF0' ( in 3-component vector of float)
+0:177 Constant:
+0:177 0.301030
+0:178 log2 ( temp 3-component vector of float)
0:178 'inF0' ( in 3-component vector of float)
-0:179 log ( temp 3-component vector of float)
+0:179 max ( temp 3-component vector of float)
0:179 'inF0' ( in 3-component vector of float)
-0:180 vector-scale ( temp 3-component vector of float)
-0:180 log2 ( temp 3-component vector of float)
-0:180 'inF0' ( in 3-component vector of float)
-0:180 Constant:
-0:180 0.301030
-0:181 log2 ( temp 3-component vector of float)
-0:181 'inF0' ( in 3-component vector of float)
-0:182 max ( temp 3-component vector of float)
+0:179 'inF1' ( in 3-component vector of float)
+0:180 min ( temp 3-component vector of float)
+0:180 'inF0' ( in 3-component vector of float)
+0:180 'inF1' ( in 3-component vector of float)
+0:182 normalize ( temp 3-component vector of float)
0:182 'inF0' ( in 3-component vector of float)
-0:182 'inF1' ( in 3-component vector of float)
-0:183 min ( temp 3-component vector of float)
+0:183 pow ( temp 3-component vector of float)
0:183 'inF0' ( in 3-component vector of float)
0:183 'inF1' ( in 3-component vector of float)
-0:185 normalize ( temp 3-component vector of float)
+0:184 radians ( temp 3-component vector of float)
+0:184 'inF0' ( in 3-component vector of float)
+0:185 reflect ( temp 3-component vector of float)
0:185 'inF0' ( in 3-component vector of float)
-0:186 pow ( temp 3-component vector of float)
+0:185 'inF1' ( in 3-component vector of float)
+0:186 refract ( temp 3-component vector of float)
0:186 'inF0' ( in 3-component vector of float)
0:186 'inF1' ( in 3-component vector of float)
-0:187 radians ( temp 3-component vector of float)
-0:187 'inF0' ( in 3-component vector of float)
-0:188 reflect ( temp 3-component vector of float)
-0:188 'inF0' ( in 3-component vector of float)
-0:188 'inF1' ( in 3-component vector of float)
-0:189 refract ( temp 3-component vector of float)
-0:189 'inF0' ( in 3-component vector of float)
-0:189 'inF1' ( in 3-component vector of float)
-0:189 Constant:
-0:189 2.000000
+0:186 Constant:
+0:186 2.000000
0:? bitFieldReverse ( temp 3-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
0:? 3 (const int)
-0:191 roundEven ( temp 3-component vector of float)
+0:188 roundEven ( temp 3-component vector of float)
+0:188 'inF0' ( in 3-component vector of float)
+0:189 inverse sqrt ( temp 3-component vector of float)
+0:189 'inF0' ( in 3-component vector of float)
+0:190 clamp ( temp 3-component vector of float)
+0:190 'inF0' ( in 3-component vector of float)
+0:190 Constant:
+0:190 0.000000
+0:190 Constant:
+0:190 1.000000
+0:191 Sign ( temp 3-component vector of float)
0:191 'inF0' ( in 3-component vector of float)
-0:192 inverse sqrt ( temp 3-component vector of float)
+0:192 sine ( temp 3-component vector of float)
0:192 'inF0' ( in 3-component vector of float)
-0:193 clamp ( temp 3-component vector of float)
-0:193 'inF0' ( in 3-component vector of float)
-0:193 Constant:
-0:193 0.000000
-0:193 Constant:
-0:193 1.000000
-0:194 Sign ( temp 3-component vector of float)
+0:193 Sequence
+0:193 move second child to first child ( temp 3-component vector of float)
+0:193 'inF1' ( in 3-component vector of float)
+0:193 sine ( temp 3-component vector of float)
+0:193 'inF0' ( in 3-component vector of float)
+0:193 move second child to first child ( temp 3-component vector of float)
+0:193 'inF2' ( in 3-component vector of float)
+0:193 cosine ( temp 3-component vector of float)
+0:193 'inF0' ( in 3-component vector of float)
+0:194 hyp. sine ( temp 3-component vector of float)
0:194 'inF0' ( in 3-component vector of float)
-0:195 sine ( temp 3-component vector of float)
+0:195 smoothstep ( temp 3-component vector of float)
0:195 'inF0' ( in 3-component vector of float)
-0:196 Sequence
-0:196 move second child to first child ( temp 3-component vector of float)
-0:196 'inF1' ( in 3-component vector of float)
-0:196 sine ( temp 3-component vector of float)
-0:196 'inF0' ( in 3-component vector of float)
-0:196 move second child to first child ( temp 3-component vector of float)
-0:196 'inF2' ( in 3-component vector of float)
-0:196 cosine ( temp 3-component vector of float)
-0:196 'inF0' ( in 3-component vector of float)
-0:197 hyp. sine ( temp 3-component vector of float)
+0:195 'inF1' ( in 3-component vector of float)
+0:195 'inF2' ( in 3-component vector of float)
+0:196 sqrt ( temp 3-component vector of float)
+0:196 'inF0' ( in 3-component vector of float)
+0:197 step ( temp 3-component vector of float)
0:197 'inF0' ( in 3-component vector of float)
-0:198 smoothstep ( temp 3-component vector of float)
+0:197 'inF1' ( in 3-component vector of float)
+0:198 tangent ( temp 3-component vector of float)
0:198 'inF0' ( in 3-component vector of float)
-0:198 'inF1' ( in 3-component vector of float)
-0:198 'inF2' ( in 3-component vector of float)
-0:199 sqrt ( temp 3-component vector of float)
+0:199 hyp. tangent ( temp 3-component vector of float)
0:199 'inF0' ( in 3-component vector of float)
-0:200 step ( temp 3-component vector of float)
-0:200 'inF0' ( in 3-component vector of float)
-0:200 'inF1' ( in 3-component vector of float)
-0:201 tangent ( temp 3-component vector of float)
+0:201 trunc ( temp 3-component vector of float)
0:201 'inF0' ( in 3-component vector of float)
-0:202 hyp. tangent ( temp 3-component vector of float)
-0:202 'inF0' ( in 3-component vector of float)
-0:204 trunc ( temp 3-component vector of float)
-0:204 'inF0' ( in 3-component vector of float)
-0:207 Branch: Return with expression
+0:204 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:211 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
-0:211 Function Parameters:
-0:211 'inF0' ( in 4-component vector of float)
-0:211 'inF1' ( in 4-component vector of float)
-0:211 'inF2' ( in 4-component vector of float)
-0:211 'inU0' ( in 4-component vector of uint)
-0:211 'inU1' ( in 4-component vector of uint)
+0:208 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
+0:208 Function Parameters:
+0:208 'inF0' ( in 4-component vector of float)
+0:208 'inF1' ( in 4-component vector of float)
+0:208 'inF2' ( in 4-component vector of float)
+0:208 'inU0' ( in 4-component vector of uint)
+0:208 'inU1' ( in 4-component vector of uint)
0:? Sequence
-0:212 all ( temp bool)
-0:212 'inF0' ( in 4-component vector of float)
-0:213 Absolute value ( temp 4-component vector of float)
+0:209 all ( temp bool)
+0:209 Convert float to bool ( temp 4-component vector of bool)
+0:209 'inF0' ( in 4-component vector of float)
+0:210 Absolute value ( temp 4-component vector of float)
+0:210 'inF0' ( in 4-component vector of float)
+0:211 arc cosine ( temp 4-component vector of float)
+0:211 'inF0' ( in 4-component vector of float)
+0:212 any ( temp bool)
+0:212 Convert float to bool ( temp 4-component vector of bool)
+0:212 'inF0' ( in 4-component vector of float)
+0:213 arc sine ( temp 4-component vector of float)
0:213 'inF0' ( in 4-component vector of float)
-0:214 arc cosine ( temp 4-component vector of float)
+0:214 floatBitsToInt ( temp 4-component vector of int)
0:214 'inF0' ( in 4-component vector of float)
-0:215 any ( temp bool)
+0:215 floatBitsToUint ( temp 4-component vector of uint)
0:215 'inF0' ( in 4-component vector of float)
-0:216 arc sine ( temp 4-component vector of float)
-0:216 'inF0' ( in 4-component vector of float)
-0:217 floatBitsToInt ( temp 4-component vector of int)
-0:217 'inF0' ( in 4-component vector of float)
-0:218 floatBitsToUint ( temp 4-component vector of uint)
+0:216 intBitsToFloat ( temp 4-component vector of float)
+0:216 'inU0' ( in 4-component vector of uint)
+0:218 arc tangent ( temp 4-component vector of float)
0:218 'inF0' ( in 4-component vector of float)
-0:219 intBitsToFloat ( temp 4-component vector of float)
-0:219 'inU0' ( in 4-component vector of uint)
-0:221 arc tangent ( temp 4-component vector of float)
+0:219 arc tangent ( temp 4-component vector of float)
+0:219 'inF0' ( in 4-component vector of float)
+0:219 'inF1' ( in 4-component vector of float)
+0:220 Ceiling ( temp 4-component vector of float)
+0:220 'inF0' ( in 4-component vector of float)
+0:221 clamp ( temp 4-component vector of float)
0:221 'inF0' ( in 4-component vector of float)
-0:222 arc tangent ( temp 4-component vector of float)
+0:221 'inF1' ( in 4-component vector of float)
+0:221 'inF2' ( in 4-component vector of float)
+0:222 cosine ( temp 4-component vector of float)
0:222 'inF0' ( in 4-component vector of float)
-0:222 'inF1' ( in 4-component vector of float)
-0:223 Ceiling ( temp 4-component vector of float)
+0:223 hyp. cosine ( temp 4-component vector of float)
0:223 'inF0' ( in 4-component vector of float)
-0:224 clamp ( temp 4-component vector of float)
-0:224 'inF0' ( in 4-component vector of float)
-0:224 'inF1' ( in 4-component vector of float)
-0:224 'inF2' ( in 4-component vector of float)
-0:225 cosine ( temp 4-component vector of float)
-0:225 'inF0' ( in 4-component vector of float)
-0:226 hyp. cosine ( temp 4-component vector of float)
-0:226 'inF0' ( in 4-component vector of float)
0:? bitCount ( temp 4-component vector of int)
0:? Constant:
0:? 7 (const int)
0:? 3 (const int)
0:? 5 (const int)
0:? 2 (const int)
-0:228 degrees ( temp 4-component vector of float)
-0:228 'inF0' ( in 4-component vector of float)
-0:229 distance ( temp float)
-0:229 'inF0' ( in 4-component vector of float)
-0:229 'inF1' ( in 4-component vector of float)
-0:230 dot-product ( temp float)
-0:230 'inF0' ( in 4-component vector of float)
-0:230 'inF1' ( in 4-component vector of float)
-0:231 Construct vec4 ( temp 4-component vector of float)
-0:231 Constant:
-0:231 1.000000
-0:231 component-wise multiply ( temp float)
-0:231 direct index ( temp float)
-0:231 'inF0' ( in 4-component vector of float)
-0:231 Constant:
-0:231 1 (const int)
-0:231 direct index ( temp float)
-0:231 'inF1' ( in 4-component vector of float)
-0:231 Constant:
-0:231 1 (const int)
-0:231 direct index ( temp float)
-0:231 'inF0' ( in 4-component vector of float)
-0:231 Constant:
-0:231 2 (const int)
-0:231 direct index ( temp float)
-0:231 'inF1' ( in 4-component vector of float)
-0:231 Constant:
-0:231 3 (const int)
-0:235 exp ( temp 4-component vector of float)
-0:235 'inF0' ( in 4-component vector of float)
-0:236 exp2 ( temp 4-component vector of float)
-0:236 'inF0' ( in 4-component vector of float)
-0:237 face-forward ( temp 4-component vector of float)
+0:225 degrees ( temp 4-component vector of float)
+0:225 'inF0' ( in 4-component vector of float)
+0:226 distance ( temp float)
+0:226 'inF0' ( in 4-component vector of float)
+0:226 'inF1' ( in 4-component vector of float)
+0:227 dot-product ( temp float)
+0:227 'inF0' ( in 4-component vector of float)
+0:227 'inF1' ( in 4-component vector of float)
+0:228 Construct vec4 ( temp 4-component vector of float)
+0:228 Constant:
+0:228 1.000000
+0:228 component-wise multiply ( temp float)
+0:228 direct index ( temp float)
+0:228 'inF0' ( in 4-component vector of float)
+0:228 Constant:
+0:228 1 (const int)
+0:228 direct index ( temp float)
+0:228 'inF1' ( in 4-component vector of float)
+0:228 Constant:
+0:228 1 (const int)
+0:228 direct index ( temp float)
+0:228 'inF0' ( in 4-component vector of float)
+0:228 Constant:
+0:228 2 (const int)
+0:228 direct index ( temp float)
+0:228 'inF1' ( in 4-component vector of float)
+0:228 Constant:
+0:228 3 (const int)
+0:232 exp ( temp 4-component vector of float)
+0:232 'inF0' ( in 4-component vector of float)
+0:233 exp2 ( temp 4-component vector of float)
+0:233 'inF0' ( in 4-component vector of float)
+0:234 face-forward ( temp 4-component vector of float)
+0:234 'inF0' ( in 4-component vector of float)
+0:234 'inF1' ( in 4-component vector of float)
+0:234 'inF2' ( in 4-component vector of float)
+0:235 findMSB ( temp int)
+0:235 Constant:
+0:235 7 (const int)
+0:236 findLSB ( temp int)
+0:236 Constant:
+0:236 7 (const int)
+0:237 Floor ( temp 4-component vector of float)
0:237 'inF0' ( in 4-component vector of float)
-0:237 'inF1' ( in 4-component vector of float)
-0:237 'inF2' ( in 4-component vector of float)
-0:238 findMSB ( temp int)
-0:238 Constant:
-0:238 7 (const int)
-0:239 findLSB ( temp int)
-0:239 Constant:
-0:239 7 (const int)
-0:240 Floor ( temp 4-component vector of float)
+0:239 mod ( temp 4-component vector of float)
+0:239 'inF0' ( in 4-component vector of float)
+0:239 'inF1' ( in 4-component vector of float)
+0:240 Fraction ( temp 4-component vector of float)
0:240 'inF0' ( in 4-component vector of float)
-0:242 mod ( temp 4-component vector of float)
+0:241 isinf ( temp 4-component vector of bool)
+0:241 'inF0' ( in 4-component vector of float)
+0:242 isnan ( temp 4-component vector of bool)
0:242 'inF0' ( in 4-component vector of float)
-0:242 'inF1' ( in 4-component vector of float)
-0:243 Fraction ( temp 4-component vector of float)
+0:243 ldexp ( temp 4-component vector of float)
0:243 'inF0' ( in 4-component vector of float)
-0:244 frexp ( temp 4-component vector of float)
+0:243 'inF1' ( in 4-component vector of float)
+0:244 mix ( temp 4-component vector of float)
0:244 'inF0' ( in 4-component vector of float)
0:244 'inF1' ( in 4-component vector of float)
-0:245 isinf ( temp 4-component vector of bool)
+0:244 'inF2' ( in 4-component vector of float)
+0:245 length ( temp float)
0:245 'inF0' ( in 4-component vector of float)
-0:246 isnan ( temp 4-component vector of bool)
+0:246 log ( temp 4-component vector of float)
0:246 'inF0' ( in 4-component vector of float)
-0:247 ldexp ( temp 4-component vector of float)
-0:247 'inF0' ( in 4-component vector of float)
-0:247 'inF1' ( in 4-component vector of float)
-0:248 mix ( temp 4-component vector of float)
+0:247 vector-scale ( temp 4-component vector of float)
+0:247 log2 ( temp 4-component vector of float)
+0:247 'inF0' ( in 4-component vector of float)
+0:247 Constant:
+0:247 0.301030
+0:248 log2 ( temp 4-component vector of float)
0:248 'inF0' ( in 4-component vector of float)
-0:248 'inF1' ( in 4-component vector of float)
-0:248 'inF2' ( in 4-component vector of float)
-0:249 length ( temp float)
+0:249 max ( temp 4-component vector of float)
0:249 'inF0' ( in 4-component vector of float)
-0:250 log ( temp 4-component vector of float)
+0:249 'inF1' ( in 4-component vector of float)
+0:250 min ( temp 4-component vector of float)
0:250 'inF0' ( in 4-component vector of float)
-0:251 vector-scale ( temp 4-component vector of float)
-0:251 log2 ( temp 4-component vector of float)
-0:251 'inF0' ( in 4-component vector of float)
-0:251 Constant:
-0:251 0.301030
-0:252 log2 ( temp 4-component vector of float)
+0:250 'inF1' ( in 4-component vector of float)
+0:252 normalize ( temp 4-component vector of float)
0:252 'inF0' ( in 4-component vector of float)
-0:253 max ( temp 4-component vector of float)
+0:253 pow ( temp 4-component vector of float)
0:253 'inF0' ( in 4-component vector of float)
0:253 'inF1' ( in 4-component vector of float)
-0:254 min ( temp 4-component vector of float)
+0:254 radians ( temp 4-component vector of float)
0:254 'inF0' ( in 4-component vector of float)
-0:254 'inF1' ( in 4-component vector of float)
-0:256 normalize ( temp 4-component vector of float)
+0:255 reflect ( temp 4-component vector of float)
+0:255 'inF0' ( in 4-component vector of float)
+0:255 'inF1' ( in 4-component vector of float)
+0:256 refract ( temp 4-component vector of float)
0:256 'inF0' ( in 4-component vector of float)
-0:257 pow ( temp 4-component vector of float)
-0:257 'inF0' ( in 4-component vector of float)
-0:257 'inF1' ( in 4-component vector of float)
-0:258 radians ( temp 4-component vector of float)
-0:258 'inF0' ( in 4-component vector of float)
-0:259 reflect ( temp 4-component vector of float)
-0:259 'inF0' ( in 4-component vector of float)
-0:259 'inF1' ( in 4-component vector of float)
-0:260 refract ( temp 4-component vector of float)
-0:260 'inF0' ( in 4-component vector of float)
-0:260 'inF1' ( in 4-component vector of float)
-0:260 Constant:
-0:260 2.000000
+0:256 'inF1' ( in 4-component vector of float)
+0:256 Constant:
+0:256 2.000000
0:? bitFieldReverse ( temp 4-component vector of int)
0:? Constant:
0:? 1 (const int)
0:? 2 (const int)
0:? 3 (const int)
0:? 4 (const int)
-0:262 roundEven ( temp 4-component vector of float)
+0:258 roundEven ( temp 4-component vector of float)
+0:258 'inF0' ( in 4-component vector of float)
+0:259 inverse sqrt ( temp 4-component vector of float)
+0:259 'inF0' ( in 4-component vector of float)
+0:260 clamp ( temp 4-component vector of float)
+0:260 'inF0' ( in 4-component vector of float)
+0:260 Constant:
+0:260 0.000000
+0:260 Constant:
+0:260 1.000000
+0:261 Sign ( temp 4-component vector of float)
+0:261 'inF0' ( in 4-component vector of float)
+0:262 sine ( temp 4-component vector of float)
0:262 'inF0' ( in 4-component vector of float)
-0:263 inverse sqrt ( temp 4-component vector of float)
-0:263 'inF0' ( in 4-component vector of float)
-0:264 clamp ( temp 4-component vector of float)
+0:263 Sequence
+0:263 move second child to first child ( temp 4-component vector of float)
+0:263 'inF1' ( in 4-component vector of float)
+0:263 sine ( temp 4-component vector of float)
+0:263 'inF0' ( in 4-component vector of float)
+0:263 move second child to first child ( temp 4-component vector of float)
+0:263 'inF2' ( in 4-component vector of float)
+0:263 cosine ( temp 4-component vector of float)
+0:263 'inF0' ( in 4-component vector of float)
+0:264 hyp. sine ( temp 4-component vector of float)
0:264 'inF0' ( in 4-component vector of float)
-0:264 Constant:
-0:264 0.000000
-0:264 Constant:
-0:264 1.000000
-0:265 Sign ( temp 4-component vector of float)
+0:265 smoothstep ( temp 4-component vector of float)
0:265 'inF0' ( in 4-component vector of float)
-0:266 sine ( temp 4-component vector of float)
+0:265 'inF1' ( in 4-component vector of float)
+0:265 'inF2' ( in 4-component vector of float)
+0:266 sqrt ( temp 4-component vector of float)
0:266 'inF0' ( in 4-component vector of float)
-0:267 Sequence
-0:267 move second child to first child ( temp 4-component vector of float)
-0:267 'inF1' ( in 4-component vector of float)
-0:267 sine ( temp 4-component vector of float)
-0:267 'inF0' ( in 4-component vector of float)
-0:267 move second child to first child ( temp 4-component vector of float)
-0:267 'inF2' ( in 4-component vector of float)
-0:267 cosine ( temp 4-component vector of float)
-0:267 'inF0' ( in 4-component vector of float)
-0:268 hyp. sine ( temp 4-component vector of float)
+0:267 step ( temp 4-component vector of float)
+0:267 'inF0' ( in 4-component vector of float)
+0:267 'inF1' ( in 4-component vector of float)
+0:268 tangent ( temp 4-component vector of float)
0:268 'inF0' ( in 4-component vector of float)
-0:269 smoothstep ( temp 4-component vector of float)
+0:269 hyp. tangent ( temp 4-component vector of float)
0:269 'inF0' ( in 4-component vector of float)
-0:269 'inF1' ( in 4-component vector of float)
-0:269 'inF2' ( in 4-component vector of float)
-0:270 sqrt ( temp 4-component vector of float)
-0:270 'inF0' ( in 4-component vector of float)
-0:271 step ( temp 4-component vector of float)
+0:271 trunc ( temp 4-component vector of float)
0:271 'inF0' ( in 4-component vector of float)
-0:271 'inF1' ( in 4-component vector of float)
-0:272 tangent ( temp 4-component vector of float)
-0:272 'inF0' ( in 4-component vector of float)
-0:273 hyp. tangent ( temp 4-component vector of float)
-0:273 'inF0' ( in 4-component vector of float)
-0:275 trunc ( temp 4-component vector of float)
-0:275 'inF0' ( in 4-component vector of float)
-0:278 Branch: Return with expression
+0:274 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
-0:336 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
-0:336 Function Parameters:
-0:336 'inF0' ( in 2X2 matrix of float)
-0:336 'inF1' ( in 2X2 matrix of float)
-0:336 'inF2' ( in 2X2 matrix of float)
+0:331 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
+0:331 Function Parameters:
+0:331 'inF0' ( in 2X2 matrix of float)
+0:331 'inF1' ( in 2X2 matrix of float)
+0:331 'inF2' ( in 2X2 matrix of float)
0:? Sequence
-0:338 all ( temp bool)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 Absolute value ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 arc cosine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 any ( temp bool)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 arc sine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 arc tangent ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 arc tangent ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 Ceiling ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 clamp ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 'inF2' ( in 2X2 matrix of float)
-0:338 cosine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 hyp. cosine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 degrees ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 determinant ( temp float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 exp ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 exp2 ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 findMSB ( temp int)
-0:338 Constant:
-0:338 7 (const int)
-0:338 findLSB ( temp int)
-0:338 Constant:
-0:338 7 (const int)
-0:338 Floor ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 mod ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 Fraction ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 frexp ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 ldexp ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 mix ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 'inF2' ( in 2X2 matrix of float)
-0:338 log ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 matrix-scale ( temp 2X2 matrix of float)
-0:338 log2 ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 Constant:
-0:338 0.301030
-0:338 log2 ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 max ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 min ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 pow ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 radians ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 roundEven ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 inverse sqrt ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 clamp ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 Constant:
-0:338 0.000000
-0:338 Constant:
-0:338 1.000000
-0:338 Sign ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 sine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 Sequence
-0:338 move second child to first child ( temp 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 sine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 move second child to first child ( temp 2X2 matrix of float)
-0:338 'inF2' ( in 2X2 matrix of float)
-0:338 cosine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 hyp. sine ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 smoothstep ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 'inF2' ( in 2X2 matrix of float)
-0:338 sqrt ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 step ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 'inF1' ( in 2X2 matrix of float)
-0:338 tangent ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 hyp. tangent ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 transpose ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:338 trunc ( temp 2X2 matrix of float)
-0:338 'inF0' ( in 2X2 matrix of float)
-0:341 Branch: Return with expression
+0:333 all ( temp bool)
+0:333 Convert float to bool ( temp 2X2 matrix of bool)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 Absolute value ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 arc cosine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 any ( temp bool)
+0:333 Convert float to bool ( temp 2X2 matrix of bool)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 arc sine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 arc tangent ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 arc tangent ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 Ceiling ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 clamp ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 'inF2' ( in 2X2 matrix of float)
+0:333 cosine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 hyp. cosine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 degrees ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 determinant ( temp float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 exp ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 exp2 ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 findMSB ( temp int)
+0:333 Constant:
+0:333 7 (const int)
+0:333 findLSB ( temp int)
+0:333 Constant:
+0:333 7 (const int)
+0:333 Floor ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 mod ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 Fraction ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 ldexp ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 mix ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 'inF2' ( in 2X2 matrix of float)
+0:333 log ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 matrix-scale ( temp 2X2 matrix of float)
+0:333 log2 ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 Constant:
+0:333 0.301030
+0:333 log2 ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 max ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 min ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 pow ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 radians ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 roundEven ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 inverse sqrt ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 clamp ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 Constant:
+0:333 0.000000
+0:333 Constant:
+0:333 1.000000
+0:333 Sign ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 sine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 Sequence
+0:333 move second child to first child ( temp 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 sine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 move second child to first child ( temp 2X2 matrix of float)
+0:333 'inF2' ( in 2X2 matrix of float)
+0:333 cosine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 hyp. sine ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 smoothstep ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 'inF2' ( in 2X2 matrix of float)
+0:333 sqrt ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 step ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 'inF1' ( in 2X2 matrix of float)
+0:333 tangent ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 hyp. tangent ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 transpose ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:333 trunc ( temp 2X2 matrix of float)
+0:333 'inF0' ( in 2X2 matrix of float)
+0:336 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:345 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
-0:345 Function Parameters:
-0:345 'inF0' ( in 3X3 matrix of float)
-0:345 'inF1' ( in 3X3 matrix of float)
-0:345 'inF2' ( in 3X3 matrix of float)
+0:340 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
+0:340 Function Parameters:
+0:340 'inF0' ( in 3X3 matrix of float)
+0:340 'inF1' ( in 3X3 matrix of float)
+0:340 'inF2' ( in 3X3 matrix of float)
0:? Sequence
-0:347 all ( temp bool)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 Absolute value ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 arc cosine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 any ( temp bool)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 arc sine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 arc tangent ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 arc tangent ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 Ceiling ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 clamp ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 'inF2' ( in 3X3 matrix of float)
-0:347 cosine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 hyp. cosine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 degrees ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 determinant ( temp float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 exp ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 exp2 ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 findMSB ( temp int)
-0:347 Constant:
-0:347 7 (const int)
-0:347 findLSB ( temp int)
-0:347 Constant:
-0:347 7 (const int)
-0:347 Floor ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 mod ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 Fraction ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 frexp ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 ldexp ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 mix ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 'inF2' ( in 3X3 matrix of float)
-0:347 log ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 matrix-scale ( temp 3X3 matrix of float)
-0:347 log2 ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 Constant:
-0:347 0.301030
-0:347 log2 ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 max ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 min ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 pow ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 radians ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 roundEven ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 inverse sqrt ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 clamp ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 Constant:
-0:347 0.000000
-0:347 Constant:
-0:347 1.000000
-0:347 Sign ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 sine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 Sequence
-0:347 move second child to first child ( temp 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 sine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 move second child to first child ( temp 3X3 matrix of float)
-0:347 'inF2' ( in 3X3 matrix of float)
-0:347 cosine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 hyp. sine ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 smoothstep ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 'inF2' ( in 3X3 matrix of float)
-0:347 sqrt ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 step ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 'inF1' ( in 3X3 matrix of float)
-0:347 tangent ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 hyp. tangent ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 transpose ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:347 trunc ( temp 3X3 matrix of float)
-0:347 'inF0' ( in 3X3 matrix of float)
-0:350 Branch: Return with expression
+0:342 all ( temp bool)
+0:342 Convert float to bool ( temp 3X3 matrix of bool)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 Absolute value ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 arc cosine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 any ( temp bool)
+0:342 Convert float to bool ( temp 3X3 matrix of bool)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 arc sine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 arc tangent ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 arc tangent ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 Ceiling ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 clamp ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 'inF2' ( in 3X3 matrix of float)
+0:342 cosine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 hyp. cosine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 degrees ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 determinant ( temp float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 exp ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 exp2 ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 findMSB ( temp int)
+0:342 Constant:
+0:342 7 (const int)
+0:342 findLSB ( temp int)
+0:342 Constant:
+0:342 7 (const int)
+0:342 Floor ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 mod ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 Fraction ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 ldexp ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 mix ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 'inF2' ( in 3X3 matrix of float)
+0:342 log ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 matrix-scale ( temp 3X3 matrix of float)
+0:342 log2 ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 Constant:
+0:342 0.301030
+0:342 log2 ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 max ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 min ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 pow ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 radians ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 roundEven ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 inverse sqrt ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 clamp ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 Constant:
+0:342 0.000000
+0:342 Constant:
+0:342 1.000000
+0:342 Sign ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 sine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 Sequence
+0:342 move second child to first child ( temp 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 sine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 move second child to first child ( temp 3X3 matrix of float)
+0:342 'inF2' ( in 3X3 matrix of float)
+0:342 cosine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 hyp. sine ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 smoothstep ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 'inF2' ( in 3X3 matrix of float)
+0:342 sqrt ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 step ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 'inF1' ( in 3X3 matrix of float)
+0:342 tangent ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 hyp. tangent ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 transpose ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:342 trunc ( temp 3X3 matrix of float)
+0:342 'inF0' ( in 3X3 matrix of float)
+0:345 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
@@ -2345,131 +2332,130 @@ Shader version: 450
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:354 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
-0:354 Function Parameters:
-0:354 'inF0' ( in 4X4 matrix of float)
-0:354 'inF1' ( in 4X4 matrix of float)
-0:354 'inF2' ( in 4X4 matrix of float)
+0:349 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
+0:349 Function Parameters:
+0:349 'inF0' ( in 4X4 matrix of float)
+0:349 'inF1' ( in 4X4 matrix of float)
+0:349 'inF2' ( in 4X4 matrix of float)
0:? Sequence
-0:356 all ( temp bool)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 Absolute value ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 arc cosine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 any ( temp bool)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 arc sine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 arc tangent ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 arc tangent ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 Ceiling ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 clamp ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 'inF2' ( in 4X4 matrix of float)
-0:356 cosine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 hyp. cosine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 degrees ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 determinant ( temp float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 exp ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 exp2 ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 findMSB ( temp int)
-0:356 Constant:
-0:356 7 (const int)
-0:356 findLSB ( temp int)
-0:356 Constant:
-0:356 7 (const int)
-0:356 Floor ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 mod ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 Fraction ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 frexp ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 ldexp ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 mix ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 'inF2' ( in 4X4 matrix of float)
-0:356 log ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 matrix-scale ( temp 4X4 matrix of float)
-0:356 log2 ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 Constant:
-0:356 0.301030
-0:356 log2 ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 max ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 min ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 pow ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 radians ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 roundEven ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 inverse sqrt ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 clamp ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 Constant:
-0:356 0.000000
-0:356 Constant:
-0:356 1.000000
-0:356 Sign ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 sine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 Sequence
-0:356 move second child to first child ( temp 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 sine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 move second child to first child ( temp 4X4 matrix of float)
-0:356 'inF2' ( in 4X4 matrix of float)
-0:356 cosine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 hyp. sine ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 smoothstep ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 'inF2' ( in 4X4 matrix of float)
-0:356 sqrt ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 step ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 'inF1' ( in 4X4 matrix of float)
-0:356 tangent ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 hyp. tangent ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 transpose ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:356 trunc ( temp 4X4 matrix of float)
-0:356 'inF0' ( in 4X4 matrix of float)
-0:359 Branch: Return with expression
+0:351 all ( temp bool)
+0:351 Convert float to bool ( temp 4X4 matrix of bool)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 Absolute value ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 arc cosine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 any ( temp bool)
+0:351 Convert float to bool ( temp 4X4 matrix of bool)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 arc sine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 arc tangent ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 arc tangent ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 Ceiling ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 clamp ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 'inF2' ( in 4X4 matrix of float)
+0:351 cosine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 hyp. cosine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 degrees ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 determinant ( temp float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 exp ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 exp2 ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 findMSB ( temp int)
+0:351 Constant:
+0:351 7 (const int)
+0:351 findLSB ( temp int)
+0:351 Constant:
+0:351 7 (const int)
+0:351 Floor ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 mod ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 Fraction ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 ldexp ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 mix ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 'inF2' ( in 4X4 matrix of float)
+0:351 log ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 matrix-scale ( temp 4X4 matrix of float)
+0:351 log2 ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 Constant:
+0:351 0.301030
+0:351 log2 ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 max ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 min ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 pow ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 radians ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 roundEven ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 inverse sqrt ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 clamp ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 Constant:
+0:351 0.000000
+0:351 Constant:
+0:351 1.000000
+0:351 Sign ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 sine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 Sequence
+0:351 move second child to first child ( temp 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 sine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 move second child to first child ( temp 4X4 matrix of float)
+0:351 'inF2' ( in 4X4 matrix of float)
+0:351 cosine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 hyp. sine ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 smoothstep ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 'inF2' ( in 4X4 matrix of float)
+0:351 sqrt ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 step ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 'inF1' ( in 4X4 matrix of float)
+0:351 tangent ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 hyp. tangent ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 transpose ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:351 trunc ( temp 4X4 matrix of float)
+0:351 'inF0' ( in 4X4 matrix of float)
+0:354 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
@@ -2487,319 +2473,320 @@ Shader version: 450
0:? 4.000000
0:? 4.000000
0:? 4.000000
-0:377 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
-0:377 Function Parameters:
-0:377 'inF0' ( in float)
-0:377 'inF1' ( in float)
-0:377 'inFV0' ( in 2-component vector of float)
-0:377 'inFV1' ( in 2-component vector of float)
-0:377 'inFM0' ( in 2X2 matrix of float)
-0:377 'inFM1' ( in 2X2 matrix of float)
+0:372 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
+0:372 Function Parameters:
+0:372 'inF0' ( in float)
+0:372 'inF1' ( in float)
+0:372 'inFV0' ( in 2-component vector of float)
+0:372 'inFV1' ( in 2-component vector of float)
+0:372 'inFM0' ( in 2X2 matrix of float)
+0:372 'inFM1' ( in 2X2 matrix of float)
0:? Sequence
-0:378 Sequence
-0:378 move second child to first child ( temp float)
-0:378 'r0' ( temp float)
-0:378 component-wise multiply ( temp float)
-0:378 'inF1' ( in float)
-0:378 'inF0' ( in float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2-component vector of float)
-0:378 'r1' ( temp 2-component vector of float)
-0:378 vector-scale ( temp 2-component vector of float)
-0:378 'inF0' ( in float)
-0:378 'inFV0' ( in 2-component vector of float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2-component vector of float)
-0:378 'r2' ( temp 2-component vector of float)
-0:378 vector-scale ( temp 2-component vector of float)
-0:378 'inFV0' ( in 2-component vector of float)
-0:378 'inF0' ( in float)
-0:378 Sequence
-0:378 move second child to first child ( temp float)
-0:378 'r3' ( temp float)
-0:378 dot-product ( temp float)
-0:378 'inFV0' ( in 2-component vector of float)
-0:378 'inFV1' ( in 2-component vector of float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2-component vector of float)
-0:378 'r4' ( temp 2-component vector of float)
-0:378 vector-times-matrix ( temp 2-component vector of float)
-0:378 'inFV0' ( in 2-component vector of float)
-0:378 'inFM0' ( in 2X2 matrix of float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2-component vector of float)
-0:378 'r5' ( temp 2-component vector of float)
-0:378 matrix-times-vector ( temp 2-component vector of float)
-0:378 'inFM0' ( in 2X2 matrix of float)
-0:378 'inFV0' ( in 2-component vector of float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2X2 matrix of float)
-0:378 'r6' ( temp 2X2 matrix of float)
-0:378 matrix-scale ( temp 2X2 matrix of float)
-0:378 'inF0' ( in float)
-0:378 'inFM0' ( in 2X2 matrix of float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2X2 matrix of float)
-0:378 'r7' ( temp 2X2 matrix of float)
-0:378 matrix-scale ( temp 2X2 matrix of float)
-0:378 'inFM0' ( in 2X2 matrix of float)
-0:378 'inF0' ( in float)
-0:378 Sequence
-0:378 move second child to first child ( temp 2X2 matrix of float)
-0:378 'r8' ( temp 2X2 matrix of float)
-0:378 matrix-multiply ( temp 2X2 matrix of float)
-0:378 'inFM1' ( in 2X2 matrix of float)
-0:378 'inFM0' ( in 2X2 matrix of float)
-0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
-0:384 Function Parameters:
-0:384 'inF0' ( in float)
-0:384 'inF1' ( in float)
-0:384 'inFV0' ( in 3-component vector of float)
-0:384 'inFV1' ( in 3-component vector of float)
-0:384 'inFM0' ( in 3X3 matrix of float)
-0:384 'inFM1' ( in 3X3 matrix of float)
+0:373 Sequence
+0:373 move second child to first child ( temp float)
+0:373 'r0' ( temp float)
+0:373 component-wise multiply ( temp float)
+0:373 'inF1' ( in float)
+0:373 'inF0' ( in float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2-component vector of float)
+0:373 'r1' ( temp 2-component vector of float)
+0:373 vector-scale ( temp 2-component vector of float)
+0:373 'inF0' ( in float)
+0:373 'inFV0' ( in 2-component vector of float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2-component vector of float)
+0:373 'r2' ( temp 2-component vector of float)
+0:373 vector-scale ( temp 2-component vector of float)
+0:373 'inFV0' ( in 2-component vector of float)
+0:373 'inF0' ( in float)
+0:373 Sequence
+0:373 move second child to first child ( temp float)
+0:373 'r3' ( temp float)
+0:373 dot-product ( temp float)
+0:373 'inFV0' ( in 2-component vector of float)
+0:373 'inFV1' ( in 2-component vector of float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2-component vector of float)
+0:373 'r4' ( temp 2-component vector of float)
+0:373 vector-times-matrix ( temp 2-component vector of float)
+0:373 'inFV0' ( in 2-component vector of float)
+0:373 'inFM0' ( in 2X2 matrix of float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2-component vector of float)
+0:373 'r5' ( temp 2-component vector of float)
+0:373 matrix-times-vector ( temp 2-component vector of float)
+0:373 'inFM0' ( in 2X2 matrix of float)
+0:373 'inFV0' ( in 2-component vector of float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2X2 matrix of float)
+0:373 'r6' ( temp 2X2 matrix of float)
+0:373 matrix-scale ( temp 2X2 matrix of float)
+0:373 'inF0' ( in float)
+0:373 'inFM0' ( in 2X2 matrix of float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2X2 matrix of float)
+0:373 'r7' ( temp 2X2 matrix of float)
+0:373 matrix-scale ( temp 2X2 matrix of float)
+0:373 'inFM0' ( in 2X2 matrix of float)
+0:373 'inF0' ( in float)
+0:373 Sequence
+0:373 move second child to first child ( temp 2X2 matrix of float)
+0:373 'r8' ( temp 2X2 matrix of float)
+0:373 matrix-multiply ( temp 2X2 matrix of float)
+0:373 'inFM1' ( in 2X2 matrix of float)
+0:373 'inFM0' ( in 2X2 matrix of float)
+0:379 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
+0:379 Function Parameters:
+0:379 'inF0' ( in float)
+0:379 'inF1' ( in float)
+0:379 'inFV0' ( in 3-component vector of float)
+0:379 'inFV1' ( in 3-component vector of float)
+0:379 'inFM0' ( in 3X3 matrix of float)
+0:379 'inFM1' ( in 3X3 matrix of float)
0:? Sequence
-0:385 Sequence
-0:385 move second child to first child ( temp float)
-0:385 'r0' ( temp float)
-0:385 component-wise multiply ( temp float)
-0:385 'inF1' ( in float)
-0:385 'inF0' ( in float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3-component vector of float)
-0:385 'r1' ( temp 3-component vector of float)
-0:385 vector-scale ( temp 3-component vector of float)
-0:385 'inF0' ( in float)
-0:385 'inFV0' ( in 3-component vector of float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3-component vector of float)
-0:385 'r2' ( temp 3-component vector of float)
-0:385 vector-scale ( temp 3-component vector of float)
-0:385 'inFV0' ( in 3-component vector of float)
-0:385 'inF0' ( in float)
-0:385 Sequence
-0:385 move second child to first child ( temp float)
-0:385 'r3' ( temp float)
-0:385 dot-product ( temp float)
-0:385 'inFV0' ( in 3-component vector of float)
-0:385 'inFV1' ( in 3-component vector of float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3-component vector of float)
-0:385 'r4' ( temp 3-component vector of float)
-0:385 vector-times-matrix ( temp 3-component vector of float)
-0:385 'inFV0' ( in 3-component vector of float)
-0:385 'inFM0' ( in 3X3 matrix of float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3-component vector of float)
-0:385 'r5' ( temp 3-component vector of float)
-0:385 matrix-times-vector ( temp 3-component vector of float)
-0:385 'inFM0' ( in 3X3 matrix of float)
-0:385 'inFV0' ( in 3-component vector of float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3X3 matrix of float)
-0:385 'r6' ( temp 3X3 matrix of float)
-0:385 matrix-scale ( temp 3X3 matrix of float)
-0:385 'inF0' ( in float)
-0:385 'inFM0' ( in 3X3 matrix of float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3X3 matrix of float)
-0:385 'r7' ( temp 3X3 matrix of float)
-0:385 matrix-scale ( temp 3X3 matrix of float)
-0:385 'inFM0' ( in 3X3 matrix of float)
-0:385 'inF0' ( in float)
-0:385 Sequence
-0:385 move second child to first child ( temp 3X3 matrix of float)
-0:385 'r8' ( temp 3X3 matrix of float)
-0:385 matrix-multiply ( temp 3X3 matrix of float)
-0:385 'inFM1' ( in 3X3 matrix of float)
-0:385 'inFM0' ( in 3X3 matrix of float)
-0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
-0:391 Function Parameters:
-0:391 'inF0' ( in float)
-0:391 'inF1' ( in float)
-0:391 'inFV0' ( in 4-component vector of float)
-0:391 'inFV1' ( in 4-component vector of float)
-0:391 'inFM0' ( in 4X4 matrix of float)
-0:391 'inFM1' ( in 4X4 matrix of float)
+0:380 Sequence
+0:380 move second child to first child ( temp float)
+0:380 'r0' ( temp float)
+0:380 component-wise multiply ( temp float)
+0:380 'inF1' ( in float)
+0:380 'inF0' ( in float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3-component vector of float)
+0:380 'r1' ( temp 3-component vector of float)
+0:380 vector-scale ( temp 3-component vector of float)
+0:380 'inF0' ( in float)
+0:380 'inFV0' ( in 3-component vector of float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3-component vector of float)
+0:380 'r2' ( temp 3-component vector of float)
+0:380 vector-scale ( temp 3-component vector of float)
+0:380 'inFV0' ( in 3-component vector of float)
+0:380 'inF0' ( in float)
+0:380 Sequence
+0:380 move second child to first child ( temp float)
+0:380 'r3' ( temp float)
+0:380 dot-product ( temp float)
+0:380 'inFV0' ( in 3-component vector of float)
+0:380 'inFV1' ( in 3-component vector of float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3-component vector of float)
+0:380 'r4' ( temp 3-component vector of float)
+0:380 vector-times-matrix ( temp 3-component vector of float)
+0:380 'inFV0' ( in 3-component vector of float)
+0:380 'inFM0' ( in 3X3 matrix of float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3-component vector of float)
+0:380 'r5' ( temp 3-component vector of float)
+0:380 matrix-times-vector ( temp 3-component vector of float)
+0:380 'inFM0' ( in 3X3 matrix of float)
+0:380 'inFV0' ( in 3-component vector of float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3X3 matrix of float)
+0:380 'r6' ( temp 3X3 matrix of float)
+0:380 matrix-scale ( temp 3X3 matrix of float)
+0:380 'inF0' ( in float)
+0:380 'inFM0' ( in 3X3 matrix of float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3X3 matrix of float)
+0:380 'r7' ( temp 3X3 matrix of float)
+0:380 matrix-scale ( temp 3X3 matrix of float)
+0:380 'inFM0' ( in 3X3 matrix of float)
+0:380 'inF0' ( in float)
+0:380 Sequence
+0:380 move second child to first child ( temp 3X3 matrix of float)
+0:380 'r8' ( temp 3X3 matrix of float)
+0:380 matrix-multiply ( temp 3X3 matrix of float)
+0:380 'inFM1' ( in 3X3 matrix of float)
+0:380 'inFM0' ( in 3X3 matrix of float)
+0:386 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
+0:386 Function Parameters:
+0:386 'inF0' ( in float)
+0:386 'inF1' ( in float)
+0:386 'inFV0' ( in 4-component vector of float)
+0:386 'inFV1' ( in 4-component vector of float)
+0:386 'inFM0' ( in 4X4 matrix of float)
+0:386 'inFM1' ( in 4X4 matrix of float)
0:? Sequence
-0:392 Sequence
-0:392 move second child to first child ( temp float)
-0:392 'r0' ( temp float)
-0:392 component-wise multiply ( temp float)
-0:392 'inF1' ( in float)
-0:392 'inF0' ( in float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4-component vector of float)
-0:392 'r1' ( temp 4-component vector of float)
-0:392 vector-scale ( temp 4-component vector of float)
-0:392 'inF0' ( in float)
-0:392 'inFV0' ( in 4-component vector of float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4-component vector of float)
-0:392 'r2' ( temp 4-component vector of float)
-0:392 vector-scale ( temp 4-component vector of float)
-0:392 'inFV0' ( in 4-component vector of float)
-0:392 'inF0' ( in float)
-0:392 Sequence
-0:392 move second child to first child ( temp float)
-0:392 'r3' ( temp float)
-0:392 dot-product ( temp float)
-0:392 'inFV0' ( in 4-component vector of float)
-0:392 'inFV1' ( in 4-component vector of float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4-component vector of float)
-0:392 'r4' ( temp 4-component vector of float)
-0:392 vector-times-matrix ( temp 4-component vector of float)
-0:392 'inFV0' ( in 4-component vector of float)
-0:392 'inFM0' ( in 4X4 matrix of float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4-component vector of float)
-0:392 'r5' ( temp 4-component vector of float)
-0:392 matrix-times-vector ( temp 4-component vector of float)
-0:392 'inFM0' ( in 4X4 matrix of float)
-0:392 'inFV0' ( in 4-component vector of float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4X4 matrix of float)
-0:392 'r6' ( temp 4X4 matrix of float)
-0:392 matrix-scale ( temp 4X4 matrix of float)
-0:392 'inF0' ( in float)
-0:392 'inFM0' ( in 4X4 matrix of float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4X4 matrix of float)
-0:392 'r7' ( temp 4X4 matrix of float)
-0:392 matrix-scale ( temp 4X4 matrix of float)
-0:392 'inFM0' ( in 4X4 matrix of float)
-0:392 'inF0' ( in float)
-0:392 Sequence
-0:392 move second child to first child ( temp 4X4 matrix of float)
-0:392 'r8' ( temp 4X4 matrix of float)
-0:392 matrix-multiply ( temp 4X4 matrix of float)
-0:392 'inFM1' ( in 4X4 matrix of float)
-0:392 'inFM0' ( in 4X4 matrix of float)
-0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
-0:401 Function Parameters:
-0:401 'inF0' ( in float)
-0:401 'inF1' ( in float)
-0:401 'inFV2' ( in 2-component vector of float)
-0:401 'inFV3' ( in 3-component vector of float)
-0:401 'inFM2x3' ( in 2X3 matrix of float)
-0:401 'inFM3x2' ( in 3X2 matrix of float)
-0:401 'inFM3x3' ( in 3X3 matrix of float)
-0:401 'inFM3x4' ( in 3X4 matrix of float)
-0:401 'inFM2x4' ( in 2X4 matrix of float)
+0:387 Sequence
+0:387 move second child to first child ( temp float)
+0:387 'r0' ( temp float)
+0:387 component-wise multiply ( temp float)
+0:387 'inF1' ( in float)
+0:387 'inF0' ( in float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4-component vector of float)
+0:387 'r1' ( temp 4-component vector of float)
+0:387 vector-scale ( temp 4-component vector of float)
+0:387 'inF0' ( in float)
+0:387 'inFV0' ( in 4-component vector of float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4-component vector of float)
+0:387 'r2' ( temp 4-component vector of float)
+0:387 vector-scale ( temp 4-component vector of float)
+0:387 'inFV0' ( in 4-component vector of float)
+0:387 'inF0' ( in float)
+0:387 Sequence
+0:387 move second child to first child ( temp float)
+0:387 'r3' ( temp float)
+0:387 dot-product ( temp float)
+0:387 'inFV0' ( in 4-component vector of float)
+0:387 'inFV1' ( in 4-component vector of float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4-component vector of float)
+0:387 'r4' ( temp 4-component vector of float)
+0:387 vector-times-matrix ( temp 4-component vector of float)
+0:387 'inFV0' ( in 4-component vector of float)
+0:387 'inFM0' ( in 4X4 matrix of float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4-component vector of float)
+0:387 'r5' ( temp 4-component vector of float)
+0:387 matrix-times-vector ( temp 4-component vector of float)
+0:387 'inFM0' ( in 4X4 matrix of float)
+0:387 'inFV0' ( in 4-component vector of float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4X4 matrix of float)
+0:387 'r6' ( temp 4X4 matrix of float)
+0:387 matrix-scale ( temp 4X4 matrix of float)
+0:387 'inF0' ( in float)
+0:387 'inFM0' ( in 4X4 matrix of float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4X4 matrix of float)
+0:387 'r7' ( temp 4X4 matrix of float)
+0:387 matrix-scale ( temp 4X4 matrix of float)
+0:387 'inFM0' ( in 4X4 matrix of float)
+0:387 'inF0' ( in float)
+0:387 Sequence
+0:387 move second child to first child ( temp 4X4 matrix of float)
+0:387 'r8' ( temp 4X4 matrix of float)
+0:387 matrix-multiply ( temp 4X4 matrix of float)
+0:387 'inFM1' ( in 4X4 matrix of float)
+0:387 'inFM0' ( in 4X4 matrix of float)
+0:396 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
+0:396 Function Parameters:
+0:396 'inF0' ( in float)
+0:396 'inF1' ( in float)
+0:396 'inFV2' ( in 2-component vector of float)
+0:396 'inFV3' ( in 3-component vector of float)
+0:396 'inFM2x3' ( in 2X3 matrix of float)
+0:396 'inFM3x2' ( in 3X2 matrix of float)
+0:396 'inFM3x3' ( in 3X3 matrix of float)
+0:396 'inFM3x4' ( in 3X4 matrix of float)
+0:396 'inFM2x4' ( in 2X4 matrix of float)
0:? Sequence
+0:397 Sequence
+0:397 move second child to first child ( temp float)
+0:397 'r00' ( temp float)
+0:397 component-wise multiply ( temp float)
+0:397 'inF1' ( in float)
+0:397 'inF0' ( in float)
+0:398 Sequence
+0:398 move second child to first child ( temp 2-component vector of float)
+0:398 'r01' ( temp 2-component vector of float)
+0:398 vector-scale ( temp 2-component vector of float)
+0:398 'inF0' ( in float)
+0:398 'inFV2' ( in 2-component vector of float)
+0:399 Sequence
+0:399 move second child to first child ( temp 3-component vector of float)
+0:399 'r02' ( temp 3-component vector of float)
+0:399 vector-scale ( temp 3-component vector of float)
+0:399 'inF0' ( in float)
+0:399 'inFV3' ( in 3-component vector of float)
+0:400 Sequence
+0:400 move second child to first child ( temp 2-component vector of float)
+0:400 'r03' ( temp 2-component vector of float)
+0:400 vector-scale ( temp 2-component vector of float)
+0:400 'inFV2' ( in 2-component vector of float)
+0:400 'inF0' ( in float)
+0:401 Sequence
+0:401 move second child to first child ( temp 3-component vector of float)
+0:401 'r04' ( temp 3-component vector of float)
+0:401 vector-scale ( temp 3-component vector of float)
+0:401 'inFV3' ( in 3-component vector of float)
+0:401 'inF0' ( in float)
0:402 Sequence
0:402 move second child to first child ( temp float)
-0:402 'r00' ( temp float)
-0:402 component-wise multiply ( temp float)
-0:402 'inF1' ( in float)
-0:402 'inF0' ( in float)
+0:402 'r05' ( temp float)
+0:402 dot-product ( temp float)
+0:402 'inFV2' ( in 2-component vector of float)
+0:402 'inFV2' ( in 2-component vector of float)
0:403 Sequence
-0:403 move second child to first child ( temp 2-component vector of float)
-0:403 'r01' ( temp 2-component vector of float)
-0:403 vector-scale ( temp 2-component vector of float)
-0:403 'inF0' ( in float)
-0:403 'inFV2' ( in 2-component vector of float)
+0:403 move second child to first child ( temp float)
+0:403 'r06' ( temp float)
+0:403 dot-product ( temp float)
+0:403 'inFV3' ( in 3-component vector of float)
+0:403 'inFV3' ( in 3-component vector of float)
0:404 Sequence
0:404 move second child to first child ( temp 3-component vector of float)
-0:404 'r02' ( temp 3-component vector of float)
-0:404 vector-scale ( temp 3-component vector of float)
-0:404 'inF0' ( in float)
-0:404 'inFV3' ( in 3-component vector of float)
+0:404 'r07' ( temp 3-component vector of float)
+0:404 matrix-times-vector ( temp 3-component vector of float)
+0:404 'inFM2x3' ( in 2X3 matrix of float)
+0:404 'inFV2' ( in 2-component vector of float)
0:405 Sequence
0:405 move second child to first child ( temp 2-component vector of float)
-0:405 'r03' ( temp 2-component vector of float)
-0:405 vector-scale ( temp 2-component vector of float)
-0:405 'inFV2' ( in 2-component vector of float)
-0:405 'inF0' ( in float)
+0:405 'r08' ( temp 2-component vector of float)
+0:405 matrix-times-vector ( temp 2-component vector of float)
+0:405 'inFM3x2' ( in 3X2 matrix of float)
+0:405 'inFV3' ( in 3-component vector of float)
0:406 Sequence
-0:406 move second child to first child ( temp 3-component vector of float)
-0:406 'r04' ( temp 3-component vector of float)
-0:406 vector-scale ( temp 3-component vector of float)
+0:406 move second child to first child ( temp 2-component vector of float)
+0:406 'r09' ( temp 2-component vector of float)
+0:406 vector-times-matrix ( temp 2-component vector of float)
0:406 'inFV3' ( in 3-component vector of float)
-0:406 'inF0' ( in float)
+0:406 'inFM2x3' ( in 2X3 matrix of float)
0:407 Sequence
-0:407 move second child to first child ( temp float)
-0:407 'r05' ( temp float)
-0:407 dot-product ( temp float)
-0:407 'inFV2' ( in 2-component vector of float)
+0:407 move second child to first child ( temp 3-component vector of float)
+0:407 'r10' ( temp 3-component vector of float)
+0:407 vector-times-matrix ( temp 3-component vector of float)
0:407 'inFV2' ( in 2-component vector of float)
+0:407 'inFM3x2' ( in 3X2 matrix of float)
0:408 Sequence
-0:408 move second child to first child ( temp float)
-0:408 'r06' ( temp float)
-0:408 dot-product ( temp float)
-0:408 'inFV3' ( in 3-component vector of float)
-0:408 'inFV3' ( in 3-component vector of float)
+0:408 move second child to first child ( temp 2X3 matrix of float)
+0:408 'r11' ( temp 2X3 matrix of float)
+0:408 matrix-scale ( temp 2X3 matrix of float)
+0:408 'inF0' ( in float)
+0:408 'inFM2x3' ( in 2X3 matrix of float)
0:409 Sequence
-0:409 move second child to first child ( temp 3-component vector of float)
-0:409 'r07' ( temp 3-component vector of float)
-0:409 matrix-times-vector ( temp 3-component vector of float)
-0:409 'inFM2x3' ( in 2X3 matrix of float)
-0:409 'inFV2' ( in 2-component vector of float)
+0:409 move second child to first child ( temp 3X2 matrix of float)
+0:409 'r12' ( temp 3X2 matrix of float)
+0:409 matrix-scale ( temp 3X2 matrix of float)
+0:409 'inF0' ( in float)
+0:409 'inFM3x2' ( in 3X2 matrix of float)
0:410 Sequence
-0:410 move second child to first child ( temp 2-component vector of float)
-0:410 'r08' ( temp 2-component vector of float)
-0:410 matrix-times-vector ( temp 2-component vector of float)
+0:410 move second child to first child ( temp 2X2 matrix of float)
+0:410 'r13' ( temp 2X2 matrix of float)
+0:410 matrix-multiply ( temp 2X2 matrix of float)
0:410 'inFM3x2' ( in 3X2 matrix of float)
-0:410 'inFV3' ( in 3-component vector of float)
+0:410 'inFM2x3' ( in 2X3 matrix of float)
0:411 Sequence
-0:411 move second child to first child ( temp 2-component vector of float)
-0:411 'r09' ( temp 2-component vector of float)
-0:411 vector-times-matrix ( temp 2-component vector of float)
-0:411 'inFV3' ( in 3-component vector of float)
+0:411 move second child to first child ( temp 2X3 matrix of float)
+0:411 'r14' ( temp 2X3 matrix of float)
+0:411 matrix-multiply ( temp 2X3 matrix of float)
+0:411 'inFM3x3' ( in 3X3 matrix of float)
0:411 'inFM2x3' ( in 2X3 matrix of float)
0:412 Sequence
-0:412 move second child to first child ( temp 3-component vector of float)
-0:412 'r10' ( temp 3-component vector of float)
-0:412 vector-times-matrix ( temp 3-component vector of float)
-0:412 'inFV2' ( in 2-component vector of float)
-0:412 'inFM3x2' ( in 3X2 matrix of float)
+0:412 move second child to first child ( temp 2X4 matrix of float)
+0:412 'r15' ( temp 2X4 matrix of float)
+0:412 matrix-multiply ( temp 2X4 matrix of float)
+0:412 'inFM3x4' ( in 3X4 matrix of float)
+0:412 'inFM2x3' ( in 2X3 matrix of float)
0:413 Sequence
-0:413 move second child to first child ( temp 2X3 matrix of float)
-0:413 'r11' ( temp 2X3 matrix of float)
-0:413 matrix-scale ( temp 2X3 matrix of float)
-0:413 'inF0' ( in float)
-0:413 'inFM2x3' ( in 2X3 matrix of float)
-0:414 Sequence
-0:414 move second child to first child ( temp 3X2 matrix of float)
-0:414 'r12' ( temp 3X2 matrix of float)
-0:414 matrix-scale ( temp 3X2 matrix of float)
-0:414 'inF0' ( in float)
-0:414 'inFM3x2' ( in 3X2 matrix of float)
-0:415 Sequence
-0:415 move second child to first child ( temp 2X2 matrix of float)
-0:415 'r13' ( temp 2X2 matrix of float)
-0:415 matrix-multiply ( temp 2X2 matrix of float)
-0:415 'inFM3x2' ( in 3X2 matrix of float)
-0:415 'inFM2x3' ( in 2X3 matrix of float)
-0:416 Sequence
-0:416 move second child to first child ( temp 2X3 matrix of float)
-0:416 'r14' ( temp 2X3 matrix of float)
-0:416 matrix-multiply ( temp 2X3 matrix of float)
-0:416 'inFM3x3' ( in 3X3 matrix of float)
-0:416 'inFM2x3' ( in 2X3 matrix of float)
-0:417 Sequence
-0:417 move second child to first child ( temp 2X4 matrix of float)
-0:417 'r15' ( temp 2X4 matrix of float)
-0:417 matrix-multiply ( temp 2X4 matrix of float)
-0:417 'inFM3x4' ( in 3X4 matrix of float)
-0:417 'inFM2x3' ( in 2X3 matrix of float)
-0:418 Sequence
-0:418 move second child to first child ( temp 3X4 matrix of float)
-0:418 'r16' ( temp 3X4 matrix of float)
-0:418 matrix-multiply ( temp 3X4 matrix of float)
-0:418 'inFM2x4' ( in 2X4 matrix of float)
-0:418 'inFM3x2' ( in 3X2 matrix of float)
+0:413 move second child to first child ( temp 3X4 matrix of float)
+0:413 'r16' ( temp 3X4 matrix of float)
+0:413 matrix-multiply ( temp 3X4 matrix of float)
+0:413 'inFM2x4' ( in 2X4 matrix of float)
+0:413 'inFM3x2' ( in 3X2 matrix of float)
0:? Linker Objects
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 1240
+// Generated by (magic number): 80002
+// Id's are bound by 1225
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "VertexShaderFunction"
+ Source HLSL 500
Name 4 "VertexShaderFunction"
Name 16 "VertexShaderFunctionS(f1;f1;f1;u1;u1;"
Name 11 "inF0"
@@ -2872,57 +2859,50 @@ Shader version: 450
Name 126 "inFM3x3"
Name 127 "inFM3x4"
Name 128 "inFM2x4"
- Name 182 "ResType"
- Name 316 "ResType"
- Name 464 "ResType"
- Name 620 "ResType"
- Name 753 "ResType"
- Name 873 "ResType"
- Name 996 "ResType"
- Name 1064 "r0"
- Name 1068 "r1"
- Name 1072 "r2"
- Name 1076 "r3"
- Name 1080 "r4"
- Name 1084 "r5"
- Name 1088 "r6"
- Name 1092 "r7"
- Name 1096 "r8"
- Name 1100 "r0"
- Name 1104 "r1"
- Name 1108 "r2"
- Name 1112 "r3"
- Name 1116 "r4"
- Name 1120 "r5"
- Name 1124 "r6"
- Name 1128 "r7"
- Name 1132 "r8"
- Name 1136 "r0"
- Name 1140 "r1"
- Name 1144 "r2"
- Name 1148 "r3"
- Name 1152 "r4"
- Name 1156 "r5"
- Name 1160 "r6"
- Name 1164 "r7"
- Name 1168 "r8"
- Name 1172 "r00"
- Name 1176 "r01"
- Name 1180 "r02"
- Name 1184 "r03"
- Name 1188 "r04"
- Name 1192 "r05"
- Name 1196 "r06"
- Name 1200 "r07"
- Name 1204 "r08"
- Name 1208 "r09"
- Name 1212 "r10"
- Name 1216 "r11"
- Name 1220 "r12"
- Name 1224 "r13"
- Name 1228 "r14"
- Name 1232 "r15"
- Name 1236 "r16"
+ Name 1049 "r0"
+ Name 1053 "r1"
+ Name 1057 "r2"
+ Name 1061 "r3"
+ Name 1065 "r4"
+ Name 1069 "r5"
+ Name 1073 "r6"
+ Name 1077 "r7"
+ Name 1081 "r8"
+ Name 1085 "r0"
+ Name 1089 "r1"
+ Name 1093 "r2"
+ Name 1097 "r3"
+ Name 1101 "r4"
+ Name 1105 "r5"
+ Name 1109 "r6"
+ Name 1113 "r7"
+ Name 1117 "r8"
+ Name 1121 "r0"
+ Name 1125 "r1"
+ Name 1129 "r2"
+ Name 1133 "r3"
+ Name 1137 "r4"
+ Name 1141 "r5"
+ Name 1145 "r6"
+ Name 1149 "r7"
+ Name 1153 "r8"
+ Name 1157 "r00"
+ Name 1161 "r01"
+ Name 1165 "r02"
+ Name 1169 "r03"
+ Name 1173 "r04"
+ Name 1177 "r05"
+ Name 1181 "r06"
+ Name 1185 "r07"
+ Name 1189 "r08"
+ Name 1193 "r09"
+ Name 1197 "r10"
+ Name 1201 "r11"
+ Name 1205 "r12"
+ Name 1209 "r13"
+ Name 1213 "r14"
+ Name 1217 "r15"
+ Name 1221 "r16"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -2968,50 +2948,49 @@ Shader version: 450
118: TypePointer Function 117
119: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr)
132: TypeBool
- 143: TypeInt 32 1
- 164: 143(int) Constant 7
- 182(ResType): TypeStruct 6(float) 143(int)
- 201: 6(float) Constant 1050288283
- 216: 143(int) Constant 2
- 223: 6(float) Constant 0
- 224: 6(float) Constant 1065353216
- 266: TypeVector 143(int) 2
- 287: 143(int) Constant 3
- 288: 266(ivec2) ConstantComposite 164 287
- 316(ResType): TypeStruct 24(fvec2) 266(ivec2)
- 321: TypeVector 132(bool) 2
- 359: 6(float) Constant 1073741824
- 361: 143(int) Constant 1
- 362: 266(ivec2) ConstantComposite 361 216
- 397: 24(fvec2) ConstantComposite 224 359
- 411: TypeVector 143(int) 3
- 432: 143(int) Constant 5
- 433: 411(ivec3) ConstantComposite 164 287 432
- 464(ResType): TypeStruct 36(fvec3) 411(ivec3)
- 469: TypeVector 132(bool) 3
- 508: 411(ivec3) ConstantComposite 361 216 287
- 543: 6(float) Constant 1077936128
- 544: 36(fvec3) ConstantComposite 224 359 543
- 558: TypeVector 143(int) 4
- 579: 558(ivec4) ConstantComposite 164 287 432 216
- 589: 8(int) Constant 1
- 595: 8(int) Constant 2
- 598: 8(int) Constant 3
- 620(ResType): TypeStruct 48(fvec4) 558(ivec4)
- 625: TypeVector 132(bool) 4
- 664: 143(int) Constant 4
- 665: 558(ivec4) ConstantComposite 361 216 287 664
- 700: 6(float) Constant 1082130432
- 701: 48(fvec4) ConstantComposite 224 359 543 700
- 753(ResType): TypeStruct 60 266(ivec2)
- 817: 24(fvec2) ConstantComposite 359 359
- 818: 60 ConstantComposite 817 817
- 873(ResType): TypeStruct 68 411(ivec3)
- 937: 36(fvec3) ConstantComposite 543 543 543
- 938: 68 ConstantComposite 937 937 937
- 996(ResType): TypeStruct 76 558(ivec4)
- 1060: 48(fvec4) ConstantComposite 700 700 700 700
- 1061: 76 ConstantComposite 1060 1060 1060 1060
+ 133: 6(float) Constant 0
+ 146: TypeInt 32 1
+ 167: 146(int) Constant 7
+ 199: 6(float) Constant 1050288283
+ 214: 146(int) Constant 2
+ 221: 6(float) Constant 1065353216
+ 253: TypeVector 132(bool) 2
+ 254: 24(fvec2) ConstantComposite 133 133
+ 267: TypeVector 146(int) 2
+ 288: 146(int) Constant 3
+ 289: 267(ivec2) ConstantComposite 167 288
+ 354: 6(float) Constant 1073741824
+ 356: 146(int) Constant 1
+ 357: 267(ivec2) ConstantComposite 356 214
+ 392: 24(fvec2) ConstantComposite 221 354
+ 396: TypeVector 132(bool) 3
+ 397: 36(fvec3) ConstantComposite 133 133 133
+ 410: TypeVector 146(int) 3
+ 431: 146(int) Constant 5
+ 432: 410(ivec3) ConstantComposite 167 288 431
+ 501: 410(ivec3) ConstantComposite 356 214 288
+ 536: 6(float) Constant 1077936128
+ 537: 36(fvec3) ConstantComposite 221 354 536
+ 541: TypeVector 132(bool) 4
+ 542: 48(fvec4) ConstantComposite 133 133 133 133
+ 555: TypeVector 146(int) 4
+ 576: 555(ivec4) ConstantComposite 167 288 431 214
+ 586: 8(int) Constant 1
+ 592: 8(int) Constant 2
+ 595: 8(int) Constant 3
+ 655: 146(int) Constant 4
+ 656: 555(ivec4) ConstantComposite 356 214 288 655
+ 691: 6(float) Constant 1082130432
+ 692: 48(fvec4) ConstantComposite 221 354 536 691
+ 696: TypeMatrix 253(bvec2) 2
+ 806: 24(fvec2) ConstantComposite 354 354
+ 807: 60 ConstantComposite 806 806
+ 811: TypeMatrix 396(bvec3) 3
+ 924: 36(fvec3) ConstantComposite 536 536 536
+ 925: 68 ConstantComposite 924 924 924
+ 929: TypeMatrix 541(bvec4) 4
+ 1045: 48(fvec4) ConstantComposite 691 691 691 691
+ 1046: 76 ConstantComposite 1045 1045 1045 1045
4(VertexShaderFunction): 2 Function None 3
5: Label
Return
@@ -3024,128 +3003,125 @@ Shader version: 450
15(inU1): 9(ptr) FunctionParameter
17: Label
131: 6(float) Load 11(inF0)
- 133: 132(bool) All 131
- 134: 6(float) Load 11(inF0)
- 135: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 134
+ 134: 132(bool) FOrdNotEqual 131 133
+ 135: 132(bool) All 134
136: 6(float) Load 11(inF0)
- 137: 6(float) ExtInst 1(GLSL.std.450) 17(Acos) 136
+ 137: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 136
138: 6(float) Load 11(inF0)
- 139: 132(bool) Any 138
+ 139: 6(float) ExtInst 1(GLSL.std.450) 17(Acos) 138
140: 6(float) Load 11(inF0)
- 141: 6(float) ExtInst 1(GLSL.std.450) 16(Asin) 140
- 142: 6(float) Load 11(inF0)
- 144: 143(int) Bitcast 142
+ 141: 132(bool) FOrdNotEqual 140 133
+ 142: 132(bool) Any 141
+ 143: 6(float) Load 11(inF0)
+ 144: 6(float) ExtInst 1(GLSL.std.450) 16(Asin) 143
145: 6(float) Load 11(inF0)
- 146: 8(int) Bitcast 145
- 147: 8(int) Load 14(inU0)
- 148: 6(float) Bitcast 147
- 149: 6(float) Load 11(inF0)
- 150: 6(float) ExtInst 1(GLSL.std.450) 18(Atan) 149
- 151: 6(float) Load 11(inF0)
- 152: 6(float) Load 12(inF1)
- 153: 6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 151 152
+ 147: 146(int) Bitcast 145
+ 148: 6(float) Load 11(inF0)
+ 149: 8(int) Bitcast 148
+ 150: 8(int) Load 14(inU0)
+ 151: 6(float) Bitcast 150
+ 152: 6(float) Load 11(inF0)
+ 153: 6(float) ExtInst 1(GLSL.std.450) 18(Atan) 152
154: 6(float) Load 11(inF0)
- 155: 6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 154
- 156: 6(float) Load 11(inF0)
- 157: 6(float) Load 12(inF1)
- 158: 6(float) Load 13(inF2)
- 159: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 156 157 158
- 160: 6(float) Load 11(inF0)
- 161: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 160
- 162: 6(float) Load 11(inF0)
- 163: 6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 162
- 165: 143(int) BitCount 164
- 166: 6(float) Load 11(inF0)
- 167: 6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 166
- 168: 6(float) Load 11(inF0)
- 169: 6(float) ExtInst 1(GLSL.std.450) 27(Exp) 168
- 170: 6(float) Load 11(inF0)
- 171: 6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 170
- 172: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
- 173: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
- 174: 6(float) Load 11(inF0)
- 175: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 174
- 176: 6(float) Load 11(inF0)
- 177: 6(float) Load 12(inF1)
- 178: 6(float) FMod 176 177
+ 155: 6(float) Load 12(inF1)
+ 156: 6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 154 155
+ 157: 6(float) Load 11(inF0)
+ 158: 6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 157
+ 159: 6(float) Load 11(inF0)
+ 160: 6(float) Load 12(inF1)
+ 161: 6(float) Load 13(inF2)
+ 162: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 159 160 161
+ 163: 6(float) Load 11(inF0)
+ 164: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 163
+ 165: 6(float) Load 11(inF0)
+ 166: 6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 165
+ 168: 146(int) BitCount 167
+ 169: 6(float) Load 11(inF0)
+ 170: 6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 169
+ 171: 6(float) Load 11(inF0)
+ 172: 6(float) ExtInst 1(GLSL.std.450) 27(Exp) 171
+ 173: 6(float) Load 11(inF0)
+ 174: 6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 173
+ 175: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
+ 176: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
+ 177: 6(float) Load 11(inF0)
+ 178: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 177
179: 6(float) Load 11(inF0)
- 180: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 179
- 181: 6(float) Load 11(inF0)
- 183:182(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 181
- 184: 143(int) CompositeExtract 183 1
- Store 12(inF1) 184
- 185: 6(float) CompositeExtract 183 0
+ 180: 6(float) Load 12(inF1)
+ 181: 6(float) FMod 179 180
+ 182: 6(float) Load 11(inF0)
+ 183: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 182
+ 184: 6(float) Load 11(inF0)
+ 185: 132(bool) IsInf 184
186: 6(float) Load 11(inF0)
- 187: 132(bool) IsInf 186
+ 187: 132(bool) IsNan 186
188: 6(float) Load 11(inF0)
- 189: 132(bool) IsNan 188
- 190: 6(float) Load 11(inF0)
- 191: 6(float) Load 12(inF1)
- 192: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 190 191
- 193: 6(float) Load 11(inF0)
- 194: 6(float) Load 12(inF1)
- 195: 6(float) Load 13(inF2)
- 196: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 193 194 195
+ 189: 6(float) Load 12(inF1)
+ 190: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 188 189
+ 191: 6(float) Load 11(inF0)
+ 192: 6(float) Load 12(inF1)
+ 193: 6(float) Load 13(inF2)
+ 194: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 191 192 193
+ 195: 6(float) Load 11(inF0)
+ 196: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 195
197: 6(float) Load 11(inF0)
- 198: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 197
- 199: 6(float) Load 11(inF0)
- 200: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 199
- 202: 6(float) FMul 200 201
+ 198: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 197
+ 200: 6(float) FMul 198 199
+ 201: 6(float) Load 11(inF0)
+ 202: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 201
203: 6(float) Load 11(inF0)
- 204: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 203
- 205: 6(float) Load 11(inF0)
- 206: 6(float) Load 12(inF1)
- 207: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 205 206
- 208: 6(float) Load 11(inF0)
- 209: 6(float) Load 12(inF1)
- 210: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 208 209
- 211: 6(float) Load 11(inF0)
- 212: 6(float) Load 12(inF1)
- 213: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 211 212
- 214: 6(float) Load 11(inF0)
- 215: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 214
- 217: 143(int) BitReverse 216
+ 204: 6(float) Load 12(inF1)
+ 205: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 203 204
+ 206: 6(float) Load 11(inF0)
+ 207: 6(float) Load 12(inF1)
+ 208: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 206 207
+ 209: 6(float) Load 11(inF0)
+ 210: 6(float) Load 12(inF1)
+ 211: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 209 210
+ 212: 6(float) Load 11(inF0)
+ 213: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 212
+ 215: 146(int) BitReverse 214
+ 216: 6(float) Load 11(inF0)
+ 217: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 216
218: 6(float) Load 11(inF0)
- 219: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 218
+ 219: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 218
220: 6(float) Load 11(inF0)
- 221: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 220
- 222: 6(float) Load 11(inF0)
- 225: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 222 223 224
- 226: 6(float) Load 11(inF0)
- 227: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 226
- 228: 6(float) Load 11(inF0)
- 229: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 228
- 230: 6(float) Load 11(inF0)
- 231: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 230
- Store 12(inF1) 231
- 232: 6(float) Load 11(inF0)
- 233: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 232
- Store 13(inF2) 233
- 234: 6(float) Load 11(inF0)
- 235: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 234
- 236: 6(float) Load 11(inF0)
- 237: 6(float) Load 12(inF1)
- 238: 6(float) Load 13(inF2)
- 239: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 236 237 238
- 240: 6(float) Load 11(inF0)
- 241: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 240
+ 222: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 220 133 221
+ 223: 6(float) Load 11(inF0)
+ 224: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 223
+ 225: 6(float) Load 11(inF0)
+ 226: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 225
+ 227: 6(float) Load 11(inF0)
+ 228: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 227
+ Store 12(inF1) 228
+ 229: 6(float) Load 11(inF0)
+ 230: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 229
+ Store 13(inF2) 230
+ 231: 6(float) Load 11(inF0)
+ 232: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 231
+ 233: 6(float) Load 11(inF0)
+ 234: 6(float) Load 12(inF1)
+ 235: 6(float) Load 13(inF2)
+ 236: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 233 234 235
+ 237: 6(float) Load 11(inF0)
+ 238: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 237
+ 239: 6(float) Load 11(inF0)
+ 240: 6(float) Load 12(inF1)
+ 241: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 239 240
242: 6(float) Load 11(inF0)
- 243: 6(float) Load 12(inF1)
- 244: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 242 243
- 245: 6(float) Load 11(inF0)
- 246: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 245
- 247: 6(float) Load 11(inF0)
- 248: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 247
- 249: 6(float) Load 11(inF0)
- 250: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 249
- ReturnValue 223
+ 243: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 242
+ 244: 6(float) Load 11(inF0)
+ 245: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 244
+ 246: 6(float) Load 11(inF0)
+ 247: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 246
+ ReturnValue 133
FunctionEnd
22(VertexShaderFunction1(vf1;vf1;vf1;): 6(float) Function None 18
19(inF0): 7(ptr) FunctionParameter
20(inF1): 7(ptr) FunctionParameter
21(inF2): 7(ptr) FunctionParameter
23: Label
- ReturnValue 223
+ ReturnValue 133
FunctionEnd
34(VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2;): 24(fvec2) Function None 28
29(inF0): 25(ptr) FunctionParameter
@@ -3154,144 +3130,141 @@ Shader version: 450
32(inU0): 27(ptr) FunctionParameter
33(inU1): 27(ptr) FunctionParameter
35: Label
- 255: 24(fvec2) Load 29(inF0)
+ 252: 24(fvec2) Load 29(inF0)
+ 255: 253(bvec2) FOrdNotEqual 252 254
256: 132(bool) All 255
257: 24(fvec2) Load 29(inF0)
258: 24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 257
259: 24(fvec2) Load 29(inF0)
260: 24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 259
261: 24(fvec2) Load 29(inF0)
- 262: 132(bool) Any 261
- 263: 24(fvec2) Load 29(inF0)
- 264: 24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 263
- 265: 24(fvec2) Load 29(inF0)
- 267: 266(ivec2) Bitcast 265
- 268: 24(fvec2) Load 29(inF0)
- 269: 26(ivec2) Bitcast 268
- 270: 26(ivec2) Load 32(inU0)
- 271: 24(fvec2) Bitcast 270
- 272: 24(fvec2) Load 29(inF0)
- 273: 24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 272
- 274: 24(fvec2) Load 29(inF0)
- 275: 24(fvec2) Load 30(inF1)
- 276: 24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 274 275
- 277: 24(fvec2) Load 29(inF0)
- 278: 24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 277
- 279: 24(fvec2) Load 29(inF0)
- 280: 24(fvec2) Load 30(inF1)
- 281: 24(fvec2) Load 31(inF2)
- 282: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 279 280 281
- 283: 24(fvec2) Load 29(inF0)
- 284: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 283
- 285: 24(fvec2) Load 29(inF0)
- 286: 24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 285
- 289: 266(ivec2) BitCount 288
- 290: 24(fvec2) Load 29(inF0)
- 291: 24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 290
- 292: 24(fvec2) Load 29(inF0)
- 293: 24(fvec2) Load 30(inF1)
- 294: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 292 293
- 295: 24(fvec2) Load 29(inF0)
- 296: 24(fvec2) Load 30(inF1)
- 297: 6(float) Dot 295 296
- 298: 24(fvec2) Load 29(inF0)
- 299: 24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 298
- 300: 24(fvec2) Load 29(inF0)
- 301: 24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 300
- 302: 24(fvec2) Load 29(inF0)
- 303: 24(fvec2) Load 30(inF1)
- 304: 24(fvec2) Load 31(inF2)
- 305: 24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 302 303 304
- 306: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
- 307: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
- 308: 24(fvec2) Load 29(inF0)
- 309: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 308
- 310: 24(fvec2) Load 29(inF0)
- 311: 24(fvec2) Load 30(inF1)
- 312: 24(fvec2) FMod 310 311
- 313: 24(fvec2) Load 29(inF0)
- 314: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 313
- 315: 24(fvec2) Load 29(inF0)
- 317:316(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 315
- 318: 266(ivec2) CompositeExtract 317 1
- Store 30(inF1) 318
- 319: 24(fvec2) CompositeExtract 317 0
+ 262: 253(bvec2) FOrdNotEqual 261 254
+ 263: 132(bool) Any 262
+ 264: 24(fvec2) Load 29(inF0)
+ 265: 24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 264
+ 266: 24(fvec2) Load 29(inF0)
+ 268: 267(ivec2) Bitcast 266
+ 269: 24(fvec2) Load 29(inF0)
+ 270: 26(ivec2) Bitcast 269
+ 271: 26(ivec2) Load 32(inU0)
+ 272: 24(fvec2) Bitcast 271
+ 273: 24(fvec2) Load 29(inF0)
+ 274: 24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 273
+ 275: 24(fvec2) Load 29(inF0)
+ 276: 24(fvec2) Load 30(inF1)
+ 277: 24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 275 276
+ 278: 24(fvec2) Load 29(inF0)
+ 279: 24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 278
+ 280: 24(fvec2) Load 29(inF0)
+ 281: 24(fvec2) Load 30(inF1)
+ 282: 24(fvec2) Load 31(inF2)
+ 283: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 280 281 282
+ 284: 24(fvec2) Load 29(inF0)
+ 285: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 284
+ 286: 24(fvec2) Load 29(inF0)
+ 287: 24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 286
+ 290: 267(ivec2) BitCount 289
+ 291: 24(fvec2) Load 29(inF0)
+ 292: 24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 291
+ 293: 24(fvec2) Load 29(inF0)
+ 294: 24(fvec2) Load 30(inF1)
+ 295: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 293 294
+ 296: 24(fvec2) Load 29(inF0)
+ 297: 24(fvec2) Load 30(inF1)
+ 298: 6(float) Dot 296 297
+ 299: 24(fvec2) Load 29(inF0)
+ 300: 24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 299
+ 301: 24(fvec2) Load 29(inF0)
+ 302: 24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 301
+ 303: 24(fvec2) Load 29(inF0)
+ 304: 24(fvec2) Load 30(inF1)
+ 305: 24(fvec2) Load 31(inF2)
+ 306: 24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 303 304 305
+ 307: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
+ 308: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
+ 309: 24(fvec2) Load 29(inF0)
+ 310: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 309
+ 311: 24(fvec2) Load 29(inF0)
+ 312: 24(fvec2) Load 30(inF1)
+ 313: 24(fvec2) FMod 311 312
+ 314: 24(fvec2) Load 29(inF0)
+ 315: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 314
+ 316: 24(fvec2) Load 29(inF0)
+ 317: 253(bvec2) IsInf 316
+ 318: 24(fvec2) Load 29(inF0)
+ 319: 253(bvec2) IsNan 318
320: 24(fvec2) Load 29(inF0)
- 322: 321(bvec2) IsInf 320
+ 321: 24(fvec2) Load 30(inF1)
+ 322: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 320 321
323: 24(fvec2) Load 29(inF0)
- 324: 321(bvec2) IsNan 323
- 325: 24(fvec2) Load 29(inF0)
- 326: 24(fvec2) Load 30(inF1)
- 327: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 325 326
- 328: 24(fvec2) Load 29(inF0)
- 329: 24(fvec2) Load 30(inF1)
- 330: 24(fvec2) Load 31(inF2)
- 331: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 328 329 330
- 332: 24(fvec2) Load 29(inF0)
- 333: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 332
+ 324: 24(fvec2) Load 30(inF1)
+ 325: 24(fvec2) Load 31(inF2)
+ 326: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 323 324 325
+ 327: 24(fvec2) Load 29(inF0)
+ 328: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 327
+ 329: 24(fvec2) Load 29(inF0)
+ 330: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 329
+ 331: 24(fvec2) Load 29(inF0)
+ 332: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 331
+ 333: 24(fvec2) VectorTimesScalar 332 199
334: 24(fvec2) Load 29(inF0)
- 335: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 334
+ 335: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 334
336: 24(fvec2) Load 29(inF0)
- 337: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 336
- 338: 24(fvec2) VectorTimesScalar 337 201
+ 337: 24(fvec2) Load 30(inF1)
+ 338: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 336 337
339: 24(fvec2) Load 29(inF0)
- 340: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 339
- 341: 24(fvec2) Load 29(inF0)
- 342: 24(fvec2) Load 30(inF1)
- 343: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 341 342
+ 340: 24(fvec2) Load 30(inF1)
+ 341: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 339 340
+ 342: 24(fvec2) Load 29(inF0)
+ 343: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 342
344: 24(fvec2) Load 29(inF0)
345: 24(fvec2) Load 30(inF1)
- 346: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 344 345
+ 346: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 344 345
347: 24(fvec2) Load 29(inF0)
- 348: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 347
+ 348: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 347
349: 24(fvec2) Load 29(inF0)
350: 24(fvec2) Load 30(inF1)
- 351: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 349 350
+ 351: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 349 350
352: 24(fvec2) Load 29(inF0)
- 353: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 352
- 354: 24(fvec2) Load 29(inF0)
- 355: 24(fvec2) Load 30(inF1)
- 356: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 354 355
- 357: 24(fvec2) Load 29(inF0)
- 358: 24(fvec2) Load 30(inF1)
- 360: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 357 358 359
- 363: 266(ivec2) BitReverse 362
- 364: 24(fvec2) Load 29(inF0)
- 365: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 364
- 366: 24(fvec2) Load 29(inF0)
- 367: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 366
- 368: 24(fvec2) Load 29(inF0)
- 369: 24(fvec2) CompositeConstruct 223 223
- 370: 24(fvec2) CompositeConstruct 224 224
- 371: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 368 369 370
- 372: 24(fvec2) Load 29(inF0)
- 373: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 372
- 374: 24(fvec2) Load 29(inF0)
- 375: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 374
- 376: 24(fvec2) Load 29(inF0)
- 377: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 376
- Store 30(inF1) 377
- 378: 24(fvec2) Load 29(inF0)
- 379: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 378
- Store 31(inF2) 379
- 380: 24(fvec2) Load 29(inF0)
- 381: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 380
- 382: 24(fvec2) Load 29(inF0)
- 383: 24(fvec2) Load 30(inF1)
- 384: 24(fvec2) Load 31(inF2)
- 385: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 382 383 384
+ 353: 24(fvec2) Load 30(inF1)
+ 355: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 352 353 354
+ 358: 267(ivec2) BitReverse 357
+ 359: 24(fvec2) Load 29(inF0)
+ 360: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 359
+ 361: 24(fvec2) Load 29(inF0)
+ 362: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 361
+ 363: 24(fvec2) Load 29(inF0)
+ 364: 24(fvec2) CompositeConstruct 133 133
+ 365: 24(fvec2) CompositeConstruct 221 221
+ 366: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 363 364 365
+ 367: 24(fvec2) Load 29(inF0)
+ 368: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 367
+ 369: 24(fvec2) Load 29(inF0)
+ 370: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 369
+ 371: 24(fvec2) Load 29(inF0)
+ 372: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 371
+ Store 30(inF1) 372
+ 373: 24(fvec2) Load 29(inF0)
+ 374: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 373
+ Store 31(inF2) 374
+ 375: 24(fvec2) Load 29(inF0)
+ 376: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 375
+ 377: 24(fvec2) Load 29(inF0)
+ 378: 24(fvec2) Load 30(inF1)
+ 379: 24(fvec2) Load 31(inF2)
+ 380: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 377 378 379
+ 381: 24(fvec2) Load 29(inF0)
+ 382: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 381
+ 383: 24(fvec2) Load 29(inF0)
+ 384: 24(fvec2) Load 30(inF1)
+ 385: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 383 384
386: 24(fvec2) Load 29(inF0)
- 387: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 386
+ 387: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 386
388: 24(fvec2) Load 29(inF0)
- 389: 24(fvec2) Load 30(inF1)
- 390: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 388 389
- 391: 24(fvec2) Load 29(inF0)
- 392: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 391
- 393: 24(fvec2) Load 29(inF0)
- 394: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 393
- 395: 24(fvec2) Load 29(inF0)
- 396: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 395
- ReturnValue 397
+ 389: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 388
+ 390: 24(fvec2) Load 29(inF0)
+ 391: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 390
+ ReturnValue 392
FunctionEnd
46(VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 36(fvec3) Function None 40
41(inF0): 37(ptr) FunctionParameter
@@ -3300,147 +3273,144 @@ Shader version: 450
44(inU0): 39(ptr) FunctionParameter
45(inU1): 39(ptr) FunctionParameter
47: Label
+ 395: 36(fvec3) Load 41(inF0)
+ 398: 396(bvec3) FOrdNotEqual 395 397
+ 399: 132(bool) All 398
400: 36(fvec3) Load 41(inF0)
- 401: 132(bool) All 400
+ 401: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 400
402: 36(fvec3) Load 41(inF0)
- 403: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 402
+ 403: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 402
404: 36(fvec3) Load 41(inF0)
- 405: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 404
- 406: 36(fvec3) Load 41(inF0)
- 407: 132(bool) Any 406
- 408: 36(fvec3) Load 41(inF0)
- 409: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 408
- 410: 36(fvec3) Load 41(inF0)
- 412: 411(ivec3) Bitcast 410
- 413: 36(fvec3) Load 41(inF0)
- 414: 38(ivec3) Bitcast 413
- 415: 38(ivec3) Load 44(inU0)
- 416: 36(fvec3) Bitcast 415
- 417: 36(fvec3) Load 41(inF0)
- 418: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 417
- 419: 36(fvec3) Load 41(inF0)
- 420: 36(fvec3) Load 42(inF1)
- 421: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 419 420
- 422: 36(fvec3) Load 41(inF0)
- 423: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 422
- 424: 36(fvec3) Load 41(inF0)
- 425: 36(fvec3) Load 42(inF1)
- 426: 36(fvec3) Load 43(inF2)
- 427: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 424 425 426
- 428: 36(fvec3) Load 41(inF0)
- 429: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 428
- 430: 36(fvec3) Load 41(inF0)
- 431: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 430
- 434: 411(ivec3) BitCount 433
- 435: 36(fvec3) Load 41(inF0)
- 436: 36(fvec3) Load 42(inF1)
- 437: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 435 436
- 438: 36(fvec3) Load 41(inF0)
- 439: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 438
- 440: 36(fvec3) Load 41(inF0)
- 441: 36(fvec3) Load 42(inF1)
- 442: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 440 441
- 443: 36(fvec3) Load 41(inF0)
- 444: 36(fvec3) Load 42(inF1)
- 445: 6(float) Dot 443 444
- 446: 36(fvec3) Load 41(inF0)
- 447: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 446
- 448: 36(fvec3) Load 41(inF0)
- 449: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 448
- 450: 36(fvec3) Load 41(inF0)
- 451: 36(fvec3) Load 42(inF1)
- 452: 36(fvec3) Load 43(inF2)
- 453: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 450 451 452
- 454: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
- 455: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
- 456: 36(fvec3) Load 41(inF0)
- 457: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 456
- 458: 36(fvec3) Load 41(inF0)
- 459: 36(fvec3) Load 42(inF1)
- 460: 36(fvec3) FMod 458 459
- 461: 36(fvec3) Load 41(inF0)
- 462: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 461
- 463: 36(fvec3) Load 41(inF0)
- 465:464(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 463
- 466: 411(ivec3) CompositeExtract 465 1
- Store 42(inF1) 466
- 467: 36(fvec3) CompositeExtract 465 0
- 468: 36(fvec3) Load 41(inF0)
- 470: 469(bvec3) IsInf 468
- 471: 36(fvec3) Load 41(inF0)
- 472: 469(bvec3) IsNan 471
+ 405: 396(bvec3) FOrdNotEqual 404 397
+ 406: 132(bool) Any 405
+ 407: 36(fvec3) Load 41(inF0)
+ 408: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 407
+ 409: 36(fvec3) Load 41(inF0)
+ 411: 410(ivec3) Bitcast 409
+ 412: 36(fvec3) Load 41(inF0)
+ 413: 38(ivec3) Bitcast 412
+ 414: 38(ivec3) Load 44(inU0)
+ 415: 36(fvec3) Bitcast 414
+ 416: 36(fvec3) Load 41(inF0)
+ 417: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 416
+ 418: 36(fvec3) Load 41(inF0)
+ 419: 36(fvec3) Load 42(inF1)
+ 420: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 418 419
+ 421: 36(fvec3) Load 41(inF0)
+ 422: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 421
+ 423: 36(fvec3) Load 41(inF0)
+ 424: 36(fvec3) Load 42(inF1)
+ 425: 36(fvec3) Load 43(inF2)
+ 426: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 423 424 425
+ 427: 36(fvec3) Load 41(inF0)
+ 428: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 427
+ 429: 36(fvec3) Load 41(inF0)
+ 430: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 429
+ 433: 410(ivec3) BitCount 432
+ 434: 36(fvec3) Load 41(inF0)
+ 435: 36(fvec3) Load 42(inF1)
+ 436: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 434 435
+ 437: 36(fvec3) Load 41(inF0)
+ 438: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 437
+ 439: 36(fvec3) Load 41(inF0)
+ 440: 36(fvec3) Load 42(inF1)
+ 441: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 439 440
+ 442: 36(fvec3) Load 41(inF0)
+ 443: 36(fvec3) Load 42(inF1)
+ 444: 6(float) Dot 442 443
+ 445: 36(fvec3) Load 41(inF0)
+ 446: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 445
+ 447: 36(fvec3) Load 41(inF0)
+ 448: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 447
+ 449: 36(fvec3) Load 41(inF0)
+ 450: 36(fvec3) Load 42(inF1)
+ 451: 36(fvec3) Load 43(inF2)
+ 452: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 449 450 451
+ 453: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
+ 454: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
+ 455: 36(fvec3) Load 41(inF0)
+ 456: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 455
+ 457: 36(fvec3) Load 41(inF0)
+ 458: 36(fvec3) Load 42(inF1)
+ 459: 36(fvec3) FMod 457 458
+ 460: 36(fvec3) Load 41(inF0)
+ 461: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 460
+ 462: 36(fvec3) Load 41(inF0)
+ 463: 396(bvec3) IsInf 462
+ 464: 36(fvec3) Load 41(inF0)
+ 465: 396(bvec3) IsNan 464
+ 466: 36(fvec3) Load 41(inF0)
+ 467: 36(fvec3) Load 42(inF1)
+ 468: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 466 467
+ 469: 36(fvec3) Load 41(inF0)
+ 470: 36(fvec3) Load 42(inF1)
+ 471: 36(fvec3) Load 43(inF2)
+ 472: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 469 470 471
473: 36(fvec3) Load 41(inF0)
- 474: 36(fvec3) Load 42(inF1)
- 475: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 473 474
- 476: 36(fvec3) Load 41(inF0)
- 477: 36(fvec3) Load 42(inF1)
- 478: 36(fvec3) Load 43(inF2)
- 479: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 476 477 478
+ 474: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 473
+ 475: 36(fvec3) Load 41(inF0)
+ 476: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 475
+ 477: 36(fvec3) Load 41(inF0)
+ 478: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 477
+ 479: 36(fvec3) VectorTimesScalar 478 199
480: 36(fvec3) Load 41(inF0)
- 481: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 480
+ 481: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 480
482: 36(fvec3) Load 41(inF0)
- 483: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 482
- 484: 36(fvec3) Load 41(inF0)
- 485: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 484
- 486: 36(fvec3) VectorTimesScalar 485 201
- 487: 36(fvec3) Load 41(inF0)
- 488: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 487
- 489: 36(fvec3) Load 41(inF0)
- 490: 36(fvec3) Load 42(inF1)
- 491: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 489 490
- 492: 36(fvec3) Load 41(inF0)
- 493: 36(fvec3) Load 42(inF1)
- 494: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 492 493
+ 483: 36(fvec3) Load 42(inF1)
+ 484: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 482 483
+ 485: 36(fvec3) Load 41(inF0)
+ 486: 36(fvec3) Load 42(inF1)
+ 487: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 485 486
+ 488: 36(fvec3) Load 41(inF0)
+ 489: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 488
+ 490: 36(fvec3) Load 41(inF0)
+ 491: 36(fvec3) Load 42(inF1)
+ 492: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 490 491
+ 493: 36(fvec3) Load 41(inF0)
+ 494: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 493
495: 36(fvec3) Load 41(inF0)
- 496: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 495
- 497: 36(fvec3) Load 41(inF0)
- 498: 36(fvec3) Load 42(inF1)
- 499: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 497 498
- 500: 36(fvec3) Load 41(inF0)
- 501: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 500
- 502: 36(fvec3) Load 41(inF0)
- 503: 36(fvec3) Load 42(inF1)
- 504: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 502 503
+ 496: 36(fvec3) Load 42(inF1)
+ 497: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 495 496
+ 498: 36(fvec3) Load 41(inF0)
+ 499: 36(fvec3) Load 42(inF1)
+ 500: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 498 499 354
+ 502: 410(ivec3) BitReverse 501
+ 503: 36(fvec3) Load 41(inF0)
+ 504: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 503
505: 36(fvec3) Load 41(inF0)
- 506: 36(fvec3) Load 42(inF1)
- 507: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 505 506 359
- 509: 411(ivec3) BitReverse 508
- 510: 36(fvec3) Load 41(inF0)
- 511: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 510
- 512: 36(fvec3) Load 41(inF0)
- 513: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 512
- 514: 36(fvec3) Load 41(inF0)
- 515: 36(fvec3) CompositeConstruct 223 223 223
- 516: 36(fvec3) CompositeConstruct 224 224 224
- 517: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 514 515 516
- 518: 36(fvec3) Load 41(inF0)
- 519: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 518
- 520: 36(fvec3) Load 41(inF0)
- 521: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 520
- 522: 36(fvec3) Load 41(inF0)
- 523: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 522
- Store 42(inF1) 523
- 524: 36(fvec3) Load 41(inF0)
- 525: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 524
- Store 43(inF2) 525
- 526: 36(fvec3) Load 41(inF0)
- 527: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 526
- 528: 36(fvec3) Load 41(inF0)
- 529: 36(fvec3) Load 42(inF1)
- 530: 36(fvec3) Load 43(inF2)
- 531: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 528 529 530
+ 506: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 505
+ 507: 36(fvec3) Load 41(inF0)
+ 508: 36(fvec3) CompositeConstruct 133 133 133
+ 509: 36(fvec3) CompositeConstruct 221 221 221
+ 510: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 507 508 509
+ 511: 36(fvec3) Load 41(inF0)
+ 512: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 511
+ 513: 36(fvec3) Load 41(inF0)
+ 514: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 513
+ 515: 36(fvec3) Load 41(inF0)
+ 516: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 515
+ Store 42(inF1) 516
+ 517: 36(fvec3) Load 41(inF0)
+ 518: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 517
+ Store 43(inF2) 518
+ 519: 36(fvec3) Load 41(inF0)
+ 520: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 519
+ 521: 36(fvec3) Load 41(inF0)
+ 522: 36(fvec3) Load 42(inF1)
+ 523: 36(fvec3) Load 43(inF2)
+ 524: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 521 522 523
+ 525: 36(fvec3) Load 41(inF0)
+ 526: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 525
+ 527: 36(fvec3) Load 41(inF0)
+ 528: 36(fvec3) Load 42(inF1)
+ 529: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 527 528
+ 530: 36(fvec3) Load 41(inF0)
+ 531: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 530
532: 36(fvec3) Load 41(inF0)
- 533: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 532
+ 533: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 532
534: 36(fvec3) Load 41(inF0)
- 535: 36(fvec3) Load 42(inF1)
- 536: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 534 535
- 537: 36(fvec3) Load 41(inF0)
- 538: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 537
- 539: 36(fvec3) Load 41(inF0)
- 540: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 539
- 541: 36(fvec3) Load 41(inF0)
- 542: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 541
- ReturnValue 544
+ 535: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 534
+ ReturnValue 537
FunctionEnd
58(VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4;): 48(fvec4) Function None 52
53(inF0): 49(ptr) FunctionParameter
@@ -3449,529 +3419,517 @@ Shader version: 450
56(inU0): 51(ptr) FunctionParameter
57(inU1): 51(ptr) FunctionParameter
59: Label
+ 540: 48(fvec4) Load 53(inF0)
+ 543: 541(bvec4) FOrdNotEqual 540 542
+ 544: 132(bool) All 543
+ 545: 48(fvec4) Load 53(inF0)
+ 546: 48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 545
547: 48(fvec4) Load 53(inF0)
- 548: 132(bool) All 547
+ 548: 48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 547
549: 48(fvec4) Load 53(inF0)
- 550: 48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 549
- 551: 48(fvec4) Load 53(inF0)
- 552: 48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 551
- 553: 48(fvec4) Load 53(inF0)
- 554: 132(bool) Any 553
- 555: 48(fvec4) Load 53(inF0)
- 556: 48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 555
+ 550: 541(bvec4) FOrdNotEqual 549 542
+ 551: 132(bool) Any 550
+ 552: 48(fvec4) Load 53(inF0)
+ 553: 48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 552
+ 554: 48(fvec4) Load 53(inF0)
+ 556: 555(ivec4) Bitcast 554
557: 48(fvec4) Load 53(inF0)
- 559: 558(ivec4) Bitcast 557
- 560: 48(fvec4) Load 53(inF0)
- 561: 50(ivec4) Bitcast 560
- 562: 50(ivec4) Load 56(inU0)
- 563: 48(fvec4) Bitcast 562
- 564: 48(fvec4) Load 53(inF0)
- 565: 48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 564
+ 558: 50(ivec4) Bitcast 557
+ 559: 50(ivec4) Load 56(inU0)
+ 560: 48(fvec4) Bitcast 559
+ 561: 48(fvec4) Load 53(inF0)
+ 562: 48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 561
+ 563: 48(fvec4) Load 53(inF0)
+ 564: 48(fvec4) Load 54(inF1)
+ 565: 48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 563 564
566: 48(fvec4) Load 53(inF0)
- 567: 48(fvec4) Load 54(inF1)
- 568: 48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 566 567
- 569: 48(fvec4) Load 53(inF0)
- 570: 48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 569
- 571: 48(fvec4) Load 53(inF0)
- 572: 48(fvec4) Load 54(inF1)
- 573: 48(fvec4) Load 55(inF2)
- 574: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 571 572 573
- 575: 48(fvec4) Load 53(inF0)
- 576: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 575
- 577: 48(fvec4) Load 53(inF0)
- 578: 48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 577
- 580: 558(ivec4) BitCount 579
- 581: 48(fvec4) Load 53(inF0)
- 582: 48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 581
+ 567: 48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 566
+ 568: 48(fvec4) Load 53(inF0)
+ 569: 48(fvec4) Load 54(inF1)
+ 570: 48(fvec4) Load 55(inF2)
+ 571: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 568 569 570
+ 572: 48(fvec4) Load 53(inF0)
+ 573: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 572
+ 574: 48(fvec4) Load 53(inF0)
+ 575: 48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 574
+ 577: 555(ivec4) BitCount 576
+ 578: 48(fvec4) Load 53(inF0)
+ 579: 48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 578
+ 580: 48(fvec4) Load 53(inF0)
+ 581: 48(fvec4) Load 54(inF1)
+ 582: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 580 581
583: 48(fvec4) Load 53(inF0)
584: 48(fvec4) Load 54(inF1)
- 585: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 583 584
- 586: 48(fvec4) Load 53(inF0)
- 587: 48(fvec4) Load 54(inF1)
- 588: 6(float) Dot 586 587
- 590: 7(ptr) AccessChain 53(inF0) 589
- 591: 6(float) Load 590
- 592: 7(ptr) AccessChain 54(inF1) 589
- 593: 6(float) Load 592
- 594: 6(float) FMul 591 593
- 596: 7(ptr) AccessChain 53(inF0) 595
+ 585: 6(float) Dot 583 584
+ 587: 7(ptr) AccessChain 53(inF0) 586
+ 588: 6(float) Load 587
+ 589: 7(ptr) AccessChain 54(inF1) 586
+ 590: 6(float) Load 589
+ 591: 6(float) FMul 588 590
+ 593: 7(ptr) AccessChain 53(inF0) 592
+ 594: 6(float) Load 593
+ 596: 7(ptr) AccessChain 54(inF1) 595
597: 6(float) Load 596
- 599: 7(ptr) AccessChain 54(inF1) 598
- 600: 6(float) Load 599
- 601: 48(fvec4) CompositeConstruct 224 594 597 600
- 602: 48(fvec4) Load 53(inF0)
- 603: 48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 602
- 604: 48(fvec4) Load 53(inF0)
- 605: 48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 604
- 606: 48(fvec4) Load 53(inF0)
- 607: 48(fvec4) Load 54(inF1)
- 608: 48(fvec4) Load 55(inF2)
- 609: 48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 606 607 608
- 610: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
- 611: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
- 612: 48(fvec4) Load 53(inF0)
- 613: 48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 612
+ 598: 48(fvec4) CompositeConstruct 221 591 594 597
+ 599: 48(fvec4) Load 53(inF0)
+ 600: 48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 599
+ 601: 48(fvec4) Load 53(inF0)
+ 602: 48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 601
+ 603: 48(fvec4) Load 53(inF0)
+ 604: 48(fvec4) Load 54(inF1)
+ 605: 48(fvec4) Load 55(inF2)
+ 606: 48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 603 604 605
+ 607: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
+ 608: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
+ 609: 48(fvec4) Load 53(inF0)
+ 610: 48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 609
+ 611: 48(fvec4) Load 53(inF0)
+ 612: 48(fvec4) Load 54(inF1)
+ 613: 48(fvec4) FMod 611 612
614: 48(fvec4) Load 53(inF0)
- 615: 48(fvec4) Load 54(inF1)
- 616: 48(fvec4) FMod 614 615
- 617: 48(fvec4) Load 53(inF0)
- 618: 48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 617
- 619: 48(fvec4) Load 53(inF0)
- 621:620(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 619
- 622: 558(ivec4) CompositeExtract 621 1
- Store 54(inF1) 622
- 623: 48(fvec4) CompositeExtract 621 0
- 624: 48(fvec4) Load 53(inF0)
- 626: 625(bvec4) IsInf 624
+ 615: 48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 614
+ 616: 48(fvec4) Load 53(inF0)
+ 617: 541(bvec4) IsInf 616
+ 618: 48(fvec4) Load 53(inF0)
+ 619: 541(bvec4) IsNan 618
+ 620: 48(fvec4) Load 53(inF0)
+ 621: 48(fvec4) Load 54(inF1)
+ 622: 48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 620 621
+ 623: 48(fvec4) Load 53(inF0)
+ 624: 48(fvec4) Load 54(inF1)
+ 625: 48(fvec4) Load 55(inF2)
+ 626: 48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 623 624 625
627: 48(fvec4) Load 53(inF0)
- 628: 625(bvec4) IsNan 627
+ 628: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 627
629: 48(fvec4) Load 53(inF0)
- 630: 48(fvec4) Load 54(inF1)
- 631: 48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 629 630
- 632: 48(fvec4) Load 53(inF0)
- 633: 48(fvec4) Load 54(inF1)
- 634: 48(fvec4) Load 55(inF2)
- 635: 48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 632 633 634
+ 630: 48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 629
+ 631: 48(fvec4) Load 53(inF0)
+ 632: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 631
+ 633: 48(fvec4) VectorTimesScalar 632 199
+ 634: 48(fvec4) Load 53(inF0)
+ 635: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 634
636: 48(fvec4) Load 53(inF0)
- 637: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 636
- 638: 48(fvec4) Load 53(inF0)
- 639: 48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 638
- 640: 48(fvec4) Load 53(inF0)
- 641: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 640
- 642: 48(fvec4) VectorTimesScalar 641 201
- 643: 48(fvec4) Load 53(inF0)
- 644: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 643
- 645: 48(fvec4) Load 53(inF0)
- 646: 48(fvec4) Load 54(inF1)
- 647: 48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 645 646
- 648: 48(fvec4) Load 53(inF0)
- 649: 48(fvec4) Load 54(inF1)
- 650: 48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 648 649
- 651: 48(fvec4) Load 53(inF0)
- 652: 48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 651
- 653: 48(fvec4) Load 53(inF0)
- 654: 48(fvec4) Load 54(inF1)
- 655: 48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 653 654
- 656: 48(fvec4) Load 53(inF0)
- 657: 48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 656
+ 637: 48(fvec4) Load 54(inF1)
+ 638: 48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 636 637
+ 639: 48(fvec4) Load 53(inF0)
+ 640: 48(fvec4) Load 54(inF1)
+ 641: 48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 639 640
+ 642: 48(fvec4) Load 53(inF0)
+ 643: 48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 642
+ 644: 48(fvec4) Load 53(inF0)
+ 645: 48(fvec4) Load 54(inF1)
+ 646: 48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 644 645
+ 647: 48(fvec4) Load 53(inF0)
+ 648: 48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 647
+ 649: 48(fvec4) Load 53(inF0)
+ 650: 48(fvec4) Load 54(inF1)
+ 651: 48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 649 650
+ 652: 48(fvec4) Load 53(inF0)
+ 653: 48(fvec4) Load 54(inF1)
+ 654: 48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 652 653 354
+ 657: 555(ivec4) BitReverse 656
658: 48(fvec4) Load 53(inF0)
- 659: 48(fvec4) Load 54(inF1)
- 660: 48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 658 659
- 661: 48(fvec4) Load 53(inF0)
- 662: 48(fvec4) Load 54(inF1)
- 663: 48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 661 662 359
- 666: 558(ivec4) BitReverse 665
- 667: 48(fvec4) Load 53(inF0)
- 668: 48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 667
- 669: 48(fvec4) Load 53(inF0)
- 670: 48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 669
- 671: 48(fvec4) Load 53(inF0)
- 672: 48(fvec4) CompositeConstruct 223 223 223 223
- 673: 48(fvec4) CompositeConstruct 224 224 224 224
- 674: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 671 672 673
- 675: 48(fvec4) Load 53(inF0)
- 676: 48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 675
- 677: 48(fvec4) Load 53(inF0)
- 678: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 677
- 679: 48(fvec4) Load 53(inF0)
- 680: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 679
- Store 54(inF1) 680
- 681: 48(fvec4) Load 53(inF0)
- 682: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 681
- Store 55(inF2) 682
- 683: 48(fvec4) Load 53(inF0)
- 684: 48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 683
+ 659: 48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 658
+ 660: 48(fvec4) Load 53(inF0)
+ 661: 48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 660
+ 662: 48(fvec4) Load 53(inF0)
+ 663: 48(fvec4) CompositeConstruct 133 133 133 133
+ 664: 48(fvec4) CompositeConstruct 221 221 221 221
+ 665: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 662 663 664
+ 666: 48(fvec4) Load 53(inF0)
+ 667: 48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 666
+ 668: 48(fvec4) Load 53(inF0)
+ 669: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 668
+ 670: 48(fvec4) Load 53(inF0)
+ 671: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 670
+ Store 54(inF1) 671
+ 672: 48(fvec4) Load 53(inF0)
+ 673: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 672
+ Store 55(inF2) 673
+ 674: 48(fvec4) Load 53(inF0)
+ 675: 48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 674
+ 676: 48(fvec4) Load 53(inF0)
+ 677: 48(fvec4) Load 54(inF1)
+ 678: 48(fvec4) Load 55(inF2)
+ 679: 48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 676 677 678
+ 680: 48(fvec4) Load 53(inF0)
+ 681: 48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 680
+ 682: 48(fvec4) Load 53(inF0)
+ 683: 48(fvec4) Load 54(inF1)
+ 684: 48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 682 683
685: 48(fvec4) Load 53(inF0)
- 686: 48(fvec4) Load 54(inF1)
- 687: 48(fvec4) Load 55(inF2)
- 688: 48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 685 686 687
+ 686: 48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 685
+ 687: 48(fvec4) Load 53(inF0)
+ 688: 48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 687
689: 48(fvec4) Load 53(inF0)
- 690: 48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 689
- 691: 48(fvec4) Load 53(inF0)
- 692: 48(fvec4) Load 54(inF1)
- 693: 48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 691 692
- 694: 48(fvec4) Load 53(inF0)
- 695: 48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 694
- 696: 48(fvec4) Load 53(inF0)
- 697: 48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 696
- 698: 48(fvec4) Load 53(inF0)
- 699: 48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 698
- ReturnValue 701
+ 690: 48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 689
+ ReturnValue 692
FunctionEnd
66(VertexShaderFunction2x2(mf22;mf22;mf22;): 60 Function None 62
63(inF0): 61(ptr) FunctionParameter
64(inF1): 61(ptr) FunctionParameter
65(inF2): 61(ptr) FunctionParameter
67: Label
- 704: 60 Load 63(inF0)
- 705: 132(bool) All 704
+ 695: 60 Load 63(inF0)
+ 697: 696 FOrdNotEqual 695 133
+ 698: 132(bool) All 697
+ 699: 60 Load 63(inF0)
+ 700: 60 ExtInst 1(GLSL.std.450) 4(FAbs) 699
+ 701: 60 Load 63(inF0)
+ 702: 60 ExtInst 1(GLSL.std.450) 17(Acos) 701
+ 703: 60 Load 63(inF0)
+ 704: 696 FOrdNotEqual 703 133
+ 705: 132(bool) Any 704
706: 60 Load 63(inF0)
- 707: 60 ExtInst 1(GLSL.std.450) 4(FAbs) 706
+ 707: 60 ExtInst 1(GLSL.std.450) 16(Asin) 706
708: 60 Load 63(inF0)
- 709: 60 ExtInst 1(GLSL.std.450) 17(Acos) 708
+ 709: 60 ExtInst 1(GLSL.std.450) 18(Atan) 708
710: 60 Load 63(inF0)
- 711: 132(bool) Any 710
- 712: 60 Load 63(inF0)
- 713: 60 ExtInst 1(GLSL.std.450) 16(Asin) 712
- 714: 60 Load 63(inF0)
- 715: 60 ExtInst 1(GLSL.std.450) 18(Atan) 714
- 716: 60 Load 63(inF0)
- 717: 60 Load 64(inF1)
- 718: 60 ExtInst 1(GLSL.std.450) 25(Atan2) 716 717
+ 711: 60 Load 64(inF1)
+ 712: 60 ExtInst 1(GLSL.std.450) 25(Atan2) 710 711
+ 713: 60 Load 63(inF0)
+ 714: 60 ExtInst 1(GLSL.std.450) 9(Ceil) 713
+ 715: 60 Load 63(inF0)
+ 716: 60 Load 64(inF1)
+ 717: 60 Load 65(inF2)
+ 718: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 715 716 717
719: 60 Load 63(inF0)
- 720: 60 ExtInst 1(GLSL.std.450) 9(Ceil) 719
+ 720: 60 ExtInst 1(GLSL.std.450) 14(Cos) 719
721: 60 Load 63(inF0)
- 722: 60 Load 64(inF1)
- 723: 60 Load 65(inF2)
- 724: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 721 722 723
+ 722: 60 ExtInst 1(GLSL.std.450) 20(Cosh) 721
+ 723: 60 Load 63(inF0)
+ 724: 60 ExtInst 1(GLSL.std.450) 12(Degrees) 723
725: 60 Load 63(inF0)
- 726: 60 ExtInst 1(GLSL.std.450) 14(Cos) 725
+ 726: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 725
727: 60 Load 63(inF0)
- 728: 60 ExtInst 1(GLSL.std.450) 20(Cosh) 727
+ 728: 60 ExtInst 1(GLSL.std.450) 27(Exp) 727
729: 60 Load 63(inF0)
- 730: 60 ExtInst 1(GLSL.std.450) 12(Degrees) 729
- 731: 60 Load 63(inF0)
- 732: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 731
+ 730: 60 ExtInst 1(GLSL.std.450) 29(Exp2) 729
+ 731: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
+ 732: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
733: 60 Load 63(inF0)
- 734: 60 ExtInst 1(GLSL.std.450) 27(Exp) 733
+ 734: 60 ExtInst 1(GLSL.std.450) 8(Floor) 733
735: 60 Load 63(inF0)
- 736: 60 ExtInst 1(GLSL.std.450) 29(Exp2) 735
- 737: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
- 738: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
- 739: 60 Load 63(inF0)
- 740: 60 ExtInst 1(GLSL.std.450) 8(Floor) 739
- 741: 60 Load 63(inF0)
- 742: 60 Load 64(inF1)
- 743: 24(fvec2) CompositeExtract 741 0
- 744: 24(fvec2) CompositeExtract 742 0
- 745: 24(fvec2) FMod 743 744
- 746: 24(fvec2) CompositeExtract 741 1
- 747: 24(fvec2) CompositeExtract 742 1
- 748: 24(fvec2) FMod 746 747
- 749: 60 CompositeConstruct 745 748
- 750: 60 Load 63(inF0)
- 751: 60 ExtInst 1(GLSL.std.450) 10(Fract) 750
- 752: 60 Load 63(inF0)
- 754:753(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 752
- 755: 266(ivec2) CompositeExtract 754 1
- Store 64(inF1) 755
- 756: 60 CompositeExtract 754 0
- 757: 60 Load 63(inF0)
- 758: 60 Load 64(inF1)
- 759: 60 ExtInst 1(GLSL.std.450) 53(Ldexp) 757 758
+ 736: 60 Load 64(inF1)
+ 737: 24(fvec2) CompositeExtract 735 0
+ 738: 24(fvec2) CompositeExtract 736 0
+ 739: 24(fvec2) FMod 737 738
+ 740: 24(fvec2) CompositeExtract 735 1
+ 741: 24(fvec2) CompositeExtract 736 1
+ 742: 24(fvec2) FMod 740 741
+ 743: 60 CompositeConstruct 739 742
+ 744: 60 Load 63(inF0)
+ 745: 60 ExtInst 1(GLSL.std.450) 10(Fract) 744
+ 746: 60 Load 63(inF0)
+ 747: 60 Load 64(inF1)
+ 748: 60 ExtInst 1(GLSL.std.450) 53(Ldexp) 746 747
+ 749: 60 Load 63(inF0)
+ 750: 60 Load 64(inF1)
+ 751: 60 Load 65(inF2)
+ 752: 60 ExtInst 1(GLSL.std.450) 46(FMix) 749 750 751
+ 753: 60 Load 63(inF0)
+ 754: 60 ExtInst 1(GLSL.std.450) 28(Log) 753
+ 755: 60 Load 63(inF0)
+ 756: 60 ExtInst 1(GLSL.std.450) 30(Log2) 755
+ 757: 60 MatrixTimesScalar 756 199
+ 758: 60 Load 63(inF0)
+ 759: 60 ExtInst 1(GLSL.std.450) 30(Log2) 758
760: 60 Load 63(inF0)
761: 60 Load 64(inF1)
- 762: 60 Load 65(inF2)
- 763: 60 ExtInst 1(GLSL.std.450) 46(FMix) 760 761 762
- 764: 60 Load 63(inF0)
- 765: 60 ExtInst 1(GLSL.std.450) 28(Log) 764
+ 762: 60 ExtInst 1(GLSL.std.450) 40(FMax) 760 761
+ 763: 60 Load 63(inF0)
+ 764: 60 Load 64(inF1)
+ 765: 60 ExtInst 1(GLSL.std.450) 37(FMin) 763 764
766: 60 Load 63(inF0)
- 767: 60 ExtInst 1(GLSL.std.450) 30(Log2) 766
- 768: 60 MatrixTimesScalar 767 201
+ 767: 60 Load 64(inF1)
+ 768: 60 ExtInst 1(GLSL.std.450) 26(Pow) 766 767
769: 60 Load 63(inF0)
- 770: 60 ExtInst 1(GLSL.std.450) 30(Log2) 769
+ 770: 60 ExtInst 1(GLSL.std.450) 11(Radians) 769
771: 60 Load 63(inF0)
- 772: 60 Load 64(inF1)
- 773: 60 ExtInst 1(GLSL.std.450) 40(FMax) 771 772
- 774: 60 Load 63(inF0)
- 775: 60 Load 64(inF1)
- 776: 60 ExtInst 1(GLSL.std.450) 37(FMin) 774 775
- 777: 60 Load 63(inF0)
- 778: 60 Load 64(inF1)
- 779: 60 ExtInst 1(GLSL.std.450) 26(Pow) 777 778
- 780: 60 Load 63(inF0)
- 781: 60 ExtInst 1(GLSL.std.450) 11(Radians) 780
- 782: 60 Load 63(inF0)
- 783: 60 ExtInst 1(GLSL.std.450) 2(RoundEven) 782
- 784: 60 Load 63(inF0)
- 785: 60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 784
- 786: 60 Load 63(inF0)
- 787: 24(fvec2) CompositeConstruct 223 223
- 788: 24(fvec2) CompositeConstruct 224 224
- 789: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 786 787 788
- 790: 60 Load 63(inF0)
- 791: 60 ExtInst 1(GLSL.std.450) 6(FSign) 790
- 792: 60 Load 63(inF0)
- 793: 60 ExtInst 1(GLSL.std.450) 13(Sin) 792
- 794: 60 Load 63(inF0)
- 795: 60 ExtInst 1(GLSL.std.450) 13(Sin) 794
- Store 64(inF1) 795
- 796: 60 Load 63(inF0)
- 797: 60 ExtInst 1(GLSL.std.450) 14(Cos) 796
- Store 65(inF2) 797
+ 772: 60 ExtInst 1(GLSL.std.450) 2(RoundEven) 771
+ 773: 60 Load 63(inF0)
+ 774: 60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 773
+ 775: 60 Load 63(inF0)
+ 776: 24(fvec2) CompositeConstruct 133 133
+ 777: 24(fvec2) CompositeConstruct 221 221
+ 778: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 775 776 777
+ 779: 60 Load 63(inF0)
+ 780: 60 ExtInst 1(GLSL.std.450) 6(FSign) 779
+ 781: 60 Load 63(inF0)
+ 782: 60 ExtInst 1(GLSL.std.450) 13(Sin) 781
+ 783: 60 Load 63(inF0)
+ 784: 60 ExtInst 1(GLSL.std.450) 13(Sin) 783
+ Store 64(inF1) 784
+ 785: 60 Load 63(inF0)
+ 786: 60 ExtInst 1(GLSL.std.450) 14(Cos) 785
+ Store 65(inF2) 786
+ 787: 60 Load 63(inF0)
+ 788: 60 ExtInst 1(GLSL.std.450) 19(Sinh) 787
+ 789: 60 Load 63(inF0)
+ 790: 60 Load 64(inF1)
+ 791: 60 Load 65(inF2)
+ 792: 60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 789 790 791
+ 793: 60 Load 63(inF0)
+ 794: 60 ExtInst 1(GLSL.std.450) 31(Sqrt) 793
+ 795: 60 Load 63(inF0)
+ 796: 60 Load 64(inF1)
+ 797: 60 ExtInst 1(GLSL.std.450) 48(Step) 795 796
798: 60 Load 63(inF0)
- 799: 60 ExtInst 1(GLSL.std.450) 19(Sinh) 798
+ 799: 60 ExtInst 1(GLSL.std.450) 15(Tan) 798
800: 60 Load 63(inF0)
- 801: 60 Load 64(inF1)
- 802: 60 Load 65(inF2)
- 803: 60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 800 801 802
+ 801: 60 ExtInst 1(GLSL.std.450) 21(Tanh) 800
+ 802: 60 Load 63(inF0)
+ 803: 60 Transpose 802
804: 60 Load 63(inF0)
- 805: 60 ExtInst 1(GLSL.std.450) 31(Sqrt) 804
- 806: 60 Load 63(inF0)
- 807: 60 Load 64(inF1)
- 808: 60 ExtInst 1(GLSL.std.450) 48(Step) 806 807
- 809: 60 Load 63(inF0)
- 810: 60 ExtInst 1(GLSL.std.450) 15(Tan) 809
- 811: 60 Load 63(inF0)
- 812: 60 ExtInst 1(GLSL.std.450) 21(Tanh) 811
- 813: 60 Load 63(inF0)
- 814: 60 Transpose 813
- 815: 60 Load 63(inF0)
- 816: 60 ExtInst 1(GLSL.std.450) 3(Trunc) 815
- ReturnValue 818
+ 805: 60 ExtInst 1(GLSL.std.450) 3(Trunc) 804
+ ReturnValue 807
FunctionEnd
74(VertexShaderFunction3x3(mf33;mf33;mf33;): 68 Function None 70
71(inF0): 69(ptr) FunctionParameter
72(inF1): 69(ptr) FunctionParameter
73(inF2): 69(ptr) FunctionParameter
75: Label
+ 810: 68 Load 71(inF0)
+ 812: 811 FOrdNotEqual 810 133
+ 813: 132(bool) All 812
+ 814: 68 Load 71(inF0)
+ 815: 68 ExtInst 1(GLSL.std.450) 4(FAbs) 814
+ 816: 68 Load 71(inF0)
+ 817: 68 ExtInst 1(GLSL.std.450) 17(Acos) 816
+ 818: 68 Load 71(inF0)
+ 819: 811 FOrdNotEqual 818 133
+ 820: 132(bool) Any 819
821: 68 Load 71(inF0)
- 822: 132(bool) All 821
+ 822: 68 ExtInst 1(GLSL.std.450) 16(Asin) 821
823: 68 Load 71(inF0)
- 824: 68 ExtInst 1(GLSL.std.450) 4(FAbs) 823
+ 824: 68 ExtInst 1(GLSL.std.450) 18(Atan) 823
825: 68 Load 71(inF0)
- 826: 68 ExtInst 1(GLSL.std.450) 17(Acos) 825
- 827: 68 Load 71(inF0)
- 828: 132(bool) Any 827
- 829: 68 Load 71(inF0)
- 830: 68 ExtInst 1(GLSL.std.450) 16(Asin) 829
- 831: 68 Load 71(inF0)
- 832: 68 ExtInst 1(GLSL.std.450) 18(Atan) 831
- 833: 68 Load 71(inF0)
- 834: 68 Load 72(inF1)
- 835: 68 ExtInst 1(GLSL.std.450) 25(Atan2) 833 834
+ 826: 68 Load 72(inF1)
+ 827: 68 ExtInst 1(GLSL.std.450) 25(Atan2) 825 826
+ 828: 68 Load 71(inF0)
+ 829: 68 ExtInst 1(GLSL.std.450) 9(Ceil) 828
+ 830: 68 Load 71(inF0)
+ 831: 68 Load 72(inF1)
+ 832: 68 Load 73(inF2)
+ 833: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 830 831 832
+ 834: 68 Load 71(inF0)
+ 835: 68 ExtInst 1(GLSL.std.450) 14(Cos) 834
836: 68 Load 71(inF0)
- 837: 68 ExtInst 1(GLSL.std.450) 9(Ceil) 836
+ 837: 68 ExtInst 1(GLSL.std.450) 20(Cosh) 836
838: 68 Load 71(inF0)
- 839: 68 Load 72(inF1)
- 840: 68 Load 73(inF2)
- 841: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 838 839 840
+ 839: 68 ExtInst 1(GLSL.std.450) 12(Degrees) 838
+ 840: 68 Load 71(inF0)
+ 841: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 840
842: 68 Load 71(inF0)
- 843: 68 ExtInst 1(GLSL.std.450) 14(Cos) 842
+ 843: 68 ExtInst 1(GLSL.std.450) 27(Exp) 842
844: 68 Load 71(inF0)
- 845: 68 ExtInst 1(GLSL.std.450) 20(Cosh) 844
- 846: 68 Load 71(inF0)
- 847: 68 ExtInst 1(GLSL.std.450) 12(Degrees) 846
+ 845: 68 ExtInst 1(GLSL.std.450) 29(Exp2) 844
+ 846: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
+ 847: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
848: 68 Load 71(inF0)
- 849: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 848
+ 849: 68 ExtInst 1(GLSL.std.450) 8(Floor) 848
850: 68 Load 71(inF0)
- 851: 68 ExtInst 1(GLSL.std.450) 27(Exp) 850
- 852: 68 Load 71(inF0)
- 853: 68 ExtInst 1(GLSL.std.450) 29(Exp2) 852
- 854: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
- 855: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
- 856: 68 Load 71(inF0)
- 857: 68 ExtInst 1(GLSL.std.450) 8(Floor) 856
- 858: 68 Load 71(inF0)
- 859: 68 Load 72(inF1)
- 860: 36(fvec3) CompositeExtract 858 0
- 861: 36(fvec3) CompositeExtract 859 0
- 862: 36(fvec3) FMod 860 861
- 863: 36(fvec3) CompositeExtract 858 1
- 864: 36(fvec3) CompositeExtract 859 1
- 865: 36(fvec3) FMod 863 864
- 866: 36(fvec3) CompositeExtract 858 2
- 867: 36(fvec3) CompositeExtract 859 2
- 868: 36(fvec3) FMod 866 867
- 869: 68 CompositeConstruct 862 865 868
- 870: 68 Load 71(inF0)
- 871: 68 ExtInst 1(GLSL.std.450) 10(Fract) 870
- 872: 68 Load 71(inF0)
- 874:873(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 872
- 875: 411(ivec3) CompositeExtract 874 1
- Store 72(inF1) 875
- 876: 68 CompositeExtract 874 0
- 877: 68 Load 71(inF0)
- 878: 68 Load 72(inF1)
- 879: 68 ExtInst 1(GLSL.std.450) 53(Ldexp) 877 878
- 880: 68 Load 71(inF0)
- 881: 68 Load 72(inF1)
- 882: 68 Load 73(inF2)
- 883: 68 ExtInst 1(GLSL.std.450) 46(FMix) 880 881 882
+ 851: 68 Load 72(inF1)
+ 852: 36(fvec3) CompositeExtract 850 0
+ 853: 36(fvec3) CompositeExtract 851 0
+ 854: 36(fvec3) FMod 852 853
+ 855: 36(fvec3) CompositeExtract 850 1
+ 856: 36(fvec3) CompositeExtract 851 1
+ 857: 36(fvec3) FMod 855 856
+ 858: 36(fvec3) CompositeExtract 850 2
+ 859: 36(fvec3) CompositeExtract 851 2
+ 860: 36(fvec3) FMod 858 859
+ 861: 68 CompositeConstruct 854 857 860
+ 862: 68 Load 71(inF0)
+ 863: 68 ExtInst 1(GLSL.std.450) 10(Fract) 862
+ 864: 68 Load 71(inF0)
+ 865: 68 Load 72(inF1)
+ 866: 68 ExtInst 1(GLSL.std.450) 53(Ldexp) 864 865
+ 867: 68 Load 71(inF0)
+ 868: 68 Load 72(inF1)
+ 869: 68 Load 73(inF2)
+ 870: 68 ExtInst 1(GLSL.std.450) 46(FMix) 867 868 869
+ 871: 68 Load 71(inF0)
+ 872: 68 ExtInst 1(GLSL.std.450) 28(Log) 871
+ 873: 68 Load 71(inF0)
+ 874: 68 ExtInst 1(GLSL.std.450) 30(Log2) 873
+ 875: 68 MatrixTimesScalar 874 199
+ 876: 68 Load 71(inF0)
+ 877: 68 ExtInst 1(GLSL.std.450) 30(Log2) 876
+ 878: 68 Load 71(inF0)
+ 879: 68 Load 72(inF1)
+ 880: 68 ExtInst 1(GLSL.std.450) 40(FMax) 878 879
+ 881: 68 Load 71(inF0)
+ 882: 68 Load 72(inF1)
+ 883: 68 ExtInst 1(GLSL.std.450) 37(FMin) 881 882
884: 68 Load 71(inF0)
- 885: 68 ExtInst 1(GLSL.std.450) 28(Log) 884
- 886: 68 Load 71(inF0)
- 887: 68 ExtInst 1(GLSL.std.450) 30(Log2) 886
- 888: 68 MatrixTimesScalar 887 201
+ 885: 68 Load 72(inF1)
+ 886: 68 ExtInst 1(GLSL.std.450) 26(Pow) 884 885
+ 887: 68 Load 71(inF0)
+ 888: 68 ExtInst 1(GLSL.std.450) 11(Radians) 887
889: 68 Load 71(inF0)
- 890: 68 ExtInst 1(GLSL.std.450) 30(Log2) 889
+ 890: 68 ExtInst 1(GLSL.std.450) 2(RoundEven) 889
891: 68 Load 71(inF0)
- 892: 68 Load 72(inF1)
- 893: 68 ExtInst 1(GLSL.std.450) 40(FMax) 891 892
- 894: 68 Load 71(inF0)
- 895: 68 Load 72(inF1)
- 896: 68 ExtInst 1(GLSL.std.450) 37(FMin) 894 895
+ 892: 68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 891
+ 893: 68 Load 71(inF0)
+ 894: 36(fvec3) CompositeConstruct 133 133 133
+ 895: 36(fvec3) CompositeConstruct 221 221 221
+ 896: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 893 894 895
897: 68 Load 71(inF0)
- 898: 68 Load 72(inF1)
- 899: 68 ExtInst 1(GLSL.std.450) 26(Pow) 897 898
- 900: 68 Load 71(inF0)
- 901: 68 ExtInst 1(GLSL.std.450) 11(Radians) 900
- 902: 68 Load 71(inF0)
- 903: 68 ExtInst 1(GLSL.std.450) 2(RoundEven) 902
- 904: 68 Load 71(inF0)
- 905: 68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 904
- 906: 68 Load 71(inF0)
- 907: 36(fvec3) CompositeConstruct 223 223 223
- 908: 36(fvec3) CompositeConstruct 224 224 224
- 909: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 906 907 908
- 910: 68 Load 71(inF0)
- 911: 68 ExtInst 1(GLSL.std.450) 6(FSign) 910
- 912: 68 Load 71(inF0)
- 913: 68 ExtInst 1(GLSL.std.450) 13(Sin) 912
- 914: 68 Load 71(inF0)
- 915: 68 ExtInst 1(GLSL.std.450) 13(Sin) 914
- Store 72(inF1) 915
+ 898: 68 ExtInst 1(GLSL.std.450) 6(FSign) 897
+ 899: 68 Load 71(inF0)
+ 900: 68 ExtInst 1(GLSL.std.450) 13(Sin) 899
+ 901: 68 Load 71(inF0)
+ 902: 68 ExtInst 1(GLSL.std.450) 13(Sin) 901
+ Store 72(inF1) 902
+ 903: 68 Load 71(inF0)
+ 904: 68 ExtInst 1(GLSL.std.450) 14(Cos) 903
+ Store 73(inF2) 904
+ 905: 68 Load 71(inF0)
+ 906: 68 ExtInst 1(GLSL.std.450) 19(Sinh) 905
+ 907: 68 Load 71(inF0)
+ 908: 68 Load 72(inF1)
+ 909: 68 Load 73(inF2)
+ 910: 68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 907 908 909
+ 911: 68 Load 71(inF0)
+ 912: 68 ExtInst 1(GLSL.std.450) 31(Sqrt) 911
+ 913: 68 Load 71(inF0)
+ 914: 68 Load 72(inF1)
+ 915: 68 ExtInst 1(GLSL.std.450) 48(Step) 913 914
916: 68 Load 71(inF0)
- 917: 68 ExtInst 1(GLSL.std.450) 14(Cos) 916
- Store 73(inF2) 917
+ 917: 68 ExtInst 1(GLSL.std.450) 15(Tan) 916
918: 68 Load 71(inF0)
- 919: 68 ExtInst 1(GLSL.std.450) 19(Sinh) 918
+ 919: 68 ExtInst 1(GLSL.std.450) 21(Tanh) 918
920: 68 Load 71(inF0)
- 921: 68 Load 72(inF1)
- 922: 68 Load 73(inF2)
- 923: 68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 920 921 922
- 924: 68 Load 71(inF0)
- 925: 68 ExtInst 1(GLSL.std.450) 31(Sqrt) 924
- 926: 68 Load 71(inF0)
- 927: 68 Load 72(inF1)
- 928: 68 ExtInst 1(GLSL.std.450) 48(Step) 926 927
- 929: 68 Load 71(inF0)
- 930: 68 ExtInst 1(GLSL.std.450) 15(Tan) 929
- 931: 68 Load 71(inF0)
- 932: 68 ExtInst 1(GLSL.std.450) 21(Tanh) 931
- 933: 68 Load 71(inF0)
- 934: 68 Transpose 933
- 935: 68 Load 71(inF0)
- 936: 68 ExtInst 1(GLSL.std.450) 3(Trunc) 935
- ReturnValue 938
+ 921: 68 Transpose 920
+ 922: 68 Load 71(inF0)
+ 923: 68 ExtInst 1(GLSL.std.450) 3(Trunc) 922
+ ReturnValue 925
FunctionEnd
82(VertexShaderFunction4x4(mf44;mf44;mf44;): 76 Function None 78
79(inF0): 77(ptr) FunctionParameter
80(inF1): 77(ptr) FunctionParameter
81(inF2): 77(ptr) FunctionParameter
83: Label
+ 928: 76 Load 79(inF0)
+ 930: 929 FOrdNotEqual 928 133
+ 931: 132(bool) All 930
+ 932: 76 Load 79(inF0)
+ 933: 76 ExtInst 1(GLSL.std.450) 4(FAbs) 932
+ 934: 76 Load 79(inF0)
+ 935: 76 ExtInst 1(GLSL.std.450) 17(Acos) 934
+ 936: 76 Load 79(inF0)
+ 937: 929 FOrdNotEqual 936 133
+ 938: 132(bool) Any 937
+ 939: 76 Load 79(inF0)
+ 940: 76 ExtInst 1(GLSL.std.450) 16(Asin) 939
941: 76 Load 79(inF0)
- 942: 132(bool) All 941
+ 942: 76 ExtInst 1(GLSL.std.450) 18(Atan) 941
943: 76 Load 79(inF0)
- 944: 76 ExtInst 1(GLSL.std.450) 4(FAbs) 943
- 945: 76 Load 79(inF0)
- 946: 76 ExtInst 1(GLSL.std.450) 17(Acos) 945
- 947: 76 Load 79(inF0)
- 948: 132(bool) Any 947
- 949: 76 Load 79(inF0)
- 950: 76 ExtInst 1(GLSL.std.450) 16(Asin) 949
- 951: 76 Load 79(inF0)
- 952: 76 ExtInst 1(GLSL.std.450) 18(Atan) 951
- 953: 76 Load 79(inF0)
- 954: 76 Load 80(inF1)
- 955: 76 ExtInst 1(GLSL.std.450) 25(Atan2) 953 954
+ 944: 76 Load 80(inF1)
+ 945: 76 ExtInst 1(GLSL.std.450) 25(Atan2) 943 944
+ 946: 76 Load 79(inF0)
+ 947: 76 ExtInst 1(GLSL.std.450) 9(Ceil) 946
+ 948: 76 Load 79(inF0)
+ 949: 76 Load 80(inF1)
+ 950: 76 Load 81(inF2)
+ 951: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 948 949 950
+ 952: 76 Load 79(inF0)
+ 953: 76 ExtInst 1(GLSL.std.450) 14(Cos) 952
+ 954: 76 Load 79(inF0)
+ 955: 76 ExtInst 1(GLSL.std.450) 20(Cosh) 954
956: 76 Load 79(inF0)
- 957: 76 ExtInst 1(GLSL.std.450) 9(Ceil) 956
+ 957: 76 ExtInst 1(GLSL.std.450) 12(Degrees) 956
958: 76 Load 79(inF0)
- 959: 76 Load 80(inF1)
- 960: 76 Load 81(inF2)
- 961: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 958 959 960
+ 959: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 958
+ 960: 76 Load 79(inF0)
+ 961: 76 ExtInst 1(GLSL.std.450) 27(Exp) 960
962: 76 Load 79(inF0)
- 963: 76 ExtInst 1(GLSL.std.450) 14(Cos) 962
- 964: 76 Load 79(inF0)
- 965: 76 ExtInst 1(GLSL.std.450) 20(Cosh) 964
+ 963: 76 ExtInst 1(GLSL.std.450) 29(Exp2) 962
+ 964: 146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
+ 965: 146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
966: 76 Load 79(inF0)
- 967: 76 ExtInst 1(GLSL.std.450) 12(Degrees) 966
+ 967: 76 ExtInst 1(GLSL.std.450) 8(Floor) 966
968: 76 Load 79(inF0)
- 969: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 968
- 970: 76 Load 79(inF0)
- 971: 76 ExtInst 1(GLSL.std.450) 27(Exp) 970
- 972: 76 Load 79(inF0)
- 973: 76 ExtInst 1(GLSL.std.450) 29(Exp2) 972
- 974: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
- 975: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
- 976: 76 Load 79(inF0)
- 977: 76 ExtInst 1(GLSL.std.450) 8(Floor) 976
- 978: 76 Load 79(inF0)
- 979: 76 Load 80(inF1)
- 980: 48(fvec4) CompositeExtract 978 0
- 981: 48(fvec4) CompositeExtract 979 0
- 982: 48(fvec4) FMod 980 981
- 983: 48(fvec4) CompositeExtract 978 1
- 984: 48(fvec4) CompositeExtract 979 1
- 985: 48(fvec4) FMod 983 984
- 986: 48(fvec4) CompositeExtract 978 2
- 987: 48(fvec4) CompositeExtract 979 2
- 988: 48(fvec4) FMod 986 987
- 989: 48(fvec4) CompositeExtract 978 3
- 990: 48(fvec4) CompositeExtract 979 3
- 991: 48(fvec4) FMod 989 990
- 992: 76 CompositeConstruct 982 985 988 991
- 993: 76 Load 79(inF0)
- 994: 76 ExtInst 1(GLSL.std.450) 10(Fract) 993
- 995: 76 Load 79(inF0)
- 997:996(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 995
- 998: 558(ivec4) CompositeExtract 997 1
- Store 80(inF1) 998
- 999: 76 CompositeExtract 997 0
- 1000: 76 Load 79(inF0)
- 1001: 76 Load 80(inF1)
- 1002: 76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1000 1001
- 1003: 76 Load 79(inF0)
- 1004: 76 Load 80(inF1)
- 1005: 76 Load 81(inF2)
- 1006: 76 ExtInst 1(GLSL.std.450) 46(FMix) 1003 1004 1005
- 1007: 76 Load 79(inF0)
- 1008: 76 ExtInst 1(GLSL.std.450) 28(Log) 1007
- 1009: 76 Load 79(inF0)
- 1010: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1009
- 1011: 76 MatrixTimesScalar 1010 201
+ 969: 76 Load 80(inF1)
+ 970: 48(fvec4) CompositeExtract 968 0
+ 971: 48(fvec4) CompositeExtract 969 0
+ 972: 48(fvec4) FMod 970 971
+ 973: 48(fvec4) CompositeExtract 968 1
+ 974: 48(fvec4) CompositeExtract 969 1
+ 975: 48(fvec4) FMod 973 974
+ 976: 48(fvec4) CompositeExtract 968 2
+ 977: 48(fvec4) CompositeExtract 969 2
+ 978: 48(fvec4) FMod 976 977
+ 979: 48(fvec4) CompositeExtract 968 3
+ 980: 48(fvec4) CompositeExtract 969 3
+ 981: 48(fvec4) FMod 979 980
+ 982: 76 CompositeConstruct 972 975 978 981
+ 983: 76 Load 79(inF0)
+ 984: 76 ExtInst 1(GLSL.std.450) 10(Fract) 983
+ 985: 76 Load 79(inF0)
+ 986: 76 Load 80(inF1)
+ 987: 76 ExtInst 1(GLSL.std.450) 53(Ldexp) 985 986
+ 988: 76 Load 79(inF0)
+ 989: 76 Load 80(inF1)
+ 990: 76 Load 81(inF2)
+ 991: 76 ExtInst 1(GLSL.std.450) 46(FMix) 988 989 990
+ 992: 76 Load 79(inF0)
+ 993: 76 ExtInst 1(GLSL.std.450) 28(Log) 992
+ 994: 76 Load 79(inF0)
+ 995: 76 ExtInst 1(GLSL.std.450) 30(Log2) 994
+ 996: 76 MatrixTimesScalar 995 199
+ 997: 76 Load 79(inF0)
+ 998: 76 ExtInst 1(GLSL.std.450) 30(Log2) 997
+ 999: 76 Load 79(inF0)
+ 1000: 76 Load 80(inF1)
+ 1001: 76 ExtInst 1(GLSL.std.450) 40(FMax) 999 1000
+ 1002: 76 Load 79(inF0)
+ 1003: 76 Load 80(inF1)
+ 1004: 76 ExtInst 1(GLSL.std.450) 37(FMin) 1002 1003
+ 1005: 76 Load 79(inF0)
+ 1006: 76 Load 80(inF1)
+ 1007: 76 ExtInst 1(GLSL.std.450) 26(Pow) 1005 1006
+ 1008: 76 Load 79(inF0)
+ 1009: 76 ExtInst 1(GLSL.std.450) 11(Radians) 1008
+ 1010: 76 Load 79(inF0)
+ 1011: 76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1010
1012: 76 Load 79(inF0)
- 1013: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1012
+ 1013: 76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1012
1014: 76 Load 79(inF0)
- 1015: 76 Load 80(inF1)
- 1016: 76 ExtInst 1(GLSL.std.450) 40(FMax) 1014 1015
- 1017: 76 Load 79(inF0)
- 1018: 76 Load 80(inF1)
- 1019: 76 ExtInst 1(GLSL.std.450) 37(FMin) 1017 1018
+ 1015: 48(fvec4) CompositeConstruct 133 133 133 133
+ 1016: 48(fvec4) CompositeConstruct 221 221 221 221
+ 1017: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1014 1015 1016
+ 1018: 76 Load 79(inF0)
+ 1019: 76 ExtInst 1(GLSL.std.450) 6(FSign) 1018
1020: 76 Load 79(inF0)
- 1021: 76 Load 80(inF1)
- 1022: 76 ExtInst 1(GLSL.std.450) 26(Pow) 1020 1021
- 1023: 76 Load 79(inF0)
- 1024: 76 ExtInst 1(GLSL.std.450) 11(Radians) 1023
- 1025: 76 Load 79(inF0)
- 1026: 76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1025
- 1027: 76 Load 79(inF0)
- 1028: 76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1027
- 1029: 76 Load 79(inF0)
- 1030: 48(fvec4) CompositeConstruct 223 223 223 223
- 1031: 48(fvec4) CompositeConstruct 224 224 224 224
- 1032: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1029 1030 1031
- 1033: 76 Load 79(inF0)
- 1034: 76 ExtInst 1(GLSL.std.450) 6(FSign) 1033
- 1035: 76 Load 79(inF0)
- 1036: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1035
+ 1021: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1020
+ 1022: 76 Load 79(inF0)
+ 1023: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1022
+ Store 80(inF1) 1023
+ 1024: 76 Load 79(inF0)
+ 1025: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1024
+ Store 81(inF2) 1025
+ 1026: 76 Load 79(inF0)
+ 1027: 76 ExtInst 1(GLSL.std.450) 19(Sinh) 1026
+ 1028: 76 Load 79(inF0)
+ 1029: 76 Load 80(inF1)
+ 1030: 76 Load 81(inF2)
+ 1031: 76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1028 1029 1030
+ 1032: 76 Load 79(inF0)
+ 1033: 76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1032
+ 1034: 76 Load 79(inF0)
+ 1035: 76 Load 80(inF1)
+ 1036: 76 ExtInst 1(GLSL.std.450) 48(Step) 1034 1035
1037: 76 Load 79(inF0)
- 1038: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1037
- Store 80(inF1) 1038
+ 1038: 76 ExtInst 1(GLSL.std.450) 15(Tan) 1037
1039: 76 Load 79(inF0)
- 1040: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1039
- Store 81(inF2) 1040
+ 1040: 76 ExtInst 1(GLSL.std.450) 21(Tanh) 1039
1041: 76 Load 79(inF0)
- 1042: 76 ExtInst 1(GLSL.std.450) 19(Sinh) 1041
+ 1042: 76 Transpose 1041
1043: 76 Load 79(inF0)
- 1044: 76 Load 80(inF1)
- 1045: 76 Load 81(inF2)
- 1046: 76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1043 1044 1045
- 1047: 76 Load 79(inF0)
- 1048: 76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1047
- 1049: 76 Load 79(inF0)
- 1050: 76 Load 80(inF1)
- 1051: 76 ExtInst 1(GLSL.std.450) 48(Step) 1049 1050
- 1052: 76 Load 79(inF0)
- 1053: 76 ExtInst 1(GLSL.std.450) 15(Tan) 1052
- 1054: 76 Load 79(inF0)
- 1055: 76 ExtInst 1(GLSL.std.450) 21(Tanh) 1054
- 1056: 76 Load 79(inF0)
- 1057: 76 Transpose 1056
- 1058: 76 Load 79(inF0)
- 1059: 76 ExtInst 1(GLSL.std.450) 3(Trunc) 1058
- ReturnValue 1061
+ 1044: 76 ExtInst 1(GLSL.std.450) 3(Trunc) 1043
+ ReturnValue 1046
FunctionEnd
91(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;): 2 Function None 84
85(inF0): 7(ptr) FunctionParameter
@@ -3981,51 +3939,51 @@ Shader version: 450
89(inFM0): 61(ptr) FunctionParameter
90(inFM1): 61(ptr) FunctionParameter
92: Label
- 1064(r0): 7(ptr) Variable Function
- 1068(r1): 25(ptr) Variable Function
- 1072(r2): 25(ptr) Variable Function
- 1076(r3): 7(ptr) Variable Function
- 1080(r4): 25(ptr) Variable Function
- 1084(r5): 25(ptr) Variable Function
- 1088(r6): 61(ptr) Variable Function
- 1092(r7): 61(ptr) Variable Function
- 1096(r8): 61(ptr) Variable Function
- 1065: 6(float) Load 86(inF1)
- 1066: 6(float) Load 85(inF0)
- 1067: 6(float) FMul 1065 1066
- Store 1064(r0) 1067
- 1069: 6(float) Load 85(inF0)
- 1070: 24(fvec2) Load 87(inFV0)
- 1071: 24(fvec2) VectorTimesScalar 1070 1069
- Store 1068(r1) 1071
- 1073: 24(fvec2) Load 87(inFV0)
+ 1049(r0): 7(ptr) Variable Function
+ 1053(r1): 25(ptr) Variable Function
+ 1057(r2): 25(ptr) Variable Function
+ 1061(r3): 7(ptr) Variable Function
+ 1065(r4): 25(ptr) Variable Function
+ 1069(r5): 25(ptr) Variable Function
+ 1073(r6): 61(ptr) Variable Function
+ 1077(r7): 61(ptr) Variable Function
+ 1081(r8): 61(ptr) Variable Function
+ 1050: 6(float) Load 86(inF1)
+ 1051: 6(float) Load 85(inF0)
+ 1052: 6(float) FMul 1050 1051
+ Store 1049(r0) 1052
+ 1054: 6(float) Load 85(inF0)
+ 1055: 24(fvec2) Load 87(inFV0)
+ 1056: 24(fvec2) VectorTimesScalar 1055 1054
+ Store 1053(r1) 1056
+ 1058: 24(fvec2) Load 87(inFV0)
+ 1059: 6(float) Load 85(inF0)
+ 1060: 24(fvec2) VectorTimesScalar 1058 1059
+ Store 1057(r2) 1060
+ 1062: 24(fvec2) Load 87(inFV0)
+ 1063: 24(fvec2) Load 88(inFV1)
+ 1064: 6(float) Dot 1062 1063
+ Store 1061(r3) 1064
+ 1066: 24(fvec2) Load 87(inFV0)
+ 1067: 60 Load 89(inFM0)
+ 1068: 24(fvec2) VectorTimesMatrix 1066 1067
+ Store 1065(r4) 1068
+ 1070: 60 Load 89(inFM0)
+ 1071: 24(fvec2) Load 87(inFV0)
+ 1072: 24(fvec2) MatrixTimesVector 1070 1071
+ Store 1069(r5) 1072
1074: 6(float) Load 85(inF0)
- 1075: 24(fvec2) VectorTimesScalar 1073 1074
- Store 1072(r2) 1075
- 1077: 24(fvec2) Load 87(inFV0)
- 1078: 24(fvec2) Load 88(inFV1)
- 1079: 6(float) Dot 1077 1078
- Store 1076(r3) 1079
- 1081: 24(fvec2) Load 87(inFV0)
- 1082: 60 Load 89(inFM0)
- 1083: 24(fvec2) VectorTimesMatrix 1081 1082
- Store 1080(r4) 1083
- 1085: 60 Load 89(inFM0)
- 1086: 24(fvec2) Load 87(inFV0)
- 1087: 24(fvec2) MatrixTimesVector 1085 1086
- Store 1084(r5) 1087
- 1089: 6(float) Load 85(inF0)
- 1090: 60 Load 89(inFM0)
- 1091: 60 MatrixTimesScalar 1090 1089
- Store 1088(r6) 1091
- 1093: 60 Load 89(inFM0)
- 1094: 6(float) Load 85(inF0)
- 1095: 60 MatrixTimesScalar 1093 1094
- Store 1092(r7) 1095
- 1097: 60 Load 90(inFM1)
- 1098: 60 Load 89(inFM0)
- 1099: 60 MatrixTimesMatrix 1097 1098
- Store 1096(r8) 1099
+ 1075: 60 Load 89(inFM0)
+ 1076: 60 MatrixTimesScalar 1075 1074
+ Store 1073(r6) 1076
+ 1078: 60 Load 89(inFM0)
+ 1079: 6(float) Load 85(inF0)
+ 1080: 60 MatrixTimesScalar 1078 1079
+ Store 1077(r7) 1080
+ 1082: 60 Load 90(inFM1)
+ 1083: 60 Load 89(inFM0)
+ 1084: 60 MatrixTimesMatrix 1082 1083
+ Store 1081(r8) 1084
Return
FunctionEnd
100(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 93
@@ -4036,51 +3994,51 @@ Shader version: 450
98(inFM0): 69(ptr) FunctionParameter
99(inFM1): 69(ptr) FunctionParameter
101: Label
- 1100(r0): 7(ptr) Variable Function
- 1104(r1): 37(ptr) Variable Function
- 1108(r2): 37(ptr) Variable Function
- 1112(r3): 7(ptr) Variable Function
- 1116(r4): 37(ptr) Variable Function
- 1120(r5): 37(ptr) Variable Function
- 1124(r6): 69(ptr) Variable Function
- 1128(r7): 69(ptr) Variable Function
- 1132(r8): 69(ptr) Variable Function
- 1101: 6(float) Load 95(inF1)
- 1102: 6(float) Load 94(inF0)
- 1103: 6(float) FMul 1101 1102
- Store 1100(r0) 1103
- 1105: 6(float) Load 94(inF0)
- 1106: 36(fvec3) Load 96(inFV0)
- 1107: 36(fvec3) VectorTimesScalar 1106 1105
- Store 1104(r1) 1107
- 1109: 36(fvec3) Load 96(inFV0)
+ 1085(r0): 7(ptr) Variable Function
+ 1089(r1): 37(ptr) Variable Function
+ 1093(r2): 37(ptr) Variable Function
+ 1097(r3): 7(ptr) Variable Function
+ 1101(r4): 37(ptr) Variable Function
+ 1105(r5): 37(ptr) Variable Function
+ 1109(r6): 69(ptr) Variable Function
+ 1113(r7): 69(ptr) Variable Function
+ 1117(r8): 69(ptr) Variable Function
+ 1086: 6(float) Load 95(inF1)
+ 1087: 6(float) Load 94(inF0)
+ 1088: 6(float) FMul 1086 1087
+ Store 1085(r0) 1088
+ 1090: 6(float) Load 94(inF0)
+ 1091: 36(fvec3) Load 96(inFV0)
+ 1092: 36(fvec3) VectorTimesScalar 1091 1090
+ Store 1089(r1) 1092
+ 1094: 36(fvec3) Load 96(inFV0)
+ 1095: 6(float) Load 94(inF0)
+ 1096: 36(fvec3) VectorTimesScalar 1094 1095
+ Store 1093(r2) 1096
+ 1098: 36(fvec3) Load 96(inFV0)
+ 1099: 36(fvec3) Load 97(inFV1)
+ 1100: 6(float) Dot 1098 1099
+ Store 1097(r3) 1100
+ 1102: 36(fvec3) Load 96(inFV0)
+ 1103: 68 Load 98(inFM0)
+ 1104: 36(fvec3) VectorTimesMatrix 1102 1103
+ Store 1101(r4) 1104
+ 1106: 68 Load 98(inFM0)
+ 1107: 36(fvec3) Load 96(inFV0)
+ 1108: 36(fvec3) MatrixTimesVector 1106 1107
+ Store 1105(r5) 1108
1110: 6(float) Load 94(inF0)
- 1111: 36(fvec3) VectorTimesScalar 1109 1110
- Store 1108(r2) 1111
- 1113: 36(fvec3) Load 96(inFV0)
- 1114: 36(fvec3) Load 97(inFV1)
- 1115: 6(float) Dot 1113 1114
- Store 1112(r3) 1115
- 1117: 36(fvec3) Load 96(inFV0)
- 1118: 68 Load 98(inFM0)
- 1119: 36(fvec3) VectorTimesMatrix 1117 1118
- Store 1116(r4) 1119
- 1121: 68 Load 98(inFM0)
- 1122: 36(fvec3) Load 96(inFV0)
- 1123: 36(fvec3) MatrixTimesVector 1121 1122
- Store 1120(r5) 1123
- 1125: 6(float) Load 94(inF0)
- 1126: 68 Load 98(inFM0)
- 1127: 68 MatrixTimesScalar 1126 1125
- Store 1124(r6) 1127
- 1129: 68 Load 98(inFM0)
- 1130: 6(float) Load 94(inF0)
- 1131: 68 MatrixTimesScalar 1129 1130
- Store 1128(r7) 1131
- 1133: 68 Load 99(inFM1)
- 1134: 68 Load 98(inFM0)
- 1135: 68 MatrixTimesMatrix 1133 1134
- Store 1132(r8) 1135
+ 1111: 68 Load 98(inFM0)
+ 1112: 68 MatrixTimesScalar 1111 1110
+ Store 1109(r6) 1112
+ 1114: 68 Load 98(inFM0)
+ 1115: 6(float) Load 94(inF0)
+ 1116: 68 MatrixTimesScalar 1114 1115
+ Store 1113(r7) 1116
+ 1118: 68 Load 99(inFM1)
+ 1119: 68 Load 98(inFM0)
+ 1120: 68 MatrixTimesMatrix 1118 1119
+ Store 1117(r8) 1120
Return
FunctionEnd
109(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 102
@@ -4091,51 +4049,51 @@ Shader version: 450
107(inFM0): 77(ptr) FunctionParameter
108(inFM1): 77(ptr) FunctionParameter
110: Label
- 1136(r0): 7(ptr) Variable Function
- 1140(r1): 49(ptr) Variable Function
- 1144(r2): 49(ptr) Variable Function
- 1148(r3): 7(ptr) Variable Function
- 1152(r4): 49(ptr) Variable Function
- 1156(r5): 49(ptr) Variable Function
- 1160(r6): 77(ptr) Variable Function
- 1164(r7): 77(ptr) Variable Function
- 1168(r8): 77(ptr) Variable Function
- 1137: 6(float) Load 104(inF1)
- 1138: 6(float) Load 103(inF0)
- 1139: 6(float) FMul 1137 1138
- Store 1136(r0) 1139
- 1141: 6(float) Load 103(inF0)
- 1142: 48(fvec4) Load 105(inFV0)
- 1143: 48(fvec4) VectorTimesScalar 1142 1141
- Store 1140(r1) 1143
- 1145: 48(fvec4) Load 105(inFV0)
+ 1121(r0): 7(ptr) Variable Function
+ 1125(r1): 49(ptr) Variable Function
+ 1129(r2): 49(ptr) Variable Function
+ 1133(r3): 7(ptr) Variable Function
+ 1137(r4): 49(ptr) Variable Function
+ 1141(r5): 49(ptr) Variable Function
+ 1145(r6): 77(ptr) Variable Function
+ 1149(r7): 77(ptr) Variable Function
+ 1153(r8): 77(ptr) Variable Function
+ 1122: 6(float) Load 104(inF1)
+ 1123: 6(float) Load 103(inF0)
+ 1124: 6(float) FMul 1122 1123
+ Store 1121(r0) 1124
+ 1126: 6(float) Load 103(inF0)
+ 1127: 48(fvec4) Load 105(inFV0)
+ 1128: 48(fvec4) VectorTimesScalar 1127 1126
+ Store 1125(r1) 1128
+ 1130: 48(fvec4) Load 105(inFV0)
+ 1131: 6(float) Load 103(inF0)
+ 1132: 48(fvec4) VectorTimesScalar 1130 1131
+ Store 1129(r2) 1132
+ 1134: 48(fvec4) Load 105(inFV0)
+ 1135: 48(fvec4) Load 106(inFV1)
+ 1136: 6(float) Dot 1134 1135
+ Store 1133(r3) 1136
+ 1138: 48(fvec4) Load 105(inFV0)
+ 1139: 76 Load 107(inFM0)
+ 1140: 48(fvec4) VectorTimesMatrix 1138 1139
+ Store 1137(r4) 1140
+ 1142: 76 Load 107(inFM0)
+ 1143: 48(fvec4) Load 105(inFV0)
+ 1144: 48(fvec4) MatrixTimesVector 1142 1143
+ Store 1141(r5) 1144
1146: 6(float) Load 103(inF0)
- 1147: 48(fvec4) VectorTimesScalar 1145 1146
- Store 1144(r2) 1147
- 1149: 48(fvec4) Load 105(inFV0)
- 1150: 48(fvec4) Load 106(inFV1)
- 1151: 6(float) Dot 1149 1150
- Store 1148(r3) 1151
- 1153: 48(fvec4) Load 105(inFV0)
- 1154: 76 Load 107(inFM0)
- 1155: 48(fvec4) VectorTimesMatrix 1153 1154
- Store 1152(r4) 1155
- 1157: 76 Load 107(inFM0)
- 1158: 48(fvec4) Load 105(inFV0)
- 1159: 48(fvec4) MatrixTimesVector 1157 1158
- Store 1156(r5) 1159
- 1161: 6(float) Load 103(inF0)
- 1162: 76 Load 107(inFM0)
- 1163: 76 MatrixTimesScalar 1162 1161
- Store 1160(r6) 1163
- 1165: 76 Load 107(inFM0)
- 1166: 6(float) Load 103(inF0)
- 1167: 76 MatrixTimesScalar 1165 1166
- Store 1164(r7) 1167
- 1169: 76 Load 108(inFM1)
- 1170: 76 Load 107(inFM0)
- 1171: 76 MatrixTimesMatrix 1169 1170
- Store 1168(r8) 1171
+ 1147: 76 Load 107(inFM0)
+ 1148: 76 MatrixTimesScalar 1147 1146
+ Store 1145(r6) 1148
+ 1150: 76 Load 107(inFM0)
+ 1151: 6(float) Load 103(inF0)
+ 1152: 76 MatrixTimesScalar 1150 1151
+ Store 1149(r7) 1152
+ 1154: 76 Load 108(inFM1)
+ 1155: 76 Load 107(inFM0)
+ 1156: 76 MatrixTimesMatrix 1154 1155
+ Store 1153(r8) 1156
Return
FunctionEnd
129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;): 2 Function None 119
@@ -4149,90 +4107,90 @@ Shader version: 450
127(inFM3x4): 116(ptr) FunctionParameter
128(inFM2x4): 118(ptr) FunctionParameter
130: Label
- 1172(r00): 7(ptr) Variable Function
- 1176(r01): 25(ptr) Variable Function
- 1180(r02): 37(ptr) Variable Function
- 1184(r03): 25(ptr) Variable Function
- 1188(r04): 37(ptr) Variable Function
- 1192(r05): 7(ptr) Variable Function
- 1196(r06): 7(ptr) Variable Function
- 1200(r07): 37(ptr) Variable Function
- 1204(r08): 25(ptr) Variable Function
- 1208(r09): 25(ptr) Variable Function
- 1212(r10): 37(ptr) Variable Function
- 1216(r11): 112(ptr) Variable Function
- 1220(r12): 114(ptr) Variable Function
- 1224(r13): 61(ptr) Variable Function
- 1228(r14): 112(ptr) Variable Function
- 1232(r15): 118(ptr) Variable Function
- 1236(r16): 116(ptr) Variable Function
- 1173: 6(float) Load 121(inF1)
- 1174: 6(float) Load 120(inF0)
- 1175: 6(float) FMul 1173 1174
- Store 1172(r00) 1175
- 1177: 6(float) Load 120(inF0)
+ 1157(r00): 7(ptr) Variable Function
+ 1161(r01): 25(ptr) Variable Function
+ 1165(r02): 37(ptr) Variable Function
+ 1169(r03): 25(ptr) Variable Function
+ 1173(r04): 37(ptr) Variable Function
+ 1177(r05): 7(ptr) Variable Function
+ 1181(r06): 7(ptr) Variable Function
+ 1185(r07): 37(ptr) Variable Function
+ 1189(r08): 25(ptr) Variable Function
+ 1193(r09): 25(ptr) Variable Function
+ 1197(r10): 37(ptr) Variable Function
+ 1201(r11): 112(ptr) Variable Function
+ 1205(r12): 114(ptr) Variable Function
+ 1209(r13): 61(ptr) Variable Function
+ 1213(r14): 112(ptr) Variable Function
+ 1217(r15): 118(ptr) Variable Function
+ 1221(r16): 116(ptr) Variable Function
+ 1158: 6(float) Load 121(inF1)
+ 1159: 6(float) Load 120(inF0)
+ 1160: 6(float) FMul 1158 1159
+ Store 1157(r00) 1160
+ 1162: 6(float) Load 120(inF0)
+ 1163: 24(fvec2) Load 122(inFV2)
+ 1164: 24(fvec2) VectorTimesScalar 1163 1162
+ Store 1161(r01) 1164
+ 1166: 6(float) Load 120(inF0)
+ 1167: 36(fvec3) Load 123(inFV3)
+ 1168: 36(fvec3) VectorTimesScalar 1167 1166
+ Store 1165(r02) 1168
+ 1170: 24(fvec2) Load 122(inFV2)
+ 1171: 6(float) Load 120(inF0)
+ 1172: 24(fvec2) VectorTimesScalar 1170 1171
+ Store 1169(r03) 1172
+ 1174: 36(fvec3) Load 123(inFV3)
+ 1175: 6(float) Load 120(inF0)
+ 1176: 36(fvec3) VectorTimesScalar 1174 1175
+ Store 1173(r04) 1176
1178: 24(fvec2) Load 122(inFV2)
- 1179: 24(fvec2) VectorTimesScalar 1178 1177
- Store 1176(r01) 1179
- 1181: 6(float) Load 120(inF0)
+ 1179: 24(fvec2) Load 122(inFV2)
+ 1180: 6(float) Dot 1178 1179
+ Store 1177(r05) 1180
1182: 36(fvec3) Load 123(inFV3)
- 1183: 36(fvec3) VectorTimesScalar 1182 1181
- Store 1180(r02) 1183
- 1185: 24(fvec2) Load 122(inFV2)
- 1186: 6(float) Load 120(inF0)
- 1187: 24(fvec2) VectorTimesScalar 1185 1186
- Store 1184(r03) 1187
- 1189: 36(fvec3) Load 123(inFV3)
- 1190: 6(float) Load 120(inF0)
- 1191: 36(fvec3) VectorTimesScalar 1189 1190
- Store 1188(r04) 1191
- 1193: 24(fvec2) Load 122(inFV2)
- 1194: 24(fvec2) Load 122(inFV2)
- 1195: 6(float) Dot 1193 1194
- Store 1192(r05) 1195
- 1197: 36(fvec3) Load 123(inFV3)
- 1198: 36(fvec3) Load 123(inFV3)
- 1199: 6(float) Dot 1197 1198
- Store 1196(r06) 1199
- 1201: 111 Load 124(inFM2x3)
- 1202: 24(fvec2) Load 122(inFV2)
- 1203: 36(fvec3) MatrixTimesVector 1201 1202
- Store 1200(r07) 1203
- 1205: 113 Load 125(inFM3x2)
- 1206: 36(fvec3) Load 123(inFV3)
- 1207: 24(fvec2) MatrixTimesVector 1205 1206
- Store 1204(r08) 1207
- 1209: 36(fvec3) Load 123(inFV3)
- 1210: 111 Load 124(inFM2x3)
- 1211: 24(fvec2) VectorTimesMatrix 1209 1210
- Store 1208(r09) 1211
- 1213: 24(fvec2) Load 122(inFV2)
- 1214: 113 Load 125(inFM3x2)
- 1215: 36(fvec3) VectorTimesMatrix 1213 1214
- Store 1212(r10) 1215
- 1217: 6(float) Load 120(inF0)
- 1218: 111 Load 124(inFM2x3)
- 1219: 111 MatrixTimesScalar 1218 1217
- Store 1216(r11) 1219
- 1221: 6(float) Load 120(inF0)
- 1222: 113 Load 125(inFM3x2)
- 1223: 113 MatrixTimesScalar 1222 1221
- Store 1220(r12) 1223
- 1225: 113 Load 125(inFM3x2)
- 1226: 111 Load 124(inFM2x3)
- 1227: 60 MatrixTimesMatrix 1225 1226
- Store 1224(r13) 1227
- 1229: 68 Load 126(inFM3x3)
- 1230: 111 Load 124(inFM2x3)
- 1231: 111 MatrixTimesMatrix 1229 1230
- Store 1228(r14) 1231
- 1233: 115 Load 127(inFM3x4)
- 1234: 111 Load 124(inFM2x3)
- 1235: 117 MatrixTimesMatrix 1233 1234
- Store 1232(r15) 1235
- 1237: 117 Load 128(inFM2x4)
- 1238: 113 Load 125(inFM3x2)
- 1239: 115 MatrixTimesMatrix 1237 1238
- Store 1236(r16) 1239
+ 1183: 36(fvec3) Load 123(inFV3)
+ 1184: 6(float) Dot 1182 1183
+ Store 1181(r06) 1184
+ 1186: 111 Load 124(inFM2x3)
+ 1187: 24(fvec2) Load 122(inFV2)
+ 1188: 36(fvec3) MatrixTimesVector 1186 1187
+ Store 1185(r07) 1188
+ 1190: 113 Load 125(inFM3x2)
+ 1191: 36(fvec3) Load 123(inFV3)
+ 1192: 24(fvec2) MatrixTimesVector 1190 1191
+ Store 1189(r08) 1192
+ 1194: 36(fvec3) Load 123(inFV3)
+ 1195: 111 Load 124(inFM2x3)
+ 1196: 24(fvec2) VectorTimesMatrix 1194 1195
+ Store 1193(r09) 1196
+ 1198: 24(fvec2) Load 122(inFV2)
+ 1199: 113 Load 125(inFM3x2)
+ 1200: 36(fvec3) VectorTimesMatrix 1198 1199
+ Store 1197(r10) 1200
+ 1202: 6(float) Load 120(inF0)
+ 1203: 111 Load 124(inFM2x3)
+ 1204: 111 MatrixTimesScalar 1203 1202
+ Store 1201(r11) 1204
+ 1206: 6(float) Load 120(inF0)
+ 1207: 113 Load 125(inFM3x2)
+ 1208: 113 MatrixTimesScalar 1207 1206
+ Store 1205(r12) 1208
+ 1210: 113 Load 125(inFM3x2)
+ 1211: 111 Load 124(inFM2x3)
+ 1212: 60 MatrixTimesMatrix 1210 1211
+ Store 1209(r13) 1212
+ 1214: 68 Load 126(inFM3x3)
+ 1215: 111 Load 124(inFM2x3)
+ 1216: 111 MatrixTimesMatrix 1214 1215
+ Store 1213(r14) 1216
+ 1218: 115 Load 127(inFM3x4)
+ 1219: 111 Load 124(inFM2x3)
+ 1220: 117 MatrixTimesMatrix 1218 1219
+ Store 1217(r15) 1220
+ 1222: 117 Load 128(inFM2x4)
+ 1223: 113 Load 125(inFM3x2)
+ 1224: 115 MatrixTimesMatrix 1222 1223
+ Store 1221(r16) 1224
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.isfinite.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.isfinite.frag.out
new file mode 100644
index 00000000000..9968e6b64ea
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.isfinite.frag.out
@@ -0,0 +1,293 @@
+hlsl.isfinite.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: test1(f1; ( temp bool)
+0:7 Function Parameters:
+0:7 'v' ( in float)
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 logical-and ( temp bool)
+0:8 Negate conditional ( temp bool)
+0:8 isnan ( temp bool)
+0:8 'v' ( in float)
+0:8 Sequence
+0:8 move second child to first child ( temp float)
+0:8 '@finitetmp' ( temp float)
+0:8 'v' ( in float)
+0:8 logical-and ( temp bool)
+0:8 Negate conditional ( temp bool)
+0:8 isnan ( temp bool)
+0:8 '@finitetmp' ( temp float)
+0:8 Negate conditional ( temp bool)
+0:8 isinf ( temp bool)
+0:8 '@finitetmp' ( temp float)
+0:12 Function Definition: @main( ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:? Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp float)
+0:13 '@finitetmp' ( temp float)
+0:13 f: direct index for structure ( uniform float)
+0:13 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 logical-and ( temp bool)
+0:13 Negate conditional ( temp bool)
+0:13 isnan ( temp bool)
+0:13 '@finitetmp' ( temp float)
+0:13 Negate conditional ( temp bool)
+0:13 isinf ( temp bool)
+0:13 '@finitetmp' ( temp float)
+0:14 Sequence
+0:14 move second child to first child ( temp 2-component vector of float)
+0:14 '@finitetmp' ( temp 2-component vector of float)
+0:14 f2: direct index for structure ( uniform 2-component vector of float)
+0:14 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3})
+0:14 Constant:
+0:14 1 (const uint)
+0:14 logical-and ( temp 2-component vector of bool)
+0:14 Negate conditional ( temp 2-component vector of bool)
+0:14 isnan ( temp 2-component vector of bool)
+0:14 '@finitetmp' ( temp 2-component vector of float)
+0:14 Negate conditional ( temp 2-component vector of bool)
+0:14 isinf ( temp 2-component vector of bool)
+0:14 '@finitetmp' ( temp 2-component vector of float)
+0:15 Sequence
+0:15 move second child to first child ( temp 3-component vector of float)
+0:15 '@finitetmp' ( temp 3-component vector of float)
+0:15 f3: direct index for structure ( uniform 3-component vector of float)
+0:15 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3})
+0:15 Constant:
+0:15 2 (const uint)
+0:15 logical-and ( temp 3-component vector of bool)
+0:15 Negate conditional ( temp 3-component vector of bool)
+0:15 isnan ( temp 3-component vector of bool)
+0:15 '@finitetmp' ( temp 3-component vector of float)
+0:15 Negate conditional ( temp 3-component vector of bool)
+0:15 isinf ( temp 3-component vector of bool)
+0:15 '@finitetmp' ( temp 3-component vector of float)
+0:17 Branch: Return with expression
+0:17 Constant:
+0:17 0.000000
+0:17 0.000000
+0:17 0.000000
+0:17 0.000000
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:12 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: test1(f1; ( temp bool)
+0:7 Function Parameters:
+0:7 'v' ( in float)
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 logical-and ( temp bool)
+0:8 Negate conditional ( temp bool)
+0:8 isnan ( temp bool)
+0:8 'v' ( in float)
+0:8 Sequence
+0:8 move second child to first child ( temp float)
+0:8 '@finitetmp' ( temp float)
+0:8 'v' ( in float)
+0:8 logical-and ( temp bool)
+0:8 Negate conditional ( temp bool)
+0:8 isnan ( temp bool)
+0:8 '@finitetmp' ( temp float)
+0:8 Negate conditional ( temp bool)
+0:8 isinf ( temp bool)
+0:8 '@finitetmp' ( temp float)
+0:12 Function Definition: @main( ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:? Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp float)
+0:13 '@finitetmp' ( temp float)
+0:13 f: direct index for structure ( uniform float)
+0:13 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 logical-and ( temp bool)
+0:13 Negate conditional ( temp bool)
+0:13 isnan ( temp bool)
+0:13 '@finitetmp' ( temp float)
+0:13 Negate conditional ( temp bool)
+0:13 isinf ( temp bool)
+0:13 '@finitetmp' ( temp float)
+0:14 Sequence
+0:14 move second child to first child ( temp 2-component vector of float)
+0:14 '@finitetmp' ( temp 2-component vector of float)
+0:14 f2: direct index for structure ( uniform 2-component vector of float)
+0:14 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3})
+0:14 Constant:
+0:14 1 (const uint)
+0:14 logical-and ( temp 2-component vector of bool)
+0:14 Negate conditional ( temp 2-component vector of bool)
+0:14 isnan ( temp 2-component vector of bool)
+0:14 '@finitetmp' ( temp 2-component vector of float)
+0:14 Negate conditional ( temp 2-component vector of bool)
+0:14 isinf ( temp 2-component vector of bool)
+0:14 '@finitetmp' ( temp 2-component vector of float)
+0:15 Sequence
+0:15 move second child to first child ( temp 3-component vector of float)
+0:15 '@finitetmp' ( temp 3-component vector of float)
+0:15 f3: direct index for structure ( uniform 3-component vector of float)
+0:15 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3})
+0:15 Constant:
+0:15 2 (const uint)
+0:15 logical-and ( temp 3-component vector of bool)
+0:15 Negate conditional ( temp 3-component vector of bool)
+0:15 isnan ( temp 3-component vector of bool)
+0:15 '@finitetmp' ( temp 3-component vector of float)
+0:15 Negate conditional ( temp 3-component vector of bool)
+0:15 isinf ( temp 3-component vector of bool)
+0:15 '@finitetmp' ( temp 3-component vector of float)
+0:17 Branch: Return with expression
+0:17 Constant:
+0:17 0.000000
+0:17 0.000000
+0:17 0.000000
+0:17 0.000000
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:12 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float f, uniform 2-component vector of float f2, uniform 3-component vector of float f3})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 85
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 83
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "test1(f1;"
+ Name 10 "v"
+ Name 15 "@main("
+ Name 20 "@finitetmp"
+ Name 32 "@finitetmp"
+ Name 35 "$Global"
+ MemberName 35($Global) 0 "f"
+ MemberName 35($Global) 1 "f2"
+ MemberName 35($Global) 2 "f3"
+ Name 37 ""
+ Name 51 "@finitetmp"
+ Name 65 "@finitetmp"
+ Name 83 "@entryPointOutput"
+ MemberDecorate 35($Global) 0 Offset 0
+ MemberDecorate 35($Global) 1 Offset 8
+ MemberDecorate 35($Global) 2 Offset 16
+ Decorate 35($Global) Block
+ Decorate 37 DescriptorSet 0
+ Decorate 83(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Function 6(float)
+ 8: TypeBool
+ 9: TypeFunction 8(bool) 7(ptr)
+ 13: TypeVector 6(float) 4
+ 14: TypeFunction 13(fvec4)
+ 33: TypeVector 6(float) 2
+ 34: TypeVector 6(float) 3
+ 35($Global): TypeStruct 6(float) 33(fvec2) 34(fvec3)
+ 36: TypePointer Uniform 35($Global)
+ 37: 36(ptr) Variable Uniform
+ 38: TypeInt 32 1
+ 39: 38(int) Constant 0
+ 40: TypePointer Uniform 6(float)
+ 50: TypePointer Function 33(fvec2)
+ 52: 38(int) Constant 1
+ 53: TypePointer Uniform 33(fvec2)
+ 57: TypeVector 8(bool) 2
+ 64: TypePointer Function 34(fvec3)
+ 66: 38(int) Constant 2
+ 67: TypePointer Uniform 34(fvec3)
+ 71: TypeVector 8(bool) 3
+ 78: 6(float) Constant 0
+ 79: 13(fvec4) ConstantComposite 78 78 78 78
+ 82: TypePointer Output 13(fvec4)
+83(@entryPointOutput): 82(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 84: 13(fvec4) FunctionCall 15(@main()
+ Store 83(@entryPointOutput) 84
+ Return
+ FunctionEnd
+ 11(test1(f1;): 8(bool) Function None 9
+ 10(v): 7(ptr) FunctionParameter
+ 12: Label
+ 20(@finitetmp): 7(ptr) Variable Function
+ 17: 6(float) Load 10(v)
+ 18: 8(bool) IsNan 17
+ 19: 8(bool) LogicalNot 18
+ 21: 6(float) Load 10(v)
+ Store 20(@finitetmp) 21
+ 22: 6(float) Load 20(@finitetmp)
+ 23: 8(bool) IsNan 22
+ 24: 8(bool) LogicalNot 23
+ 25: 6(float) Load 20(@finitetmp)
+ 26: 8(bool) IsInf 25
+ 27: 8(bool) LogicalNot 26
+ 28: 8(bool) LogicalAnd 24 27
+ 29: 8(bool) LogicalAnd 19 28
+ ReturnValue 29
+ FunctionEnd
+ 15(@main(): 13(fvec4) Function None 14
+ 16: Label
+ 32(@finitetmp): 7(ptr) Variable Function
+ 51(@finitetmp): 50(ptr) Variable Function
+ 65(@finitetmp): 64(ptr) Variable Function
+ 41: 40(ptr) AccessChain 37 39
+ 42: 6(float) Load 41
+ Store 32(@finitetmp) 42
+ 43: 6(float) Load 32(@finitetmp)
+ 44: 8(bool) IsNan 43
+ 45: 8(bool) LogicalNot 44
+ 46: 6(float) Load 32(@finitetmp)
+ 47: 8(bool) IsInf 46
+ 48: 8(bool) LogicalNot 47
+ 49: 8(bool) LogicalAnd 45 48
+ 54: 53(ptr) AccessChain 37 52
+ 55: 33(fvec2) Load 54
+ Store 51(@finitetmp) 55
+ 56: 33(fvec2) Load 51(@finitetmp)
+ 58: 57(bvec2) IsNan 56
+ 59: 57(bvec2) LogicalNot 58
+ 60: 33(fvec2) Load 51(@finitetmp)
+ 61: 57(bvec2) IsInf 60
+ 62: 57(bvec2) LogicalNot 61
+ 63: 57(bvec2) LogicalAnd 59 62
+ 68: 67(ptr) AccessChain 37 66
+ 69: 34(fvec3) Load 68
+ Store 65(@finitetmp) 69
+ 70: 34(fvec3) Load 65(@finitetmp)
+ 72: 71(bvec3) IsNan 70
+ 73: 71(bvec3) LogicalNot 72
+ 74: 34(fvec3) Load 65(@finitetmp)
+ 75: 71(bvec3) IsInf 74
+ 76: 71(bvec3) LogicalNot 75
+ 77: 71(bvec3) LogicalAnd 73 76
+ ReturnValue 79
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.layout.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.layout.frag.out
index 6a5eceb00ae..de614d2815b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.layout.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.layout.frag.out
@@ -1,5 +1,5 @@
hlsl.layout.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:16 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -12,30 +12,30 @@ gl_FragCoord origin is upper left
0:17 add ( temp 4-component vector of float)
0:17 'input' ( in 4-component vector of float)
0:17 v1: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:17 'anon@0' (layout( set=3 binding=5 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
+0:17 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
0:17 Constant:
0:17 0 (const uint)
0:17 v5: direct index for structure (layout( row_major std430 offset=0) buffer 4-component vector of float)
-0:17 'anon@1' (layout( row_major std430 push_constant) buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
+0:17 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
0:17 Constant:
0:17 0 (const uint)
0:17 v1PostLayout: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:17 'anon@2' (layout( set=4 binding=7 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
+0:17 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
0:17 Constant:
0:17 0 (const uint)
0:? Linker Objects
-0:? 'anon@0' (layout( set=3 binding=5 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
-0:? 'anon@1' (layout( row_major std430 push_constant) buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
+0:? 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
+0:? 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
0:? 'specConst' ( specialization-constant const int)
0:? 10 (const int)
-0:? 'anon@2' (layout( set=4 binding=7 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
+0:? 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
Linked fragment stage:
WARNING: Linking fragment stage: Entry point not found
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:16 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -48,26 +48,26 @@ gl_FragCoord origin is upper left
0:17 add ( temp 4-component vector of float)
0:17 'input' ( in 4-component vector of float)
0:17 v1: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:17 'anon@0' (layout( set=3 binding=5 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
+0:17 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
0:17 Constant:
0:17 0 (const uint)
0:17 v5: direct index for structure (layout( row_major std430 offset=0) buffer 4-component vector of float)
-0:17 'anon@1' (layout( row_major std430 push_constant) buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
+0:17 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
0:17 Constant:
0:17 0 (const uint)
0:17 v1PostLayout: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:17 'anon@2' (layout( set=4 binding=7 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
+0:17 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
0:17 Constant:
0:17 0 (const uint)
0:? Linker Objects
-0:? 'anon@0' (layout( set=3 binding=5 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
-0:? 'anon@1' (layout( row_major std430 push_constant) buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
+0:? 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
+0:? 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
0:? 'specConst' ( specialization-constant const int)
0:? 10 (const int)
-0:? 'anon@2' (layout( set=4 binding=7 row_major std430) buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
+0:? 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 39
Capability Shader
@@ -75,6 +75,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "PixelShaderFunction(vf4;"
Name 10 "input"
@@ -88,12 +89,15 @@ gl_FragCoord origin is upper left
MemberName 30(tbufName2) 0 "v1PostLayout"
Name 32 ""
Name 38 "specConst"
+ MemberDecorate 14(tbufName) 0 NonWritable
MemberDecorate 14(tbufName) 0 Offset 16
Decorate 14(tbufName) BufferBlock
Decorate 16 DescriptorSet 3
Decorate 16 Binding 5
+ MemberDecorate 23(tbufName2) 0 NonWritable
MemberDecorate 23(tbufName2) 0 Offset 0
Decorate 23(tbufName2) BufferBlock
+ MemberDecorate 30(tbufName2) 0 NonWritable
MemberDecorate 30(tbufName2) 0 Offset 16
Decorate 30(tbufName2) BufferBlock
Decorate 32 DescriptorSet 4
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.2dms.dx10.frag.out
index f436f881933..634b6e87fdc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.2dms.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.2dms.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.load.2dms.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -152,13 +152,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -172,14 +172,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2dmsi4a' ( uniform itexture2DMSArray)
0:? 'g_tTex2dmsu4a' ( uniform utexture2DMSArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -332,13 +332,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -352,20 +352,20 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2dmsi4a' ( uniform itexture2DMSArray)
0:? 'g_tTex2dmsu4a' ( uniform utexture2DMSArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 130
Capability Shader
Capability ImageGatherExtended
- Capability ImageMSArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 120 124
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -389,8 +389,8 @@ gl_FragCoord origin is upper left
Name 82 "g_tTex2dmsu4a"
Name 106 "psout"
Name 117 "flattenTemp"
- Name 120 "Color"
- Name 124 "Depth"
+ Name 120 "@entryPointOutput.Color"
+ Name 124 "@entryPointOutput.Depth"
Name 129 "g_sSamp"
Decorate 14(g_tTex2dmsf4) DescriptorSet 0
MemberDecorate 20($Global) 0 Offset 0
@@ -408,8 +408,8 @@ gl_FragCoord origin is upper left
Decorate 66(g_tTex2dmsf4a) DescriptorSet 0
Decorate 75(g_tTex2dmsi4a) DescriptorSet 0
Decorate 82(g_tTex2dmsu4a) DescriptorSet 0
- Decorate 120(Color) Location 0
- Decorate 124(Depth) BuiltIn FragDepth
+ Decorate 120(@entryPointOutput.Color) Location 0
+ Decorate 124(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 129(g_sSamp) DescriptorSet 0
Decorate 129(g_sSamp) Binding 0
2: TypeVoid
@@ -458,9 +458,9 @@ gl_FragCoord origin is upper left
110: TypePointer Function 7(fvec4)
112: TypePointer Function 6(float)
119: TypePointer Output 7(fvec4)
- 120(Color): 119(ptr) Variable Output
+120(@entryPointOutput.Color): 119(ptr) Variable Output
123: TypePointer Output 6(float)
- 124(Depth): 123(ptr) Variable Output
+124(@entryPointOutput.Depth): 123(ptr) Variable Output
127: TypeSampler
128: TypePointer UniformConstant 127
129(g_sSamp): 128(ptr) Variable UniformConstant
@@ -471,10 +471,10 @@ gl_FragCoord origin is upper left
Store 117(flattenTemp) 118
121: 110(ptr) AccessChain 117(flattenTemp) 107
122: 7(fvec4) Load 121
- Store 120(Color) 122
+ Store 120(@entryPointOutput.Color) 122
125: 112(ptr) AccessChain 117(flattenTemp) 23
126: 6(float) Load 125
- Store 124(Depth) 126
+ Store 124(@entryPointOutput.Depth) 126
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.array.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.array.dx10.frag.out
index 9430e75d914..09c05d80df5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.array.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.array.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.load.array.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -152,13 +152,13 @@ gl_FragCoord origin is upper left
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:48 Color: direct index for structure ( temp 4-component vector of float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 0 (const int)
0:48 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:48 Depth: direct index for structure ( temp float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
@@ -187,14 +187,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -347,13 +347,13 @@ gl_FragCoord origin is upper left
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:48 Color: direct index for structure ( temp 4-component vector of float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 0 (const int)
0:48 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:48 Depth: direct index for structure ( temp float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
@@ -382,11 +382,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 159
Capability Shader
@@ -396,6 +396,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 104 108
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -419,8 +420,8 @@ gl_FragCoord origin is upper left
Name 80 "g_tTex2du4a"
Name 89 "psout"
Name 101 "flattenTemp"
- Name 104 "Color"
- Name 108 "Depth"
+ Name 104 "@entryPointOutput.Color"
+ Name 108 "@entryPointOutput.Depth"
Name 113 "g_sSamp"
Name 116 "g_tTex1df4"
Name 119 "g_tTex1di4"
@@ -453,8 +454,8 @@ gl_FragCoord origin is upper left
Decorate 57(g_tTex2df4a) DescriptorSet 0
Decorate 70(g_tTex2di4a) DescriptorSet 0
Decorate 80(g_tTex2du4a) DescriptorSet 0
- Decorate 104(Color) Location 0
- Decorate 108(Depth) BuiltIn FragDepth
+ Decorate 104(@entryPointOutput.Color) Location 0
+ Decorate 108(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 113(g_sSamp) DescriptorSet 0
Decorate 113(g_sSamp) Binding 0
Decorate 116(g_tTex1df4) DescriptorSet 0
@@ -521,9 +522,9 @@ gl_FragCoord origin is upper left
95: 16(int) Constant 1
96: TypePointer Function 6(float)
103: TypePointer Output 7(fvec4)
- 104(Color): 103(ptr) Variable Output
+104(@entryPointOutput.Color): 103(ptr) Variable Output
107: TypePointer Output 6(float)
- 108(Depth): 107(ptr) Variable Output
+108(@entryPointOutput.Depth): 107(ptr) Variable Output
111: TypeSampler
112: TypePointer UniformConstant 111
113(g_sSamp): 112(ptr) Variable UniformConstant
@@ -579,10 +580,10 @@ gl_FragCoord origin is upper left
Store 101(flattenTemp) 102
105: 93(ptr) AccessChain 101(flattenTemp) 90
106: 7(fvec4) Load 105
- Store 104(Color) 106
+ Store 104(@entryPointOutput.Color) 106
109: 96(ptr) AccessChain 101(flattenTemp) 95
110: 6(float) Load 109
- Store 108(Depth) 110
+ Store 108(@entryPointOutput.Depth) 110
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.basic.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.basic.dx10.frag.out
index 6a976f0910f..144d1a87588 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.basic.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.basic.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.load.basic.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -203,13 +203,13 @@ gl_FragCoord origin is upper left
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:48 Color: direct index for structure ( temp 4-component vector of float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 0 (const int)
0:48 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:48 Depth: direct index for structure ( temp float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
@@ -238,14 +238,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -449,13 +449,13 @@ gl_FragCoord origin is upper left
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:48 Color: direct index for structure ( temp 4-component vector of float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 0 (const int)
0:48 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:48 Depth: direct index for structure ( temp float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
@@ -484,11 +484,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 179
Capability Shader
@@ -498,6 +498,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 133 137
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -524,8 +525,8 @@ gl_FragCoord origin is upper left
Name 110 "g_tTex3du4"
Name 119 "psout"
Name 130 "flattenTemp"
- Name 133 "Color"
- Name 137 "Depth"
+ Name 133 "@entryPointOutput.Color"
+ Name 137 "@entryPointOutput.Depth"
Name 142 "g_sSamp"
Name 145 "g_tTexcdf4"
Name 148 "g_tTexcdi4"
@@ -559,8 +560,8 @@ gl_FragCoord origin is upper left
Decorate 87(g_tTex3df4) DescriptorSet 0
Decorate 100(g_tTex3di4) DescriptorSet 0
Decorate 110(g_tTex3du4) DescriptorSet 0
- Decorate 133(Color) Location 0
- Decorate 137(Depth) BuiltIn FragDepth
+ Decorate 133(@entryPointOutput.Color) Location 0
+ Decorate 137(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 142(g_sSamp) DescriptorSet 0
Decorate 142(g_sSamp) Binding 0
Decorate 145(g_tTexcdf4) DescriptorSet 0
@@ -634,9 +635,9 @@ gl_FragCoord origin is upper left
123: TypePointer Function 7(fvec4)
125: TypePointer Function 6(float)
132: TypePointer Output 7(fvec4)
- 133(Color): 132(ptr) Variable Output
+133(@entryPointOutput.Color): 132(ptr) Variable Output
136: TypePointer Output 6(float)
- 137(Depth): 136(ptr) Variable Output
+137(@entryPointOutput.Depth): 136(ptr) Variable Output
140: TypeSampler
141: TypePointer UniformConstant 140
142(g_sSamp): 141(ptr) Variable UniformConstant
@@ -683,10 +684,10 @@ gl_FragCoord origin is upper left
Store 130(flattenTemp) 131
134: 123(ptr) AccessChain 130(flattenTemp) 120
135: 7(fvec4) Load 134
- Store 133(Color) 135
+ Store 133(@entryPointOutput.Color) 135
138: 125(ptr) AccessChain 130(flattenTemp) 23
139: 6(float) Load 138
- Store 137(Depth) 139
+ Store 137(@entryPointOutput.Depth) 139
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.basic.dx10.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.basic.dx10.vert.out
index a41675c10b0..e8bcd66b2ba 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.basic.dx10.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.basic.dx10.vert.out
@@ -1,5 +1,5 @@
hlsl.load.basic.dx10.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:47 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:47 Function Parameters:
@@ -192,7 +192,7 @@ Shader version: 450
0:? Sequence
0:47 Sequence
0:47 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:47 Pos: direct index for structure ( temp 4-component vector of float)
0:47 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:47 Constant:
@@ -221,13 +221,13 @@ Shader version: 450
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? '@entryPointOutput' (layout( location=0) out structure{})
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:47 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:47 Function Parameters:
@@ -420,7 +420,7 @@ Shader version: 450
0:? Sequence
0:47 Sequence
0:47 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:47 Pos: direct index for structure ( temp 4-component vector of float)
0:47 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:47 Constant:
@@ -449,18 +449,19 @@ Shader version: 450
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? '@entryPointOutput' (layout( location=0) out structure{})
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 174
+// Generated by (magic number): 80002
+// Id's are bound by 171
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 129 173
+ EntryPoint Vertex 4 "main" 129
+ Source HLSL 500
Name 4 "main"
Name 8 "VS_OUTPUT"
MemberName 8(VS_OUTPUT) 0 "Pos"
@@ -485,7 +486,7 @@ Shader version: 450
Name 100 "g_tTex3di4"
Name 110 "g_tTex3du4"
Name 119 "vsout"
- Name 129 "@entryPointOutput_Pos"
+ Name 129 "@entryPointOutput.Pos"
Name 134 "g_sSamp"
Name 137 "g_tTexcdf4"
Name 140 "g_tTexcdi4"
@@ -499,8 +500,6 @@ Shader version: 450
Name 164 "g_tTexcdf4a"
Name 167 "g_tTexcdi4a"
Name 170 "g_tTexcdu4a"
- Name 171 "VS_OUTPUT"
- Name 173 "@entryPointOutput"
Decorate 14(g_tTex1df4) DescriptorSet 0
Decorate 14(g_tTex1df4) Binding 0
MemberDecorate 20($Global) 0 Offset 0
@@ -521,7 +520,7 @@ Shader version: 450
Decorate 87(g_tTex3df4) DescriptorSet 0
Decorate 100(g_tTex3di4) DescriptorSet 0
Decorate 110(g_tTex3du4) DescriptorSet 0
- Decorate 129(@entryPointOutput_Pos) BuiltIn Position
+ Decorate 129(@entryPointOutput.Pos) BuiltIn Position
Decorate 134(g_sSamp) DescriptorSet 0
Decorate 134(g_sSamp) Binding 0
Decorate 137(g_tTexcdf4) DescriptorSet 0
@@ -536,7 +535,6 @@ Shader version: 450
Decorate 164(g_tTexcdf4a) DescriptorSet 0
Decorate 167(g_tTexcdi4a) DescriptorSet 0
Decorate 170(g_tTexcdu4a) DescriptorSet 0
- Decorate 173(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -595,7 +593,7 @@ Shader version: 450
122: 7(fvec4) ConstantComposite 121 121 121 121
123: TypePointer Function 7(fvec4)
128: TypePointer Output 7(fvec4)
-129(@entryPointOutput_Pos): 128(ptr) Variable Output
+129(@entryPointOutput.Pos): 128(ptr) Variable Output
132: TypeSampler
133: TypePointer UniformConstant 132
134(g_sSamp): 133(ptr) Variable UniformConstant
@@ -635,14 +633,11 @@ Shader version: 450
168: TypeImage 24(int) Cube array sampled format:Unknown
169: TypePointer UniformConstant 168
170(g_tTexcdu4a): 169(ptr) Variable UniformConstant
- 171(VS_OUTPUT): TypeStruct
- 172: TypePointer Output 171(VS_OUTPUT)
-173(@entryPointOutput): 172(ptr) Variable Output
4(main): 2 Function None 3
5: Label
130:8(VS_OUTPUT) FunctionCall 10(@main()
131: 7(fvec4) CompositeExtract 130 0
- Store 129(@entryPointOutput_Pos) 131
+ Store 129(@entryPointOutput.Pos) 131
Return
FunctionEnd
10(@main():8(VS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.buffer.dx10.frag.out
index 134a7fdbca3..9f873af6e4e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.buffer.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.buffer.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.load.buffer.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -8,8 +8,8 @@ gl_FragCoord origin is upper left
0:28 Sequence
0:28 move second child to first child ( temp 4-component vector of float)
0:28 'r00' ( temp 4-component vector of float)
-0:28 imageLoad ( temp 4-component vector of float)
-0:28 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer)
+0:28 textureFetch ( temp 4-component vector of float)
+0:28 'g_tTexbf4' (layout( rgba32f) uniform textureBuffer)
0:28 c1: direct index for structure ( uniform int)
0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:28 Constant:
@@ -17,8 +17,8 @@ gl_FragCoord origin is upper left
0:29 Sequence
0:29 move second child to first child ( temp 4-component vector of int)
0:29 'r01' ( temp 4-component vector of int)
-0:29 imageLoad ( temp 4-component vector of int)
-0:29 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer)
+0:29 textureFetch ( temp 4-component vector of int)
+0:29 'g_tTexbi4' (layout( rgba32i) uniform itextureBuffer)
0:29 c1: direct index for structure ( uniform int)
0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:29 Constant:
@@ -26,8 +26,8 @@ gl_FragCoord origin is upper left
0:30 Sequence
0:30 move second child to first child ( temp 4-component vector of uint)
0:30 'r02' ( temp 4-component vector of uint)
-0:30 imageLoad ( temp 4-component vector of uint)
-0:30 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer)
+0:30 textureFetch ( temp 4-component vector of uint)
+0:30 'g_tTexbu4' (layout( rgba32ui) uniform utextureBuffer)
0:30 c1: direct index for structure ( uniform int)
0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:30 Constant:
@@ -59,31 +59,31 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 1 (const int)
0:? Linker Objects
-0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) readonly uniform imageBuffer)
-0:? 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer)
-0:? 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer)
-0:? 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer)
+0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) uniform textureBuffer)
+0:? 'g_tTexbf4' (layout( rgba32f) uniform textureBuffer)
+0:? 'g_tTexbi4' (layout( rgba32i) uniform itextureBuffer)
+0:? 'g_tTexbu4' (layout( rgba32ui) uniform utextureBuffer)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -92,8 +92,8 @@ gl_FragCoord origin is upper left
0:28 Sequence
0:28 move second child to first child ( temp 4-component vector of float)
0:28 'r00' ( temp 4-component vector of float)
-0:28 imageLoad ( temp 4-component vector of float)
-0:28 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer)
+0:28 textureFetch ( temp 4-component vector of float)
+0:28 'g_tTexbf4' (layout( rgba32f) uniform textureBuffer)
0:28 c1: direct index for structure ( uniform int)
0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:28 Constant:
@@ -101,8 +101,8 @@ gl_FragCoord origin is upper left
0:29 Sequence
0:29 move second child to first child ( temp 4-component vector of int)
0:29 'r01' ( temp 4-component vector of int)
-0:29 imageLoad ( temp 4-component vector of int)
-0:29 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer)
+0:29 textureFetch ( temp 4-component vector of int)
+0:29 'g_tTexbi4' (layout( rgba32i) uniform itextureBuffer)
0:29 c1: direct index for structure ( uniform int)
0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:29 Constant:
@@ -110,8 +110,8 @@ gl_FragCoord origin is upper left
0:30 Sequence
0:30 move second child to first child ( temp 4-component vector of uint)
0:30 'r02' ( temp 4-component vector of uint)
-0:30 imageLoad ( temp 4-component vector of uint)
-0:30 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer)
+0:30 textureFetch ( temp 4-component vector of uint)
+0:30 'g_tTexbu4' (layout( rgba32ui) uniform utextureBuffer)
0:30 c1: direct index for structure ( uniform int)
0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:30 Constant:
@@ -143,28 +143,28 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 1 (const int)
0:? Linker Objects
-0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) readonly uniform imageBuffer)
-0:? 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer)
-0:? 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer)
-0:? 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer)
+0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) uniform textureBuffer)
+0:? 'g_tTexbf4' (layout( rgba32f) uniform textureBuffer)
+0:? 'g_tTexbi4' (layout( rgba32i) uniform itextureBuffer)
+0:? 'g_tTexbu4' (layout( rgba32ui) uniform utextureBuffer)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 72
Capability Shader
@@ -173,6 +173,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 64 68
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -196,11 +197,10 @@ gl_FragCoord origin is upper left
Name 45 "g_tTexbu4"
Name 51 "psout"
Name 61 "flattenTemp"
- Name 64 "Color"
- Name 68 "Depth"
+ Name 64 "@entryPointOutput.Color"
+ Name 68 "@entryPointOutput.Depth"
Name 71 "g_tTexbf4_test"
Decorate 16(g_tTexbf4) DescriptorSet 0
- Decorate 16(g_tTexbf4) NonWritable
MemberDecorate 22($Global) 0 Offset 0
MemberDecorate 22($Global) 1 Offset 8
MemberDecorate 22($Global) 2 Offset 16
@@ -212,14 +212,11 @@ gl_FragCoord origin is upper left
Decorate 22($Global) Block
Decorate 24 DescriptorSet 0
Decorate 34(g_tTexbi4) DescriptorSet 0
- Decorate 34(g_tTexbi4) NonWritable
Decorate 45(g_tTexbu4) DescriptorSet 0
- Decorate 45(g_tTexbu4) NonWritable
- Decorate 64(Color) Location 0
- Decorate 68(Depth) BuiltIn FragDepth
+ Decorate 64(@entryPointOutput.Color) Location 0
+ Decorate 68(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 71(g_tTexbf4_test) DescriptorSet 0
Decorate 71(g_tTexbf4_test) Binding 0
- Decorate 71(g_tTexbf4_test) NonWritable
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -227,7 +224,7 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 7(fvec4)
- 14: TypeImage 6(float) Buffer nonsampled format:Rgba32f
+ 14: TypeImage 6(float) Buffer sampled format:Rgba32f
15: TypePointer UniformConstant 14
16(g_tTexbf4): 15(ptr) Variable UniformConstant
18: TypeInt 32 1
@@ -240,13 +237,13 @@ gl_FragCoord origin is upper left
25: 18(int) Constant 0
26: TypePointer Uniform 18(int)
30: TypePointer Function 21(ivec4)
- 32: TypeImage 18(int) Buffer nonsampled format:Rgba32i
+ 32: TypeImage 18(int) Buffer sampled format:Rgba32i
33: TypePointer UniformConstant 32
34(g_tTexbi4): 33(ptr) Variable UniformConstant
39: TypeInt 32 0
40: TypeVector 39(int) 4
41: TypePointer Function 40(ivec4)
- 43: TypeImage 39(int) Buffer nonsampled format:Rgba32ui
+ 43: TypeImage 39(int) Buffer sampled format:Rgba32ui
44: TypePointer UniformConstant 43
45(g_tTexbu4): 44(ptr) Variable UniformConstant
50: TypePointer Function 8(PS_OUTPUT)
@@ -255,9 +252,9 @@ gl_FragCoord origin is upper left
55: 18(int) Constant 1
56: TypePointer Function 6(float)
63: TypePointer Output 7(fvec4)
- 64(Color): 63(ptr) Variable Output
+64(@entryPointOutput.Color): 63(ptr) Variable Output
67: TypePointer Output 6(float)
- 68(Depth): 67(ptr) Variable Output
+68(@entryPointOutput.Depth): 67(ptr) Variable Output
71(g_tTexbf4_test): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -266,10 +263,10 @@ gl_FragCoord origin is upper left
Store 61(flattenTemp) 62
65: 12(ptr) AccessChain 61(flattenTemp) 25
66: 7(fvec4) Load 65
- Store 64(Color) 66
+ Store 64(@entryPointOutput.Color) 66
69: 56(ptr) AccessChain 61(flattenTemp) 55
70: 6(float) Load 69
- Store 68(Depth) 70
+ Store 68(@entryPointOutput.Depth) 70
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
@@ -281,17 +278,17 @@ gl_FragCoord origin is upper left
17: 14 Load 16(g_tTexbf4)
27: 26(ptr) AccessChain 24 25
28: 18(int) Load 27
- 29: 7(fvec4) ImageRead 17 28
+ 29: 7(fvec4) ImageFetch 17 28
Store 13(r00) 29
35: 32 Load 34(g_tTexbi4)
36: 26(ptr) AccessChain 24 25
37: 18(int) Load 36
- 38: 21(ivec4) ImageRead 35 37
+ 38: 21(ivec4) ImageFetch 35 37
Store 31(r01) 38
46: 43 Load 45(g_tTexbu4)
47: 26(ptr) AccessChain 24 25
48: 18(int) Load 47
- 49: 40(ivec4) ImageRead 46 48
+ 49: 40(ivec4) ImageFetch 46 48
Store 42(r02) 49
54: 12(ptr) AccessChain 51(psout) 25
Store 54 53
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
index 6ba3d993e40..085778dea64 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.load.buffer.float.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -9,8 +9,8 @@ gl_FragCoord origin is upper left
0:28 move second child to first child ( temp float)
0:28 'r00' ( temp float)
0:28 Construct float ( temp float)
-0:? imageLoad ( temp 4-component vector of float)
-0:28 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
+0:? textureFetch ( temp 4-component vector of float)
+0:28 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
0:28 c1: direct index for structure ( uniform int)
0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:28 Constant:
@@ -19,8 +19,8 @@ gl_FragCoord origin is upper left
0:29 move second child to first child ( temp int)
0:29 'r01' ( temp int)
0:29 Construct int ( temp int)
-0:? imageLoad ( temp 4-component vector of int)
-0:29 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer)
+0:? textureFetch ( temp 4-component vector of int)
+0:29 'g_tTexbis' (layout( r32i) uniform itextureBuffer)
0:29 c1: direct index for structure ( uniform int)
0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:29 Constant:
@@ -29,8 +29,8 @@ gl_FragCoord origin is upper left
0:30 move second child to first child ( temp uint)
0:30 'r02' ( temp uint)
0:30 Construct uint ( temp uint)
-0:? imageLoad ( temp 4-component vector of uint)
-0:30 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer)
+0:? textureFetch ( temp 4-component vector of uint)
+0:30 'g_tTexbus' (layout( r32ui) uniform utextureBuffer)
0:30 c1: direct index for structure ( uniform int)
0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:30 Constant:
@@ -62,31 +62,31 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 1 (const int)
0:? Linker Objects
-0:? 'g_tTexbfs_test' (layout( binding=0 r32f) readonly uniform imageBuffer)
-0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
-0:? 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer)
-0:? 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer)
+0:? 'g_tTexbfs_test' (layout( binding=0 r32f) uniform textureBuffer)
+0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
+0:? 'g_tTexbis' (layout( r32i) uniform itextureBuffer)
+0:? 'g_tTexbus' (layout( r32ui) uniform utextureBuffer)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -96,8 +96,8 @@ gl_FragCoord origin is upper left
0:28 move second child to first child ( temp float)
0:28 'r00' ( temp float)
0:28 Construct float ( temp float)
-0:? imageLoad ( temp 4-component vector of float)
-0:28 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
+0:? textureFetch ( temp 4-component vector of float)
+0:28 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
0:28 c1: direct index for structure ( uniform int)
0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:28 Constant:
@@ -106,8 +106,8 @@ gl_FragCoord origin is upper left
0:29 move second child to first child ( temp int)
0:29 'r01' ( temp int)
0:29 Construct int ( temp int)
-0:? imageLoad ( temp 4-component vector of int)
-0:29 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer)
+0:? textureFetch ( temp 4-component vector of int)
+0:29 'g_tTexbis' (layout( r32i) uniform itextureBuffer)
0:29 c1: direct index for structure ( uniform int)
0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:29 Constant:
@@ -116,8 +116,8 @@ gl_FragCoord origin is upper left
0:30 move second child to first child ( temp uint)
0:30 'r02' ( temp uint)
0:30 Construct uint ( temp uint)
-0:? imageLoad ( temp 4-component vector of uint)
-0:30 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer)
+0:? textureFetch ( temp 4-component vector of uint)
+0:30 'g_tTexbus' (layout( r32ui) uniform utextureBuffer)
0:30 c1: direct index for structure ( uniform int)
0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
0:30 Constant:
@@ -149,28 +149,28 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 1 (const int)
0:? Linker Objects
-0:? 'g_tTexbfs_test' (layout( binding=0 r32f) readonly uniform imageBuffer)
-0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
-0:? 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer)
-0:? 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer)
+0:? 'g_tTexbfs_test' (layout( binding=0 r32f) uniform textureBuffer)
+0:? 'g_tTexbfs' (layout( r32f) uniform textureBuffer)
+0:? 'g_tTexbis' (layout( r32i) uniform itextureBuffer)
+0:? 'g_tTexbus' (layout( r32ui) uniform utextureBuffer)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 75
Capability Shader
@@ -179,6 +179,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 67 71
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -202,11 +203,10 @@ gl_FragCoord origin is upper left
Name 46 "g_tTexbus"
Name 54 "psout"
Name 64 "flattenTemp"
- Name 67 "Color"
- Name 71 "Depth"
+ Name 67 "@entryPointOutput.Color"
+ Name 71 "@entryPointOutput.Depth"
Name 74 "g_tTexbfs_test"
Decorate 16(g_tTexbfs) DescriptorSet 0
- Decorate 16(g_tTexbfs) NonWritable
MemberDecorate 22($Global) 0 Offset 0
MemberDecorate 22($Global) 1 Offset 8
MemberDecorate 22($Global) 2 Offset 16
@@ -218,14 +218,11 @@ gl_FragCoord origin is upper left
Decorate 22($Global) Block
Decorate 24 DescriptorSet 0
Decorate 35(g_tTexbis) DescriptorSet 0
- Decorate 35(g_tTexbis) NonWritable
Decorate 46(g_tTexbus) DescriptorSet 0
- Decorate 46(g_tTexbus) NonWritable
- Decorate 67(Color) Location 0
- Decorate 71(Depth) BuiltIn FragDepth
+ Decorate 67(@entryPointOutput.Color) Location 0
+ Decorate 71(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 74(g_tTexbfs_test) DescriptorSet 0
Decorate 74(g_tTexbfs_test) Binding 0
- Decorate 74(g_tTexbfs_test) NonWritable
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -233,7 +230,7 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 6(float)
- 14: TypeImage 6(float) Buffer nonsampled format:R32f
+ 14: TypeImage 6(float) Buffer sampled format:R32f
15: TypePointer UniformConstant 14
16(g_tTexbfs): 15(ptr) Variable UniformConstant
18: TypeInt 32 1
@@ -246,12 +243,12 @@ gl_FragCoord origin is upper left
25: 18(int) Constant 0
26: TypePointer Uniform 18(int)
31: TypePointer Function 18(int)
- 33: TypeImage 18(int) Buffer nonsampled format:R32i
+ 33: TypeImage 18(int) Buffer sampled format:R32i
34: TypePointer UniformConstant 33
35(g_tTexbis): 34(ptr) Variable UniformConstant
41: TypeInt 32 0
42: TypePointer Function 41(int)
- 44: TypeImage 41(int) Buffer nonsampled format:R32ui
+ 44: TypeImage 41(int) Buffer sampled format:R32ui
45: TypePointer UniformConstant 44
46(g_tTexbus): 45(ptr) Variable UniformConstant
50: TypeVector 41(int) 4
@@ -261,9 +258,9 @@ gl_FragCoord origin is upper left
57: TypePointer Function 7(fvec4)
59: 18(int) Constant 1
66: TypePointer Output 7(fvec4)
- 67(Color): 66(ptr) Variable Output
+67(@entryPointOutput.Color): 66(ptr) Variable Output
70: TypePointer Output 6(float)
- 71(Depth): 70(ptr) Variable Output
+71(@entryPointOutput.Depth): 70(ptr) Variable Output
74(g_tTexbfs_test): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -272,10 +269,10 @@ gl_FragCoord origin is upper left
Store 64(flattenTemp) 65
68: 57(ptr) AccessChain 64(flattenTemp) 25
69: 7(fvec4) Load 68
- Store 67(Color) 69
+ Store 67(@entryPointOutput.Color) 69
72: 12(ptr) AccessChain 64(flattenTemp) 59
73: 6(float) Load 72
- Store 71(Depth) 73
+ Store 71(@entryPointOutput.Depth) 73
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
@@ -287,19 +284,19 @@ gl_FragCoord origin is upper left
17: 14 Load 16(g_tTexbfs)
27: 26(ptr) AccessChain 24 25
28: 18(int) Load 27
- 29: 7(fvec4) ImageRead 17 28
+ 29: 7(fvec4) ImageFetch 17 28
30: 6(float) CompositeExtract 29 0
Store 13(r00) 30
36: 33 Load 35(g_tTexbis)
37: 26(ptr) AccessChain 24 25
38: 18(int) Load 37
- 39: 21(ivec4) ImageRead 36 38
+ 39: 21(ivec4) ImageFetch 36 38
40: 18(int) CompositeExtract 39 0
Store 32(r01) 40
47: 44 Load 46(g_tTexbus)
48: 26(ptr) AccessChain 24 25
49: 18(int) Load 48
- 51: 50(ivec4) ImageRead 47 49
+ 51: 50(ivec4) ImageFetch 47 49
52: 41(int) CompositeExtract 51 0
Store 43(r02) 52
58: 57(ptr) AccessChain 54(psout) 25
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.offset.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.offset.dx10.frag.out
index 7d6c63ab91a..7cd6b01f62a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.offset.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.offset.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.load.offset.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -239,13 +239,13 @@ gl_FragCoord origin is upper left
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:48 Color: direct index for structure ( temp 4-component vector of float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 0 (const int)
0:48 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:48 Depth: direct index for structure ( temp float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
@@ -274,14 +274,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -521,13 +521,13 @@ gl_FragCoord origin is upper left
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:48 Color: direct index for structure ( temp 4-component vector of float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 0 (const int)
0:48 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:48 Depth: direct index for structure ( temp float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
@@ -556,11 +556,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 201
Capability Shader
@@ -571,6 +571,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 155 159
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -597,8 +598,8 @@ gl_FragCoord origin is upper left
Name 130 "g_tTex3du4"
Name 141 "psout"
Name 152 "flattenTemp"
- Name 155 "Color"
- Name 159 "Depth"
+ Name 155 "@entryPointOutput.Color"
+ Name 159 "@entryPointOutput.Depth"
Name 164 "g_sSamp"
Name 167 "g_tTexcdf4"
Name 170 "g_tTexcdi4"
@@ -632,8 +633,8 @@ gl_FragCoord origin is upper left
Decorate 102(g_tTex3df4) DescriptorSet 0
Decorate 118(g_tTex3di4) DescriptorSet 0
Decorate 130(g_tTex3du4) DescriptorSet 0
- Decorate 155(Color) Location 0
- Decorate 159(Depth) BuiltIn FragDepth
+ Decorate 155(@entryPointOutput.Color) Location 0
+ Decorate 159(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 164(g_sSamp) DescriptorSet 0
Decorate 164(g_sSamp) Binding 0
Decorate 167(g_tTexcdf4) DescriptorSet 0
@@ -711,9 +712,9 @@ gl_FragCoord origin is upper left
145: TypePointer Function 7(fvec4)
147: TypePointer Function 6(float)
154: TypePointer Output 7(fvec4)
- 155(Color): 154(ptr) Variable Output
+155(@entryPointOutput.Color): 154(ptr) Variable Output
158: TypePointer Output 6(float)
- 159(Depth): 158(ptr) Variable Output
+159(@entryPointOutput.Depth): 158(ptr) Variable Output
162: TypeSampler
163: TypePointer UniformConstant 162
164(g_sSamp): 163(ptr) Variable UniformConstant
@@ -760,10 +761,10 @@ gl_FragCoord origin is upper left
Store 152(flattenTemp) 153
156: 145(ptr) AccessChain 152(flattenTemp) 142
157: 7(fvec4) Load 156
- Store 155(Color) 157
+ Store 155(@entryPointOutput.Color) 157
160: 147(ptr) AccessChain 152(flattenTemp) 23
161: 6(float) Load 160
- Store 159(Depth) 161
+ Store 159(@entryPointOutput.Depth) 161
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
index f20b6075d99..df03bfcf533 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.load.offsetarray.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -176,13 +176,13 @@ gl_FragCoord origin is upper left
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:48 Color: direct index for structure ( temp 4-component vector of float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 0 (const int)
0:48 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:48 Depth: direct index for structure ( temp float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
@@ -211,14 +211,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:48 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -395,13 +395,13 @@ gl_FragCoord origin is upper left
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:48 Color: direct index for structure ( temp 4-component vector of float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 0 (const int)
0:48 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:48 Depth: direct index for structure ( temp float)
0:48 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
@@ -430,11 +430,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 174
Capability Shader
@@ -445,6 +445,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 119 123
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -468,8 +469,8 @@ gl_FragCoord origin is upper left
Name 93 "g_tTex2du4a"
Name 104 "psout"
Name 116 "flattenTemp"
- Name 119 "Color"
- Name 123 "Depth"
+ Name 119 "@entryPointOutput.Color"
+ Name 123 "@entryPointOutput.Depth"
Name 128 "g_sSamp"
Name 131 "g_tTex1df4"
Name 134 "g_tTex1di4"
@@ -502,8 +503,8 @@ gl_FragCoord origin is upper left
Decorate 64(g_tTex2df4a) DescriptorSet 0
Decorate 81(g_tTex2di4a) DescriptorSet 0
Decorate 93(g_tTex2du4a) DescriptorSet 0
- Decorate 119(Color) Location 0
- Decorate 123(Depth) BuiltIn FragDepth
+ Decorate 119(@entryPointOutput.Color) Location 0
+ Decorate 123(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 128(g_sSamp) DescriptorSet 0
Decorate 128(g_sSamp) Binding 0
Decorate 131(g_tTex1df4) DescriptorSet 0
@@ -573,9 +574,9 @@ gl_FragCoord origin is upper left
110: 16(int) Constant 1
111: TypePointer Function 6(float)
118: TypePointer Output 7(fvec4)
- 119(Color): 118(ptr) Variable Output
+119(@entryPointOutput.Color): 118(ptr) Variable Output
122: TypePointer Output 6(float)
- 123(Depth): 122(ptr) Variable Output
+123(@entryPointOutput.Depth): 122(ptr) Variable Output
126: TypeSampler
127: TypePointer UniformConstant 126
128(g_sSamp): 127(ptr) Variable UniformConstant
@@ -631,10 +632,10 @@ gl_FragCoord origin is upper left
Store 116(flattenTemp) 117
120: 108(ptr) AccessChain 116(flattenTemp) 105
121: 7(fvec4) Load 120
- Store 119(Color) 121
+ Store 119(@entryPointOutput.Color) 121
124: 111(ptr) AccessChain 116(flattenTemp) 110
125: 6(float) Load 124
- Store 123(Depth) 125
+ Store 123(@entryPointOutput.Depth) 125
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
index ea8bdd2dda4..4bfc56aa685 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.load.rwbuffer.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:22 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -40,7 +40,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:22 Sequence
0:22 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:22 Color: direct index for structure ( temp 4-component vector of float)
0:22 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:22 Constant:
@@ -50,13 +50,13 @@ gl_FragCoord origin is upper left
0:? 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer)
0:? 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:22 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -97,7 +97,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:22 Sequence
0:22 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:22 Color: direct index for structure ( temp 4-component vector of float)
0:22 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:22 Constant:
@@ -107,18 +107,19 @@ gl_FragCoord origin is upper left
0:? 'g_tBuffI' (layout( rgba32i) uniform iimageBuffer)
0:? 'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 57
Capability Shader
- Capability SampledBuffer
+ Capability ImageBuffer
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 54
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -137,7 +138,7 @@ gl_FragCoord origin is upper left
Name 31 "g_tBuffU"
Name 39 "g_tBuffI"
Name 45 "psout"
- Name 54 "Color"
+ Name 54 "@entryPointOutput.Color"
Decorate 14(g_tBuffF) DescriptorSet 0
MemberDecorate 20($Global) 0 Offset 0
MemberDecorate 20($Global) 1 Offset 8
@@ -151,7 +152,7 @@ gl_FragCoord origin is upper left
Decorate 22 DescriptorSet 0
Decorate 31(g_tBuffU) DescriptorSet 0
Decorate 39(g_tBuffI) DescriptorSet 0
- Decorate 54(Color) Location 0
+ Decorate 54(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -183,12 +184,12 @@ gl_FragCoord origin is upper left
47: 7(fvec4) ConstantComposite 46 46 46 46
48: TypePointer Function 7(fvec4)
53: TypePointer Output 7(fvec4)
- 54(Color): 53(ptr) Variable Output
+54(@entryPointOutput.Color): 53(ptr) Variable Output
4(main): 2 Function None 3
5: Label
55:8(PS_OUTPUT) FunctionCall 10(@main()
56: 7(fvec4) CompositeExtract 55 0
- Store 54(Color) 56
+ Store 54(@entryPointOutput.Color) 56
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
index fba29c13e44..d4960adfd22 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.load.rwtexture.array.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -68,13 +68,13 @@ gl_FragCoord origin is upper left
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:40 Color: direct index for structure ( temp 4-component vector of float)
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:40 Depth: direct index for structure ( temp float)
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
@@ -97,14 +97,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray)
0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -173,13 +173,13 @@ gl_FragCoord origin is upper left
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:40 Color: direct index for structure ( temp 4-component vector of float)
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:40 Depth: direct index for structure ( temp float)
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
@@ -202,19 +202,20 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray)
0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 119
Capability Shader
- Capability Sampled1D
+ Capability Image1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 82 86
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -238,8 +239,8 @@ gl_FragCoord origin is upper left
Name 62 "g_tTex2du4a"
Name 68 "psout"
Name 79 "flattenTemp"
- Name 82 "Color"
- Name 86 "Depth"
+ Name 82 "@entryPointOutput.Color"
+ Name 86 "@entryPointOutput.Depth"
Name 91 "g_sSamp"
Name 94 "g_tTex1df4"
Name 97 "g_tTex1di4"
@@ -266,8 +267,8 @@ gl_FragCoord origin is upper left
Decorate 46(g_tTex2df4a) DescriptorSet 0
Decorate 55(g_tTex2di4a) DescriptorSet 0
Decorate 62(g_tTex2du4a) DescriptorSet 0
- Decorate 82(Color) Location 0
- Decorate 86(Depth) BuiltIn FragDepth
+ Decorate 82(@entryPointOutput.Color) Location 0
+ Decorate 86(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 91(g_sSamp) DescriptorSet 0
Decorate 91(g_sSamp) Binding 0
Decorate 94(g_tTex1df4) DescriptorSet 0
@@ -324,9 +325,9 @@ gl_FragCoord origin is upper left
72: TypePointer Function 7(fvec4)
74: TypePointer Function 6(float)
81: TypePointer Output 7(fvec4)
- 82(Color): 81(ptr) Variable Output
+82(@entryPointOutput.Color): 81(ptr) Variable Output
85: TypePointer Output 6(float)
- 86(Depth): 85(ptr) Variable Output
+86(@entryPointOutput.Depth): 85(ptr) Variable Output
89: TypeSampler
90: TypePointer UniformConstant 89
91(g_sSamp): 90(ptr) Variable UniformConstant
@@ -364,10 +365,10 @@ gl_FragCoord origin is upper left
Store 79(flattenTemp) 80
83: 72(ptr) AccessChain 79(flattenTemp) 69
84: 7(fvec4) Load 83
- Store 82(Color) 84
+ Store 82(@entryPointOutput.Color) 84
87: 74(ptr) AccessChain 79(flattenTemp) 23
88: 6(float) Load 87
- Store 86(Depth) 88
+ Store 86(@entryPointOutput.Depth) 88
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
index 2b05b31d065..e86fc35bb24 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.load.rwtexture.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -86,13 +86,13 @@ gl_FragCoord origin is upper left
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:40 Color: direct index for structure ( temp 4-component vector of float)
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:40 Depth: direct index for structure ( temp float)
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
@@ -115,14 +115,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray)
0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -209,13 +209,13 @@ gl_FragCoord origin is upper left
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:40 Color: direct index for structure ( temp 4-component vector of float)
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:40 Depth: direct index for structure ( temp float)
0:40 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
@@ -238,19 +238,20 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray)
0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 132
Capability Shader
- Capability Sampled1D
+ Capability Image1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 104 108
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -277,8 +278,8 @@ gl_FragCoord origin is upper left
Name 85 "g_tTex3du4"
Name 91 "psout"
Name 101 "flattenTemp"
- Name 104 "Color"
- Name 108 "Depth"
+ Name 104 "@entryPointOutput.Color"
+ Name 108 "@entryPointOutput.Depth"
Name 113 "g_sSamp"
Name 116 "g_tTex1df4a"
Name 119 "g_tTex1di4a"
@@ -306,8 +307,8 @@ gl_FragCoord origin is upper left
Decorate 69(g_tTex3df4) DescriptorSet 0
Decorate 78(g_tTex3di4) DescriptorSet 0
Decorate 85(g_tTex3du4) DescriptorSet 0
- Decorate 104(Color) Location 0
- Decorate 108(Depth) BuiltIn FragDepth
+ Decorate 104(@entryPointOutput.Color) Location 0
+ Decorate 108(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 113(g_sSamp) DescriptorSet 0
Decorate 113(g_sSamp) Binding 0
Decorate 116(g_tTex1df4a) DescriptorSet 0
@@ -370,9 +371,9 @@ gl_FragCoord origin is upper left
94: TypePointer Function 7(fvec4)
96: TypePointer Function 6(float)
103: TypePointer Output 7(fvec4)
- 104(Color): 103(ptr) Variable Output
+104(@entryPointOutput.Color): 103(ptr) Variable Output
107: TypePointer Output 6(float)
- 108(Depth): 107(ptr) Variable Output
+108(@entryPointOutput.Depth): 107(ptr) Variable Output
111: TypeSampler
112: TypePointer UniformConstant 111
113(g_sSamp): 112(ptr) Variable UniformConstant
@@ -401,10 +402,10 @@ gl_FragCoord origin is upper left
Store 101(flattenTemp) 102
105: 94(ptr) AccessChain 101(flattenTemp) 23
106: 7(fvec4) Load 105
- Store 104(Color) 106
+ Store 104(@entryPointOutput.Color) 106
109: 96(ptr) AccessChain 101(flattenTemp) 48
110: 6(float) Load 109
- Store 108(Depth) 110
+ Store 108(@entryPointOutput.Depth) 110
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.localStructuredBuffer.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.localStructuredBuffer.comp.out
new file mode 100644
index 00000000000..98257f4fe7c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.localStructuredBuffer.comp.out
@@ -0,0 +1,64 @@
+hlsl.localStructuredBuffer.comp
+Shader version: 500
+local_size = (1, 1, 1)
+0:? Sequence
+0:2 Function Definition: @main( ( temp void)
+0:2 Function Parameters:
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'srt0' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (1, 1, 1)
+0:? Sequence
+0:2 Function Definition: @main( ( temp void)
+0:2 Function Parameters:
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'srt0' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 14
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main"
+ ExecutionMode 4 LocalSize 1 1 1
+ Source HLSL 500
+ Name 4 "main"
+ Name 6 "@main("
+ Name 11 "srt0"
+ MemberName 11(srt0) 0 "@data"
+ Name 13 "srt0"
+ Decorate 10 ArrayStride 4
+ MemberDecorate 11(srt0) 0 Offset 0
+ Decorate 11(srt0) BufferBlock
+ Decorate 13(srt0) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 9: TypeInt 32 0
+ 10: TypeRuntimeArray 9(int)
+ 11(srt0): TypeStruct 10
+ 12: TypePointer Uniform 11(srt0)
+ 13(srt0): 12(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 8: 2 FunctionCall 6(@main()
+ Return
+ FunctionEnd
+ 6(@main(): 2 Function None 3
+ 7: Label
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.binary.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.binary.frag.out
index 7aec2756537..de1b3f3359a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.binary.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.binary.frag.out
@@ -1,5 +1,5 @@
hlsl.logical.binary.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -52,20 +52,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 Sequence
0:12 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:12 Color: direct index for structure ( temp 4-component vector of float)
0:12 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:12 Constant:
0:12 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -118,116 +118,106 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 Sequence
0:12 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:12 Color: direct index for structure ( temp 4-component vector of float)
0:12 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:12 Constant:
0:12 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 62
+// Generated by (magic number): 80002
+// Id's are bound by 57
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 59
+ EntryPoint Fragment 4 "main" 54
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
Name 10 "@main("
- Name 15 "$Global"
- MemberName 15($Global) 0 "ival"
- MemberName 15($Global) 1 "ival4"
- MemberName 15($Global) 2 "fval"
- MemberName 15($Global) 3 "fval4"
- Name 17 ""
- Name 50 "psout"
- Name 59 "Color"
- MemberDecorate 15($Global) 0 Offset 0
- MemberDecorate 15($Global) 1 Offset 16
- MemberDecorate 15($Global) 2 Offset 32
- MemberDecorate 15($Global) 3 Offset 48
- Decorate 15($Global) Block
- Decorate 17 DescriptorSet 0
- Decorate 59(Color) Location 0
+ Name 14 "$Global"
+ MemberName 14($Global) 0 "ival"
+ MemberName 14($Global) 1 "ival4"
+ MemberName 14($Global) 2 "fval"
+ MemberName 14($Global) 3 "fval4"
+ Name 16 ""
+ Name 45 "psout"
+ Name 54 "@entryPointOutput.Color"
+ MemberDecorate 14($Global) 0 Offset 0
+ MemberDecorate 14($Global) 1 Offset 16
+ MemberDecorate 14($Global) 2 Offset 32
+ MemberDecorate 14($Global) 3 Offset 48
+ Decorate 14($Global) Block
+ Decorate 16 DescriptorSet 0
+ Decorate 54(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8(PS_OUTPUT): TypeStruct 7(fvec4)
9: TypeFunction 8(PS_OUTPUT)
- 12: TypeBool
- 13: TypeInt 32 1
- 14: TypeVector 13(int) 4
- 15($Global): TypeStruct 13(int) 14(ivec4) 6(float) 7(fvec4)
- 16: TypePointer Uniform 15($Global)
- 17: 16(ptr) Variable Uniform
- 18: 13(int) Constant 0
- 19: TypePointer Uniform 13(int)
+ 12: TypeInt 32 1
+ 13: TypeVector 12(int) 4
+ 14($Global): TypeStruct 12(int) 13(ivec4) 6(float) 7(fvec4)
+ 15: TypePointer Uniform 14($Global)
+ 16: 15(ptr) Variable Uniform
+ 17: 12(int) Constant 0
+ 18: TypePointer Uniform 12(int)
+ 21: TypeBool
22: TypeInt 32 0
23: 22(int) Constant 0
- 27: 13(int) Constant 2
- 28: TypePointer Uniform 6(float)
- 49: TypePointer Function 8(PS_OUTPUT)
- 51: 6(float) Constant 1065353216
- 52: 7(fvec4) ConstantComposite 51 51 51 51
- 53: TypePointer Function 7(fvec4)
- 58: TypePointer Output 7(fvec4)
- 59(Color): 58(ptr) Variable Output
+ 25: 12(int) Constant 2
+ 26: TypePointer Uniform 6(float)
+ 44: TypePointer Function 8(PS_OUTPUT)
+ 46: 6(float) Constant 1065353216
+ 47: 7(fvec4) ConstantComposite 46 46 46 46
+ 48: TypePointer Function 7(fvec4)
+ 53: TypePointer Output 7(fvec4)
+54(@entryPointOutput.Color): 53(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 60:8(PS_OUTPUT) FunctionCall 10(@main()
- 61: 7(fvec4) CompositeExtract 60 0
- Store 59(Color) 61
+ 55:8(PS_OUTPUT) FunctionCall 10(@main()
+ 56: 7(fvec4) CompositeExtract 55 0
+ Store 54(@entryPointOutput.Color) 56
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
- 50(psout): 49(ptr) Variable Function
- 20: 19(ptr) AccessChain 17 18
- 21: 13(int) Load 20
- 24: 12(bool) INotEqual 21 23
- SelectionMerge 26 None
- BranchConditional 24 25 26
- 25: Label
- 29: 28(ptr) AccessChain 17 27
- 30: 6(float) Load 29
- 31: 13(int) ConvertFToS 30
- 32: 12(bool) INotEqual 31 23
- Branch 26
- 26: Label
- 33: 12(bool) Phi 24 11 32 25
- SelectionMerge 35 None
- BranchConditional 33 34 35
- 34: Label
- Branch 35
- 35: Label
- 36: 19(ptr) AccessChain 17 18
- 37: 13(int) Load 36
- 38: 12(bool) INotEqual 37 23
- 39: 12(bool) LogicalNot 38
- SelectionMerge 41 None
- BranchConditional 39 40 41
- 40: Label
- 42: 28(ptr) AccessChain 17 27
- 43: 6(float) Load 42
- 44: 13(int) ConvertFToS 43
- 45: 12(bool) INotEqual 44 23
- Branch 41
- 41: Label
- 46: 12(bool) Phi 38 35 45 40
- SelectionMerge 48 None
- BranchConditional 46 47 48
- 47: Label
- Branch 48
- 48: Label
- 54: 53(ptr) AccessChain 50(psout) 18
- Store 54 52
- 55:8(PS_OUTPUT) Load 50(psout)
- ReturnValue 55
+ 45(psout): 44(ptr) Variable Function
+ 19: 18(ptr) AccessChain 16 17
+ 20: 12(int) Load 19
+ 24: 21(bool) INotEqual 20 23
+ 27: 26(ptr) AccessChain 16 25
+ 28: 6(float) Load 27
+ 29: 12(int) ConvertFToS 28
+ 30: 21(bool) INotEqual 29 23
+ 31: 21(bool) LogicalAnd 24 30
+ SelectionMerge 33 None
+ BranchConditional 31 32 33
+ 32: Label
+ Branch 33
+ 33: Label
+ 34: 18(ptr) AccessChain 16 17
+ 35: 12(int) Load 34
+ 36: 21(bool) INotEqual 35 23
+ 37: 26(ptr) AccessChain 16 25
+ 38: 6(float) Load 37
+ 39: 12(int) ConvertFToS 38
+ 40: 21(bool) INotEqual 39 23
+ 41: 21(bool) LogicalOr 36 40
+ SelectionMerge 43 None
+ BranchConditional 41 42 43
+ 42: Label
+ Branch 43
+ 43: Label
+ 49: 48(ptr) AccessChain 45(psout) 17
+ Store 49 47
+ 50:8(PS_OUTPUT) Load 45(psout)
+ ReturnValue 50
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.binary.vec.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.binary.vec.frag.out
index 38708ef7e02..2409b0e1113 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.binary.vec.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.binary.vec.frag.out
@@ -1,5 +1,5 @@
hlsl.logical.binary.vec.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -115,20 +115,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:10 Sequence
0:10 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:10 Color: direct index for structure ( temp 4-component vector of float)
0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:10 Constant:
0:10 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -244,24 +244,25 @@ gl_FragCoord origin is upper left
0:? Sequence
0:10 Sequence
0:10 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:10 Color: direct index for structure ( temp 4-component vector of float)
0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:10 Constant:
0:10 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a, uniform 4-component vector of bool b4b, uniform bool b1a, uniform bool b1b})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 120
+// Generated by (magic number): 80002
+// Id's are bound by 115
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 117
+ EntryPoint Fragment 4 "main" 112
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -278,16 +279,16 @@ gl_FragCoord origin is upper left
Name 47 "r10"
Name 58 "r11"
Name 67 "r20"
- Name 79 "r21"
- Name 92 "psout"
- Name 117 "Color"
+ Name 77 "r21"
+ Name 87 "psout"
+ Name 112 "@entryPointOutput.Color"
MemberDecorate 18($Global) 0 Offset 0
MemberDecorate 18($Global) 1 Offset 16
MemberDecorate 18($Global) 2 Offset 32
MemberDecorate 18($Global) 3 Offset 36
Decorate 18($Global) Block
Decorate 20 DescriptorSet 0
- Decorate 117(Color) Location 0
+ Decorate 112(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -310,20 +311,20 @@ gl_FragCoord origin is upper left
34: 21(int) Constant 1
48: 21(int) Constant 2
49: TypePointer Uniform 16(int)
- 73: 21(int) Constant 3
- 91: TypePointer Function 8(PS_OUTPUT)
- 106: 6(float) Constant 0
- 107: 6(float) Constant 1065353216
- 108: 7(fvec4) ConstantComposite 106 106 106 106
- 109: 7(fvec4) ConstantComposite 107 107 107 107
- 111: TypePointer Function 7(fvec4)
- 116: TypePointer Output 7(fvec4)
- 117(Color): 116(ptr) Variable Output
+ 71: 21(int) Constant 3
+ 86: TypePointer Function 8(PS_OUTPUT)
+ 101: 6(float) Constant 0
+ 102: 6(float) Constant 1065353216
+ 103: 7(fvec4) ConstantComposite 101 101 101 101
+ 104: 7(fvec4) ConstantComposite 102 102 102 102
+ 106: TypePointer Function 7(fvec4)
+ 111: TypePointer Output 7(fvec4)
+112(@entryPointOutput.Color): 111(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 118:8(PS_OUTPUT) FunctionCall 10(@main()
- 119: 7(fvec4) CompositeExtract 118 0
- Store 117(Color) 119
+ 113:8(PS_OUTPUT) FunctionCall 10(@main()
+ 114: 7(fvec4) CompositeExtract 113 0
+ Store 112(@entryPointOutput.Color) 114
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
@@ -334,8 +335,8 @@ gl_FragCoord origin is upper left
47(r10): 14(ptr) Variable Function
58(r11): 14(ptr) Variable Function
67(r20): 14(ptr) Variable Function
- 79(r21): 14(ptr) Variable Function
- 92(psout): 91(ptr) Variable Function
+ 77(r21): 14(ptr) Variable Function
+ 87(psout): 86(ptr) Variable Function
24: 23(ptr) AccessChain 20 22
25: 17(ivec4) Load 24
28: 13(bvec4) INotEqual 25 27
@@ -378,48 +379,37 @@ gl_FragCoord origin is upper left
68: 23(ptr) AccessChain 20 22
69: 17(ivec4) Load 68
70: 13(bvec4) INotEqual 69 27
- SelectionMerge 72 None
- BranchConditional 70 71 72
- 71: Label
- 74: 49(ptr) AccessChain 20 73
- 75: 16(int) Load 74
- 76: 12(bool) INotEqual 75 26
- 77: 13(bvec4) CompositeConstruct 76 76 76 76
- Branch 72
- 72: Label
- 78: 12(bool) Phi 70 11 77 71
- Store 67(r20) 78
- 80: 23(ptr) AccessChain 20 22
- 81: 17(ivec4) Load 80
- 82: 13(bvec4) INotEqual 81 27
- 83: 12(bool) LogicalNot 82
- SelectionMerge 85 None
- BranchConditional 83 84 85
- 84: Label
- 86: 49(ptr) AccessChain 20 73
- 87: 16(int) Load 86
- 88: 12(bool) INotEqual 87 26
- 89: 13(bvec4) CompositeConstruct 88 88 88 88
- Branch 85
- 85: Label
- 90: 12(bool) Phi 82 72 89 84
- Store 79(r21) 90
- 93: 13(bvec4) Load 15(r00)
- 94: 13(bvec4) Load 30(r01)
- 95: 13(bvec4) LogicalOr 93 94
- 96: 13(bvec4) Load 39(r02)
- 97: 13(bvec4) LogicalOr 95 96
- 98: 13(bvec4) Load 47(r10)
- 99: 13(bvec4) LogicalOr 97 98
- 100: 13(bvec4) Load 58(r11)
- 101: 13(bvec4) LogicalOr 99 100
- 102: 13(bvec4) Load 67(r20)
- 103: 13(bvec4) LogicalOr 101 102
- 104: 13(bvec4) Load 79(r21)
- 105: 13(bvec4) LogicalOr 103 104
- 110: 7(fvec4) Select 105 109 108
- 112: 111(ptr) AccessChain 92(psout) 22
- Store 112 110
- 113:8(PS_OUTPUT) Load 92(psout)
- ReturnValue 113
+ 72: 49(ptr) AccessChain 20 71
+ 73: 16(int) Load 72
+ 74: 12(bool) INotEqual 73 26
+ 75: 13(bvec4) CompositeConstruct 74 74 74 74
+ 76: 13(bvec4) LogicalAnd 70 75
+ Store 67(r20) 76
+ 78: 23(ptr) AccessChain 20 22
+ 79: 17(ivec4) Load 78
+ 80: 13(bvec4) INotEqual 79 27
+ 81: 49(ptr) AccessChain 20 71
+ 82: 16(int) Load 81
+ 83: 12(bool) INotEqual 82 26
+ 84: 13(bvec4) CompositeConstruct 83 83 83 83
+ 85: 13(bvec4) LogicalOr 80 84
+ Store 77(r21) 85
+ 88: 13(bvec4) Load 15(r00)
+ 89: 13(bvec4) Load 30(r01)
+ 90: 13(bvec4) LogicalOr 88 89
+ 91: 13(bvec4) Load 39(r02)
+ 92: 13(bvec4) LogicalOr 90 91
+ 93: 13(bvec4) Load 47(r10)
+ 94: 13(bvec4) LogicalOr 92 93
+ 95: 13(bvec4) Load 58(r11)
+ 96: 13(bvec4) LogicalOr 94 95
+ 97: 13(bvec4) Load 67(r20)
+ 98: 13(bvec4) LogicalOr 96 97
+ 99: 13(bvec4) Load 77(r21)
+ 100: 13(bvec4) LogicalOr 98 99
+ 105: 7(fvec4) Select 100 104 103
+ 107: 106(ptr) AccessChain 87(psout) 22
+ Store 107 105
+ 108:8(PS_OUTPUT) Load 87(psout)
+ ReturnValue 108
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.unary.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.unary.frag.out
index 414879469dc..7d7cbf764a3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.unary.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logical.unary.frag.out
@@ -1,5 +1,5 @@
hlsl.logical.unary.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -31,17 +31,19 @@ gl_FragCoord origin is upper left
0:17 3 (const uint)
0:19 Test condition and select ( temp void)
0:19 Condition
-0:19 ival: direct index for structure ( uniform int)
-0:19 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
-0:19 Constant:
-0:19 0 (const uint)
+0:19 Convert int to bool ( temp bool)
+0:19 ival: direct index for structure ( uniform int)
+0:19 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
+0:19 Constant:
+0:19 0 (const uint)
0:19 true case is null
0:20 Test condition and select ( temp void)
0:20 Condition
-0:20 fval: direct index for structure ( uniform float)
-0:20 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
-0:20 Constant:
-0:20 2 (const uint)
+0:20 Convert float to bool ( temp bool)
+0:20 fval: direct index for structure ( uniform float)
+0:20 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
+0:20 Constant:
+0:20 2 (const uint)
0:20 true case is null
0:21 Test condition and select ( temp void)
0:21 Condition
@@ -78,20 +80,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 Sequence
0:12 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:12 Color: direct index for structure ( temp 4-component vector of float)
0:12 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:12 Constant:
0:12 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -123,17 +125,19 @@ gl_FragCoord origin is upper left
0:17 3 (const uint)
0:19 Test condition and select ( temp void)
0:19 Condition
-0:19 ival: direct index for structure ( uniform int)
-0:19 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
-0:19 Constant:
-0:19 0 (const uint)
+0:19 Convert int to bool ( temp bool)
+0:19 ival: direct index for structure ( uniform int)
+0:19 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
+0:19 Constant:
+0:19 0 (const uint)
0:19 true case is null
0:20 Test condition and select ( temp void)
0:20 Condition
-0:20 fval: direct index for structure ( uniform float)
-0:20 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
-0:20 Constant:
-0:20 2 (const uint)
+0:20 Convert float to bool ( temp bool)
+0:20 fval: direct index for structure ( uniform float)
+0:20 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
+0:20 Constant:
+0:20 2 (const uint)
0:20 true case is null
0:21 Test condition and select ( temp void)
0:21 Condition
@@ -170,24 +174,25 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 Sequence
0:12 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:12 Color: direct index for structure ( temp 4-component vector of float)
0:12 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:12 Constant:
0:12 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 82
+// Generated by (magic number): 80002
+// Id's are bound by 84
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 79
+ EntryPoint Fragment 4 "main" 81
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -198,15 +203,15 @@ gl_FragCoord origin is upper left
MemberName 14($Global) 2 "fval"
MemberName 14($Global) 3 "fval4"
Name 16 ""
- Name 70 "psout"
- Name 79 "Color"
+ Name 72 "psout"
+ Name 81 "@entryPointOutput.Color"
MemberDecorate 14($Global) 0 Offset 0
MemberDecorate 14($Global) 1 Offset 16
MemberDecorate 14($Global) 2 Offset 32
MemberDecorate 14($Global) 3 Offset 48
Decorate 14($Global) Block
Decorate 16 DescriptorSet 0
- Decorate 79(Color) Location 0
+ Decorate 81(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -234,22 +239,22 @@ gl_FragCoord origin is upper left
42: 12(int) Constant 3
43: TypePointer Uniform 7(fvec4)
46: 7(fvec4) ConstantComposite 39 39 39 39
- 69: TypePointer Function 8(PS_OUTPUT)
- 71: 6(float) Constant 1065353216
- 72: 7(fvec4) ConstantComposite 71 71 71 71
- 73: TypePointer Function 7(fvec4)
- 78: TypePointer Output 7(fvec4)
- 79(Color): 78(ptr) Variable Output
+ 71: TypePointer Function 8(PS_OUTPUT)
+ 73: 6(float) Constant 1065353216
+ 74: 7(fvec4) ConstantComposite 73 73 73 73
+ 75: TypePointer Function 7(fvec4)
+ 80: TypePointer Output 7(fvec4)
+81(@entryPointOutput.Color): 80(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 80:8(PS_OUTPUT) FunctionCall 10(@main()
- 81: 7(fvec4) CompositeExtract 80 0
- Store 79(Color) 81
+ 82:8(PS_OUTPUT) FunctionCall 10(@main()
+ 83: 7(fvec4) CompositeExtract 82 0
+ Store 81(@entryPointOutput.Color) 83
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
- 70(psout): 69(ptr) Variable Function
+ 72(psout): 71(ptr) Variable Function
19: 18(ptr) AccessChain 16 17
20: 12(int) Load 19
24: 21(bool) INotEqual 20 23
@@ -268,38 +273,40 @@ gl_FragCoord origin is upper left
48: 30(bvec4) LogicalNot 47
49: 18(ptr) AccessChain 16 17
50: 12(int) Load 49
- SelectionMerge 52 None
- BranchConditional 50 51 52
- 51: Label
- Branch 52
- 52: Label
- 53: 36(ptr) AccessChain 16 35
- 54: 6(float) Load 53
- SelectionMerge 56 None
- BranchConditional 54 55 56
- 55: Label
- Branch 56
- 56: Label
- 57: 18(ptr) AccessChain 16 17
- 58: 12(int) Load 57
- 59: 21(bool) INotEqual 58 23
- 60: 21(bool) LogicalNot 59
- SelectionMerge 62 None
- BranchConditional 60 61 62
- 61: Label
- Branch 62
- 62: Label
- 63: 36(ptr) AccessChain 16 35
- 64: 6(float) Load 63
- 65: 21(bool) FOrdNotEqual 64 39
- 66: 21(bool) LogicalNot 65
- SelectionMerge 68 None
- BranchConditional 66 67 68
- 67: Label
- Branch 68
- 68: Label
- 74: 73(ptr) AccessChain 70(psout) 17
- Store 74 72
- 75:8(PS_OUTPUT) Load 70(psout)
- ReturnValue 75
+ 51: 21(bool) INotEqual 50 23
+ SelectionMerge 53 None
+ BranchConditional 51 52 53
+ 52: Label
+ Branch 53
+ 53: Label
+ 54: 36(ptr) AccessChain 16 35
+ 55: 6(float) Load 54
+ 56: 21(bool) FOrdNotEqual 55 39
+ SelectionMerge 58 None
+ BranchConditional 56 57 58
+ 57: Label
+ Branch 58
+ 58: Label
+ 59: 18(ptr) AccessChain 16 17
+ 60: 12(int) Load 59
+ 61: 21(bool) INotEqual 60 23
+ 62: 21(bool) LogicalNot 61
+ SelectionMerge 64 None
+ BranchConditional 62 63 64
+ 63: Label
+ Branch 64
+ 64: Label
+ 65: 36(ptr) AccessChain 16 35
+ 66: 6(float) Load 65
+ 67: 21(bool) FOrdNotEqual 66 39
+ 68: 21(bool) LogicalNot 67
+ SelectionMerge 70 None
+ BranchConditional 68 69 70
+ 69: Label
+ Branch 70
+ 70: Label
+ 76: 75(ptr) AccessChain 72(psout) 17
+ Store 76 74
+ 77:8(PS_OUTPUT) Load 72(psout)
+ ReturnValue 77
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logicalConvert.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logicalConvert.frag.out
new file mode 100644
index 00000000000..733ca26311a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.logicalConvert.frag.out
@@ -0,0 +1,342 @@
+hlsl.logicalConvert.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: @main( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Test condition and select ( temp void)
+0:3 Condition
+0:3 Constant:
+0:3 false (const bool)
+0:3 true case
+0:4 Branch: Return with expression
+0:4 Constant:
+0:4 0.000000
+0:4 0.000000
+0:4 0.000000
+0:4 0.000000
+0:5 Test condition and select ( temp void)
+0:5 Condition
+0:5 Constant:
+0:5 false (const bool)
+0:5 true case
+0:6 Branch: Return with expression
+0:6 Constant:
+0:6 0.000000
+0:6 0.000000
+0:6 0.000000
+0:6 0.000000
+0:7 Test condition and select ( temp void)
+0:7 Condition
+0:7 Constant:
+0:7 true (const bool)
+0:7 true case
+0:8 Branch: Return with expression
+0:8 Constant:
+0:8 0.000000
+0:8 0.000000
+0:8 0.000000
+0:8 0.000000
+0:9 Test condition and select ( temp void)
+0:9 Condition
+0:9 Constant:
+0:9 true (const bool)
+0:9 true case
+0:10 Branch: Return with expression
+0:10 Constant:
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:11 Test condition and select ( temp void)
+0:11 Condition
+0:11 Constant:
+0:11 false (const bool)
+0:11 true case
+0:12 Branch: Return with expression
+0:12 Constant:
+0:12 0.000000
+0:12 0.000000
+0:12 0.000000
+0:12 0.000000
+0:13 Test condition and select ( temp void)
+0:13 Condition
+0:13 Constant:
+0:13 false (const bool)
+0:13 true case
+0:14 Branch: Return with expression
+0:14 Constant:
+0:14 0.000000
+0:14 0.000000
+0:14 0.000000
+0:14 0.000000
+0:15 Test condition and select ( temp void)
+0:15 Condition
+0:15 Constant:
+0:15 true (const bool)
+0:15 true case
+0:16 Branch: Return with expression
+0:16 Constant:
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:17 Test condition and select ( temp void)
+0:17 Condition
+0:17 Constant:
+0:17 false (const bool)
+0:17 true case
+0:18 Branch: Return with expression
+0:18 Constant:
+0:18 0.000000
+0:18 0.000000
+0:18 0.000000
+0:18 0.000000
+0:19 Test condition and select ( temp void)
+0:19 Condition
+0:19 Constant:
+0:19 true (const bool)
+0:19 true case
+0:20 Branch: Return with expression
+0:20 Constant:
+0:20 0.000000
+0:20 0.000000
+0:20 0.000000
+0:20 0.000000
+0:21 Test condition and select ( temp void)
+0:21 Condition
+0:21 Constant:
+0:21 true (const bool)
+0:21 true case
+0:22 Branch: Return with expression
+0:22 Constant:
+0:22 0.000000
+0:22 0.000000
+0:22 0.000000
+0:22 0.000000
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:2 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: @main( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Test condition and select ( temp void)
+0:3 Condition
+0:3 Constant:
+0:3 false (const bool)
+0:3 true case
+0:4 Branch: Return with expression
+0:4 Constant:
+0:4 0.000000
+0:4 0.000000
+0:4 0.000000
+0:4 0.000000
+0:5 Test condition and select ( temp void)
+0:5 Condition
+0:5 Constant:
+0:5 false (const bool)
+0:5 true case
+0:6 Branch: Return with expression
+0:6 Constant:
+0:6 0.000000
+0:6 0.000000
+0:6 0.000000
+0:6 0.000000
+0:7 Test condition and select ( temp void)
+0:7 Condition
+0:7 Constant:
+0:7 true (const bool)
+0:7 true case
+0:8 Branch: Return with expression
+0:8 Constant:
+0:8 0.000000
+0:8 0.000000
+0:8 0.000000
+0:8 0.000000
+0:9 Test condition and select ( temp void)
+0:9 Condition
+0:9 Constant:
+0:9 true (const bool)
+0:9 true case
+0:10 Branch: Return with expression
+0:10 Constant:
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:11 Test condition and select ( temp void)
+0:11 Condition
+0:11 Constant:
+0:11 false (const bool)
+0:11 true case
+0:12 Branch: Return with expression
+0:12 Constant:
+0:12 0.000000
+0:12 0.000000
+0:12 0.000000
+0:12 0.000000
+0:13 Test condition and select ( temp void)
+0:13 Condition
+0:13 Constant:
+0:13 false (const bool)
+0:13 true case
+0:14 Branch: Return with expression
+0:14 Constant:
+0:14 0.000000
+0:14 0.000000
+0:14 0.000000
+0:14 0.000000
+0:15 Test condition and select ( temp void)
+0:15 Condition
+0:15 Constant:
+0:15 true (const bool)
+0:15 true case
+0:16 Branch: Return with expression
+0:16 Constant:
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:17 Test condition and select ( temp void)
+0:17 Condition
+0:17 Constant:
+0:17 false (const bool)
+0:17 true case
+0:18 Branch: Return with expression
+0:18 Constant:
+0:18 0.000000
+0:18 0.000000
+0:18 0.000000
+0:18 0.000000
+0:19 Test condition and select ( temp void)
+0:19 Condition
+0:19 Constant:
+0:19 true (const bool)
+0:19 true case
+0:20 Branch: Return with expression
+0:20 Constant:
+0:20 0.000000
+0:20 0.000000
+0:20 0.000000
+0:20 0.000000
+0:21 Test condition and select ( temp void)
+0:21 Condition
+0:21 Constant:
+0:21 true (const bool)
+0:21 true case
+0:22 Branch: Return with expression
+0:22 Constant:
+0:22 0.000000
+0:22 0.000000
+0:22 0.000000
+0:22 0.000000
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:2 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 50
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 48
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 48 "@entryPointOutput"
+ Decorate 48(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeBool
+ 12: 11(bool) ConstantFalse
+ 15: 6(float) Constant 0
+ 16: 7(fvec4) ConstantComposite 15 15 15 15
+ 21: 11(bool) ConstantTrue
+ 47: TypePointer Output 7(fvec4)
+48(@entryPointOutput): 47(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 49: 7(fvec4) FunctionCall 9(@main()
+ Store 48(@entryPointOutput) 49
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ SelectionMerge 14 None
+ BranchConditional 12 13 14
+ 13: Label
+ ReturnValue 16
+ 14: Label
+ SelectionMerge 19 None
+ BranchConditional 12 18 19
+ 18: Label
+ ReturnValue 16
+ 19: Label
+ SelectionMerge 23 None
+ BranchConditional 21 22 23
+ 22: Label
+ ReturnValue 16
+ 23: Label
+ SelectionMerge 26 None
+ BranchConditional 21 25 26
+ 25: Label
+ ReturnValue 16
+ 26: Label
+ SelectionMerge 29 None
+ BranchConditional 12 28 29
+ 28: Label
+ ReturnValue 16
+ 29: Label
+ SelectionMerge 32 None
+ BranchConditional 12 31 32
+ 31: Label
+ ReturnValue 16
+ 32: Label
+ SelectionMerge 35 None
+ BranchConditional 21 34 35
+ 34: Label
+ ReturnValue 16
+ 35: Label
+ SelectionMerge 38 None
+ BranchConditional 12 37 38
+ 37: Label
+ ReturnValue 16
+ 38: Label
+ SelectionMerge 41 None
+ BranchConditional 21 40 41
+ 40: Label
+ ReturnValue 16
+ 41: Label
+ SelectionMerge 44 None
+ BranchConditional 21 43 44
+ 43: Label
+ ReturnValue 16
+ 44: Label
+ 46: 7(fvec4) Undef
+ ReturnValue 46
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.loopattr.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.loopattr.frag.out
new file mode 100644
index 00000000000..38282a5140c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.loopattr.frag.out
@@ -0,0 +1,233 @@
+hlsl.loopattr.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:3 Function Definition: @main( ( temp 4-component vector of float)
+0:3 Function Parameters:
+0:? Sequence
+0:5 Sequence
+0:5 move second child to first child ( temp int)
+0:5 'x' ( temp int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 Loop with condition tested first
+0:5 Loop Condition
+0:5 Compare Less Than ( temp bool)
+0:5 'x' ( temp int)
+0:5 Constant:
+0:5 5 (const int)
+0:5 No loop body
+0:5 Loop Terminal Expression
+0:5 Pre-Increment ( temp int)
+0:5 'x' ( temp int)
+0:8 Sequence
+0:8 move second child to first child ( temp int)
+0:8 'y' ( temp int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 Loop with condition tested first
+0:8 Loop Condition
+0:8 Compare Less Than ( temp bool)
+0:8 'y' ( temp int)
+0:8 Constant:
+0:8 5 (const int)
+0:8 No loop body
+0:8 Loop Terminal Expression
+0:8 Pre-Increment ( temp int)
+0:8 'y' ( temp int)
+0:11 Sequence
+0:11 move second child to first child ( temp int)
+0:11 'z' ( temp int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Loop with condition tested first
+0:11 Loop Condition
+0:11 Compare Less Than ( temp bool)
+0:11 'z' ( temp int)
+0:11 Constant:
+0:11 5 (const int)
+0:11 No loop body
+0:11 Loop Terminal Expression
+0:11 Pre-Increment ( temp int)
+0:11 'z' ( temp int)
+0:13 Branch: Return with expression
+0:13 Constant:
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:3 Function Definition: main( ( temp void)
+0:3 Function Parameters:
+0:? Sequence
+0:3 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:3 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:3 Function Definition: @main( ( temp 4-component vector of float)
+0:3 Function Parameters:
+0:? Sequence
+0:5 Sequence
+0:5 move second child to first child ( temp int)
+0:5 'x' ( temp int)
+0:5 Constant:
+0:5 0 (const int)
+0:5 Loop with condition tested first
+0:5 Loop Condition
+0:5 Compare Less Than ( temp bool)
+0:5 'x' ( temp int)
+0:5 Constant:
+0:5 5 (const int)
+0:5 No loop body
+0:5 Loop Terminal Expression
+0:5 Pre-Increment ( temp int)
+0:5 'x' ( temp int)
+0:8 Sequence
+0:8 move second child to first child ( temp int)
+0:8 'y' ( temp int)
+0:8 Constant:
+0:8 0 (const int)
+0:8 Loop with condition tested first
+0:8 Loop Condition
+0:8 Compare Less Than ( temp bool)
+0:8 'y' ( temp int)
+0:8 Constant:
+0:8 5 (const int)
+0:8 No loop body
+0:8 Loop Terminal Expression
+0:8 Pre-Increment ( temp int)
+0:8 'y' ( temp int)
+0:11 Sequence
+0:11 move second child to first child ( temp int)
+0:11 'z' ( temp int)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Loop with condition tested first
+0:11 Loop Condition
+0:11 Compare Less Than ( temp bool)
+0:11 'z' ( temp int)
+0:11 Constant:
+0:11 5 (const int)
+0:11 No loop body
+0:11 Loop Terminal Expression
+0:11 Pre-Increment ( temp int)
+0:11 'z' ( temp int)
+0:13 Branch: Return with expression
+0:13 Constant:
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:3 Function Definition: main( ( temp void)
+0:3 Function Parameters:
+0:? Sequence
+0:3 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:3 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 54
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 52
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 13 "x"
+ Name 27 "y"
+ Name 37 "z"
+ Name 52 "@entryPointOutput"
+ Decorate 52(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeInt 32 1
+ 12: TypePointer Function 11(int)
+ 14: 11(int) Constant 0
+ 21: 11(int) Constant 5
+ 22: TypeBool
+ 25: 11(int) Constant 1
+ 47: 6(float) Constant 0
+ 48: 7(fvec4) ConstantComposite 47 47 47 47
+ 51: TypePointer Output 7(fvec4)
+52(@entryPointOutput): 51(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 53: 7(fvec4) FunctionCall 9(@main()
+ Store 52(@entryPointOutput) 53
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 13(x): 12(ptr) Variable Function
+ 27(y): 12(ptr) Variable Function
+ 37(z): 12(ptr) Variable Function
+ Store 13(x) 14
+ Branch 15
+ 15: Label
+ LoopMerge 17 18 Unroll
+ Branch 19
+ 19: Label
+ 20: 11(int) Load 13(x)
+ 23: 22(bool) SLessThan 20 21
+ BranchConditional 23 16 17
+ 16: Label
+ Branch 18
+ 18: Label
+ 24: 11(int) Load 13(x)
+ 26: 11(int) IAdd 24 25
+ Store 13(x) 26
+ Branch 15
+ 17: Label
+ Store 27(y) 14
+ Branch 28
+ 28: Label
+ LoopMerge 30 31 DontUnroll
+ Branch 32
+ 32: Label
+ 33: 11(int) Load 27(y)
+ 34: 22(bool) SLessThan 33 21
+ BranchConditional 34 29 30
+ 29: Label
+ Branch 31
+ 31: Label
+ 35: 11(int) Load 27(y)
+ 36: 11(int) IAdd 35 25
+ Store 27(y) 36
+ Branch 28
+ 30: Label
+ Store 37(z) 14
+ Branch 38
+ 38: Label
+ LoopMerge 40 41 None
+ Branch 42
+ 42: Label
+ 43: 11(int) Load 37(z)
+ 44: 22(bool) SLessThan 43 21
+ BranchConditional 44 39 40
+ 39: Label
+ Branch 41
+ 41: Label
+ 45: 11(int) Load 37(z)
+ 46: 11(int) IAdd 45 25
+ Store 37(z) 46
+ Branch 38
+ 40: Label
+ ReturnValue 48
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matNx1.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matNx1.frag.out
index cd0dbbf5d73..74c4fb6899f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matNx1.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matNx1.frag.out
@@ -1,5 +1,5 @@
hlsl.matNx1.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: TestMatNx1( ( temp void)
@@ -65,19 +65,19 @@ gl_FragCoord origin is upper left
0:? Sequence
0:27 Sequence
0:27 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:27 color: direct index for structure ( temp 4-component vector of float)
0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:27 Constant:
0:27 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: TestMatNx1( ( temp void)
@@ -143,16 +143,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:27 Sequence
0:27 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:27 color: direct index for structure ( temp 4-component vector of float)
0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:27 Constant:
0:27 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 77
Capability Shader
@@ -160,6 +160,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 74
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 6 "TestMatNx1("
Name 10 "PS_OUTPUT"
@@ -181,8 +182,8 @@ gl_FragCoord origin is upper left
Name 58 "r13"
Name 59 "f1x4"
Name 63 "ps_output"
- Name 74 "color"
- Decorate 74(color) Location 0
+ Name 74 "@entryPointOutput.color"
+ Decorate 74(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
8: TypeFloat 32
@@ -213,12 +214,12 @@ gl_FragCoord origin is upper left
67: 9(fvec4) ConstantComposite 66 66 66 66
68: TypePointer Function 9(fvec4)
73: TypePointer Output 9(fvec4)
- 74(color): 73(ptr) Variable Output
+74(@entryPointOutput.color): 73(ptr) Variable Output
4(main): 2 Function None 3
5: Label
75:10(PS_OUTPUT) FunctionCall 12(@main()
76: 9(fvec4) CompositeExtract 75 0
- Store 74(color) 76
+ Store 74(@entryPointOutput.color) 76
Return
FunctionEnd
6(TestMatNx1(): 2 Function None 3
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.bool.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.bool.frag.out
index b1c5762c8d9..aff329bc5ba 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.bool.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.bool.frag.out
@@ -1,5 +1,5 @@
hlsl.matType.bool.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: TestBoolMatTypes( ( temp void)
@@ -105,19 +105,19 @@ gl_FragCoord origin is upper left
0:? Sequence
0:49 Sequence
0:49 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:49 color: direct index for structure ( temp 4-component vector of float)
0:49 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:49 Constant:
0:49 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: TestBoolMatTypes( ( temp void)
@@ -223,16 +223,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:49 Sequence
0:49 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:49 color: direct index for structure ( temp 4-component vector of float)
0:49 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:49 Constant:
0:49 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 130
Capability Shader
@@ -240,6 +240,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 127
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 6 "TestBoolMatTypes("
Name 10 "PS_OUTPUT"
@@ -278,8 +279,8 @@ gl_FragCoord origin is upper left
Name 111 "r33"
Name 112 "b4x4"
Name 116 "ps_output"
- Name 127 "color"
- Decorate 127(color) Location 0
+ Name 127 "@entryPointOutput.color"
+ Decorate 127(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
8: TypeFloat 32
@@ -330,12 +331,12 @@ gl_FragCoord origin is upper left
120: 9(fvec4) ConstantComposite 119 119 119 119
121: TypePointer Function 9(fvec4)
126: TypePointer Output 9(fvec4)
- 127(color): 126(ptr) Variable Output
+127(@entryPointOutput.color): 126(ptr) Variable Output
4(main): 2 Function None 3
5: Label
128:10(PS_OUTPUT) FunctionCall 12(@main()
129: 9(fvec4) CompositeExtract 128 0
- Store 127(color) 129
+ Store 127(@entryPointOutput.color) 129
Return
FunctionEnd
6(TestBoolMatTypes(): 2 Function None 3
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.frag.out
index ee40879880e..1d892b55b9f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.frag.out
@@ -1,5 +1,5 @@
hlsl.matType.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float)
@@ -17,7 +17,7 @@ Linked fragment stage:
WARNING: Linking fragment stage: Entry point not found
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float)
@@ -31,7 +31,7 @@ gl_FragCoord origin is upper left
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 1-component vector of float f1, uniform 1X1 matrix of float fmat11, uniform 4X1 matrix of float fmat41, uniform 1X2 matrix of float fmat12, uniform 2X3 matrix of double dmat23, uniform 4X4 matrix of int int44})
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 30
Capability Shader
@@ -40,6 +40,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf1;f1;"
Name 9 "inFloat1"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.int.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.int.frag.out
index aef78623978..807b8b9fe08 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.int.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matType.int.frag.out
@@ -1,5 +1,5 @@
hlsl.matType.int.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: TestIntMatTypes( ( temp void)
@@ -188,19 +188,19 @@ gl_FragCoord origin is upper left
0:? Sequence
0:93 Sequence
0:93 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:93 color: direct index for structure ( temp 4-component vector of float)
0:93 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:93 Constant:
0:93 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: TestIntMatTypes( ( temp void)
@@ -389,16 +389,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:93 Sequence
0:93 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:93 color: direct index for structure ( temp 4-component vector of float)
0:93 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:93 Constant:
0:93 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 232
Capability Shader
@@ -406,6 +406,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 229
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 6 "TestIntMatTypes("
Name 8 "TestUintMatTypes("
@@ -477,8 +478,8 @@ gl_FragCoord origin is upper left
Name 214 "r33"
Name 215 "u4x4"
Name 219 "ps_output"
- Name 229 "color"
- Decorate 229(color) Location 0
+ Name 229 "@entryPointOutput.color"
+ Decorate 229(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
10: TypeFloat 32
@@ -565,12 +566,12 @@ gl_FragCoord origin is upper left
222: 11(fvec4) ConstantComposite 221 221 221 221
223: TypePointer Function 11(fvec4)
228: TypePointer Output 11(fvec4)
- 229(color): 228(ptr) Variable Output
+229(@entryPointOutput.color): 228(ptr) Variable Output
4(main): 2 Function None 3
5: Label
230:12(PS_OUTPUT) FunctionCall 14(@main()
231: 11(fvec4) CompositeExtract 230 0
- Store 229(color) 231
+ Store 229(@entryPointOutput.color) 231
Return
FunctionEnd
6(TestIntMatTypes(): 2 Function None 3
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matpack-1.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matpack-1.frag.out
new file mode 100644
index 00000000000..1370c19cfd6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matpack-1.frag.out
@@ -0,0 +1,187 @@
+hlsl.matpack-1.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:23 Function Definition: @main( ( temp 4-component vector of float)
+0:23 Function Parameters:
+0:? Sequence
+0:25 Branch: Return with expression
+0:24 add ( temp 4-component vector of float)
+0:24 vector-times-matrix ( temp 4-component vector of float)
+0:24 vec1: direct index for structure ( temp 4-component vector of float)
+0:24 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo})
+0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 Constant:
+0:24 2 (const int)
+0:24 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float)
+0:24 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo})
+0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 Constant:
+0:24 0 (const int)
+0:25 vector-times-matrix ( temp 4-component vector of float)
+0:25 vec1: direct index for structure ( temp 4-component vector of float)
+0:25 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1})
+0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:25 Constant:
+0:25 1 (const uint)
+0:25 Constant:
+0:25 1 (const int)
+0:25 mat1: direct index for structure (layout( column_major) temp 4X4 matrix of float)
+0:25 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1})
+0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:25 Constant:
+0:25 1 (const uint)
+0:25 Constant:
+0:25 0 (const int)
+0:23 Function Definition: main( ( temp void)
+0:23 Function Parameters:
+0:? Sequence
+0:23 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:23 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:23 Function Definition: @main( ( temp 4-component vector of float)
+0:23 Function Parameters:
+0:? Sequence
+0:25 Branch: Return with expression
+0:24 add ( temp 4-component vector of float)
+0:24 vector-times-matrix ( temp 4-component vector of float)
+0:24 vec1: direct index for structure ( temp 4-component vector of float)
+0:24 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo})
+0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 Constant:
+0:24 2 (const int)
+0:24 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float)
+0:24 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo})
+0:24 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 Constant:
+0:24 0 (const int)
+0:25 vector-times-matrix ( temp 4-component vector of float)
+0:25 vec1: direct index for structure ( temp 4-component vector of float)
+0:25 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1})
+0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:25 Constant:
+0:25 1 (const uint)
+0:25 Constant:
+0:25 1 (const int)
+0:25 mat1: direct index for structure (layout( column_major) temp 4X4 matrix of float)
+0:25 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1})
+0:25 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:25 Constant:
+0:25 1 (const uint)
+0:25 Constant:
+0:25 0 (const int)
+0:23 Function Definition: main( ( temp void)
+0:23 Function Parameters:
+0:? Sequence
+0:23 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:23 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, temp 4-component vector of float vec1, temp float foo} g_MyBuffer1, layout( row_major std140) uniform structure{layout( column_major) temp 4X4 matrix of float mat1, temp 4-component vector of float vec1} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 39
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 37
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 12 "MyBuffer1"
+ MemberName 12(MyBuffer1) 0 "mat1"
+ MemberName 12(MyBuffer1) 1 "mat2"
+ MemberName 12(MyBuffer1) 2 "vec1"
+ MemberName 12(MyBuffer1) 3 "foo"
+ Name 13 "MyBuffer2"
+ MemberName 13(MyBuffer2) 0 "mat1"
+ MemberName 13(MyBuffer2) 1 "vec1"
+ Name 14 "Example"
+ MemberName 14(Example) 0 "g_MyBuffer1"
+ MemberName 14(Example) 1 "g_MyBuffer2"
+ MemberName 14(Example) 2 "mat1a"
+ Name 16 ""
+ Name 37 "@entryPointOutput"
+ MemberDecorate 12(MyBuffer1) 0 RowMajor
+ MemberDecorate 12(MyBuffer1) 0 Offset 0
+ MemberDecorate 12(MyBuffer1) 0 MatrixStride 16
+ MemberDecorate 12(MyBuffer1) 1 ColMajor
+ MemberDecorate 12(MyBuffer1) 1 Offset 64
+ MemberDecorate 12(MyBuffer1) 1 MatrixStride 16
+ MemberDecorate 12(MyBuffer1) 2 Offset 128
+ MemberDecorate 12(MyBuffer1) 3 Offset 144
+ MemberDecorate 13(MyBuffer2) 0 ColMajor
+ MemberDecorate 13(MyBuffer2) 0 Offset 0
+ MemberDecorate 13(MyBuffer2) 0 MatrixStride 16
+ MemberDecorate 13(MyBuffer2) 1 Offset 64
+ MemberDecorate 14(Example) 0 Offset 0
+ MemberDecorate 14(Example) 1 Offset 160
+ MemberDecorate 14(Example) 2 RowMajor
+ MemberDecorate 14(Example) 2 Offset 240
+ MemberDecorate 14(Example) 2 MatrixStride 16
+ Decorate 14(Example) Block
+ Decorate 16 DescriptorSet 0
+ Decorate 37(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeMatrix 7(fvec4) 4
+ 12(MyBuffer1): TypeStruct 11 11 7(fvec4) 6(float)
+ 13(MyBuffer2): TypeStruct 11 7(fvec4)
+ 14(Example): TypeStruct 12(MyBuffer1) 13(MyBuffer2) 11
+ 15: TypePointer Uniform 14(Example)
+ 16: 15(ptr) Variable Uniform
+ 17: TypeInt 32 1
+ 18: 17(int) Constant 0
+ 19: 17(int) Constant 2
+ 20: TypePointer Uniform 7(fvec4)
+ 23: TypePointer Uniform 11
+ 27: 17(int) Constant 1
+ 36: TypePointer Output 7(fvec4)
+37(@entryPointOutput): 36(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 38: 7(fvec4) FunctionCall 9(@main()
+ Store 37(@entryPointOutput) 38
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 21: 20(ptr) AccessChain 16 18 19
+ 22: 7(fvec4) Load 21
+ 24: 23(ptr) AccessChain 16 18 18
+ 25: 11 Load 24
+ 26: 7(fvec4) VectorTimesMatrix 22 25
+ 28: 20(ptr) AccessChain 16 27 27
+ 29: 7(fvec4) Load 28
+ 30: 23(ptr) AccessChain 16 27 18
+ 31: 11 Load 30
+ 32: 7(fvec4) VectorTimesMatrix 29 31
+ 33: 7(fvec4) FAdd 26 32
+ ReturnValue 33
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matpack-pragma.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matpack-pragma.frag.out
new file mode 100644
index 00000000000..187f5d03c25
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matpack-pragma.frag.out
@@ -0,0 +1,268 @@
+hlsl.matpack-pragma.frag
+WARNING: 0:19: 'random_string_foo' : unknown pack_matrix pragma value
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:29 Function Definition: @main( ( temp 4-component vector of float)
+0:29 Function Parameters:
+0:? Sequence
+0:32 Branch: Return with expression
+0:32 add ( temp 4-component vector of float)
+0:32 add ( temp 4-component vector of float)
+0:31 add ( temp 4-component vector of float)
+0:31 add ( temp 4-component vector of float)
+0:31 add ( temp 4-component vector of float)
+0:31 direct index (layout( row_major) temp 4-component vector of float)
+0:31 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float)
+0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
+0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 0 (const int)
+0:31 direct index (layout( column_major) temp 4-component vector of float)
+0:31 mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float)
+0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
+0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 Constant:
+0:31 1 (const int)
+0:31 Constant:
+0:31 0 (const int)
+0:31 direct index (layout( column_major) temp 4-component vector of float)
+0:31 mat3: direct index for structure (layout( column_major) temp 4X4 matrix of float)
+0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
+0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 Constant:
+0:31 2 (const int)
+0:31 Constant:
+0:31 0 (const int)
+0:32 direct index (layout( row_major) temp 4-component vector of float)
+0:32 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float)
+0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
+0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:32 Constant:
+0:32 1 (const uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 0 (const int)
+0:32 direct index (layout( column_major) temp 4-component vector of float)
+0:32 mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float)
+0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
+0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:32 Constant:
+0:32 1 (const uint)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 0 (const int)
+0:32 direct index (layout( row_major) temp 4-component vector of float)
+0:32 mat3: direct index for structure (layout( row_major) temp 4X4 matrix of float)
+0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
+0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:32 Constant:
+0:32 1 (const uint)
+0:32 Constant:
+0:32 2 (const int)
+0:32 Constant:
+0:32 0 (const int)
+0:29 Function Definition: main( ( temp void)
+0:29 Function Parameters:
+0:? Sequence
+0:29 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:29 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:29 Function Definition: @main( ( temp 4-component vector of float)
+0:29 Function Parameters:
+0:? Sequence
+0:32 Branch: Return with expression
+0:32 add ( temp 4-component vector of float)
+0:32 add ( temp 4-component vector of float)
+0:31 add ( temp 4-component vector of float)
+0:31 add ( temp 4-component vector of float)
+0:31 add ( temp 4-component vector of float)
+0:31 direct index (layout( row_major) temp 4-component vector of float)
+0:31 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float)
+0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
+0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 0 (const int)
+0:31 direct index (layout( column_major) temp 4-component vector of float)
+0:31 mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float)
+0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
+0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 Constant:
+0:31 1 (const int)
+0:31 Constant:
+0:31 0 (const int)
+0:31 direct index (layout( column_major) temp 4-component vector of float)
+0:31 mat3: direct index for structure (layout( column_major) temp 4X4 matrix of float)
+0:31 g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
+0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 Constant:
+0:31 2 (const int)
+0:31 Constant:
+0:31 0 (const int)
+0:32 direct index (layout( row_major) temp 4-component vector of float)
+0:32 mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float)
+0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
+0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:32 Constant:
+0:32 1 (const uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 0 (const int)
+0:32 direct index (layout( column_major) temp 4-component vector of float)
+0:32 mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float)
+0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
+0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:32 Constant:
+0:32 1 (const uint)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 0 (const int)
+0:32 direct index (layout( row_major) temp 4-component vector of float)
+0:32 mat3: direct index for structure (layout( row_major) temp 4X4 matrix of float)
+0:32 g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
+0:32 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:32 Constant:
+0:32 1 (const uint)
+0:32 Constant:
+0:32 2 (const int)
+0:32 Constant:
+0:32 0 (const int)
+0:29 Function Definition: main( ( temp void)
+0:29 Function Parameters:
+0:? Sequence
+0:29 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:29 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 44
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 42
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 12 "MyBuffer1"
+ MemberName 12(MyBuffer1) 0 "mat1"
+ MemberName 12(MyBuffer1) 1 "mat2"
+ MemberName 12(MyBuffer1) 2 "mat3"
+ Name 13 "MyBuffer2"
+ MemberName 13(MyBuffer2) 0 "mat1"
+ MemberName 13(MyBuffer2) 1 "mat2"
+ MemberName 13(MyBuffer2) 2 "mat3"
+ Name 14 "Example"
+ MemberName 14(Example) 0 "g_MyBuffer1"
+ MemberName 14(Example) 1 "g_MyBuffer2"
+ MemberName 14(Example) 2 "mat1a"
+ Name 16 ""
+ Name 42 "@entryPointOutput"
+ MemberDecorate 12(MyBuffer1) 0 RowMajor
+ MemberDecorate 12(MyBuffer1) 0 Offset 0
+ MemberDecorate 12(MyBuffer1) 0 MatrixStride 16
+ MemberDecorate 12(MyBuffer1) 1 ColMajor
+ MemberDecorate 12(MyBuffer1) 1 Offset 64
+ MemberDecorate 12(MyBuffer1) 1 MatrixStride 16
+ MemberDecorate 12(MyBuffer1) 2 ColMajor
+ MemberDecorate 12(MyBuffer1) 2 Offset 128
+ MemberDecorate 12(MyBuffer1) 2 MatrixStride 16
+ MemberDecorate 13(MyBuffer2) 0 RowMajor
+ MemberDecorate 13(MyBuffer2) 0 Offset 0
+ MemberDecorate 13(MyBuffer2) 0 MatrixStride 16
+ MemberDecorate 13(MyBuffer2) 1 ColMajor
+ MemberDecorate 13(MyBuffer2) 1 Offset 64
+ MemberDecorate 13(MyBuffer2) 1 MatrixStride 16
+ MemberDecorate 13(MyBuffer2) 2 RowMajor
+ MemberDecorate 13(MyBuffer2) 2 Offset 128
+ MemberDecorate 13(MyBuffer2) 2 MatrixStride 16
+ MemberDecorate 14(Example) 0 Offset 0
+ MemberDecorate 14(Example) 1 Offset 192
+ MemberDecorate 14(Example) 2 RowMajor
+ MemberDecorate 14(Example) 2 Offset 384
+ MemberDecorate 14(Example) 2 MatrixStride 16
+ Decorate 14(Example) Block
+ Decorate 16 DescriptorSet 0
+ Decorate 42(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeMatrix 7(fvec4) 4
+ 12(MyBuffer1): TypeStruct 11 11 11
+ 13(MyBuffer2): TypeStruct 11 11 11
+ 14(Example): TypeStruct 12(MyBuffer1) 13(MyBuffer2) 11
+ 15: TypePointer Uniform 14(Example)
+ 16: 15(ptr) Variable Uniform
+ 17: TypeInt 32 1
+ 18: 17(int) Constant 0
+ 19: TypePointer Uniform 7(fvec4)
+ 22: 17(int) Constant 1
+ 26: 17(int) Constant 2
+ 41: TypePointer Output 7(fvec4)
+42(@entryPointOutput): 41(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 43: 7(fvec4) FunctionCall 9(@main()
+ Store 42(@entryPointOutput) 43
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 20: 19(ptr) AccessChain 16 18 18 18
+ 21: 7(fvec4) Load 20
+ 23: 19(ptr) AccessChain 16 18 22 18
+ 24: 7(fvec4) Load 23
+ 25: 7(fvec4) FAdd 21 24
+ 27: 19(ptr) AccessChain 16 18 26 18
+ 28: 7(fvec4) Load 27
+ 29: 7(fvec4) FAdd 25 28
+ 30: 19(ptr) AccessChain 16 22 18 18
+ 31: 7(fvec4) Load 30
+ 32: 7(fvec4) FAdd 29 31
+ 33: 19(ptr) AccessChain 16 22 22 18
+ 34: 7(fvec4) Load 33
+ 35: 7(fvec4) FAdd 32 34
+ 36: 19(ptr) AccessChain 16 22 26 18
+ 37: 7(fvec4) Load 36
+ 38: 7(fvec4) FAdd 35 37
+ ReturnValue 38
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matrixSwizzle.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matrixSwizzle.vert.out
index 69c774ba06b..64c21cd1cdb 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matrixSwizzle.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matrixSwizzle.vert.out
@@ -1,5 +1,5 @@
hlsl.matrixSwizzle.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:2 Function Definition: @ShaderFunction(f1; ( temp void)
0:2 Function Parameters:
@@ -339,7 +339,7 @@ Shader version: 450
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:2 Function Definition: @ShaderFunction(f1; ( temp void)
0:2 Function Parameters:
@@ -677,13 +677,14 @@ Shader version: 450
Missing functionality: matrix swizzle
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 118
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "ShaderFunction" 81
+ Source HLSL 500
Name 4 "ShaderFunction"
Name 10 "@ShaderFunction(f1;"
Name 9 "inf"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matrixindex.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matrixindex.frag.out
index 6f2339c2fe4..8d3910cd99d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matrixindex.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.matrixindex.frag.out
@@ -1,5 +1,5 @@
hlsl.matrixindex.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -124,20 +124,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:10 Sequence
0:10 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:10 Color: direct index for structure ( temp 4-component vector of float)
0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:10 Constant:
0:10 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int idx, uniform 3X2 matrix of float um})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -262,17 +262,17 @@ gl_FragCoord origin is upper left
0:? Sequence
0:10 Sequence
0:10 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:10 Color: direct index for structure ( temp 4-component vector of float)
0:10 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:10 Constant:
0:10 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int idx, uniform 3X2 matrix of float um})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 83
Capability Shader
@@ -280,6 +280,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 80
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -307,14 +308,14 @@ gl_FragCoord origin is upper left
Name 60 "indexable"
Name 63 "r0c"
Name 71 "psout"
- Name 80 "Color"
+ Name 80 "@entryPointOutput.Color"
MemberDecorate 52($Global) 0 Offset 0
MemberDecorate 52($Global) 1 RowMajor
MemberDecorate 52($Global) 1 Offset 16
MemberDecorate 52($Global) 1 MatrixStride 16
Decorate 52($Global) Block
Decorate 54 DescriptorSet 0
- Decorate 80(Color) Location 0
+ Decorate 80(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -356,12 +357,12 @@ gl_FragCoord origin is upper left
70: TypePointer Function 8(PS_OUTPUT)
74: TypePointer Function 7(fvec4)
79: TypePointer Output 7(fvec4)
- 80(Color): 79(ptr) Variable Output
+80(@entryPointOutput.Color): 79(ptr) Variable Output
4(main): 2 Function None 3
5: Label
81:8(PS_OUTPUT) FunctionCall 10(@main()
82: 7(fvec4) CompositeExtract 81 0
- Store 80(Color) 82
+ Store 80(@entryPointOutput.Color) 82
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.max.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.max.frag.out
index 6a0762ed0c0..4200373a8d2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.max.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.max.frag.out
@@ -1,5 +1,5 @@
hlsl.max.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float)
@@ -34,7 +34,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float)
@@ -66,7 +66,7 @@ gl_FragCoord origin is upper left
0:? 'input2' (layout( location=1) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 33
Capability Shader
@@ -74,6 +74,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 21 24 27
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 12 "@PixelShaderFunction(vf4;vf4;"
Name 10 "input1"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.memberFunCall.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.memberFunCall.frag.out
new file mode 100644
index 00000000000..0a0219b3e12
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.memberFunCall.frag.out
@@ -0,0 +1,264 @@
+hlsl.memberFunCall.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:1 Function Definition: method3(f1; ( temp float)
+0:1 Function Parameters:
+0:1 'a' ( in float)
+0:? Sequence
+0:1 Branch: Return with expression
+0:1 Constant:
+0:1 1.000000
+0:4 Function Definition: myContext::method1( ( temp float)
+0:4 Function Parameters:
+0:4 '@this' ( temp structure{ temp float f})
+0:? Sequence
+0:4 Branch: Return with expression
+0:4 Function Call: myContext::method2( ( temp float)
+0:? '@this' ( temp structure{ temp float f})
+0:5 Function Definition: myContext::method2( ( temp float)
+0:5 Function Parameters:
+0:5 '@this' ( temp structure{ temp float f})
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 Function Call: myContext::method3(f1; ( temp float)
+0:? '@this' ( temp structure{ temp float f})
+0:5 Constant:
+0:5 1.000000
+0:6 Function Definition: myContext::method3(f1; ( temp float)
+0:6 Function Parameters:
+0:6 '@this' ( temp structure{ temp float f})
+0:6 'a' ( in float)
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 Function Call: myContext::method4(f1;f1; ( temp float)
+0:? '@this' ( temp structure{ temp float f})
+0:6 'a' ( in float)
+0:6 'a' ( in float)
+0:7 Function Definition: myContext::method4(f1;f1; ( temp float)
+0:7 Function Parameters:
+0:7 '@this' ( temp structure{ temp float f})
+0:7 'a' ( in float)
+0:7 'b' ( in float)
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 add ( temp float)
+0:7 add ( temp float)
+0:7 'a' ( in float)
+0:7 'b' ( in float)
+0:7 f: direct index for structure ( temp float)
+0:7 '@this' ( temp structure{ temp float f})
+0:7 Constant:
+0:7 0 (const uint)
+0:12 Function Definition: @main( ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:? Sequence
+0:14 move second child to first child ( temp float)
+0:14 f: direct index for structure ( temp float)
+0:14 'context' ( temp structure{ temp float f})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 3.000000
+0:15 Branch: Return with expression
+0:15 Construct vec4 ( temp 4-component vector of float)
+0:15 Function Call: myContext::method1( ( temp float)
+0:15 'context' ( temp structure{ temp float f})
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:12 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:1 Function Definition: method3(f1; ( temp float)
+0:1 Function Parameters:
+0:1 'a' ( in float)
+0:? Sequence
+0:1 Branch: Return with expression
+0:1 Constant:
+0:1 1.000000
+0:4 Function Definition: myContext::method1( ( temp float)
+0:4 Function Parameters:
+0:4 '@this' ( temp structure{ temp float f})
+0:? Sequence
+0:4 Branch: Return with expression
+0:4 Function Call: myContext::method2( ( temp float)
+0:? '@this' ( temp structure{ temp float f})
+0:5 Function Definition: myContext::method2( ( temp float)
+0:5 Function Parameters:
+0:5 '@this' ( temp structure{ temp float f})
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 Function Call: myContext::method3(f1; ( temp float)
+0:? '@this' ( temp structure{ temp float f})
+0:5 Constant:
+0:5 1.000000
+0:6 Function Definition: myContext::method3(f1; ( temp float)
+0:6 Function Parameters:
+0:6 '@this' ( temp structure{ temp float f})
+0:6 'a' ( in float)
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 Function Call: myContext::method4(f1;f1; ( temp float)
+0:? '@this' ( temp structure{ temp float f})
+0:6 'a' ( in float)
+0:6 'a' ( in float)
+0:7 Function Definition: myContext::method4(f1;f1; ( temp float)
+0:7 Function Parameters:
+0:7 '@this' ( temp structure{ temp float f})
+0:7 'a' ( in float)
+0:7 'b' ( in float)
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 add ( temp float)
+0:7 add ( temp float)
+0:7 'a' ( in float)
+0:7 'b' ( in float)
+0:7 f: direct index for structure ( temp float)
+0:7 '@this' ( temp structure{ temp float f})
+0:7 Constant:
+0:7 0 (const uint)
+0:12 Function Definition: @main( ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:? Sequence
+0:14 move second child to first child ( temp float)
+0:14 f: direct index for structure ( temp float)
+0:14 'context' ( temp structure{ temp float f})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 3.000000
+0:15 Branch: Return with expression
+0:15 Construct vec4 ( temp 4-component vector of float)
+0:15 Function Call: myContext::method1( ( temp float)
+0:15 'context' ( temp structure{ temp float f})
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:12 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 73
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 71
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 10 "method3(f1;"
+ Name 9 "a"
+ Name 12 "myContext"
+ MemberName 12(myContext) 0 "f"
+ Name 16 "myContext::method1("
+ Name 15 "@this"
+ Name 19 "myContext::method2("
+ Name 18 "@this"
+ Name 24 "myContext::method3(f1;"
+ Name 22 "@this"
+ Name 23 "a"
+ Name 30 "myContext::method4(f1;f1;"
+ Name 27 "@this"
+ Name 28 "a"
+ Name 29 "b"
+ Name 34 "@main("
+ Name 42 "param"
+ Name 46 "param"
+ Name 48 "param"
+ Name 63 "context"
+ Name 71 "@entryPointOutput"
+ Decorate 71(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Function 6(float)
+ 8: TypeFunction 6(float) 7(ptr)
+ 12(myContext): TypeStruct 6(float)
+ 13: TypePointer Function 12(myContext)
+ 14: TypeFunction 6(float) 13(ptr)
+ 21: TypeFunction 6(float) 13(ptr) 7(ptr)
+ 26: TypeFunction 6(float) 13(ptr) 7(ptr) 7(ptr)
+ 32: TypeVector 6(float) 4
+ 33: TypeFunction 32(fvec4)
+ 36: 6(float) Constant 1065353216
+ 56: TypeInt 32 1
+ 57: 56(int) Constant 0
+ 64: 6(float) Constant 1077936128
+ 70: TypePointer Output 32(fvec4)
+71(@entryPointOutput): 70(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 72: 32(fvec4) FunctionCall 34(@main()
+ Store 71(@entryPointOutput) 72
+ Return
+ FunctionEnd
+ 10(method3(f1;): 6(float) Function None 8
+ 9(a): 7(ptr) FunctionParameter
+ 11: Label
+ ReturnValue 36
+ FunctionEnd
+16(myContext::method1(): 6(float) Function None 14
+ 15(@this): 13(ptr) FunctionParameter
+ 17: Label
+ 39: 6(float) FunctionCall 19(myContext::method2() 15(@this)
+ ReturnValue 39
+ FunctionEnd
+19(myContext::method2(): 6(float) Function None 14
+ 18(@this): 13(ptr) FunctionParameter
+ 20: Label
+ 42(param): 7(ptr) Variable Function
+ Store 42(param) 36
+ 43: 6(float) FunctionCall 24(myContext::method3(f1;) 18(@this) 42(param)
+ ReturnValue 43
+ FunctionEnd
+24(myContext::method3(f1;): 6(float) Function None 21
+ 22(@this): 13(ptr) FunctionParameter
+ 23(a): 7(ptr) FunctionParameter
+ 25: Label
+ 46(param): 7(ptr) Variable Function
+ 48(param): 7(ptr) Variable Function
+ 47: 6(float) Load 23(a)
+ Store 46(param) 47
+ 49: 6(float) Load 23(a)
+ Store 48(param) 49
+ 50: 6(float) FunctionCall 30(myContext::method4(f1;f1;) 22(@this) 46(param) 48(param)
+ ReturnValue 50
+ FunctionEnd
+30(myContext::method4(f1;f1;): 6(float) Function None 26
+ 27(@this): 13(ptr) FunctionParameter
+ 28(a): 7(ptr) FunctionParameter
+ 29(b): 7(ptr) FunctionParameter
+ 31: Label
+ 53: 6(float) Load 28(a)
+ 54: 6(float) Load 29(b)
+ 55: 6(float) FAdd 53 54
+ 58: 7(ptr) AccessChain 27(@this) 57
+ 59: 6(float) Load 58
+ 60: 6(float) FAdd 55 59
+ ReturnValue 60
+ FunctionEnd
+ 34(@main(): 32(fvec4) Function None 33
+ 35: Label
+ 63(context): 13(ptr) Variable Function
+ 65: 7(ptr) AccessChain 63(context) 57
+ Store 65 64
+ 66: 6(float) FunctionCall 16(myContext::method1() 63(context)
+ 67: 32(fvec4) CompositeConstruct 66 66 66 66
+ ReturnValue 67
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mintypes.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mintypes.frag.out
index 257d7e48b9f..3c058eaa362 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mintypes.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mintypes.frag.out
@@ -1,5 +1,5 @@
hlsl.mintypes.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -37,20 +37,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:9 Sequence
0:9 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:9 Color: direct index for structure ( temp 4-component vector of float)
0:9 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:9 Constant:
0:9 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform mediump float b1a, uniform mediump float b1b})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -88,17 +88,17 @@ gl_FragCoord origin is upper left
0:? Sequence
0:9 Sequence
0:9 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:9 Color: direct index for structure ( temp 4-component vector of float)
0:9 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:9 Constant:
0:9 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform mediump float b1a, uniform mediump float b1b})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 70
Capability Shader
@@ -106,6 +106,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 64
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -121,7 +122,7 @@ gl_FragCoord origin is upper left
Name 46 "mu16_2"
Name 49 "mu16"
Name 54 "psout"
- Name 64 "Color"
+ Name 64 "@entryPointOutput.Color"
Name 67 "$Global"
MemberName 67($Global) 0 "b1a"
MemberName 67($Global) 1 "b1b"
@@ -156,7 +157,7 @@ gl_FragCoord origin is upper left
Decorate 50 RelaxedPrecision
Decorate 51 RelaxedPrecision
Decorate 52 RelaxedPrecision
- Decorate 64(Color) Location 0
+ Decorate 64(@entryPointOutput.Color) Location 0
MemberDecorate 67($Global) 0 RelaxedPrecision
MemberDecorate 67($Global) 0 Offset 0
MemberDecorate 67($Global) 1 RelaxedPrecision
@@ -186,7 +187,7 @@ gl_FragCoord origin is upper left
57: 7(fvec4) ConstantComposite 56 56 56 56
58: TypePointer Function 7(fvec4)
63: TypePointer Output 7(fvec4)
- 64(Color): 63(ptr) Variable Output
+64(@entryPointOutput.Color): 63(ptr) Variable Output
67($Global): TypeStruct 6(float) 6(float)
68: TypePointer Uniform 67($Global)
69: 68(ptr) Variable Uniform
@@ -194,7 +195,7 @@ gl_FragCoord origin is upper left
5: Label
65:8(PS_OUTPUT) FunctionCall 10(@main()
66: 7(fvec4) CompositeExtract 65 0
- Store 64(Color) 66
+ Store 64(@entryPointOutput.Color) 66
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.negative.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.negative.frag.out
new file mode 100644
index 00000000000..36f41377d1d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.negative.frag.out
@@ -0,0 +1,68 @@
+hlsl.mip.negative.frag
+ERROR: 0:5: '' : unterminated mips operator:
+ERROR: 1 compilation errors. No code generated.
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+ERROR: node is still EOpNull!
+0:4 Function Definition: @main( ( temp 4-component vector of float)
+0:4 Function Parameters:
+0:? Sequence
+0:? textureFetch ( temp 4-component vector of float)
+0:5 'g_tTex2df4' ( uniform texture2D)
+0:? Constant:
+0:? 3 (const uint)
+0:? 4 (const uint)
+0:5 Constant:
+0:5 2 (const int)
+0:7 Branch: Return with expression
+0:7 Constant:
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tTex2df4' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+ERROR: node is still EOpNull!
+0:4 Function Definition: @main( ( temp 4-component vector of float)
+0:4 Function Parameters:
+0:? Sequence
+0:? textureFetch ( temp 4-component vector of float)
+0:5 'g_tTex2df4' ( uniform texture2D)
+0:? Constant:
+0:? 3 (const uint)
+0:? 4 (const uint)
+0:5 Constant:
+0:5 2 (const int)
+0:7 Branch: Return with expression
+0:7 Constant:
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tTex2df4' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.negative2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.negative2.frag.out
new file mode 100644
index 00000000000..75cf95fc5a1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.negative2.frag.out
@@ -0,0 +1,74 @@
+hlsl.mip.negative2.frag
+ERROR: 0:5: 'r' : unexpected operator on texture type: uniform texture2D
+ERROR: 1 compilation errors. No code generated.
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+ERROR: node is still EOpNull!
+0:4 Function Definition: @main( ( temp 4-component vector of float)
+0:4 Function Parameters:
+0:? Sequence
+0:5 direct index ( temp float)
+0:5 textureFetch ( temp 4-component vector of float)
+0:5 'g_tTex2df4' ( uniform texture2D)
+0:5 Constant:
+0:5 2 (const int)
+0:5 Constant:
+0:5 0 (const int)
+0:? Constant:
+0:? 3 (const uint)
+0:? 4 (const uint)
+0:7 Branch: Return with expression
+0:7 Constant:
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tTex2df4' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+ERROR: node is still EOpNull!
+0:4 Function Definition: @main( ( temp 4-component vector of float)
+0:4 Function Parameters:
+0:? Sequence
+0:5 direct index ( temp float)
+0:5 textureFetch ( temp 4-component vector of float)
+0:5 'g_tTex2df4' ( uniform texture2D)
+0:5 Constant:
+0:5 2 (const int)
+0:5 Constant:
+0:5 0 (const int)
+0:? Constant:
+0:? 3 (const uint)
+0:? 4 (const uint)
+0:7 Branch: Return with expression
+0:7 Constant:
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tTex2df4' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.operator.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.operator.frag.out
new file mode 100644
index 00000000000..804f3b2005e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.mip.operator.frag.out
@@ -0,0 +1,209 @@
+hlsl.mip.operator.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:5 Function Definition: @main( ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:? Sequence
+0:13 Branch: Return with expression
+0:9 add ( temp 4-component vector of float)
+0:6 add ( temp 4-component vector of float)
+0:? textureFetch ( temp 4-component vector of float)
+0:6 'g_tTex2df4' ( uniform texture2D)
+0:? Constant:
+0:? 3 (const uint)
+0:? 4 (const uint)
+0:6 Constant:
+0:6 2 (const int)
+0:? textureFetch ( temp 4-component vector of float)
+0:9 'g_tTex2df4a' ( uniform texture2DArray)
+0:? Constant:
+0:? 6 (const uint)
+0:? 7 (const uint)
+0:? 8 (const uint)
+0:9 Constant:
+0:9 5 (const uint)
+0:13 textureFetch ( temp 4-component vector of float)
+0:13 'g_tTex2df4' ( uniform texture2D)
+0:13 Convert float to uint ( temp 2-component vector of uint)
+0:13 vector swizzle ( temp 2-component vector of float)
+0:? textureFetch ( temp 4-component vector of float)
+0:13 'g_tTex2df4' ( uniform texture2D)
+0:? Constant:
+0:? 14 (const uint)
+0:? 15 (const uint)
+0:13 Constant:
+0:13 13 (const int)
+0:13 Sequence
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Convert float to uint ( temp uint)
+0:13 direct index ( temp float)
+0:? textureFetch ( temp 4-component vector of float)
+0:13 'g_tTex2df4' ( uniform texture2D)
+0:? Constant:
+0:? 10 (const uint)
+0:? 11 (const uint)
+0:13 Constant:
+0:13 9 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:5 Function Definition: main( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:5 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tTex2df4a' ( uniform texture2DArray)
+0:? 'g_tTex2df4' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:5 Function Definition: @main( ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:? Sequence
+0:13 Branch: Return with expression
+0:9 add ( temp 4-component vector of float)
+0:6 add ( temp 4-component vector of float)
+0:? textureFetch ( temp 4-component vector of float)
+0:6 'g_tTex2df4' ( uniform texture2D)
+0:? Constant:
+0:? 3 (const uint)
+0:? 4 (const uint)
+0:6 Constant:
+0:6 2 (const int)
+0:? textureFetch ( temp 4-component vector of float)
+0:9 'g_tTex2df4a' ( uniform texture2DArray)
+0:? Constant:
+0:? 6 (const uint)
+0:? 7 (const uint)
+0:? 8 (const uint)
+0:9 Constant:
+0:9 5 (const uint)
+0:13 textureFetch ( temp 4-component vector of float)
+0:13 'g_tTex2df4' ( uniform texture2D)
+0:13 Convert float to uint ( temp 2-component vector of uint)
+0:13 vector swizzle ( temp 2-component vector of float)
+0:? textureFetch ( temp 4-component vector of float)
+0:13 'g_tTex2df4' ( uniform texture2D)
+0:? Constant:
+0:? 14 (const uint)
+0:? 15 (const uint)
+0:13 Constant:
+0:13 13 (const int)
+0:13 Sequence
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 1 (const int)
+0:13 Convert float to uint ( temp uint)
+0:13 direct index ( temp float)
+0:? textureFetch ( temp 4-component vector of float)
+0:13 'g_tTex2df4' ( uniform texture2D)
+0:? Constant:
+0:? 10 (const uint)
+0:? 11 (const uint)
+0:13 Constant:
+0:13 9 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:5 Function Definition: main( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:5 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tTex2df4a' ( uniform texture2DArray)
+0:? 'g_tTex2df4' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 61
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 59
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 13 "g_tTex2df4"
+ Name 25 "g_tTex2df4a"
+ Name 59 "@entryPointOutput"
+ Decorate 13(g_tTex2df4) DescriptorSet 0
+ Decorate 25(g_tTex2df4a) DescriptorSet 0
+ Decorate 59(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeImage 6(float) 2D sampled format:Unknown
+ 12: TypePointer UniformConstant 11
+ 13(g_tTex2df4): 12(ptr) Variable UniformConstant
+ 15: TypeInt 32 0
+ 16: TypeVector 15(int) 2
+ 17: 15(int) Constant 3
+ 18: 15(int) Constant 4
+ 19: 16(ivec2) ConstantComposite 17 18
+ 20: TypeInt 32 1
+ 21: 20(int) Constant 2
+ 23: TypeImage 6(float) 2D array sampled format:Unknown
+ 24: TypePointer UniformConstant 23
+ 25(g_tTex2df4a): 24(ptr) Variable UniformConstant
+ 27: TypeVector 15(int) 3
+ 28: 15(int) Constant 6
+ 29: 15(int) Constant 7
+ 30: 15(int) Constant 8
+ 31: 27(ivec3) ConstantComposite 28 29 30
+ 32: 15(int) Constant 5
+ 37: 15(int) Constant 14
+ 38: 15(int) Constant 15
+ 39: 16(ivec2) ConstantComposite 37 38
+ 40: 20(int) Constant 13
+ 42: TypeVector 6(float) 2
+ 46: 15(int) Constant 10
+ 47: 15(int) Constant 11
+ 48: 16(ivec2) ConstantComposite 46 47
+ 49: 20(int) Constant 9
+ 51: 15(int) Constant 0
+ 58: TypePointer Output 7(fvec4)
+59(@entryPointOutput): 58(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 60: 7(fvec4) FunctionCall 9(@main()
+ Store 59(@entryPointOutput) 60
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 14: 11 Load 13(g_tTex2df4)
+ 22: 7(fvec4) ImageFetch 14 19 Lod 21
+ 26: 23 Load 25(g_tTex2df4a)
+ 33: 7(fvec4) ImageFetch 26 31 Lod 32
+ 34: 7(fvec4) FAdd 22 33
+ 35: 11 Load 13(g_tTex2df4)
+ 36: 11 Load 13(g_tTex2df4)
+ 41: 7(fvec4) ImageFetch 36 39 Lod 40
+ 43: 42(fvec2) VectorShuffle 41 41 0 1
+ 44: 16(ivec2) ConvertFToU 43
+ 45: 11 Load 13(g_tTex2df4)
+ 50: 7(fvec4) ImageFetch 45 48 Lod 49
+ 52: 6(float) CompositeExtract 50 0
+ 53: 15(int) ConvertFToU 52
+ 54: 7(fvec4) ImageFetch 35 44 Lod 53
+ 55: 7(fvec4) FAdd 34 54
+ ReturnValue 55
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiDescriptorSet.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiDescriptorSet.frag.out
new file mode 100644
index 00000000000..83113386274
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiDescriptorSet.frag.out
@@ -0,0 +1,168 @@
+hlsl.multiDescriptorSet.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 92
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 78 82 86
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "PS_INPUT"
+ MemberName 9(PS_INPUT) 0 "Pos"
+ MemberName 9(PS_INPUT) 1 "Tex"
+ Name 13 "@main(struct-PS_INPUT-vf4-vf21;"
+ Name 12 "input"
+ Name 15 "output"
+ Name 23 "cbChangesEveryFrame"
+ MemberName 23(cbChangesEveryFrame) 0 "World"
+ MemberName 23(cbChangesEveryFrame) 1 "vMeshColor"
+ Name 25 ""
+ Name 34 "cbNeverChanges"
+ MemberName 34(cbNeverChanges) 0 "View"
+ Name 36 ""
+ Name 43 "cbChangeOnResize"
+ MemberName 43(cbChangeOnResize) 0 "Projection"
+ Name 45 ""
+ Name 59 "txDiffuseA"
+ Name 63 "samLinearA"
+ Name 76 "input"
+ Name 78 "input.Pos"
+ Name 82 "input.Tex"
+ Name 86 "@entryPointOutput"
+ Name 87 "param"
+ Name 90 "txDiffuseB"
+ Name 91 "samLinearB"
+ MemberDecorate 23(cbChangesEveryFrame) 0 RowMajor
+ MemberDecorate 23(cbChangesEveryFrame) 0 Offset 0
+ MemberDecorate 23(cbChangesEveryFrame) 0 MatrixStride 16
+ MemberDecorate 23(cbChangesEveryFrame) 1 Offset 64
+ Decorate 23(cbChangesEveryFrame) Block
+ Decorate 25 DescriptorSet 2
+ Decorate 25 Binding 2
+ MemberDecorate 34(cbNeverChanges) 0 RowMajor
+ MemberDecorate 34(cbNeverChanges) 0 Offset 0
+ MemberDecorate 34(cbNeverChanges) 0 MatrixStride 16
+ Decorate 34(cbNeverChanges) Block
+ Decorate 36 DescriptorSet 2
+ Decorate 36 Binding 0
+ MemberDecorate 43(cbChangeOnResize) 0 RowMajor
+ MemberDecorate 43(cbChangeOnResize) 0 Offset 0
+ MemberDecorate 43(cbChangeOnResize) 0 MatrixStride 16
+ Decorate 43(cbChangeOnResize) Block
+ Decorate 45 DescriptorSet 2
+ Decorate 45 Binding 1
+ Decorate 59(txDiffuseA) DescriptorSet 0
+ Decorate 59(txDiffuseA) Binding 0
+ Decorate 63(samLinearA) DescriptorSet 0
+ Decorate 63(samLinearA) Binding 1
+ Decorate 78(input.Pos) BuiltIn FragCoord
+ Decorate 82(input.Tex) Location 0
+ Decorate 86(@entryPointOutput) Location 0
+ Decorate 90(txDiffuseB) DescriptorSet 1
+ Decorate 90(txDiffuseB) Binding 0
+ Decorate 91(samLinearB) DescriptorSet 1
+ Decorate 91(samLinearB) Binding 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 2
+ 9(PS_INPUT): TypeStruct 7(fvec4) 8(fvec2)
+ 10: TypePointer Function 9(PS_INPUT)
+ 11: TypeFunction 7(fvec4) 10(ptr)
+ 16: 6(float) Constant 0
+ 17: 7(fvec4) ConstantComposite 16 16 16 16
+ 18: 8(fvec2) ConstantComposite 16 16
+ 19: 9(PS_INPUT) ConstantComposite 17 18
+ 20: TypeInt 32 1
+ 21: 20(int) Constant 0
+ 22: TypeMatrix 7(fvec4) 4
+23(cbChangesEveryFrame): TypeStruct 22 7(fvec4)
+ 24: TypePointer Uniform 23(cbChangesEveryFrame)
+ 25: 24(ptr) Variable Uniform
+ 26: TypePointer Uniform 22
+ 29: TypePointer Function 7(fvec4)
+34(cbNeverChanges): TypeStruct 22
+ 35: TypePointer Uniform 34(cbNeverChanges)
+ 36: 35(ptr) Variable Uniform
+43(cbChangeOnResize): TypeStruct 22
+ 44: TypePointer Uniform 43(cbChangeOnResize)
+ 45: 44(ptr) Variable Uniform
+ 52: 20(int) Constant 1
+ 53: TypePointer Function 8(fvec2)
+ 57: TypeImage 6(float) 2D sampled format:Unknown
+ 58: TypePointer UniformConstant 57
+ 59(txDiffuseA): 58(ptr) Variable UniformConstant
+ 61: TypeSampler
+ 62: TypePointer UniformConstant 61
+ 63(samLinearA): 62(ptr) Variable UniformConstant
+ 65: TypeSampledImage 57
+ 70: TypePointer Uniform 7(fvec4)
+ 77: TypePointer Input 7(fvec4)
+ 78(input.Pos): 77(ptr) Variable Input
+ 81: TypePointer Input 8(fvec2)
+ 82(input.Tex): 81(ptr) Variable Input
+ 85: TypePointer Output 7(fvec4)
+86(@entryPointOutput): 85(ptr) Variable Output
+ 90(txDiffuseB): 58(ptr) Variable UniformConstant
+ 91(samLinearB): 62(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 76(input): 10(ptr) Variable Function
+ 87(param): 10(ptr) Variable Function
+ 79: 7(fvec4) Load 78(input.Pos)
+ 80: 29(ptr) AccessChain 76(input) 21
+ Store 80 79
+ 83: 8(fvec2) Load 82(input.Tex)
+ 84: 53(ptr) AccessChain 76(input) 52
+ Store 84 83
+ 88: 9(PS_INPUT) Load 76(input)
+ Store 87(param) 88
+ 89: 7(fvec4) FunctionCall 13(@main(struct-PS_INPUT-vf4-vf21;) 87(param)
+ Store 86(@entryPointOutput) 89
+ Return
+ FunctionEnd
+13(@main(struct-PS_INPUT-vf4-vf21;): 7(fvec4) Function None 11
+ 12(input): 10(ptr) FunctionParameter
+ 14: Label
+ 15(output): 10(ptr) Variable Function
+ Store 15(output) 19
+ 27: 26(ptr) AccessChain 25 21
+ 28: 22 Load 27
+ 30: 29(ptr) AccessChain 12(input) 21
+ 31: 7(fvec4) Load 30
+ 32: 7(fvec4) MatrixTimesVector 28 31
+ 33: 29(ptr) AccessChain 15(output) 21
+ Store 33 32
+ 37: 26(ptr) AccessChain 36 21
+ 38: 22 Load 37
+ 39: 29(ptr) AccessChain 15(output) 21
+ 40: 7(fvec4) Load 39
+ 41: 7(fvec4) MatrixTimesVector 38 40
+ 42: 29(ptr) AccessChain 15(output) 21
+ Store 42 41
+ 46: 26(ptr) AccessChain 45 21
+ 47: 22 Load 46
+ 48: 29(ptr) AccessChain 15(output) 21
+ 49: 7(fvec4) Load 48
+ 50: 7(fvec4) MatrixTimesVector 47 49
+ 51: 29(ptr) AccessChain 15(output) 21
+ Store 51 50
+ 54: 53(ptr) AccessChain 12(input) 52
+ 55: 8(fvec2) Load 54
+ 56: 53(ptr) AccessChain 15(output) 52
+ Store 56 55
+ 60: 57 Load 59(txDiffuseA)
+ 64: 61 Load 63(samLinearA)
+ 66: 65 SampledImage 60 64
+ 67: 53(ptr) AccessChain 15(output) 52
+ 68: 8(fvec2) Load 67
+ 69: 7(fvec4) ImageSampleImplicitLod 66 68
+ 71: 70(ptr) AccessChain 25 52
+ 72: 7(fvec4) Load 71
+ 73: 7(fvec4) FMul 69 72
+ ReturnValue 73
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiEntry.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiEntry.vert.out
index 4873a4588e8..5ee84b34106 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiEntry.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiEntry.vert.out
@@ -1,13 +1,13 @@
hlsl.multiEntry.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:4 Function Definition: FakeEntrypoint(u1; ( temp 4-component vector of float)
0:4 Function Parameters:
0:4 'Index' ( in uint)
0:? Sequence
0:5 Branch: Return with expression
-0:5 imageLoad ( temp 4-component vector of float)
-0:5 'Position' (layout( rgba32f) readonly uniform imageBuffer)
+0:5 textureFetch ( temp 4-component vector of float)
+0:5 'Position' (layout( rgba32f) uniform textureBuffer)
0:5 Convert uint to int ( temp int)
0:5 'Index' ( in uint)
0:9 Function Definition: @RealEntrypoint(u1; ( temp 4-component vector of float)
@@ -28,7 +28,7 @@ Shader version: 450
0:9 Function Call: @RealEntrypoint(u1; ( temp 4-component vector of float)
0:? 'Index' ( temp uint)
0:? Linker Objects
-0:? 'Position' (layout( rgba32f) readonly uniform imageBuffer)
+0:? 'Position' (layout( rgba32f) uniform textureBuffer)
0:? '@entryPointOutput' ( out 4-component vector of float Position)
0:? 'Index' ( in uint VertexIndex)
@@ -36,15 +36,15 @@ Shader version: 450
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:4 Function Definition: FakeEntrypoint(u1; ( temp 4-component vector of float)
0:4 Function Parameters:
0:4 'Index' ( in uint)
0:? Sequence
0:5 Branch: Return with expression
-0:5 imageLoad ( temp 4-component vector of float)
-0:5 'Position' (layout( rgba32f) readonly uniform imageBuffer)
+0:5 textureFetch ( temp 4-component vector of float)
+0:5 'Position' (layout( rgba32f) uniform textureBuffer)
0:5 Convert uint to int ( temp int)
0:5 'Index' ( in uint)
0:9 Function Definition: @RealEntrypoint(u1; ( temp 4-component vector of float)
@@ -65,12 +65,12 @@ Shader version: 450
0:9 Function Call: @RealEntrypoint(u1; ( temp 4-component vector of float)
0:? 'Index' ( temp uint)
0:? Linker Objects
-0:? 'Position' (layout( rgba32f) readonly uniform imageBuffer)
+0:? 'Position' (layout( rgba32f) uniform textureBuffer)
0:? '@entryPointOutput' ( out 4-component vector of float Position)
0:? 'Index' ( in uint VertexIndex)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 41
Capability Shader
@@ -78,6 +78,7 @@ Shader version: 450
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "RealEntrypoint" 34 37
+ Source HLSL 500
Name 4 "RealEntrypoint"
Name 12 "FakeEntrypoint(u1;"
Name 11 "Index"
@@ -90,7 +91,6 @@ Shader version: 450
Name 37 "@entryPointOutput"
Name 38 "param"
Decorate 19(Position) DescriptorSet 0
- Decorate 19(Position) NonWritable
Decorate 34(Index) BuiltIn VertexIndex
Decorate 37(@entryPointOutput) BuiltIn Position
2: TypeVoid
@@ -100,7 +100,7 @@ Shader version: 450
8: TypeFloat 32
9: TypeVector 8(float) 4
10: TypeFunction 9(fvec4) 7(ptr)
- 17: TypeImage 8(float) Buffer nonsampled format:Rgba32f
+ 17: TypeImage 8(float) Buffer sampled format:Rgba32f
18: TypePointer UniformConstant 17
19(Position): 18(ptr) Variable UniformConstant
22: TypeInt 32 1
@@ -126,7 +126,7 @@ Shader version: 450
20: 17 Load 19(Position)
21: 6(int) Load 11(Index)
23: 22(int) Bitcast 21
- 24: 9(fvec4) ImageRead 20 23
+ 24: 9(fvec4) ImageFetch 20 23
ReturnValue 24
FunctionEnd
15(@RealEntrypoint(u1;): 9(fvec4) Function None 10
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiReturn.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiReturn.frag.out
index 9efc9fc8128..d00c35e33e2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiReturn.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.multiReturn.frag.out
@@ -1,5 +1,5 @@
hlsl.multiReturn.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: foo( ( temp structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m})
@@ -25,7 +25,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: foo( ( temp structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m})
@@ -48,7 +48,7 @@ gl_FragCoord origin is upper left
0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s})
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 42
Capability Shader
@@ -56,6 +56,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 "S"
MemberName 9(S) 0 "f"
@@ -71,9 +72,9 @@ gl_FragCoord origin is upper left
MemberName 16(bufName) 0 "s"
Name 18 ""
MemberDecorate 15(S) 0 Offset 0
- MemberDecorate 15(S) 1 Offset 16
+ MemberDecorate 15(S) 1 Offset 4
MemberDecorate 15(S) 2 RowMajor
- MemberDecorate 15(S) 2 Offset 32
+ MemberDecorate 15(S) 2 Offset 16
MemberDecorate 15(S) 2 MatrixStride 16
MemberDecorate 16(bufName) 0 Offset 0
Decorate 16(bufName) Block
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.namespace.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.namespace.frag.out
new file mode 100644
index 00000000000..f86a0a0f386
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.namespace.frag.out
@@ -0,0 +1,181 @@
+hlsl.namespace.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:5 Function Definition: N1::getVec( ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 'v1' ( global 4-component vector of float)
+0:10 Function Definition: N2::getVec( ( temp 4-component vector of float)
+0:10 Function Parameters:
+0:? Sequence
+0:10 Branch: Return with expression
+0:10 'v2' ( global 4-component vector of float)
+0:12 Function Definition: N2::N3::getVec( ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:? Sequence
+0:12 Branch: Return with expression
+0:12 'v2' ( global 4-component vector of float)
+0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:15 '@this' ( temp structure{})
+0:? Sequence
+0:15 Branch: Return with expression
+0:15 'v2' ( global 4-component vector of float)
+0:21 Function Definition: @main( ( temp 4-component vector of float)
+0:21 Function Parameters:
+0:? Sequence
+0:22 Branch: Return with expression
+0:22 add ( temp 4-component vector of float)
+0:22 add ( temp 4-component vector of float)
+0:22 add ( temp 4-component vector of float)
+0:22 Function Call: N1::getVec( ( temp 4-component vector of float)
+0:22 Function Call: N2::getVec( ( temp 4-component vector of float)
+0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float)
+0:22 vector-scale ( temp 4-component vector of float)
+0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:22 'N2::gf' ( global float)
+0:21 Function Definition: main( ( temp void)
+0:21 Function Parameters:
+0:? Sequence
+0:21 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:21 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'v1' ( global 4-component vector of float)
+0:? 'v2' ( global 4-component vector of float)
+0:? 'N2::gf' ( global float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:5 Function Definition: N1::getVec( ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 'v1' ( global 4-component vector of float)
+0:10 Function Definition: N2::getVec( ( temp 4-component vector of float)
+0:10 Function Parameters:
+0:? Sequence
+0:10 Branch: Return with expression
+0:10 'v2' ( global 4-component vector of float)
+0:12 Function Definition: N2::N3::getVec( ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:? Sequence
+0:12 Branch: Return with expression
+0:12 'v2' ( global 4-component vector of float)
+0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:15 '@this' ( temp structure{})
+0:? Sequence
+0:15 Branch: Return with expression
+0:15 'v2' ( global 4-component vector of float)
+0:21 Function Definition: @main( ( temp 4-component vector of float)
+0:21 Function Parameters:
+0:? Sequence
+0:22 Branch: Return with expression
+0:22 add ( temp 4-component vector of float)
+0:22 add ( temp 4-component vector of float)
+0:22 add ( temp 4-component vector of float)
+0:22 Function Call: N1::getVec( ( temp 4-component vector of float)
+0:22 Function Call: N2::getVec( ( temp 4-component vector of float)
+0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float)
+0:22 vector-scale ( temp 4-component vector of float)
+0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:22 'N2::gf' ( global float)
+0:21 Function Definition: main( ( temp void)
+0:21 Function Parameters:
+0:? Sequence
+0:21 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:21 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'v1' ( global 4-component vector of float)
+0:? 'v2' ( global 4-component vector of float)
+0:? 'N2::gf' ( global float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 54
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 52
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "N1::getVec("
+ Name 11 "N2::getVec("
+ Name 13 "N2::N3::getVec("
+ Name 15 "C1"
+ Name 19 "N2::N3::C1::getVec("
+ Name 18 "@this"
+ Name 21 "@main("
+ Name 24 "v1"
+ Name 28 "v2"
+ Name 45 "N2::gf"
+ Name 52 "@entryPointOutput"
+ Decorate 52(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 15(C1): TypeStruct
+ 16: TypePointer Function 15(C1)
+ 17: TypeFunction 7(fvec4) 16(ptr)
+ 23: TypePointer Private 7(fvec4)
+ 24(v1): 23(ptr) Variable Private
+ 28(v2): 23(ptr) Variable Private
+ 44: TypePointer Private 6(float)
+ 45(N2::gf): 44(ptr) Variable Private
+ 51: TypePointer Output 7(fvec4)
+52(@entryPointOutput): 51(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 53: 7(fvec4) FunctionCall 21(@main()
+ Store 52(@entryPointOutput) 53
+ Return
+ FunctionEnd
+ 9(N1::getVec(): 7(fvec4) Function None 8
+ 10: Label
+ 25: 7(fvec4) Load 24(v1)
+ ReturnValue 25
+ FunctionEnd
+ 11(N2::getVec(): 7(fvec4) Function None 8
+ 12: Label
+ 29: 7(fvec4) Load 28(v2)
+ ReturnValue 29
+ FunctionEnd
+13(N2::N3::getVec(): 7(fvec4) Function None 8
+ 14: Label
+ 32: 7(fvec4) Load 28(v2)
+ ReturnValue 32
+ FunctionEnd
+19(N2::N3::C1::getVec(): 7(fvec4) Function None 17
+ 18(@this): 16(ptr) FunctionParameter
+ 20: Label
+ 35: 7(fvec4) Load 28(v2)
+ ReturnValue 35
+ FunctionEnd
+ 21(@main(): 7(fvec4) Function None 8
+ 22: Label
+ 38: 7(fvec4) FunctionCall 9(N1::getVec()
+ 39: 7(fvec4) FunctionCall 11(N2::getVec()
+ 40: 7(fvec4) FAdd 38 39
+ 41: 7(fvec4) FunctionCall 13(N2::N3::getVec()
+ 42: 7(fvec4) FAdd 40 41
+ 43: 7(fvec4) FunctionCall 19(N2::N3::C1::getVec()
+ 46: 6(float) Load 45(N2::gf)
+ 47: 7(fvec4) VectorTimesScalar 43 46
+ 48: 7(fvec4) FAdd 42 47
+ ReturnValue 48
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.nonint-index.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.nonint-index.frag.out
new file mode 100644
index 00000000000..f512dbecb17
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.nonint-index.frag.out
@@ -0,0 +1,152 @@
+hlsl.nonint-index.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: @main(f1; ( temp float)
+0:4 Function Parameters:
+0:4 'input' ( in float)
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 add ( temp float)
+0:7 add ( temp float)
+0:7 add ( temp float)
+0:7 indirect index ( temp float)
+0:7 Constant:
+0:7 1.000000
+0:7 2.000000
+0:7 3.000000
+0:7 Convert float to uint ( temp uint)
+0:7 'input' ( in float)
+0:7 Constant:
+0:7 3.000000
+0:7 Constant:
+0:7 2.000000
+0:7 Constant:
+0:7 1.000000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:? 'input' ( temp float)
+0:? 'input' (layout( location=0) in float)
+0:4 move second child to first child ( temp float)
+0:? '@entryPointOutput' (layout( location=0) out float)
+0:4 Function Call: @main(f1; ( temp float)
+0:? 'input' ( temp float)
+0:? Linker Objects
+0:? 'array' ( const 3-element array of float)
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? '@entryPointOutput' (layout( location=0) out float)
+0:? 'input' (layout( location=0) in float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: @main(f1; ( temp float)
+0:4 Function Parameters:
+0:4 'input' ( in float)
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 add ( temp float)
+0:7 add ( temp float)
+0:7 add ( temp float)
+0:7 indirect index ( temp float)
+0:7 Constant:
+0:7 1.000000
+0:7 2.000000
+0:7 3.000000
+0:7 Convert float to uint ( temp uint)
+0:7 'input' ( in float)
+0:7 Constant:
+0:7 3.000000
+0:7 Constant:
+0:7 2.000000
+0:7 Constant:
+0:7 1.000000
+0:4 Function Definition: main( ( temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child ( temp float)
+0:? 'input' ( temp float)
+0:? 'input' (layout( location=0) in float)
+0:4 move second child to first child ( temp float)
+0:? '@entryPointOutput' (layout( location=0) out float)
+0:4 Function Call: @main(f1; ( temp float)
+0:? 'input' ( temp float)
+0:? Linker Objects
+0:? 'array' ( const 3-element array of float)
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? '@entryPointOutput' (layout( location=0) out float)
+0:? 'input' (layout( location=0) in float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 39
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 32 35
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 10 "@main(f1;"
+ Name 9 "input"
+ Name 22 "indexable"
+ Name 30 "input"
+ Name 32 "input"
+ Name 35 "@entryPointOutput"
+ Name 36 "param"
+ Decorate 32(input) Location 0
+ Decorate 35(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Function 6(float)
+ 8: TypeFunction 6(float) 7(ptr)
+ 12: TypeInt 32 0
+ 13: 12(int) Constant 3
+ 14: TypeArray 6(float) 13
+ 15: 6(float) Constant 1065353216
+ 16: 6(float) Constant 1073741824
+ 17: 6(float) Constant 1077936128
+ 18: 14 ConstantComposite 15 16 17
+ 21: TypePointer Function 14
+ 31: TypePointer Input 6(float)
+ 32(input): 31(ptr) Variable Input
+ 34: TypePointer Output 6(float)
+35(@entryPointOutput): 34(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 30(input): 7(ptr) Variable Function
+ 36(param): 7(ptr) Variable Function
+ 33: 6(float) Load 32(input)
+ Store 30(input) 33
+ 37: 6(float) Load 30(input)
+ Store 36(param) 37
+ 38: 6(float) FunctionCall 10(@main(f1;) 36(param)
+ Store 35(@entryPointOutput) 38
+ Return
+ FunctionEnd
+ 10(@main(f1;): 6(float) Function None 8
+ 9(input): 7(ptr) FunctionParameter
+ 11: Label
+ 22(indexable): 21(ptr) Variable Function
+ 19: 6(float) Load 9(input)
+ 20: 12(int) ConvertFToU 19
+ Store 22(indexable) 18
+ 23: 7(ptr) AccessChain 22(indexable) 20
+ 24: 6(float) Load 23
+ 25: 6(float) FAdd 24 17
+ 26: 6(float) FAdd 25 16
+ 27: 6(float) FAdd 26 15
+ ReturnValue 27
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
index d3049ec7e41..d1d99cac02d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
@@ -1,5 +1,5 @@
hlsl.nonstaticMemberFunction.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
@@ -135,7 +135,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
@@ -268,7 +268,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 111
Capability Shader
@@ -276,6 +276,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 109
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 "type1"
MemberName 9(type1) 0 "memVar"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.numericsuffixes.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.numericsuffixes.frag.out
index cb246695e0f..9fcceac672e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.numericsuffixes.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.numericsuffixes.frag.out
@@ -1,5 +1,5 @@
hlsl.numericsuffixes.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
@@ -85,19 +85,19 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 Sequence
0:5 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:5 color: direct index for structure ( temp 4-component vector of float)
0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:5 Constant:
0:5 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
@@ -183,16 +183,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 Sequence
0:5 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:5 color: direct index for structure ( temp 4-component vector of float)
0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:5 Constant:
0:5 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 54
Capability Shader
@@ -200,6 +200,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 51
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "color"
@@ -218,8 +219,8 @@ gl_FragCoord origin is upper left
Name 36 "r11"
Name 38 "r12"
Name 40 "ps_output"
- Name 51 "color"
- Decorate 51(color) Location 0
+ Name 51 "@entryPointOutput.color"
+ Decorate 51(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -244,12 +245,12 @@ gl_FragCoord origin is upper left
41: 24(int) Constant 0
45: TypePointer Function 7(fvec4)
50: TypePointer Output 7(fvec4)
- 51(color): 50(ptr) Variable Output
+51(@entryPointOutput.color): 50(ptr) Variable Output
4(main): 2 Function None 3
5: Label
52:8(PS_OUTPUT) FunctionCall 10(@main()
53: 7(fvec4) CompositeExtract 52 0
- Store 51(color) 53
+ Store 51(@entryPointOutput.color) 53
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.numthreads.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.numthreads.comp.out
index ed0017b2116..3d69af40de2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.numthreads.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.numthreads.comp.out
@@ -1,5 +1,5 @@
hlsl.numthreads.comp
-Shader version: 450
+Shader version: 500
local_size = (4, 4, 2)
0:? Sequence
0:4 Function Definition: main(vu3; ( temp void)
@@ -23,7 +23,7 @@ local_size = (4, 4, 2)
Linked compute stage:
-Shader version: 450
+Shader version: 500
local_size = (4, 4, 2)
0:? Sequence
0:4 Function Definition: main(vu3; ( temp void)
@@ -44,7 +44,7 @@ local_size = (4, 4, 2)
0:? 'tid' ( in 3-component vector of uint GlobalInvocationID)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 23
Capability Shader
@@ -52,6 +52,7 @@ local_size = (4, 4, 2)
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main_aux1" 18
ExecutionMode 4 LocalSize 4 4 2
+ Source HLSL 500
Name 4 "main_aux1"
Name 11 "main(vu3;"
Name 10 "tid"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.opaque-type-bug.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.opaque-type-bug.frag.out
new file mode 100644
index 00000000000..95b39b3c5cd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.opaque-type-bug.frag.out
@@ -0,0 +1,112 @@
+hlsl.opaque-type-bug.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6 Function Definition: TexFunc(t21;vf3; ( temp void)
+0:6 Function Parameters:
+0:6 't2D' ( const (read only) texture2D)
+0:6 'RGB' ( out 3-component vector of float)
+0:? Sequence
+0:7 move second child to first child ( temp 3-component vector of float)
+0:7 'RGB' ( out 3-component vector of float)
+0:7 Constant:
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:12 Function Definition: @main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:15 Function Call: TexFunc(t21;vf3; ( temp void)
+0:15 'MyTexture' (layout( binding=0) uniform texture2D)
+0:15 'final_RGB' ( temp 3-component vector of float)
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'MyTexture' (layout( binding=0) uniform texture2D)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6 Function Definition: TexFunc(t21;vf3; ( temp void)
+0:6 Function Parameters:
+0:6 't2D' ( const (read only) texture2D)
+0:6 'RGB' ( out 3-component vector of float)
+0:? Sequence
+0:7 move second child to first child ( temp 3-component vector of float)
+0:7 'RGB' ( out 3-component vector of float)
+0:7 Constant:
+0:7 0.000000
+0:7 0.000000
+0:7 0.000000
+0:12 Function Definition: @main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:15 Function Call: TexFunc(t21;vf3; ( temp void)
+0:15 'MyTexture' (layout( binding=0) uniform texture2D)
+0:15 'final_RGB' ( temp 3-component vector of float)
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'MyTexture' (layout( binding=0) uniform texture2D)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 27
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 13 "TexFunc(t21;vf3;"
+ Name 11 "t2D"
+ Name 12 "RGB"
+ Name 15 "@main("
+ Name 20 "MyTexture"
+ Name 22 "final_RGB"
+ Name 23 "param"
+ Decorate 20(MyTexture) DescriptorSet 0
+ Decorate 20(MyTexture) Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeImage 6(float) 2D sampled format:Unknown
+ 8: TypeVector 6(float) 3
+ 9: TypePointer Function 8(fvec3)
+ 10: TypeFunction 2 7 9(ptr)
+ 17: 6(float) Constant 0
+ 18: 8(fvec3) ConstantComposite 17 17 17
+ 19: TypePointer UniformConstant 7
+ 20(MyTexture): 19(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 26: 2 FunctionCall 15(@main()
+ Return
+ FunctionEnd
+13(TexFunc(t21;vf3;): 2 Function None 10
+ 11(t2D): 7 FunctionParameter
+ 12(RGB): 9(ptr) FunctionParameter
+ 14: Label
+ Store 12(RGB) 18
+ Return
+ FunctionEnd
+ 15(@main(): 2 Function None 3
+ 16: Label
+ 22(final_RGB): 9(ptr) Variable Function
+ 23(param): 9(ptr) Variable Function
+ 21: 7 Load 20(MyTexture)
+ 24: 2 FunctionCall 13(TexFunc(t21;vf3;) 21 23(param)
+ 25: 8(fvec3) Load 23(param)
+ Store 22(final_RGB) 25
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.overload.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.overload.frag.out
index 1075ffe3167..e2f67733e71 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.overload.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.overload.frag.out
@@ -1,5 +1,5 @@
hlsl.overload.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: foo1(d1;b1; ( temp void)
@@ -368,7 +368,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: foo1(d1;b1; ( temp void)
@@ -734,7 +734,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 520
Capability Shader
@@ -743,6 +743,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 513 516
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 13 "foo1(d1;b1;"
Name 11 "a"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.params.default.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.params.default.frag.out
index b8ddf0dde93..ae67f1ef5d7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.params.default.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.params.default.frag.out
@@ -1,5 +1,5 @@
hlsl.params.default.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: fn1(vi4;b1;b1; ( temp 4-component vector of int)
@@ -189,7 +189,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:9 Function Definition: fn1(vi4;b1;b1; ( temp 4-component vector of int)
@@ -376,7 +376,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 178
Capability Shader
@@ -384,6 +384,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 175
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 15 "fn1(vi4;b1;b1;"
Name 12 "p0"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.params.default.negative.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.params.default.negative.frag.out
index 219e920a71c..f841bd8b6fb 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.params.default.negative.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.params.default.negative.frag.out
@@ -6,7 +6,7 @@ ERROR: 0:47: 'fn2' : ambiguous best function under implicit type conversion
ERROR: 4 compilation errors. No code generated.
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:7 Function Definition: fn1(vi4; ( temp 4-component vector of int)
@@ -196,7 +196,7 @@ ERROR: node is still EOpNull!
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:7 Function Definition: fn1(vi4; ( temp 4-component vector of int)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialFlattenLocal.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialFlattenLocal.vert.out
new file mode 100644
index 00000000000..7847c088c54
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialFlattenLocal.vert.out
@@ -0,0 +1,366 @@
+hlsl.partialFlattenLocal.vert
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
+0:? Sequence
+0:12 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:12 'pos' ( in 4-component vector of float)
+0:? Sequence
+0:14 move second child to first child ( temp texture2D)
+0:? 'packed.tex' ( temp texture2D)
+0:14 'tex' ( uniform texture2D)
+0:15 move second child to first child ( temp 3-component vector of float)
+0:15 direct index ( temp 3-component vector of float)
+0:? 'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:16 move second child to first child ( temp 2-component vector of float)
+0:16 direct index ( temp 2-component vector of float)
+0:? 'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:16 Constant:
+0:16 0 (const int)
+0:? Constant:
+0:? 0.000000
+0:? 1.000000
+0:17 move second child to first child ( temp float)
+0:? 'packed.x' ( temp float)
+0:17 Constant:
+0:17 1.000000
+0:18 move second child to first child ( temp int)
+0:? 'packed.n' ( temp int)
+0:18 Constant:
+0:18 3 (const int)
+0:20 Sequence
+0:20 move second child to first child ( temp int)
+0:20 'i' ( temp int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Loop with condition tested first
+0:20 Loop Condition
+0:20 Compare Less Than ( temp bool)
+0:20 'i' ( temp int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Loop Body
+0:? Sequence
+0:21 add second child into first child ( temp 2-component vector of float)
+0:21 vector swizzle ( temp 2-component vector of float)
+0:21 indirect index ( temp 3-component vector of float)
+0:? 'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:21 'i' ( temp int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 indirect index ( temp 2-component vector of float)
+0:? 'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:21 'i' ( temp int)
+0:20 Loop Terminal Expression
+0:20 Pre-Increment ( temp int)
+0:20 'i' ( temp int)
+0:24 Sequence
+0:24 Sequence
+0:24 move second child to first child ( temp texture2D)
+0:? 'packed2.tex' ( temp texture2D)
+0:? 'packed.tex' ( temp texture2D)
+0:24 move second child to first child ( temp 3-element array of 3-component vector of float)
+0:? 'packed2.pos' ( temp 3-element array of 3-component vector of float)
+0:? 'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:24 move second child to first child ( temp 2-element array of 2-component vector of float)
+0:? 'packed2.uv' ( temp 2-element array of 2-component vector of float)
+0:? 'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:24 move second child to first child ( temp float)
+0:? 'packed2.x' ( temp float)
+0:? 'packed.x' ( temp float)
+0:24 move second child to first child ( temp int)
+0:? 'packed2.n' ( temp int)
+0:? 'packed.n' ( temp int)
+0:26 Branch: Return with expression
+0:26 add ( temp 4-component vector of float)
+0:26 'pos' ( in 4-component vector of float)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:26 direct index ( temp 3-component vector of float)
+0:? 'packed2.pos' ( temp 3-element array of 3-component vector of float)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 0.000000
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' (layout( location=0) in 4-component vector of float)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:12 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'tex' ( uniform texture2D)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:? 'pos' (layout( location=0) in 4-component vector of float)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:12 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:12 'pos' ( in 4-component vector of float)
+0:? Sequence
+0:14 move second child to first child ( temp texture2D)
+0:? 'packed.tex' ( temp texture2D)
+0:14 'tex' ( uniform texture2D)
+0:15 move second child to first child ( temp 3-component vector of float)
+0:15 direct index ( temp 3-component vector of float)
+0:? 'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:16 move second child to first child ( temp 2-component vector of float)
+0:16 direct index ( temp 2-component vector of float)
+0:? 'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:16 Constant:
+0:16 0 (const int)
+0:? Constant:
+0:? 0.000000
+0:? 1.000000
+0:17 move second child to first child ( temp float)
+0:? 'packed.x' ( temp float)
+0:17 Constant:
+0:17 1.000000
+0:18 move second child to first child ( temp int)
+0:? 'packed.n' ( temp int)
+0:18 Constant:
+0:18 3 (const int)
+0:20 Sequence
+0:20 move second child to first child ( temp int)
+0:20 'i' ( temp int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Loop with condition tested first
+0:20 Loop Condition
+0:20 Compare Less Than ( temp bool)
+0:20 'i' ( temp int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Loop Body
+0:? Sequence
+0:21 add second child into first child ( temp 2-component vector of float)
+0:21 vector swizzle ( temp 2-component vector of float)
+0:21 indirect index ( temp 3-component vector of float)
+0:? 'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:21 'i' ( temp int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 indirect index ( temp 2-component vector of float)
+0:? 'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:21 'i' ( temp int)
+0:20 Loop Terminal Expression
+0:20 Pre-Increment ( temp int)
+0:20 'i' ( temp int)
+0:24 Sequence
+0:24 Sequence
+0:24 move second child to first child ( temp texture2D)
+0:? 'packed2.tex' ( temp texture2D)
+0:? 'packed.tex' ( temp texture2D)
+0:24 move second child to first child ( temp 3-element array of 3-component vector of float)
+0:? 'packed2.pos' ( temp 3-element array of 3-component vector of float)
+0:? 'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:24 move second child to first child ( temp 2-element array of 2-component vector of float)
+0:? 'packed2.uv' ( temp 2-element array of 2-component vector of float)
+0:? 'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:24 move second child to first child ( temp float)
+0:? 'packed2.x' ( temp float)
+0:? 'packed.x' ( temp float)
+0:24 move second child to first child ( temp int)
+0:? 'packed2.n' ( temp int)
+0:? 'packed.n' ( temp int)
+0:26 Branch: Return with expression
+0:26 add ( temp 4-component vector of float)
+0:26 'pos' ( in 4-component vector of float)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:26 direct index ( temp 3-component vector of float)
+0:? 'packed2.pos' ( temp 3-element array of 3-component vector of float)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 0.000000
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' (layout( location=0) in 4-component vector of float)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:12 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'tex' ( uniform texture2D)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:? 'pos' (layout( location=0) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 97
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 90 93
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vf4;"
+ Name 10 "pos"
+ Name 15 "packed.tex"
+ Name 17 "tex"
+ Name 24 "packed.pos"
+ Name 35 "packed.uv"
+ Name 41 "packed.x"
+ Name 43 "packed.n"
+ Name 45 "i"
+ Name 68 "packed2.tex"
+ Name 70 "packed2.pos"
+ Name 72 "packed2.uv"
+ Name 74 "packed2.x"
+ Name 76 "packed2.n"
+ Name 88 "pos"
+ Name 90 "pos"
+ Name 93 "@entryPointOutput"
+ Name 94 "param"
+ Decorate 17(tex) DescriptorSet 0
+ Decorate 90(pos) Location 0
+ Decorate 93(@entryPointOutput) BuiltIn Position
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeFunction 7(fvec4) 8(ptr)
+ 13: TypeImage 6(float) 2D sampled format:Unknown
+ 14: TypePointer Function 13
+ 16: TypePointer UniformConstant 13
+ 17(tex): 16(ptr) Variable UniformConstant
+ 19: TypeVector 6(float) 3
+ 20: TypeInt 32 0
+ 21: 20(int) Constant 3
+ 22: TypeArray 19(fvec3) 21
+ 23: TypePointer Function 22
+ 25: TypeInt 32 1
+ 26: 25(int) Constant 0
+ 27: 6(float) Constant 0
+ 28: 19(fvec3) ConstantComposite 27 27 27
+ 29: TypePointer Function 19(fvec3)
+ 31: TypeVector 6(float) 2
+ 32: 20(int) Constant 2
+ 33: TypeArray 31(fvec2) 32
+ 34: TypePointer Function 33
+ 36: 6(float) Constant 1065353216
+ 37: 31(fvec2) ConstantComposite 27 36
+ 38: TypePointer Function 31(fvec2)
+ 40: TypePointer Function 6(float)
+ 42: TypePointer Function 25(int)
+ 44: 25(int) Constant 3
+ 52: 25(int) Constant 1
+ 53: TypeBool
+ 89: TypePointer Input 7(fvec4)
+ 90(pos): 89(ptr) Variable Input
+ 92: TypePointer Output 7(fvec4)
+93(@entryPointOutput): 92(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 88(pos): 8(ptr) Variable Function
+ 94(param): 8(ptr) Variable Function
+ 91: 7(fvec4) Load 90(pos)
+ Store 88(pos) 91
+ 95: 7(fvec4) Load 88(pos)
+ Store 94(param) 95
+ 96: 7(fvec4) FunctionCall 11(@main(vf4;) 94(param)
+ Store 93(@entryPointOutput) 96
+ Return
+ FunctionEnd
+ 11(@main(vf4;): 7(fvec4) Function None 9
+ 10(pos): 8(ptr) FunctionParameter
+ 12: Label
+ 15(packed.tex): 14(ptr) Variable Function
+ 24(packed.pos): 23(ptr) Variable Function
+ 35(packed.uv): 34(ptr) Variable Function
+ 41(packed.x): 40(ptr) Variable Function
+ 43(packed.n): 42(ptr) Variable Function
+ 45(i): 42(ptr) Variable Function
+ 68(packed2.tex): 14(ptr) Variable Function
+ 70(packed2.pos): 23(ptr) Variable Function
+ 72(packed2.uv): 34(ptr) Variable Function
+ 74(packed2.x): 40(ptr) Variable Function
+ 76(packed2.n): 42(ptr) Variable Function
+ 18: 13 Load 17(tex)
+ Store 15(packed.tex) 18
+ 30: 29(ptr) AccessChain 24(packed.pos) 26
+ Store 30 28
+ 39: 38(ptr) AccessChain 35(packed.uv) 26
+ Store 39 37
+ Store 41(packed.x) 36
+ Store 43(packed.n) 44
+ Store 45(i) 26
+ Branch 46
+ 46: Label
+ LoopMerge 48 49 None
+ Branch 50
+ 50: Label
+ 51: 25(int) Load 45(i)
+ 54: 53(bool) SLessThan 51 52
+ BranchConditional 54 47 48
+ 47: Label
+ 55: 25(int) Load 45(i)
+ 56: 25(int) Load 45(i)
+ 57: 38(ptr) AccessChain 35(packed.uv) 56
+ 58: 31(fvec2) Load 57
+ 59: 29(ptr) AccessChain 24(packed.pos) 55
+ 60: 19(fvec3) Load 59
+ 61: 31(fvec2) VectorShuffle 60 60 0 1
+ 62: 31(fvec2) FAdd 61 58
+ 63: 29(ptr) AccessChain 24(packed.pos) 55
+ 64: 19(fvec3) Load 63
+ 65: 19(fvec3) VectorShuffle 64 62 3 4 2
+ Store 63 65
+ Branch 49
+ 49: Label
+ 66: 25(int) Load 45(i)
+ 67: 25(int) IAdd 66 52
+ Store 45(i) 67
+ Branch 46
+ 48: Label
+ 69: 13 Load 15(packed.tex)
+ Store 68(packed2.tex) 69
+ 71: 22 Load 24(packed.pos)
+ Store 70(packed2.pos) 71
+ 73: 33 Load 35(packed.uv)
+ Store 72(packed2.uv) 73
+ 75: 6(float) Load 41(packed.x)
+ Store 74(packed2.x) 75
+ 77: 25(int) Load 43(packed.n)
+ Store 76(packed2.n) 77
+ 78: 7(fvec4) Load 10(pos)
+ 79: 29(ptr) AccessChain 70(packed2.pos) 26
+ 80: 19(fvec3) Load 79
+ 81: 6(float) CompositeExtract 80 0
+ 82: 6(float) CompositeExtract 80 1
+ 83: 6(float) CompositeExtract 80 2
+ 84: 7(fvec4) CompositeConstruct 81 82 83 27
+ 85: 7(fvec4) FAdd 78 84
+ ReturnValue 85
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialFlattenMixed.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialFlattenMixed.vert.out
new file mode 100644
index 00000000000..50c8cb9bd0c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialFlattenMixed.vert.out
@@ -0,0 +1,150 @@
+hlsl.partialFlattenMixed.vert
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
+0:? Sequence
+0:10 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:10 Function Parameters:
+0:10 'pos' ( in 4-component vector of float)
+0:? Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp texture2D)
+0:13 direct index ( temp texture2D)
+0:? 'packed.membTex' ( temp 2-element array of texture2D)
+0:13 Constant:
+0:13 0 (const int)
+0:? 'tex[0]' ( uniform texture2D)
+0:13 move second child to first child ( temp texture2D)
+0:13 direct index ( temp texture2D)
+0:? 'packed.membTex' ( temp 2-element array of texture2D)
+0:13 Constant:
+0:13 1 (const int)
+0:? 'tex[1]' ( uniform texture2D)
+0:15 Branch: Return with expression
+0:15 'pos' ( in 4-component vector of float)
+0:10 Function Definition: main( ( temp void)
+0:10 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' (layout( location=0) in 4-component vector of float)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:10 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'tex[0]' ( uniform texture2D)
+0:? 'tex[1]' ( uniform texture2D)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:? 'pos' (layout( location=0) in 4-component vector of float)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:10 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:10 Function Parameters:
+0:10 'pos' ( in 4-component vector of float)
+0:? Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp texture2D)
+0:13 direct index ( temp texture2D)
+0:? 'packed.membTex' ( temp 2-element array of texture2D)
+0:13 Constant:
+0:13 0 (const int)
+0:? 'tex[0]' ( uniform texture2D)
+0:13 move second child to first child ( temp texture2D)
+0:13 direct index ( temp texture2D)
+0:? 'packed.membTex' ( temp 2-element array of texture2D)
+0:13 Constant:
+0:13 1 (const int)
+0:? 'tex[1]' ( uniform texture2D)
+0:15 Branch: Return with expression
+0:15 'pos' ( in 4-component vector of float)
+0:10 Function Definition: main( ( temp void)
+0:10 Function Parameters:
+0:? Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' (layout( location=0) in 4-component vector of float)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:10 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'tex[0]' ( uniform texture2D)
+0:? 'tex[1]' ( uniform texture2D)
+0:? '@entryPointOutput' ( out 4-component vector of float Position)
+0:? 'pos' (layout( location=0) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 42
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 35 38
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vf4;"
+ Name 10 "pos"
+ Name 18 "packed.membTex"
+ Name 22 "tex[0]"
+ Name 27 "tex[1]"
+ Name 33 "pos"
+ Name 35 "pos"
+ Name 38 "@entryPointOutput"
+ Name 39 "param"
+ Decorate 22(tex[0]) DescriptorSet 0
+ Decorate 27(tex[1]) DescriptorSet 0
+ Decorate 35(pos) Location 0
+ Decorate 38(@entryPointOutput) BuiltIn Position
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeFunction 7(fvec4) 8(ptr)
+ 13: TypeImage 6(float) 2D sampled format:Unknown
+ 14: TypeInt 32 0
+ 15: 14(int) Constant 2
+ 16: TypeArray 13 15
+ 17: TypePointer Function 16
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 0
+ 21: TypePointer UniformConstant 13
+ 22(tex[0]): 21(ptr) Variable UniformConstant
+ 24: TypePointer Function 13
+ 26: 19(int) Constant 1
+ 27(tex[1]): 21(ptr) Variable UniformConstant
+ 34: TypePointer Input 7(fvec4)
+ 35(pos): 34(ptr) Variable Input
+ 37: TypePointer Output 7(fvec4)
+38(@entryPointOutput): 37(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 33(pos): 8(ptr) Variable Function
+ 39(param): 8(ptr) Variable Function
+ 36: 7(fvec4) Load 35(pos)
+ Store 33(pos) 36
+ 40: 7(fvec4) Load 33(pos)
+ Store 39(param) 40
+ 41: 7(fvec4) FunctionCall 11(@main(vf4;) 39(param)
+ Store 38(@entryPointOutput) 41
+ Return
+ FunctionEnd
+ 11(@main(vf4;): 7(fvec4) Function None 9
+ 10(pos): 8(ptr) FunctionParameter
+ 12: Label
+18(packed.membTex): 17(ptr) Variable Function
+ 23: 13 Load 22(tex[0])
+ 25: 24(ptr) AccessChain 18(packed.membTex) 20
+ Store 25 23
+ 28: 13 Load 27(tex[1])
+ 29: 24(ptr) AccessChain 18(packed.membTex) 26
+ Store 29 28
+ 30: 7(fvec4) Load 10(pos)
+ ReturnValue 30
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialInit.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialInit.frag.out
index 2dc40bee703..c0882fdb28a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialInit.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.partialInit.frag.out
@@ -2,7 +2,7 @@ hlsl.partialInit.frag
WARNING: 0:35: 'cgf2a' : variable with qualifier 'const' not initialized; zero initializing
WARNING: 0:36: 'ci' : variable with qualifier 'const' not initialized; zero initializing
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:8 Sequence
@@ -157,25 +157,25 @@ gl_FragCoord origin is upper left
0:18 Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v})
0:? 'input' ( temp 4-component vector of float)
0:18 move second child to first child ( temp int)
-0:? 'a' (layout( location=0) out int)
+0:? '@entryPointOutput.a' (layout( location=0) out int)
0:18 a: direct index for structure ( temp int)
0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v})
0:18 Constant:
0:18 0 (const int)
0:18 move second child to first child ( temp float)
-0:? 'b' (layout( location=1) out float)
+0:? '@entryPointOutput.b' (layout( location=1) out float)
0:18 b: direct index for structure ( temp float)
0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v})
0:18 Constant:
0:18 1 (const int)
0:18 move second child to first child ( temp bool)
-0:? 'c' (layout( location=2) out bool)
+0:? '@entryPointOutput.c' (layout( location=2) out bool)
0:18 c: direct index for structure ( temp bool)
0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v})
0:18 Constant:
0:18 2 (const int)
0:18 move second child to first child ( temp 4-component vector of float)
-0:? 'v' (layout( location=3) out 4-component vector of float)
+0:? '@entryPointOutput.v' (layout( location=3) out 4-component vector of float)
0:18 v: direct index for structure ( temp 4-component vector of float)
0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v})
0:18 Constant:
@@ -183,10 +183,10 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'gv' ( global 4-component vector of float)
0:? 'gfa' ( global 3-element array of float)
-0:? 'a' (layout( location=0) out int)
-0:? 'b' (layout( location=1) out float)
-0:? 'c' (layout( location=2) out bool)
-0:? 'v' (layout( location=3) out 4-component vector of float)
+0:? '@entryPointOutput.a' (layout( location=0) out int)
+0:? '@entryPointOutput.b' (layout( location=1) out float)
+0:? '@entryPointOutput.c' (layout( location=2) out bool)
+0:? '@entryPointOutput.v' (layout( location=3) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
0:? 'cgf2a' ( const 3-element array of 2-component vector of float)
0:? 0.000000
@@ -202,7 +202,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:8 Sequence
@@ -357,25 +357,25 @@ gl_FragCoord origin is upper left
0:18 Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v})
0:? 'input' ( temp 4-component vector of float)
0:18 move second child to first child ( temp int)
-0:? 'a' (layout( location=0) out int)
+0:? '@entryPointOutput.a' (layout( location=0) out int)
0:18 a: direct index for structure ( temp int)
0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v})
0:18 Constant:
0:18 0 (const int)
0:18 move second child to first child ( temp float)
-0:? 'b' (layout( location=1) out float)
+0:? '@entryPointOutput.b' (layout( location=1) out float)
0:18 b: direct index for structure ( temp float)
0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v})
0:18 Constant:
0:18 1 (const int)
0:18 move second child to first child ( temp bool)
-0:? 'c' (layout( location=2) out bool)
+0:? '@entryPointOutput.c' (layout( location=2) out bool)
0:18 c: direct index for structure ( temp bool)
0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v})
0:18 Constant:
0:18 2 (const int)
0:18 move second child to first child ( temp 4-component vector of float)
-0:? 'v' (layout( location=3) out 4-component vector of float)
+0:? '@entryPointOutput.v' (layout( location=3) out 4-component vector of float)
0:18 v: direct index for structure ( temp 4-component vector of float)
0:18 'flattenTemp' ( temp structure{ temp int a, temp float b, temp bool c, temp 4-component vector of float v})
0:18 Constant:
@@ -383,10 +383,10 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'gv' ( global 4-component vector of float)
0:? 'gfa' ( global 3-element array of float)
-0:? 'a' (layout( location=0) out int)
-0:? 'b' (layout( location=1) out float)
-0:? 'c' (layout( location=2) out bool)
-0:? 'v' (layout( location=3) out 4-component vector of float)
+0:? '@entryPointOutput.a' (layout( location=0) out int)
+0:? '@entryPointOutput.b' (layout( location=1) out float)
+0:? '@entryPointOutput.c' (layout( location=2) out bool)
+0:? '@entryPointOutput.v' (layout( location=3) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
0:? 'cgf2a' ( const 3-element array of 2-component vector of float)
0:? 0.000000
@@ -399,7 +399,7 @@ gl_FragCoord origin is upper left
0:? 0 (const int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 104
Capability Shader
@@ -407,6 +407,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 80 87 91 95 99
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "outs"
MemberName 11(outs) 0 "a"
@@ -432,15 +433,15 @@ gl_FragCoord origin is upper left
Name 80 "input"
Name 82 "flattenTemp"
Name 83 "param"
- Name 87 "a"
- Name 91 "b"
- Name 95 "c"
- Name 99 "v"
+ Name 87 "@entryPointOutput.a"
+ Name 91 "@entryPointOutput.b"
+ Name 95 "@entryPointOutput.c"
+ Name 99 "@entryPointOutput.v"
Decorate 80(input) Location 0
- Decorate 87(a) Location 0
- Decorate 91(b) Location 1
- Decorate 95(c) Location 2
- Decorate 99(v) Location 3
+ Decorate 87(@entryPointOutput.a) Location 0
+ Decorate 91(@entryPointOutput.b) Location 1
+ Decorate 95(@entryPointOutput.c) Location 2
+ Decorate 99(@entryPointOutput.v) Location 3
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -491,13 +492,13 @@ gl_FragCoord origin is upper left
79: TypePointer Input 7(fvec4)
80(input): 79(ptr) Variable Input
86: TypePointer Output 9(int)
- 87(a): 86(ptr) Variable Output
+87(@entryPointOutput.a): 86(ptr) Variable Output
90: TypePointer Output 6(float)
- 91(b): 90(ptr) Variable Output
+91(@entryPointOutput.b): 90(ptr) Variable Output
94: TypePointer Output 10(bool)
- 95(c): 94(ptr) Variable Output
+95(@entryPointOutput.c): 94(ptr) Variable Output
98: TypePointer Output 7(fvec4)
- 99(v): 98(ptr) Variable Output
+99(@entryPointOutput.v): 98(ptr) Variable Output
102: TypeArray 57(fvec2) 22
103: 102 ConstantComposite 62 62 62
4(PixelShaderFunction): 2 Function None 3
@@ -515,16 +516,16 @@ gl_FragCoord origin is upper left
Store 82(flattenTemp) 85
88: 64(ptr) AccessChain 82(flattenTemp) 42
89: 9(int) Load 88
- Store 87(a) 89
+ Store 87(@entryPointOutput.a) 89
92: 68(ptr) AccessChain 82(flattenTemp) 66
93: 6(float) Load 92
- Store 91(b) 93
+ Store 91(@entryPointOutput.b) 93
96: 45(ptr) AccessChain 82(flattenTemp) 35
97: 10(bool) Load 96
- Store 95(c) 97
+ Store 95(@entryPointOutput.c) 97
100: 8(ptr) AccessChain 82(flattenTemp) 29
101: 7(fvec4) Load 100
- Store 99(v) 101
+ Store 99(@entryPointOutput.v) 101
Return
FunctionEnd
14(@PixelShaderFunction(vf4;): 11(outs) Function None 12
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.pp.line.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.pp.line.frag.out
index 6e8998d9f5c..864df8768b9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.pp.line.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.pp.line.frag.out
@@ -1,5 +1,5 @@
hlsl.pp.line.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -41,26 +41,26 @@ gl_FragCoord origin is upper left
0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:4 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:4 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:4 Color: direct index for structure ( temp 4-component vector of float)
0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:4 Constant:
0:4 0 (const int)
0:4 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:4 Depth: direct index for structure ( temp float)
0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:4 Constant:
0:4 1 (const int)
0:? Linker Objects
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -102,23 +102,23 @@ gl_FragCoord origin is upper left
0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:4 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:4 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:4 Color: direct index for structure ( temp 4-component vector of float)
0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:4 Constant:
0:4 0 (const int)
0:4 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:4 Depth: direct index for structure ( temp float)
0:4 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:4 Constant:
0:4 1 (const int)
0:? Linker Objects
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 42
Capability Shader
@@ -126,6 +126,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 35 39
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -134,10 +135,10 @@ gl_FragCoord origin is upper left
Name 14 "thisLineIs"
Name 17 "psout"
Name 32 "flattenTemp"
- Name 35 "Color"
- Name 39 "Depth"
- Decorate 35(Color) Location 0
- Decorate 39(Depth) BuiltIn FragDepth
+ Name 35 "@entryPointOutput.Color"
+ Name 39 "@entryPointOutput.Depth"
+ Decorate 35(@entryPointOutput.Color) Location 0
+ Decorate 39(@entryPointOutput.Depth) BuiltIn FragDepth
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -155,9 +156,9 @@ gl_FragCoord origin is upper left
26: 12(int) Constant 1
27: TypePointer Function 6(float)
34: TypePointer Output 7(fvec4)
- 35(Color): 34(ptr) Variable Output
+35(@entryPointOutput.Color): 34(ptr) Variable Output
38: TypePointer Output 6(float)
- 39(Depth): 38(ptr) Variable Output
+39(@entryPointOutput.Depth): 38(ptr) Variable Output
4(main): 2 Function None 3
5: Label
32(flattenTemp): 16(ptr) Variable Function
@@ -165,10 +166,10 @@ gl_FragCoord origin is upper left
Store 32(flattenTemp) 33
36: 24(ptr) AccessChain 32(flattenTemp) 18
37: 7(fvec4) Load 36
- Store 35(Color) 37
+ Store 35(@entryPointOutput.Color) 37
40: 27(ptr) AccessChain 32(flattenTemp) 26
41: 6(float) Load 40
- Store 39(Depth) 41
+ Store 39(@entryPointOutput.Depth) 41
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.pp.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.pp.vert.out
new file mode 100644
index 00000000000..42821848a39
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.pp.vert.out
@@ -0,0 +1,61 @@
+hlsl.pp.vert
+Shader version: 500
+0:? Sequence
+0:17 Function Definition: @main( ( temp void)
+0:17 Function Parameters:
+0:17 Function Definition: main( ( temp void)
+0:17 Function Parameters:
+0:? Sequence
+0:17 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int goodGlobal1, uniform int goodGlobal2})
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:17 Function Definition: @main( ( temp void)
+0:17 Function Parameters:
+0:17 Function Definition: main( ( temp void)
+0:17 Function Parameters:
+0:? Sequence
+0:17 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int goodGlobal1, uniform int goodGlobal2})
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 13
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main"
+ Source HLSL 500
+ Name 4 "main"
+ Name 6 "@main("
+ Name 10 "$Global"
+ MemberName 10($Global) 0 "goodGlobal1"
+ MemberName 10($Global) 1 "goodGlobal2"
+ Name 12 ""
+ MemberDecorate 10($Global) 0 Offset 0
+ MemberDecorate 10($Global) 1 Offset 4
+ Decorate 10($Global) Block
+ Decorate 12 DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 9: TypeInt 32 1
+ 10($Global): TypeStruct 9(int) 9(int)
+ 11: TypePointer Uniform 10($Global)
+ 12: 11(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 8: 2 FunctionCall 6(@main()
+ Return
+ FunctionEnd
+ 6(@main(): 2 Function None 3
+ 7: Label
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precedence.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precedence.frag.out
index 54dcf3124db..0c898cc0005 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precedence.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precedence.frag.out
@@ -1,5 +1,5 @@
hlsl.precedence.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vf4; ( temp 4-component vector of float)
@@ -75,7 +75,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vf4; ( temp 4-component vector of float)
@@ -148,7 +148,7 @@ gl_FragCoord origin is upper left
0:? 'a4' (layout( location=3) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 65
Capability Shader
@@ -156,6 +156,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 43 46 49 52 55
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 14 "@PixelShaderFunction(vf4;vf4;vf4;vf4;"
Name 10 "a1"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precedence2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precedence2.frag.out
index a0ddd446730..343240fc4cb 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precedence2.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precedence2.frag.out
@@ -1,5 +1,5 @@
hlsl.precedence2.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: @PixelShaderFunction(i1;i1;i1;i1; ( temp int)
@@ -30,16 +30,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'a1' ( temp int)
-0:? 'a1' (layout( location=0) in int)
+0:? 'a1' (layout( location=0) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a2' ( temp int)
-0:? 'a2' (layout( location=1) in int)
+0:? 'a2' (layout( location=1) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a3' ( temp int)
-0:? 'a3' (layout( location=2) in int)
+0:? 'a3' (layout( location=2) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a4' ( temp int)
-0:? 'a4' (layout( location=3) in int)
+0:? 'a4' (layout( location=3) flat in int)
0:7 move second child to first child ( temp int)
0:? '@entryPointOutput' (layout( location=0) out int)
0:7 Function Call: @PixelShaderFunction(i1;i1;i1;i1; ( temp int)
@@ -49,16 +49,16 @@ gl_FragCoord origin is upper left
0:? 'a4' ( temp int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out int)
-0:? 'a1' (layout( location=0) in int)
-0:? 'a2' (layout( location=1) in int)
-0:? 'a3' (layout( location=2) in int)
-0:? 'a4' (layout( location=3) in int)
+0:? 'a1' (layout( location=0) flat in int)
+0:? 'a2' (layout( location=1) flat in int)
+0:? 'a3' (layout( location=2) flat in int)
+0:? 'a4' (layout( location=3) flat in int)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: @PixelShaderFunction(i1;i1;i1;i1; ( temp int)
@@ -89,16 +89,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'a1' ( temp int)
-0:? 'a1' (layout( location=0) in int)
+0:? 'a1' (layout( location=0) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a2' ( temp int)
-0:? 'a2' (layout( location=1) in int)
+0:? 'a2' (layout( location=1) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a3' ( temp int)
-0:? 'a3' (layout( location=2) in int)
+0:? 'a3' (layout( location=2) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a4' ( temp int)
-0:? 'a4' (layout( location=3) in int)
+0:? 'a4' (layout( location=3) flat in int)
0:7 move second child to first child ( temp int)
0:? '@entryPointOutput' (layout( location=0) out int)
0:7 Function Call: @PixelShaderFunction(i1;i1;i1;i1; ( temp int)
@@ -108,13 +108,13 @@ gl_FragCoord origin is upper left
0:? 'a4' ( temp int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out int)
-0:? 'a1' (layout( location=0) in int)
-0:? 'a2' (layout( location=1) in int)
-0:? 'a3' (layout( location=2) in int)
-0:? 'a4' (layout( location=3) in int)
+0:? 'a1' (layout( location=0) flat in int)
+0:? 'a2' (layout( location=1) flat in int)
+0:? 'a3' (layout( location=2) flat in int)
+0:? 'a4' (layout( location=3) flat in int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 56
Capability Shader
@@ -122,6 +122,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 34 37 40 43 46
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 13 "@PixelShaderFunction(i1;i1;i1;i1;"
Name 9 "a1"
@@ -141,9 +142,13 @@ gl_FragCoord origin is upper left
Name 49 "param"
Name 51 "param"
Name 53 "param"
+ Decorate 34(a1) Flat
Decorate 34(a1) Location 0
+ Decorate 37(a2) Flat
Decorate 37(a2) Location 1
+ Decorate 40(a3) Flat
Decorate 40(a3) Location 2
+ Decorate 43(a4) Flat
Decorate 43(a4) Location 3
Decorate 46(@entryPointOutput) Location 0
2: TypeVoid
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precise.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precise.frag.out
index 8a0ac8151ae..66da1d653a0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precise.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.precise.frag.out
@@ -1,5 +1,5 @@
hlsl.precise.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:6 Function Definition: MyFunction(f1;vf3; ( temp void)
@@ -26,20 +26,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:9 Sequence
0:9 move second child to first child ( noContraction temp 4-component vector of float)
-0:? 'color' (layout( location=0) noContraction out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float)
0:9 color: direct index for structure ( noContraction temp 4-component vector of float)
0:9 Function Call: @main( ( temp structure{ noContraction temp 4-component vector of float color})
0:9 Constant:
0:9 0 (const int)
0:? Linker Objects
0:? 'precisefloat' ( noContraction global float)
-0:? 'color' (layout( location=0) noContraction out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:6 Function Definition: MyFunction(f1;vf3; ( temp void)
@@ -66,17 +66,17 @@ gl_FragCoord origin is upper left
0:? Sequence
0:9 Sequence
0:9 move second child to first child ( noContraction temp 4-component vector of float)
-0:? 'color' (layout( location=0) noContraction out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float)
0:9 color: direct index for structure ( noContraction temp 4-component vector of float)
0:9 Function Call: @main( ( temp structure{ noContraction temp 4-component vector of float color})
0:9 Constant:
0:9 0 (const int)
0:? Linker Objects
0:? 'precisefloat' ( noContraction global float)
-0:? 'color' (layout( location=0) noContraction out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 37
Capability Shader
@@ -84,6 +84,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 32
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 13 "MyFunction(f1;vf3;"
Name 11 "myfloat"
@@ -92,9 +93,9 @@ gl_FragCoord origin is upper left
MemberName 16(PS_OUTPUT) 0 "color"
Name 18 "@main("
Name 21 "ps_output"
- Name 32 "color"
+ Name 32 "@entryPointOutput.color"
Name 36 "precisefloat"
- Decorate 32(color) Location 0
+ Decorate 32(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -112,14 +113,14 @@ gl_FragCoord origin is upper left
25: 15(fvec4) ConstantComposite 24 24 24 24
26: TypePointer Function 15(fvec4)
31: TypePointer Output 15(fvec4)
- 32(color): 31(ptr) Variable Output
+32(@entryPointOutput.color): 31(ptr) Variable Output
35: TypePointer Private 6(float)
36(precisefloat): 35(ptr) Variable Private
4(main): 2 Function None 3
5: Label
33:16(PS_OUTPUT) FunctionCall 18(@main()
34: 15(fvec4) CompositeExtract 33 0
- Store 32(color) 34
+ Store 32(@entryPointOutput.color) 34
Return
FunctionEnd
13(MyFunction(f1;vf3;): 2 Function None 10
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.preprocessor.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.preprocessor.frag.out
new file mode 100644
index 00000000000..cbcd66fe646
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.preprocessor.frag.out
@@ -0,0 +1,163 @@
+hlsl.preprocessor.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:9 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:9 Function Parameters:
+0:9 'input' ( in 4-component vector of float)
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 'tex' ( temp 4-component vector of float)
+0:10 texture ( temp 4-component vector of float)
+0:10 Construct combined texture-sampler ( temp sampler2D)
+0:10 'test_texture' ( uniform texture2D)
+0:10 'test_texture_ss' ( uniform sampler)
+0:10 vector swizzle ( temp 2-component vector of float)
+0:10 vector swizzle ( temp 2-component vector of float)
+0:10 'input' ( in 4-component vector of float)
+0:10 Sequence
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 Sequence
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:11 Branch: Return with expression
+0:11 'tex' ( temp 4-component vector of float)
+0:9 Function Definition: main( ( temp void)
+0:9 Function Parameters:
+0:? Sequence
+0:9 move second child to first child ( temp 4-component vector of float)
+0:? 'input' ( temp 4-component vector of float)
+0:? 'input' (layout( location=0) in 4-component vector of float)
+0:9 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:9 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'input' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'test_texture' ( uniform texture2D)
+0:? 'test_texture_ss' ( uniform sampler)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'input' (layout( location=0) in 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:9 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:9 Function Parameters:
+0:9 'input' ( in 4-component vector of float)
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 'tex' ( temp 4-component vector of float)
+0:10 texture ( temp 4-component vector of float)
+0:10 Construct combined texture-sampler ( temp sampler2D)
+0:10 'test_texture' ( uniform texture2D)
+0:10 'test_texture_ss' ( uniform sampler)
+0:10 vector swizzle ( temp 2-component vector of float)
+0:10 vector swizzle ( temp 2-component vector of float)
+0:10 'input' ( in 4-component vector of float)
+0:10 Sequence
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 Sequence
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:11 Branch: Return with expression
+0:11 'tex' ( temp 4-component vector of float)
+0:9 Function Definition: main( ( temp void)
+0:9 Function Parameters:
+0:? Sequence
+0:9 move second child to first child ( temp 4-component vector of float)
+0:? 'input' ( temp 4-component vector of float)
+0:? 'input' (layout( location=0) in 4-component vector of float)
+0:9 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:9 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'input' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'test_texture' ( uniform texture2D)
+0:? 'test_texture_ss' ( uniform sampler)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'input' (layout( location=0) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 40
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 33 36
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vf4;"
+ Name 10 "input"
+ Name 13 "tex"
+ Name 16 "test_texture"
+ Name 20 "test_texture_ss"
+ Name 31 "input"
+ Name 33 "input"
+ Name 36 "@entryPointOutput"
+ Name 37 "param"
+ Decorate 16(test_texture) DescriptorSet 0
+ Decorate 20(test_texture_ss) DescriptorSet 0
+ Decorate 33(input) Location 0
+ Decorate 36(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeFunction 7(fvec4) 8(ptr)
+ 14: TypeImage 6(float) 2D sampled format:Unknown
+ 15: TypePointer UniformConstant 14
+16(test_texture): 15(ptr) Variable UniformConstant
+ 18: TypeSampler
+ 19: TypePointer UniformConstant 18
+20(test_texture_ss): 19(ptr) Variable UniformConstant
+ 22: TypeSampledImage 14
+ 24: TypeVector 6(float) 2
+ 32: TypePointer Input 7(fvec4)
+ 33(input): 32(ptr) Variable Input
+ 35: TypePointer Output 7(fvec4)
+36(@entryPointOutput): 35(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 31(input): 8(ptr) Variable Function
+ 37(param): 8(ptr) Variable Function
+ 34: 7(fvec4) Load 33(input)
+ Store 31(input) 34
+ 38: 7(fvec4) Load 31(input)
+ Store 37(param) 38
+ 39: 7(fvec4) FunctionCall 11(@main(vf4;) 37(param)
+ Store 36(@entryPointOutput) 39
+ Return
+ FunctionEnd
+ 11(@main(vf4;): 7(fvec4) Function None 9
+ 10(input): 8(ptr) FunctionParameter
+ 12: Label
+ 13(tex): 8(ptr) Variable Function
+ 17: 14 Load 16(test_texture)
+ 21: 18 Load 20(test_texture_ss)
+ 23: 22 SampledImage 17 21
+ 25: 7(fvec4) Load 10(input)
+ 26: 24(fvec2) VectorShuffle 25 25 0 1
+ 27: 7(fvec4) ImageSampleImplicitLod 23 26
+ Store 13(tex) 27
+ 28: 7(fvec4) Load 13(tex)
+ ReturnValue 28
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.atomic.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.atomic.frag.out
index b09f68d4e8d..2d4bd6eaa49 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.atomic.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.atomic.frag.out
@@ -1,5 +1,5 @@
hlsl.promote.atomic.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main( ( temp 4-component vector of float)
@@ -33,7 +33,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main( ( temp 4-component vector of float)
@@ -64,15 +64,16 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 36
Capability Shader
- Capability SampledBuffer
+ Capability ImageBuffer
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 34
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 "@main("
Name 13 "Orig"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.binary.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.binary.frag.out
index 34a46f9865c..bc91ad9d116 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.binary.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.binary.frag.out
@@ -1,5 +1,5 @@
hlsl.promote.binary.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:14 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -74,20 +74,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:14 Sequence
0:14 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:14 Color: direct index for structure ( temp 4-component vector of float)
0:14 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:14 Constant:
0:14 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:14 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -162,17 +162,17 @@ gl_FragCoord origin is upper left
0:? Sequence
0:14 Sequence
0:14 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:14 Color: direct index for structure ( temp 4-component vector of float)
0:14 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:14 Constant:
0:14 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform bool bval, uniform 4-component vector of bool bval4, uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 83
Capability Shader
@@ -180,6 +180,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 80
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -194,7 +195,7 @@ gl_FragCoord origin is upper left
Name 18 ""
Name 66 "l_int"
Name 73 "psout"
- Name 80 "Color"
+ Name 80 "@entryPointOutput.Color"
MemberDecorate 16($Global) 0 Offset 0
MemberDecorate 16($Global) 1 Offset 16
MemberDecorate 16($Global) 2 Offset 32
@@ -203,7 +204,7 @@ gl_FragCoord origin is upper left
MemberDecorate 16($Global) 5 Offset 80
Decorate 16($Global) Block
Decorate 18 DescriptorSet 0
- Decorate 80(Color) Location 0
+ Decorate 80(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -241,12 +242,12 @@ gl_FragCoord origin is upper left
72: TypePointer Function 8(PS_OUTPUT)
74: TypePointer Function 7(fvec4)
79: TypePointer Output 7(fvec4)
- 80(Color): 79(ptr) Variable Output
+80(@entryPointOutput.Color): 79(ptr) Variable Output
4(main): 2 Function None 3
5: Label
81:8(PS_OUTPUT) FunctionCall 10(@main()
82: 7(fvec4) CompositeExtract 81 0
- Store 80(Color) 82
+ Store 80(@entryPointOutput.Color) 82
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.vec1.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.vec1.frag.out
index c76f5d23c7b..ac0e44ef348 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.vec1.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promote.vec1.frag.out
@@ -1,5 +1,5 @@
hlsl.promote.vec1.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: @main( ( temp 4-component vector of float)
@@ -41,7 +41,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: @main( ( temp 4-component vector of float)
@@ -80,7 +80,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 31
Capability Shader
@@ -88,6 +88,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 29
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 "@main("
Name 12 "f1a"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promotions.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promotions.frag.out
index d955195db82..5383959ab18 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promotions.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.promotions.frag.out
@@ -1,5 +1,5 @@
hlsl.promotions.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:19 Function Definition: Fn_F3(vf3; ( temp void)
@@ -779,20 +779,20 @@ gl_FragCoord origin is upper left
0:? Sequence
0:52 Sequence
0:52 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:52 Color: direct index for structure ( temp 4-component vector of float)
0:52 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:52 Constant:
0:52 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:19 Function Definition: Fn_F3(vf3; ( temp void)
@@ -1572,17 +1572,17 @@ gl_FragCoord origin is upper left
0:? Sequence
0:52 Sequence
0:52 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:52 Color: direct index for structure ( temp 4-component vector of float)
0:52 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:52 Constant:
0:52 0 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 3-component vector of int i3, uniform 3-component vector of bool b3, uniform 3-component vector of float f3, uniform 3-component vector of uint u3, uniform 3-component vector of double d3, uniform int is, uniform bool bs, uniform float fs, uniform uint us, uniform double ds})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 596
Capability Shader
@@ -1591,6 +1591,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 593
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "Fn_F3(vf3;"
Name 10 "x"
@@ -1681,7 +1682,7 @@ gl_FragCoord origin is upper left
Name 576 "c2"
Name 578 "outval"
Name 586 "psout"
- Name 593 "Color"
+ Name 593 "@entryPointOutput.Color"
MemberDecorate 111($Global) 0 Offset 0
MemberDecorate 111($Global) 1 Offset 16
MemberDecorate 111($Global) 2 Offset 32
@@ -1694,7 +1695,7 @@ gl_FragCoord origin is upper left
MemberDecorate 111($Global) 9 Offset 104
Decorate 111($Global) Block
Decorate 113 DescriptorSet 0
- Decorate 593(Color) Location 0
+ Decorate 593(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -1765,12 +1766,12 @@ gl_FragCoord origin is upper left
579: 6(float) Constant 1080452710
585: TypePointer Function 107(PS_OUTPUT)
592: TypePointer Output 106(fvec4)
- 593(Color): 592(ptr) Variable Output
+593(@entryPointOutput.Color): 592(ptr) Variable Output
4(main): 2 Function None 3
5: Label
594:107(PS_OUTPUT) FunctionCall 109(@main()
595: 106(fvec4) CompositeExtract 594 0
- Store 593(Color) 595
+ Store 593(@entryPointOutput.Color) 595
Return
FunctionEnd
11(Fn_F3(vf3;): 2 Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.reflection.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.reflection.vert.out
index 8ecfde6168f..5f7a033961b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.reflection.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.reflection.vert.out
@@ -2,26 +2,19 @@ hlsl.reflection.vert
Uniform reflection:
anonMember3: offset 80, type 8b52, size 1, index 0, binding -1
s.a: offset 0, type 1404, size 1, index 1, binding -1
-ablock.scalar: offset 12, type 1404, size 1, index 2, binding -1
m23: offset 16, type 8b67, size 1, index 0, binding -1
scalarAfterm23: offset 48, type 1404, size 1, index 0, binding -1
-c_m23: offset 16, type 8b67, size 1, index 3, binding -1
-c_scalarAfterm23: offset 48, type 1404, size 1, index 3, binding -1
+c_m23: offset 16, type 8b67, size 1, index 2, binding -1
+c_scalarAfterm23: offset 48, type 1404, size 1, index 2, binding -1
scalarBeforeArray: offset 96, type 1404, size 1, index 0, binding -1
floatArray: offset 112, type 1406, size 5, index 0, binding -1
scalarAfterArray: offset 192, type 1404, size 1, index 0, binding -1
-ablock.memfloat2: offset 48, type 8b50, size 1, index 2, binding -1
-ablock.memf1: offset 56, type 1406, size 1, index 2, binding -1
-ablock.memf2: offset 60, type 8b56, size 1, index 2, binding -1
-ablock.memf3: offset 64, type 1404, size 1, index 2, binding -1
-ablock.memfloat2a: offset 72, type 8b50, size 1, index 2, binding -1
-ablock.m22: offset 80, type 8b5a, size 7, index 2, binding -1
+m22: offset 208, type 8b5a, size 9, index 0, binding -1
dm22: offset 32, type 8b5a, size 4, index 1, binding -1
-m22: offset 208, type 8b5a, size 3, index 0, binding -1
-nest.foo.n1.a: offset 0, type 1406, size 1, index 4, binding -1
-nest.foo.n2.b: offset 16, type 1406, size 1, index 4, binding -1
-nest.foo.n2.c: offset 20, type 1406, size 1, index 4, binding -1
-nest.foo.n2.d: offset 24, type 1406, size 1, index 4, binding -1
+foo.n1.a: offset 0, type 1406, size 1, index 3, binding -1
+foo.n2.b: offset 16, type 1406, size 1, index 3, binding -1
+foo.n2.c: offset 20, type 1406, size 1, index 3, binding -1
+foo.n2.d: offset 24, type 1406, size 1, index 3, binding -1
deepA.d2.d1[2].va: offset 376, type 8b50, size 2, index 1, binding -1
deepB.d2.d1.va: offset 984, type 8b50, size 2, index 1, binding -1
deepB.d2.d1[0].va: offset 984, type 8b50, size 2, index 1, binding -1
@@ -61,19 +54,18 @@ deepD[1].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1, binding -1
deepD[1].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1, binding -1
deepD[1].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1, binding -1
deepD[1].v3: offset 2480, type 8b54, size 1, index 1, binding -1
-arrBl.foo: offset 0, type 1406, size 1, index 5, binding -1
-arrBl2.foo: offset 0, type 1406, size 1, index 6, binding -1
+foo1: offset 0, type 1406, size 1, index 4, binding -1
+foo2: offset 0, type 1406, size 1, index 5, binding -1
anonMember1: offset 0, type 8b51, size 1, index 0, binding -1
uf1: offset 16, type 1406, size 1, index 1, binding -1
Uniform block reflection:
nameless: offset -1, type ffffffff, size 496, index -1, binding -1
$Global: offset -1, type ffffffff, size 3088, index -1, binding -1
-ablock: offset -1, type ffffffff, size 304, index -1, binding -1
c_nameless: offset -1, type ffffffff, size 96, index -1, binding -1
-nest: offset -1, type ffffffff, size 32, index -1, binding -1
-arrBl: offset -1, type ffffffff, size 4, index -1, binding -1
-arrBl2: offset -1, type ffffffff, size 4, index -1, binding -1
+nested: offset -1, type ffffffff, size 32, index -1, binding -1
+abl: offset -1, type ffffffff, size 4, index -1, binding -1
+abl2: offset -1, type ffffffff, size 4, index -1, binding -1
Vertex attribute reflection:
attributeFloat: offset 0, type 1406, size 0, index 0, binding -1
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.atomics.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.atomics.frag.out
index a2e53584936..ae84db0f9d1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.atomics.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.atomics.frag.out
@@ -1,5 +1,5 @@
hlsl.rw.atomics.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -1942,7 +1942,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:45 Sequence
0:45 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:45 Color: direct index for structure ( temp 4-component vector of float)
0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:45 Constant:
@@ -1968,13 +1968,13 @@ gl_FragCoord origin is upper left
0:? 'g_tBuffI' (layout( r32i) uniform iimageBuffer)
0:? 'g_tBuffU' (layout( r32ui) uniform uimageBuffer)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -3917,7 +3917,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:45 Sequence
0:45 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:45 Color: direct index for structure ( temp 4-component vector of float)
0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:45 Constant:
@@ -3943,19 +3943,20 @@ gl_FragCoord origin is upper left
0:? 'g_tBuffI' (layout( r32i) uniform iimageBuffer)
0:? 'g_tBuffU' (layout( r32ui) uniform uimageBuffer)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform uint u1, uniform 2-component vector of uint u2, uniform 3-component vector of uint u3, uniform uint u1b, uniform uint u1c, uniform int i1, uniform 2-component vector of int i2, uniform 3-component vector of int i3, uniform int i1b, uniform int i1c})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 1147
Capability Shader
- Capability Sampled1D
- Capability SampledBuffer
+ Capability Image1D
+ Capability ImageBuffer
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 1117
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -3985,7 +3986,7 @@ gl_FragCoord origin is upper left
Name 931 "g_tBuffI"
Name 1020 "g_tBuffU"
Name 1108 "psout"
- Name 1117 "Color"
+ Name 1117 "@entryPointOutput.Color"
Name 1122 "g_sSamp"
Name 1125 "g_tTex1df1"
Name 1128 "g_tTex2df1"
@@ -4017,7 +4018,7 @@ gl_FragCoord origin is upper left
Decorate 670(g_tTex1du1a) DescriptorSet 0
Decorate 931(g_tBuffI) DescriptorSet 0
Decorate 1020(g_tBuffU) DescriptorSet 0
- Decorate 1117(Color) Location 0
+ Decorate 1117(@entryPointOutput.Color) Location 0
Decorate 1122(g_sSamp) DescriptorSet 0
Decorate 1125(g_tTex1df1) DescriptorSet 0
Decorate 1128(g_tTex2df1) DescriptorSet 0
@@ -4099,7 +4100,7 @@ gl_FragCoord origin is upper left
1110: 7(fvec4) ConstantComposite 1109 1109 1109 1109
1111: TypePointer Function 7(fvec4)
1116: TypePointer Output 7(fvec4)
- 1117(Color): 1116(ptr) Variable Output
+1117(@entryPointOutput.Color): 1116(ptr) Variable Output
1120: TypeSampler
1121: TypePointer UniformConstant 1120
1122(g_sSamp): 1121(ptr) Variable UniformConstant
@@ -4131,7 +4132,7 @@ gl_FragCoord origin is upper left
5: Label
1118:8(PS_OUTPUT) FunctionCall 10(@main()
1119: 7(fvec4) CompositeExtract 1118 0
- Store 1117(Color) 1119
+ Store 1117(@entryPointOutput.Color) 1119
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.bracket.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.bracket.frag.out
index ece7bfa3e32..c92eedc3c81 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.bracket.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.bracket.frag.out
@@ -1,5 +1,5 @@
hlsl.rw.bracket.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:42 Function Definition: Fn1(vi4; ( temp 4-component vector of int)
@@ -844,7 +844,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:53 Sequence
0:53 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:53 Color: direct index for structure ( temp 4-component vector of float)
0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:53 Constant:
@@ -867,13 +867,13 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray)
0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:42 Function Definition: Fn1(vi4; ( temp 4-component vector of int)
@@ -1718,7 +1718,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:53 Sequence
0:53 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:53 Color: direct index for structure ( temp 4-component vector of float)
0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:53 Constant:
@@ -1741,18 +1741,19 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di4a' (layout( rgba32i) uniform iimage2DArray)
0:? 'g_tTex2du4a' (layout( rgba32ui) uniform uimage2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 4-component vector of float uf4, uniform 4-component vector of int ui4, uniform 4-component vector of uint uu4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 607
Capability Shader
- Capability Sampled1D
+ Capability Image1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 583
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "Fn1(vi4;"
Name 10 "x"
@@ -1871,7 +1872,7 @@ gl_FragCoord origin is upper left
Name 561 "storeTempPost"
Name 569 "storeTemp"
Name 576 "psout"
- Name 583 "Color"
+ Name 583 "@entryPointOutput.Color"
Name 588 "g_sSamp"
Name 591 "g_tTex1df4a"
Name 594 "g_tTex1di4a"
@@ -1902,7 +1903,7 @@ gl_FragCoord origin is upper left
Decorate 131(g_tTex3df4) DescriptorSet 0
Decorate 141(g_tTex3di4) DescriptorSet 0
Decorate 149(g_tTex3du4) DescriptorSet 0
- Decorate 583(Color) Location 0
+ Decorate 583(@entryPointOutput.Color) Location 0
Decorate 588(g_sSamp) DescriptorSet 0
Decorate 588(g_sSamp) Binding 0
Decorate 591(g_tTex1df4a) DescriptorSet 0
@@ -2004,7 +2005,7 @@ gl_FragCoord origin is upper left
575: TypePointer Function 42(PS_OUTPUT)
577: 21(fvec4) ConstantComposite 408 408 408 408
582: TypePointer Output 21(fvec4)
- 583(Color): 582(ptr) Variable Output
+583(@entryPointOutput.Color): 582(ptr) Variable Output
586: TypeSampler
587: TypePointer UniformConstant 586
588(g_sSamp): 587(ptr) Variable UniformConstant
@@ -2030,7 +2031,7 @@ gl_FragCoord origin is upper left
5: Label
584:42(PS_OUTPUT) FunctionCall 44(@main()
585: 21(fvec4) CompositeExtract 584 0
- Store 583(Color) 585
+ Store 583(@entryPointOutput.Color) 585
Return
FunctionEnd
11(Fn1(vi4;): 7(ivec4) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.register.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.register.frag.out
index 2e0c5622386..f8409f7f4cc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.register.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.register.frag.out
@@ -1,5 +1,5 @@
hlsl.rw.register.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -36,7 +36,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:11 Color: direct index for structure ( temp 4-component vector of float)
0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:11 Constant:
@@ -44,13 +44,13 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'g_tTex1df1' (layout( binding=2 r32f) uniform image1D)
0:? 'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -87,7 +87,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:11 Color: direct index for structure ( temp 4-component vector of float)
0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:11 Constant:
@@ -95,19 +95,20 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'g_tTex1df1' (layout( binding=2 r32f) uniform image1D)
0:? 'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 42
Capability Shader
- Capability Sampled1D
- Capability SampledBuffer
+ Capability Image1D
+ Capability ImageBuffer
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 39
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -117,12 +118,12 @@ gl_FragCoord origin is upper left
Name 23 "r01"
Name 26 "g_tBuf1du1"
Name 30 "psout"
- Name 39 "Color"
+ Name 39 "@entryPointOutput.Color"
Decorate 16(g_tTex1df1) DescriptorSet 0
Decorate 16(g_tTex1df1) Binding 2
Decorate 26(g_tBuf1du1) DescriptorSet 0
Decorate 26(g_tBuf1du1) Binding 3
- Decorate 39(Color) Location 0
+ Decorate 39(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -145,12 +146,12 @@ gl_FragCoord origin is upper left
32: 7(fvec4) ConstantComposite 31 31 31 31
33: TypePointer Function 7(fvec4)
38: TypePointer Output 7(fvec4)
- 39(Color): 38(ptr) Variable Output
+39(@entryPointOutput.Color): 38(ptr) Variable Output
4(main): 2 Function None 3
5: Label
40:8(PS_OUTPUT) FunctionCall 10(@main()
41: 7(fvec4) CompositeExtract 40 0
- Store 39(Color) 41
+ Store 39(@entryPointOutput.Color) 41
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
index 991d524e280..484fd90510a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
@@ -1,5 +1,5 @@
hlsl.rw.scalar.bracket.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:42 Function Definition: Fn1(i1; ( temp int)
@@ -817,7 +817,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:53 Sequence
0:53 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:53 Color: direct index for structure ( temp 4-component vector of float)
0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:53 Constant:
@@ -840,13 +840,13 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di1a' (layout( r32i) uniform iimage2DArray)
0:? 'g_tTex2du1a' (layout( r32ui) uniform uimage2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:42 Function Definition: Fn1(i1; ( temp int)
@@ -1664,7 +1664,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:53 Sequence
0:53 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:53 Color: direct index for structure ( temp 4-component vector of float)
0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:53 Constant:
@@ -1687,18 +1687,19 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di1a' (layout( r32i) uniform iimage2DArray)
0:? 'g_tTex2du1a' (layout( r32ui) uniform uimage2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 571
Capability Shader
- Capability Sampled1D
+ Capability Image1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 547
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 10 "Fn1(i1;"
Name 9 "x"
@@ -1817,7 +1818,7 @@ gl_FragCoord origin is upper left
Name 524 "storeTempPost"
Name 531 "storeTemp"
Name 539 "psout"
- Name 547 "Color"
+ Name 547 "@entryPointOutput.Color"
Name 552 "g_sSamp"
Name 555 "g_tTex1df1a"
Name 558 "g_tTex1di1a"
@@ -1847,7 +1848,7 @@ gl_FragCoord origin is upper left
Decorate 125(g_tTex3df1) DescriptorSet 0
Decorate 135(g_tTex3di1) DescriptorSet 0
Decorate 143(g_tTex3du1) DescriptorSet 0
- Decorate 547(Color) Location 0
+ Decorate 547(@entryPointOutput.Color) Location 0
Decorate 552(g_sSamp) DescriptorSet 0
Decorate 552(g_sSamp) Binding 0
Decorate 555(g_tTex1df1a) DescriptorSet 0
@@ -1933,7 +1934,7 @@ gl_FragCoord origin is upper left
540: 39(fvec4) ConstantComposite 382 382 382 382
541: TypePointer Function 39(fvec4)
546: TypePointer Output 39(fvec4)
- 547(Color): 546(ptr) Variable Output
+547(@entryPointOutput.Color): 546(ptr) Variable Output
550: TypeSampler
551: TypePointer UniformConstant 550
552(g_sSamp): 551(ptr) Variable UniformConstant
@@ -1959,7 +1960,7 @@ gl_FragCoord origin is upper left
5: Label
548:40(PS_OUTPUT) FunctionCall 42(@main()
549: 39(fvec4) CompositeExtract 548 0
- Store 547(Color) 549
+ Store 547(@entryPointOutput.Color) 549
Return
FunctionEnd
10(Fn1(i1;): 6(int) Function None 8
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.swizzle.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.swizzle.frag.out
index ae2f4c9611d..f8098a5d98b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.swizzle.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.swizzle.frag.out
@@ -1,5 +1,5 @@
hlsl.rw.swizzle.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: SomeValue( ( temp 3-component vector of float)
@@ -102,7 +102,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: SomeValue( ( temp 3-component vector of float)
@@ -202,15 +202,16 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 63
Capability Shader
- Capability SampledBuffer
+ Capability ImageBuffer
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 58
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 "SomeValue("
Name 13 "@main("
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
index c34ce902e0c..42e45fc0d44 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
@@ -1,5 +1,5 @@
hlsl.rw.vec2.bracket.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:42 Function Definition: Fn1(vi2; ( temp 2-component vector of int)
@@ -826,7 +826,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:53 Sequence
0:53 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:53 Color: direct index for structure ( temp 4-component vector of float)
0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:53 Constant:
@@ -849,13 +849,13 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di2a' (layout( rg32i) uniform iimage2DArray)
0:? 'g_tTex2du2a' (layout( rg32ui) uniform uimage2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:42 Function Definition: Fn1(vi2; ( temp 2-component vector of int)
@@ -1682,7 +1682,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:53 Sequence
0:53 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:53 Color: direct index for structure ( temp 4-component vector of float)
0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:53 Constant:
@@ -1705,19 +1705,20 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di2a' (layout( rg32i) uniform iimage2DArray)
0:? 'g_tTex2du2a' (layout( rg32ui) uniform uimage2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 605
Capability Shader
- Capability Sampled1D
+ Capability Image1D
Capability StorageImageExtendedFormats
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 581
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "Fn1(vi2;"
Name 10 "x"
@@ -1836,7 +1837,7 @@ gl_FragCoord origin is upper left
Name 557 "storeTempPost"
Name 565 "storeTemp"
Name 573 "psout"
- Name 581 "Color"
+ Name 581 "@entryPointOutput.Color"
Name 586 "g_sSamp"
Name 589 "g_tTex1df2a"
Name 592 "g_tTex1di2a"
@@ -1866,7 +1867,7 @@ gl_FragCoord origin is upper left
Decorate 130(g_tTex3df2) DescriptorSet 0
Decorate 140(g_tTex3di2) DescriptorSet 0
Decorate 148(g_tTex3du2) DescriptorSet 0
- Decorate 581(Color) Location 0
+ Decorate 581(@entryPointOutput.Color) Location 0
Decorate 586(g_sSamp) DescriptorSet 0
Decorate 586(g_sSamp) Binding 0
Decorate 589(g_tTex1df2a) DescriptorSet 0
@@ -1966,7 +1967,7 @@ gl_FragCoord origin is upper left
574: 42(fvec4) ConstantComposite 404 404 404 404
575: TypePointer Function 42(fvec4)
580: TypePointer Output 42(fvec4)
- 581(Color): 580(ptr) Variable Output
+581(@entryPointOutput.Color): 580(ptr) Variable Output
584: TypeSampler
585: TypePointer UniformConstant 584
586(g_sSamp): 585(ptr) Variable UniformConstant
@@ -1992,7 +1993,7 @@ gl_FragCoord origin is upper left
5: Label
582:43(PS_OUTPUT) FunctionCall 45(@main()
583: 42(fvec4) CompositeExtract 582 0
- Store 581(Color) 583
+ Store 581(@entryPointOutput.Color) 583
Return
FunctionEnd
11(Fn1(vi2;): 7(ivec2) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.array.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.array.dx10.frag.out
index 5a8a79c6477..57f2e5f5b17 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.array.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.array.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.sample.array.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -131,13 +131,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -154,14 +154,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCubeArray)
0:? 'g_tTexcdi4' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -293,13 +293,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -316,11 +316,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCubeArray)
0:? 'g_tTexcdi4' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 146
Capability Shader
@@ -330,6 +330,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 138 142
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -356,8 +357,8 @@ gl_FragCoord origin is upper left
Name 114 "g_tTexcdu4"
Name 125 "psout"
Name 135 "flattenTemp"
- Name 138 "Color"
- Name 142 "Depth"
+ Name 138 "@entryPointOutput.Color"
+ Name 142 "@entryPointOutput.Depth"
Name 145 "g_tTex1df4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
@@ -371,8 +372,8 @@ gl_FragCoord origin is upper left
Decorate 94(g_tTexcdf4) DescriptorSet 0
Decorate 104(g_tTexcdi4) DescriptorSet 0
Decorate 114(g_tTexcdu4) DescriptorSet 0
- Decorate 138(Color) Location 0
- Decorate 142(Depth) BuiltIn FragDepth
+ Decorate 138(@entryPointOutput.Color) Location 0
+ Decorate 142(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 145(g_tTex1df4a) DescriptorSet 0
Decorate 145(g_tTex1df4a) Binding 1
2: TypeVoid
@@ -454,9 +455,9 @@ gl_FragCoord origin is upper left
129: 29(int) Constant 1
130: TypePointer Function 6(float)
137: TypePointer Output 7(fvec4)
- 138(Color): 137(ptr) Variable Output
+138(@entryPointOutput.Color): 137(ptr) Variable Output
141: TypePointer Output 6(float)
- 142(Depth): 141(ptr) Variable Output
+142(@entryPointOutput.Depth): 141(ptr) Variable Output
145(g_tTex1df4a): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -465,10 +466,10 @@ gl_FragCoord origin is upper left
Store 135(flattenTemp) 136
139: 12(ptr) AccessChain 135(flattenTemp) 126
140: 7(fvec4) Load 139
- Store 138(Color) 140
+ Store 138(@entryPointOutput.Color) 140
143: 130(ptr) AccessChain 135(flattenTemp) 129
144: 6(float) Load 143
- Store 142(Depth) 144
+ Store 142(@entryPointOutput.Depth) 144
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.basic.dx10.frag.out
index 725de275cec..56bb39a7c0d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.basic.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.basic.dx10.frag.out
@@ -1,7 +1,7 @@
hlsl.sample.basic.dx10.frag
WARNING: 0:4: 'immediate sampler state' : unimplemented
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -241,13 +241,13 @@ gl_FragCoord origin is upper left
0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:53 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:53 Color: direct index for structure ( temp 4-component vector of float)
0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:53 Constant:
0:53 0 (const int)
0:53 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:53 Depth: direct index for structure ( temp float)
0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:53 Constant:
@@ -269,14 +269,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:53 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -516,13 +516,13 @@ gl_FragCoord origin is upper left
0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:53 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:53 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:53 Color: direct index for structure ( temp 4-component vector of float)
0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:53 Constant:
0:53 0 (const int)
0:53 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:53 Depth: direct index for structure ( temp float)
0:53 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:53 Constant:
@@ -544,11 +544,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 198
Capability Shader
@@ -557,6 +557,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 188 192
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -603,8 +604,8 @@ gl_FragCoord origin is upper left
Name 169 "g_tTexcdu4"
Name 176 "psout"
Name 185 "flattenTemp"
- Name 188 "Color"
- Name 192 "Depth"
+ Name 188 "@entryPointOutput.Color"
+ Name 192 "@entryPointOutput.Depth"
Name 195 "g_sSamp2d"
Name 196 "g_sSamp2D_b"
Name 197 "g_tTex1df4a"
@@ -623,8 +624,8 @@ gl_FragCoord origin is upper left
Decorate 151(g_tTexcdf4) DescriptorSet 0
Decorate 160(g_tTexcdi4) DescriptorSet 0
Decorate 169(g_tTexcdu4) DescriptorSet 0
- Decorate 188(Color) Location 0
- Decorate 192(Depth) BuiltIn FragDepth
+ Decorate 188(@entryPointOutput.Color) Location 0
+ Decorate 192(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 195(g_sSamp2d) DescriptorSet 0
Decorate 196(g_sSamp2D_b) DescriptorSet 0
Decorate 197(g_tTex1df4a) DescriptorSet 0
@@ -730,9 +731,9 @@ gl_FragCoord origin is upper left
178: 7(fvec4) ConstantComposite 177 177 177 177
180: TypePointer Function 6(float)
187: TypePointer Output 7(fvec4)
- 188(Color): 187(ptr) Variable Output
+188(@entryPointOutput.Color): 187(ptr) Variable Output
191: TypePointer Output 6(float)
- 192(Depth): 191(ptr) Variable Output
+192(@entryPointOutput.Depth): 191(ptr) Variable Output
195(g_sSamp2d): 48(ptr) Variable UniformConstant
196(g_sSamp2D_b): 48(ptr) Variable UniformConstant
197(g_tTex1df4a): 44(ptr) Variable UniformConstant
@@ -743,10 +744,10 @@ gl_FragCoord origin is upper left
Store 185(flattenTemp) 186
189: 41(ptr) AccessChain 185(flattenTemp) 29
190: 7(fvec4) Load 189
- Store 188(Color) 190
+ Store 188(@entryPointOutput.Color) 190
193: 180(ptr) AccessChain 185(flattenTemp) 16
194: 6(float) Load 193
- Store 192(Depth) 194
+ Store 192(@entryPointOutput.Depth) 194
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.offset.dx10.frag.out
index 923db246227..e57f839f87d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.offset.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.offset.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.sample.offset.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -149,13 +149,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -175,14 +175,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -332,13 +332,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -358,11 +358,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 161
Capability Shader
@@ -371,6 +371,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 144 148
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -397,8 +398,8 @@ gl_FragCoord origin is upper left
Name 120 "g_tTex3du4"
Name 132 "psout"
Name 141 "flattenTemp"
- Name 144 "Color"
- Name 148 "Depth"
+ Name 144 "@entryPointOutput.Color"
+ Name 148 "@entryPointOutput.Depth"
Name 151 "g_tTex1df4a"
Name 154 "g_tTexcdf4"
Name 157 "g_tTexcdi4"
@@ -415,8 +416,8 @@ gl_FragCoord origin is upper left
Decorate 96(g_tTex3df4) DescriptorSet 0
Decorate 109(g_tTex3di4) DescriptorSet 0
Decorate 120(g_tTex3du4) DescriptorSet 0
- Decorate 144(Color) Location 0
- Decorate 148(Depth) BuiltIn FragDepth
+ Decorate 144(@entryPointOutput.Color) Location 0
+ Decorate 148(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 151(g_tTex1df4a) DescriptorSet 0
Decorate 151(g_tTex1df4a) Binding 1
Decorate 154(g_tTexcdf4) DescriptorSet 0
@@ -507,9 +508,9 @@ gl_FragCoord origin is upper left
134: 7(fvec4) ConstantComposite 133 133 133 133
136: TypePointer Function 6(float)
143: TypePointer Output 7(fvec4)
- 144(Color): 143(ptr) Variable Output
+144(@entryPointOutput.Color): 143(ptr) Variable Output
147: TypePointer Output 6(float)
- 148(Depth): 147(ptr) Variable Output
+148(@entryPointOutput.Depth): 147(ptr) Variable Output
151(g_tTex1df4a): 15(ptr) Variable UniformConstant
152: TypeImage 6(float) Cube sampled format:Unknown
153: TypePointer UniformConstant 152
@@ -527,10 +528,10 @@ gl_FragCoord origin is upper left
Store 141(flattenTemp) 142
145: 12(ptr) AccessChain 141(flattenTemp) 64
146: 7(fvec4) Load 145
- Store 144(Color) 146
+ Store 144(@entryPointOutput.Color) 146
149: 136(ptr) AccessChain 141(flattenTemp) 26
150: 6(float) Load 149
- Store 148(Depth) 150
+ Store 148(@entryPointOutput.Depth) 150
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
index d9cf65c605f..ad07c1549a5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.sample.offsetarray.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -110,13 +110,13 @@ gl_FragCoord origin is upper left
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:20 Color: direct index for structure ( temp 4-component vector of float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:20 Depth: direct index for structure ( temp float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
@@ -130,14 +130,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4' ( uniform texture2DArray)
0:? 'g_tTex2di4' ( uniform itexture2DArray)
0:? 'g_tTex2du4' ( uniform utexture2DArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -248,13 +248,13 @@ gl_FragCoord origin is upper left
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:20 Color: direct index for structure ( temp 4-component vector of float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:20 Depth: direct index for structure ( temp float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
@@ -268,11 +268,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4' ( uniform texture2DArray)
0:? 'g_tTex2di4' ( uniform itexture2DArray)
0:? 'g_tTex2du4' ( uniform utexture2DArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 118
Capability Shader
@@ -281,6 +281,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 110 114
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -301,8 +302,8 @@ gl_FragCoord origin is upper left
Name 87 "g_tTex2du4"
Name 98 "psout"
Name 107 "flattenTemp"
- Name 110 "Color"
- Name 114 "Depth"
+ Name 110 "@entryPointOutput.Color"
+ Name 114 "@entryPointOutput.Depth"
Name 117 "g_tTex1df4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
@@ -313,8 +314,8 @@ gl_FragCoord origin is upper left
Decorate 63(g_tTex2df4) DescriptorSet 0
Decorate 76(g_tTex2di4) DescriptorSet 0
Decorate 87(g_tTex2du4) DescriptorSet 0
- Decorate 110(Color) Location 0
- Decorate 114(Depth) BuiltIn FragDepth
+ Decorate 110(@entryPointOutput.Color) Location 0
+ Decorate 114(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 117(g_tTex1df4a) DescriptorSet 0
Decorate 117(g_tTex1df4a) Binding 1
2: TypeVoid
@@ -383,9 +384,9 @@ gl_FragCoord origin is upper left
100: 7(fvec4) ConstantComposite 99 99 99 99
102: TypePointer Function 6(float)
109: TypePointer Output 7(fvec4)
- 110(Color): 109(ptr) Variable Output
+110(@entryPointOutput.Color): 109(ptr) Variable Output
113: TypePointer Output 6(float)
- 114(Depth): 113(ptr) Variable Output
+114(@entryPointOutput.Depth): 113(ptr) Variable Output
117(g_tTex1df4a): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -394,10 +395,10 @@ gl_FragCoord origin is upper left
Store 107(flattenTemp) 108
111: 12(ptr) AccessChain 107(flattenTemp) 29
112: 7(fvec4) Load 111
- Store 110(Color) 112
+ Store 110(@entryPointOutput.Color) 112
115: 102(ptr) AccessChain 107(flattenTemp) 43
116: 6(float) Load 115
- Store 114(Depth) 116
+ Store 114(@entryPointOutput.Depth) 116
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
index c3d6f13c9a4..5213a03102c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.sample.sub-vec4.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:14 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -61,7 +61,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:14 Sequence
0:14 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:14 Color: direct index for structure ( temp 4-component vector of float)
0:14 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:14 Constant:
@@ -72,13 +72,13 @@ gl_FragCoord origin is upper left
0:? 'g_tTex1df2' ( uniform texture1D)
0:? 'g_tTex1df3' ( uniform texture1D)
0:? 'g_tTex1df4' ( uniform texture1D)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:14 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -140,7 +140,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:14 Sequence
0:14 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:14 Color: direct index for structure ( temp 4-component vector of float)
0:14 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:14 Constant:
@@ -151,10 +151,10 @@ gl_FragCoord origin is upper left
0:? 'g_tTex1df2' ( uniform texture1D)
0:? 'g_tTex1df3' ( uniform texture1D)
0:? 'g_tTex1df4' ( uniform texture1D)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 72
Capability Shader
@@ -163,6 +163,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 69
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -177,14 +178,14 @@ gl_FragCoord origin is upper left
Name 52 "txval13"
Name 53 "g_tTex1df4"
Name 59 "psout"
- Name 69 "Color"
+ Name 69 "@entryPointOutput.Color"
Decorate 16(g_tTex1df1) DescriptorSet 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
Decorate 30(g_tTex1df2) DescriptorSet 0
Decorate 42(g_tTex1df3) DescriptorSet 0
Decorate 53(g_tTex1df4) DescriptorSet 0
- Decorate 69(Color) Location 0
+ Decorate 69(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -215,12 +216,12 @@ gl_FragCoord origin is upper left
62: 6(float) Constant 1065353216
63: 7(fvec4) ConstantComposite 62 62 62 62
68: TypePointer Output 7(fvec4)
- 69(Color): 68(ptr) Variable Output
+69(@entryPointOutput.Color): 68(ptr) Variable Output
4(main): 2 Function None 3
5: Label
70:8(PS_OUTPUT) FunctionCall 10(@main()
71: 7(fvec4) CompositeExtract 70 0
- Store 69(Color) 71
+ Store 69(@entryPointOutput.Color) 71
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
index 7f6881f17e8..8535c2ce2de 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplebias.array.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -149,13 +149,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -172,14 +172,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCubeArray)
0:? 'g_tTexcdi4' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -329,13 +329,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -352,11 +352,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCubeArray)
0:? 'g_tTexcdi4' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 146
Capability Shader
@@ -366,6 +366,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 138 142
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -392,8 +393,8 @@ gl_FragCoord origin is upper left
Name 114 "g_tTexcdu4"
Name 125 "psout"
Name 135 "flattenTemp"
- Name 138 "Color"
- Name 142 "Depth"
+ Name 138 "@entryPointOutput.Color"
+ Name 142 "@entryPointOutput.Depth"
Name 145 "g_tTex1df4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
@@ -407,8 +408,8 @@ gl_FragCoord origin is upper left
Decorate 94(g_tTexcdf4) DescriptorSet 0
Decorate 104(g_tTexcdi4) DescriptorSet 0
Decorate 114(g_tTexcdu4) DescriptorSet 0
- Decorate 138(Color) Location 0
- Decorate 142(Depth) BuiltIn FragDepth
+ Decorate 138(@entryPointOutput.Color) Location 0
+ Decorate 142(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 145(g_tTex1df4a) DescriptorSet 0
Decorate 145(g_tTex1df4a) Binding 1
2: TypeVoid
@@ -490,9 +491,9 @@ gl_FragCoord origin is upper left
129: 30(int) Constant 1
130: TypePointer Function 6(float)
137: TypePointer Output 7(fvec4)
- 138(Color): 137(ptr) Variable Output
+138(@entryPointOutput.Color): 137(ptr) Variable Output
141: TypePointer Output 6(float)
- 142(Depth): 141(ptr) Variable Output
+142(@entryPointOutput.Depth): 141(ptr) Variable Output
145(g_tTex1df4a): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -501,10 +502,10 @@ gl_FragCoord origin is upper left
Store 135(flattenTemp) 136
139: 12(ptr) AccessChain 135(flattenTemp) 126
140: 7(fvec4) Load 139
- Store 138(Color) 140
+ Store 138(@entryPointOutput.Color) 140
143: 130(ptr) AccessChain 135(flattenTemp) 129
144: 6(float) Load 143
- Store 142(Depth) 144
+ Store 142(@entryPointOutput.Depth) 144
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
index 81e8da949a6..919fb8025c4 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplebias.basic.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -179,13 +179,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -205,14 +205,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -392,13 +392,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -418,11 +418,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 170
Capability Shader
@@ -431,6 +431,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 162 166
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -463,8 +464,8 @@ gl_FragCoord origin is upper left
Name 141 "g_tTexcdu4"
Name 148 "psout"
Name 159 "flattenTemp"
- Name 162 "Color"
- Name 166 "Depth"
+ Name 162 "@entryPointOutput.Color"
+ Name 166 "@entryPointOutput.Depth"
Name 169 "g_tTex1df4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
@@ -481,8 +482,8 @@ gl_FragCoord origin is upper left
Decorate 123(g_tTexcdf4) DescriptorSet 0
Decorate 132(g_tTexcdi4) DescriptorSet 0
Decorate 141(g_tTexcdu4) DescriptorSet 0
- Decorate 162(Color) Location 0
- Decorate 166(Depth) BuiltIn FragDepth
+ Decorate 162(@entryPointOutput.Color) Location 0
+ Decorate 166(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 169(g_tTex1df4a) DescriptorSet 0
Decorate 169(g_tTex1df4a) Binding 1
2: TypeVoid
@@ -573,9 +574,9 @@ gl_FragCoord origin is upper left
153: 27(int) Constant 1
154: TypePointer Function 6(float)
161: TypePointer Output 7(fvec4)
- 162(Color): 161(ptr) Variable Output
+162(@entryPointOutput.Color): 161(ptr) Variable Output
165: TypePointer Output 6(float)
- 166(Depth): 165(ptr) Variable Output
+166(@entryPointOutput.Depth): 165(ptr) Variable Output
169(g_tTex1df4a): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -584,10 +585,10 @@ gl_FragCoord origin is upper left
Store 159(flattenTemp) 160
163: 12(ptr) AccessChain 159(flattenTemp) 149
164: 7(fvec4) Load 163
- Store 162(Color) 164
+ Store 162(@entryPointOutput.Color) 164
167: 154(ptr) AccessChain 159(flattenTemp) 153
168: 6(float) Load 167
- Store 166(Depth) 168
+ Store 166(@entryPointOutput.Depth) 168
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
index 19191321b08..7972bffeab5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplebias.offset.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -167,13 +167,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -193,14 +193,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -368,13 +368,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -394,11 +394,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 161
Capability Shader
@@ -407,6 +407,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 144 148
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -433,8 +434,8 @@ gl_FragCoord origin is upper left
Name 120 "g_tTex3du4"
Name 132 "psout"
Name 141 "flattenTemp"
- Name 144 "Color"
- Name 148 "Depth"
+ Name 144 "@entryPointOutput.Color"
+ Name 148 "@entryPointOutput.Depth"
Name 151 "g_tTex1df4a"
Name 154 "g_tTexcdf4"
Name 157 "g_tTexcdi4"
@@ -451,8 +452,8 @@ gl_FragCoord origin is upper left
Decorate 96(g_tTex3df4) DescriptorSet 0
Decorate 109(g_tTex3di4) DescriptorSet 0
Decorate 120(g_tTex3du4) DescriptorSet 0
- Decorate 144(Color) Location 0
- Decorate 148(Depth) BuiltIn FragDepth
+ Decorate 144(@entryPointOutput.Color) Location 0
+ Decorate 148(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 151(g_tTex1df4a) DescriptorSet 0
Decorate 151(g_tTex1df4a) Binding 1
Decorate 154(g_tTexcdf4) DescriptorSet 0
@@ -543,9 +544,9 @@ gl_FragCoord origin is upper left
134: 7(fvec4) ConstantComposite 133 133 133 133
136: TypePointer Function 6(float)
143: TypePointer Output 7(fvec4)
- 144(Color): 143(ptr) Variable Output
+144(@entryPointOutput.Color): 143(ptr) Variable Output
147: TypePointer Output 6(float)
- 148(Depth): 147(ptr) Variable Output
+148(@entryPointOutput.Depth): 147(ptr) Variable Output
151(g_tTex1df4a): 15(ptr) Variable UniformConstant
152: TypeImage 6(float) Cube sampled format:Unknown
153: TypePointer UniformConstant 152
@@ -563,10 +564,10 @@ gl_FragCoord origin is upper left
Store 141(flattenTemp) 142
145: 12(ptr) AccessChain 141(flattenTemp) 65
146: 7(fvec4) Load 145
- Store 144(Color) 146
+ Store 144(@entryPointOutput.Color) 146
149: 136(ptr) AccessChain 141(flattenTemp) 27
150: 6(float) Load 149
- Store 148(Depth) 150
+ Store 148(@entryPointOutput.Depth) 150
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
index 0aab048449d..6e2bc7db065 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplebias.offsetarray.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -122,13 +122,13 @@ gl_FragCoord origin is upper left
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:20 Color: direct index for structure ( temp 4-component vector of float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:20 Depth: direct index for structure ( temp float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
@@ -142,14 +142,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4' ( uniform texture2DArray)
0:? 'g_tTex2di4' ( uniform itexture2DArray)
0:? 'g_tTex2du4' ( uniform utexture2DArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -272,13 +272,13 @@ gl_FragCoord origin is upper left
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:20 Color: direct index for structure ( temp 4-component vector of float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:20 Depth: direct index for structure ( temp float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
@@ -292,11 +292,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4' ( uniform texture2DArray)
0:? 'g_tTex2di4' ( uniform itexture2DArray)
0:? 'g_tTex2du4' ( uniform utexture2DArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 118
Capability Shader
@@ -305,6 +305,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 110 114
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -325,8 +326,8 @@ gl_FragCoord origin is upper left
Name 87 "g_tTex2du4"
Name 98 "psout"
Name 107 "flattenTemp"
- Name 110 "Color"
- Name 114 "Depth"
+ Name 110 "@entryPointOutput.Color"
+ Name 114 "@entryPointOutput.Depth"
Name 117 "g_tTex1df4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
@@ -337,8 +338,8 @@ gl_FragCoord origin is upper left
Decorate 64(g_tTex2df4) DescriptorSet 0
Decorate 77(g_tTex2di4) DescriptorSet 0
Decorate 87(g_tTex2du4) DescriptorSet 0
- Decorate 110(Color) Location 0
- Decorate 114(Depth) BuiltIn FragDepth
+ Decorate 110(@entryPointOutput.Color) Location 0
+ Decorate 114(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 117(g_tTex1df4a) DescriptorSet 0
Decorate 117(g_tTex1df4a) Binding 1
2: TypeVoid
@@ -407,9 +408,9 @@ gl_FragCoord origin is upper left
100: 7(fvec4) ConstantComposite 99 99 99 99
102: TypePointer Function 6(float)
109: TypePointer Output 7(fvec4)
- 110(Color): 109(ptr) Variable Output
+110(@entryPointOutput.Color): 109(ptr) Variable Output
113: TypePointer Output 6(float)
- 114(Depth): 113(ptr) Variable Output
+114(@entryPointOutput.Depth): 113(ptr) Variable Output
117(g_tTex1df4a): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -418,10 +419,10 @@ gl_FragCoord origin is upper left
Store 107(flattenTemp) 108
111: 12(ptr) AccessChain 107(flattenTemp) 30
112: 7(fvec4) Load 111
- Store 110(Color) 112
+ Store 110(@entryPointOutput.Color) 112
115: 102(ptr) AccessChain 107(flattenTemp) 44
116: 6(float) Load 115
- Store 114(Depth) 116
+ Store 114(@entryPointOutput.Depth) 116
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
index 6f26c98f049..5a61639f9d1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplecmp.array.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
0:42 'r10' ( temp float)
0:42 texture ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow)
-0:42 'g_tTex1df4a' ( uniform texture1DArray)
+0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -23,7 +23,7 @@ gl_FragCoord origin is upper left
0:43 'r12' ( temp float)
0:43 texture ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow)
-0:43 'g_tTex1di4a' ( uniform itexture1DArray)
+0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -36,7 +36,7 @@ gl_FragCoord origin is upper left
0:44 'r14' ( temp float)
0:44 texture ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow)
-0:44 'g_tTex1du4a' ( uniform utexture1DArray)
+0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -49,7 +49,7 @@ gl_FragCoord origin is upper left
0:47 'r30' ( temp float)
0:47 texture ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow)
-0:47 'g_tTex2df4a' ( uniform texture2DArray)
+0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -63,7 +63,7 @@ gl_FragCoord origin is upper left
0:48 'r32' ( temp float)
0:48 texture ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow)
-0:48 'g_tTex2di4a' ( uniform itexture2DArray)
+0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -77,7 +77,7 @@ gl_FragCoord origin is upper left
0:49 'r34' ( temp float)
0:49 texture ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow)
-0:49 'g_tTex2du4a' ( uniform utexture2DArray)
+0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -91,7 +91,7 @@ gl_FragCoord origin is upper left
0:52 'r60' ( temp float)
0:52 texture ( temp float)
0:52 Construct combined texture-sampler ( temp samplerCubeArrayShadow)
-0:52 'g_tTexcdf4a' ( uniform textureCubeArray)
+0:52 'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
0:52 'g_sSamp' (layout( binding=0) uniform sampler)
0:52 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -106,7 +106,7 @@ gl_FragCoord origin is upper left
0:53 'r62' ( temp float)
0:53 texture ( temp float)
0:53 Construct combined texture-sampler ( temp isamplerCubeArrayShadow)
-0:53 'g_tTexcdi4a' ( uniform itextureCubeArray)
+0:53 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
0:53 'g_sSamp' (layout( binding=0) uniform sampler)
0:53 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -121,7 +121,7 @@ gl_FragCoord origin is upper left
0:54 'r64' ( temp float)
0:54 texture ( temp float)
0:54 Construct combined texture-sampler ( temp usamplerCubeArrayShadow)
-0:54 'g_tTexcdu4a' ( uniform utextureCubeArray)
+0:54 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
0:54 'g_sSamp' (layout( binding=0) uniform sampler)
0:54 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -158,13 +158,13 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
@@ -183,23 +183,23 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'g_tTex1df4a' ( uniform texture1DArray)
-0:? 'g_tTex1di4a' ( uniform itexture1DArray)
-0:? 'g_tTex1du4a' ( uniform utexture1DArray)
-0:? 'g_tTex2df4a' ( uniform texture2DArray)
-0:? 'g_tTex2di4a' ( uniform itexture2DArray)
-0:? 'g_tTex2du4a' ( uniform utexture2DArray)
-0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
-0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
-0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow)
+0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
+0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
+0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow)
+0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
+0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
+0:? 'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
+0:? 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
+0:? 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -210,7 +210,7 @@ gl_FragCoord origin is upper left
0:42 'r10' ( temp float)
0:42 texture ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow)
-0:42 'g_tTex1df4a' ( uniform texture1DArray)
+0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -223,7 +223,7 @@ gl_FragCoord origin is upper left
0:43 'r12' ( temp float)
0:43 texture ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow)
-0:43 'g_tTex1di4a' ( uniform itexture1DArray)
+0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -236,7 +236,7 @@ gl_FragCoord origin is upper left
0:44 'r14' ( temp float)
0:44 texture ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow)
-0:44 'g_tTex1du4a' ( uniform utexture1DArray)
+0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -249,7 +249,7 @@ gl_FragCoord origin is upper left
0:47 'r30' ( temp float)
0:47 texture ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow)
-0:47 'g_tTex2df4a' ( uniform texture2DArray)
+0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -263,7 +263,7 @@ gl_FragCoord origin is upper left
0:48 'r32' ( temp float)
0:48 texture ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow)
-0:48 'g_tTex2di4a' ( uniform itexture2DArray)
+0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -277,7 +277,7 @@ gl_FragCoord origin is upper left
0:49 'r34' ( temp float)
0:49 texture ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow)
-0:49 'g_tTex2du4a' ( uniform utexture2DArray)
+0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -291,7 +291,7 @@ gl_FragCoord origin is upper left
0:52 'r60' ( temp float)
0:52 texture ( temp float)
0:52 Construct combined texture-sampler ( temp samplerCubeArrayShadow)
-0:52 'g_tTexcdf4a' ( uniform textureCubeArray)
+0:52 'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
0:52 'g_sSamp' (layout( binding=0) uniform sampler)
0:52 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -306,7 +306,7 @@ gl_FragCoord origin is upper left
0:53 'r62' ( temp float)
0:53 texture ( temp float)
0:53 Construct combined texture-sampler ( temp isamplerCubeArrayShadow)
-0:53 'g_tTexcdi4a' ( uniform itextureCubeArray)
+0:53 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
0:53 'g_sSamp' (layout( binding=0) uniform sampler)
0:53 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -321,7 +321,7 @@ gl_FragCoord origin is upper left
0:54 'r64' ( temp float)
0:54 texture ( temp float)
0:54 Construct combined texture-sampler ( temp usamplerCubeArrayShadow)
-0:54 'g_tTexcdu4a' ( uniform utextureCubeArray)
+0:54 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
0:54 'g_sSamp' (layout( binding=0) uniform sampler)
0:54 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -358,13 +358,13 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
@@ -383,29 +383,30 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'g_tTex1df4a' ( uniform texture1DArray)
-0:? 'g_tTex1di4a' ( uniform itexture1DArray)
-0:? 'g_tTex1du4a' ( uniform utexture1DArray)
-0:? 'g_tTex2df4a' ( uniform texture2DArray)
-0:? 'g_tTex2di4a' ( uniform itexture2DArray)
-0:? 'g_tTex2du4a' ( uniform utexture2DArray)
-0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
-0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
-0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow)
+0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
+0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
+0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow)
+0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
+0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
+0:? 'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
+0:? 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
+0:? 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 218
+// Generated by (magic number): 80002
+// Id's are bound by 209
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 175 179
+ EntryPoint Fragment 4 "main" 166 170
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -414,64 +415,64 @@ gl_FragCoord origin is upper left
Name 13 "r10"
Name 16 "g_tTex1df4a"
Name 20 "g_sSamp"
- Name 36 "r12"
- Name 40 "g_tTex1di4a"
- Name 51 "r14"
- Name 55 "g_tTex1du4a"
- Name 66 "r30"
- Name 69 "g_tTex2df4a"
- Name 83 "r32"
- Name 86 "g_tTex2di4a"
- Name 98 "r34"
- Name 101 "g_tTex2du4a"
- Name 113 "r60"
- Name 116 "g_tTexcdf4a"
- Name 130 "r62"
- Name 133 "g_tTexcdi4a"
- Name 145 "r64"
- Name 148 "g_tTexcdu4a"
- Name 161 "psout"
- Name 172 "flattenTemp"
- Name 175 "Color"
- Name 179 "Depth"
- Name 184 "g_tTex1df4"
- Name 187 "g_tTex1di4"
- Name 190 "g_tTex1du4"
- Name 193 "g_tTex2df4"
- Name 196 "g_tTex2di4"
- Name 199 "g_tTex2du4"
- Name 202 "g_tTex3df4"
- Name 205 "g_tTex3di4"
- Name 208 "g_tTex3du4"
- Name 211 "g_tTexcdf4"
- Name 214 "g_tTexcdi4"
- Name 217 "g_tTexcdu4"
+ Name 35 "r12"
+ Name 39 "g_tTex1di4a"
+ Name 49 "r14"
+ Name 53 "g_tTex1du4a"
+ Name 63 "r30"
+ Name 66 "g_tTex2df4a"
+ Name 79 "r32"
+ Name 82 "g_tTex2di4a"
+ Name 93 "r34"
+ Name 96 "g_tTex2du4a"
+ Name 107 "r60"
+ Name 110 "g_tTexcdf4a"
+ Name 123 "r62"
+ Name 126 "g_tTexcdi4a"
+ Name 137 "r64"
+ Name 140 "g_tTexcdu4a"
+ Name 152 "psout"
+ Name 163 "flattenTemp"
+ Name 166 "@entryPointOutput.Color"
+ Name 170 "@entryPointOutput.Depth"
+ Name 175 "g_tTex1df4"
+ Name 178 "g_tTex1di4"
+ Name 181 "g_tTex1du4"
+ Name 184 "g_tTex2df4"
+ Name 187 "g_tTex2di4"
+ Name 190 "g_tTex2du4"
+ Name 193 "g_tTex3df4"
+ Name 196 "g_tTex3di4"
+ Name 199 "g_tTex3du4"
+ Name 202 "g_tTexcdf4"
+ Name 205 "g_tTexcdi4"
+ Name 208 "g_tTexcdu4"
Decorate 16(g_tTex1df4a) DescriptorSet 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
- Decorate 40(g_tTex1di4a) DescriptorSet 0
- Decorate 55(g_tTex1du4a) DescriptorSet 0
- Decorate 69(g_tTex2df4a) DescriptorSet 0
- Decorate 86(g_tTex2di4a) DescriptorSet 0
- Decorate 101(g_tTex2du4a) DescriptorSet 0
- Decorate 116(g_tTexcdf4a) DescriptorSet 0
- Decorate 133(g_tTexcdi4a) DescriptorSet 0
- Decorate 148(g_tTexcdu4a) DescriptorSet 0
- Decorate 175(Color) Location 0
- Decorate 179(Depth) BuiltIn FragDepth
- Decorate 184(g_tTex1df4) DescriptorSet 0
- Decorate 184(g_tTex1df4) Binding 0
- Decorate 187(g_tTex1di4) DescriptorSet 0
- Decorate 190(g_tTex1du4) DescriptorSet 0
- Decorate 193(g_tTex2df4) DescriptorSet 0
- Decorate 196(g_tTex2di4) DescriptorSet 0
- Decorate 199(g_tTex2du4) DescriptorSet 0
- Decorate 202(g_tTex3df4) DescriptorSet 0
- Decorate 205(g_tTex3di4) DescriptorSet 0
- Decorate 208(g_tTex3du4) DescriptorSet 0
- Decorate 211(g_tTexcdf4) DescriptorSet 0
- Decorate 214(g_tTexcdi4) DescriptorSet 0
- Decorate 217(g_tTexcdu4) DescriptorSet 0
+ Decorate 39(g_tTex1di4a) DescriptorSet 0
+ Decorate 53(g_tTex1du4a) DescriptorSet 0
+ Decorate 66(g_tTex2df4a) DescriptorSet 0
+ Decorate 82(g_tTex2di4a) DescriptorSet 0
+ Decorate 96(g_tTex2du4a) DescriptorSet 0
+ Decorate 110(g_tTexcdf4a) DescriptorSet 0
+ Decorate 126(g_tTexcdi4a) DescriptorSet 0
+ Decorate 140(g_tTexcdu4a) DescriptorSet 0
+ Decorate 166(@entryPointOutput.Color) Location 0
+ Decorate 170(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 175(g_tTex1df4) DescriptorSet 0
+ Decorate 175(g_tTex1df4) Binding 0
+ Decorate 178(g_tTex1di4) DescriptorSet 0
+ Decorate 181(g_tTex1du4) DescriptorSet 0
+ Decorate 184(g_tTex2df4) DescriptorSet 0
+ Decorate 187(g_tTex2di4) DescriptorSet 0
+ Decorate 190(g_tTex2du4) DescriptorSet 0
+ Decorate 193(g_tTex3df4) DescriptorSet 0
+ Decorate 196(g_tTex3di4) DescriptorSet 0
+ Decorate 199(g_tTex3du4) DescriptorSet 0
+ Decorate 202(g_tTexcdf4) DescriptorSet 0
+ Decorate 205(g_tTexcdi4) DescriptorSet 0
+ Decorate 208(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -479,228 +480,219 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 6(float)
- 14: TypeImage 6(float) 1D array sampled format:Unknown
+ 14: TypeImage 6(float) 1D depth array sampled format:Unknown
15: TypePointer UniformConstant 14
16(g_tTex1df4a): 15(ptr) Variable UniformConstant
18: TypeSampler
19: TypePointer UniformConstant 18
20(g_sSamp): 19(ptr) Variable UniformConstant
- 22: TypeImage 6(float) 1D depth array sampled format:Unknown
- 23: TypeSampledImage 22
- 25: TypeVector 6(float) 2
- 26: 6(float) Constant 1036831949
- 27: 6(float) Constant 1045220557
- 28: 25(fvec2) ConstantComposite 26 27
- 29: 6(float) Constant 1061158912
- 30: TypeVector 6(float) 3
- 37: TypeInt 32 1
- 38: TypeImage 37(int) 1D array sampled format:Unknown
- 39: TypePointer UniformConstant 38
- 40(g_tTex1di4a): 39(ptr) Variable UniformConstant
- 43: TypeImage 37(int) 1D depth array sampled format:Unknown
- 44: TypeSampledImage 43
- 52: TypeInt 32 0
- 53: TypeImage 52(int) 1D array sampled format:Unknown
- 54: TypePointer UniformConstant 53
- 55(g_tTex1du4a): 54(ptr) Variable UniformConstant
- 58: TypeImage 52(int) 1D depth array sampled format:Unknown
- 59: TypeSampledImage 58
- 67: TypeImage 6(float) 2D array sampled format:Unknown
- 68: TypePointer UniformConstant 67
- 69(g_tTex2df4a): 68(ptr) Variable UniformConstant
- 72: TypeImage 6(float) 2D depth array sampled format:Unknown
- 73: TypeSampledImage 72
- 75: 6(float) Constant 1050253722
- 76: 30(fvec3) ConstantComposite 26 27 75
- 84: TypeImage 37(int) 2D array sampled format:Unknown
- 85: TypePointer UniformConstant 84
- 86(g_tTex2di4a): 85(ptr) Variable UniformConstant
- 89: TypeImage 37(int) 2D depth array sampled format:Unknown
- 90: TypeSampledImage 89
- 99: TypeImage 52(int) 2D array sampled format:Unknown
- 100: TypePointer UniformConstant 99
-101(g_tTex2du4a): 100(ptr) Variable UniformConstant
- 104: TypeImage 52(int) 2D depth array sampled format:Unknown
- 105: TypeSampledImage 104
- 114: TypeImage 6(float) Cube array sampled format:Unknown
- 115: TypePointer UniformConstant 114
-116(g_tTexcdf4a): 115(ptr) Variable UniformConstant
- 119: TypeImage 6(float) Cube depth array sampled format:Unknown
- 120: TypeSampledImage 119
- 122: 6(float) Constant 1053609165
- 123: 7(fvec4) ConstantComposite 26 27 75 122
- 131: TypeImage 37(int) Cube array sampled format:Unknown
- 132: TypePointer UniformConstant 131
-133(g_tTexcdi4a): 132(ptr) Variable UniformConstant
- 136: TypeImage 37(int) Cube depth array sampled format:Unknown
- 137: TypeSampledImage 136
- 146: TypeImage 52(int) Cube array sampled format:Unknown
- 147: TypePointer UniformConstant 146
-148(g_tTexcdu4a): 147(ptr) Variable UniformConstant
- 151: TypeImage 52(int) Cube depth array sampled format:Unknown
- 152: TypeSampledImage 151
- 160: TypePointer Function 8(PS_OUTPUT)
- 162: 37(int) Constant 0
- 163: 6(float) Constant 1065353216
- 164: 7(fvec4) ConstantComposite 163 163 163 163
- 165: TypePointer Function 7(fvec4)
- 167: 37(int) Constant 1
- 174: TypePointer Output 7(fvec4)
- 175(Color): 174(ptr) Variable Output
- 178: TypePointer Output 6(float)
- 179(Depth): 178(ptr) Variable Output
- 182: TypeImage 6(float) 1D sampled format:Unknown
+ 22: TypeSampledImage 14
+ 24: TypeVector 6(float) 2
+ 25: 6(float) Constant 1036831949
+ 26: 6(float) Constant 1045220557
+ 27: 24(fvec2) ConstantComposite 25 26
+ 28: 6(float) Constant 1061158912
+ 29: TypeVector 6(float) 3
+ 36: TypeInt 32 1
+ 37: TypeImage 36(int) 1D depth array sampled format:Unknown
+ 38: TypePointer UniformConstant 37
+ 39(g_tTex1di4a): 38(ptr) Variable UniformConstant
+ 42: TypeSampledImage 37
+ 50: TypeInt 32 0
+ 51: TypeImage 50(int) 1D depth array sampled format:Unknown
+ 52: TypePointer UniformConstant 51
+ 53(g_tTex1du4a): 52(ptr) Variable UniformConstant
+ 56: TypeSampledImage 51
+ 64: TypeImage 6(float) 2D depth array sampled format:Unknown
+ 65: TypePointer UniformConstant 64
+ 66(g_tTex2df4a): 65(ptr) Variable UniformConstant
+ 69: TypeSampledImage 64
+ 71: 6(float) Constant 1050253722
+ 72: 29(fvec3) ConstantComposite 25 26 71
+ 80: TypeImage 36(int) 2D depth array sampled format:Unknown
+ 81: TypePointer UniformConstant 80
+ 82(g_tTex2di4a): 81(ptr) Variable UniformConstant
+ 85: TypeSampledImage 80
+ 94: TypeImage 50(int) 2D depth array sampled format:Unknown
+ 95: TypePointer UniformConstant 94
+ 96(g_tTex2du4a): 95(ptr) Variable UniformConstant
+ 99: TypeSampledImage 94
+ 108: TypeImage 6(float) Cube depth array sampled format:Unknown
+ 109: TypePointer UniformConstant 108
+110(g_tTexcdf4a): 109(ptr) Variable UniformConstant
+ 113: TypeSampledImage 108
+ 115: 6(float) Constant 1053609165
+ 116: 7(fvec4) ConstantComposite 25 26 71 115
+ 124: TypeImage 36(int) Cube depth array sampled format:Unknown
+ 125: TypePointer UniformConstant 124
+126(g_tTexcdi4a): 125(ptr) Variable UniformConstant
+ 129: TypeSampledImage 124
+ 138: TypeImage 50(int) Cube depth array sampled format:Unknown
+ 139: TypePointer UniformConstant 138
+140(g_tTexcdu4a): 139(ptr) Variable UniformConstant
+ 143: TypeSampledImage 138
+ 151: TypePointer Function 8(PS_OUTPUT)
+ 153: 36(int) Constant 0
+ 154: 6(float) Constant 1065353216
+ 155: 7(fvec4) ConstantComposite 154 154 154 154
+ 156: TypePointer Function 7(fvec4)
+ 158: 36(int) Constant 1
+ 165: TypePointer Output 7(fvec4)
+166(@entryPointOutput.Color): 165(ptr) Variable Output
+ 169: TypePointer Output 6(float)
+170(@entryPointOutput.Depth): 169(ptr) Variable Output
+ 173: TypeImage 6(float) 1D sampled format:Unknown
+ 174: TypePointer UniformConstant 173
+ 175(g_tTex1df4): 174(ptr) Variable UniformConstant
+ 176: TypeImage 36(int) 1D sampled format:Unknown
+ 177: TypePointer UniformConstant 176
+ 178(g_tTex1di4): 177(ptr) Variable UniformConstant
+ 179: TypeImage 50(int) 1D sampled format:Unknown
+ 180: TypePointer UniformConstant 179
+ 181(g_tTex1du4): 180(ptr) Variable UniformConstant
+ 182: TypeImage 6(float) 2D sampled format:Unknown
183: TypePointer UniformConstant 182
- 184(g_tTex1df4): 183(ptr) Variable UniformConstant
- 185: TypeImage 37(int) 1D sampled format:Unknown
+ 184(g_tTex2df4): 183(ptr) Variable UniformConstant
+ 185: TypeImage 36(int) 2D sampled format:Unknown
186: TypePointer UniformConstant 185
- 187(g_tTex1di4): 186(ptr) Variable UniformConstant
- 188: TypeImage 52(int) 1D sampled format:Unknown
+ 187(g_tTex2di4): 186(ptr) Variable UniformConstant
+ 188: TypeImage 50(int) 2D sampled format:Unknown
189: TypePointer UniformConstant 188
- 190(g_tTex1du4): 189(ptr) Variable UniformConstant
- 191: TypeImage 6(float) 2D sampled format:Unknown
+ 190(g_tTex2du4): 189(ptr) Variable UniformConstant
+ 191: TypeImage 6(float) 3D sampled format:Unknown
192: TypePointer UniformConstant 191
- 193(g_tTex2df4): 192(ptr) Variable UniformConstant
- 194: TypeImage 37(int) 2D sampled format:Unknown
+ 193(g_tTex3df4): 192(ptr) Variable UniformConstant
+ 194: TypeImage 36(int) 3D sampled format:Unknown
195: TypePointer UniformConstant 194
- 196(g_tTex2di4): 195(ptr) Variable UniformConstant
- 197: TypeImage 52(int) 2D sampled format:Unknown
+ 196(g_tTex3di4): 195(ptr) Variable UniformConstant
+ 197: TypeImage 50(int) 3D sampled format:Unknown
198: TypePointer UniformConstant 197
- 199(g_tTex2du4): 198(ptr) Variable UniformConstant
- 200: TypeImage 6(float) 3D sampled format:Unknown
+ 199(g_tTex3du4): 198(ptr) Variable UniformConstant
+ 200: TypeImage 6(float) Cube sampled format:Unknown
201: TypePointer UniformConstant 200
- 202(g_tTex3df4): 201(ptr) Variable UniformConstant
- 203: TypeImage 37(int) 3D sampled format:Unknown
+ 202(g_tTexcdf4): 201(ptr) Variable UniformConstant
+ 203: TypeImage 36(int) Cube sampled format:Unknown
204: TypePointer UniformConstant 203
- 205(g_tTex3di4): 204(ptr) Variable UniformConstant
- 206: TypeImage 52(int) 3D sampled format:Unknown
+ 205(g_tTexcdi4): 204(ptr) Variable UniformConstant
+ 206: TypeImage 50(int) Cube sampled format:Unknown
207: TypePointer UniformConstant 206
- 208(g_tTex3du4): 207(ptr) Variable UniformConstant
- 209: TypeImage 6(float) Cube sampled format:Unknown
- 210: TypePointer UniformConstant 209
- 211(g_tTexcdf4): 210(ptr) Variable UniformConstant
- 212: TypeImage 37(int) Cube sampled format:Unknown
- 213: TypePointer UniformConstant 212
- 214(g_tTexcdi4): 213(ptr) Variable UniformConstant
- 215: TypeImage 52(int) Cube sampled format:Unknown
- 216: TypePointer UniformConstant 215
- 217(g_tTexcdu4): 216(ptr) Variable UniformConstant
+ 208(g_tTexcdu4): 207(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
-172(flattenTemp): 160(ptr) Variable Function
- 173:8(PS_OUTPUT) FunctionCall 10(@main()
- Store 172(flattenTemp) 173
- 176: 165(ptr) AccessChain 172(flattenTemp) 162
- 177: 7(fvec4) Load 176
- Store 175(Color) 177
- 180: 12(ptr) AccessChain 172(flattenTemp) 167
- 181: 6(float) Load 180
- Store 179(Depth) 181
+163(flattenTemp): 151(ptr) Variable Function
+ 164:8(PS_OUTPUT) FunctionCall 10(@main()
+ Store 163(flattenTemp) 164
+ 167: 156(ptr) AccessChain 163(flattenTemp) 153
+ 168: 7(fvec4) Load 167
+ Store 166(@entryPointOutput.Color) 168
+ 171: 12(ptr) AccessChain 163(flattenTemp) 158
+ 172: 6(float) Load 171
+ Store 170(@entryPointOutput.Depth) 172
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(r10): 12(ptr) Variable Function
- 36(r12): 12(ptr) Variable Function
- 51(r14): 12(ptr) Variable Function
- 66(r30): 12(ptr) Variable Function
- 83(r32): 12(ptr) Variable Function
- 98(r34): 12(ptr) Variable Function
- 113(r60): 12(ptr) Variable Function
- 130(r62): 12(ptr) Variable Function
- 145(r64): 12(ptr) Variable Function
- 161(psout): 160(ptr) Variable Function
+ 35(r12): 12(ptr) Variable Function
+ 49(r14): 12(ptr) Variable Function
+ 63(r30): 12(ptr) Variable Function
+ 79(r32): 12(ptr) Variable Function
+ 93(r34): 12(ptr) Variable Function
+ 107(r60): 12(ptr) Variable Function
+ 123(r62): 12(ptr) Variable Function
+ 137(r64): 12(ptr) Variable Function
+ 152(psout): 151(ptr) Variable Function
17: 14 Load 16(g_tTex1df4a)
21: 18 Load 20(g_sSamp)
- 24: 23 SampledImage 17 21
- 31: 6(float) CompositeExtract 28 0
- 32: 6(float) CompositeExtract 28 1
- 33: 30(fvec3) CompositeConstruct 31 32 29
- 34: 6(float) CompositeExtract 33 2
- 35: 6(float) ImageSampleDrefImplicitLod 24 33 34
- Store 13(r10) 35
- 41: 38 Load 40(g_tTex1di4a)
- 42: 18 Load 20(g_sSamp)
- 45: 44 SampledImage 41 42
- 46: 6(float) CompositeExtract 28 0
- 47: 6(float) CompositeExtract 28 1
- 48: 30(fvec3) CompositeConstruct 46 47 29
- 49: 6(float) CompositeExtract 48 2
- 50: 6(float) ImageSampleDrefImplicitLod 45 48 49
- Store 36(r12) 50
- 56: 53 Load 55(g_tTex1du4a)
- 57: 18 Load 20(g_sSamp)
- 60: 59 SampledImage 56 57
- 61: 6(float) CompositeExtract 28 0
- 62: 6(float) CompositeExtract 28 1
- 63: 30(fvec3) CompositeConstruct 61 62 29
- 64: 6(float) CompositeExtract 63 2
- 65: 6(float) ImageSampleDrefImplicitLod 60 63 64
- Store 51(r14) 65
- 70: 67 Load 69(g_tTex2df4a)
- 71: 18 Load 20(g_sSamp)
- 74: 73 SampledImage 70 71
- 77: 6(float) CompositeExtract 76 0
- 78: 6(float) CompositeExtract 76 1
- 79: 6(float) CompositeExtract 76 2
- 80: 7(fvec4) CompositeConstruct 77 78 79 29
- 81: 6(float) CompositeExtract 80 3
- 82: 6(float) ImageSampleDrefImplicitLod 74 80 81
- Store 66(r30) 82
- 87: 84 Load 86(g_tTex2di4a)
- 88: 18 Load 20(g_sSamp)
- 91: 90 SampledImage 87 88
- 92: 6(float) CompositeExtract 76 0
- 93: 6(float) CompositeExtract 76 1
- 94: 6(float) CompositeExtract 76 2
- 95: 7(fvec4) CompositeConstruct 92 93 94 29
- 96: 6(float) CompositeExtract 95 3
- 97: 6(float) ImageSampleDrefImplicitLod 91 95 96
- Store 83(r32) 97
- 102: 99 Load 101(g_tTex2du4a)
- 103: 18 Load 20(g_sSamp)
- 106: 105 SampledImage 102 103
- 107: 6(float) CompositeExtract 76 0
- 108: 6(float) CompositeExtract 76 1
- 109: 6(float) CompositeExtract 76 2
- 110: 7(fvec4) CompositeConstruct 107 108 109 29
- 111: 6(float) CompositeExtract 110 3
- 112: 6(float) ImageSampleDrefImplicitLod 106 110 111
- Store 98(r34) 112
- 117: 114 Load 116(g_tTexcdf4a)
- 118: 18 Load 20(g_sSamp)
- 121: 120 SampledImage 117 118
- 124: 6(float) CompositeExtract 123 0
- 125: 6(float) CompositeExtract 123 1
- 126: 6(float) CompositeExtract 123 2
- 127: 6(float) CompositeExtract 123 3
- 128: 7(fvec4) CompositeConstruct 124 125 126 127
- 129: 6(float) ImageSampleDrefImplicitLod 121 128 29
- Store 113(r60) 129
- 134: 131 Load 133(g_tTexcdi4a)
- 135: 18 Load 20(g_sSamp)
- 138: 137 SampledImage 134 135
- 139: 6(float) CompositeExtract 123 0
- 140: 6(float) CompositeExtract 123 1
- 141: 6(float) CompositeExtract 123 2
- 142: 6(float) CompositeExtract 123 3
- 143: 7(fvec4) CompositeConstruct 139 140 141 142
- 144: 6(float) ImageSampleDrefImplicitLod 138 143 29
- Store 130(r62) 144
- 149: 146 Load 148(g_tTexcdu4a)
- 150: 18 Load 20(g_sSamp)
- 153: 152 SampledImage 149 150
- 154: 6(float) CompositeExtract 123 0
- 155: 6(float) CompositeExtract 123 1
- 156: 6(float) CompositeExtract 123 2
- 157: 6(float) CompositeExtract 123 3
- 158: 7(fvec4) CompositeConstruct 154 155 156 157
- 159: 6(float) ImageSampleDrefImplicitLod 153 158 29
- Store 145(r64) 159
- 166: 165(ptr) AccessChain 161(psout) 162
- Store 166 164
- 168: 12(ptr) AccessChain 161(psout) 167
- Store 168 163
- 169:8(PS_OUTPUT) Load 161(psout)
- ReturnValue 169
+ 23: 22 SampledImage 17 21
+ 30: 6(float) CompositeExtract 27 0
+ 31: 6(float) CompositeExtract 27 1
+ 32: 29(fvec3) CompositeConstruct 30 31 28
+ 33: 6(float) CompositeExtract 32 2
+ 34: 6(float) ImageSampleDrefImplicitLod 23 32 33
+ Store 13(r10) 34
+ 40: 37 Load 39(g_tTex1di4a)
+ 41: 18 Load 20(g_sSamp)
+ 43: 42 SampledImage 40 41
+ 44: 6(float) CompositeExtract 27 0
+ 45: 6(float) CompositeExtract 27 1
+ 46: 29(fvec3) CompositeConstruct 44 45 28
+ 47: 6(float) CompositeExtract 46 2
+ 48: 6(float) ImageSampleDrefImplicitLod 43 46 47
+ Store 35(r12) 48
+ 54: 51 Load 53(g_tTex1du4a)
+ 55: 18 Load 20(g_sSamp)
+ 57: 56 SampledImage 54 55
+ 58: 6(float) CompositeExtract 27 0
+ 59: 6(float) CompositeExtract 27 1
+ 60: 29(fvec3) CompositeConstruct 58 59 28
+ 61: 6(float) CompositeExtract 60 2
+ 62: 6(float) ImageSampleDrefImplicitLod 57 60 61
+ Store 49(r14) 62
+ 67: 64 Load 66(g_tTex2df4a)
+ 68: 18 Load 20(g_sSamp)
+ 70: 69 SampledImage 67 68
+ 73: 6(float) CompositeExtract 72 0
+ 74: 6(float) CompositeExtract 72 1
+ 75: 6(float) CompositeExtract 72 2
+ 76: 7(fvec4) CompositeConstruct 73 74 75 28
+ 77: 6(float) CompositeExtract 76 3
+ 78: 6(float) ImageSampleDrefImplicitLod 70 76 77
+ Store 63(r30) 78
+ 83: 80 Load 82(g_tTex2di4a)
+ 84: 18 Load 20(g_sSamp)
+ 86: 85 SampledImage 83 84
+ 87: 6(float) CompositeExtract 72 0
+ 88: 6(float) CompositeExtract 72 1
+ 89: 6(float) CompositeExtract 72 2
+ 90: 7(fvec4) CompositeConstruct 87 88 89 28
+ 91: 6(float) CompositeExtract 90 3
+ 92: 6(float) ImageSampleDrefImplicitLod 86 90 91
+ Store 79(r32) 92
+ 97: 94 Load 96(g_tTex2du4a)
+ 98: 18 Load 20(g_sSamp)
+ 100: 99 SampledImage 97 98
+ 101: 6(float) CompositeExtract 72 0
+ 102: 6(float) CompositeExtract 72 1
+ 103: 6(float) CompositeExtract 72 2
+ 104: 7(fvec4) CompositeConstruct 101 102 103 28
+ 105: 6(float) CompositeExtract 104 3
+ 106: 6(float) ImageSampleDrefImplicitLod 100 104 105
+ Store 93(r34) 106
+ 111: 108 Load 110(g_tTexcdf4a)
+ 112: 18 Load 20(g_sSamp)
+ 114: 113 SampledImage 111 112
+ 117: 6(float) CompositeExtract 116 0
+ 118: 6(float) CompositeExtract 116 1
+ 119: 6(float) CompositeExtract 116 2
+ 120: 6(float) CompositeExtract 116 3
+ 121: 7(fvec4) CompositeConstruct 117 118 119 120
+ 122: 6(float) ImageSampleDrefImplicitLod 114 121 28
+ Store 107(r60) 122
+ 127: 124 Load 126(g_tTexcdi4a)
+ 128: 18 Load 20(g_sSamp)
+ 130: 129 SampledImage 127 128
+ 131: 6(float) CompositeExtract 116 0
+ 132: 6(float) CompositeExtract 116 1
+ 133: 6(float) CompositeExtract 116 2
+ 134: 6(float) CompositeExtract 116 3
+ 135: 7(fvec4) CompositeConstruct 131 132 133 134
+ 136: 6(float) ImageSampleDrefImplicitLod 130 135 28
+ Store 123(r62) 136
+ 141: 138 Load 140(g_tTexcdu4a)
+ 142: 18 Load 20(g_sSamp)
+ 144: 143 SampledImage 141 142
+ 145: 6(float) CompositeExtract 116 0
+ 146: 6(float) CompositeExtract 116 1
+ 147: 6(float) CompositeExtract 116 2
+ 148: 6(float) CompositeExtract 116 3
+ 149: 7(fvec4) CompositeConstruct 145 146 147 148
+ 150: 6(float) ImageSampleDrefImplicitLod 144 149 28
+ Store 137(r64) 150
+ 157: 156(ptr) AccessChain 152(psout) 153
+ Store 157 155
+ 159: 12(ptr) AccessChain 152(psout) 158
+ Store 159 154
+ 160:8(PS_OUTPUT) Load 152(psout)
+ ReturnValue 160
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
index df1004e11a2..729dc36f751 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplecmp.basic.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
0:42 'r00' ( temp float)
0:42 texture ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DShadow)
-0:42 'g_tTex1df4' (layout( binding=0) uniform texture1D)
+0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec2 ( temp 2-component vector of float)
0:42 Constant:
@@ -22,7 +22,7 @@ gl_FragCoord origin is upper left
0:43 'r02' ( temp float)
0:43 texture ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DShadow)
-0:43 'g_tTex1di4' ( uniform itexture1D)
+0:43 'g_tTex1di4' ( uniform itexture1DShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec2 ( temp 2-component vector of float)
0:43 Constant:
@@ -34,7 +34,7 @@ gl_FragCoord origin is upper left
0:44 'r04' ( temp float)
0:44 texture ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DShadow)
-0:44 'g_tTex1du4' ( uniform utexture1D)
+0:44 'g_tTex1du4' ( uniform utexture1DShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec2 ( temp 2-component vector of float)
0:44 Constant:
@@ -46,7 +46,7 @@ gl_FragCoord origin is upper left
0:47 'r20' ( temp float)
0:47 texture ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DShadow)
-0:47 'g_tTex2df4' ( uniform texture2D)
+0:47 'g_tTex2df4' ( uniform texture2DShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -59,7 +59,7 @@ gl_FragCoord origin is upper left
0:48 'r22' ( temp float)
0:48 texture ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DShadow)
-0:48 'g_tTex2di4' ( uniform itexture2D)
+0:48 'g_tTex2di4' ( uniform itexture2DShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -72,7 +72,7 @@ gl_FragCoord origin is upper left
0:49 'r24' ( temp float)
0:49 texture ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DShadow)
-0:49 'g_tTex2du4' ( uniform utexture2D)
+0:49 'g_tTex2du4' ( uniform utexture2DShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -85,7 +85,7 @@ gl_FragCoord origin is upper left
0:53 'r50' ( temp float)
0:53 texture ( temp float)
0:53 Construct combined texture-sampler ( temp samplerCubeShadow)
-0:53 'g_tTexcdf4' ( uniform textureCube)
+0:53 'g_tTexcdf4' ( uniform textureCubeShadow)
0:53 'g_sSamp' (layout( binding=0) uniform sampler)
0:53 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -99,7 +99,7 @@ gl_FragCoord origin is upper left
0:54 'r52' ( temp float)
0:54 texture ( temp float)
0:54 Construct combined texture-sampler ( temp isamplerCubeShadow)
-0:54 'g_tTexcdi4' ( uniform itextureCube)
+0:54 'g_tTexcdi4' ( uniform itextureCubeShadow)
0:54 'g_sSamp' (layout( binding=0) uniform sampler)
0:54 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -113,7 +113,7 @@ gl_FragCoord origin is upper left
0:55 'r54' ( temp float)
0:55 texture ( temp float)
0:55 Construct combined texture-sampler ( temp usamplerCubeShadow)
-0:55 'g_tTexcdu4' ( uniform utextureCube)
+0:55 'g_tTexcdu4' ( uniform utextureCubeShadow)
0:55 'g_sSamp' (layout( binding=0) uniform sampler)
0:55 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -149,31 +149,31 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 1 (const int)
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
-0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:? 'g_tTex1di4' ( uniform itexture1D)
-0:? 'g_tTex1du4' ( uniform utexture1D)
-0:? 'g_tTex2df4' ( uniform texture2D)
-0:? 'g_tTex2di4' ( uniform itexture2D)
-0:? 'g_tTex2du4' ( uniform utexture2D)
+0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
+0:? 'g_tTex1di4' ( uniform itexture1DShadow)
+0:? 'g_tTex1du4' ( uniform utexture1DShadow)
+0:? 'g_tTex2df4' ( uniform texture2DShadow)
+0:? 'g_tTex2di4' ( uniform itexture2DShadow)
+0:? 'g_tTex2du4' ( uniform utexture2DShadow)
0:? 'g_tTex3df4' ( uniform texture3D)
0:? 'g_tTex3di4' ( uniform itexture3D)
0:? 'g_tTex3du4' ( uniform utexture3D)
-0:? 'g_tTexcdf4' ( uniform textureCube)
-0:? 'g_tTexcdi4' ( uniform itextureCube)
-0:? 'g_tTexcdu4' ( uniform utextureCube)
+0:? 'g_tTexcdf4' ( uniform textureCubeShadow)
+0:? 'g_tTexcdi4' ( uniform itextureCubeShadow)
+0:? 'g_tTexcdu4' ( uniform utextureCubeShadow)
0:? 'g_tTex1df4a' ( uniform texture1DArray)
0:? 'g_tTex1di4a' ( uniform itexture1DArray)
0:? 'g_tTex1du4a' ( uniform utexture1DArray)
@@ -183,14 +183,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -201,7 +201,7 @@ gl_FragCoord origin is upper left
0:42 'r00' ( temp float)
0:42 texture ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DShadow)
-0:42 'g_tTex1df4' (layout( binding=0) uniform texture1D)
+0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec2 ( temp 2-component vector of float)
0:42 Constant:
@@ -213,7 +213,7 @@ gl_FragCoord origin is upper left
0:43 'r02' ( temp float)
0:43 texture ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DShadow)
-0:43 'g_tTex1di4' ( uniform itexture1D)
+0:43 'g_tTex1di4' ( uniform itexture1DShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec2 ( temp 2-component vector of float)
0:43 Constant:
@@ -225,7 +225,7 @@ gl_FragCoord origin is upper left
0:44 'r04' ( temp float)
0:44 texture ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DShadow)
-0:44 'g_tTex1du4' ( uniform utexture1D)
+0:44 'g_tTex1du4' ( uniform utexture1DShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec2 ( temp 2-component vector of float)
0:44 Constant:
@@ -237,7 +237,7 @@ gl_FragCoord origin is upper left
0:47 'r20' ( temp float)
0:47 texture ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DShadow)
-0:47 'g_tTex2df4' ( uniform texture2D)
+0:47 'g_tTex2df4' ( uniform texture2DShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -250,7 +250,7 @@ gl_FragCoord origin is upper left
0:48 'r22' ( temp float)
0:48 texture ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DShadow)
-0:48 'g_tTex2di4' ( uniform itexture2D)
+0:48 'g_tTex2di4' ( uniform itexture2DShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -263,7 +263,7 @@ gl_FragCoord origin is upper left
0:49 'r24' ( temp float)
0:49 texture ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DShadow)
-0:49 'g_tTex2du4' ( uniform utexture2D)
+0:49 'g_tTex2du4' ( uniform utexture2DShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -276,7 +276,7 @@ gl_FragCoord origin is upper left
0:53 'r50' ( temp float)
0:53 texture ( temp float)
0:53 Construct combined texture-sampler ( temp samplerCubeShadow)
-0:53 'g_tTexcdf4' ( uniform textureCube)
+0:53 'g_tTexcdf4' ( uniform textureCubeShadow)
0:53 'g_sSamp' (layout( binding=0) uniform sampler)
0:53 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -290,7 +290,7 @@ gl_FragCoord origin is upper left
0:54 'r52' ( temp float)
0:54 texture ( temp float)
0:54 Construct combined texture-sampler ( temp isamplerCubeShadow)
-0:54 'g_tTexcdi4' ( uniform itextureCube)
+0:54 'g_tTexcdi4' ( uniform itextureCubeShadow)
0:54 'g_sSamp' (layout( binding=0) uniform sampler)
0:54 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -304,7 +304,7 @@ gl_FragCoord origin is upper left
0:55 'r54' ( temp float)
0:55 texture ( temp float)
0:55 Construct combined texture-sampler ( temp usamplerCubeShadow)
-0:55 'g_tTexcdu4' ( uniform utextureCube)
+0:55 'g_tTexcdu4' ( uniform utextureCubeShadow)
0:55 'g_sSamp' (layout( binding=0) uniform sampler)
0:55 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -340,31 +340,31 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 1 (const int)
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
-0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:? 'g_tTex1di4' ( uniform itexture1D)
-0:? 'g_tTex1du4' ( uniform utexture1D)
-0:? 'g_tTex2df4' ( uniform texture2D)
-0:? 'g_tTex2di4' ( uniform itexture2D)
-0:? 'g_tTex2du4' ( uniform utexture2D)
+0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
+0:? 'g_tTex1di4' ( uniform itexture1DShadow)
+0:? 'g_tTex1du4' ( uniform utexture1DShadow)
+0:? 'g_tTex2df4' ( uniform texture2DShadow)
+0:? 'g_tTex2di4' ( uniform itexture2DShadow)
+0:? 'g_tTex2du4' ( uniform utexture2DShadow)
0:? 'g_tTex3df4' ( uniform texture3D)
0:? 'g_tTex3di4' ( uniform itexture3D)
0:? 'g_tTex3du4' ( uniform utexture3D)
-0:? 'g_tTexcdf4' ( uniform textureCube)
-0:? 'g_tTexcdi4' ( uniform itextureCube)
-0:? 'g_tTexcdu4' ( uniform utextureCube)
+0:? 'g_tTexcdf4' ( uniform textureCubeShadow)
+0:? 'g_tTexcdi4' ( uniform itextureCubeShadow)
+0:? 'g_tTexcdu4' ( uniform utextureCubeShadow)
0:? 'g_tTex1df4a' ( uniform texture1DArray)
0:? 'g_tTex1di4a' ( uniform itexture1DArray)
0:? 'g_tTex1du4a' ( uniform utexture1DArray)
@@ -374,20 +374,21 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 207
+// Generated by (magic number): 80002
+// Id's are bound by 198
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 164 168
+ EntryPoint Fragment 4 "main" 155 159
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -396,64 +397,64 @@ gl_FragCoord origin is upper left
Name 13 "r00"
Name 16 "g_tTex1df4"
Name 20 "g_sSamp"
- Name 31 "r02"
- Name 35 "g_tTex1di4"
- Name 44 "r04"
- Name 48 "g_tTex1du4"
- Name 57 "r20"
- Name 60 "g_tTex2df4"
- Name 74 "r22"
- Name 77 "g_tTex2di4"
- Name 88 "r24"
- Name 91 "g_tTex2du4"
- Name 102 "r50"
- Name 105 "g_tTexcdf4"
- Name 119 "r52"
- Name 122 "g_tTexcdi4"
- Name 134 "r54"
- Name 137 "g_tTexcdu4"
- Name 150 "psout"
- Name 161 "flattenTemp"
- Name 164 "Color"
- Name 168 "Depth"
- Name 173 "g_tTex3df4"
- Name 176 "g_tTex3di4"
- Name 179 "g_tTex3du4"
- Name 182 "g_tTex1df4a"
- Name 185 "g_tTex1di4a"
- Name 188 "g_tTex1du4a"
- Name 191 "g_tTex2df4a"
- Name 194 "g_tTex2di4a"
- Name 197 "g_tTex2du4a"
- Name 200 "g_tTexcdf4a"
- Name 203 "g_tTexcdi4a"
- Name 206 "g_tTexcdu4a"
+ Name 30 "r02"
+ Name 34 "g_tTex1di4"
+ Name 42 "r04"
+ Name 46 "g_tTex1du4"
+ Name 54 "r20"
+ Name 57 "g_tTex2df4"
+ Name 70 "r22"
+ Name 73 "g_tTex2di4"
+ Name 83 "r24"
+ Name 86 "g_tTex2du4"
+ Name 96 "r50"
+ Name 99 "g_tTexcdf4"
+ Name 112 "r52"
+ Name 115 "g_tTexcdi4"
+ Name 126 "r54"
+ Name 129 "g_tTexcdu4"
+ Name 141 "psout"
+ Name 152 "flattenTemp"
+ Name 155 "@entryPointOutput.Color"
+ Name 159 "@entryPointOutput.Depth"
+ Name 164 "g_tTex3df4"
+ Name 167 "g_tTex3di4"
+ Name 170 "g_tTex3du4"
+ Name 173 "g_tTex1df4a"
+ Name 176 "g_tTex1di4a"
+ Name 179 "g_tTex1du4a"
+ Name 182 "g_tTex2df4a"
+ Name 185 "g_tTex2di4a"
+ Name 188 "g_tTex2du4a"
+ Name 191 "g_tTexcdf4a"
+ Name 194 "g_tTexcdi4a"
+ Name 197 "g_tTexcdu4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
- Decorate 35(g_tTex1di4) DescriptorSet 0
- Decorate 48(g_tTex1du4) DescriptorSet 0
- Decorate 60(g_tTex2df4) DescriptorSet 0
- Decorate 77(g_tTex2di4) DescriptorSet 0
- Decorate 91(g_tTex2du4) DescriptorSet 0
- Decorate 105(g_tTexcdf4) DescriptorSet 0
- Decorate 122(g_tTexcdi4) DescriptorSet 0
- Decorate 137(g_tTexcdu4) DescriptorSet 0
- Decorate 164(Color) Location 0
- Decorate 168(Depth) BuiltIn FragDepth
- Decorate 173(g_tTex3df4) DescriptorSet 0
- Decorate 176(g_tTex3di4) DescriptorSet 0
- Decorate 179(g_tTex3du4) DescriptorSet 0
- Decorate 182(g_tTex1df4a) DescriptorSet 0
- Decorate 185(g_tTex1di4a) DescriptorSet 0
- Decorate 188(g_tTex1du4a) DescriptorSet 0
- Decorate 191(g_tTex2df4a) DescriptorSet 0
- Decorate 194(g_tTex2di4a) DescriptorSet 0
- Decorate 197(g_tTex2du4a) DescriptorSet 0
- Decorate 200(g_tTexcdf4a) DescriptorSet 0
- Decorate 203(g_tTexcdi4a) DescriptorSet 0
- Decorate 206(g_tTexcdu4a) DescriptorSet 0
+ Decorate 34(g_tTex1di4) DescriptorSet 0
+ Decorate 46(g_tTex1du4) DescriptorSet 0
+ Decorate 57(g_tTex2df4) DescriptorSet 0
+ Decorate 73(g_tTex2di4) DescriptorSet 0
+ Decorate 86(g_tTex2du4) DescriptorSet 0
+ Decorate 99(g_tTexcdf4) DescriptorSet 0
+ Decorate 115(g_tTexcdi4) DescriptorSet 0
+ Decorate 129(g_tTexcdu4) DescriptorSet 0
+ Decorate 155(@entryPointOutput.Color) Location 0
+ Decorate 159(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 164(g_tTex3df4) DescriptorSet 0
+ Decorate 167(g_tTex3di4) DescriptorSet 0
+ Decorate 170(g_tTex3du4) DescriptorSet 0
+ Decorate 173(g_tTex1df4a) DescriptorSet 0
+ Decorate 176(g_tTex1di4a) DescriptorSet 0
+ Decorate 179(g_tTex1du4a) DescriptorSet 0
+ Decorate 182(g_tTex2df4a) DescriptorSet 0
+ Decorate 185(g_tTex2di4a) DescriptorSet 0
+ Decorate 188(g_tTex2du4a) DescriptorSet 0
+ Decorate 191(g_tTexcdf4a) DescriptorSet 0
+ Decorate 194(g_tTexcdi4a) DescriptorSet 0
+ Decorate 197(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -461,217 +462,208 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 6(float)
- 14: TypeImage 6(float) 1D sampled format:Unknown
+ 14: TypeImage 6(float) 1D depth sampled format:Unknown
15: TypePointer UniformConstant 14
16(g_tTex1df4): 15(ptr) Variable UniformConstant
18: TypeSampler
19: TypePointer UniformConstant 18
20(g_sSamp): 19(ptr) Variable UniformConstant
- 22: TypeImage 6(float) 1D depth sampled format:Unknown
- 23: TypeSampledImage 22
- 25: 6(float) Constant 1036831949
- 26: 6(float) Constant 1061158912
- 27: TypeVector 6(float) 2
- 32: TypeInt 32 1
- 33: TypeImage 32(int) 1D sampled format:Unknown
- 34: TypePointer UniformConstant 33
- 35(g_tTex1di4): 34(ptr) Variable UniformConstant
- 38: TypeImage 32(int) 1D depth sampled format:Unknown
- 39: TypeSampledImage 38
- 45: TypeInt 32 0
- 46: TypeImage 45(int) 1D sampled format:Unknown
- 47: TypePointer UniformConstant 46
- 48(g_tTex1du4): 47(ptr) Variable UniformConstant
- 51: TypeImage 45(int) 1D depth sampled format:Unknown
- 52: TypeSampledImage 51
- 58: TypeImage 6(float) 2D sampled format:Unknown
- 59: TypePointer UniformConstant 58
- 60(g_tTex2df4): 59(ptr) Variable UniformConstant
- 63: TypeImage 6(float) 2D depth sampled format:Unknown
- 64: TypeSampledImage 63
- 66: 6(float) Constant 1045220557
- 67: 27(fvec2) ConstantComposite 25 66
- 68: TypeVector 6(float) 3
- 75: TypeImage 32(int) 2D sampled format:Unknown
- 76: TypePointer UniformConstant 75
- 77(g_tTex2di4): 76(ptr) Variable UniformConstant
- 80: TypeImage 32(int) 2D depth sampled format:Unknown
- 81: TypeSampledImage 80
- 89: TypeImage 45(int) 2D sampled format:Unknown
- 90: TypePointer UniformConstant 89
- 91(g_tTex2du4): 90(ptr) Variable UniformConstant
- 94: TypeImage 45(int) 2D depth sampled format:Unknown
- 95: TypeSampledImage 94
- 103: TypeImage 6(float) Cube sampled format:Unknown
- 104: TypePointer UniformConstant 103
- 105(g_tTexcdf4): 104(ptr) Variable UniformConstant
- 108: TypeImage 6(float) Cube depth sampled format:Unknown
- 109: TypeSampledImage 108
- 111: 6(float) Constant 1050253722
- 112: 68(fvec3) ConstantComposite 25 66 111
- 120: TypeImage 32(int) Cube sampled format:Unknown
- 121: TypePointer UniformConstant 120
- 122(g_tTexcdi4): 121(ptr) Variable UniformConstant
- 125: TypeImage 32(int) Cube depth sampled format:Unknown
- 126: TypeSampledImage 125
- 135: TypeImage 45(int) Cube sampled format:Unknown
- 136: TypePointer UniformConstant 135
- 137(g_tTexcdu4): 136(ptr) Variable UniformConstant
- 140: TypeImage 45(int) Cube depth sampled format:Unknown
- 141: TypeSampledImage 140
- 149: TypePointer Function 8(PS_OUTPUT)
- 151: 32(int) Constant 0
- 152: 6(float) Constant 1065353216
- 153: 7(fvec4) ConstantComposite 152 152 152 152
- 154: TypePointer Function 7(fvec4)
- 156: 32(int) Constant 1
- 163: TypePointer Output 7(fvec4)
- 164(Color): 163(ptr) Variable Output
- 167: TypePointer Output 6(float)
- 168(Depth): 167(ptr) Variable Output
- 171: TypeImage 6(float) 3D sampled format:Unknown
+ 22: TypeSampledImage 14
+ 24: 6(float) Constant 1036831949
+ 25: 6(float) Constant 1061158912
+ 26: TypeVector 6(float) 2
+ 31: TypeInt 32 1
+ 32: TypeImage 31(int) 1D depth sampled format:Unknown
+ 33: TypePointer UniformConstant 32
+ 34(g_tTex1di4): 33(ptr) Variable UniformConstant
+ 37: TypeSampledImage 32
+ 43: TypeInt 32 0
+ 44: TypeImage 43(int) 1D depth sampled format:Unknown
+ 45: TypePointer UniformConstant 44
+ 46(g_tTex1du4): 45(ptr) Variable UniformConstant
+ 49: TypeSampledImage 44
+ 55: TypeImage 6(float) 2D depth sampled format:Unknown
+ 56: TypePointer UniformConstant 55
+ 57(g_tTex2df4): 56(ptr) Variable UniformConstant
+ 60: TypeSampledImage 55
+ 62: 6(float) Constant 1045220557
+ 63: 26(fvec2) ConstantComposite 24 62
+ 64: TypeVector 6(float) 3
+ 71: TypeImage 31(int) 2D depth sampled format:Unknown
+ 72: TypePointer UniformConstant 71
+ 73(g_tTex2di4): 72(ptr) Variable UniformConstant
+ 76: TypeSampledImage 71
+ 84: TypeImage 43(int) 2D depth sampled format:Unknown
+ 85: TypePointer UniformConstant 84
+ 86(g_tTex2du4): 85(ptr) Variable UniformConstant
+ 89: TypeSampledImage 84
+ 97: TypeImage 6(float) Cube depth sampled format:Unknown
+ 98: TypePointer UniformConstant 97
+ 99(g_tTexcdf4): 98(ptr) Variable UniformConstant
+ 102: TypeSampledImage 97
+ 104: 6(float) Constant 1050253722
+ 105: 64(fvec3) ConstantComposite 24 62 104
+ 113: TypeImage 31(int) Cube depth sampled format:Unknown
+ 114: TypePointer UniformConstant 113
+ 115(g_tTexcdi4): 114(ptr) Variable UniformConstant
+ 118: TypeSampledImage 113
+ 127: TypeImage 43(int) Cube depth sampled format:Unknown
+ 128: TypePointer UniformConstant 127
+ 129(g_tTexcdu4): 128(ptr) Variable UniformConstant
+ 132: TypeSampledImage 127
+ 140: TypePointer Function 8(PS_OUTPUT)
+ 142: 31(int) Constant 0
+ 143: 6(float) Constant 1065353216
+ 144: 7(fvec4) ConstantComposite 143 143 143 143
+ 145: TypePointer Function 7(fvec4)
+ 147: 31(int) Constant 1
+ 154: TypePointer Output 7(fvec4)
+155(@entryPointOutput.Color): 154(ptr) Variable Output
+ 158: TypePointer Output 6(float)
+159(@entryPointOutput.Depth): 158(ptr) Variable Output
+ 162: TypeImage 6(float) 3D sampled format:Unknown
+ 163: TypePointer UniformConstant 162
+ 164(g_tTex3df4): 163(ptr) Variable UniformConstant
+ 165: TypeImage 31(int) 3D sampled format:Unknown
+ 166: TypePointer UniformConstant 165
+ 167(g_tTex3di4): 166(ptr) Variable UniformConstant
+ 168: TypeImage 43(int) 3D sampled format:Unknown
+ 169: TypePointer UniformConstant 168
+ 170(g_tTex3du4): 169(ptr) Variable UniformConstant
+ 171: TypeImage 6(float) 1D array sampled format:Unknown
172: TypePointer UniformConstant 171
- 173(g_tTex3df4): 172(ptr) Variable UniformConstant
- 174: TypeImage 32(int) 3D sampled format:Unknown
+173(g_tTex1df4a): 172(ptr) Variable UniformConstant
+ 174: TypeImage 31(int) 1D array sampled format:Unknown
175: TypePointer UniformConstant 174
- 176(g_tTex3di4): 175(ptr) Variable UniformConstant
- 177: TypeImage 45(int) 3D sampled format:Unknown
+176(g_tTex1di4a): 175(ptr) Variable UniformConstant
+ 177: TypeImage 43(int) 1D array sampled format:Unknown
178: TypePointer UniformConstant 177
- 179(g_tTex3du4): 178(ptr) Variable UniformConstant
- 180: TypeImage 6(float) 1D array sampled format:Unknown
+179(g_tTex1du4a): 178(ptr) Variable UniformConstant
+ 180: TypeImage 6(float) 2D array sampled format:Unknown
181: TypePointer UniformConstant 180
-182(g_tTex1df4a): 181(ptr) Variable UniformConstant
- 183: TypeImage 32(int) 1D array sampled format:Unknown
+182(g_tTex2df4a): 181(ptr) Variable UniformConstant
+ 183: TypeImage 31(int) 2D array sampled format:Unknown
184: TypePointer UniformConstant 183
-185(g_tTex1di4a): 184(ptr) Variable UniformConstant
- 186: TypeImage 45(int) 1D array sampled format:Unknown
+185(g_tTex2di4a): 184(ptr) Variable UniformConstant
+ 186: TypeImage 43(int) 2D array sampled format:Unknown
187: TypePointer UniformConstant 186
-188(g_tTex1du4a): 187(ptr) Variable UniformConstant
- 189: TypeImage 6(float) 2D array sampled format:Unknown
+188(g_tTex2du4a): 187(ptr) Variable UniformConstant
+ 189: TypeImage 6(float) Cube array sampled format:Unknown
190: TypePointer UniformConstant 189
-191(g_tTex2df4a): 190(ptr) Variable UniformConstant
- 192: TypeImage 32(int) 2D array sampled format:Unknown
+191(g_tTexcdf4a): 190(ptr) Variable UniformConstant
+ 192: TypeImage 31(int) Cube array sampled format:Unknown
193: TypePointer UniformConstant 192
-194(g_tTex2di4a): 193(ptr) Variable UniformConstant
- 195: TypeImage 45(int) 2D array sampled format:Unknown
+194(g_tTexcdi4a): 193(ptr) Variable UniformConstant
+ 195: TypeImage 43(int) Cube array sampled format:Unknown
196: TypePointer UniformConstant 195
-197(g_tTex2du4a): 196(ptr) Variable UniformConstant
- 198: TypeImage 6(float) Cube array sampled format:Unknown
- 199: TypePointer UniformConstant 198
-200(g_tTexcdf4a): 199(ptr) Variable UniformConstant
- 201: TypeImage 32(int) Cube array sampled format:Unknown
- 202: TypePointer UniformConstant 201
-203(g_tTexcdi4a): 202(ptr) Variable UniformConstant
- 204: TypeImage 45(int) Cube array sampled format:Unknown
- 205: TypePointer UniformConstant 204
-206(g_tTexcdu4a): 205(ptr) Variable UniformConstant
+197(g_tTexcdu4a): 196(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
-161(flattenTemp): 149(ptr) Variable Function
- 162:8(PS_OUTPUT) FunctionCall 10(@main()
- Store 161(flattenTemp) 162
- 165: 154(ptr) AccessChain 161(flattenTemp) 151
- 166: 7(fvec4) Load 165
- Store 164(Color) 166
- 169: 12(ptr) AccessChain 161(flattenTemp) 156
- 170: 6(float) Load 169
- Store 168(Depth) 170
+152(flattenTemp): 140(ptr) Variable Function
+ 153:8(PS_OUTPUT) FunctionCall 10(@main()
+ Store 152(flattenTemp) 153
+ 156: 145(ptr) AccessChain 152(flattenTemp) 142
+ 157: 7(fvec4) Load 156
+ Store 155(@entryPointOutput.Color) 157
+ 160: 12(ptr) AccessChain 152(flattenTemp) 147
+ 161: 6(float) Load 160
+ Store 159(@entryPointOutput.Depth) 161
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(r00): 12(ptr) Variable Function
- 31(r02): 12(ptr) Variable Function
- 44(r04): 12(ptr) Variable Function
- 57(r20): 12(ptr) Variable Function
- 74(r22): 12(ptr) Variable Function
- 88(r24): 12(ptr) Variable Function
- 102(r50): 12(ptr) Variable Function
- 119(r52): 12(ptr) Variable Function
- 134(r54): 12(ptr) Variable Function
- 150(psout): 149(ptr) Variable Function
+ 30(r02): 12(ptr) Variable Function
+ 42(r04): 12(ptr) Variable Function
+ 54(r20): 12(ptr) Variable Function
+ 70(r22): 12(ptr) Variable Function
+ 83(r24): 12(ptr) Variable Function
+ 96(r50): 12(ptr) Variable Function
+ 112(r52): 12(ptr) Variable Function
+ 126(r54): 12(ptr) Variable Function
+ 141(psout): 140(ptr) Variable Function
17: 14 Load 16(g_tTex1df4)
21: 18 Load 20(g_sSamp)
- 24: 23 SampledImage 17 21
- 28: 27(fvec2) CompositeConstruct 25 26
- 29: 6(float) CompositeExtract 28 1
- 30: 6(float) ImageSampleDrefImplicitLod 24 28 29
- Store 13(r00) 30
- 36: 33 Load 35(g_tTex1di4)
- 37: 18 Load 20(g_sSamp)
- 40: 39 SampledImage 36 37
- 41: 27(fvec2) CompositeConstruct 25 26
- 42: 6(float) CompositeExtract 41 1
- 43: 6(float) ImageSampleDrefImplicitLod 40 41 42
- Store 31(r02) 43
- 49: 46 Load 48(g_tTex1du4)
- 50: 18 Load 20(g_sSamp)
- 53: 52 SampledImage 49 50
- 54: 27(fvec2) CompositeConstruct 25 26
- 55: 6(float) CompositeExtract 54 1
- 56: 6(float) ImageSampleDrefImplicitLod 53 54 55
- Store 44(r04) 56
- 61: 58 Load 60(g_tTex2df4)
- 62: 18 Load 20(g_sSamp)
- 65: 64 SampledImage 61 62
- 69: 6(float) CompositeExtract 67 0
- 70: 6(float) CompositeExtract 67 1
- 71: 68(fvec3) CompositeConstruct 69 70 26
- 72: 6(float) CompositeExtract 71 2
- 73: 6(float) ImageSampleDrefImplicitLod 65 71 72
- Store 57(r20) 73
- 78: 75 Load 77(g_tTex2di4)
- 79: 18 Load 20(g_sSamp)
- 82: 81 SampledImage 78 79
- 83: 6(float) CompositeExtract 67 0
- 84: 6(float) CompositeExtract 67 1
- 85: 68(fvec3) CompositeConstruct 83 84 26
- 86: 6(float) CompositeExtract 85 2
- 87: 6(float) ImageSampleDrefImplicitLod 82 85 86
- Store 74(r22) 87
- 92: 89 Load 91(g_tTex2du4)
- 93: 18 Load 20(g_sSamp)
- 96: 95 SampledImage 92 93
- 97: 6(float) CompositeExtract 67 0
- 98: 6(float) CompositeExtract 67 1
- 99: 68(fvec3) CompositeConstruct 97 98 26
- 100: 6(float) CompositeExtract 99 2
- 101: 6(float) ImageSampleDrefImplicitLod 96 99 100
- Store 88(r24) 101
- 106: 103 Load 105(g_tTexcdf4)
- 107: 18 Load 20(g_sSamp)
- 110: 109 SampledImage 106 107
- 113: 6(float) CompositeExtract 112 0
- 114: 6(float) CompositeExtract 112 1
- 115: 6(float) CompositeExtract 112 2
- 116: 7(fvec4) CompositeConstruct 113 114 115 26
- 117: 6(float) CompositeExtract 116 3
- 118: 6(float) ImageSampleDrefImplicitLod 110 116 117
- Store 102(r50) 118
- 123: 120 Load 122(g_tTexcdi4)
- 124: 18 Load 20(g_sSamp)
- 127: 126 SampledImage 123 124
- 128: 6(float) CompositeExtract 112 0
- 129: 6(float) CompositeExtract 112 1
- 130: 6(float) CompositeExtract 112 2
- 131: 7(fvec4) CompositeConstruct 128 129 130 26
- 132: 6(float) CompositeExtract 131 3
- 133: 6(float) ImageSampleDrefImplicitLod 127 131 132
- Store 119(r52) 133
- 138: 135 Load 137(g_tTexcdu4)
- 139: 18 Load 20(g_sSamp)
- 142: 141 SampledImage 138 139
- 143: 6(float) CompositeExtract 112 0
- 144: 6(float) CompositeExtract 112 1
- 145: 6(float) CompositeExtract 112 2
- 146: 7(fvec4) CompositeConstruct 143 144 145 26
- 147: 6(float) CompositeExtract 146 3
- 148: 6(float) ImageSampleDrefImplicitLod 142 146 147
- Store 134(r54) 148
- 155: 154(ptr) AccessChain 150(psout) 151
- Store 155 153
- 157: 12(ptr) AccessChain 150(psout) 156
- Store 157 152
- 158:8(PS_OUTPUT) Load 150(psout)
- ReturnValue 158
+ 23: 22 SampledImage 17 21
+ 27: 26(fvec2) CompositeConstruct 24 25
+ 28: 6(float) CompositeExtract 27 1
+ 29: 6(float) ImageSampleDrefImplicitLod 23 27 28
+ Store 13(r00) 29
+ 35: 32 Load 34(g_tTex1di4)
+ 36: 18 Load 20(g_sSamp)
+ 38: 37 SampledImage 35 36
+ 39: 26(fvec2) CompositeConstruct 24 25
+ 40: 6(float) CompositeExtract 39 1
+ 41: 6(float) ImageSampleDrefImplicitLod 38 39 40
+ Store 30(r02) 41
+ 47: 44 Load 46(g_tTex1du4)
+ 48: 18 Load 20(g_sSamp)
+ 50: 49 SampledImage 47 48
+ 51: 26(fvec2) CompositeConstruct 24 25
+ 52: 6(float) CompositeExtract 51 1
+ 53: 6(float) ImageSampleDrefImplicitLod 50 51 52
+ Store 42(r04) 53
+ 58: 55 Load 57(g_tTex2df4)
+ 59: 18 Load 20(g_sSamp)
+ 61: 60 SampledImage 58 59
+ 65: 6(float) CompositeExtract 63 0
+ 66: 6(float) CompositeExtract 63 1
+ 67: 64(fvec3) CompositeConstruct 65 66 25
+ 68: 6(float) CompositeExtract 67 2
+ 69: 6(float) ImageSampleDrefImplicitLod 61 67 68
+ Store 54(r20) 69
+ 74: 71 Load 73(g_tTex2di4)
+ 75: 18 Load 20(g_sSamp)
+ 77: 76 SampledImage 74 75
+ 78: 6(float) CompositeExtract 63 0
+ 79: 6(float) CompositeExtract 63 1
+ 80: 64(fvec3) CompositeConstruct 78 79 25
+ 81: 6(float) CompositeExtract 80 2
+ 82: 6(float) ImageSampleDrefImplicitLod 77 80 81
+ Store 70(r22) 82
+ 87: 84 Load 86(g_tTex2du4)
+ 88: 18 Load 20(g_sSamp)
+ 90: 89 SampledImage 87 88
+ 91: 6(float) CompositeExtract 63 0
+ 92: 6(float) CompositeExtract 63 1
+ 93: 64(fvec3) CompositeConstruct 91 92 25
+ 94: 6(float) CompositeExtract 93 2
+ 95: 6(float) ImageSampleDrefImplicitLod 90 93 94
+ Store 83(r24) 95
+ 100: 97 Load 99(g_tTexcdf4)
+ 101: 18 Load 20(g_sSamp)
+ 103: 102 SampledImage 100 101
+ 106: 6(float) CompositeExtract 105 0
+ 107: 6(float) CompositeExtract 105 1
+ 108: 6(float) CompositeExtract 105 2
+ 109: 7(fvec4) CompositeConstruct 106 107 108 25
+ 110: 6(float) CompositeExtract 109 3
+ 111: 6(float) ImageSampleDrefImplicitLod 103 109 110
+ Store 96(r50) 111
+ 116: 113 Load 115(g_tTexcdi4)
+ 117: 18 Load 20(g_sSamp)
+ 119: 118 SampledImage 116 117
+ 120: 6(float) CompositeExtract 105 0
+ 121: 6(float) CompositeExtract 105 1
+ 122: 6(float) CompositeExtract 105 2
+ 123: 7(fvec4) CompositeConstruct 120 121 122 25
+ 124: 6(float) CompositeExtract 123 3
+ 125: 6(float) ImageSampleDrefImplicitLod 119 123 124
+ Store 112(r52) 125
+ 130: 127 Load 129(g_tTexcdu4)
+ 131: 18 Load 20(g_sSamp)
+ 133: 132 SampledImage 130 131
+ 134: 6(float) CompositeExtract 105 0
+ 135: 6(float) CompositeExtract 105 1
+ 136: 6(float) CompositeExtract 105 2
+ 137: 7(fvec4) CompositeConstruct 134 135 136 25
+ 138: 6(float) CompositeExtract 137 3
+ 139: 6(float) ImageSampleDrefImplicitLod 133 137 138
+ Store 126(r54) 139
+ 146: 145(ptr) AccessChain 141(psout) 142
+ Store 146 144
+ 148: 12(ptr) AccessChain 141(psout) 147
+ Store 148 143
+ 149:8(PS_OUTPUT) Load 141(psout)
+ ReturnValue 149
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.dualmode.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.dualmode.frag.out
new file mode 100644
index 00000000000..4ac0d77aba6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.dualmode.frag.out
@@ -0,0 +1,157 @@
+hlsl.samplecmp.dualmode.frag
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main( ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:? Sequence
+0:10 texture ( temp float)
+0:10 Construct combined texture-sampler ( temp sampler1DShadow)
+0:10 'g_tTex' (layout( binding=3) uniform texture1DShadow)
+0:10 'g_sSampCmp' (layout( binding=1) uniform sampler)
+0:10 Construct vec2 ( temp 2-component vector of float)
+0:10 Constant:
+0:10 0.100000
+0:10 Constant:
+0:10 0.750000
+0:11 texture ( temp 4-component vector of float)
+0:11 Construct combined texture-sampler ( temp sampler1D)
+0:11 'g_tTex' (layout( binding=3) uniform texture1D)
+0:11 'g_sSamp' (layout( binding=0) uniform sampler)
+0:11 Constant:
+0:11 0.100000
+0:13 Branch: Return with expression
+0:13 Constant:
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_sSamp' (layout( binding=0) uniform sampler)
+0:? 'g_sSampCmp' (layout( binding=1) uniform sampler)
+0:? 'g_tTex' (layout( binding=3) uniform texture1DShadow)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'g_tTex' (layout( binding=3) uniform texture1D)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main( ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:? Sequence
+0:10 texture ( temp float)
+0:10 Construct combined texture-sampler ( temp sampler1DShadow)
+0:10 'g_tTex' (layout( binding=3) uniform texture1DShadow)
+0:10 'g_sSampCmp' (layout( binding=1) uniform sampler)
+0:10 Construct vec2 ( temp 2-component vector of float)
+0:10 Constant:
+0:10 0.100000
+0:10 Constant:
+0:10 0.750000
+0:11 texture ( temp 4-component vector of float)
+0:11 Construct combined texture-sampler ( temp sampler1D)
+0:11 'g_tTex' (layout( binding=3) uniform texture1D)
+0:11 'g_sSamp' (layout( binding=0) uniform sampler)
+0:11 Constant:
+0:11 0.100000
+0:13 Branch: Return with expression
+0:13 Constant:
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:13 0.000000
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_sSamp' (layout( binding=0) uniform sampler)
+0:? 'g_sSampCmp' (layout( binding=1) uniform sampler)
+0:? 'g_tTex' (layout( binding=3) uniform texture1DShadow)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'g_tTex' (layout( binding=3) uniform texture1D)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 43
+
+ Capability Shader
+ Capability Sampled1D
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 41
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 13 "g_tTex"
+ Name 17 "g_sSampCmp"
+ Name 29 "g_tTex"
+ Name 31 "g_sSamp"
+ Name 41 "@entryPointOutput"
+ Decorate 13(g_tTex) DescriptorSet 0
+ Decorate 13(g_tTex) Binding 3
+ Decorate 17(g_sSampCmp) DescriptorSet 0
+ Decorate 17(g_sSampCmp) Binding 1
+ Decorate 29(g_tTex) DescriptorSet 0
+ Decorate 29(g_tTex) Binding 3
+ Decorate 31(g_sSamp) DescriptorSet 0
+ Decorate 31(g_sSamp) Binding 0
+ Decorate 41(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeImage 6(float) 1D depth sampled format:Unknown
+ 12: TypePointer UniformConstant 11
+ 13(g_tTex): 12(ptr) Variable UniformConstant
+ 15: TypeSampler
+ 16: TypePointer UniformConstant 15
+ 17(g_sSampCmp): 16(ptr) Variable UniformConstant
+ 19: TypeSampledImage 11
+ 21: 6(float) Constant 1036831949
+ 22: 6(float) Constant 1061158912
+ 23: TypeVector 6(float) 2
+ 27: TypeImage 6(float) 1D sampled format:Unknown
+ 28: TypePointer UniformConstant 27
+ 29(g_tTex): 28(ptr) Variable UniformConstant
+ 31(g_sSamp): 16(ptr) Variable UniformConstant
+ 33: TypeSampledImage 27
+ 36: 6(float) Constant 0
+ 37: 7(fvec4) ConstantComposite 36 36 36 36
+ 40: TypePointer Output 7(fvec4)
+41(@entryPointOutput): 40(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 42: 7(fvec4) FunctionCall 9(@main()
+ Store 41(@entryPointOutput) 42
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 14: 11 Load 13(g_tTex)
+ 18: 15 Load 17(g_sSampCmp)
+ 20: 19 SampledImage 14 18
+ 24: 23(fvec2) CompositeConstruct 21 22
+ 25: 6(float) CompositeExtract 24 1
+ 26: 6(float) ImageSampleDrefImplicitLod 20 24 25
+ 30: 27 Load 29(g_tTex)
+ 32: 15 Load 31(g_sSamp)
+ 34: 33 SampledImage 30 32
+ 35: 7(fvec4) ImageSampleImplicitLod 34 21
+ ReturnValue 37
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.negative.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.negative.frag.out
new file mode 100644
index 00000000000..65a69e8f104
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.negative.frag.out
@@ -0,0 +1,98 @@
+hlsl.samplecmp.negative.frag
+ERROR: 0:10: '' : expected: SamplerComparisonState
+ERROR: 1 compilation errors. No code generated.
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+ERROR: node is still EOpNull!
+0:8 Function Definition: @main( ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:? Sequence
+0:9 texture ( temp float)
+0:9 Construct combined texture-sampler ( temp sampler2DShadow)
+0:9 'g_shadowTex' ( uniform texture2DShadow)
+0:9 'g_shadowSamplerComp' ( uniform sampler)
+0:9 Construct vec3 ( temp 3-component vector of float)
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:9 Constant:
+0:9 0.000000
+0:10 ERROR: Bad aggregation op
+ ( temp float)
+0:10 'g_nonShadowTex' ( uniform texture2D)
+0:10 'g_shadowSampler' ( uniform sampler)
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:10 Constant:
+0:10 0.000000
+0:12 Branch: Return with expression
+0:12 Constant:
+0:12 0.000000
+0:12 0.000000
+0:12 0.000000
+0:12 0.000000
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_nonShadowTex' ( uniform texture2D)
+0:? 'g_shadowTex' ( uniform texture2DShadow)
+0:? 'g_shadowSampler' ( uniform sampler)
+0:? 'g_shadowSamplerComp' ( uniform sampler)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+ERROR: node is still EOpNull!
+0:8 Function Definition: @main( ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:? Sequence
+0:9 texture ( temp float)
+0:9 Construct combined texture-sampler ( temp sampler2DShadow)
+0:9 'g_shadowTex' ( uniform texture2DShadow)
+0:9 'g_shadowSamplerComp' ( uniform sampler)
+0:9 Construct vec3 ( temp 3-component vector of float)
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:9 Constant:
+0:9 0.000000
+0:10 ERROR: Bad aggregation op
+ ( temp float)
+0:10 'g_nonShadowTex' ( uniform texture2D)
+0:10 'g_shadowSampler' ( uniform sampler)
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:10 Constant:
+0:10 0.000000
+0:12 Branch: Return with expression
+0:12 Constant:
+0:12 0.000000
+0:12 0.000000
+0:12 0.000000
+0:12 0.000000
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:8 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_nonShadowTex' ( uniform texture2D)
+0:? 'g_shadowTex' ( uniform texture2DShadow)
+0:? 'g_shadowSampler' ( uniform sampler)
+0:? 'g_shadowSamplerComp' ( uniform sampler)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.negative2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.negative2.frag.out
new file mode 100644
index 00000000000..996b3f87041
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.negative2.frag.out
@@ -0,0 +1,80 @@
+hlsl.samplecmp.negative2.frag
+ERROR: 0:7: '' : expected: SamplerComparisonState
+ERROR: 1 compilation errors. No code generated.
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+ERROR: node is still EOpNull!
+0:6 Function Definition: @main( ( temp 4-component vector of float)
+0:6 Function Parameters:
+0:? Sequence
+0:7 ERROR: Bad aggregation op
+ ( temp 4-component vector of float)
+0:7 'g_shadowTex' ( uniform texture2D)
+0:7 'g_shadowSampler' ( uniform sampler)
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:7 Constant:
+0:7 0.000000
+0:? Constant:
+0:? 0 (const int)
+0:? 0 (const int)
+0:9 Branch: Return with expression
+0:9 Constant:
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:6 Function Definition: main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:6 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:6 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_shadowTex' ( uniform texture2D)
+0:? 'g_shadowSampler' ( uniform sampler)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+ERROR: node is still EOpNull!
+0:6 Function Definition: @main( ( temp 4-component vector of float)
+0:6 Function Parameters:
+0:? Sequence
+0:7 ERROR: Bad aggregation op
+ ( temp 4-component vector of float)
+0:7 'g_shadowTex' ( uniform texture2D)
+0:7 'g_shadowSampler' ( uniform sampler)
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:7 Constant:
+0:7 0.000000
+0:? Constant:
+0:? 0 (const int)
+0:? 0 (const int)
+0:9 Branch: Return with expression
+0:9 Constant:
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:6 Function Definition: main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:6 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:6 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_shadowTex' ( uniform texture2D)
+0:? 'g_shadowSampler' ( uniform sampler)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
index a6193fd9556..5b59ab876cc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplecmp.offset.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
0:42 'r01' ( temp float)
0:42 textureOffset ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DShadow)
-0:42 'g_tTex1df4' (layout( binding=0) uniform texture1D)
+0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec2 ( temp 2-component vector of float)
0:42 Constant:
@@ -24,7 +24,7 @@ gl_FragCoord origin is upper left
0:43 'r03' ( temp float)
0:43 textureOffset ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DShadow)
-0:43 'g_tTex1di4' ( uniform itexture1D)
+0:43 'g_tTex1di4' ( uniform itexture1DShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec2 ( temp 2-component vector of float)
0:43 Constant:
@@ -38,7 +38,7 @@ gl_FragCoord origin is upper left
0:44 'r05' ( temp float)
0:44 textureOffset ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DShadow)
-0:44 'g_tTex1du4' ( uniform utexture1D)
+0:44 'g_tTex1du4' ( uniform utexture1DShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec2 ( temp 2-component vector of float)
0:44 Constant:
@@ -52,7 +52,7 @@ gl_FragCoord origin is upper left
0:47 'r21' ( temp float)
0:47 textureOffset ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DShadow)
-0:47 'g_tTex2df4' ( uniform texture2D)
+0:47 'g_tTex2df4' ( uniform texture2DShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -68,7 +68,7 @@ gl_FragCoord origin is upper left
0:48 'r23' ( temp float)
0:48 textureOffset ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DShadow)
-0:48 'g_tTex2di4' ( uniform itexture2D)
+0:48 'g_tTex2di4' ( uniform itexture2DShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -84,7 +84,7 @@ gl_FragCoord origin is upper left
0:49 'r25' ( temp float)
0:49 textureOffset ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DShadow)
-0:49 'g_tTex2du4' ( uniform utexture2D)
+0:49 'g_tTex2du4' ( uniform utexture2DShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -122,25 +122,25 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 1 (const int)
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
-0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:? 'g_tTex1di4' ( uniform itexture1D)
-0:? 'g_tTex1du4' ( uniform utexture1D)
-0:? 'g_tTex2df4' ( uniform texture2D)
-0:? 'g_tTex2di4' ( uniform itexture2D)
-0:? 'g_tTex2du4' ( uniform utexture2D)
+0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
+0:? 'g_tTex1di4' ( uniform itexture1DShadow)
+0:? 'g_tTex1du4' ( uniform utexture1DShadow)
+0:? 'g_tTex2df4' ( uniform texture2DShadow)
+0:? 'g_tTex2di4' ( uniform itexture2DShadow)
+0:? 'g_tTex2du4' ( uniform utexture2DShadow)
0:? 'g_tTex3df4' ( uniform texture3D)
0:? 'g_tTex3di4' ( uniform itexture3D)
0:? 'g_tTex3du4' ( uniform utexture3D)
@@ -156,14 +156,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -174,7 +174,7 @@ gl_FragCoord origin is upper left
0:42 'r01' ( temp float)
0:42 textureOffset ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DShadow)
-0:42 'g_tTex1df4' (layout( binding=0) uniform texture1D)
+0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec2 ( temp 2-component vector of float)
0:42 Constant:
@@ -188,7 +188,7 @@ gl_FragCoord origin is upper left
0:43 'r03' ( temp float)
0:43 textureOffset ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DShadow)
-0:43 'g_tTex1di4' ( uniform itexture1D)
+0:43 'g_tTex1di4' ( uniform itexture1DShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec2 ( temp 2-component vector of float)
0:43 Constant:
@@ -202,7 +202,7 @@ gl_FragCoord origin is upper left
0:44 'r05' ( temp float)
0:44 textureOffset ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DShadow)
-0:44 'g_tTex1du4' ( uniform utexture1D)
+0:44 'g_tTex1du4' ( uniform utexture1DShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec2 ( temp 2-component vector of float)
0:44 Constant:
@@ -216,7 +216,7 @@ gl_FragCoord origin is upper left
0:47 'r21' ( temp float)
0:47 textureOffset ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DShadow)
-0:47 'g_tTex2df4' ( uniform texture2D)
+0:47 'g_tTex2df4' ( uniform texture2DShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -232,7 +232,7 @@ gl_FragCoord origin is upper left
0:48 'r23' ( temp float)
0:48 textureOffset ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DShadow)
-0:48 'g_tTex2di4' ( uniform itexture2D)
+0:48 'g_tTex2di4' ( uniform itexture2DShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -248,7 +248,7 @@ gl_FragCoord origin is upper left
0:49 'r25' ( temp float)
0:49 textureOffset ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DShadow)
-0:49 'g_tTex2du4' ( uniform utexture2D)
+0:49 'g_tTex2du4' ( uniform utexture2DShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -286,25 +286,25 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 1 (const int)
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
-0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:? 'g_tTex1di4' ( uniform itexture1D)
-0:? 'g_tTex1du4' ( uniform utexture1D)
-0:? 'g_tTex2df4' ( uniform texture2D)
-0:? 'g_tTex2di4' ( uniform itexture2D)
-0:? 'g_tTex2du4' ( uniform utexture2D)
+0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
+0:? 'g_tTex1di4' ( uniform itexture1DShadow)
+0:? 'g_tTex1du4' ( uniform utexture1DShadow)
+0:? 'g_tTex2df4' ( uniform texture2DShadow)
+0:? 'g_tTex2di4' ( uniform itexture2DShadow)
+0:? 'g_tTex2du4' ( uniform utexture2DShadow)
0:? 'g_tTex3df4' ( uniform texture3D)
0:? 'g_tTex3di4' ( uniform itexture3D)
0:? 'g_tTex3du4' ( uniform utexture3D)
@@ -320,20 +320,21 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 173
+// Generated by (magic number): 80002
+// Id's are bound by 167
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 121 125
+ EntryPoint Fragment 4 "main" 115 119
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -342,61 +343,61 @@ gl_FragCoord origin is upper left
Name 13 "r01"
Name 16 "g_tTex1df4"
Name 20 "g_sSamp"
- Name 33 "r03"
- Name 36 "g_tTex1di4"
- Name 45 "r05"
- Name 49 "g_tTex1du4"
- Name 58 "r21"
- Name 61 "g_tTex2df4"
- Name 78 "r23"
- Name 81 "g_tTex2di4"
- Name 92 "r25"
- Name 95 "g_tTex2du4"
- Name 107 "psout"
- Name 118 "flattenTemp"
- Name 121 "Color"
- Name 125 "Depth"
- Name 130 "g_tTex3df4"
- Name 133 "g_tTex3di4"
- Name 136 "g_tTex3du4"
- Name 139 "g_tTexcdf4"
- Name 142 "g_tTexcdi4"
- Name 145 "g_tTexcdu4"
- Name 148 "g_tTex1df4a"
- Name 151 "g_tTex1di4a"
- Name 154 "g_tTex1du4a"
- Name 157 "g_tTex2df4a"
- Name 160 "g_tTex2di4a"
- Name 163 "g_tTex2du4a"
- Name 166 "g_tTexcdf4a"
- Name 169 "g_tTexcdi4a"
- Name 172 "g_tTexcdu4a"
+ Name 32 "r03"
+ Name 35 "g_tTex1di4"
+ Name 43 "r05"
+ Name 47 "g_tTex1du4"
+ Name 55 "r21"
+ Name 58 "g_tTex2df4"
+ Name 74 "r23"
+ Name 77 "g_tTex2di4"
+ Name 87 "r25"
+ Name 90 "g_tTex2du4"
+ Name 101 "psout"
+ Name 112 "flattenTemp"
+ Name 115 "@entryPointOutput.Color"
+ Name 119 "@entryPointOutput.Depth"
+ Name 124 "g_tTex3df4"
+ Name 127 "g_tTex3di4"
+ Name 130 "g_tTex3du4"
+ Name 133 "g_tTexcdf4"
+ Name 136 "g_tTexcdi4"
+ Name 139 "g_tTexcdu4"
+ Name 142 "g_tTex1df4a"
+ Name 145 "g_tTex1di4a"
+ Name 148 "g_tTex1du4a"
+ Name 151 "g_tTex2df4a"
+ Name 154 "g_tTex2di4a"
+ Name 157 "g_tTex2du4a"
+ Name 160 "g_tTexcdf4a"
+ Name 163 "g_tTexcdi4a"
+ Name 166 "g_tTexcdu4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
- Decorate 36(g_tTex1di4) DescriptorSet 0
- Decorate 49(g_tTex1du4) DescriptorSet 0
- Decorate 61(g_tTex2df4) DescriptorSet 0
- Decorate 81(g_tTex2di4) DescriptorSet 0
- Decorate 95(g_tTex2du4) DescriptorSet 0
- Decorate 121(Color) Location 0
- Decorate 125(Depth) BuiltIn FragDepth
- Decorate 130(g_tTex3df4) DescriptorSet 0
- Decorate 133(g_tTex3di4) DescriptorSet 0
- Decorate 136(g_tTex3du4) DescriptorSet 0
- Decorate 139(g_tTexcdf4) DescriptorSet 0
- Decorate 142(g_tTexcdi4) DescriptorSet 0
- Decorate 145(g_tTexcdu4) DescriptorSet 0
- Decorate 148(g_tTex1df4a) DescriptorSet 0
- Decorate 151(g_tTex1di4a) DescriptorSet 0
- Decorate 154(g_tTex1du4a) DescriptorSet 0
- Decorate 157(g_tTex2df4a) DescriptorSet 0
- Decorate 160(g_tTex2di4a) DescriptorSet 0
- Decorate 163(g_tTex2du4a) DescriptorSet 0
- Decorate 166(g_tTexcdf4a) DescriptorSet 0
- Decorate 169(g_tTexcdi4a) DescriptorSet 0
- Decorate 172(g_tTexcdu4a) DescriptorSet 0
+ Decorate 35(g_tTex1di4) DescriptorSet 0
+ Decorate 47(g_tTex1du4) DescriptorSet 0
+ Decorate 58(g_tTex2df4) DescriptorSet 0
+ Decorate 77(g_tTex2di4) DescriptorSet 0
+ Decorate 90(g_tTex2du4) DescriptorSet 0
+ Decorate 115(@entryPointOutput.Color) Location 0
+ Decorate 119(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 124(g_tTex3df4) DescriptorSet 0
+ Decorate 127(g_tTex3di4) DescriptorSet 0
+ Decorate 130(g_tTex3du4) DescriptorSet 0
+ Decorate 133(g_tTexcdf4) DescriptorSet 0
+ Decorate 136(g_tTexcdi4) DescriptorSet 0
+ Decorate 139(g_tTexcdu4) DescriptorSet 0
+ Decorate 142(g_tTex1df4a) DescriptorSet 0
+ Decorate 145(g_tTex1di4a) DescriptorSet 0
+ Decorate 148(g_tTex1du4a) DescriptorSet 0
+ Decorate 151(g_tTex2df4a) DescriptorSet 0
+ Decorate 154(g_tTex2di4a) DescriptorSet 0
+ Decorate 157(g_tTex2du4a) DescriptorSet 0
+ Decorate 160(g_tTexcdf4a) DescriptorSet 0
+ Decorate 163(g_tTexcdi4a) DescriptorSet 0
+ Decorate 166(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -404,180 +405,174 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 6(float)
- 14: TypeImage 6(float) 1D sampled format:Unknown
+ 14: TypeImage 6(float) 1D depth sampled format:Unknown
15: TypePointer UniformConstant 14
16(g_tTex1df4): 15(ptr) Variable UniformConstant
18: TypeSampler
19: TypePointer UniformConstant 18
20(g_sSamp): 19(ptr) Variable UniformConstant
- 22: TypeImage 6(float) 1D depth sampled format:Unknown
- 23: TypeSampledImage 22
- 25: 6(float) Constant 1036831949
- 26: 6(float) Constant 1061158912
- 27: TypeVector 6(float) 2
- 29: TypeInt 32 1
- 30: 29(int) Constant 2
- 34: TypeImage 29(int) 1D sampled format:Unknown
- 35: TypePointer UniformConstant 34
- 36(g_tTex1di4): 35(ptr) Variable UniformConstant
- 39: TypeImage 29(int) 1D depth sampled format:Unknown
- 40: TypeSampledImage 39
- 46: TypeInt 32 0
- 47: TypeImage 46(int) 1D sampled format:Unknown
- 48: TypePointer UniformConstant 47
- 49(g_tTex1du4): 48(ptr) Variable UniformConstant
- 52: TypeImage 46(int) 1D depth sampled format:Unknown
- 53: TypeSampledImage 52
- 59: TypeImage 6(float) 2D sampled format:Unknown
- 60: TypePointer UniformConstant 59
- 61(g_tTex2df4): 60(ptr) Variable UniformConstant
- 64: TypeImage 6(float) 2D depth sampled format:Unknown
- 65: TypeSampledImage 64
- 67: 6(float) Constant 1045220557
- 68: 27(fvec2) ConstantComposite 25 67
- 69: TypeVector 6(float) 3
- 73: TypeVector 29(int) 2
- 74: 29(int) Constant 3
- 75: 73(ivec2) ConstantComposite 30 74
- 79: TypeImage 29(int) 2D sampled format:Unknown
- 80: TypePointer UniformConstant 79
- 81(g_tTex2di4): 80(ptr) Variable UniformConstant
- 84: TypeImage 29(int) 2D depth sampled format:Unknown
- 85: TypeSampledImage 84
- 93: TypeImage 46(int) 2D sampled format:Unknown
- 94: TypePointer UniformConstant 93
- 95(g_tTex2du4): 94(ptr) Variable UniformConstant
- 98: TypeImage 46(int) 2D depth sampled format:Unknown
- 99: TypeSampledImage 98
- 106: TypePointer Function 8(PS_OUTPUT)
- 108: 29(int) Constant 0
- 109: 6(float) Constant 1065353216
- 110: 7(fvec4) ConstantComposite 109 109 109 109
- 111: TypePointer Function 7(fvec4)
- 113: 29(int) Constant 1
- 120: TypePointer Output 7(fvec4)
- 121(Color): 120(ptr) Variable Output
- 124: TypePointer Output 6(float)
- 125(Depth): 124(ptr) Variable Output
- 128: TypeImage 6(float) 3D sampled format:Unknown
+ 22: TypeSampledImage 14
+ 24: 6(float) Constant 1036831949
+ 25: 6(float) Constant 1061158912
+ 26: TypeVector 6(float) 2
+ 28: TypeInt 32 1
+ 29: 28(int) Constant 2
+ 33: TypeImage 28(int) 1D depth sampled format:Unknown
+ 34: TypePointer UniformConstant 33
+ 35(g_tTex1di4): 34(ptr) Variable UniformConstant
+ 38: TypeSampledImage 33
+ 44: TypeInt 32 0
+ 45: TypeImage 44(int) 1D depth sampled format:Unknown
+ 46: TypePointer UniformConstant 45
+ 47(g_tTex1du4): 46(ptr) Variable UniformConstant
+ 50: TypeSampledImage 45
+ 56: TypeImage 6(float) 2D depth sampled format:Unknown
+ 57: TypePointer UniformConstant 56
+ 58(g_tTex2df4): 57(ptr) Variable UniformConstant
+ 61: TypeSampledImage 56
+ 63: 6(float) Constant 1045220557
+ 64: 26(fvec2) ConstantComposite 24 63
+ 65: TypeVector 6(float) 3
+ 69: TypeVector 28(int) 2
+ 70: 28(int) Constant 3
+ 71: 69(ivec2) ConstantComposite 29 70
+ 75: TypeImage 28(int) 2D depth sampled format:Unknown
+ 76: TypePointer UniformConstant 75
+ 77(g_tTex2di4): 76(ptr) Variable UniformConstant
+ 80: TypeSampledImage 75
+ 88: TypeImage 44(int) 2D depth sampled format:Unknown
+ 89: TypePointer UniformConstant 88
+ 90(g_tTex2du4): 89(ptr) Variable UniformConstant
+ 93: TypeSampledImage 88
+ 100: TypePointer Function 8(PS_OUTPUT)
+ 102: 28(int) Constant 0
+ 103: 6(float) Constant 1065353216
+ 104: 7(fvec4) ConstantComposite 103 103 103 103
+ 105: TypePointer Function 7(fvec4)
+ 107: 28(int) Constant 1
+ 114: TypePointer Output 7(fvec4)
+115(@entryPointOutput.Color): 114(ptr) Variable Output
+ 118: TypePointer Output 6(float)
+119(@entryPointOutput.Depth): 118(ptr) Variable Output
+ 122: TypeImage 6(float) 3D sampled format:Unknown
+ 123: TypePointer UniformConstant 122
+ 124(g_tTex3df4): 123(ptr) Variable UniformConstant
+ 125: TypeImage 28(int) 3D sampled format:Unknown
+ 126: TypePointer UniformConstant 125
+ 127(g_tTex3di4): 126(ptr) Variable UniformConstant
+ 128: TypeImage 44(int) 3D sampled format:Unknown
129: TypePointer UniformConstant 128
- 130(g_tTex3df4): 129(ptr) Variable UniformConstant
- 131: TypeImage 29(int) 3D sampled format:Unknown
+ 130(g_tTex3du4): 129(ptr) Variable UniformConstant
+ 131: TypeImage 6(float) Cube sampled format:Unknown
132: TypePointer UniformConstant 131
- 133(g_tTex3di4): 132(ptr) Variable UniformConstant
- 134: TypeImage 46(int) 3D sampled format:Unknown
+ 133(g_tTexcdf4): 132(ptr) Variable UniformConstant
+ 134: TypeImage 28(int) Cube sampled format:Unknown
135: TypePointer UniformConstant 134
- 136(g_tTex3du4): 135(ptr) Variable UniformConstant
- 137: TypeImage 6(float) Cube sampled format:Unknown
+ 136(g_tTexcdi4): 135(ptr) Variable UniformConstant
+ 137: TypeImage 44(int) Cube sampled format:Unknown
138: TypePointer UniformConstant 137
- 139(g_tTexcdf4): 138(ptr) Variable UniformConstant
- 140: TypeImage 29(int) Cube sampled format:Unknown
+ 139(g_tTexcdu4): 138(ptr) Variable UniformConstant
+ 140: TypeImage 6(float) 1D array sampled format:Unknown
141: TypePointer UniformConstant 140
- 142(g_tTexcdi4): 141(ptr) Variable UniformConstant
- 143: TypeImage 46(int) Cube sampled format:Unknown
+142(g_tTex1df4a): 141(ptr) Variable UniformConstant
+ 143: TypeImage 28(int) 1D array sampled format:Unknown
144: TypePointer UniformConstant 143
- 145(g_tTexcdu4): 144(ptr) Variable UniformConstant
- 146: TypeImage 6(float) 1D array sampled format:Unknown
+145(g_tTex1di4a): 144(ptr) Variable UniformConstant
+ 146: TypeImage 44(int) 1D array sampled format:Unknown
147: TypePointer UniformConstant 146
-148(g_tTex1df4a): 147(ptr) Variable UniformConstant
- 149: TypeImage 29(int) 1D array sampled format:Unknown
+148(g_tTex1du4a): 147(ptr) Variable UniformConstant
+ 149: TypeImage 6(float) 2D array sampled format:Unknown
150: TypePointer UniformConstant 149
-151(g_tTex1di4a): 150(ptr) Variable UniformConstant
- 152: TypeImage 46(int) 1D array sampled format:Unknown
+151(g_tTex2df4a): 150(ptr) Variable UniformConstant
+ 152: TypeImage 28(int) 2D array sampled format:Unknown
153: TypePointer UniformConstant 152
-154(g_tTex1du4a): 153(ptr) Variable UniformConstant
- 155: TypeImage 6(float) 2D array sampled format:Unknown
+154(g_tTex2di4a): 153(ptr) Variable UniformConstant
+ 155: TypeImage 44(int) 2D array sampled format:Unknown
156: TypePointer UniformConstant 155
-157(g_tTex2df4a): 156(ptr) Variable UniformConstant
- 158: TypeImage 29(int) 2D array sampled format:Unknown
+157(g_tTex2du4a): 156(ptr) Variable UniformConstant
+ 158: TypeImage 6(float) Cube array sampled format:Unknown
159: TypePointer UniformConstant 158
-160(g_tTex2di4a): 159(ptr) Variable UniformConstant
- 161: TypeImage 46(int) 2D array sampled format:Unknown
+160(g_tTexcdf4a): 159(ptr) Variable UniformConstant
+ 161: TypeImage 28(int) Cube array sampled format:Unknown
162: TypePointer UniformConstant 161
-163(g_tTex2du4a): 162(ptr) Variable UniformConstant
- 164: TypeImage 6(float) Cube array sampled format:Unknown
+163(g_tTexcdi4a): 162(ptr) Variable UniformConstant
+ 164: TypeImage 44(int) Cube array sampled format:Unknown
165: TypePointer UniformConstant 164
-166(g_tTexcdf4a): 165(ptr) Variable UniformConstant
- 167: TypeImage 29(int) Cube array sampled format:Unknown
- 168: TypePointer UniformConstant 167
-169(g_tTexcdi4a): 168(ptr) Variable UniformConstant
- 170: TypeImage 46(int) Cube array sampled format:Unknown
- 171: TypePointer UniformConstant 170
-172(g_tTexcdu4a): 171(ptr) Variable UniformConstant
+166(g_tTexcdu4a): 165(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
-118(flattenTemp): 106(ptr) Variable Function
- 119:8(PS_OUTPUT) FunctionCall 10(@main()
- Store 118(flattenTemp) 119
- 122: 111(ptr) AccessChain 118(flattenTemp) 108
- 123: 7(fvec4) Load 122
- Store 121(Color) 123
- 126: 12(ptr) AccessChain 118(flattenTemp) 113
- 127: 6(float) Load 126
- Store 125(Depth) 127
+112(flattenTemp): 100(ptr) Variable Function
+ 113:8(PS_OUTPUT) FunctionCall 10(@main()
+ Store 112(flattenTemp) 113
+ 116: 105(ptr) AccessChain 112(flattenTemp) 102
+ 117: 7(fvec4) Load 116
+ Store 115(@entryPointOutput.Color) 117
+ 120: 12(ptr) AccessChain 112(flattenTemp) 107
+ 121: 6(float) Load 120
+ Store 119(@entryPointOutput.Depth) 121
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(r01): 12(ptr) Variable Function
- 33(r03): 12(ptr) Variable Function
- 45(r05): 12(ptr) Variable Function
- 58(r21): 12(ptr) Variable Function
- 78(r23): 12(ptr) Variable Function
- 92(r25): 12(ptr) Variable Function
- 107(psout): 106(ptr) Variable Function
+ 32(r03): 12(ptr) Variable Function
+ 43(r05): 12(ptr) Variable Function
+ 55(r21): 12(ptr) Variable Function
+ 74(r23): 12(ptr) Variable Function
+ 87(r25): 12(ptr) Variable Function
+ 101(psout): 100(ptr) Variable Function
17: 14 Load 16(g_tTex1df4)
21: 18 Load 20(g_sSamp)
- 24: 23 SampledImage 17 21
- 28: 27(fvec2) CompositeConstruct 25 26
- 31: 6(float) CompositeExtract 28 1
- 32: 6(float) ImageSampleDrefImplicitLod 24 28 31 ConstOffset 30
- Store 13(r01) 32
- 37: 34 Load 36(g_tTex1di4)
- 38: 18 Load 20(g_sSamp)
- 41: 40 SampledImage 37 38
- 42: 27(fvec2) CompositeConstruct 25 26
- 43: 6(float) CompositeExtract 42 1
- 44: 6(float) ImageSampleDrefImplicitLod 41 42 43 ConstOffset 30
- Store 33(r03) 44
- 50: 47 Load 49(g_tTex1du4)
- 51: 18 Load 20(g_sSamp)
- 54: 53 SampledImage 50 51
- 55: 27(fvec2) CompositeConstruct 25 26
- 56: 6(float) CompositeExtract 55 1
- 57: 6(float) ImageSampleDrefImplicitLod 54 55 56 ConstOffset 30
- Store 45(r05) 57
- 62: 59 Load 61(g_tTex2df4)
- 63: 18 Load 20(g_sSamp)
- 66: 65 SampledImage 62 63
- 70: 6(float) CompositeExtract 68 0
- 71: 6(float) CompositeExtract 68 1
- 72: 69(fvec3) CompositeConstruct 70 71 26
- 76: 6(float) CompositeExtract 72 2
- 77: 6(float) ImageSampleDrefImplicitLod 66 72 76 ConstOffset 75
- Store 58(r21) 77
- 82: 79 Load 81(g_tTex2di4)
- 83: 18 Load 20(g_sSamp)
- 86: 85 SampledImage 82 83
- 87: 6(float) CompositeExtract 68 0
- 88: 6(float) CompositeExtract 68 1
- 89: 69(fvec3) CompositeConstruct 87 88 26
- 90: 6(float) CompositeExtract 89 2
- 91: 6(float) ImageSampleDrefImplicitLod 86 89 90 ConstOffset 75
- Store 78(r23) 91
- 96: 93 Load 95(g_tTex2du4)
- 97: 18 Load 20(g_sSamp)
- 100: 99 SampledImage 96 97
- 101: 6(float) CompositeExtract 68 0
- 102: 6(float) CompositeExtract 68 1
- 103: 69(fvec3) CompositeConstruct 101 102 26
- 104: 6(float) CompositeExtract 103 2
- 105: 6(float) ImageSampleDrefImplicitLod 100 103 104 ConstOffset 75
- Store 92(r25) 105
- 112: 111(ptr) AccessChain 107(psout) 108
- Store 112 110
- 114: 12(ptr) AccessChain 107(psout) 113
- Store 114 109
- 115:8(PS_OUTPUT) Load 107(psout)
- ReturnValue 115
+ 23: 22 SampledImage 17 21
+ 27: 26(fvec2) CompositeConstruct 24 25
+ 30: 6(float) CompositeExtract 27 1
+ 31: 6(float) ImageSampleDrefImplicitLod 23 27 30 ConstOffset 29
+ Store 13(r01) 31
+ 36: 33 Load 35(g_tTex1di4)
+ 37: 18 Load 20(g_sSamp)
+ 39: 38 SampledImage 36 37
+ 40: 26(fvec2) CompositeConstruct 24 25
+ 41: 6(float) CompositeExtract 40 1
+ 42: 6(float) ImageSampleDrefImplicitLod 39 40 41 ConstOffset 29
+ Store 32(r03) 42
+ 48: 45 Load 47(g_tTex1du4)
+ 49: 18 Load 20(g_sSamp)
+ 51: 50 SampledImage 48 49
+ 52: 26(fvec2) CompositeConstruct 24 25
+ 53: 6(float) CompositeExtract 52 1
+ 54: 6(float) ImageSampleDrefImplicitLod 51 52 53 ConstOffset 29
+ Store 43(r05) 54
+ 59: 56 Load 58(g_tTex2df4)
+ 60: 18 Load 20(g_sSamp)
+ 62: 61 SampledImage 59 60
+ 66: 6(float) CompositeExtract 64 0
+ 67: 6(float) CompositeExtract 64 1
+ 68: 65(fvec3) CompositeConstruct 66 67 25
+ 72: 6(float) CompositeExtract 68 2
+ 73: 6(float) ImageSampleDrefImplicitLod 62 68 72 ConstOffset 71
+ Store 55(r21) 73
+ 78: 75 Load 77(g_tTex2di4)
+ 79: 18 Load 20(g_sSamp)
+ 81: 80 SampledImage 78 79
+ 82: 6(float) CompositeExtract 64 0
+ 83: 6(float) CompositeExtract 64 1
+ 84: 65(fvec3) CompositeConstruct 82 83 25
+ 85: 6(float) CompositeExtract 84 2
+ 86: 6(float) ImageSampleDrefImplicitLod 81 84 85 ConstOffset 71
+ Store 74(r23) 86
+ 91: 88 Load 90(g_tTex2du4)
+ 92: 18 Load 20(g_sSamp)
+ 94: 93 SampledImage 91 92
+ 95: 6(float) CompositeExtract 64 0
+ 96: 6(float) CompositeExtract 64 1
+ 97: 65(fvec3) CompositeConstruct 95 96 25
+ 98: 6(float) CompositeExtract 97 2
+ 99: 6(float) ImageSampleDrefImplicitLod 94 97 98 ConstOffset 71
+ Store 87(r25) 99
+ 106: 105(ptr) AccessChain 101(psout) 102
+ Store 106 104
+ 108: 12(ptr) AccessChain 101(psout) 107
+ Store 108 103
+ 109:8(PS_OUTPUT) Load 101(psout)
+ ReturnValue 109
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
index 2fdce6788a5..a2a99045c97 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplecmp.offsetarray.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
0:42 'r11' ( temp float)
0:42 textureOffset ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow)
-0:42 'g_tTex1df4a' ( uniform texture1DArray)
+0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -25,7 +25,7 @@ gl_FragCoord origin is upper left
0:43 'r13' ( temp float)
0:43 textureOffset ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow)
-0:43 'g_tTex1di4a' ( uniform itexture1DArray)
+0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -40,7 +40,7 @@ gl_FragCoord origin is upper left
0:44 'r15' ( temp float)
0:44 textureOffset ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow)
-0:44 'g_tTex1du4a' ( uniform utexture1DArray)
+0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -55,7 +55,7 @@ gl_FragCoord origin is upper left
0:47 'r31' ( temp float)
0:47 textureOffset ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow)
-0:47 'g_tTex2df4a' ( uniform texture2DArray)
+0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -72,7 +72,7 @@ gl_FragCoord origin is upper left
0:48 'r33' ( temp float)
0:48 textureOffset ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow)
-0:48 'g_tTex2di4a' ( uniform itexture2DArray)
+0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -89,7 +89,7 @@ gl_FragCoord origin is upper left
0:49 'r35' ( temp float)
0:49 textureOffset ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow)
-0:49 'g_tTex2du4a' ( uniform utexture2DArray)
+0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -128,13 +128,13 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
@@ -153,23 +153,23 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'g_tTex1df4a' ( uniform texture1DArray)
-0:? 'g_tTex1di4a' ( uniform itexture1DArray)
-0:? 'g_tTex1du4a' ( uniform utexture1DArray)
-0:? 'g_tTex2df4a' ( uniform texture2DArray)
-0:? 'g_tTex2di4a' ( uniform itexture2DArray)
-0:? 'g_tTex2du4a' ( uniform utexture2DArray)
+0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow)
+0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
+0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
+0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow)
+0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
+0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -180,7 +180,7 @@ gl_FragCoord origin is upper left
0:42 'r11' ( temp float)
0:42 textureOffset ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow)
-0:42 'g_tTex1df4a' ( uniform texture1DArray)
+0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -195,7 +195,7 @@ gl_FragCoord origin is upper left
0:43 'r13' ( temp float)
0:43 textureOffset ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow)
-0:43 'g_tTex1di4a' ( uniform itexture1DArray)
+0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -210,7 +210,7 @@ gl_FragCoord origin is upper left
0:44 'r15' ( temp float)
0:44 textureOffset ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow)
-0:44 'g_tTex1du4a' ( uniform utexture1DArray)
+0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -225,7 +225,7 @@ gl_FragCoord origin is upper left
0:47 'r31' ( temp float)
0:47 textureOffset ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow)
-0:47 'g_tTex2df4a' ( uniform texture2DArray)
+0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -242,7 +242,7 @@ gl_FragCoord origin is upper left
0:48 'r33' ( temp float)
0:48 textureOffset ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow)
-0:48 'g_tTex2di4a' ( uniform itexture2DArray)
+0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -259,7 +259,7 @@ gl_FragCoord origin is upper left
0:49 'r35' ( temp float)
0:49 textureOffset ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow)
-0:49 'g_tTex2du4a' ( uniform utexture2DArray)
+0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -298,13 +298,13 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
@@ -323,29 +323,30 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'g_tTex1df4a' ( uniform texture1DArray)
-0:? 'g_tTex1di4a' ( uniform itexture1DArray)
-0:? 'g_tTex1du4a' ( uniform utexture1DArray)
-0:? 'g_tTex2df4a' ( uniform texture2DArray)
-0:? 'g_tTex2di4a' ( uniform itexture2DArray)
-0:? 'g_tTex2du4a' ( uniform utexture2DArray)
+0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow)
+0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
+0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
+0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow)
+0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
+0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 184
+// Generated by (magic number): 80002
+// Id's are bound by 178
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 132 136
+ EntryPoint Fragment 4 "main" 126 130
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -354,61 +355,61 @@ gl_FragCoord origin is upper left
Name 13 "r11"
Name 16 "g_tTex1df4a"
Name 20 "g_sSamp"
- Name 38 "r13"
- Name 41 "g_tTex1di4a"
- Name 52 "r15"
- Name 56 "g_tTex1du4a"
- Name 67 "r31"
- Name 70 "g_tTex2df4a"
- Name 87 "r33"
- Name 90 "g_tTex2di4a"
- Name 102 "r35"
- Name 105 "g_tTex2du4a"
- Name 118 "psout"
- Name 129 "flattenTemp"
- Name 132 "Color"
- Name 136 "Depth"
- Name 141 "g_tTex1df4"
- Name 144 "g_tTex1di4"
- Name 147 "g_tTex1du4"
- Name 150 "g_tTex2df4"
- Name 153 "g_tTex2di4"
- Name 156 "g_tTex2du4"
- Name 159 "g_tTex3df4"
- Name 162 "g_tTex3di4"
- Name 165 "g_tTex3du4"
- Name 168 "g_tTexcdf4"
- Name 171 "g_tTexcdi4"
- Name 174 "g_tTexcdu4"
- Name 177 "g_tTexcdf4a"
- Name 180 "g_tTexcdi4a"
- Name 183 "g_tTexcdu4a"
+ Name 37 "r13"
+ Name 40 "g_tTex1di4a"
+ Name 50 "r15"
+ Name 54 "g_tTex1du4a"
+ Name 64 "r31"
+ Name 67 "g_tTex2df4a"
+ Name 83 "r33"
+ Name 86 "g_tTex2di4a"
+ Name 97 "r35"
+ Name 100 "g_tTex2du4a"
+ Name 112 "psout"
+ Name 123 "flattenTemp"
+ Name 126 "@entryPointOutput.Color"
+ Name 130 "@entryPointOutput.Depth"
+ Name 135 "g_tTex1df4"
+ Name 138 "g_tTex1di4"
+ Name 141 "g_tTex1du4"
+ Name 144 "g_tTex2df4"
+ Name 147 "g_tTex2di4"
+ Name 150 "g_tTex2du4"
+ Name 153 "g_tTex3df4"
+ Name 156 "g_tTex3di4"
+ Name 159 "g_tTex3du4"
+ Name 162 "g_tTexcdf4"
+ Name 165 "g_tTexcdi4"
+ Name 168 "g_tTexcdu4"
+ Name 171 "g_tTexcdf4a"
+ Name 174 "g_tTexcdi4a"
+ Name 177 "g_tTexcdu4a"
Decorate 16(g_tTex1df4a) DescriptorSet 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
- Decorate 41(g_tTex1di4a) DescriptorSet 0
- Decorate 56(g_tTex1du4a) DescriptorSet 0
- Decorate 70(g_tTex2df4a) DescriptorSet 0
- Decorate 90(g_tTex2di4a) DescriptorSet 0
- Decorate 105(g_tTex2du4a) DescriptorSet 0
- Decorate 132(Color) Location 0
- Decorate 136(Depth) BuiltIn FragDepth
- Decorate 141(g_tTex1df4) DescriptorSet 0
- Decorate 141(g_tTex1df4) Binding 0
- Decorate 144(g_tTex1di4) DescriptorSet 0
- Decorate 147(g_tTex1du4) DescriptorSet 0
- Decorate 150(g_tTex2df4) DescriptorSet 0
- Decorate 153(g_tTex2di4) DescriptorSet 0
- Decorate 156(g_tTex2du4) DescriptorSet 0
- Decorate 159(g_tTex3df4) DescriptorSet 0
- Decorate 162(g_tTex3di4) DescriptorSet 0
- Decorate 165(g_tTex3du4) DescriptorSet 0
- Decorate 168(g_tTexcdf4) DescriptorSet 0
- Decorate 171(g_tTexcdi4) DescriptorSet 0
- Decorate 174(g_tTexcdu4) DescriptorSet 0
- Decorate 177(g_tTexcdf4a) DescriptorSet 0
- Decorate 180(g_tTexcdi4a) DescriptorSet 0
- Decorate 183(g_tTexcdu4a) DescriptorSet 0
+ Decorate 40(g_tTex1di4a) DescriptorSet 0
+ Decorate 54(g_tTex1du4a) DescriptorSet 0
+ Decorate 67(g_tTex2df4a) DescriptorSet 0
+ Decorate 86(g_tTex2di4a) DescriptorSet 0
+ Decorate 100(g_tTex2du4a) DescriptorSet 0
+ Decorate 126(@entryPointOutput.Color) Location 0
+ Decorate 130(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 135(g_tTex1df4) DescriptorSet 0
+ Decorate 135(g_tTex1df4) Binding 0
+ Decorate 138(g_tTex1di4) DescriptorSet 0
+ Decorate 141(g_tTex1du4) DescriptorSet 0
+ Decorate 144(g_tTex2df4) DescriptorSet 0
+ Decorate 147(g_tTex2di4) DescriptorSet 0
+ Decorate 150(g_tTex2du4) DescriptorSet 0
+ Decorate 153(g_tTex3df4) DescriptorSet 0
+ Decorate 156(g_tTex3di4) DescriptorSet 0
+ Decorate 159(g_tTex3du4) DescriptorSet 0
+ Decorate 162(g_tTexcdf4) DescriptorSet 0
+ Decorate 165(g_tTexcdi4) DescriptorSet 0
+ Decorate 168(g_tTexcdu4) DescriptorSet 0
+ Decorate 171(g_tTexcdf4a) DescriptorSet 0
+ Decorate 174(g_tTexcdi4a) DescriptorSet 0
+ Decorate 177(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -416,191 +417,185 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 6(float)
- 14: TypeImage 6(float) 1D array sampled format:Unknown
+ 14: TypeImage 6(float) 1D depth array sampled format:Unknown
15: TypePointer UniformConstant 14
16(g_tTex1df4a): 15(ptr) Variable UniformConstant
18: TypeSampler
19: TypePointer UniformConstant 18
20(g_sSamp): 19(ptr) Variable UniformConstant
- 22: TypeImage 6(float) 1D depth array sampled format:Unknown
- 23: TypeSampledImage 22
- 25: TypeVector 6(float) 2
- 26: 6(float) Constant 1036831949
- 27: 6(float) Constant 1045220557
- 28: 25(fvec2) ConstantComposite 26 27
- 29: 6(float) Constant 1061158912
- 30: TypeVector 6(float) 3
- 34: TypeInt 32 1
- 35: 34(int) Constant 2
- 39: TypeImage 34(int) 1D array sampled format:Unknown
- 40: TypePointer UniformConstant 39
- 41(g_tTex1di4a): 40(ptr) Variable UniformConstant
- 44: TypeImage 34(int) 1D depth array sampled format:Unknown
- 45: TypeSampledImage 44
- 53: TypeInt 32 0
- 54: TypeImage 53(int) 1D array sampled format:Unknown
- 55: TypePointer UniformConstant 54
- 56(g_tTex1du4a): 55(ptr) Variable UniformConstant
- 59: TypeImage 53(int) 1D depth array sampled format:Unknown
- 60: TypeSampledImage 59
- 68: TypeImage 6(float) 2D array sampled format:Unknown
- 69: TypePointer UniformConstant 68
- 70(g_tTex2df4a): 69(ptr) Variable UniformConstant
- 73: TypeImage 6(float) 2D depth array sampled format:Unknown
- 74: TypeSampledImage 73
- 76: 6(float) Constant 1050253722
- 77: 30(fvec3) ConstantComposite 26 27 76
- 82: TypeVector 34(int) 2
- 83: 34(int) Constant 3
- 84: 82(ivec2) ConstantComposite 35 83
- 88: TypeImage 34(int) 2D array sampled format:Unknown
- 89: TypePointer UniformConstant 88
- 90(g_tTex2di4a): 89(ptr) Variable UniformConstant
- 93: TypeImage 34(int) 2D depth array sampled format:Unknown
- 94: TypeSampledImage 93
- 103: TypeImage 53(int) 2D array sampled format:Unknown
- 104: TypePointer UniformConstant 103
-105(g_tTex2du4a): 104(ptr) Variable UniformConstant
- 108: TypeImage 53(int) 2D depth array sampled format:Unknown
- 109: TypeSampledImage 108
- 117: TypePointer Function 8(PS_OUTPUT)
- 119: 34(int) Constant 0
- 120: 6(float) Constant 1065353216
- 121: 7(fvec4) ConstantComposite 120 120 120 120
- 122: TypePointer Function 7(fvec4)
- 124: 34(int) Constant 1
- 131: TypePointer Output 7(fvec4)
- 132(Color): 131(ptr) Variable Output
- 135: TypePointer Output 6(float)
- 136(Depth): 135(ptr) Variable Output
- 139: TypeImage 6(float) 1D sampled format:Unknown
+ 22: TypeSampledImage 14
+ 24: TypeVector 6(float) 2
+ 25: 6(float) Constant 1036831949
+ 26: 6(float) Constant 1045220557
+ 27: 24(fvec2) ConstantComposite 25 26
+ 28: 6(float) Constant 1061158912
+ 29: TypeVector 6(float) 3
+ 33: TypeInt 32 1
+ 34: 33(int) Constant 2
+ 38: TypeImage 33(int) 1D depth array sampled format:Unknown
+ 39: TypePointer UniformConstant 38
+ 40(g_tTex1di4a): 39(ptr) Variable UniformConstant
+ 43: TypeSampledImage 38
+ 51: TypeInt 32 0
+ 52: TypeImage 51(int) 1D depth array sampled format:Unknown
+ 53: TypePointer UniformConstant 52
+ 54(g_tTex1du4a): 53(ptr) Variable UniformConstant
+ 57: TypeSampledImage 52
+ 65: TypeImage 6(float) 2D depth array sampled format:Unknown
+ 66: TypePointer UniformConstant 65
+ 67(g_tTex2df4a): 66(ptr) Variable UniformConstant
+ 70: TypeSampledImage 65
+ 72: 6(float) Constant 1050253722
+ 73: 29(fvec3) ConstantComposite 25 26 72
+ 78: TypeVector 33(int) 2
+ 79: 33(int) Constant 3
+ 80: 78(ivec2) ConstantComposite 34 79
+ 84: TypeImage 33(int) 2D depth array sampled format:Unknown
+ 85: TypePointer UniformConstant 84
+ 86(g_tTex2di4a): 85(ptr) Variable UniformConstant
+ 89: TypeSampledImage 84
+ 98: TypeImage 51(int) 2D depth array sampled format:Unknown
+ 99: TypePointer UniformConstant 98
+100(g_tTex2du4a): 99(ptr) Variable UniformConstant
+ 103: TypeSampledImage 98
+ 111: TypePointer Function 8(PS_OUTPUT)
+ 113: 33(int) Constant 0
+ 114: 6(float) Constant 1065353216
+ 115: 7(fvec4) ConstantComposite 114 114 114 114
+ 116: TypePointer Function 7(fvec4)
+ 118: 33(int) Constant 1
+ 125: TypePointer Output 7(fvec4)
+126(@entryPointOutput.Color): 125(ptr) Variable Output
+ 129: TypePointer Output 6(float)
+130(@entryPointOutput.Depth): 129(ptr) Variable Output
+ 133: TypeImage 6(float) 1D sampled format:Unknown
+ 134: TypePointer UniformConstant 133
+ 135(g_tTex1df4): 134(ptr) Variable UniformConstant
+ 136: TypeImage 33(int) 1D sampled format:Unknown
+ 137: TypePointer UniformConstant 136
+ 138(g_tTex1di4): 137(ptr) Variable UniformConstant
+ 139: TypeImage 51(int) 1D sampled format:Unknown
140: TypePointer UniformConstant 139
- 141(g_tTex1df4): 140(ptr) Variable UniformConstant
- 142: TypeImage 34(int) 1D sampled format:Unknown
+ 141(g_tTex1du4): 140(ptr) Variable UniformConstant
+ 142: TypeImage 6(float) 2D sampled format:Unknown
143: TypePointer UniformConstant 142
- 144(g_tTex1di4): 143(ptr) Variable UniformConstant
- 145: TypeImage 53(int) 1D sampled format:Unknown
+ 144(g_tTex2df4): 143(ptr) Variable UniformConstant
+ 145: TypeImage 33(int) 2D sampled format:Unknown
146: TypePointer UniformConstant 145
- 147(g_tTex1du4): 146(ptr) Variable UniformConstant
- 148: TypeImage 6(float) 2D sampled format:Unknown
+ 147(g_tTex2di4): 146(ptr) Variable UniformConstant
+ 148: TypeImage 51(int) 2D sampled format:Unknown
149: TypePointer UniformConstant 148
- 150(g_tTex2df4): 149(ptr) Variable UniformConstant
- 151: TypeImage 34(int) 2D sampled format:Unknown
+ 150(g_tTex2du4): 149(ptr) Variable UniformConstant
+ 151: TypeImage 6(float) 3D sampled format:Unknown
152: TypePointer UniformConstant 151
- 153(g_tTex2di4): 152(ptr) Variable UniformConstant
- 154: TypeImage 53(int) 2D sampled format:Unknown
+ 153(g_tTex3df4): 152(ptr) Variable UniformConstant
+ 154: TypeImage 33(int) 3D sampled format:Unknown
155: TypePointer UniformConstant 154
- 156(g_tTex2du4): 155(ptr) Variable UniformConstant
- 157: TypeImage 6(float) 3D sampled format:Unknown
+ 156(g_tTex3di4): 155(ptr) Variable UniformConstant
+ 157: TypeImage 51(int) 3D sampled format:Unknown
158: TypePointer UniformConstant 157
- 159(g_tTex3df4): 158(ptr) Variable UniformConstant
- 160: TypeImage 34(int) 3D sampled format:Unknown
+ 159(g_tTex3du4): 158(ptr) Variable UniformConstant
+ 160: TypeImage 6(float) Cube sampled format:Unknown
161: TypePointer UniformConstant 160
- 162(g_tTex3di4): 161(ptr) Variable UniformConstant
- 163: TypeImage 53(int) 3D sampled format:Unknown
+ 162(g_tTexcdf4): 161(ptr) Variable UniformConstant
+ 163: TypeImage 33(int) Cube sampled format:Unknown
164: TypePointer UniformConstant 163
- 165(g_tTex3du4): 164(ptr) Variable UniformConstant
- 166: TypeImage 6(float) Cube sampled format:Unknown
+ 165(g_tTexcdi4): 164(ptr) Variable UniformConstant
+ 166: TypeImage 51(int) Cube sampled format:Unknown
167: TypePointer UniformConstant 166
- 168(g_tTexcdf4): 167(ptr) Variable UniformConstant
- 169: TypeImage 34(int) Cube sampled format:Unknown
+ 168(g_tTexcdu4): 167(ptr) Variable UniformConstant
+ 169: TypeImage 6(float) Cube array sampled format:Unknown
170: TypePointer UniformConstant 169
- 171(g_tTexcdi4): 170(ptr) Variable UniformConstant
- 172: TypeImage 53(int) Cube sampled format:Unknown
+171(g_tTexcdf4a): 170(ptr) Variable UniformConstant
+ 172: TypeImage 33(int) Cube array sampled format:Unknown
173: TypePointer UniformConstant 172
- 174(g_tTexcdu4): 173(ptr) Variable UniformConstant
- 175: TypeImage 6(float) Cube array sampled format:Unknown
+174(g_tTexcdi4a): 173(ptr) Variable UniformConstant
+ 175: TypeImage 51(int) Cube array sampled format:Unknown
176: TypePointer UniformConstant 175
-177(g_tTexcdf4a): 176(ptr) Variable UniformConstant
- 178: TypeImage 34(int) Cube array sampled format:Unknown
- 179: TypePointer UniformConstant 178
-180(g_tTexcdi4a): 179(ptr) Variable UniformConstant
- 181: TypeImage 53(int) Cube array sampled format:Unknown
- 182: TypePointer UniformConstant 181
-183(g_tTexcdu4a): 182(ptr) Variable UniformConstant
+177(g_tTexcdu4a): 176(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
-129(flattenTemp): 117(ptr) Variable Function
- 130:8(PS_OUTPUT) FunctionCall 10(@main()
- Store 129(flattenTemp) 130
- 133: 122(ptr) AccessChain 129(flattenTemp) 119
- 134: 7(fvec4) Load 133
- Store 132(Color) 134
- 137: 12(ptr) AccessChain 129(flattenTemp) 124
- 138: 6(float) Load 137
- Store 136(Depth) 138
+123(flattenTemp): 111(ptr) Variable Function
+ 124:8(PS_OUTPUT) FunctionCall 10(@main()
+ Store 123(flattenTemp) 124
+ 127: 116(ptr) AccessChain 123(flattenTemp) 113
+ 128: 7(fvec4) Load 127
+ Store 126(@entryPointOutput.Color) 128
+ 131: 12(ptr) AccessChain 123(flattenTemp) 118
+ 132: 6(float) Load 131
+ Store 130(@entryPointOutput.Depth) 132
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(r11): 12(ptr) Variable Function
- 38(r13): 12(ptr) Variable Function
- 52(r15): 12(ptr) Variable Function
- 67(r31): 12(ptr) Variable Function
- 87(r33): 12(ptr) Variable Function
- 102(r35): 12(ptr) Variable Function
- 118(psout): 117(ptr) Variable Function
+ 37(r13): 12(ptr) Variable Function
+ 50(r15): 12(ptr) Variable Function
+ 64(r31): 12(ptr) Variable Function
+ 83(r33): 12(ptr) Variable Function
+ 97(r35): 12(ptr) Variable Function
+ 112(psout): 111(ptr) Variable Function
17: 14 Load 16(g_tTex1df4a)
21: 18 Load 20(g_sSamp)
- 24: 23 SampledImage 17 21
- 31: 6(float) CompositeExtract 28 0
- 32: 6(float) CompositeExtract 28 1
- 33: 30(fvec3) CompositeConstruct 31 32 29
- 36: 6(float) CompositeExtract 33 2
- 37: 6(float) ImageSampleDrefImplicitLod 24 33 36 ConstOffset 35
- Store 13(r11) 37
- 42: 39 Load 41(g_tTex1di4a)
- 43: 18 Load 20(g_sSamp)
- 46: 45 SampledImage 42 43
- 47: 6(float) CompositeExtract 28 0
- 48: 6(float) CompositeExtract 28 1
- 49: 30(fvec3) CompositeConstruct 47 48 29
- 50: 6(float) CompositeExtract 49 2
- 51: 6(float) ImageSampleDrefImplicitLod 46 49 50 ConstOffset 35
- Store 38(r13) 51
- 57: 54 Load 56(g_tTex1du4a)
- 58: 18 Load 20(g_sSamp)
- 61: 60 SampledImage 57 58
- 62: 6(float) CompositeExtract 28 0
- 63: 6(float) CompositeExtract 28 1
- 64: 30(fvec3) CompositeConstruct 62 63 29
- 65: 6(float) CompositeExtract 64 2
- 66: 6(float) ImageSampleDrefImplicitLod 61 64 65 ConstOffset 35
- Store 52(r15) 66
- 71: 68 Load 70(g_tTex2df4a)
- 72: 18 Load 20(g_sSamp)
- 75: 74 SampledImage 71 72
- 78: 6(float) CompositeExtract 77 0
- 79: 6(float) CompositeExtract 77 1
- 80: 6(float) CompositeExtract 77 2
- 81: 7(fvec4) CompositeConstruct 78 79 80 29
- 85: 6(float) CompositeExtract 81 3
- 86: 6(float) ImageSampleDrefImplicitLod 75 81 85 ConstOffset 84
- Store 67(r31) 86
- 91: 88 Load 90(g_tTex2di4a)
- 92: 18 Load 20(g_sSamp)
- 95: 94 SampledImage 91 92
- 96: 6(float) CompositeExtract 77 0
- 97: 6(float) CompositeExtract 77 1
- 98: 6(float) CompositeExtract 77 2
- 99: 7(fvec4) CompositeConstruct 96 97 98 29
- 100: 6(float) CompositeExtract 99 3
- 101: 6(float) ImageSampleDrefImplicitLod 95 99 100 ConstOffset 84
- Store 87(r33) 101
- 106: 103 Load 105(g_tTex2du4a)
- 107: 18 Load 20(g_sSamp)
- 110: 109 SampledImage 106 107
- 111: 6(float) CompositeExtract 77 0
- 112: 6(float) CompositeExtract 77 1
- 113: 6(float) CompositeExtract 77 2
- 114: 7(fvec4) CompositeConstruct 111 112 113 29
- 115: 6(float) CompositeExtract 114 3
- 116: 6(float) ImageSampleDrefImplicitLod 110 114 115 ConstOffset 84
- Store 102(r35) 116
- 123: 122(ptr) AccessChain 118(psout) 119
- Store 123 121
- 125: 12(ptr) AccessChain 118(psout) 124
- Store 125 120
- 126:8(PS_OUTPUT) Load 118(psout)
- ReturnValue 126
+ 23: 22 SampledImage 17 21
+ 30: 6(float) CompositeExtract 27 0
+ 31: 6(float) CompositeExtract 27 1
+ 32: 29(fvec3) CompositeConstruct 30 31 28
+ 35: 6(float) CompositeExtract 32 2
+ 36: 6(float) ImageSampleDrefImplicitLod 23 32 35 ConstOffset 34
+ Store 13(r11) 36
+ 41: 38 Load 40(g_tTex1di4a)
+ 42: 18 Load 20(g_sSamp)
+ 44: 43 SampledImage 41 42
+ 45: 6(float) CompositeExtract 27 0
+ 46: 6(float) CompositeExtract 27 1
+ 47: 29(fvec3) CompositeConstruct 45 46 28
+ 48: 6(float) CompositeExtract 47 2
+ 49: 6(float) ImageSampleDrefImplicitLod 44 47 48 ConstOffset 34
+ Store 37(r13) 49
+ 55: 52 Load 54(g_tTex1du4a)
+ 56: 18 Load 20(g_sSamp)
+ 58: 57 SampledImage 55 56
+ 59: 6(float) CompositeExtract 27 0
+ 60: 6(float) CompositeExtract 27 1
+ 61: 29(fvec3) CompositeConstruct 59 60 28
+ 62: 6(float) CompositeExtract 61 2
+ 63: 6(float) ImageSampleDrefImplicitLod 58 61 62 ConstOffset 34
+ Store 50(r15) 63
+ 68: 65 Load 67(g_tTex2df4a)
+ 69: 18 Load 20(g_sSamp)
+ 71: 70 SampledImage 68 69
+ 74: 6(float) CompositeExtract 73 0
+ 75: 6(float) CompositeExtract 73 1
+ 76: 6(float) CompositeExtract 73 2
+ 77: 7(fvec4) CompositeConstruct 74 75 76 28
+ 81: 6(float) CompositeExtract 77 3
+ 82: 6(float) ImageSampleDrefImplicitLod 71 77 81 ConstOffset 80
+ Store 64(r31) 82
+ 87: 84 Load 86(g_tTex2di4a)
+ 88: 18 Load 20(g_sSamp)
+ 90: 89 SampledImage 87 88
+ 91: 6(float) CompositeExtract 73 0
+ 92: 6(float) CompositeExtract 73 1
+ 93: 6(float) CompositeExtract 73 2
+ 94: 7(fvec4) CompositeConstruct 91 92 93 28
+ 95: 6(float) CompositeExtract 94 3
+ 96: 6(float) ImageSampleDrefImplicitLod 90 94 95 ConstOffset 80
+ Store 83(r33) 96
+ 101: 98 Load 100(g_tTex2du4a)
+ 102: 18 Load 20(g_sSamp)
+ 104: 103 SampledImage 101 102
+ 105: 6(float) CompositeExtract 73 0
+ 106: 6(float) CompositeExtract 73 1
+ 107: 6(float) CompositeExtract 73 2
+ 108: 7(fvec4) CompositeConstruct 105 106 107 28
+ 109: 6(float) CompositeExtract 108 3
+ 110: 6(float) ImageSampleDrefImplicitLod 104 108 109 ConstOffset 80
+ Store 97(r35) 110
+ 117: 116(ptr) AccessChain 112(psout) 113
+ Store 117 115
+ 119: 12(ptr) AccessChain 112(psout) 118
+ Store 119 114
+ 120:8(PS_OUTPUT) Load 112(psout)
+ ReturnValue 120
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
index 3a3e1695b6d..ea7cc5e027a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplecmplevelzero.array.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
0:42 'r10' ( temp float)
0:42 textureLod ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow)
-0:42 'g_tTex1df4a' ( uniform texture1DArray)
+0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -25,7 +25,7 @@ gl_FragCoord origin is upper left
0:43 'r12' ( temp float)
0:43 textureLod ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow)
-0:43 'g_tTex1di4a' ( uniform itexture1DArray)
+0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -40,7 +40,7 @@ gl_FragCoord origin is upper left
0:44 'r14' ( temp float)
0:44 textureLod ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow)
-0:44 'g_tTex1du4a' ( uniform utexture1DArray)
+0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -55,7 +55,7 @@ gl_FragCoord origin is upper left
0:47 'r30' ( temp float)
0:47 textureLod ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow)
-0:47 'g_tTex2df4a' ( uniform texture2DArray)
+0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -71,7 +71,7 @@ gl_FragCoord origin is upper left
0:48 'r32' ( temp float)
0:48 textureLod ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow)
-0:48 'g_tTex2di4a' ( uniform itexture2DArray)
+0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -87,7 +87,7 @@ gl_FragCoord origin is upper left
0:49 'r34' ( temp float)
0:49 textureLod ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow)
-0:49 'g_tTex2du4a' ( uniform utexture2DArray)
+0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -103,7 +103,7 @@ gl_FragCoord origin is upper left
0:52 'r60' ( temp float)
0:52 textureLod ( temp float)
0:52 Construct combined texture-sampler ( temp samplerCubeArrayShadow)
-0:52 'g_tTexcdf4a' ( uniform textureCubeArray)
+0:52 'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
0:52 'g_sSamp' (layout( binding=0) uniform sampler)
0:52 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -120,7 +120,7 @@ gl_FragCoord origin is upper left
0:53 'r62' ( temp float)
0:53 textureLod ( temp float)
0:53 Construct combined texture-sampler ( temp isamplerCubeArrayShadow)
-0:53 'g_tTexcdi4a' ( uniform itextureCubeArray)
+0:53 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
0:53 'g_sSamp' (layout( binding=0) uniform sampler)
0:53 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -137,7 +137,7 @@ gl_FragCoord origin is upper left
0:54 'r64' ( temp float)
0:54 textureLod ( temp float)
0:54 Construct combined texture-sampler ( temp usamplerCubeArrayShadow)
-0:54 'g_tTexcdu4a' ( uniform utextureCubeArray)
+0:54 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
0:54 'g_sSamp' (layout( binding=0) uniform sampler)
0:54 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -176,13 +176,13 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
@@ -201,23 +201,23 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'g_tTex1df4a' ( uniform texture1DArray)
-0:? 'g_tTex1di4a' ( uniform itexture1DArray)
-0:? 'g_tTex1du4a' ( uniform utexture1DArray)
-0:? 'g_tTex2df4a' ( uniform texture2DArray)
-0:? 'g_tTex2di4a' ( uniform itexture2DArray)
-0:? 'g_tTex2du4a' ( uniform utexture2DArray)
-0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
-0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
-0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow)
+0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
+0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
+0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow)
+0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
+0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
+0:? 'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
+0:? 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
+0:? 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -228,7 +228,7 @@ gl_FragCoord origin is upper left
0:42 'r10' ( temp float)
0:42 textureLod ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow)
-0:42 'g_tTex1df4a' ( uniform texture1DArray)
+0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -243,7 +243,7 @@ gl_FragCoord origin is upper left
0:43 'r12' ( temp float)
0:43 textureLod ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow)
-0:43 'g_tTex1di4a' ( uniform itexture1DArray)
+0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -258,7 +258,7 @@ gl_FragCoord origin is upper left
0:44 'r14' ( temp float)
0:44 textureLod ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow)
-0:44 'g_tTex1du4a' ( uniform utexture1DArray)
+0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -273,7 +273,7 @@ gl_FragCoord origin is upper left
0:47 'r30' ( temp float)
0:47 textureLod ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow)
-0:47 'g_tTex2df4a' ( uniform texture2DArray)
+0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -289,7 +289,7 @@ gl_FragCoord origin is upper left
0:48 'r32' ( temp float)
0:48 textureLod ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow)
-0:48 'g_tTex2di4a' ( uniform itexture2DArray)
+0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -305,7 +305,7 @@ gl_FragCoord origin is upper left
0:49 'r34' ( temp float)
0:49 textureLod ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow)
-0:49 'g_tTex2du4a' ( uniform utexture2DArray)
+0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -321,7 +321,7 @@ gl_FragCoord origin is upper left
0:52 'r60' ( temp float)
0:52 textureLod ( temp float)
0:52 Construct combined texture-sampler ( temp samplerCubeArrayShadow)
-0:52 'g_tTexcdf4a' ( uniform textureCubeArray)
+0:52 'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
0:52 'g_sSamp' (layout( binding=0) uniform sampler)
0:52 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -338,7 +338,7 @@ gl_FragCoord origin is upper left
0:53 'r62' ( temp float)
0:53 textureLod ( temp float)
0:53 Construct combined texture-sampler ( temp isamplerCubeArrayShadow)
-0:53 'g_tTexcdi4a' ( uniform itextureCubeArray)
+0:53 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
0:53 'g_sSamp' (layout( binding=0) uniform sampler)
0:53 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -355,7 +355,7 @@ gl_FragCoord origin is upper left
0:54 'r64' ( temp float)
0:54 textureLod ( temp float)
0:54 Construct combined texture-sampler ( temp usamplerCubeArrayShadow)
-0:54 'g_tTexcdu4a' ( uniform utextureCubeArray)
+0:54 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
0:54 'g_sSamp' (layout( binding=0) uniform sampler)
0:54 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -394,13 +394,13 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
@@ -419,29 +419,30 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'g_tTex1df4a' ( uniform texture1DArray)
-0:? 'g_tTex1di4a' ( uniform itexture1DArray)
-0:? 'g_tTex1du4a' ( uniform utexture1DArray)
-0:? 'g_tTex2df4a' ( uniform texture2DArray)
-0:? 'g_tTex2di4a' ( uniform itexture2DArray)
-0:? 'g_tTex2du4a' ( uniform utexture2DArray)
-0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
-0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
-0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow)
+0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
+0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
+0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow)
+0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
+0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
+0:? 'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
+0:? 'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
+0:? 'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 219
+// Generated by (magic number): 80002
+// Id's are bound by 210
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 176 180
+ EntryPoint Fragment 4 "main" 167 171
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -450,64 +451,64 @@ gl_FragCoord origin is upper left
Name 13 "r10"
Name 16 "g_tTex1df4a"
Name 20 "g_sSamp"
- Name 37 "r12"
- Name 41 "g_tTex1di4a"
- Name 52 "r14"
- Name 56 "g_tTex1du4a"
- Name 67 "r30"
- Name 70 "g_tTex2df4a"
- Name 84 "r32"
- Name 87 "g_tTex2di4a"
- Name 99 "r34"
- Name 102 "g_tTex2du4a"
- Name 114 "r60"
- Name 117 "g_tTexcdf4a"
- Name 131 "r62"
- Name 134 "g_tTexcdi4a"
- Name 146 "r64"
- Name 149 "g_tTexcdu4a"
- Name 162 "psout"
- Name 173 "flattenTemp"
- Name 176 "Color"
- Name 180 "Depth"
- Name 185 "g_tTex1df4"
- Name 188 "g_tTex1di4"
- Name 191 "g_tTex1du4"
- Name 194 "g_tTex2df4"
- Name 197 "g_tTex2di4"
- Name 200 "g_tTex2du4"
- Name 203 "g_tTex3df4"
- Name 206 "g_tTex3di4"
- Name 209 "g_tTex3du4"
- Name 212 "g_tTexcdf4"
- Name 215 "g_tTexcdi4"
- Name 218 "g_tTexcdu4"
+ Name 36 "r12"
+ Name 40 "g_tTex1di4a"
+ Name 50 "r14"
+ Name 54 "g_tTex1du4a"
+ Name 64 "r30"
+ Name 67 "g_tTex2df4a"
+ Name 80 "r32"
+ Name 83 "g_tTex2di4a"
+ Name 94 "r34"
+ Name 97 "g_tTex2du4a"
+ Name 108 "r60"
+ Name 111 "g_tTexcdf4a"
+ Name 124 "r62"
+ Name 127 "g_tTexcdi4a"
+ Name 138 "r64"
+ Name 141 "g_tTexcdu4a"
+ Name 153 "psout"
+ Name 164 "flattenTemp"
+ Name 167 "@entryPointOutput.Color"
+ Name 171 "@entryPointOutput.Depth"
+ Name 176 "g_tTex1df4"
+ Name 179 "g_tTex1di4"
+ Name 182 "g_tTex1du4"
+ Name 185 "g_tTex2df4"
+ Name 188 "g_tTex2di4"
+ Name 191 "g_tTex2du4"
+ Name 194 "g_tTex3df4"
+ Name 197 "g_tTex3di4"
+ Name 200 "g_tTex3du4"
+ Name 203 "g_tTexcdf4"
+ Name 206 "g_tTexcdi4"
+ Name 209 "g_tTexcdu4"
Decorate 16(g_tTex1df4a) DescriptorSet 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
- Decorate 41(g_tTex1di4a) DescriptorSet 0
- Decorate 56(g_tTex1du4a) DescriptorSet 0
- Decorate 70(g_tTex2df4a) DescriptorSet 0
- Decorate 87(g_tTex2di4a) DescriptorSet 0
- Decorate 102(g_tTex2du4a) DescriptorSet 0
- Decorate 117(g_tTexcdf4a) DescriptorSet 0
- Decorate 134(g_tTexcdi4a) DescriptorSet 0
- Decorate 149(g_tTexcdu4a) DescriptorSet 0
- Decorate 176(Color) Location 0
- Decorate 180(Depth) BuiltIn FragDepth
- Decorate 185(g_tTex1df4) DescriptorSet 0
- Decorate 185(g_tTex1df4) Binding 0
- Decorate 188(g_tTex1di4) DescriptorSet 0
- Decorate 191(g_tTex1du4) DescriptorSet 0
- Decorate 194(g_tTex2df4) DescriptorSet 0
- Decorate 197(g_tTex2di4) DescriptorSet 0
- Decorate 200(g_tTex2du4) DescriptorSet 0
- Decorate 203(g_tTex3df4) DescriptorSet 0
- Decorate 206(g_tTex3di4) DescriptorSet 0
- Decorate 209(g_tTex3du4) DescriptorSet 0
- Decorate 212(g_tTexcdf4) DescriptorSet 0
- Decorate 215(g_tTexcdi4) DescriptorSet 0
- Decorate 218(g_tTexcdu4) DescriptorSet 0
+ Decorate 40(g_tTex1di4a) DescriptorSet 0
+ Decorate 54(g_tTex1du4a) DescriptorSet 0
+ Decorate 67(g_tTex2df4a) DescriptorSet 0
+ Decorate 83(g_tTex2di4a) DescriptorSet 0
+ Decorate 97(g_tTex2du4a) DescriptorSet 0
+ Decorate 111(g_tTexcdf4a) DescriptorSet 0
+ Decorate 127(g_tTexcdi4a) DescriptorSet 0
+ Decorate 141(g_tTexcdu4a) DescriptorSet 0
+ Decorate 167(@entryPointOutput.Color) Location 0
+ Decorate 171(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 176(g_tTex1df4) DescriptorSet 0
+ Decorate 176(g_tTex1df4) Binding 0
+ Decorate 179(g_tTex1di4) DescriptorSet 0
+ Decorate 182(g_tTex1du4) DescriptorSet 0
+ Decorate 185(g_tTex2df4) DescriptorSet 0
+ Decorate 188(g_tTex2di4) DescriptorSet 0
+ Decorate 191(g_tTex2du4) DescriptorSet 0
+ Decorate 194(g_tTex3df4) DescriptorSet 0
+ Decorate 197(g_tTex3di4) DescriptorSet 0
+ Decorate 200(g_tTex3du4) DescriptorSet 0
+ Decorate 203(g_tTexcdf4) DescriptorSet 0
+ Decorate 206(g_tTexcdi4) DescriptorSet 0
+ Decorate 209(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -515,229 +516,220 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 6(float)
- 14: TypeImage 6(float) 1D array sampled format:Unknown
+ 14: TypeImage 6(float) 1D depth array sampled format:Unknown
15: TypePointer UniformConstant 14
16(g_tTex1df4a): 15(ptr) Variable UniformConstant
18: TypeSampler
19: TypePointer UniformConstant 18
20(g_sSamp): 19(ptr) Variable UniformConstant
- 22: TypeImage 6(float) 1D depth array sampled format:Unknown
- 23: TypeSampledImage 22
- 25: TypeVector 6(float) 2
- 26: 6(float) Constant 1036831949
- 27: 6(float) Constant 1045220557
- 28: 25(fvec2) ConstantComposite 26 27
- 29: 6(float) Constant 1061158912
- 30: TypeVector 6(float) 3
- 34: 6(float) Constant 0
- 38: TypeInt 32 1
- 39: TypeImage 38(int) 1D array sampled format:Unknown
- 40: TypePointer UniformConstant 39
- 41(g_tTex1di4a): 40(ptr) Variable UniformConstant
- 44: TypeImage 38(int) 1D depth array sampled format:Unknown
- 45: TypeSampledImage 44
- 53: TypeInt 32 0
- 54: TypeImage 53(int) 1D array sampled format:Unknown
- 55: TypePointer UniformConstant 54
- 56(g_tTex1du4a): 55(ptr) Variable UniformConstant
- 59: TypeImage 53(int) 1D depth array sampled format:Unknown
- 60: TypeSampledImage 59
- 68: TypeImage 6(float) 2D array sampled format:Unknown
- 69: TypePointer UniformConstant 68
- 70(g_tTex2df4a): 69(ptr) Variable UniformConstant
- 73: TypeImage 6(float) 2D depth array sampled format:Unknown
- 74: TypeSampledImage 73
- 76: 6(float) Constant 1050253722
- 77: 30(fvec3) ConstantComposite 26 27 76
- 85: TypeImage 38(int) 2D array sampled format:Unknown
- 86: TypePointer UniformConstant 85
- 87(g_tTex2di4a): 86(ptr) Variable UniformConstant
- 90: TypeImage 38(int) 2D depth array sampled format:Unknown
- 91: TypeSampledImage 90
- 100: TypeImage 53(int) 2D array sampled format:Unknown
- 101: TypePointer UniformConstant 100
-102(g_tTex2du4a): 101(ptr) Variable UniformConstant
- 105: TypeImage 53(int) 2D depth array sampled format:Unknown
- 106: TypeSampledImage 105
- 115: TypeImage 6(float) Cube array sampled format:Unknown
- 116: TypePointer UniformConstant 115
-117(g_tTexcdf4a): 116(ptr) Variable UniformConstant
- 120: TypeImage 6(float) Cube depth array sampled format:Unknown
- 121: TypeSampledImage 120
- 123: 6(float) Constant 1053609165
- 124: 7(fvec4) ConstantComposite 26 27 76 123
- 132: TypeImage 38(int) Cube array sampled format:Unknown
- 133: TypePointer UniformConstant 132
-134(g_tTexcdi4a): 133(ptr) Variable UniformConstant
- 137: TypeImage 38(int) Cube depth array sampled format:Unknown
- 138: TypeSampledImage 137
- 147: TypeImage 53(int) Cube array sampled format:Unknown
- 148: TypePointer UniformConstant 147
-149(g_tTexcdu4a): 148(ptr) Variable UniformConstant
- 152: TypeImage 53(int) Cube depth array sampled format:Unknown
- 153: TypeSampledImage 152
- 161: TypePointer Function 8(PS_OUTPUT)
- 163: 38(int) Constant 0
- 164: 6(float) Constant 1065353216
- 165: 7(fvec4) ConstantComposite 164 164 164 164
- 166: TypePointer Function 7(fvec4)
- 168: 38(int) Constant 1
- 175: TypePointer Output 7(fvec4)
- 176(Color): 175(ptr) Variable Output
- 179: TypePointer Output 6(float)
- 180(Depth): 179(ptr) Variable Output
- 183: TypeImage 6(float) 1D sampled format:Unknown
+ 22: TypeSampledImage 14
+ 24: TypeVector 6(float) 2
+ 25: 6(float) Constant 1036831949
+ 26: 6(float) Constant 1045220557
+ 27: 24(fvec2) ConstantComposite 25 26
+ 28: 6(float) Constant 1061158912
+ 29: TypeVector 6(float) 3
+ 33: 6(float) Constant 0
+ 37: TypeInt 32 1
+ 38: TypeImage 37(int) 1D depth array sampled format:Unknown
+ 39: TypePointer UniformConstant 38
+ 40(g_tTex1di4a): 39(ptr) Variable UniformConstant
+ 43: TypeSampledImage 38
+ 51: TypeInt 32 0
+ 52: TypeImage 51(int) 1D depth array sampled format:Unknown
+ 53: TypePointer UniformConstant 52
+ 54(g_tTex1du4a): 53(ptr) Variable UniformConstant
+ 57: TypeSampledImage 52
+ 65: TypeImage 6(float) 2D depth array sampled format:Unknown
+ 66: TypePointer UniformConstant 65
+ 67(g_tTex2df4a): 66(ptr) Variable UniformConstant
+ 70: TypeSampledImage 65
+ 72: 6(float) Constant 1050253722
+ 73: 29(fvec3) ConstantComposite 25 26 72
+ 81: TypeImage 37(int) 2D depth array sampled format:Unknown
+ 82: TypePointer UniformConstant 81
+ 83(g_tTex2di4a): 82(ptr) Variable UniformConstant
+ 86: TypeSampledImage 81
+ 95: TypeImage 51(int) 2D depth array sampled format:Unknown
+ 96: TypePointer UniformConstant 95
+ 97(g_tTex2du4a): 96(ptr) Variable UniformConstant
+ 100: TypeSampledImage 95
+ 109: TypeImage 6(float) Cube depth array sampled format:Unknown
+ 110: TypePointer UniformConstant 109
+111(g_tTexcdf4a): 110(ptr) Variable UniformConstant
+ 114: TypeSampledImage 109
+ 116: 6(float) Constant 1053609165
+ 117: 7(fvec4) ConstantComposite 25 26 72 116
+ 125: TypeImage 37(int) Cube depth array sampled format:Unknown
+ 126: TypePointer UniformConstant 125
+127(g_tTexcdi4a): 126(ptr) Variable UniformConstant
+ 130: TypeSampledImage 125
+ 139: TypeImage 51(int) Cube depth array sampled format:Unknown
+ 140: TypePointer UniformConstant 139
+141(g_tTexcdu4a): 140(ptr) Variable UniformConstant
+ 144: TypeSampledImage 139
+ 152: TypePointer Function 8(PS_OUTPUT)
+ 154: 37(int) Constant 0
+ 155: 6(float) Constant 1065353216
+ 156: 7(fvec4) ConstantComposite 155 155 155 155
+ 157: TypePointer Function 7(fvec4)
+ 159: 37(int) Constant 1
+ 166: TypePointer Output 7(fvec4)
+167(@entryPointOutput.Color): 166(ptr) Variable Output
+ 170: TypePointer Output 6(float)
+171(@entryPointOutput.Depth): 170(ptr) Variable Output
+ 174: TypeImage 6(float) 1D sampled format:Unknown
+ 175: TypePointer UniformConstant 174
+ 176(g_tTex1df4): 175(ptr) Variable UniformConstant
+ 177: TypeImage 37(int) 1D sampled format:Unknown
+ 178: TypePointer UniformConstant 177
+ 179(g_tTex1di4): 178(ptr) Variable UniformConstant
+ 180: TypeImage 51(int) 1D sampled format:Unknown
+ 181: TypePointer UniformConstant 180
+ 182(g_tTex1du4): 181(ptr) Variable UniformConstant
+ 183: TypeImage 6(float) 2D sampled format:Unknown
184: TypePointer UniformConstant 183
- 185(g_tTex1df4): 184(ptr) Variable UniformConstant
- 186: TypeImage 38(int) 1D sampled format:Unknown
+ 185(g_tTex2df4): 184(ptr) Variable UniformConstant
+ 186: TypeImage 37(int) 2D sampled format:Unknown
187: TypePointer UniformConstant 186
- 188(g_tTex1di4): 187(ptr) Variable UniformConstant
- 189: TypeImage 53(int) 1D sampled format:Unknown
+ 188(g_tTex2di4): 187(ptr) Variable UniformConstant
+ 189: TypeImage 51(int) 2D sampled format:Unknown
190: TypePointer UniformConstant 189
- 191(g_tTex1du4): 190(ptr) Variable UniformConstant
- 192: TypeImage 6(float) 2D sampled format:Unknown
+ 191(g_tTex2du4): 190(ptr) Variable UniformConstant
+ 192: TypeImage 6(float) 3D sampled format:Unknown
193: TypePointer UniformConstant 192
- 194(g_tTex2df4): 193(ptr) Variable UniformConstant
- 195: TypeImage 38(int) 2D sampled format:Unknown
+ 194(g_tTex3df4): 193(ptr) Variable UniformConstant
+ 195: TypeImage 37(int) 3D sampled format:Unknown
196: TypePointer UniformConstant 195
- 197(g_tTex2di4): 196(ptr) Variable UniformConstant
- 198: TypeImage 53(int) 2D sampled format:Unknown
+ 197(g_tTex3di4): 196(ptr) Variable UniformConstant
+ 198: TypeImage 51(int) 3D sampled format:Unknown
199: TypePointer UniformConstant 198
- 200(g_tTex2du4): 199(ptr) Variable UniformConstant
- 201: TypeImage 6(float) 3D sampled format:Unknown
+ 200(g_tTex3du4): 199(ptr) Variable UniformConstant
+ 201: TypeImage 6(float) Cube sampled format:Unknown
202: TypePointer UniformConstant 201
- 203(g_tTex3df4): 202(ptr) Variable UniformConstant
- 204: TypeImage 38(int) 3D sampled format:Unknown
+ 203(g_tTexcdf4): 202(ptr) Variable UniformConstant
+ 204: TypeImage 37(int) Cube sampled format:Unknown
205: TypePointer UniformConstant 204
- 206(g_tTex3di4): 205(ptr) Variable UniformConstant
- 207: TypeImage 53(int) 3D sampled format:Unknown
+ 206(g_tTexcdi4): 205(ptr) Variable UniformConstant
+ 207: TypeImage 51(int) Cube sampled format:Unknown
208: TypePointer UniformConstant 207
- 209(g_tTex3du4): 208(ptr) Variable UniformConstant
- 210: TypeImage 6(float) Cube sampled format:Unknown
- 211: TypePointer UniformConstant 210
- 212(g_tTexcdf4): 211(ptr) Variable UniformConstant
- 213: TypeImage 38(int) Cube sampled format:Unknown
- 214: TypePointer UniformConstant 213
- 215(g_tTexcdi4): 214(ptr) Variable UniformConstant
- 216: TypeImage 53(int) Cube sampled format:Unknown
- 217: TypePointer UniformConstant 216
- 218(g_tTexcdu4): 217(ptr) Variable UniformConstant
+ 209(g_tTexcdu4): 208(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
-173(flattenTemp): 161(ptr) Variable Function
- 174:8(PS_OUTPUT) FunctionCall 10(@main()
- Store 173(flattenTemp) 174
- 177: 166(ptr) AccessChain 173(flattenTemp) 163
- 178: 7(fvec4) Load 177
- Store 176(Color) 178
- 181: 12(ptr) AccessChain 173(flattenTemp) 168
- 182: 6(float) Load 181
- Store 180(Depth) 182
+164(flattenTemp): 152(ptr) Variable Function
+ 165:8(PS_OUTPUT) FunctionCall 10(@main()
+ Store 164(flattenTemp) 165
+ 168: 157(ptr) AccessChain 164(flattenTemp) 154
+ 169: 7(fvec4) Load 168
+ Store 167(@entryPointOutput.Color) 169
+ 172: 12(ptr) AccessChain 164(flattenTemp) 159
+ 173: 6(float) Load 172
+ Store 171(@entryPointOutput.Depth) 173
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(r10): 12(ptr) Variable Function
- 37(r12): 12(ptr) Variable Function
- 52(r14): 12(ptr) Variable Function
- 67(r30): 12(ptr) Variable Function
- 84(r32): 12(ptr) Variable Function
- 99(r34): 12(ptr) Variable Function
- 114(r60): 12(ptr) Variable Function
- 131(r62): 12(ptr) Variable Function
- 146(r64): 12(ptr) Variable Function
- 162(psout): 161(ptr) Variable Function
+ 36(r12): 12(ptr) Variable Function
+ 50(r14): 12(ptr) Variable Function
+ 64(r30): 12(ptr) Variable Function
+ 80(r32): 12(ptr) Variable Function
+ 94(r34): 12(ptr) Variable Function
+ 108(r60): 12(ptr) Variable Function
+ 124(r62): 12(ptr) Variable Function
+ 138(r64): 12(ptr) Variable Function
+ 153(psout): 152(ptr) Variable Function
17: 14 Load 16(g_tTex1df4a)
21: 18 Load 20(g_sSamp)
- 24: 23 SampledImage 17 21
- 31: 6(float) CompositeExtract 28 0
- 32: 6(float) CompositeExtract 28 1
- 33: 30(fvec3) CompositeConstruct 31 32 29
- 35: 6(float) CompositeExtract 33 2
- 36: 6(float) ImageSampleDrefExplicitLod 24 33 35 Lod 34
- Store 13(r10) 36
- 42: 39 Load 41(g_tTex1di4a)
- 43: 18 Load 20(g_sSamp)
- 46: 45 SampledImage 42 43
- 47: 6(float) CompositeExtract 28 0
- 48: 6(float) CompositeExtract 28 1
- 49: 30(fvec3) CompositeConstruct 47 48 29
- 50: 6(float) CompositeExtract 49 2
- 51: 6(float) ImageSampleDrefExplicitLod 46 49 50 Lod 34
- Store 37(r12) 51
- 57: 54 Load 56(g_tTex1du4a)
- 58: 18 Load 20(g_sSamp)
- 61: 60 SampledImage 57 58
- 62: 6(float) CompositeExtract 28 0
- 63: 6(float) CompositeExtract 28 1
- 64: 30(fvec3) CompositeConstruct 62 63 29
- 65: 6(float) CompositeExtract 64 2
- 66: 6(float) ImageSampleDrefExplicitLod 61 64 65 Lod 34
- Store 52(r14) 66
- 71: 68 Load 70(g_tTex2df4a)
- 72: 18 Load 20(g_sSamp)
- 75: 74 SampledImage 71 72
- 78: 6(float) CompositeExtract 77 0
- 79: 6(float) CompositeExtract 77 1
- 80: 6(float) CompositeExtract 77 2
- 81: 7(fvec4) CompositeConstruct 78 79 80 29
- 82: 6(float) CompositeExtract 81 3
- 83: 6(float) ImageSampleDrefExplicitLod 75 81 82 Lod 34
- Store 67(r30) 83
- 88: 85 Load 87(g_tTex2di4a)
- 89: 18 Load 20(g_sSamp)
- 92: 91 SampledImage 88 89
- 93: 6(float) CompositeExtract 77 0
- 94: 6(float) CompositeExtract 77 1
- 95: 6(float) CompositeExtract 77 2
- 96: 7(fvec4) CompositeConstruct 93 94 95 29
- 97: 6(float) CompositeExtract 96 3
- 98: 6(float) ImageSampleDrefExplicitLod 92 96 97 Lod 34
- Store 84(r32) 98
- 103: 100 Load 102(g_tTex2du4a)
- 104: 18 Load 20(g_sSamp)
- 107: 106 SampledImage 103 104
- 108: 6(float) CompositeExtract 77 0
- 109: 6(float) CompositeExtract 77 1
- 110: 6(float) CompositeExtract 77 2
- 111: 7(fvec4) CompositeConstruct 108 109 110 29
- 112: 6(float) CompositeExtract 111 3
- 113: 6(float) ImageSampleDrefExplicitLod 107 111 112 Lod 34
- Store 99(r34) 113
- 118: 115 Load 117(g_tTexcdf4a)
- 119: 18 Load 20(g_sSamp)
- 122: 121 SampledImage 118 119
- 125: 6(float) CompositeExtract 124 0
- 126: 6(float) CompositeExtract 124 1
- 127: 6(float) CompositeExtract 124 2
- 128: 6(float) CompositeExtract 124 3
- 129: 7(fvec4) CompositeConstruct 125 126 127 128
- 130: 6(float) ImageSampleDrefExplicitLod 122 129 29 Lod 29
- Store 114(r60) 130
- 135: 132 Load 134(g_tTexcdi4a)
- 136: 18 Load 20(g_sSamp)
- 139: 138 SampledImage 135 136
- 140: 6(float) CompositeExtract 124 0
- 141: 6(float) CompositeExtract 124 1
- 142: 6(float) CompositeExtract 124 2
- 143: 6(float) CompositeExtract 124 3
- 144: 7(fvec4) CompositeConstruct 140 141 142 143
- 145: 6(float) ImageSampleDrefExplicitLod 139 144 29 Lod 29
- Store 131(r62) 145
- 150: 147 Load 149(g_tTexcdu4a)
- 151: 18 Load 20(g_sSamp)
- 154: 153 SampledImage 150 151
- 155: 6(float) CompositeExtract 124 0
- 156: 6(float) CompositeExtract 124 1
- 157: 6(float) CompositeExtract 124 2
- 158: 6(float) CompositeExtract 124 3
- 159: 7(fvec4) CompositeConstruct 155 156 157 158
- 160: 6(float) ImageSampleDrefExplicitLod 154 159 29 Lod 29
- Store 146(r64) 160
- 167: 166(ptr) AccessChain 162(psout) 163
- Store 167 165
- 169: 12(ptr) AccessChain 162(psout) 168
- Store 169 164
- 170:8(PS_OUTPUT) Load 162(psout)
- ReturnValue 170
+ 23: 22 SampledImage 17 21
+ 30: 6(float) CompositeExtract 27 0
+ 31: 6(float) CompositeExtract 27 1
+ 32: 29(fvec3) CompositeConstruct 30 31 28
+ 34: 6(float) CompositeExtract 32 2
+ 35: 6(float) ImageSampleDrefExplicitLod 23 32 34 Lod 33
+ Store 13(r10) 35
+ 41: 38 Load 40(g_tTex1di4a)
+ 42: 18 Load 20(g_sSamp)
+ 44: 43 SampledImage 41 42
+ 45: 6(float) CompositeExtract 27 0
+ 46: 6(float) CompositeExtract 27 1
+ 47: 29(fvec3) CompositeConstruct 45 46 28
+ 48: 6(float) CompositeExtract 47 2
+ 49: 6(float) ImageSampleDrefExplicitLod 44 47 48 Lod 33
+ Store 36(r12) 49
+ 55: 52 Load 54(g_tTex1du4a)
+ 56: 18 Load 20(g_sSamp)
+ 58: 57 SampledImage 55 56
+ 59: 6(float) CompositeExtract 27 0
+ 60: 6(float) CompositeExtract 27 1
+ 61: 29(fvec3) CompositeConstruct 59 60 28
+ 62: 6(float) CompositeExtract 61 2
+ 63: 6(float) ImageSampleDrefExplicitLod 58 61 62 Lod 33
+ Store 50(r14) 63
+ 68: 65 Load 67(g_tTex2df4a)
+ 69: 18 Load 20(g_sSamp)
+ 71: 70 SampledImage 68 69
+ 74: 6(float) CompositeExtract 73 0
+ 75: 6(float) CompositeExtract 73 1
+ 76: 6(float) CompositeExtract 73 2
+ 77: 7(fvec4) CompositeConstruct 74 75 76 28
+ 78: 6(float) CompositeExtract 77 3
+ 79: 6(float) ImageSampleDrefExplicitLod 71 77 78 Lod 33
+ Store 64(r30) 79
+ 84: 81 Load 83(g_tTex2di4a)
+ 85: 18 Load 20(g_sSamp)
+ 87: 86 SampledImage 84 85
+ 88: 6(float) CompositeExtract 73 0
+ 89: 6(float) CompositeExtract 73 1
+ 90: 6(float) CompositeExtract 73 2
+ 91: 7(fvec4) CompositeConstruct 88 89 90 28
+ 92: 6(float) CompositeExtract 91 3
+ 93: 6(float) ImageSampleDrefExplicitLod 87 91 92 Lod 33
+ Store 80(r32) 93
+ 98: 95 Load 97(g_tTex2du4a)
+ 99: 18 Load 20(g_sSamp)
+ 101: 100 SampledImage 98 99
+ 102: 6(float) CompositeExtract 73 0
+ 103: 6(float) CompositeExtract 73 1
+ 104: 6(float) CompositeExtract 73 2
+ 105: 7(fvec4) CompositeConstruct 102 103 104 28
+ 106: 6(float) CompositeExtract 105 3
+ 107: 6(float) ImageSampleDrefExplicitLod 101 105 106 Lod 33
+ Store 94(r34) 107
+ 112: 109 Load 111(g_tTexcdf4a)
+ 113: 18 Load 20(g_sSamp)
+ 115: 114 SampledImage 112 113
+ 118: 6(float) CompositeExtract 117 0
+ 119: 6(float) CompositeExtract 117 1
+ 120: 6(float) CompositeExtract 117 2
+ 121: 6(float) CompositeExtract 117 3
+ 122: 7(fvec4) CompositeConstruct 118 119 120 121
+ 123: 6(float) ImageSampleDrefExplicitLod 115 122 28 Lod 33
+ Store 108(r60) 123
+ 128: 125 Load 127(g_tTexcdi4a)
+ 129: 18 Load 20(g_sSamp)
+ 131: 130 SampledImage 128 129
+ 132: 6(float) CompositeExtract 117 0
+ 133: 6(float) CompositeExtract 117 1
+ 134: 6(float) CompositeExtract 117 2
+ 135: 6(float) CompositeExtract 117 3
+ 136: 7(fvec4) CompositeConstruct 132 133 134 135
+ 137: 6(float) ImageSampleDrefExplicitLod 131 136 28 Lod 33
+ Store 124(r62) 137
+ 142: 139 Load 141(g_tTexcdu4a)
+ 143: 18 Load 20(g_sSamp)
+ 145: 144 SampledImage 142 143
+ 146: 6(float) CompositeExtract 117 0
+ 147: 6(float) CompositeExtract 117 1
+ 148: 6(float) CompositeExtract 117 2
+ 149: 6(float) CompositeExtract 117 3
+ 150: 7(fvec4) CompositeConstruct 146 147 148 149
+ 151: 6(float) ImageSampleDrefExplicitLod 145 150 28 Lod 33
+ Store 138(r64) 151
+ 158: 157(ptr) AccessChain 153(psout) 154
+ Store 158 156
+ 160: 12(ptr) AccessChain 153(psout) 159
+ Store 160 155
+ 161:8(PS_OUTPUT) Load 153(psout)
+ ReturnValue 161
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
index 1fcc001e2b1..278aad5952a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplecmplevelzero.basic.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
0:42 'r00' ( temp float)
0:42 textureLod ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DShadow)
-0:42 'g_tTex1df4' (layout( binding=0) uniform texture1D)
+0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec2 ( temp 2-component vector of float)
0:42 Constant:
@@ -24,7 +24,7 @@ gl_FragCoord origin is upper left
0:43 'r02' ( temp float)
0:43 textureLod ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DShadow)
-0:43 'g_tTex1di4' ( uniform itexture1D)
+0:43 'g_tTex1di4' ( uniform itexture1DShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec2 ( temp 2-component vector of float)
0:43 Constant:
@@ -38,7 +38,7 @@ gl_FragCoord origin is upper left
0:44 'r04' ( temp float)
0:44 textureLod ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DShadow)
-0:44 'g_tTex1du4' ( uniform utexture1D)
+0:44 'g_tTex1du4' ( uniform utexture1DShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec2 ( temp 2-component vector of float)
0:44 Constant:
@@ -52,7 +52,7 @@ gl_FragCoord origin is upper left
0:47 'r20' ( temp float)
0:47 textureLod ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DShadow)
-0:47 'g_tTex2df4' ( uniform texture2D)
+0:47 'g_tTex2df4' ( uniform texture2DShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -67,7 +67,7 @@ gl_FragCoord origin is upper left
0:48 'r22' ( temp float)
0:48 textureLod ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DShadow)
-0:48 'g_tTex2di4' ( uniform itexture2D)
+0:48 'g_tTex2di4' ( uniform itexture2DShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -82,7 +82,7 @@ gl_FragCoord origin is upper left
0:49 'r24' ( temp float)
0:49 textureLod ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DShadow)
-0:49 'g_tTex2du4' ( uniform utexture2D)
+0:49 'g_tTex2du4' ( uniform utexture2DShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -97,7 +97,7 @@ gl_FragCoord origin is upper left
0:53 'r50' ( temp float)
0:53 textureLod ( temp float)
0:53 Construct combined texture-sampler ( temp samplerCubeShadow)
-0:53 'g_tTexcdf4' ( uniform textureCube)
+0:53 'g_tTexcdf4' ( uniform textureCubeShadow)
0:53 'g_sSamp' (layout( binding=0) uniform sampler)
0:53 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -113,7 +113,7 @@ gl_FragCoord origin is upper left
0:54 'r52' ( temp float)
0:54 textureLod ( temp float)
0:54 Construct combined texture-sampler ( temp isamplerCubeShadow)
-0:54 'g_tTexcdi4' ( uniform itextureCube)
+0:54 'g_tTexcdi4' ( uniform itextureCubeShadow)
0:54 'g_sSamp' (layout( binding=0) uniform sampler)
0:54 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -129,7 +129,7 @@ gl_FragCoord origin is upper left
0:55 'r54' ( temp float)
0:55 textureLod ( temp float)
0:55 Construct combined texture-sampler ( temp usamplerCubeShadow)
-0:55 'g_tTexcdu4' ( uniform utextureCube)
+0:55 'g_tTexcdu4' ( uniform utextureCubeShadow)
0:55 'g_sSamp' (layout( binding=0) uniform sampler)
0:55 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -167,31 +167,31 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 1 (const int)
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
-0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:? 'g_tTex1di4' ( uniform itexture1D)
-0:? 'g_tTex1du4' ( uniform utexture1D)
-0:? 'g_tTex2df4' ( uniform texture2D)
-0:? 'g_tTex2di4' ( uniform itexture2D)
-0:? 'g_tTex2du4' ( uniform utexture2D)
+0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
+0:? 'g_tTex1di4' ( uniform itexture1DShadow)
+0:? 'g_tTex1du4' ( uniform utexture1DShadow)
+0:? 'g_tTex2df4' ( uniform texture2DShadow)
+0:? 'g_tTex2di4' ( uniform itexture2DShadow)
+0:? 'g_tTex2du4' ( uniform utexture2DShadow)
0:? 'g_tTex3df4' ( uniform texture3D)
0:? 'g_tTex3di4' ( uniform itexture3D)
0:? 'g_tTex3du4' ( uniform utexture3D)
-0:? 'g_tTexcdf4' ( uniform textureCube)
-0:? 'g_tTexcdi4' ( uniform itextureCube)
-0:? 'g_tTexcdu4' ( uniform utextureCube)
+0:? 'g_tTexcdf4' ( uniform textureCubeShadow)
+0:? 'g_tTexcdi4' ( uniform itextureCubeShadow)
+0:? 'g_tTexcdu4' ( uniform utextureCubeShadow)
0:? 'g_tTex1df4a' ( uniform texture1DArray)
0:? 'g_tTex1di4a' ( uniform itexture1DArray)
0:? 'g_tTex1du4a' ( uniform utexture1DArray)
@@ -201,14 +201,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -219,7 +219,7 @@ gl_FragCoord origin is upper left
0:42 'r00' ( temp float)
0:42 textureLod ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DShadow)
-0:42 'g_tTex1df4' (layout( binding=0) uniform texture1D)
+0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec2 ( temp 2-component vector of float)
0:42 Constant:
@@ -233,7 +233,7 @@ gl_FragCoord origin is upper left
0:43 'r02' ( temp float)
0:43 textureLod ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DShadow)
-0:43 'g_tTex1di4' ( uniform itexture1D)
+0:43 'g_tTex1di4' ( uniform itexture1DShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec2 ( temp 2-component vector of float)
0:43 Constant:
@@ -247,7 +247,7 @@ gl_FragCoord origin is upper left
0:44 'r04' ( temp float)
0:44 textureLod ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DShadow)
-0:44 'g_tTex1du4' ( uniform utexture1D)
+0:44 'g_tTex1du4' ( uniform utexture1DShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec2 ( temp 2-component vector of float)
0:44 Constant:
@@ -261,7 +261,7 @@ gl_FragCoord origin is upper left
0:47 'r20' ( temp float)
0:47 textureLod ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DShadow)
-0:47 'g_tTex2df4' ( uniform texture2D)
+0:47 'g_tTex2df4' ( uniform texture2DShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -276,7 +276,7 @@ gl_FragCoord origin is upper left
0:48 'r22' ( temp float)
0:48 textureLod ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DShadow)
-0:48 'g_tTex2di4' ( uniform itexture2D)
+0:48 'g_tTex2di4' ( uniform itexture2DShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -291,7 +291,7 @@ gl_FragCoord origin is upper left
0:49 'r24' ( temp float)
0:49 textureLod ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DShadow)
-0:49 'g_tTex2du4' ( uniform utexture2D)
+0:49 'g_tTex2du4' ( uniform utexture2DShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -306,7 +306,7 @@ gl_FragCoord origin is upper left
0:53 'r50' ( temp float)
0:53 textureLod ( temp float)
0:53 Construct combined texture-sampler ( temp samplerCubeShadow)
-0:53 'g_tTexcdf4' ( uniform textureCube)
+0:53 'g_tTexcdf4' ( uniform textureCubeShadow)
0:53 'g_sSamp' (layout( binding=0) uniform sampler)
0:53 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -322,7 +322,7 @@ gl_FragCoord origin is upper left
0:54 'r52' ( temp float)
0:54 textureLod ( temp float)
0:54 Construct combined texture-sampler ( temp isamplerCubeShadow)
-0:54 'g_tTexcdi4' ( uniform itextureCube)
+0:54 'g_tTexcdi4' ( uniform itextureCubeShadow)
0:54 'g_sSamp' (layout( binding=0) uniform sampler)
0:54 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -338,7 +338,7 @@ gl_FragCoord origin is upper left
0:55 'r54' ( temp float)
0:55 textureLod ( temp float)
0:55 Construct combined texture-sampler ( temp usamplerCubeShadow)
-0:55 'g_tTexcdu4' ( uniform utextureCube)
+0:55 'g_tTexcdu4' ( uniform utextureCubeShadow)
0:55 'g_sSamp' (layout( binding=0) uniform sampler)
0:55 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -376,31 +376,31 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 1 (const int)
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
-0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:? 'g_tTex1di4' ( uniform itexture1D)
-0:? 'g_tTex1du4' ( uniform utexture1D)
-0:? 'g_tTex2df4' ( uniform texture2D)
-0:? 'g_tTex2di4' ( uniform itexture2D)
-0:? 'g_tTex2du4' ( uniform utexture2D)
+0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
+0:? 'g_tTex1di4' ( uniform itexture1DShadow)
+0:? 'g_tTex1du4' ( uniform utexture1DShadow)
+0:? 'g_tTex2df4' ( uniform texture2DShadow)
+0:? 'g_tTex2di4' ( uniform itexture2DShadow)
+0:? 'g_tTex2du4' ( uniform utexture2DShadow)
0:? 'g_tTex3df4' ( uniform texture3D)
0:? 'g_tTex3di4' ( uniform itexture3D)
0:? 'g_tTex3du4' ( uniform utexture3D)
-0:? 'g_tTexcdf4' ( uniform textureCube)
-0:? 'g_tTexcdi4' ( uniform itextureCube)
-0:? 'g_tTexcdu4' ( uniform utextureCube)
+0:? 'g_tTexcdf4' ( uniform textureCubeShadow)
+0:? 'g_tTexcdi4' ( uniform itextureCubeShadow)
+0:? 'g_tTexcdu4' ( uniform utextureCubeShadow)
0:? 'g_tTex1df4a' ( uniform texture1DArray)
0:? 'g_tTex1di4a' ( uniform itexture1DArray)
0:? 'g_tTex1du4a' ( uniform utexture1DArray)
@@ -410,20 +410,21 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 208
+// Generated by (magic number): 80002
+// Id's are bound by 199
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 165 169
+ EntryPoint Fragment 4 "main" 156 160
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -432,64 +433,64 @@ gl_FragCoord origin is upper left
Name 13 "r00"
Name 16 "g_tTex1df4"
Name 20 "g_sSamp"
- Name 32 "r02"
- Name 36 "g_tTex1di4"
- Name 45 "r04"
- Name 49 "g_tTex1du4"
- Name 58 "r20"
- Name 61 "g_tTex2df4"
- Name 75 "r22"
- Name 78 "g_tTex2di4"
- Name 89 "r24"
- Name 92 "g_tTex2du4"
- Name 103 "r50"
- Name 106 "g_tTexcdf4"
- Name 120 "r52"
- Name 123 "g_tTexcdi4"
- Name 135 "r54"
- Name 138 "g_tTexcdu4"
- Name 151 "psout"
- Name 162 "flattenTemp"
- Name 165 "Color"
- Name 169 "Depth"
- Name 174 "g_tTex3df4"
- Name 177 "g_tTex3di4"
- Name 180 "g_tTex3du4"
- Name 183 "g_tTex1df4a"
- Name 186 "g_tTex1di4a"
- Name 189 "g_tTex1du4a"
- Name 192 "g_tTex2df4a"
- Name 195 "g_tTex2di4a"
- Name 198 "g_tTex2du4a"
- Name 201 "g_tTexcdf4a"
- Name 204 "g_tTexcdi4a"
- Name 207 "g_tTexcdu4a"
+ Name 31 "r02"
+ Name 35 "g_tTex1di4"
+ Name 43 "r04"
+ Name 47 "g_tTex1du4"
+ Name 55 "r20"
+ Name 58 "g_tTex2df4"
+ Name 71 "r22"
+ Name 74 "g_tTex2di4"
+ Name 84 "r24"
+ Name 87 "g_tTex2du4"
+ Name 97 "r50"
+ Name 100 "g_tTexcdf4"
+ Name 113 "r52"
+ Name 116 "g_tTexcdi4"
+ Name 127 "r54"
+ Name 130 "g_tTexcdu4"
+ Name 142 "psout"
+ Name 153 "flattenTemp"
+ Name 156 "@entryPointOutput.Color"
+ Name 160 "@entryPointOutput.Depth"
+ Name 165 "g_tTex3df4"
+ Name 168 "g_tTex3di4"
+ Name 171 "g_tTex3du4"
+ Name 174 "g_tTex1df4a"
+ Name 177 "g_tTex1di4a"
+ Name 180 "g_tTex1du4a"
+ Name 183 "g_tTex2df4a"
+ Name 186 "g_tTex2di4a"
+ Name 189 "g_tTex2du4a"
+ Name 192 "g_tTexcdf4a"
+ Name 195 "g_tTexcdi4a"
+ Name 198 "g_tTexcdu4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
- Decorate 36(g_tTex1di4) DescriptorSet 0
- Decorate 49(g_tTex1du4) DescriptorSet 0
- Decorate 61(g_tTex2df4) DescriptorSet 0
- Decorate 78(g_tTex2di4) DescriptorSet 0
- Decorate 92(g_tTex2du4) DescriptorSet 0
- Decorate 106(g_tTexcdf4) DescriptorSet 0
- Decorate 123(g_tTexcdi4) DescriptorSet 0
- Decorate 138(g_tTexcdu4) DescriptorSet 0
- Decorate 165(Color) Location 0
- Decorate 169(Depth) BuiltIn FragDepth
- Decorate 174(g_tTex3df4) DescriptorSet 0
- Decorate 177(g_tTex3di4) DescriptorSet 0
- Decorate 180(g_tTex3du4) DescriptorSet 0
- Decorate 183(g_tTex1df4a) DescriptorSet 0
- Decorate 186(g_tTex1di4a) DescriptorSet 0
- Decorate 189(g_tTex1du4a) DescriptorSet 0
- Decorate 192(g_tTex2df4a) DescriptorSet 0
- Decorate 195(g_tTex2di4a) DescriptorSet 0
- Decorate 198(g_tTex2du4a) DescriptorSet 0
- Decorate 201(g_tTexcdf4a) DescriptorSet 0
- Decorate 204(g_tTexcdi4a) DescriptorSet 0
- Decorate 207(g_tTexcdu4a) DescriptorSet 0
+ Decorate 35(g_tTex1di4) DescriptorSet 0
+ Decorate 47(g_tTex1du4) DescriptorSet 0
+ Decorate 58(g_tTex2df4) DescriptorSet 0
+ Decorate 74(g_tTex2di4) DescriptorSet 0
+ Decorate 87(g_tTex2du4) DescriptorSet 0
+ Decorate 100(g_tTexcdf4) DescriptorSet 0
+ Decorate 116(g_tTexcdi4) DescriptorSet 0
+ Decorate 130(g_tTexcdu4) DescriptorSet 0
+ Decorate 156(@entryPointOutput.Color) Location 0
+ Decorate 160(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 165(g_tTex3df4) DescriptorSet 0
+ Decorate 168(g_tTex3di4) DescriptorSet 0
+ Decorate 171(g_tTex3du4) DescriptorSet 0
+ Decorate 174(g_tTex1df4a) DescriptorSet 0
+ Decorate 177(g_tTex1di4a) DescriptorSet 0
+ Decorate 180(g_tTex1du4a) DescriptorSet 0
+ Decorate 183(g_tTex2df4a) DescriptorSet 0
+ Decorate 186(g_tTex2di4a) DescriptorSet 0
+ Decorate 189(g_tTex2du4a) DescriptorSet 0
+ Decorate 192(g_tTexcdf4a) DescriptorSet 0
+ Decorate 195(g_tTexcdi4a) DescriptorSet 0
+ Decorate 198(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -497,218 +498,209 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 6(float)
- 14: TypeImage 6(float) 1D sampled format:Unknown
+ 14: TypeImage 6(float) 1D depth sampled format:Unknown
15: TypePointer UniformConstant 14
16(g_tTex1df4): 15(ptr) Variable UniformConstant
18: TypeSampler
19: TypePointer UniformConstant 18
20(g_sSamp): 19(ptr) Variable UniformConstant
- 22: TypeImage 6(float) 1D depth sampled format:Unknown
- 23: TypeSampledImage 22
- 25: 6(float) Constant 1036831949
- 26: 6(float) Constant 1061158912
- 27: TypeVector 6(float) 2
- 29: 6(float) Constant 0
- 33: TypeInt 32 1
- 34: TypeImage 33(int) 1D sampled format:Unknown
- 35: TypePointer UniformConstant 34
- 36(g_tTex1di4): 35(ptr) Variable UniformConstant
- 39: TypeImage 33(int) 1D depth sampled format:Unknown
- 40: TypeSampledImage 39
- 46: TypeInt 32 0
- 47: TypeImage 46(int) 1D sampled format:Unknown
- 48: TypePointer UniformConstant 47
- 49(g_tTex1du4): 48(ptr) Variable UniformConstant
- 52: TypeImage 46(int) 1D depth sampled format:Unknown
- 53: TypeSampledImage 52
- 59: TypeImage 6(float) 2D sampled format:Unknown
- 60: TypePointer UniformConstant 59
- 61(g_tTex2df4): 60(ptr) Variable UniformConstant
- 64: TypeImage 6(float) 2D depth sampled format:Unknown
- 65: TypeSampledImage 64
- 67: 6(float) Constant 1045220557
- 68: 27(fvec2) ConstantComposite 25 67
- 69: TypeVector 6(float) 3
- 76: TypeImage 33(int) 2D sampled format:Unknown
- 77: TypePointer UniformConstant 76
- 78(g_tTex2di4): 77(ptr) Variable UniformConstant
- 81: TypeImage 33(int) 2D depth sampled format:Unknown
- 82: TypeSampledImage 81
- 90: TypeImage 46(int) 2D sampled format:Unknown
- 91: TypePointer UniformConstant 90
- 92(g_tTex2du4): 91(ptr) Variable UniformConstant
- 95: TypeImage 46(int) 2D depth sampled format:Unknown
- 96: TypeSampledImage 95
- 104: TypeImage 6(float) Cube sampled format:Unknown
- 105: TypePointer UniformConstant 104
- 106(g_tTexcdf4): 105(ptr) Variable UniformConstant
- 109: TypeImage 6(float) Cube depth sampled format:Unknown
- 110: TypeSampledImage 109
- 112: 6(float) Constant 1050253722
- 113: 69(fvec3) ConstantComposite 25 67 112
- 121: TypeImage 33(int) Cube sampled format:Unknown
- 122: TypePointer UniformConstant 121
- 123(g_tTexcdi4): 122(ptr) Variable UniformConstant
- 126: TypeImage 33(int) Cube depth sampled format:Unknown
- 127: TypeSampledImage 126
- 136: TypeImage 46(int) Cube sampled format:Unknown
- 137: TypePointer UniformConstant 136
- 138(g_tTexcdu4): 137(ptr) Variable UniformConstant
- 141: TypeImage 46(int) Cube depth sampled format:Unknown
- 142: TypeSampledImage 141
- 150: TypePointer Function 8(PS_OUTPUT)
- 152: 33(int) Constant 0
- 153: 6(float) Constant 1065353216
- 154: 7(fvec4) ConstantComposite 153 153 153 153
- 155: TypePointer Function 7(fvec4)
- 157: 33(int) Constant 1
- 164: TypePointer Output 7(fvec4)
- 165(Color): 164(ptr) Variable Output
- 168: TypePointer Output 6(float)
- 169(Depth): 168(ptr) Variable Output
- 172: TypeImage 6(float) 3D sampled format:Unknown
+ 22: TypeSampledImage 14
+ 24: 6(float) Constant 1036831949
+ 25: 6(float) Constant 1061158912
+ 26: TypeVector 6(float) 2
+ 28: 6(float) Constant 0
+ 32: TypeInt 32 1
+ 33: TypeImage 32(int) 1D depth sampled format:Unknown
+ 34: TypePointer UniformConstant 33
+ 35(g_tTex1di4): 34(ptr) Variable UniformConstant
+ 38: TypeSampledImage 33
+ 44: TypeInt 32 0
+ 45: TypeImage 44(int) 1D depth sampled format:Unknown
+ 46: TypePointer UniformConstant 45
+ 47(g_tTex1du4): 46(ptr) Variable UniformConstant
+ 50: TypeSampledImage 45
+ 56: TypeImage 6(float) 2D depth sampled format:Unknown
+ 57: TypePointer UniformConstant 56
+ 58(g_tTex2df4): 57(ptr) Variable UniformConstant
+ 61: TypeSampledImage 56
+ 63: 6(float) Constant 1045220557
+ 64: 26(fvec2) ConstantComposite 24 63
+ 65: TypeVector 6(float) 3
+ 72: TypeImage 32(int) 2D depth sampled format:Unknown
+ 73: TypePointer UniformConstant 72
+ 74(g_tTex2di4): 73(ptr) Variable UniformConstant
+ 77: TypeSampledImage 72
+ 85: TypeImage 44(int) 2D depth sampled format:Unknown
+ 86: TypePointer UniformConstant 85
+ 87(g_tTex2du4): 86(ptr) Variable UniformConstant
+ 90: TypeSampledImage 85
+ 98: TypeImage 6(float) Cube depth sampled format:Unknown
+ 99: TypePointer UniformConstant 98
+ 100(g_tTexcdf4): 99(ptr) Variable UniformConstant
+ 103: TypeSampledImage 98
+ 105: 6(float) Constant 1050253722
+ 106: 65(fvec3) ConstantComposite 24 63 105
+ 114: TypeImage 32(int) Cube depth sampled format:Unknown
+ 115: TypePointer UniformConstant 114
+ 116(g_tTexcdi4): 115(ptr) Variable UniformConstant
+ 119: TypeSampledImage 114
+ 128: TypeImage 44(int) Cube depth sampled format:Unknown
+ 129: TypePointer UniformConstant 128
+ 130(g_tTexcdu4): 129(ptr) Variable UniformConstant
+ 133: TypeSampledImage 128
+ 141: TypePointer Function 8(PS_OUTPUT)
+ 143: 32(int) Constant 0
+ 144: 6(float) Constant 1065353216
+ 145: 7(fvec4) ConstantComposite 144 144 144 144
+ 146: TypePointer Function 7(fvec4)
+ 148: 32(int) Constant 1
+ 155: TypePointer Output 7(fvec4)
+156(@entryPointOutput.Color): 155(ptr) Variable Output
+ 159: TypePointer Output 6(float)
+160(@entryPointOutput.Depth): 159(ptr) Variable Output
+ 163: TypeImage 6(float) 3D sampled format:Unknown
+ 164: TypePointer UniformConstant 163
+ 165(g_tTex3df4): 164(ptr) Variable UniformConstant
+ 166: TypeImage 32(int) 3D sampled format:Unknown
+ 167: TypePointer UniformConstant 166
+ 168(g_tTex3di4): 167(ptr) Variable UniformConstant
+ 169: TypeImage 44(int) 3D sampled format:Unknown
+ 170: TypePointer UniformConstant 169
+ 171(g_tTex3du4): 170(ptr) Variable UniformConstant
+ 172: TypeImage 6(float) 1D array sampled format:Unknown
173: TypePointer UniformConstant 172
- 174(g_tTex3df4): 173(ptr) Variable UniformConstant
- 175: TypeImage 33(int) 3D sampled format:Unknown
+174(g_tTex1df4a): 173(ptr) Variable UniformConstant
+ 175: TypeImage 32(int) 1D array sampled format:Unknown
176: TypePointer UniformConstant 175
- 177(g_tTex3di4): 176(ptr) Variable UniformConstant
- 178: TypeImage 46(int) 3D sampled format:Unknown
+177(g_tTex1di4a): 176(ptr) Variable UniformConstant
+ 178: TypeImage 44(int) 1D array sampled format:Unknown
179: TypePointer UniformConstant 178
- 180(g_tTex3du4): 179(ptr) Variable UniformConstant
- 181: TypeImage 6(float) 1D array sampled format:Unknown
+180(g_tTex1du4a): 179(ptr) Variable UniformConstant
+ 181: TypeImage 6(float) 2D array sampled format:Unknown
182: TypePointer UniformConstant 181
-183(g_tTex1df4a): 182(ptr) Variable UniformConstant
- 184: TypeImage 33(int) 1D array sampled format:Unknown
+183(g_tTex2df4a): 182(ptr) Variable UniformConstant
+ 184: TypeImage 32(int) 2D array sampled format:Unknown
185: TypePointer UniformConstant 184
-186(g_tTex1di4a): 185(ptr) Variable UniformConstant
- 187: TypeImage 46(int) 1D array sampled format:Unknown
+186(g_tTex2di4a): 185(ptr) Variable UniformConstant
+ 187: TypeImage 44(int) 2D array sampled format:Unknown
188: TypePointer UniformConstant 187
-189(g_tTex1du4a): 188(ptr) Variable UniformConstant
- 190: TypeImage 6(float) 2D array sampled format:Unknown
+189(g_tTex2du4a): 188(ptr) Variable UniformConstant
+ 190: TypeImage 6(float) Cube array sampled format:Unknown
191: TypePointer UniformConstant 190
-192(g_tTex2df4a): 191(ptr) Variable UniformConstant
- 193: TypeImage 33(int) 2D array sampled format:Unknown
+192(g_tTexcdf4a): 191(ptr) Variable UniformConstant
+ 193: TypeImage 32(int) Cube array sampled format:Unknown
194: TypePointer UniformConstant 193
-195(g_tTex2di4a): 194(ptr) Variable UniformConstant
- 196: TypeImage 46(int) 2D array sampled format:Unknown
+195(g_tTexcdi4a): 194(ptr) Variable UniformConstant
+ 196: TypeImage 44(int) Cube array sampled format:Unknown
197: TypePointer UniformConstant 196
-198(g_tTex2du4a): 197(ptr) Variable UniformConstant
- 199: TypeImage 6(float) Cube array sampled format:Unknown
- 200: TypePointer UniformConstant 199
-201(g_tTexcdf4a): 200(ptr) Variable UniformConstant
- 202: TypeImage 33(int) Cube array sampled format:Unknown
- 203: TypePointer UniformConstant 202
-204(g_tTexcdi4a): 203(ptr) Variable UniformConstant
- 205: TypeImage 46(int) Cube array sampled format:Unknown
- 206: TypePointer UniformConstant 205
-207(g_tTexcdu4a): 206(ptr) Variable UniformConstant
+198(g_tTexcdu4a): 197(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
-162(flattenTemp): 150(ptr) Variable Function
- 163:8(PS_OUTPUT) FunctionCall 10(@main()
- Store 162(flattenTemp) 163
- 166: 155(ptr) AccessChain 162(flattenTemp) 152
- 167: 7(fvec4) Load 166
- Store 165(Color) 167
- 170: 12(ptr) AccessChain 162(flattenTemp) 157
- 171: 6(float) Load 170
- Store 169(Depth) 171
+153(flattenTemp): 141(ptr) Variable Function
+ 154:8(PS_OUTPUT) FunctionCall 10(@main()
+ Store 153(flattenTemp) 154
+ 157: 146(ptr) AccessChain 153(flattenTemp) 143
+ 158: 7(fvec4) Load 157
+ Store 156(@entryPointOutput.Color) 158
+ 161: 12(ptr) AccessChain 153(flattenTemp) 148
+ 162: 6(float) Load 161
+ Store 160(@entryPointOutput.Depth) 162
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(r00): 12(ptr) Variable Function
- 32(r02): 12(ptr) Variable Function
- 45(r04): 12(ptr) Variable Function
- 58(r20): 12(ptr) Variable Function
- 75(r22): 12(ptr) Variable Function
- 89(r24): 12(ptr) Variable Function
- 103(r50): 12(ptr) Variable Function
- 120(r52): 12(ptr) Variable Function
- 135(r54): 12(ptr) Variable Function
- 151(psout): 150(ptr) Variable Function
+ 31(r02): 12(ptr) Variable Function
+ 43(r04): 12(ptr) Variable Function
+ 55(r20): 12(ptr) Variable Function
+ 71(r22): 12(ptr) Variable Function
+ 84(r24): 12(ptr) Variable Function
+ 97(r50): 12(ptr) Variable Function
+ 113(r52): 12(ptr) Variable Function
+ 127(r54): 12(ptr) Variable Function
+ 142(psout): 141(ptr) Variable Function
17: 14 Load 16(g_tTex1df4)
21: 18 Load 20(g_sSamp)
- 24: 23 SampledImage 17 21
- 28: 27(fvec2) CompositeConstruct 25 26
- 30: 6(float) CompositeExtract 28 1
- 31: 6(float) ImageSampleDrefExplicitLod 24 28 30 Lod 29
- Store 13(r00) 31
- 37: 34 Load 36(g_tTex1di4)
- 38: 18 Load 20(g_sSamp)
- 41: 40 SampledImage 37 38
- 42: 27(fvec2) CompositeConstruct 25 26
- 43: 6(float) CompositeExtract 42 1
- 44: 6(float) ImageSampleDrefExplicitLod 41 42 43 Lod 29
- Store 32(r02) 44
- 50: 47 Load 49(g_tTex1du4)
- 51: 18 Load 20(g_sSamp)
- 54: 53 SampledImage 50 51
- 55: 27(fvec2) CompositeConstruct 25 26
- 56: 6(float) CompositeExtract 55 1
- 57: 6(float) ImageSampleDrefExplicitLod 54 55 56 Lod 29
- Store 45(r04) 57
- 62: 59 Load 61(g_tTex2df4)
- 63: 18 Load 20(g_sSamp)
- 66: 65 SampledImage 62 63
- 70: 6(float) CompositeExtract 68 0
- 71: 6(float) CompositeExtract 68 1
- 72: 69(fvec3) CompositeConstruct 70 71 26
- 73: 6(float) CompositeExtract 72 2
- 74: 6(float) ImageSampleDrefExplicitLod 66 72 73 Lod 29
- Store 58(r20) 74
- 79: 76 Load 78(g_tTex2di4)
- 80: 18 Load 20(g_sSamp)
- 83: 82 SampledImage 79 80
- 84: 6(float) CompositeExtract 68 0
- 85: 6(float) CompositeExtract 68 1
- 86: 69(fvec3) CompositeConstruct 84 85 26
- 87: 6(float) CompositeExtract 86 2
- 88: 6(float) ImageSampleDrefExplicitLod 83 86 87 Lod 29
- Store 75(r22) 88
- 93: 90 Load 92(g_tTex2du4)
- 94: 18 Load 20(g_sSamp)
- 97: 96 SampledImage 93 94
- 98: 6(float) CompositeExtract 68 0
- 99: 6(float) CompositeExtract 68 1
- 100: 69(fvec3) CompositeConstruct 98 99 26
- 101: 6(float) CompositeExtract 100 2
- 102: 6(float) ImageSampleDrefExplicitLod 97 100 101 Lod 29
- Store 89(r24) 102
- 107: 104 Load 106(g_tTexcdf4)
- 108: 18 Load 20(g_sSamp)
- 111: 110 SampledImage 107 108
- 114: 6(float) CompositeExtract 113 0
- 115: 6(float) CompositeExtract 113 1
- 116: 6(float) CompositeExtract 113 2
- 117: 7(fvec4) CompositeConstruct 114 115 116 26
- 118: 6(float) CompositeExtract 117 3
- 119: 6(float) ImageSampleDrefExplicitLod 111 117 118 Lod 29
- Store 103(r50) 119
- 124: 121 Load 123(g_tTexcdi4)
- 125: 18 Load 20(g_sSamp)
- 128: 127 SampledImage 124 125
- 129: 6(float) CompositeExtract 113 0
- 130: 6(float) CompositeExtract 113 1
- 131: 6(float) CompositeExtract 113 2
- 132: 7(fvec4) CompositeConstruct 129 130 131 26
- 133: 6(float) CompositeExtract 132 3
- 134: 6(float) ImageSampleDrefExplicitLod 128 132 133 Lod 29
- Store 120(r52) 134
- 139: 136 Load 138(g_tTexcdu4)
- 140: 18 Load 20(g_sSamp)
- 143: 142 SampledImage 139 140
- 144: 6(float) CompositeExtract 113 0
- 145: 6(float) CompositeExtract 113 1
- 146: 6(float) CompositeExtract 113 2
- 147: 7(fvec4) CompositeConstruct 144 145 146 26
- 148: 6(float) CompositeExtract 147 3
- 149: 6(float) ImageSampleDrefExplicitLod 143 147 148 Lod 29
- Store 135(r54) 149
- 156: 155(ptr) AccessChain 151(psout) 152
- Store 156 154
- 158: 12(ptr) AccessChain 151(psout) 157
- Store 158 153
- 159:8(PS_OUTPUT) Load 151(psout)
- ReturnValue 159
+ 23: 22 SampledImage 17 21
+ 27: 26(fvec2) CompositeConstruct 24 25
+ 29: 6(float) CompositeExtract 27 1
+ 30: 6(float) ImageSampleDrefExplicitLod 23 27 29 Lod 28
+ Store 13(r00) 30
+ 36: 33 Load 35(g_tTex1di4)
+ 37: 18 Load 20(g_sSamp)
+ 39: 38 SampledImage 36 37
+ 40: 26(fvec2) CompositeConstruct 24 25
+ 41: 6(float) CompositeExtract 40 1
+ 42: 6(float) ImageSampleDrefExplicitLod 39 40 41 Lod 28
+ Store 31(r02) 42
+ 48: 45 Load 47(g_tTex1du4)
+ 49: 18 Load 20(g_sSamp)
+ 51: 50 SampledImage 48 49
+ 52: 26(fvec2) CompositeConstruct 24 25
+ 53: 6(float) CompositeExtract 52 1
+ 54: 6(float) ImageSampleDrefExplicitLod 51 52 53 Lod 28
+ Store 43(r04) 54
+ 59: 56 Load 58(g_tTex2df4)
+ 60: 18 Load 20(g_sSamp)
+ 62: 61 SampledImage 59 60
+ 66: 6(float) CompositeExtract 64 0
+ 67: 6(float) CompositeExtract 64 1
+ 68: 65(fvec3) CompositeConstruct 66 67 25
+ 69: 6(float) CompositeExtract 68 2
+ 70: 6(float) ImageSampleDrefExplicitLod 62 68 69 Lod 28
+ Store 55(r20) 70
+ 75: 72 Load 74(g_tTex2di4)
+ 76: 18 Load 20(g_sSamp)
+ 78: 77 SampledImage 75 76
+ 79: 6(float) CompositeExtract 64 0
+ 80: 6(float) CompositeExtract 64 1
+ 81: 65(fvec3) CompositeConstruct 79 80 25
+ 82: 6(float) CompositeExtract 81 2
+ 83: 6(float) ImageSampleDrefExplicitLod 78 81 82 Lod 28
+ Store 71(r22) 83
+ 88: 85 Load 87(g_tTex2du4)
+ 89: 18 Load 20(g_sSamp)
+ 91: 90 SampledImage 88 89
+ 92: 6(float) CompositeExtract 64 0
+ 93: 6(float) CompositeExtract 64 1
+ 94: 65(fvec3) CompositeConstruct 92 93 25
+ 95: 6(float) CompositeExtract 94 2
+ 96: 6(float) ImageSampleDrefExplicitLod 91 94 95 Lod 28
+ Store 84(r24) 96
+ 101: 98 Load 100(g_tTexcdf4)
+ 102: 18 Load 20(g_sSamp)
+ 104: 103 SampledImage 101 102
+ 107: 6(float) CompositeExtract 106 0
+ 108: 6(float) CompositeExtract 106 1
+ 109: 6(float) CompositeExtract 106 2
+ 110: 7(fvec4) CompositeConstruct 107 108 109 25
+ 111: 6(float) CompositeExtract 110 3
+ 112: 6(float) ImageSampleDrefExplicitLod 104 110 111 Lod 28
+ Store 97(r50) 112
+ 117: 114 Load 116(g_tTexcdi4)
+ 118: 18 Load 20(g_sSamp)
+ 120: 119 SampledImage 117 118
+ 121: 6(float) CompositeExtract 106 0
+ 122: 6(float) CompositeExtract 106 1
+ 123: 6(float) CompositeExtract 106 2
+ 124: 7(fvec4) CompositeConstruct 121 122 123 25
+ 125: 6(float) CompositeExtract 124 3
+ 126: 6(float) ImageSampleDrefExplicitLod 120 124 125 Lod 28
+ Store 113(r52) 126
+ 131: 128 Load 130(g_tTexcdu4)
+ 132: 18 Load 20(g_sSamp)
+ 134: 133 SampledImage 131 132
+ 135: 6(float) CompositeExtract 106 0
+ 136: 6(float) CompositeExtract 106 1
+ 137: 6(float) CompositeExtract 106 2
+ 138: 7(fvec4) CompositeConstruct 135 136 137 25
+ 139: 6(float) CompositeExtract 138 3
+ 140: 6(float) ImageSampleDrefExplicitLod 134 138 139 Lod 28
+ Store 127(r54) 140
+ 147: 146(ptr) AccessChain 142(psout) 143
+ Store 147 145
+ 149: 12(ptr) AccessChain 142(psout) 148
+ Store 149 144
+ 150:8(PS_OUTPUT) Load 142(psout)
+ ReturnValue 150
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
index 1bd82bebd05..141f1f4b208 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplecmplevelzero.offset.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
0:42 'r01' ( temp float)
0:42 textureLodOffset ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DShadow)
-0:42 'g_tTex1df4' (layout( binding=0) uniform texture1D)
+0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec2 ( temp 2-component vector of float)
0:42 Constant:
@@ -26,7 +26,7 @@ gl_FragCoord origin is upper left
0:43 'r03' ( temp float)
0:43 textureLodOffset ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DShadow)
-0:43 'g_tTex1di4' ( uniform itexture1D)
+0:43 'g_tTex1di4' ( uniform itexture1DShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec2 ( temp 2-component vector of float)
0:43 Constant:
@@ -42,7 +42,7 @@ gl_FragCoord origin is upper left
0:44 'r05' ( temp float)
0:44 textureLodOffset ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DShadow)
-0:44 'g_tTex1du4' ( uniform utexture1D)
+0:44 'g_tTex1du4' ( uniform utexture1DShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec2 ( temp 2-component vector of float)
0:44 Constant:
@@ -58,7 +58,7 @@ gl_FragCoord origin is upper left
0:47 'r21' ( temp float)
0:47 textureLodOffset ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DShadow)
-0:47 'g_tTex2df4' ( uniform texture2D)
+0:47 'g_tTex2df4' ( uniform texture2DShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -76,7 +76,7 @@ gl_FragCoord origin is upper left
0:48 'r23' ( temp float)
0:48 textureLodOffset ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DShadow)
-0:48 'g_tTex2di4' ( uniform itexture2D)
+0:48 'g_tTex2di4' ( uniform itexture2DShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -94,7 +94,7 @@ gl_FragCoord origin is upper left
0:49 'r25' ( temp float)
0:49 textureLodOffset ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DShadow)
-0:49 'g_tTex2du4' ( uniform utexture2D)
+0:49 'g_tTex2du4' ( uniform utexture2DShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -134,25 +134,25 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 1 (const int)
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
-0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:? 'g_tTex1di4' ( uniform itexture1D)
-0:? 'g_tTex1du4' ( uniform utexture1D)
-0:? 'g_tTex2df4' ( uniform texture2D)
-0:? 'g_tTex2di4' ( uniform itexture2D)
-0:? 'g_tTex2du4' ( uniform utexture2D)
+0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
+0:? 'g_tTex1di4' ( uniform itexture1DShadow)
+0:? 'g_tTex1du4' ( uniform utexture1DShadow)
+0:? 'g_tTex2df4' ( uniform texture2DShadow)
+0:? 'g_tTex2di4' ( uniform itexture2DShadow)
+0:? 'g_tTex2du4' ( uniform utexture2DShadow)
0:? 'g_tTex3df4' ( uniform texture3D)
0:? 'g_tTex3di4' ( uniform itexture3D)
0:? 'g_tTex3du4' ( uniform utexture3D)
@@ -168,14 +168,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -186,7 +186,7 @@ gl_FragCoord origin is upper left
0:42 'r01' ( temp float)
0:42 textureLodOffset ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DShadow)
-0:42 'g_tTex1df4' (layout( binding=0) uniform texture1D)
+0:42 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec2 ( temp 2-component vector of float)
0:42 Constant:
@@ -202,7 +202,7 @@ gl_FragCoord origin is upper left
0:43 'r03' ( temp float)
0:43 textureLodOffset ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DShadow)
-0:43 'g_tTex1di4' ( uniform itexture1D)
+0:43 'g_tTex1di4' ( uniform itexture1DShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec2 ( temp 2-component vector of float)
0:43 Constant:
@@ -218,7 +218,7 @@ gl_FragCoord origin is upper left
0:44 'r05' ( temp float)
0:44 textureLodOffset ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DShadow)
-0:44 'g_tTex1du4' ( uniform utexture1D)
+0:44 'g_tTex1du4' ( uniform utexture1DShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec2 ( temp 2-component vector of float)
0:44 Constant:
@@ -234,7 +234,7 @@ gl_FragCoord origin is upper left
0:47 'r21' ( temp float)
0:47 textureLodOffset ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DShadow)
-0:47 'g_tTex2df4' ( uniform texture2D)
+0:47 'g_tTex2df4' ( uniform texture2DShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -252,7 +252,7 @@ gl_FragCoord origin is upper left
0:48 'r23' ( temp float)
0:48 textureLodOffset ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DShadow)
-0:48 'g_tTex2di4' ( uniform itexture2D)
+0:48 'g_tTex2di4' ( uniform itexture2DShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -270,7 +270,7 @@ gl_FragCoord origin is upper left
0:49 'r25' ( temp float)
0:49 textureLodOffset ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DShadow)
-0:49 'g_tTex2du4' ( uniform utexture2D)
+0:49 'g_tTex2du4' ( uniform utexture2DShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -310,25 +310,25 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 1 (const int)
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
-0:? 'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:? 'g_tTex1di4' ( uniform itexture1D)
-0:? 'g_tTex1du4' ( uniform utexture1D)
-0:? 'g_tTex2df4' ( uniform texture2D)
-0:? 'g_tTex2di4' ( uniform itexture2D)
-0:? 'g_tTex2du4' ( uniform utexture2D)
+0:? 'g_tTex1df4' (layout( binding=0) uniform texture1DShadow)
+0:? 'g_tTex1di4' ( uniform itexture1DShadow)
+0:? 'g_tTex1du4' ( uniform utexture1DShadow)
+0:? 'g_tTex2df4' ( uniform texture2DShadow)
+0:? 'g_tTex2di4' ( uniform itexture2DShadow)
+0:? 'g_tTex2du4' ( uniform utexture2DShadow)
0:? 'g_tTex3df4' ( uniform texture3D)
0:? 'g_tTex3di4' ( uniform itexture3D)
0:? 'g_tTex3du4' ( uniform utexture3D)
@@ -344,20 +344,21 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 174
+// Generated by (magic number): 80002
+// Id's are bound by 168
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 122 126
+ EntryPoint Fragment 4 "main" 116 120
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -366,61 +367,61 @@ gl_FragCoord origin is upper left
Name 13 "r01"
Name 16 "g_tTex1df4"
Name 20 "g_sSamp"
- Name 34 "r03"
- Name 37 "g_tTex1di4"
- Name 46 "r05"
- Name 50 "g_tTex1du4"
- Name 59 "r21"
- Name 62 "g_tTex2df4"
- Name 79 "r23"
- Name 82 "g_tTex2di4"
- Name 93 "r25"
- Name 96 "g_tTex2du4"
- Name 108 "psout"
- Name 119 "flattenTemp"
- Name 122 "Color"
- Name 126 "Depth"
- Name 131 "g_tTex3df4"
- Name 134 "g_tTex3di4"
- Name 137 "g_tTex3du4"
- Name 140 "g_tTexcdf4"
- Name 143 "g_tTexcdi4"
- Name 146 "g_tTexcdu4"
- Name 149 "g_tTex1df4a"
- Name 152 "g_tTex1di4a"
- Name 155 "g_tTex1du4a"
- Name 158 "g_tTex2df4a"
- Name 161 "g_tTex2di4a"
- Name 164 "g_tTex2du4a"
- Name 167 "g_tTexcdf4a"
- Name 170 "g_tTexcdi4a"
- Name 173 "g_tTexcdu4a"
+ Name 33 "r03"
+ Name 36 "g_tTex1di4"
+ Name 44 "r05"
+ Name 48 "g_tTex1du4"
+ Name 56 "r21"
+ Name 59 "g_tTex2df4"
+ Name 75 "r23"
+ Name 78 "g_tTex2di4"
+ Name 88 "r25"
+ Name 91 "g_tTex2du4"
+ Name 102 "psout"
+ Name 113 "flattenTemp"
+ Name 116 "@entryPointOutput.Color"
+ Name 120 "@entryPointOutput.Depth"
+ Name 125 "g_tTex3df4"
+ Name 128 "g_tTex3di4"
+ Name 131 "g_tTex3du4"
+ Name 134 "g_tTexcdf4"
+ Name 137 "g_tTexcdi4"
+ Name 140 "g_tTexcdu4"
+ Name 143 "g_tTex1df4a"
+ Name 146 "g_tTex1di4a"
+ Name 149 "g_tTex1du4a"
+ Name 152 "g_tTex2df4a"
+ Name 155 "g_tTex2di4a"
+ Name 158 "g_tTex2du4a"
+ Name 161 "g_tTexcdf4a"
+ Name 164 "g_tTexcdi4a"
+ Name 167 "g_tTexcdu4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
- Decorate 37(g_tTex1di4) DescriptorSet 0
- Decorate 50(g_tTex1du4) DescriptorSet 0
- Decorate 62(g_tTex2df4) DescriptorSet 0
- Decorate 82(g_tTex2di4) DescriptorSet 0
- Decorate 96(g_tTex2du4) DescriptorSet 0
- Decorate 122(Color) Location 0
- Decorate 126(Depth) BuiltIn FragDepth
- Decorate 131(g_tTex3df4) DescriptorSet 0
- Decorate 134(g_tTex3di4) DescriptorSet 0
- Decorate 137(g_tTex3du4) DescriptorSet 0
- Decorate 140(g_tTexcdf4) DescriptorSet 0
- Decorate 143(g_tTexcdi4) DescriptorSet 0
- Decorate 146(g_tTexcdu4) DescriptorSet 0
- Decorate 149(g_tTex1df4a) DescriptorSet 0
- Decorate 152(g_tTex1di4a) DescriptorSet 0
- Decorate 155(g_tTex1du4a) DescriptorSet 0
- Decorate 158(g_tTex2df4a) DescriptorSet 0
- Decorate 161(g_tTex2di4a) DescriptorSet 0
- Decorate 164(g_tTex2du4a) DescriptorSet 0
- Decorate 167(g_tTexcdf4a) DescriptorSet 0
- Decorate 170(g_tTexcdi4a) DescriptorSet 0
- Decorate 173(g_tTexcdu4a) DescriptorSet 0
+ Decorate 36(g_tTex1di4) DescriptorSet 0
+ Decorate 48(g_tTex1du4) DescriptorSet 0
+ Decorate 59(g_tTex2df4) DescriptorSet 0
+ Decorate 78(g_tTex2di4) DescriptorSet 0
+ Decorate 91(g_tTex2du4) DescriptorSet 0
+ Decorate 116(@entryPointOutput.Color) Location 0
+ Decorate 120(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 125(g_tTex3df4) DescriptorSet 0
+ Decorate 128(g_tTex3di4) DescriptorSet 0
+ Decorate 131(g_tTex3du4) DescriptorSet 0
+ Decorate 134(g_tTexcdf4) DescriptorSet 0
+ Decorate 137(g_tTexcdi4) DescriptorSet 0
+ Decorate 140(g_tTexcdu4) DescriptorSet 0
+ Decorate 143(g_tTex1df4a) DescriptorSet 0
+ Decorate 146(g_tTex1di4a) DescriptorSet 0
+ Decorate 149(g_tTex1du4a) DescriptorSet 0
+ Decorate 152(g_tTex2df4a) DescriptorSet 0
+ Decorate 155(g_tTex2di4a) DescriptorSet 0
+ Decorate 158(g_tTex2du4a) DescriptorSet 0
+ Decorate 161(g_tTexcdf4a) DescriptorSet 0
+ Decorate 164(g_tTexcdi4a) DescriptorSet 0
+ Decorate 167(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -428,181 +429,175 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 6(float)
- 14: TypeImage 6(float) 1D sampled format:Unknown
+ 14: TypeImage 6(float) 1D depth sampled format:Unknown
15: TypePointer UniformConstant 14
16(g_tTex1df4): 15(ptr) Variable UniformConstant
18: TypeSampler
19: TypePointer UniformConstant 18
20(g_sSamp): 19(ptr) Variable UniformConstant
- 22: TypeImage 6(float) 1D depth sampled format:Unknown
- 23: TypeSampledImage 22
- 25: 6(float) Constant 1036831949
- 26: 6(float) Constant 1061158912
- 27: TypeVector 6(float) 2
- 29: 6(float) Constant 0
- 30: TypeInt 32 1
- 31: 30(int) Constant 2
- 35: TypeImage 30(int) 1D sampled format:Unknown
- 36: TypePointer UniformConstant 35
- 37(g_tTex1di4): 36(ptr) Variable UniformConstant
- 40: TypeImage 30(int) 1D depth sampled format:Unknown
- 41: TypeSampledImage 40
- 47: TypeInt 32 0
- 48: TypeImage 47(int) 1D sampled format:Unknown
- 49: TypePointer UniformConstant 48
- 50(g_tTex1du4): 49(ptr) Variable UniformConstant
- 53: TypeImage 47(int) 1D depth sampled format:Unknown
- 54: TypeSampledImage 53
- 60: TypeImage 6(float) 2D sampled format:Unknown
- 61: TypePointer UniformConstant 60
- 62(g_tTex2df4): 61(ptr) Variable UniformConstant
- 65: TypeImage 6(float) 2D depth sampled format:Unknown
- 66: TypeSampledImage 65
- 68: 6(float) Constant 1045220557
- 69: 27(fvec2) ConstantComposite 25 68
- 70: TypeVector 6(float) 3
- 74: TypeVector 30(int) 2
- 75: 30(int) Constant 3
- 76: 74(ivec2) ConstantComposite 31 75
- 80: TypeImage 30(int) 2D sampled format:Unknown
- 81: TypePointer UniformConstant 80
- 82(g_tTex2di4): 81(ptr) Variable UniformConstant
- 85: TypeImage 30(int) 2D depth sampled format:Unknown
- 86: TypeSampledImage 85
- 94: TypeImage 47(int) 2D sampled format:Unknown
- 95: TypePointer UniformConstant 94
- 96(g_tTex2du4): 95(ptr) Variable UniformConstant
- 99: TypeImage 47(int) 2D depth sampled format:Unknown
- 100: TypeSampledImage 99
- 107: TypePointer Function 8(PS_OUTPUT)
- 109: 30(int) Constant 0
- 110: 6(float) Constant 1065353216
- 111: 7(fvec4) ConstantComposite 110 110 110 110
- 112: TypePointer Function 7(fvec4)
- 114: 30(int) Constant 1
- 121: TypePointer Output 7(fvec4)
- 122(Color): 121(ptr) Variable Output
- 125: TypePointer Output 6(float)
- 126(Depth): 125(ptr) Variable Output
- 129: TypeImage 6(float) 3D sampled format:Unknown
+ 22: TypeSampledImage 14
+ 24: 6(float) Constant 1036831949
+ 25: 6(float) Constant 1061158912
+ 26: TypeVector 6(float) 2
+ 28: 6(float) Constant 0
+ 29: TypeInt 32 1
+ 30: 29(int) Constant 2
+ 34: TypeImage 29(int) 1D depth sampled format:Unknown
+ 35: TypePointer UniformConstant 34
+ 36(g_tTex1di4): 35(ptr) Variable UniformConstant
+ 39: TypeSampledImage 34
+ 45: TypeInt 32 0
+ 46: TypeImage 45(int) 1D depth sampled format:Unknown
+ 47: TypePointer UniformConstant 46
+ 48(g_tTex1du4): 47(ptr) Variable UniformConstant
+ 51: TypeSampledImage 46
+ 57: TypeImage 6(float) 2D depth sampled format:Unknown
+ 58: TypePointer UniformConstant 57
+ 59(g_tTex2df4): 58(ptr) Variable UniformConstant
+ 62: TypeSampledImage 57
+ 64: 6(float) Constant 1045220557
+ 65: 26(fvec2) ConstantComposite 24 64
+ 66: TypeVector 6(float) 3
+ 70: TypeVector 29(int) 2
+ 71: 29(int) Constant 3
+ 72: 70(ivec2) ConstantComposite 30 71
+ 76: TypeImage 29(int) 2D depth sampled format:Unknown
+ 77: TypePointer UniformConstant 76
+ 78(g_tTex2di4): 77(ptr) Variable UniformConstant
+ 81: TypeSampledImage 76
+ 89: TypeImage 45(int) 2D depth sampled format:Unknown
+ 90: TypePointer UniformConstant 89
+ 91(g_tTex2du4): 90(ptr) Variable UniformConstant
+ 94: TypeSampledImage 89
+ 101: TypePointer Function 8(PS_OUTPUT)
+ 103: 29(int) Constant 0
+ 104: 6(float) Constant 1065353216
+ 105: 7(fvec4) ConstantComposite 104 104 104 104
+ 106: TypePointer Function 7(fvec4)
+ 108: 29(int) Constant 1
+ 115: TypePointer Output 7(fvec4)
+116(@entryPointOutput.Color): 115(ptr) Variable Output
+ 119: TypePointer Output 6(float)
+120(@entryPointOutput.Depth): 119(ptr) Variable Output
+ 123: TypeImage 6(float) 3D sampled format:Unknown
+ 124: TypePointer UniformConstant 123
+ 125(g_tTex3df4): 124(ptr) Variable UniformConstant
+ 126: TypeImage 29(int) 3D sampled format:Unknown
+ 127: TypePointer UniformConstant 126
+ 128(g_tTex3di4): 127(ptr) Variable UniformConstant
+ 129: TypeImage 45(int) 3D sampled format:Unknown
130: TypePointer UniformConstant 129
- 131(g_tTex3df4): 130(ptr) Variable UniformConstant
- 132: TypeImage 30(int) 3D sampled format:Unknown
+ 131(g_tTex3du4): 130(ptr) Variable UniformConstant
+ 132: TypeImage 6(float) Cube sampled format:Unknown
133: TypePointer UniformConstant 132
- 134(g_tTex3di4): 133(ptr) Variable UniformConstant
- 135: TypeImage 47(int) 3D sampled format:Unknown
+ 134(g_tTexcdf4): 133(ptr) Variable UniformConstant
+ 135: TypeImage 29(int) Cube sampled format:Unknown
136: TypePointer UniformConstant 135
- 137(g_tTex3du4): 136(ptr) Variable UniformConstant
- 138: TypeImage 6(float) Cube sampled format:Unknown
+ 137(g_tTexcdi4): 136(ptr) Variable UniformConstant
+ 138: TypeImage 45(int) Cube sampled format:Unknown
139: TypePointer UniformConstant 138
- 140(g_tTexcdf4): 139(ptr) Variable UniformConstant
- 141: TypeImage 30(int) Cube sampled format:Unknown
+ 140(g_tTexcdu4): 139(ptr) Variable UniformConstant
+ 141: TypeImage 6(float) 1D array sampled format:Unknown
142: TypePointer UniformConstant 141
- 143(g_tTexcdi4): 142(ptr) Variable UniformConstant
- 144: TypeImage 47(int) Cube sampled format:Unknown
+143(g_tTex1df4a): 142(ptr) Variable UniformConstant
+ 144: TypeImage 29(int) 1D array sampled format:Unknown
145: TypePointer UniformConstant 144
- 146(g_tTexcdu4): 145(ptr) Variable UniformConstant
- 147: TypeImage 6(float) 1D array sampled format:Unknown
+146(g_tTex1di4a): 145(ptr) Variable UniformConstant
+ 147: TypeImage 45(int) 1D array sampled format:Unknown
148: TypePointer UniformConstant 147
-149(g_tTex1df4a): 148(ptr) Variable UniformConstant
- 150: TypeImage 30(int) 1D array sampled format:Unknown
+149(g_tTex1du4a): 148(ptr) Variable UniformConstant
+ 150: TypeImage 6(float) 2D array sampled format:Unknown
151: TypePointer UniformConstant 150
-152(g_tTex1di4a): 151(ptr) Variable UniformConstant
- 153: TypeImage 47(int) 1D array sampled format:Unknown
+152(g_tTex2df4a): 151(ptr) Variable UniformConstant
+ 153: TypeImage 29(int) 2D array sampled format:Unknown
154: TypePointer UniformConstant 153
-155(g_tTex1du4a): 154(ptr) Variable UniformConstant
- 156: TypeImage 6(float) 2D array sampled format:Unknown
+155(g_tTex2di4a): 154(ptr) Variable UniformConstant
+ 156: TypeImage 45(int) 2D array sampled format:Unknown
157: TypePointer UniformConstant 156
-158(g_tTex2df4a): 157(ptr) Variable UniformConstant
- 159: TypeImage 30(int) 2D array sampled format:Unknown
+158(g_tTex2du4a): 157(ptr) Variable UniformConstant
+ 159: TypeImage 6(float) Cube array sampled format:Unknown
160: TypePointer UniformConstant 159
-161(g_tTex2di4a): 160(ptr) Variable UniformConstant
- 162: TypeImage 47(int) 2D array sampled format:Unknown
+161(g_tTexcdf4a): 160(ptr) Variable UniformConstant
+ 162: TypeImage 29(int) Cube array sampled format:Unknown
163: TypePointer UniformConstant 162
-164(g_tTex2du4a): 163(ptr) Variable UniformConstant
- 165: TypeImage 6(float) Cube array sampled format:Unknown
+164(g_tTexcdi4a): 163(ptr) Variable UniformConstant
+ 165: TypeImage 45(int) Cube array sampled format:Unknown
166: TypePointer UniformConstant 165
-167(g_tTexcdf4a): 166(ptr) Variable UniformConstant
- 168: TypeImage 30(int) Cube array sampled format:Unknown
- 169: TypePointer UniformConstant 168
-170(g_tTexcdi4a): 169(ptr) Variable UniformConstant
- 171: TypeImage 47(int) Cube array sampled format:Unknown
- 172: TypePointer UniformConstant 171
-173(g_tTexcdu4a): 172(ptr) Variable UniformConstant
+167(g_tTexcdu4a): 166(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
-119(flattenTemp): 107(ptr) Variable Function
- 120:8(PS_OUTPUT) FunctionCall 10(@main()
- Store 119(flattenTemp) 120
- 123: 112(ptr) AccessChain 119(flattenTemp) 109
- 124: 7(fvec4) Load 123
- Store 122(Color) 124
- 127: 12(ptr) AccessChain 119(flattenTemp) 114
- 128: 6(float) Load 127
- Store 126(Depth) 128
+113(flattenTemp): 101(ptr) Variable Function
+ 114:8(PS_OUTPUT) FunctionCall 10(@main()
+ Store 113(flattenTemp) 114
+ 117: 106(ptr) AccessChain 113(flattenTemp) 103
+ 118: 7(fvec4) Load 117
+ Store 116(@entryPointOutput.Color) 118
+ 121: 12(ptr) AccessChain 113(flattenTemp) 108
+ 122: 6(float) Load 121
+ Store 120(@entryPointOutput.Depth) 122
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(r01): 12(ptr) Variable Function
- 34(r03): 12(ptr) Variable Function
- 46(r05): 12(ptr) Variable Function
- 59(r21): 12(ptr) Variable Function
- 79(r23): 12(ptr) Variable Function
- 93(r25): 12(ptr) Variable Function
- 108(psout): 107(ptr) Variable Function
+ 33(r03): 12(ptr) Variable Function
+ 44(r05): 12(ptr) Variable Function
+ 56(r21): 12(ptr) Variable Function
+ 75(r23): 12(ptr) Variable Function
+ 88(r25): 12(ptr) Variable Function
+ 102(psout): 101(ptr) Variable Function
17: 14 Load 16(g_tTex1df4)
21: 18 Load 20(g_sSamp)
- 24: 23 SampledImage 17 21
- 28: 27(fvec2) CompositeConstruct 25 26
- 32: 6(float) CompositeExtract 28 1
- 33: 6(float) ImageSampleDrefExplicitLod 24 28 32 Lod ConstOffset 29 31
- Store 13(r01) 33
- 38: 35 Load 37(g_tTex1di4)
- 39: 18 Load 20(g_sSamp)
- 42: 41 SampledImage 38 39
- 43: 27(fvec2) CompositeConstruct 25 26
- 44: 6(float) CompositeExtract 43 1
- 45: 6(float) ImageSampleDrefExplicitLod 42 43 44 Lod ConstOffset 29 31
- Store 34(r03) 45
- 51: 48 Load 50(g_tTex1du4)
- 52: 18 Load 20(g_sSamp)
- 55: 54 SampledImage 51 52
- 56: 27(fvec2) CompositeConstruct 25 26
- 57: 6(float) CompositeExtract 56 1
- 58: 6(float) ImageSampleDrefExplicitLod 55 56 57 Lod ConstOffset 29 31
- Store 46(r05) 58
- 63: 60 Load 62(g_tTex2df4)
- 64: 18 Load 20(g_sSamp)
- 67: 66 SampledImage 63 64
- 71: 6(float) CompositeExtract 69 0
- 72: 6(float) CompositeExtract 69 1
- 73: 70(fvec3) CompositeConstruct 71 72 26
- 77: 6(float) CompositeExtract 73 2
- 78: 6(float) ImageSampleDrefExplicitLod 67 73 77 Lod ConstOffset 29 76
- Store 59(r21) 78
- 83: 80 Load 82(g_tTex2di4)
- 84: 18 Load 20(g_sSamp)
- 87: 86 SampledImage 83 84
- 88: 6(float) CompositeExtract 69 0
- 89: 6(float) CompositeExtract 69 1
- 90: 70(fvec3) CompositeConstruct 88 89 26
- 91: 6(float) CompositeExtract 90 2
- 92: 6(float) ImageSampleDrefExplicitLod 87 90 91 Lod ConstOffset 29 76
- Store 79(r23) 92
- 97: 94 Load 96(g_tTex2du4)
- 98: 18 Load 20(g_sSamp)
- 101: 100 SampledImage 97 98
- 102: 6(float) CompositeExtract 69 0
- 103: 6(float) CompositeExtract 69 1
- 104: 70(fvec3) CompositeConstruct 102 103 26
- 105: 6(float) CompositeExtract 104 2
- 106: 6(float) ImageSampleDrefExplicitLod 101 104 105 Lod ConstOffset 29 76
- Store 93(r25) 106
- 113: 112(ptr) AccessChain 108(psout) 109
- Store 113 111
- 115: 12(ptr) AccessChain 108(psout) 114
- Store 115 110
- 116:8(PS_OUTPUT) Load 108(psout)
- ReturnValue 116
+ 23: 22 SampledImage 17 21
+ 27: 26(fvec2) CompositeConstruct 24 25
+ 31: 6(float) CompositeExtract 27 1
+ 32: 6(float) ImageSampleDrefExplicitLod 23 27 31 Lod ConstOffset 28 30
+ Store 13(r01) 32
+ 37: 34 Load 36(g_tTex1di4)
+ 38: 18 Load 20(g_sSamp)
+ 40: 39 SampledImage 37 38
+ 41: 26(fvec2) CompositeConstruct 24 25
+ 42: 6(float) CompositeExtract 41 1
+ 43: 6(float) ImageSampleDrefExplicitLod 40 41 42 Lod ConstOffset 28 30
+ Store 33(r03) 43
+ 49: 46 Load 48(g_tTex1du4)
+ 50: 18 Load 20(g_sSamp)
+ 52: 51 SampledImage 49 50
+ 53: 26(fvec2) CompositeConstruct 24 25
+ 54: 6(float) CompositeExtract 53 1
+ 55: 6(float) ImageSampleDrefExplicitLod 52 53 54 Lod ConstOffset 28 30
+ Store 44(r05) 55
+ 60: 57 Load 59(g_tTex2df4)
+ 61: 18 Load 20(g_sSamp)
+ 63: 62 SampledImage 60 61
+ 67: 6(float) CompositeExtract 65 0
+ 68: 6(float) CompositeExtract 65 1
+ 69: 66(fvec3) CompositeConstruct 67 68 25
+ 73: 6(float) CompositeExtract 69 2
+ 74: 6(float) ImageSampleDrefExplicitLod 63 69 73 Lod ConstOffset 28 72
+ Store 56(r21) 74
+ 79: 76 Load 78(g_tTex2di4)
+ 80: 18 Load 20(g_sSamp)
+ 82: 81 SampledImage 79 80
+ 83: 6(float) CompositeExtract 65 0
+ 84: 6(float) CompositeExtract 65 1
+ 85: 66(fvec3) CompositeConstruct 83 84 25
+ 86: 6(float) CompositeExtract 85 2
+ 87: 6(float) ImageSampleDrefExplicitLod 82 85 86 Lod ConstOffset 28 72
+ Store 75(r23) 87
+ 92: 89 Load 91(g_tTex2du4)
+ 93: 18 Load 20(g_sSamp)
+ 95: 94 SampledImage 92 93
+ 96: 6(float) CompositeExtract 65 0
+ 97: 6(float) CompositeExtract 65 1
+ 98: 66(fvec3) CompositeConstruct 96 97 25
+ 99: 6(float) CompositeExtract 98 2
+ 100: 6(float) ImageSampleDrefExplicitLod 95 98 99 Lod ConstOffset 28 72
+ Store 88(r25) 100
+ 107: 106(ptr) AccessChain 102(psout) 103
+ Store 107 105
+ 109: 12(ptr) AccessChain 102(psout) 108
+ Store 109 104
+ 110:8(PS_OUTPUT) Load 102(psout)
+ ReturnValue 110
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
index 8a87e9b0d55..84b830c454b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplecmplevelzero.offsetarray.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
0:42 'r11' ( temp float)
0:42 textureLodOffset ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow)
-0:42 'g_tTex1df4a' ( uniform texture1DArray)
+0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -27,7 +27,7 @@ gl_FragCoord origin is upper left
0:43 'r13' ( temp float)
0:43 textureLodOffset ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow)
-0:43 'g_tTex1di4a' ( uniform itexture1DArray)
+0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -44,7 +44,7 @@ gl_FragCoord origin is upper left
0:44 'r15' ( temp float)
0:44 textureLodOffset ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow)
-0:44 'g_tTex1du4a' ( uniform utexture1DArray)
+0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -61,7 +61,7 @@ gl_FragCoord origin is upper left
0:47 'r31' ( temp float)
0:47 textureLodOffset ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow)
-0:47 'g_tTex2df4a' ( uniform texture2DArray)
+0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -80,7 +80,7 @@ gl_FragCoord origin is upper left
0:48 'r33' ( temp float)
0:48 textureLodOffset ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow)
-0:48 'g_tTex2di4a' ( uniform itexture2DArray)
+0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -99,7 +99,7 @@ gl_FragCoord origin is upper left
0:49 'r35' ( temp float)
0:49 textureLodOffset ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow)
-0:49 'g_tTex2du4a' ( uniform utexture2DArray)
+0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -140,13 +140,13 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
@@ -165,23 +165,23 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'g_tTex1df4a' ( uniform texture1DArray)
-0:? 'g_tTex1di4a' ( uniform itexture1DArray)
-0:? 'g_tTex1du4a' ( uniform utexture1DArray)
-0:? 'g_tTex2df4a' ( uniform texture2DArray)
-0:? 'g_tTex2di4a' ( uniform itexture2DArray)
-0:? 'g_tTex2du4a' ( uniform utexture2DArray)
+0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow)
+0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
+0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
+0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow)
+0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
+0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -192,7 +192,7 @@ gl_FragCoord origin is upper left
0:42 'r11' ( temp float)
0:42 textureLodOffset ( temp float)
0:42 Construct combined texture-sampler ( temp sampler1DArrayShadow)
-0:42 'g_tTex1df4a' ( uniform texture1DArray)
+0:42 'g_tTex1df4a' ( uniform texture1DArrayShadow)
0:42 'g_sSamp' (layout( binding=0) uniform sampler)
0:42 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -209,7 +209,7 @@ gl_FragCoord origin is upper left
0:43 'r13' ( temp float)
0:43 textureLodOffset ( temp float)
0:43 Construct combined texture-sampler ( temp isampler1DArrayShadow)
-0:43 'g_tTex1di4a' ( uniform itexture1DArray)
+0:43 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
0:43 'g_sSamp' (layout( binding=0) uniform sampler)
0:43 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -226,7 +226,7 @@ gl_FragCoord origin is upper left
0:44 'r15' ( temp float)
0:44 textureLodOffset ( temp float)
0:44 Construct combined texture-sampler ( temp usampler1DArrayShadow)
-0:44 'g_tTex1du4a' ( uniform utexture1DArray)
+0:44 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
0:44 'g_sSamp' (layout( binding=0) uniform sampler)
0:44 Construct vec3 ( temp 3-component vector of float)
0:? Constant:
@@ -243,7 +243,7 @@ gl_FragCoord origin is upper left
0:47 'r31' ( temp float)
0:47 textureLodOffset ( temp float)
0:47 Construct combined texture-sampler ( temp sampler2DArrayShadow)
-0:47 'g_tTex2df4a' ( uniform texture2DArray)
+0:47 'g_tTex2df4a' ( uniform texture2DArrayShadow)
0:47 'g_sSamp' (layout( binding=0) uniform sampler)
0:47 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -262,7 +262,7 @@ gl_FragCoord origin is upper left
0:48 'r33' ( temp float)
0:48 textureLodOffset ( temp float)
0:48 Construct combined texture-sampler ( temp isampler2DArrayShadow)
-0:48 'g_tTex2di4a' ( uniform itexture2DArray)
+0:48 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
0:48 'g_sSamp' (layout( binding=0) uniform sampler)
0:48 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -281,7 +281,7 @@ gl_FragCoord origin is upper left
0:49 'r35' ( temp float)
0:49 textureLodOffset ( temp float)
0:49 Construct combined texture-sampler ( temp usampler2DArrayShadow)
-0:49 'g_tTex2du4a' ( uniform utexture2DArray)
+0:49 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:49 'g_sSamp' (layout( binding=0) uniform sampler)
0:49 Construct vec4 ( temp 4-component vector of float)
0:? Constant:
@@ -322,13 +322,13 @@ gl_FragCoord origin is upper left
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:38 Color: direct index for structure ( temp 4-component vector of float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
0:38 0 (const int)
0:38 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:38 Depth: direct index for structure ( temp float)
0:38 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Constant:
@@ -347,29 +347,30 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'g_tTex1df4a' ( uniform texture1DArray)
-0:? 'g_tTex1di4a' ( uniform itexture1DArray)
-0:? 'g_tTex1du4a' ( uniform utexture1DArray)
-0:? 'g_tTex2df4a' ( uniform texture2DArray)
-0:? 'g_tTex2di4a' ( uniform itexture2DArray)
-0:? 'g_tTex2du4a' ( uniform utexture2DArray)
+0:? 'g_tTex1df4a' ( uniform texture1DArrayShadow)
+0:? 'g_tTex1di4a' ( uniform itexture1DArrayShadow)
+0:? 'g_tTex1du4a' ( uniform utexture1DArrayShadow)
+0:? 'g_tTex2df4a' ( uniform texture2DArrayShadow)
+0:? 'g_tTex2di4a' ( uniform itexture2DArrayShadow)
+0:? 'g_tTex2du4a' ( uniform utexture2DArrayShadow)
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 185
+// Generated by (magic number): 80002
+// Id's are bound by 179
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 133 137
+ EntryPoint Fragment 4 "main" 127 131
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -378,61 +379,61 @@ gl_FragCoord origin is upper left
Name 13 "r11"
Name 16 "g_tTex1df4a"
Name 20 "g_sSamp"
- Name 39 "r13"
- Name 42 "g_tTex1di4a"
- Name 53 "r15"
- Name 57 "g_tTex1du4a"
- Name 68 "r31"
- Name 71 "g_tTex2df4a"
- Name 88 "r33"
- Name 91 "g_tTex2di4a"
- Name 103 "r35"
- Name 106 "g_tTex2du4a"
- Name 119 "psout"
- Name 130 "flattenTemp"
- Name 133 "Color"
- Name 137 "Depth"
- Name 142 "g_tTex1df4"
- Name 145 "g_tTex1di4"
- Name 148 "g_tTex1du4"
- Name 151 "g_tTex2df4"
- Name 154 "g_tTex2di4"
- Name 157 "g_tTex2du4"
- Name 160 "g_tTex3df4"
- Name 163 "g_tTex3di4"
- Name 166 "g_tTex3du4"
- Name 169 "g_tTexcdf4"
- Name 172 "g_tTexcdi4"
- Name 175 "g_tTexcdu4"
- Name 178 "g_tTexcdf4a"
- Name 181 "g_tTexcdi4a"
- Name 184 "g_tTexcdu4a"
+ Name 38 "r13"
+ Name 41 "g_tTex1di4a"
+ Name 51 "r15"
+ Name 55 "g_tTex1du4a"
+ Name 65 "r31"
+ Name 68 "g_tTex2df4a"
+ Name 84 "r33"
+ Name 87 "g_tTex2di4a"
+ Name 98 "r35"
+ Name 101 "g_tTex2du4a"
+ Name 113 "psout"
+ Name 124 "flattenTemp"
+ Name 127 "@entryPointOutput.Color"
+ Name 131 "@entryPointOutput.Depth"
+ Name 136 "g_tTex1df4"
+ Name 139 "g_tTex1di4"
+ Name 142 "g_tTex1du4"
+ Name 145 "g_tTex2df4"
+ Name 148 "g_tTex2di4"
+ Name 151 "g_tTex2du4"
+ Name 154 "g_tTex3df4"
+ Name 157 "g_tTex3di4"
+ Name 160 "g_tTex3du4"
+ Name 163 "g_tTexcdf4"
+ Name 166 "g_tTexcdi4"
+ Name 169 "g_tTexcdu4"
+ Name 172 "g_tTexcdf4a"
+ Name 175 "g_tTexcdi4a"
+ Name 178 "g_tTexcdu4a"
Decorate 16(g_tTex1df4a) DescriptorSet 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
- Decorate 42(g_tTex1di4a) DescriptorSet 0
- Decorate 57(g_tTex1du4a) DescriptorSet 0
- Decorate 71(g_tTex2df4a) DescriptorSet 0
- Decorate 91(g_tTex2di4a) DescriptorSet 0
- Decorate 106(g_tTex2du4a) DescriptorSet 0
- Decorate 133(Color) Location 0
- Decorate 137(Depth) BuiltIn FragDepth
- Decorate 142(g_tTex1df4) DescriptorSet 0
- Decorate 142(g_tTex1df4) Binding 0
- Decorate 145(g_tTex1di4) DescriptorSet 0
- Decorate 148(g_tTex1du4) DescriptorSet 0
- Decorate 151(g_tTex2df4) DescriptorSet 0
- Decorate 154(g_tTex2di4) DescriptorSet 0
- Decorate 157(g_tTex2du4) DescriptorSet 0
- Decorate 160(g_tTex3df4) DescriptorSet 0
- Decorate 163(g_tTex3di4) DescriptorSet 0
- Decorate 166(g_tTex3du4) DescriptorSet 0
- Decorate 169(g_tTexcdf4) DescriptorSet 0
- Decorate 172(g_tTexcdi4) DescriptorSet 0
- Decorate 175(g_tTexcdu4) DescriptorSet 0
- Decorate 178(g_tTexcdf4a) DescriptorSet 0
- Decorate 181(g_tTexcdi4a) DescriptorSet 0
- Decorate 184(g_tTexcdu4a) DescriptorSet 0
+ Decorate 41(g_tTex1di4a) DescriptorSet 0
+ Decorate 55(g_tTex1du4a) DescriptorSet 0
+ Decorate 68(g_tTex2df4a) DescriptorSet 0
+ Decorate 87(g_tTex2di4a) DescriptorSet 0
+ Decorate 101(g_tTex2du4a) DescriptorSet 0
+ Decorate 127(@entryPointOutput.Color) Location 0
+ Decorate 131(@entryPointOutput.Depth) BuiltIn FragDepth
+ Decorate 136(g_tTex1df4) DescriptorSet 0
+ Decorate 136(g_tTex1df4) Binding 0
+ Decorate 139(g_tTex1di4) DescriptorSet 0
+ Decorate 142(g_tTex1du4) DescriptorSet 0
+ Decorate 145(g_tTex2df4) DescriptorSet 0
+ Decorate 148(g_tTex2di4) DescriptorSet 0
+ Decorate 151(g_tTex2du4) DescriptorSet 0
+ Decorate 154(g_tTex3df4) DescriptorSet 0
+ Decorate 157(g_tTex3di4) DescriptorSet 0
+ Decorate 160(g_tTex3du4) DescriptorSet 0
+ Decorate 163(g_tTexcdf4) DescriptorSet 0
+ Decorate 166(g_tTexcdi4) DescriptorSet 0
+ Decorate 169(g_tTexcdu4) DescriptorSet 0
+ Decorate 172(g_tTexcdf4a) DescriptorSet 0
+ Decorate 175(g_tTexcdi4a) DescriptorSet 0
+ Decorate 178(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -440,192 +441,186 @@ gl_FragCoord origin is upper left
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 6(float)
- 14: TypeImage 6(float) 1D array sampled format:Unknown
+ 14: TypeImage 6(float) 1D depth array sampled format:Unknown
15: TypePointer UniformConstant 14
16(g_tTex1df4a): 15(ptr) Variable UniformConstant
18: TypeSampler
19: TypePointer UniformConstant 18
20(g_sSamp): 19(ptr) Variable UniformConstant
- 22: TypeImage 6(float) 1D depth array sampled format:Unknown
- 23: TypeSampledImage 22
- 25: TypeVector 6(float) 2
- 26: 6(float) Constant 1036831949
- 27: 6(float) Constant 1045220557
- 28: 25(fvec2) ConstantComposite 26 27
- 29: 6(float) Constant 1061158912
- 30: TypeVector 6(float) 3
- 34: 6(float) Constant 0
- 35: TypeInt 32 1
- 36: 35(int) Constant 2
- 40: TypeImage 35(int) 1D array sampled format:Unknown
- 41: TypePointer UniformConstant 40
- 42(g_tTex1di4a): 41(ptr) Variable UniformConstant
- 45: TypeImage 35(int) 1D depth array sampled format:Unknown
- 46: TypeSampledImage 45
- 54: TypeInt 32 0
- 55: TypeImage 54(int) 1D array sampled format:Unknown
- 56: TypePointer UniformConstant 55
- 57(g_tTex1du4a): 56(ptr) Variable UniformConstant
- 60: TypeImage 54(int) 1D depth array sampled format:Unknown
- 61: TypeSampledImage 60
- 69: TypeImage 6(float) 2D array sampled format:Unknown
- 70: TypePointer UniformConstant 69
- 71(g_tTex2df4a): 70(ptr) Variable UniformConstant
- 74: TypeImage 6(float) 2D depth array sampled format:Unknown
- 75: TypeSampledImage 74
- 77: 6(float) Constant 1050253722
- 78: 30(fvec3) ConstantComposite 26 27 77
- 83: TypeVector 35(int) 2
- 84: 35(int) Constant 3
- 85: 83(ivec2) ConstantComposite 36 84
- 89: TypeImage 35(int) 2D array sampled format:Unknown
- 90: TypePointer UniformConstant 89
- 91(g_tTex2di4a): 90(ptr) Variable UniformConstant
- 94: TypeImage 35(int) 2D depth array sampled format:Unknown
- 95: TypeSampledImage 94
- 104: TypeImage 54(int) 2D array sampled format:Unknown
- 105: TypePointer UniformConstant 104
-106(g_tTex2du4a): 105(ptr) Variable UniformConstant
- 109: TypeImage 54(int) 2D depth array sampled format:Unknown
- 110: TypeSampledImage 109
- 118: TypePointer Function 8(PS_OUTPUT)
- 120: 35(int) Constant 0
- 121: 6(float) Constant 1065353216
- 122: 7(fvec4) ConstantComposite 121 121 121 121
- 123: TypePointer Function 7(fvec4)
- 125: 35(int) Constant 1
- 132: TypePointer Output 7(fvec4)
- 133(Color): 132(ptr) Variable Output
- 136: TypePointer Output 6(float)
- 137(Depth): 136(ptr) Variable Output
- 140: TypeImage 6(float) 1D sampled format:Unknown
+ 22: TypeSampledImage 14
+ 24: TypeVector 6(float) 2
+ 25: 6(float) Constant 1036831949
+ 26: 6(float) Constant 1045220557
+ 27: 24(fvec2) ConstantComposite 25 26
+ 28: 6(float) Constant 1061158912
+ 29: TypeVector 6(float) 3
+ 33: 6(float) Constant 0
+ 34: TypeInt 32 1
+ 35: 34(int) Constant 2
+ 39: TypeImage 34(int) 1D depth array sampled format:Unknown
+ 40: TypePointer UniformConstant 39
+ 41(g_tTex1di4a): 40(ptr) Variable UniformConstant
+ 44: TypeSampledImage 39
+ 52: TypeInt 32 0
+ 53: TypeImage 52(int) 1D depth array sampled format:Unknown
+ 54: TypePointer UniformConstant 53
+ 55(g_tTex1du4a): 54(ptr) Variable UniformConstant
+ 58: TypeSampledImage 53
+ 66: TypeImage 6(float) 2D depth array sampled format:Unknown
+ 67: TypePointer UniformConstant 66
+ 68(g_tTex2df4a): 67(ptr) Variable UniformConstant
+ 71: TypeSampledImage 66
+ 73: 6(float) Constant 1050253722
+ 74: 29(fvec3) ConstantComposite 25 26 73
+ 79: TypeVector 34(int) 2
+ 80: 34(int) Constant 3
+ 81: 79(ivec2) ConstantComposite 35 80
+ 85: TypeImage 34(int) 2D depth array sampled format:Unknown
+ 86: TypePointer UniformConstant 85
+ 87(g_tTex2di4a): 86(ptr) Variable UniformConstant
+ 90: TypeSampledImage 85
+ 99: TypeImage 52(int) 2D depth array sampled format:Unknown
+ 100: TypePointer UniformConstant 99
+101(g_tTex2du4a): 100(ptr) Variable UniformConstant
+ 104: TypeSampledImage 99
+ 112: TypePointer Function 8(PS_OUTPUT)
+ 114: 34(int) Constant 0
+ 115: 6(float) Constant 1065353216
+ 116: 7(fvec4) ConstantComposite 115 115 115 115
+ 117: TypePointer Function 7(fvec4)
+ 119: 34(int) Constant 1
+ 126: TypePointer Output 7(fvec4)
+127(@entryPointOutput.Color): 126(ptr) Variable Output
+ 130: TypePointer Output 6(float)
+131(@entryPointOutput.Depth): 130(ptr) Variable Output
+ 134: TypeImage 6(float) 1D sampled format:Unknown
+ 135: TypePointer UniformConstant 134
+ 136(g_tTex1df4): 135(ptr) Variable UniformConstant
+ 137: TypeImage 34(int) 1D sampled format:Unknown
+ 138: TypePointer UniformConstant 137
+ 139(g_tTex1di4): 138(ptr) Variable UniformConstant
+ 140: TypeImage 52(int) 1D sampled format:Unknown
141: TypePointer UniformConstant 140
- 142(g_tTex1df4): 141(ptr) Variable UniformConstant
- 143: TypeImage 35(int) 1D sampled format:Unknown
+ 142(g_tTex1du4): 141(ptr) Variable UniformConstant
+ 143: TypeImage 6(float) 2D sampled format:Unknown
144: TypePointer UniformConstant 143
- 145(g_tTex1di4): 144(ptr) Variable UniformConstant
- 146: TypeImage 54(int) 1D sampled format:Unknown
+ 145(g_tTex2df4): 144(ptr) Variable UniformConstant
+ 146: TypeImage 34(int) 2D sampled format:Unknown
147: TypePointer UniformConstant 146
- 148(g_tTex1du4): 147(ptr) Variable UniformConstant
- 149: TypeImage 6(float) 2D sampled format:Unknown
+ 148(g_tTex2di4): 147(ptr) Variable UniformConstant
+ 149: TypeImage 52(int) 2D sampled format:Unknown
150: TypePointer UniformConstant 149
- 151(g_tTex2df4): 150(ptr) Variable UniformConstant
- 152: TypeImage 35(int) 2D sampled format:Unknown
+ 151(g_tTex2du4): 150(ptr) Variable UniformConstant
+ 152: TypeImage 6(float) 3D sampled format:Unknown
153: TypePointer UniformConstant 152
- 154(g_tTex2di4): 153(ptr) Variable UniformConstant
- 155: TypeImage 54(int) 2D sampled format:Unknown
+ 154(g_tTex3df4): 153(ptr) Variable UniformConstant
+ 155: TypeImage 34(int) 3D sampled format:Unknown
156: TypePointer UniformConstant 155
- 157(g_tTex2du4): 156(ptr) Variable UniformConstant
- 158: TypeImage 6(float) 3D sampled format:Unknown
+ 157(g_tTex3di4): 156(ptr) Variable UniformConstant
+ 158: TypeImage 52(int) 3D sampled format:Unknown
159: TypePointer UniformConstant 158
- 160(g_tTex3df4): 159(ptr) Variable UniformConstant
- 161: TypeImage 35(int) 3D sampled format:Unknown
+ 160(g_tTex3du4): 159(ptr) Variable UniformConstant
+ 161: TypeImage 6(float) Cube sampled format:Unknown
162: TypePointer UniformConstant 161
- 163(g_tTex3di4): 162(ptr) Variable UniformConstant
- 164: TypeImage 54(int) 3D sampled format:Unknown
+ 163(g_tTexcdf4): 162(ptr) Variable UniformConstant
+ 164: TypeImage 34(int) Cube sampled format:Unknown
165: TypePointer UniformConstant 164
- 166(g_tTex3du4): 165(ptr) Variable UniformConstant
- 167: TypeImage 6(float) Cube sampled format:Unknown
+ 166(g_tTexcdi4): 165(ptr) Variable UniformConstant
+ 167: TypeImage 52(int) Cube sampled format:Unknown
168: TypePointer UniformConstant 167
- 169(g_tTexcdf4): 168(ptr) Variable UniformConstant
- 170: TypeImage 35(int) Cube sampled format:Unknown
+ 169(g_tTexcdu4): 168(ptr) Variable UniformConstant
+ 170: TypeImage 6(float) Cube array sampled format:Unknown
171: TypePointer UniformConstant 170
- 172(g_tTexcdi4): 171(ptr) Variable UniformConstant
- 173: TypeImage 54(int) Cube sampled format:Unknown
+172(g_tTexcdf4a): 171(ptr) Variable UniformConstant
+ 173: TypeImage 34(int) Cube array sampled format:Unknown
174: TypePointer UniformConstant 173
- 175(g_tTexcdu4): 174(ptr) Variable UniformConstant
- 176: TypeImage 6(float) Cube array sampled format:Unknown
+175(g_tTexcdi4a): 174(ptr) Variable UniformConstant
+ 176: TypeImage 52(int) Cube array sampled format:Unknown
177: TypePointer UniformConstant 176
-178(g_tTexcdf4a): 177(ptr) Variable UniformConstant
- 179: TypeImage 35(int) Cube array sampled format:Unknown
- 180: TypePointer UniformConstant 179
-181(g_tTexcdi4a): 180(ptr) Variable UniformConstant
- 182: TypeImage 54(int) Cube array sampled format:Unknown
- 183: TypePointer UniformConstant 182
-184(g_tTexcdu4a): 183(ptr) Variable UniformConstant
+178(g_tTexcdu4a): 177(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
-130(flattenTemp): 118(ptr) Variable Function
- 131:8(PS_OUTPUT) FunctionCall 10(@main()
- Store 130(flattenTemp) 131
- 134: 123(ptr) AccessChain 130(flattenTemp) 120
- 135: 7(fvec4) Load 134
- Store 133(Color) 135
- 138: 12(ptr) AccessChain 130(flattenTemp) 125
- 139: 6(float) Load 138
- Store 137(Depth) 139
+124(flattenTemp): 112(ptr) Variable Function
+ 125:8(PS_OUTPUT) FunctionCall 10(@main()
+ Store 124(flattenTemp) 125
+ 128: 117(ptr) AccessChain 124(flattenTemp) 114
+ 129: 7(fvec4) Load 128
+ Store 127(@entryPointOutput.Color) 129
+ 132: 12(ptr) AccessChain 124(flattenTemp) 119
+ 133: 6(float) Load 132
+ Store 131(@entryPointOutput.Depth) 133
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(r11): 12(ptr) Variable Function
- 39(r13): 12(ptr) Variable Function
- 53(r15): 12(ptr) Variable Function
- 68(r31): 12(ptr) Variable Function
- 88(r33): 12(ptr) Variable Function
- 103(r35): 12(ptr) Variable Function
- 119(psout): 118(ptr) Variable Function
+ 38(r13): 12(ptr) Variable Function
+ 51(r15): 12(ptr) Variable Function
+ 65(r31): 12(ptr) Variable Function
+ 84(r33): 12(ptr) Variable Function
+ 98(r35): 12(ptr) Variable Function
+ 113(psout): 112(ptr) Variable Function
17: 14 Load 16(g_tTex1df4a)
21: 18 Load 20(g_sSamp)
- 24: 23 SampledImage 17 21
- 31: 6(float) CompositeExtract 28 0
- 32: 6(float) CompositeExtract 28 1
- 33: 30(fvec3) CompositeConstruct 31 32 29
- 37: 6(float) CompositeExtract 33 2
- 38: 6(float) ImageSampleDrefExplicitLod 24 33 37 Lod ConstOffset 34 36
- Store 13(r11) 38
- 43: 40 Load 42(g_tTex1di4a)
- 44: 18 Load 20(g_sSamp)
- 47: 46 SampledImage 43 44
- 48: 6(float) CompositeExtract 28 0
- 49: 6(float) CompositeExtract 28 1
- 50: 30(fvec3) CompositeConstruct 48 49 29
- 51: 6(float) CompositeExtract 50 2
- 52: 6(float) ImageSampleDrefExplicitLod 47 50 51 Lod ConstOffset 34 36
- Store 39(r13) 52
- 58: 55 Load 57(g_tTex1du4a)
- 59: 18 Load 20(g_sSamp)
- 62: 61 SampledImage 58 59
- 63: 6(float) CompositeExtract 28 0
- 64: 6(float) CompositeExtract 28 1
- 65: 30(fvec3) CompositeConstruct 63 64 29
- 66: 6(float) CompositeExtract 65 2
- 67: 6(float) ImageSampleDrefExplicitLod 62 65 66 Lod ConstOffset 34 36
- Store 53(r15) 67
- 72: 69 Load 71(g_tTex2df4a)
- 73: 18 Load 20(g_sSamp)
- 76: 75 SampledImage 72 73
- 79: 6(float) CompositeExtract 78 0
- 80: 6(float) CompositeExtract 78 1
- 81: 6(float) CompositeExtract 78 2
- 82: 7(fvec4) CompositeConstruct 79 80 81 29
- 86: 6(float) CompositeExtract 82 3
- 87: 6(float) ImageSampleDrefExplicitLod 76 82 86 Lod ConstOffset 34 85
- Store 68(r31) 87
- 92: 89 Load 91(g_tTex2di4a)
- 93: 18 Load 20(g_sSamp)
- 96: 95 SampledImage 92 93
- 97: 6(float) CompositeExtract 78 0
- 98: 6(float) CompositeExtract 78 1
- 99: 6(float) CompositeExtract 78 2
- 100: 7(fvec4) CompositeConstruct 97 98 99 29
- 101: 6(float) CompositeExtract 100 3
- 102: 6(float) ImageSampleDrefExplicitLod 96 100 101 Lod ConstOffset 34 85
- Store 88(r33) 102
- 107: 104 Load 106(g_tTex2du4a)
- 108: 18 Load 20(g_sSamp)
- 111: 110 SampledImage 107 108
- 112: 6(float) CompositeExtract 78 0
- 113: 6(float) CompositeExtract 78 1
- 114: 6(float) CompositeExtract 78 2
- 115: 7(fvec4) CompositeConstruct 112 113 114 29
- 116: 6(float) CompositeExtract 115 3
- 117: 6(float) ImageSampleDrefExplicitLod 111 115 116 Lod ConstOffset 34 85
- Store 103(r35) 117
- 124: 123(ptr) AccessChain 119(psout) 120
- Store 124 122
- 126: 12(ptr) AccessChain 119(psout) 125
- Store 126 121
- 127:8(PS_OUTPUT) Load 119(psout)
- ReturnValue 127
+ 23: 22 SampledImage 17 21
+ 30: 6(float) CompositeExtract 27 0
+ 31: 6(float) CompositeExtract 27 1
+ 32: 29(fvec3) CompositeConstruct 30 31 28
+ 36: 6(float) CompositeExtract 32 2
+ 37: 6(float) ImageSampleDrefExplicitLod 23 32 36 Lod ConstOffset 33 35
+ Store 13(r11) 37
+ 42: 39 Load 41(g_tTex1di4a)
+ 43: 18 Load 20(g_sSamp)
+ 45: 44 SampledImage 42 43
+ 46: 6(float) CompositeExtract 27 0
+ 47: 6(float) CompositeExtract 27 1
+ 48: 29(fvec3) CompositeConstruct 46 47 28
+ 49: 6(float) CompositeExtract 48 2
+ 50: 6(float) ImageSampleDrefExplicitLod 45 48 49 Lod ConstOffset 33 35
+ Store 38(r13) 50
+ 56: 53 Load 55(g_tTex1du4a)
+ 57: 18 Load 20(g_sSamp)
+ 59: 58 SampledImage 56 57
+ 60: 6(float) CompositeExtract 27 0
+ 61: 6(float) CompositeExtract 27 1
+ 62: 29(fvec3) CompositeConstruct 60 61 28
+ 63: 6(float) CompositeExtract 62 2
+ 64: 6(float) ImageSampleDrefExplicitLod 59 62 63 Lod ConstOffset 33 35
+ Store 51(r15) 64
+ 69: 66 Load 68(g_tTex2df4a)
+ 70: 18 Load 20(g_sSamp)
+ 72: 71 SampledImage 69 70
+ 75: 6(float) CompositeExtract 74 0
+ 76: 6(float) CompositeExtract 74 1
+ 77: 6(float) CompositeExtract 74 2
+ 78: 7(fvec4) CompositeConstruct 75 76 77 28
+ 82: 6(float) CompositeExtract 78 3
+ 83: 6(float) ImageSampleDrefExplicitLod 72 78 82 Lod ConstOffset 33 81
+ Store 65(r31) 83
+ 88: 85 Load 87(g_tTex2di4a)
+ 89: 18 Load 20(g_sSamp)
+ 91: 90 SampledImage 88 89
+ 92: 6(float) CompositeExtract 74 0
+ 93: 6(float) CompositeExtract 74 1
+ 94: 6(float) CompositeExtract 74 2
+ 95: 7(fvec4) CompositeConstruct 92 93 94 28
+ 96: 6(float) CompositeExtract 95 3
+ 97: 6(float) ImageSampleDrefExplicitLod 91 95 96 Lod ConstOffset 33 81
+ Store 84(r33) 97
+ 102: 99 Load 101(g_tTex2du4a)
+ 103: 18 Load 20(g_sSamp)
+ 105: 104 SampledImage 102 103
+ 106: 6(float) CompositeExtract 74 0
+ 107: 6(float) CompositeExtract 74 1
+ 108: 6(float) CompositeExtract 74 2
+ 109: 7(fvec4) CompositeConstruct 106 107 108 28
+ 110: 6(float) CompositeExtract 109 3
+ 111: 6(float) ImageSampleDrefExplicitLod 105 109 110 Lod ConstOffset 33 81
+ Store 98(r35) 111
+ 118: 117(ptr) AccessChain 113(psout) 114
+ Store 118 116
+ 120: 12(ptr) AccessChain 113(psout) 119
+ Store 120 115
+ 121:8(PS_OUTPUT) Load 113(psout)
+ ReturnValue 121
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
index 5a5159d36c9..f9fabcca254 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplegrad.array.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -185,13 +185,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -208,14 +208,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCubeArray)
0:? 'g_tTexcdi4' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -401,13 +401,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -424,11 +424,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCubeArray)
0:? 'g_tTexcdi4' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 140
Capability Shader
@@ -438,6 +438,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 132 136
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -464,8 +465,8 @@ gl_FragCoord origin is upper left
Name 111 "g_tTexcdu4"
Name 118 "psout"
Name 129 "flattenTemp"
- Name 132 "Color"
- Name 136 "Depth"
+ Name 132 "@entryPointOutput.Color"
+ Name 136 "@entryPointOutput.Depth"
Name 139 "g_tTex1df4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
@@ -479,8 +480,8 @@ gl_FragCoord origin is upper left
Decorate 89(g_tTexcdf4) DescriptorSet 0
Decorate 102(g_tTexcdi4) DescriptorSet 0
Decorate 111(g_tTexcdu4) DescriptorSet 0
- Decorate 132(Color) Location 0
- Decorate 136(Depth) BuiltIn FragDepth
+ Decorate 132(@entryPointOutput.Color) Location 0
+ Decorate 136(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 139(g_tTex1df4a) DescriptorSet 0
Decorate 139(g_tTex1df4a) Binding 1
2: TypeVoid
@@ -556,9 +557,9 @@ gl_FragCoord origin is upper left
123: 31(int) Constant 1
124: TypePointer Function 6(float)
131: TypePointer Output 7(fvec4)
- 132(Color): 131(ptr) Variable Output
+132(@entryPointOutput.Color): 131(ptr) Variable Output
135: TypePointer Output 6(float)
- 136(Depth): 135(ptr) Variable Output
+136(@entryPointOutput.Depth): 135(ptr) Variable Output
139(g_tTex1df4a): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -567,10 +568,10 @@ gl_FragCoord origin is upper left
Store 129(flattenTemp) 130
133: 12(ptr) AccessChain 129(flattenTemp) 119
134: 7(fvec4) Load 133
- Store 132(Color) 134
+ Store 132(@entryPointOutput.Color) 134
137: 124(ptr) AccessChain 129(flattenTemp) 123
138: 6(float) Load 137
- Store 136(Depth) 138
+ Store 136(@entryPointOutput.Depth) 138
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
index dc61751cce1..cb40bcea307 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplegrad.basic.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -233,13 +233,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -259,14 +259,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -500,13 +500,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -526,11 +526,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 175
Capability Shader
@@ -539,6 +539,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 167 171
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -571,8 +572,8 @@ gl_FragCoord origin is upper left
Name 146 "g_tTexcdu4"
Name 153 "psout"
Name 164 "flattenTemp"
- Name 167 "Color"
- Name 171 "Depth"
+ Name 167 "@entryPointOutput.Color"
+ Name 171 "@entryPointOutput.Depth"
Name 174 "g_tTex1df4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
@@ -589,8 +590,8 @@ gl_FragCoord origin is upper left
Decorate 128(g_tTexcdf4) DescriptorSet 0
Decorate 137(g_tTexcdi4) DescriptorSet 0
Decorate 146(g_tTexcdu4) DescriptorSet 0
- Decorate 167(Color) Location 0
- Decorate 171(Depth) BuiltIn FragDepth
+ Decorate 167(@entryPointOutput.Color) Location 0
+ Decorate 171(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 174(g_tTex1df4a) DescriptorSet 0
Decorate 174(g_tTex1df4a) Binding 1
2: TypeVoid
@@ -686,9 +687,9 @@ gl_FragCoord origin is upper left
158: 28(int) Constant 1
159: TypePointer Function 6(float)
166: TypePointer Output 7(fvec4)
- 167(Color): 166(ptr) Variable Output
+167(@entryPointOutput.Color): 166(ptr) Variable Output
170: TypePointer Output 6(float)
- 171(Depth): 170(ptr) Variable Output
+171(@entryPointOutput.Depth): 170(ptr) Variable Output
174(g_tTex1df4a): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -697,10 +698,10 @@ gl_FragCoord origin is upper left
Store 164(flattenTemp) 165
168: 12(ptr) AccessChain 164(flattenTemp) 154
169: 7(fvec4) Load 168
- Store 167(Color) 169
+ Store 167(@entryPointOutput.Color) 169
172: 159(ptr) AccessChain 164(flattenTemp) 158
173: 6(float) Load 172
- Store 171(Depth) 173
+ Store 171(@entryPointOutput.Depth) 173
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
index afce97f6eb6..e5605a1a09e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
@@ -1,5 +1,5 @@
hlsl.samplegrad.basic.dx10.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:27 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:27 Function Parameters:
@@ -222,7 +222,7 @@ Shader version: 450
0:? Sequence
0:27 Sequence
0:27 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:27 Pos: direct index for structure ( temp 4-component vector of float)
0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:27 Constant:
@@ -242,13 +242,13 @@ Shader version: 450
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? '@entryPointOutput' (layout( location=0) out structure{})
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:27 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:27 Function Parameters:
@@ -471,7 +471,7 @@ Shader version: 450
0:? Sequence
0:27 Sequence
0:27 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:27 Pos: direct index for structure ( temp 4-component vector of float)
0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:27 Constant:
@@ -491,17 +491,18 @@ Shader version: 450
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? '@entryPointOutput' (layout( location=0) out structure{})
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 169
+// Generated by (magic number): 80002
+// Id's are bound by 166
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 162 168
+ EntryPoint Vertex 4 "main" 162
+ Source HLSL 500
Name 4 "main"
Name 8 "VS_OUTPUT"
MemberName 8(VS_OUTPUT) 0 "Pos"
@@ -532,10 +533,8 @@ Shader version: 450
Name 143 "txval42"
Name 146 "g_tTexcdu4"
Name 153 "vsout"
- Name 162 "@entryPointOutput_Pos"
+ Name 162 "@entryPointOutput.Pos"
Name 165 "g_tTex1df4a"
- Name 166 "VS_OUTPUT"
- Name 168 "@entryPointOutput"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
Decorate 20(g_sSamp) DescriptorSet 0
@@ -551,10 +550,9 @@ Shader version: 450
Decorate 128(g_tTexcdf4) DescriptorSet 0
Decorate 137(g_tTexcdi4) DescriptorSet 0
Decorate 146(g_tTexcdu4) DescriptorSet 0
- Decorate 162(@entryPointOutput_Pos) BuiltIn Position
+ Decorate 162(@entryPointOutput.Pos) BuiltIn Position
Decorate 165(g_tTex1df4a) DescriptorSet 0
Decorate 165(g_tTex1df4a) Binding 1
- Decorate 168(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -646,16 +644,13 @@ Shader version: 450
155: 6(float) Constant 0
156: 7(fvec4) ConstantComposite 155 155 155 155
161: TypePointer Output 7(fvec4)
-162(@entryPointOutput_Pos): 161(ptr) Variable Output
+162(@entryPointOutput.Pos): 161(ptr) Variable Output
165(g_tTex1df4a): 15(ptr) Variable UniformConstant
- 166(VS_OUTPUT): TypeStruct
- 167: TypePointer Output 166(VS_OUTPUT)
-168(@entryPointOutput): 167(ptr) Variable Output
4(main): 2 Function None 3
5: Label
163:8(VS_OUTPUT) FunctionCall 10(@main()
164: 7(fvec4) CompositeExtract 163 0
- Store 162(@entryPointOutput_Pos) 164
+ Store 162(@entryPointOutput.Pos) 164
Return
FunctionEnd
10(@main():8(VS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
index 9da0f17fb5d..2cc4742f956 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplegrad.offset.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -203,13 +203,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -229,14 +229,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -440,13 +440,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -466,11 +466,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 166
Capability Shader
@@ -479,6 +479,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 149 153
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -505,8 +506,8 @@ gl_FragCoord origin is upper left
Name 125 "g_tTex3du4"
Name 137 "psout"
Name 146 "flattenTemp"
- Name 149 "Color"
- Name 153 "Depth"
+ Name 149 "@entryPointOutput.Color"
+ Name 153 "@entryPointOutput.Depth"
Name 156 "g_tTex1df4a"
Name 159 "g_tTexcdf4"
Name 162 "g_tTexcdi4"
@@ -523,8 +524,8 @@ gl_FragCoord origin is upper left
Decorate 99(g_tTex3df4) DescriptorSet 0
Decorate 114(g_tTex3di4) DescriptorSet 0
Decorate 125(g_tTex3du4) DescriptorSet 0
- Decorate 149(Color) Location 0
- Decorate 153(Depth) BuiltIn FragDepth
+ Decorate 149(@entryPointOutput.Color) Location 0
+ Decorate 153(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 156(g_tTex1df4a) DescriptorSet 0
Decorate 156(g_tTex1df4a) Binding 1
Decorate 159(g_tTexcdf4) DescriptorSet 0
@@ -620,9 +621,9 @@ gl_FragCoord origin is upper left
139: 7(fvec4) ConstantComposite 138 138 138 138
141: TypePointer Function 6(float)
148: TypePointer Output 7(fvec4)
- 149(Color): 148(ptr) Variable Output
+149(@entryPointOutput.Color): 148(ptr) Variable Output
152: TypePointer Output 6(float)
- 153(Depth): 152(ptr) Variable Output
+153(@entryPointOutput.Depth): 152(ptr) Variable Output
156(g_tTex1df4a): 15(ptr) Variable UniformConstant
157: TypeImage 6(float) Cube sampled format:Unknown
158: TypePointer UniformConstant 157
@@ -640,10 +641,10 @@ gl_FragCoord origin is upper left
Store 146(flattenTemp) 147
150: 12(ptr) AccessChain 146(flattenTemp) 67
151: 7(fvec4) Load 150
- Store 149(Color) 151
+ Store 149(@entryPointOutput.Color) 151
154: 141(ptr) AccessChain 146(flattenTemp) 28
155: 6(float) Load 154
- Store 153(Depth) 155
+ Store 153(@entryPointOutput.Depth) 155
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
index a2abd0ffa5b..5d3c065c5ba 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplegrad.offsetarray.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -140,13 +140,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -163,14 +163,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCubeArray)
0:? 'g_tTexcdi4' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -311,13 +311,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -334,11 +334,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCubeArray)
0:? 'g_tTexcdi4' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 120
Capability Shader
@@ -348,6 +348,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 103 107
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -368,8 +369,8 @@ gl_FragCoord origin is upper left
Name 84 "g_tTex2du4"
Name 91 "psout"
Name 100 "flattenTemp"
- Name 103 "Color"
- Name 107 "Depth"
+ Name 103 "@entryPointOutput.Color"
+ Name 107 "@entryPointOutput.Depth"
Name 110 "g_tTex1df4a"
Name 113 "g_tTexcdf4"
Name 116 "g_tTexcdi4"
@@ -383,8 +384,8 @@ gl_FragCoord origin is upper left
Decorate 59(g_tTex2df4) DescriptorSet 0
Decorate 75(g_tTex2di4) DescriptorSet 0
Decorate 84(g_tTex2du4) DescriptorSet 0
- Decorate 103(Color) Location 0
- Decorate 107(Depth) BuiltIn FragDepth
+ Decorate 103(@entryPointOutput.Color) Location 0
+ Decorate 107(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 110(g_tTex1df4a) DescriptorSet 0
Decorate 110(g_tTex1df4a) Binding 1
Decorate 113(g_tTexcdf4) DescriptorSet 0
@@ -449,9 +450,9 @@ gl_FragCoord origin is upper left
93: 7(fvec4) ConstantComposite 92 92 92 92
95: TypePointer Function 6(float)
102: TypePointer Output 7(fvec4)
- 103(Color): 102(ptr) Variable Output
+103(@entryPointOutput.Color): 102(ptr) Variable Output
106: TypePointer Output 6(float)
- 107(Depth): 106(ptr) Variable Output
+107(@entryPointOutput.Depth): 106(ptr) Variable Output
110(g_tTex1df4a): 15(ptr) Variable UniformConstant
111: TypeImage 6(float) Cube array sampled format:Unknown
112: TypePointer UniformConstant 111
@@ -469,10 +470,10 @@ gl_FragCoord origin is upper left
Store 100(flattenTemp) 101
104: 12(ptr) AccessChain 100(flattenTemp) 69
105: 7(fvec4) Load 104
- Store 103(Color) 105
+ Store 103(@entryPointOutput.Color) 105
108: 95(ptr) AccessChain 100(flattenTemp) 31
109: 6(float) Load 108
- Store 107(Depth) 109
+ Store 107(@entryPointOutput.Depth) 109
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
index 88c7de93ca0..bf435df8679 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplelevel.array.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -149,13 +149,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -172,14 +172,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:24 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -329,13 +329,13 @@ gl_FragCoord origin is upper left
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:24 Color: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:24 Depth: direct index for structure ( temp float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:24 Constant:
@@ -352,11 +352,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4a' ( uniform textureCubeArray)
0:? 'g_tTexcdi4a' ( uniform itextureCubeArray)
0:? 'g_tTexcdu4a' ( uniform utextureCubeArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 147
Capability Shader
@@ -366,6 +366,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 139 143
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -392,8 +393,8 @@ gl_FragCoord origin is upper left
Name 115 "g_tTexcdu4a"
Name 126 "psout"
Name 136 "flattenTemp"
- Name 139 "Color"
- Name 143 "Depth"
+ Name 139 "@entryPointOutput.Color"
+ Name 143 "@entryPointOutput.Depth"
Name 146 "g_tTex1df4"
Decorate 16(g_tTex1df4a) DescriptorSet 0
Decorate 16(g_tTex1df4a) Binding 1
@@ -407,8 +408,8 @@ gl_FragCoord origin is upper left
Decorate 95(g_tTexcdf4a) DescriptorSet 0
Decorate 105(g_tTexcdi4a) DescriptorSet 0
Decorate 115(g_tTexcdu4a) DescriptorSet 0
- Decorate 139(Color) Location 0
- Decorate 143(Depth) BuiltIn FragDepth
+ Decorate 139(@entryPointOutput.Color) Location 0
+ Decorate 143(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 146(g_tTex1df4) DescriptorSet 0
Decorate 146(g_tTex1df4) Binding 0
2: TypeVoid
@@ -491,9 +492,9 @@ gl_FragCoord origin is upper left
130: 30(int) Constant 1
131: TypePointer Function 6(float)
138: TypePointer Output 7(fvec4)
- 139(Color): 138(ptr) Variable Output
+139(@entryPointOutput.Color): 138(ptr) Variable Output
142: TypePointer Output 6(float)
- 143(Depth): 142(ptr) Variable Output
+143(@entryPointOutput.Depth): 142(ptr) Variable Output
146(g_tTex1df4): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -502,10 +503,10 @@ gl_FragCoord origin is upper left
Store 136(flattenTemp) 137
140: 12(ptr) AccessChain 136(flattenTemp) 127
141: 7(fvec4) Load 140
- Store 139(Color) 141
+ Store 139(@entryPointOutput.Color) 141
144: 131(ptr) AccessChain 136(flattenTemp) 130
145: 6(float) Load 144
- Store 143(Depth) 145
+ Store 143(@entryPointOutput.Depth) 145
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
index 7d9f268c082..82c8b59b08c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplelevel.basic.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -179,13 +179,13 @@ gl_FragCoord origin is upper left
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:29 Color: direct index for structure ( temp 4-component vector of float)
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Constant:
0:29 0 (const int)
0:29 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:29 Depth: direct index for structure ( temp float)
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Constant:
@@ -206,14 +206,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -393,13 +393,13 @@ gl_FragCoord origin is upper left
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:29 Color: direct index for structure ( temp 4-component vector of float)
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Constant:
0:29 0 (const int)
0:29 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:29 Depth: direct index for structure ( temp float)
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:29 Constant:
@@ -420,11 +420,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 172
Capability Shader
@@ -433,6 +433,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 163 167
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -465,8 +466,8 @@ gl_FragCoord origin is upper left
Name 142 "g_tTexcdu4"
Name 149 "psout"
Name 160 "flattenTemp"
- Name 163 "Color"
- Name 167 "Depth"
+ Name 163 "@entryPointOutput.Color"
+ Name 167 "@entryPointOutput.Depth"
Name 170 "g_sSamp2d"
Name 171 "g_tTex1df4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
@@ -484,8 +485,8 @@ gl_FragCoord origin is upper left
Decorate 124(g_tTexcdf4) DescriptorSet 0
Decorate 133(g_tTexcdi4) DescriptorSet 0
Decorate 142(g_tTexcdu4) DescriptorSet 0
- Decorate 163(Color) Location 0
- Decorate 167(Depth) BuiltIn FragDepth
+ Decorate 163(@entryPointOutput.Color) Location 0
+ Decorate 167(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 170(g_sSamp2d) DescriptorSet 0
Decorate 171(g_tTex1df4a) DescriptorSet 0
Decorate 171(g_tTex1df4a) Binding 1
@@ -578,9 +579,9 @@ gl_FragCoord origin is upper left
154: 27(int) Constant 1
155: TypePointer Function 6(float)
162: TypePointer Output 7(fvec4)
- 163(Color): 162(ptr) Variable Output
+163(@entryPointOutput.Color): 162(ptr) Variable Output
166: TypePointer Output 6(float)
- 167(Depth): 166(ptr) Variable Output
+167(@entryPointOutput.Depth): 166(ptr) Variable Output
170(g_sSamp2d): 19(ptr) Variable UniformConstant
171(g_tTex1df4a): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
@@ -590,10 +591,10 @@ gl_FragCoord origin is upper left
Store 160(flattenTemp) 161
164: 12(ptr) AccessChain 160(flattenTemp) 150
165: 7(fvec4) Load 164
- Store 163(Color) 165
+ Store 163(@entryPointOutput.Color) 165
168: 155(ptr) AccessChain 160(flattenTemp) 154
169: 6(float) Load 168
- Store 167(Depth) 169
+ Store 167(@entryPointOutput.Depth) 169
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
index 40996e97638..b7e3d577553 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
@@ -1,5 +1,5 @@
hlsl.samplelevel.basic.dx10.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:27 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:27 Function Parameters:
@@ -168,7 +168,7 @@ Shader version: 450
0:? Sequence
0:27 Sequence
0:27 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:27 Pos: direct index for structure ( temp 4-component vector of float)
0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:27 Constant:
@@ -188,13 +188,13 @@ Shader version: 450
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? '@entryPointOutput' (layout( location=0) out structure{})
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:27 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:27 Function Parameters:
@@ -363,7 +363,7 @@ Shader version: 450
0:? Sequence
0:27 Sequence
0:27 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:27 Pos: direct index for structure ( temp 4-component vector of float)
0:27 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:27 Constant:
@@ -383,17 +383,18 @@ Shader version: 450
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? '@entryPointOutput' (layout( location=0) out structure{})
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 165
+// Generated by (magic number): 80002
+// Id's are bound by 162
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 158 164
+ EntryPoint Vertex 4 "main" 158
+ Source HLSL 500
Name 4 "main"
Name 8 "VS_OUTPUT"
MemberName 8(VS_OUTPUT) 0 "Pos"
@@ -424,10 +425,8 @@ Shader version: 450
Name 139 "txval42"
Name 142 "g_tTexcdu4"
Name 149 "vsout"
- Name 158 "@entryPointOutput_Pos"
+ Name 158 "@entryPointOutput.Pos"
Name 161 "g_tTex1df4a"
- Name 162 "VS_OUTPUT"
- Name 164 "@entryPointOutput"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
Decorate 20(g_sSamp) DescriptorSet 0
@@ -443,10 +442,9 @@ Shader version: 450
Decorate 124(g_tTexcdf4) DescriptorSet 0
Decorate 133(g_tTexcdi4) DescriptorSet 0
Decorate 142(g_tTexcdu4) DescriptorSet 0
- Decorate 158(@entryPointOutput_Pos) BuiltIn Position
+ Decorate 158(@entryPointOutput.Pos) BuiltIn Position
Decorate 161(g_tTex1df4a) DescriptorSet 0
Decorate 161(g_tTex1df4a) Binding 1
- Decorate 164(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -534,16 +532,13 @@ Shader version: 450
151: 6(float) Constant 0
152: 7(fvec4) ConstantComposite 151 151 151 151
157: TypePointer Output 7(fvec4)
-158(@entryPointOutput_Pos): 157(ptr) Variable Output
+158(@entryPointOutput.Pos): 157(ptr) Variable Output
161(g_tTex1df4a): 15(ptr) Variable UniformConstant
- 162(VS_OUTPUT): TypeStruct
- 163: TypePointer Output 162(VS_OUTPUT)
-164(@entryPointOutput): 163(ptr) Variable Output
4(main): 2 Function None 3
5: Label
159:8(VS_OUTPUT) FunctionCall 10(@main()
160: 7(fvec4) CompositeExtract 159 0
- Store 158(@entryPointOutput_Pos) 160
+ Store 158(@entryPointOutput.Pos) 160
Return
FunctionEnd
10(@main():8(VS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
index 2c98171209c..2080066ff44 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplelevel.offset.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -167,13 +167,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -193,14 +193,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:28 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -368,13 +368,13 @@ gl_FragCoord origin is upper left
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28 Color: direct index for structure ( temp 4-component vector of float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:28 Depth: direct index for structure ( temp float)
0:28 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:28 Constant:
@@ -394,11 +394,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTexcdf4' ( uniform textureCube)
0:? 'g_tTexcdi4' ( uniform itextureCube)
0:? 'g_tTexcdu4' ( uniform utextureCube)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 162
Capability Shader
@@ -407,6 +407,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 145 149
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -433,8 +434,8 @@ gl_FragCoord origin is upper left
Name 121 "g_tTex3du4"
Name 133 "psout"
Name 142 "flattenTemp"
- Name 145 "Color"
- Name 149 "Depth"
+ Name 145 "@entryPointOutput.Color"
+ Name 149 "@entryPointOutput.Depth"
Name 152 "g_tTex1df4a"
Name 155 "g_tTexcdf4"
Name 158 "g_tTexcdi4"
@@ -451,8 +452,8 @@ gl_FragCoord origin is upper left
Decorate 97(g_tTex3df4) DescriptorSet 0
Decorate 110(g_tTex3di4) DescriptorSet 0
Decorate 121(g_tTex3du4) DescriptorSet 0
- Decorate 145(Color) Location 0
- Decorate 149(Depth) BuiltIn FragDepth
+ Decorate 145(@entryPointOutput.Color) Location 0
+ Decorate 149(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 152(g_tTex1df4a) DescriptorSet 0
Decorate 152(g_tTex1df4a) Binding 1
Decorate 155(g_tTexcdf4) DescriptorSet 0
@@ -544,9 +545,9 @@ gl_FragCoord origin is upper left
135: 7(fvec4) ConstantComposite 134 134 134 134
137: TypePointer Function 6(float)
144: TypePointer Output 7(fvec4)
- 145(Color): 144(ptr) Variable Output
+145(@entryPointOutput.Color): 144(ptr) Variable Output
148: TypePointer Output 6(float)
- 149(Depth): 148(ptr) Variable Output
+149(@entryPointOutput.Depth): 148(ptr) Variable Output
152(g_tTex1df4a): 15(ptr) Variable UniformConstant
153: TypeImage 6(float) Cube sampled format:Unknown
154: TypePointer UniformConstant 153
@@ -564,10 +565,10 @@ gl_FragCoord origin is upper left
Store 142(flattenTemp) 143
146: 12(ptr) AccessChain 142(flattenTemp) 65
147: 7(fvec4) Load 146
- Store 145(Color) 147
+ Store 145(@entryPointOutput.Color) 147
150: 137(ptr) AccessChain 142(flattenTemp) 27
151: 6(float) Load 150
- Store 149(Depth) 151
+ Store 149(@entryPointOutput.Depth) 151
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
index 06b4c7b4bc7..7905b7575af 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
@@ -1,5 +1,5 @@
hlsl.samplelevel.offsetarray.dx10.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -122,13 +122,13 @@ gl_FragCoord origin is upper left
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:20 Color: direct index for structure ( temp 4-component vector of float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:20 Depth: direct index for structure ( temp float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
@@ -142,14 +142,14 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4' ( uniform texture2DArray)
0:? 'g_tTex2di4' ( uniform itexture2DArray)
0:? 'g_tTex2du4' ( uniform utexture2DArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -272,13 +272,13 @@ gl_FragCoord origin is upper left
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:20 Color: direct index for structure ( temp 4-component vector of float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:20 Depth: direct index for structure ( temp float)
0:20 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
@@ -292,11 +292,11 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4' ( uniform texture2DArray)
0:? 'g_tTex2di4' ( uniform itexture2DArray)
0:? 'g_tTex2du4' ( uniform utexture2DArray)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
-0:? 'Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Depth' ( out float FragDepth)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 119
Capability Shader
@@ -305,6 +305,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 111 115
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -325,8 +326,8 @@ gl_FragCoord origin is upper left
Name 88 "g_tTex2du4"
Name 99 "psout"
Name 108 "flattenTemp"
- Name 111 "Color"
- Name 115 "Depth"
+ Name 111 "@entryPointOutput.Color"
+ Name 115 "@entryPointOutput.Depth"
Name 118 "g_tTex1df4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
@@ -337,8 +338,8 @@ gl_FragCoord origin is upper left
Decorate 64(g_tTex2df4) DescriptorSet 0
Decorate 77(g_tTex2di4) DescriptorSet 0
Decorate 88(g_tTex2du4) DescriptorSet 0
- Decorate 111(Color) Location 0
- Decorate 115(Depth) BuiltIn FragDepth
+ Decorate 111(@entryPointOutput.Color) Location 0
+ Decorate 115(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 118(g_tTex1df4a) DescriptorSet 0
Decorate 118(g_tTex1df4a) Binding 1
2: TypeVoid
@@ -408,9 +409,9 @@ gl_FragCoord origin is upper left
101: 7(fvec4) ConstantComposite 100 100 100 100
103: TypePointer Function 6(float)
110: TypePointer Output 7(fvec4)
- 111(Color): 110(ptr) Variable Output
+111(@entryPointOutput.Color): 110(ptr) Variable Output
114: TypePointer Output 6(float)
- 115(Depth): 114(ptr) Variable Output
+115(@entryPointOutput.Depth): 114(ptr) Variable Output
118(g_tTex1df4a): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
@@ -419,10 +420,10 @@ gl_FragCoord origin is upper left
Store 108(flattenTemp) 109
112: 12(ptr) AccessChain 108(flattenTemp) 30
113: 7(fvec4) Load 112
- Store 111(Color) 113
+ Store 111(@entryPointOutput.Color) 113
116: 103(ptr) AccessChain 108(flattenTemp) 44
117: 6(float) Load 116
- Store 115(Depth) 117
+ Store 115(@entryPointOutput.Depth) 117
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalar-length.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalar-length.frag.out
new file mode 100644
index 00000000000..9a51962cb90
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalar-length.frag.out
@@ -0,0 +1,112 @@
+hlsl.scalar-length.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: @main( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Sequence
+0:3 move second child to first child ( temp 4-component vector of float)
+0:3 'test' ( temp 4-component vector of float)
+0:3 Constant:
+0:3 0.000000
+0:3 1.000000
+0:3 2.000000
+0:3 3.000000
+0:5 Branch: Return with expression
+0:5 Construct vec4 ( temp 4-component vector of float)
+0:5 length ( temp float)
+0:5 direct index ( temp float)
+0:5 'test' ( temp 4-component vector of float)
+0:5 Constant:
+0:5 3 (const int)
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:2 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: @main( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Sequence
+0:3 move second child to first child ( temp 4-component vector of float)
+0:3 'test' ( temp 4-component vector of float)
+0:3 Constant:
+0:3 0.000000
+0:3 1.000000
+0:3 2.000000
+0:3 3.000000
+0:5 Branch: Return with expression
+0:5 Construct vec4 ( temp 4-component vector of float)
+0:5 length ( temp float)
+0:5 direct index ( temp float)
+0:5 'test' ( temp 4-component vector of float)
+0:5 Constant:
+0:5 3 (const int)
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:2 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 30
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 28
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 12 "test"
+ Name 28 "@entryPointOutput"
+ Decorate 28(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypePointer Function 7(fvec4)
+ 13: 6(float) Constant 0
+ 14: 6(float) Constant 1065353216
+ 15: 6(float) Constant 1073741824
+ 16: 6(float) Constant 1077936128
+ 17: 7(fvec4) ConstantComposite 13 14 15 16
+ 18: TypeInt 32 0
+ 19: 18(int) Constant 3
+ 20: TypePointer Function 6(float)
+ 27: TypePointer Output 7(fvec4)
+28(@entryPointOutput): 27(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 29: 7(fvec4) FunctionCall 9(@main()
+ Store 28(@entryPointOutput) 29
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 12(test): 11(ptr) Variable Function
+ Store 12(test) 17
+ 21: 20(ptr) AccessChain 12(test) 19
+ 22: 6(float) Load 21
+ 23: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 22
+ 24: 7(fvec4) CompositeConstruct 23 23 23 23
+ ReturnValue 24
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalar2matrix.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalar2matrix.frag.out
new file mode 100644
index 00000000000..6b799f468d7
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalar2matrix.frag.out
@@ -0,0 +1,506 @@
+hlsl.scalar2matrix.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: Fn1(mf44; ( temp void)
+0:2 Function Parameters:
+0:2 'p' ( in 4X4 matrix of float)
+0:5 Function Definition: @main( ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child ( temp 4X4 matrix of float)
+0:10 'mat1' ( temp 4X4 matrix of float)
+0:10 Constant:
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:11 Sequence
+0:11 move second child to first child ( temp 4X4 matrix of float)
+0:11 'mat2' ( temp 4X4 matrix of float)
+0:11 Constant:
+0:11 3.000000
+0:11 3.100000
+0:11 3.200000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:12 Sequence
+0:12 move second child to first child ( temp 4X4 matrix of float)
+0:12 'mat3' ( temp 4X4 matrix of float)
+0:12 Constant:
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:16 move second child to first child ( temp 4X4 matrix of float)
+0:16 'mat4' ( temp 4X4 matrix of float)
+0:16 Constant:
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:17 move second child to first child ( temp 4X4 matrix of float)
+0:17 'mat4' ( temp 4X4 matrix of float)
+0:? Constant:
+0:? 4.000000
+0:? 4.100000
+0:? 4.200000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:18 move second child to first child ( temp 4X4 matrix of float)
+0:18 'mat4' ( temp 4X4 matrix of float)
+0:18 Constant:
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:20 matrix scale second child into first child ( temp 4X4 matrix of float)
+0:20 'mat4' ( temp 4X4 matrix of float)
+0:20 Constant:
+0:20 0.750000
+0:21 add second child into first child ( temp 4X4 matrix of float)
+0:21 'mat4' ( temp 4X4 matrix of float)
+0:21 Constant:
+0:21 0.750000
+0:22 subtract second child into first child ( temp 4X4 matrix of float)
+0:22 'mat4' ( temp 4X4 matrix of float)
+0:22 Constant:
+0:22 0.500000
+0:23 divide second child into first child ( temp 4X4 matrix of float)
+0:23 'mat4' ( temp 4X4 matrix of float)
+0:23 Constant:
+0:23 2.000000
+0:25 Function Call: Fn1(mf44; ( temp void)
+0:25 Constant:
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:27 Branch: Return with expression
+0:27 add ( temp 4-component vector of float)
+0:27 add ( temp 4-component vector of float)
+0:27 Constant:
+0:27 0.300000
+0:27 0.300000
+0:27 0.300000
+0:27 0.300000
+0:27 direct index ( temp 4-component vector of float)
+0:27 'mat1' ( temp 4X4 matrix of float)
+0:27 Constant:
+0:27 1 (const int)
+0:27 direct index ( temp 4-component vector of float)
+0:27 'mat4' ( temp 4X4 matrix of float)
+0:27 Constant:
+0:27 2 (const int)
+0:5 Function Definition: main( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:5 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: Fn1(mf44; ( temp void)
+0:2 Function Parameters:
+0:2 'p' ( in 4X4 matrix of float)
+0:5 Function Definition: @main( ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child ( temp 4X4 matrix of float)
+0:10 'mat1' ( temp 4X4 matrix of float)
+0:10 Constant:
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:10 0.250000
+0:11 Sequence
+0:11 move second child to first child ( temp 4X4 matrix of float)
+0:11 'mat2' ( temp 4X4 matrix of float)
+0:11 Constant:
+0:11 3.000000
+0:11 3.100000
+0:11 3.200000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:11 0.000000
+0:12 Sequence
+0:12 move second child to first child ( temp 4X4 matrix of float)
+0:12 'mat3' ( temp 4X4 matrix of float)
+0:12 Constant:
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:12 0.375000
+0:16 move second child to first child ( temp 4X4 matrix of float)
+0:16 'mat4' ( temp 4X4 matrix of float)
+0:16 Constant:
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:16 0.750000
+0:17 move second child to first child ( temp 4X4 matrix of float)
+0:17 'mat4' ( temp 4X4 matrix of float)
+0:? Constant:
+0:? 4.000000
+0:? 4.100000
+0:? 4.200000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:18 move second child to first child ( temp 4X4 matrix of float)
+0:18 'mat4' ( temp 4X4 matrix of float)
+0:18 Constant:
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:18 0.500000
+0:20 matrix scale second child into first child ( temp 4X4 matrix of float)
+0:20 'mat4' ( temp 4X4 matrix of float)
+0:20 Constant:
+0:20 0.750000
+0:21 add second child into first child ( temp 4X4 matrix of float)
+0:21 'mat4' ( temp 4X4 matrix of float)
+0:21 Constant:
+0:21 0.750000
+0:22 subtract second child into first child ( temp 4X4 matrix of float)
+0:22 'mat4' ( temp 4X4 matrix of float)
+0:22 Constant:
+0:22 0.500000
+0:23 divide second child into first child ( temp 4X4 matrix of float)
+0:23 'mat4' ( temp 4X4 matrix of float)
+0:23 Constant:
+0:23 2.000000
+0:25 Function Call: Fn1(mf44; ( temp void)
+0:25 Constant:
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:25 5.000000
+0:27 Branch: Return with expression
+0:27 add ( temp 4-component vector of float)
+0:27 add ( temp 4-component vector of float)
+0:27 Constant:
+0:27 0.300000
+0:27 0.300000
+0:27 0.300000
+0:27 0.300000
+0:27 direct index ( temp 4-component vector of float)
+0:27 'mat1' ( temp 4X4 matrix of float)
+0:27 Constant:
+0:27 1 (const int)
+0:27 direct index ( temp 4-component vector of float)
+0:27 'mat4' ( temp 4X4 matrix of float)
+0:27 Constant:
+0:27 2 (const int)
+0:5 Function Definition: main( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:5 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 96
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 94
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 12 "Fn1(mf44;"
+ Name 11 "p"
+ Name 15 "@main("
+ Name 17 "mat1"
+ Name 21 "mat2"
+ Name 29 "mat3"
+ Name 33 "mat4"
+ Name 77 "param"
+ Name 94 "@entryPointOutput"
+ Decorate 94(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeMatrix 7(fvec4) 4
+ 9: TypePointer Function 8
+ 10: TypeFunction 2 9(ptr)
+ 14: TypeFunction 7(fvec4)
+ 18: 6(float) Constant 1048576000
+ 19: 7(fvec4) ConstantComposite 18 18 18 18
+ 20: 8 ConstantComposite 19 19 19 19
+ 22: 6(float) Constant 1077936128
+ 23: 6(float) Constant 1078355558
+ 24: 6(float) Constant 1078774989
+ 25: 6(float) Constant 0
+ 26: 7(fvec4) ConstantComposite 22 23 24 25
+ 27: 7(fvec4) ConstantComposite 25 25 25 25
+ 28: 8 ConstantComposite 26 27 27 27
+ 30: 6(float) Constant 1052770304
+ 31: 7(fvec4) ConstantComposite 30 30 30 30
+ 32: 8 ConstantComposite 31 31 31 31
+ 34: 6(float) Constant 1061158912
+ 35: 7(fvec4) ConstantComposite 34 34 34 34
+ 36: 8 ConstantComposite 35 35 35 35
+ 37: 6(float) Constant 1082130432
+ 38: 6(float) Constant 1082340147
+ 39: 6(float) Constant 1082549862
+ 40: 7(fvec4) ConstantComposite 37 38 39 25
+ 41: 8 ConstantComposite 40 27 27 27
+ 42: 6(float) Constant 1056964608
+ 43: 7(fvec4) ConstantComposite 42 42 42 42
+ 44: 8 ConstantComposite 43 43 43 43
+ 69: 6(float) Constant 1073741824
+ 71: 6(float) Constant 1065353216
+ 74: 6(float) Constant 1084227584
+ 75: 7(fvec4) ConstantComposite 74 74 74 74
+ 76: 8 ConstantComposite 75 75 75 75
+ 79: 6(float) Constant 1050253722
+ 80: 7(fvec4) ConstantComposite 79 79 79 79
+ 81: TypeInt 32 1
+ 82: 81(int) Constant 1
+ 83: TypePointer Function 7(fvec4)
+ 87: 81(int) Constant 2
+ 93: TypePointer Output 7(fvec4)
+94(@entryPointOutput): 93(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 95: 7(fvec4) FunctionCall 15(@main()
+ Store 94(@entryPointOutput) 95
+ Return
+ FunctionEnd
+ 12(Fn1(mf44;): 2 Function None 10
+ 11(p): 9(ptr) FunctionParameter
+ 13: Label
+ Return
+ FunctionEnd
+ 15(@main(): 7(fvec4) Function None 14
+ 16: Label
+ 17(mat1): 9(ptr) Variable Function
+ 21(mat2): 9(ptr) Variable Function
+ 29(mat3): 9(ptr) Variable Function
+ 33(mat4): 9(ptr) Variable Function
+ 77(param): 9(ptr) Variable Function
+ Store 17(mat1) 20
+ Store 21(mat2) 28
+ Store 29(mat3) 32
+ Store 33(mat4) 36
+ Store 33(mat4) 41
+ Store 33(mat4) 44
+ 45: 8 Load 33(mat4)
+ 46: 8 MatrixTimesScalar 45 34
+ Store 33(mat4) 46
+ 47: 8 Load 33(mat4)
+ 48: 7(fvec4) CompositeConstruct 34 34 34 34
+ 49: 7(fvec4) CompositeExtract 47 0
+ 50: 7(fvec4) FAdd 49 48
+ 51: 7(fvec4) CompositeExtract 47 1
+ 52: 7(fvec4) FAdd 51 48
+ 53: 7(fvec4) CompositeExtract 47 2
+ 54: 7(fvec4) FAdd 53 48
+ 55: 7(fvec4) CompositeExtract 47 3
+ 56: 7(fvec4) FAdd 55 48
+ 57: 8 CompositeConstruct 50 52 54 56
+ Store 33(mat4) 57
+ 58: 8 Load 33(mat4)
+ 59: 7(fvec4) CompositeConstruct 42 42 42 42
+ 60: 7(fvec4) CompositeExtract 58 0
+ 61: 7(fvec4) FSub 60 59
+ 62: 7(fvec4) CompositeExtract 58 1
+ 63: 7(fvec4) FSub 62 59
+ 64: 7(fvec4) CompositeExtract 58 2
+ 65: 7(fvec4) FSub 64 59
+ 66: 7(fvec4) CompositeExtract 58 3
+ 67: 7(fvec4) FSub 66 59
+ 68: 8 CompositeConstruct 61 63 65 67
+ Store 33(mat4) 68
+ 70: 8 Load 33(mat4)
+ 72: 6(float) FDiv 71 69
+ 73: 8 MatrixTimesScalar 70 72
+ Store 33(mat4) 73
+ Store 77(param) 76
+ 78: 2 FunctionCall 12(Fn1(mf44;) 77(param)
+ 84: 83(ptr) AccessChain 17(mat1) 82
+ 85: 7(fvec4) Load 84
+ 86: 7(fvec4) FAdd 80 85
+ 88: 83(ptr) AccessChain 33(mat4) 87
+ 89: 7(fvec4) Load 88
+ 90: 7(fvec4) FAdd 86 89
+ ReturnValue 90
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalarCast.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalarCast.vert.out
new file mode 100644
index 00000000000..a0b0aa2e715
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scalarCast.vert.out
@@ -0,0 +1,493 @@
+hlsl.scalarCast.vert
+Shader version: 500
+0:? Sequence
+0:5 Function Definition: r0( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:5 Function Parameters:
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 Constant:
+0:7 2.000000
+0:7 2.000000
+0:7 2.000000
+0:7 2.000000
+0:7 2.000000
+0:7 2.000000
+0:9 Function Definition: r1( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:9 Function Parameters:
+0:? Sequence
+0:11 Branch: Return with expression
+0:11 Constant:
+0:11 3.000000
+0:11 3.000000
+0:11 3.000000
+0:11 3.000000
+0:11 3.000000
+0:11 3.000000
+0:13 Function Definition: r2( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:13 Function Parameters:
+0:? Sequence
+0:15 Branch: Return with expression
+0:15 Constant:
+0:15 0.909297
+0:15 0.909297
+0:15 0.909297
+0:15 0.909297
+0:15 0.909297
+0:15 0.909297
+0:17 Function Definition: r3( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:17 Function Parameters:
+0:? Sequence
+0:18 Sequence
+0:18 move second child to first child ( temp float)
+0:18 'f' ( temp float)
+0:18 Constant:
+0:18 2.000000
+0:19 Branch: Return with expression
+0:19 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:19 Construct vec4 ( temp 4-component vector of float)
+0:19 'f' ( temp float)
+0:19 'f' ( temp float)
+0:19 'f' ( temp float)
+0:19 'f' ( temp float)
+0:19 Construct vec2 ( temp 2-component vector of float)
+0:19 'f' ( temp float)
+0:19 'f' ( temp float)
+0:21 Function Definition: r4( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:21 Function Parameters:
+0:? Sequence
+0:22 Sequence
+0:22 move second child to first child ( temp float)
+0:22 'f' ( temp float)
+0:22 Constant:
+0:22 2.000000
+0:23 Branch: Return with expression
+0:23 Comma ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:23 move second child to first child ( temp float)
+0:23 'scalarCopy' ( temp float)
+0:23 add ( temp float)
+0:23 'f' ( temp float)
+0:23 Constant:
+0:23 1.000000
+0:23 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:23 Construct vec4 ( temp 4-component vector of float)
+0:23 'scalarCopy' ( temp float)
+0:23 'scalarCopy' ( temp float)
+0:23 'scalarCopy' ( temp float)
+0:23 'scalarCopy' ( temp float)
+0:23 Construct vec2 ( temp 2-component vector of float)
+0:23 'scalarCopy' ( temp float)
+0:23 'scalarCopy' ( temp float)
+0:25 Function Definition: r5( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:25 Function Parameters:
+0:? Sequence
+0:26 Sequence
+0:26 move second child to first child ( temp float)
+0:26 'f' ( temp float)
+0:26 Constant:
+0:26 2.000000
+0:27 Branch: Return with expression
+0:27 Comma ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:27 move second child to first child ( temp float)
+0:27 'scalarCopy' ( temp float)
+0:27 sine ( temp float)
+0:27 'f' ( temp float)
+0:27 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:27 Construct vec4 ( temp 4-component vector of float)
+0:27 'scalarCopy' ( temp float)
+0:27 'scalarCopy' ( temp float)
+0:27 'scalarCopy' ( temp float)
+0:27 'scalarCopy' ( temp float)
+0:27 Construct vec2 ( temp 2-component vector of float)
+0:27 'scalarCopy' ( temp float)
+0:27 'scalarCopy' ( temp float)
+0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 Function Parameters:
+0:? Sequence
+0:30 Sequence
+0:30 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:30 'v0' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:30 Function Call: r0( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:31 Sequence
+0:31 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:31 'v1' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:31 Function Call: r1( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:32 Sequence
+0:32 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:32 'v2' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:32 Function Call: r2( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:33 Sequence
+0:33 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:33 'v3' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:33 Function Call: r3( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:34 Sequence
+0:34 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:34 'v4' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:34 Function Call: r4( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:35 Sequence
+0:35 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:35 'v5' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:35 Function Call: r5( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:36 Branch: Return with expression
+0:36 Constant:
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:29 Function Definition: main( ( temp void)
+0:29 Function Parameters:
+0:? Sequence
+0:29 Sequence
+0:29 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.position' ( out 4-component vector of float Position)
+0:29 position: direct index for structure ( temp 4-component vector of float)
+0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 Constant:
+0:29 0 (const int)
+0:29 move second child to first child ( temp 2-component vector of float)
+0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float)
+0:29 texCoord: direct index for structure ( temp 2-component vector of float)
+0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 Constant:
+0:29 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.position' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:5 Function Definition: r0( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:5 Function Parameters:
+0:? Sequence
+0:7 Branch: Return with expression
+0:7 Constant:
+0:7 2.000000
+0:7 2.000000
+0:7 2.000000
+0:7 2.000000
+0:7 2.000000
+0:7 2.000000
+0:9 Function Definition: r1( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:9 Function Parameters:
+0:? Sequence
+0:11 Branch: Return with expression
+0:11 Constant:
+0:11 3.000000
+0:11 3.000000
+0:11 3.000000
+0:11 3.000000
+0:11 3.000000
+0:11 3.000000
+0:13 Function Definition: r2( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:13 Function Parameters:
+0:? Sequence
+0:15 Branch: Return with expression
+0:15 Constant:
+0:15 0.909297
+0:15 0.909297
+0:15 0.909297
+0:15 0.909297
+0:15 0.909297
+0:15 0.909297
+0:17 Function Definition: r3( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:17 Function Parameters:
+0:? Sequence
+0:18 Sequence
+0:18 move second child to first child ( temp float)
+0:18 'f' ( temp float)
+0:18 Constant:
+0:18 2.000000
+0:19 Branch: Return with expression
+0:19 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:19 Construct vec4 ( temp 4-component vector of float)
+0:19 'f' ( temp float)
+0:19 'f' ( temp float)
+0:19 'f' ( temp float)
+0:19 'f' ( temp float)
+0:19 Construct vec2 ( temp 2-component vector of float)
+0:19 'f' ( temp float)
+0:19 'f' ( temp float)
+0:21 Function Definition: r4( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:21 Function Parameters:
+0:? Sequence
+0:22 Sequence
+0:22 move second child to first child ( temp float)
+0:22 'f' ( temp float)
+0:22 Constant:
+0:22 2.000000
+0:23 Branch: Return with expression
+0:23 Comma ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:23 move second child to first child ( temp float)
+0:23 'scalarCopy' ( temp float)
+0:23 add ( temp float)
+0:23 'f' ( temp float)
+0:23 Constant:
+0:23 1.000000
+0:23 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:23 Construct vec4 ( temp 4-component vector of float)
+0:23 'scalarCopy' ( temp float)
+0:23 'scalarCopy' ( temp float)
+0:23 'scalarCopy' ( temp float)
+0:23 'scalarCopy' ( temp float)
+0:23 Construct vec2 ( temp 2-component vector of float)
+0:23 'scalarCopy' ( temp float)
+0:23 'scalarCopy' ( temp float)
+0:25 Function Definition: r5( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:25 Function Parameters:
+0:? Sequence
+0:26 Sequence
+0:26 move second child to first child ( temp float)
+0:26 'f' ( temp float)
+0:26 Constant:
+0:26 2.000000
+0:27 Branch: Return with expression
+0:27 Comma ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:27 move second child to first child ( temp float)
+0:27 'scalarCopy' ( temp float)
+0:27 sine ( temp float)
+0:27 'f' ( temp float)
+0:27 Construct structure ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:27 Construct vec4 ( temp 4-component vector of float)
+0:27 'scalarCopy' ( temp float)
+0:27 'scalarCopy' ( temp float)
+0:27 'scalarCopy' ( temp float)
+0:27 'scalarCopy' ( temp float)
+0:27 Construct vec2 ( temp 2-component vector of float)
+0:27 'scalarCopy' ( temp float)
+0:27 'scalarCopy' ( temp float)
+0:29 Function Definition: @main( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 Function Parameters:
+0:? Sequence
+0:30 Sequence
+0:30 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:30 'v0' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:30 Function Call: r0( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:31 Sequence
+0:31 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:31 'v1' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:31 Function Call: r1( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:32 Sequence
+0:32 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:32 'v2' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:32 Function Call: r2( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:33 Sequence
+0:33 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:33 'v3' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:33 Function Call: r3( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:34 Sequence
+0:34 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:34 'v4' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:34 Function Call: r4( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:35 Sequence
+0:35 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:35 'v5' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:35 Function Call: r5( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:36 Branch: Return with expression
+0:36 Constant:
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:29 Function Definition: main( ( temp void)
+0:29 Function Parameters:
+0:? Sequence
+0:29 Sequence
+0:29 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 Function Call: @main( ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.position' ( out 4-component vector of float Position)
+0:29 position: direct index for structure ( temp 4-component vector of float)
+0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 Constant:
+0:29 0 (const int)
+0:29 move second child to first child ( temp 2-component vector of float)
+0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float)
+0:29 texCoord: direct index for structure ( temp 2-component vector of float)
+0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
+0:29 Constant:
+0:29 1 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.position' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 120
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 108 115
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "VertexOut"
+ MemberName 9(VertexOut) 0 "position"
+ MemberName 9(VertexOut) 1 "texCoord"
+ Name 11 "r0("
+ Name 13 "r1("
+ Name 15 "r2("
+ Name 17 "r3("
+ Name 19 "r4("
+ Name 21 "r5("
+ Name 23 "@main("
+ Name 44 "f"
+ Name 56 "f"
+ Name 57 "scalarCopy"
+ Name 72 "f"
+ Name 73 "scalarCopy"
+ Name 88 "v0"
+ Name 90 "v1"
+ Name 92 "v2"
+ Name 94 "v3"
+ Name 96 "v4"
+ Name 98 "v5"
+ Name 105 "flattenTemp"
+ Name 108 "@entryPointOutput.position"
+ Name 115 "@entryPointOutput.texCoord"
+ Decorate 108(@entryPointOutput.position) BuiltIn Position
+ Decorate 115(@entryPointOutput.texCoord) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 2
+ 9(VertexOut): TypeStruct 7(fvec4) 8(fvec2)
+ 10: TypeFunction 9(VertexOut)
+ 25: 6(float) Constant 1073741824
+ 26: 7(fvec4) ConstantComposite 25 25 25 25
+ 27: 8(fvec2) ConstantComposite 25 25
+ 28:9(VertexOut) ConstantComposite 26 27
+ 31: 6(float) Constant 1077936128
+ 32: 7(fvec4) ConstantComposite 31 31 31 31
+ 33: 8(fvec2) ConstantComposite 31 31
+ 34:9(VertexOut) ConstantComposite 32 33
+ 37: 6(float) Constant 1063831479
+ 38: 7(fvec4) ConstantComposite 37 37 37 37
+ 39: 8(fvec2) ConstantComposite 37 37
+ 40:9(VertexOut) ConstantComposite 38 39
+ 43: TypePointer Function 6(float)
+ 59: 6(float) Constant 1065353216
+ 87: TypePointer Function 9(VertexOut)
+ 100: 7(fvec4) ConstantComposite 59 59 59 59
+ 101: 8(fvec2) ConstantComposite 59 59
+ 102:9(VertexOut) ConstantComposite 100 101
+ 107: TypePointer Output 7(fvec4)
+108(@entryPointOutput.position): 107(ptr) Variable Output
+ 109: TypeInt 32 1
+ 110: 109(int) Constant 0
+ 111: TypePointer Function 7(fvec4)
+ 114: TypePointer Output 8(fvec2)
+115(@entryPointOutput.texCoord): 114(ptr) Variable Output
+ 116: 109(int) Constant 1
+ 117: TypePointer Function 8(fvec2)
+ 4(main): 2 Function None 3
+ 5: Label
+105(flattenTemp): 87(ptr) Variable Function
+ 106:9(VertexOut) FunctionCall 23(@main()
+ Store 105(flattenTemp) 106
+ 112: 111(ptr) AccessChain 105(flattenTemp) 110
+ 113: 7(fvec4) Load 112
+ Store 108(@entryPointOutput.position) 113
+ 118: 117(ptr) AccessChain 105(flattenTemp) 116
+ 119: 8(fvec2) Load 118
+ Store 115(@entryPointOutput.texCoord) 119
+ Return
+ FunctionEnd
+ 11(r0():9(VertexOut) Function None 10
+ 12: Label
+ ReturnValue 28
+ FunctionEnd
+ 13(r1():9(VertexOut) Function None 10
+ 14: Label
+ ReturnValue 34
+ FunctionEnd
+ 15(r2():9(VertexOut) Function None 10
+ 16: Label
+ ReturnValue 40
+ FunctionEnd
+ 17(r3():9(VertexOut) Function None 10
+ 18: Label
+ 44(f): 43(ptr) Variable Function
+ Store 44(f) 25
+ 45: 6(float) Load 44(f)
+ 46: 6(float) Load 44(f)
+ 47: 6(float) Load 44(f)
+ 48: 6(float) Load 44(f)
+ 49: 7(fvec4) CompositeConstruct 45 46 47 48
+ 50: 6(float) Load 44(f)
+ 51: 6(float) Load 44(f)
+ 52: 8(fvec2) CompositeConstruct 50 51
+ 53:9(VertexOut) CompositeConstruct 49 52
+ ReturnValue 53
+ FunctionEnd
+ 19(r4():9(VertexOut) Function None 10
+ 20: Label
+ 56(f): 43(ptr) Variable Function
+ 57(scalarCopy): 43(ptr) Variable Function
+ Store 56(f) 25
+ 58: 6(float) Load 56(f)
+ 60: 6(float) FAdd 58 59
+ Store 57(scalarCopy) 60
+ 61: 6(float) Load 57(scalarCopy)
+ 62: 6(float) Load 57(scalarCopy)
+ 63: 6(float) Load 57(scalarCopy)
+ 64: 6(float) Load 57(scalarCopy)
+ 65: 7(fvec4) CompositeConstruct 61 62 63 64
+ 66: 6(float) Load 57(scalarCopy)
+ 67: 6(float) Load 57(scalarCopy)
+ 68: 8(fvec2) CompositeConstruct 66 67
+ 69:9(VertexOut) CompositeConstruct 65 68
+ ReturnValue 69
+ FunctionEnd
+ 21(r5():9(VertexOut) Function None 10
+ 22: Label
+ 72(f): 43(ptr) Variable Function
+ 73(scalarCopy): 43(ptr) Variable Function
+ Store 72(f) 25
+ 74: 6(float) Load 72(f)
+ 75: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 74
+ Store 73(scalarCopy) 75
+ 76: 6(float) Load 73(scalarCopy)
+ 77: 6(float) Load 73(scalarCopy)
+ 78: 6(float) Load 73(scalarCopy)
+ 79: 6(float) Load 73(scalarCopy)
+ 80: 7(fvec4) CompositeConstruct 76 77 78 79
+ 81: 6(float) Load 73(scalarCopy)
+ 82: 6(float) Load 73(scalarCopy)
+ 83: 8(fvec2) CompositeConstruct 81 82
+ 84:9(VertexOut) CompositeConstruct 80 83
+ ReturnValue 84
+ FunctionEnd
+ 23(@main():9(VertexOut) Function None 10
+ 24: Label
+ 88(v0): 87(ptr) Variable Function
+ 90(v1): 87(ptr) Variable Function
+ 92(v2): 87(ptr) Variable Function
+ 94(v3): 87(ptr) Variable Function
+ 96(v4): 87(ptr) Variable Function
+ 98(v5): 87(ptr) Variable Function
+ 89:9(VertexOut) FunctionCall 11(r0()
+ Store 88(v0) 89
+ 91:9(VertexOut) FunctionCall 13(r1()
+ Store 90(v1) 91
+ 93:9(VertexOut) FunctionCall 15(r2()
+ Store 92(v2) 93
+ 95:9(VertexOut) FunctionCall 17(r3()
+ Store 94(v3) 95
+ 97:9(VertexOut) FunctionCall 19(r4()
+ Store 96(v4) 97
+ 99:9(VertexOut) FunctionCall 21(r5()
+ Store 98(v5) 99
+ ReturnValue 102
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scope.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scope.frag.out
index d3409d8b2fb..b7cc2a2276b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scope.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.scope.frag.out
@@ -1,5 +1,5 @@
hlsl.scope.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp void)
@@ -52,7 +52,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp void)
@@ -102,7 +102,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 49
Capability Shader
@@ -110,6 +110,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 44
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "@PixelShaderFunction(vf4;"
Name 10 "input"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic-1.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic-1.vert.out
new file mode 100644
index 00000000000..7e4885c4e5d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic-1.vert.out
@@ -0,0 +1,374 @@
+hlsl.semantic-1.vert
+Shader version: 500
+0:? Sequence
+0:16 Function Definition: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Function Parameters:
+0:16 'v' ( in 4-component vector of float)
+0:? Sequence
+0:18 move second child to first child ( temp 4-component vector of float)
+0:18 pos: direct index for structure ( temp 4-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:18 Constant:
+0:18 0 (const int)
+0:18 'v' ( in 4-component vector of float)
+0:19 move second child to first child ( temp 2-component vector of float)
+0:19 UV0: direct index for structure ( temp 2-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:19 Constant:
+0:19 1 (const int)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:19 direct index ( temp float)
+0:19 'v' ( in 4-component vector of float)
+0:19 Constant:
+0:19 0 (const int)
+0:19 direct index ( temp float)
+0:19 'v' ( in 4-component vector of float)
+0:19 Constant:
+0:19 0 (const int)
+0:20 move second child to first child ( temp 2-component vector of float)
+0:20 UV1: direct index for structure ( temp 2-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:20 Constant:
+0:20 2 (const int)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:20 direct index ( temp float)
+0:20 'v' ( in 4-component vector of float)
+0:20 Constant:
+0:20 1 (const int)
+0:20 direct index ( temp float)
+0:20 'v' ( in 4-component vector of float)
+0:20 Constant:
+0:20 1 (const int)
+0:21 move second child to first child ( temp 2-component vector of float)
+0:21 UV2: direct index for structure ( temp 2-component vector of float)
+0:21 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:21 Constant:
+0:21 3 (const int)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:21 direct index ( temp float)
+0:21 'v' ( in 4-component vector of float)
+0:21 Constant:
+0:21 2 (const int)
+0:21 direct index ( temp float)
+0:21 'v' ( in 4-component vector of float)
+0:21 Constant:
+0:21 2 (const int)
+0:22 move second child to first child ( temp 2-component vector of float)
+0:22 UV3: direct index for structure ( temp 2-component vector of float)
+0:22 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:22 Constant:
+0:22 4 (const int)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:22 direct index ( temp float)
+0:22 'v' ( in 4-component vector of float)
+0:22 Constant:
+0:22 3 (const int)
+0:22 direct index ( temp float)
+0:22 'v' ( in 4-component vector of float)
+0:22 Constant:
+0:22 3 (const int)
+0:23 Branch: Return with expression
+0:23 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Function Definition: main( ( temp void)
+0:16 Function Parameters:
+0:? Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:? 'v' ( temp 4-component vector of float)
+0:? 'v' (layout( location=0) in 4-component vector of float)
+0:16 Sequence
+0:16 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Function Call: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:? 'v' ( temp 4-component vector of float)
+0:16 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:16 pos: direct index for structure ( temp 4-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Constant:
+0:16 0 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float)
+0:16 UV0: direct index for structure ( temp 2-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Constant:
+0:16 1 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float)
+0:16 UV1: direct index for structure ( temp 2-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Constant:
+0:16 2 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float)
+0:16 UV2: direct index for structure ( temp 2-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Constant:
+0:16 3 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float)
+0:16 UV3: direct index for structure ( temp 2-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Constant:
+0:16 4 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float)
+0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float)
+0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float)
+0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float)
+0:? 'v' (layout( location=0) in 4-component vector of float)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:16 Function Definition: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Function Parameters:
+0:16 'v' ( in 4-component vector of float)
+0:? Sequence
+0:18 move second child to first child ( temp 4-component vector of float)
+0:18 pos: direct index for structure ( temp 4-component vector of float)
+0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:18 Constant:
+0:18 0 (const int)
+0:18 'v' ( in 4-component vector of float)
+0:19 move second child to first child ( temp 2-component vector of float)
+0:19 UV0: direct index for structure ( temp 2-component vector of float)
+0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:19 Constant:
+0:19 1 (const int)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:19 direct index ( temp float)
+0:19 'v' ( in 4-component vector of float)
+0:19 Constant:
+0:19 0 (const int)
+0:19 direct index ( temp float)
+0:19 'v' ( in 4-component vector of float)
+0:19 Constant:
+0:19 0 (const int)
+0:20 move second child to first child ( temp 2-component vector of float)
+0:20 UV1: direct index for structure ( temp 2-component vector of float)
+0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:20 Constant:
+0:20 2 (const int)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:20 direct index ( temp float)
+0:20 'v' ( in 4-component vector of float)
+0:20 Constant:
+0:20 1 (const int)
+0:20 direct index ( temp float)
+0:20 'v' ( in 4-component vector of float)
+0:20 Constant:
+0:20 1 (const int)
+0:21 move second child to first child ( temp 2-component vector of float)
+0:21 UV2: direct index for structure ( temp 2-component vector of float)
+0:21 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:21 Constant:
+0:21 3 (const int)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:21 direct index ( temp float)
+0:21 'v' ( in 4-component vector of float)
+0:21 Constant:
+0:21 2 (const int)
+0:21 direct index ( temp float)
+0:21 'v' ( in 4-component vector of float)
+0:21 Constant:
+0:21 2 (const int)
+0:22 move second child to first child ( temp 2-component vector of float)
+0:22 UV3: direct index for structure ( temp 2-component vector of float)
+0:22 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:22 Constant:
+0:22 4 (const int)
+0:? Construct vec2 ( temp 2-component vector of float)
+0:22 direct index ( temp float)
+0:22 'v' ( in 4-component vector of float)
+0:22 Constant:
+0:22 3 (const int)
+0:22 direct index ( temp float)
+0:22 'v' ( in 4-component vector of float)
+0:22 Constant:
+0:22 3 (const int)
+0:23 Branch: Return with expression
+0:23 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Function Definition: main( ( temp void)
+0:16 Function Parameters:
+0:? Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:? 'v' ( temp 4-component vector of float)
+0:? 'v' (layout( location=0) in 4-component vector of float)
+0:16 Sequence
+0:16 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Function Call: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:? 'v' ( temp 4-component vector of float)
+0:16 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:16 pos: direct index for structure ( temp 4-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Constant:
+0:16 0 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float)
+0:16 UV0: direct index for structure ( temp 2-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Constant:
+0:16 1 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float)
+0:16 UV1: direct index for structure ( temp 2-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Constant:
+0:16 2 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float)
+0:16 UV2: direct index for structure ( temp 2-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Constant:
+0:16 3 (const int)
+0:16 move second child to first child ( temp 2-component vector of float)
+0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float)
+0:16 UV3: direct index for structure ( temp 2-component vector of float)
+0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3})
+0:16 Constant:
+0:16 4 (const int)
+0:? Linker Objects
+0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float)
+0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float)
+0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float)
+0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float)
+0:? 'v' (layout( location=0) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 84
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 61 68 72 75 78 81
+ Source HLSL 500
+ Name 4 "main"
+ Name 10 "S"
+ MemberName 10(S) 0 "pos"
+ MemberName 10(S) 1 "UV0"
+ MemberName 10(S) 2 "UV1"
+ MemberName 10(S) 3 "UV2"
+ MemberName 10(S) 4 "UV3"
+ Name 13 "@main(vf4;"
+ Name 12 "v"
+ Name 16 "s"
+ Name 59 "v"
+ Name 61 "v"
+ Name 63 "flattenTemp"
+ Name 64 "param"
+ Name 68 "@entryPointOutput.pos"
+ Name 72 "@entryPointOutput.UV0"
+ Name 75 "@entryPointOutput.UV1"
+ Name 78 "@entryPointOutput.UV2"
+ Name 81 "@entryPointOutput.UV3"
+ Decorate 61(v) Location 0
+ Decorate 68(@entryPointOutput.pos) Location 0
+ Decorate 72(@entryPointOutput.UV0) Location 1
+ Decorate 75(@entryPointOutput.UV1) Location 2
+ Decorate 78(@entryPointOutput.UV2) Location 3
+ Decorate 81(@entryPointOutput.UV3) Location 4
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeVector 6(float) 2
+ 10(S): TypeStruct 7(fvec4) 9(fvec2) 9(fvec2) 9(fvec2) 9(fvec2)
+ 11: TypeFunction 10(S) 8(ptr)
+ 15: TypePointer Function 10(S)
+ 17: TypeInt 32 1
+ 18: 17(int) Constant 0
+ 21: 17(int) Constant 1
+ 22: TypeInt 32 0
+ 23: 22(int) Constant 0
+ 24: TypePointer Function 6(float)
+ 30: TypePointer Function 9(fvec2)
+ 32: 17(int) Constant 2
+ 33: 22(int) Constant 1
+ 40: 17(int) Constant 3
+ 41: 22(int) Constant 2
+ 48: 17(int) Constant 4
+ 49: 22(int) Constant 3
+ 60: TypePointer Input 7(fvec4)
+ 61(v): 60(ptr) Variable Input
+ 67: TypePointer Output 7(fvec4)
+68(@entryPointOutput.pos): 67(ptr) Variable Output
+ 71: TypePointer Output 9(fvec2)
+72(@entryPointOutput.UV0): 71(ptr) Variable Output
+75(@entryPointOutput.UV1): 71(ptr) Variable Output
+78(@entryPointOutput.UV2): 71(ptr) Variable Output
+81(@entryPointOutput.UV3): 71(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 59(v): 8(ptr) Variable Function
+ 63(flattenTemp): 15(ptr) Variable Function
+ 64(param): 8(ptr) Variable Function
+ 62: 7(fvec4) Load 61(v)
+ Store 59(v) 62
+ 65: 7(fvec4) Load 59(v)
+ Store 64(param) 65
+ 66: 10(S) FunctionCall 13(@main(vf4;) 64(param)
+ Store 63(flattenTemp) 66
+ 69: 8(ptr) AccessChain 63(flattenTemp) 18
+ 70: 7(fvec4) Load 69
+ Store 68(@entryPointOutput.pos) 70
+ 73: 30(ptr) AccessChain 63(flattenTemp) 21
+ 74: 9(fvec2) Load 73
+ Store 72(@entryPointOutput.UV0) 74
+ 76: 30(ptr) AccessChain 63(flattenTemp) 32
+ 77: 9(fvec2) Load 76
+ Store 75(@entryPointOutput.UV1) 77
+ 79: 30(ptr) AccessChain 63(flattenTemp) 40
+ 80: 9(fvec2) Load 79
+ Store 78(@entryPointOutput.UV2) 80
+ 82: 30(ptr) AccessChain 63(flattenTemp) 48
+ 83: 9(fvec2) Load 82
+ Store 81(@entryPointOutput.UV3) 83
+ Return
+ FunctionEnd
+ 13(@main(vf4;): 10(S) Function None 11
+ 12(v): 8(ptr) FunctionParameter
+ 14: Label
+ 16(s): 15(ptr) Variable Function
+ 19: 7(fvec4) Load 12(v)
+ 20: 8(ptr) AccessChain 16(s) 18
+ Store 20 19
+ 25: 24(ptr) AccessChain 12(v) 23
+ 26: 6(float) Load 25
+ 27: 24(ptr) AccessChain 12(v) 23
+ 28: 6(float) Load 27
+ 29: 9(fvec2) CompositeConstruct 26 28
+ 31: 30(ptr) AccessChain 16(s) 21
+ Store 31 29
+ 34: 24(ptr) AccessChain 12(v) 33
+ 35: 6(float) Load 34
+ 36: 24(ptr) AccessChain 12(v) 33
+ 37: 6(float) Load 36
+ 38: 9(fvec2) CompositeConstruct 35 37
+ 39: 30(ptr) AccessChain 16(s) 32
+ Store 39 38
+ 42: 24(ptr) AccessChain 12(v) 41
+ 43: 6(float) Load 42
+ 44: 24(ptr) AccessChain 12(v) 41
+ 45: 6(float) Load 44
+ 46: 9(fvec2) CompositeConstruct 43 45
+ 47: 30(ptr) AccessChain 16(s) 40
+ Store 47 46
+ 50: 24(ptr) AccessChain 12(v) 49
+ 51: 6(float) Load 50
+ 52: 24(ptr) AccessChain 12(v) 49
+ 53: 6(float) Load 52
+ 54: 9(fvec2) CompositeConstruct 51 53
+ 55: 30(ptr) AccessChain 16(s) 48
+ Store 55 54
+ 56: 10(S) Load 16(s)
+ ReturnValue 56
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic.geom.out
index caed636d1cf..5e2214a6adc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic.geom.out
@@ -1,137 +1,163 @@
hlsl.semantic.geom
-Shader version: 450
+Shader version: 500
invocations = -1
max_vertices = 4
input primitive = triangles
output primitive = line_strip
0:? Sequence
-0:12 Function Definition: @main(u1[3];struct-S-f1-f1-u1-u1-i11; ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Function Parameters:
-0:12 'VertexID' ( in 3-element array of uint)
-0:12 'OutputStream' ( out structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:13 Function Definition: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
+0:13 Function Parameters:
+0:13 'VertexID' ( in 3-element array of uint)
+0:13 'OutputStream' ( out structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:? Sequence
-0:14 Branch: Return with expression
-0:14 's' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Function Definition: main( ( temp void)
-0:12 Function Parameters:
+0:15 Sequence
+0:15 Sequence
+0:15 move second child to first child ( temp float)
+0:? 'OutputStream.clip0' ( out float Position)
+0:15 clip0: direct index for structure ( temp float)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 0 (const int)
+0:? Sequence
+0:15 move second child to first child ( temp float)
+0:15 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
+0:15 Constant:
+0:15 0 (const int)
+0:15 clip0: direct index for structure ( temp float)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 1 (const int)
+0:? Sequence
+0:15 move second child to first child ( temp float)
+0:15 direct index ( out float CullDistance)
+0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
+0:15 Constant:
+0:15 0 (const int)
+0:15 cull0: direct index for structure ( temp float)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 2 (const int)
+0:15 move second child to first child ( temp uint)
+0:? 'OutputStream.vpai' ( out uint ViewportIndex)
+0:15 vpai: direct index for structure ( temp uint)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 3 (const int)
+0:15 move second child to first child ( temp uint)
+0:? 'OutputStream.rtai' ( out uint Layer)
+0:15 rtai: direct index for structure ( temp uint)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 4 (const int)
+0:15 move second child to first child ( temp int)
+0:? 'OutputStream.ii' (layout( location=0) out int)
+0:15 ii: direct index for structure ( temp int)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 5 (const int)
+0:15 EmitVertex ( temp void)
+0:13 Function Definition: main( ( temp void)
+0:13 Function Parameters:
0:? Sequence
-0:12 move second child to first child ( temp 3-element array of uint)
+0:13 move second child to first child ( temp 3-element array of uint)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
-0:12 Sequence
-0:12 move second child to first child ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Function Call: @main(u1[3];struct-S-f1-f1-u1-u1-i11; ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:? 'VertexID' ( temp 3-element array of uint)
-0:? 'OutputStream' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_clip0' ( out float ClipDistance)
-0:12 clip0: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Constant:
-0:12 0 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_cull0' ( out float CullDistance)
-0:12 cull0: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Constant:
-0:12 1 (const int)
-0:12 move second child to first child ( temp uint)
-0:? '@entryPointOutput_vpai' ( out uint ViewportIndex)
-0:12 vpai: direct index for structure ( temp uint)
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Constant:
-0:12 2 (const int)
-0:12 move second child to first child ( temp uint)
-0:? '@entryPointOutput_rtai' ( out uint Layer)
-0:12 rtai: direct index for structure ( temp uint)
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Constant:
-0:12 3 (const int)
-0:12 move second child to first child ( temp int)
-0:12 ii: direct index for structure ( temp int)
-0:12 '@entryPointOutput' (layout( location=0) out structure{ temp int ii})
-0:12 Constant:
-0:12 0 (const int)
-0:12 ii: direct index for structure ( temp int)
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Constant:
-0:12 4 (const int)
+0:13 Function Call: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'OutputStream' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp int ii})
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
-0:? '@entryPointOutput_vpai' ( out uint ViewportIndex)
+0:? 'OutputStream.clip0' ( out float Position)
+0:? 'OutputStream.vpai' ( out uint ViewportIndex)
+0:? 'OutputStream.rtai' ( out uint Layer)
+0:? 'OutputStream.ii' (layout( location=0) out int)
+0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
+0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
Linked geometry stage:
-Shader version: 450
+Shader version: 500
invocations = 1
max_vertices = 4
input primitive = triangles
output primitive = line_strip
0:? Sequence
-0:12 Function Definition: @main(u1[3];struct-S-f1-f1-u1-u1-i11; ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Function Parameters:
-0:12 'VertexID' ( in 3-element array of uint)
-0:12 'OutputStream' ( out structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:13 Function Definition: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
+0:13 Function Parameters:
+0:13 'VertexID' ( in 3-element array of uint)
+0:13 'OutputStream' ( out structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:? Sequence
-0:14 Branch: Return with expression
-0:14 's' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Function Definition: main( ( temp void)
-0:12 Function Parameters:
+0:15 Sequence
+0:15 Sequence
+0:15 move second child to first child ( temp float)
+0:? 'OutputStream.clip0' ( out float Position)
+0:15 clip0: direct index for structure ( temp float)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 0 (const int)
+0:? Sequence
+0:15 move second child to first child ( temp float)
+0:15 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
+0:15 Constant:
+0:15 0 (const int)
+0:15 clip0: direct index for structure ( temp float)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 1 (const int)
+0:? Sequence
+0:15 move second child to first child ( temp float)
+0:15 direct index ( out float CullDistance)
+0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
+0:15 Constant:
+0:15 0 (const int)
+0:15 cull0: direct index for structure ( temp float)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 2 (const int)
+0:15 move second child to first child ( temp uint)
+0:? 'OutputStream.vpai' ( out uint ViewportIndex)
+0:15 vpai: direct index for structure ( temp uint)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 3 (const int)
+0:15 move second child to first child ( temp uint)
+0:? 'OutputStream.rtai' ( out uint Layer)
+0:15 rtai: direct index for structure ( temp uint)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 4 (const int)
+0:15 move second child to first child ( temp int)
+0:? 'OutputStream.ii' (layout( location=0) out int)
+0:15 ii: direct index for structure ( temp int)
+0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:15 Constant:
+0:15 5 (const int)
+0:15 EmitVertex ( temp void)
+0:13 Function Definition: main( ( temp void)
+0:13 Function Parameters:
0:? Sequence
-0:12 move second child to first child ( temp 3-element array of uint)
+0:13 move second child to first child ( temp 3-element array of uint)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
-0:12 Sequence
-0:12 move second child to first child ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Function Call: @main(u1[3];struct-S-f1-f1-u1-u1-i11; ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:? 'VertexID' ( temp 3-element array of uint)
-0:? 'OutputStream' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_clip0' ( out float ClipDistance)
-0:12 clip0: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Constant:
-0:12 0 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_cull0' ( out float CullDistance)
-0:12 cull0: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Constant:
-0:12 1 (const int)
-0:12 move second child to first child ( temp uint)
-0:? '@entryPointOutput_vpai' ( out uint ViewportIndex)
-0:12 vpai: direct index for structure ( temp uint)
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Constant:
-0:12 2 (const int)
-0:12 move second child to first child ( temp uint)
-0:? '@entryPointOutput_rtai' ( out uint Layer)
-0:12 rtai: direct index for structure ( temp uint)
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Constant:
-0:12 3 (const int)
-0:12 move second child to first child ( temp int)
-0:12 ii: direct index for structure ( temp int)
-0:12 '@entryPointOutput' (layout( location=0) out structure{ temp int ii})
-0:12 Constant:
-0:12 0 (const int)
-0:12 ii: direct index for structure ( temp int)
-0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
-0:12 Constant:
-0:12 4 (const int)
+0:13 Function Call: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
+0:? 'VertexID' ( temp 3-element array of uint)
+0:? 'OutputStream' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp int ii})
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
-0:? '@entryPointOutput_vpai' ( out uint ViewportIndex)
+0:? 'OutputStream.clip0' ( out float Position)
+0:? 'OutputStream.vpai' ( out uint ViewportIndex)
+0:? 'OutputStream.rtai' ( out uint Layer)
+0:? 'OutputStream.ii' (layout( location=0) out int)
+0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
+0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 62
+// Generated by (magic number): 80002
+// Id's are bound by 65
Capability Geometry
Capability ClipDistance
@@ -139,41 +165,42 @@ output primitive = line_strip
Capability MultiViewport
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Geometry 4 "main" 25 34 39 44 49 55
+ EntryPoint Geometry 4 "main" 20 29 34 40 45 50 57
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputLineStrip
ExecutionMode 4 OutputVertices 4
+ Source HLSL 500
Name 4 "main"
Name 12 "S"
MemberName 12(S) 0 "clip0"
- MemberName 12(S) 1 "cull0"
- MemberName 12(S) 2 "vpai"
- MemberName 12(S) 3 "rtai"
- MemberName 12(S) 4 "ii"
- Name 17 "@main(u1[3];struct-S-f1-f1-u1-u1-i11;"
+ MemberName 12(S) 1 "clip0"
+ MemberName 12(S) 2 "cull0"
+ MemberName 12(S) 3 "vpai"
+ MemberName 12(S) 4 "rtai"
+ MemberName 12(S) 5 "ii"
+ Name 17 "@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;"
Name 15 "VertexID"
Name 16 "OutputStream"
- Name 19 "s"
- Name 23 "VertexID"
- Name 25 "VertexID"
- Name 27 "flattenTemp"
- Name 28 "OutputStream"
- Name 29 "param"
- Name 31 "param"
- Name 34 "@entryPointOutput_clip0"
- Name 39 "@entryPointOutput_cull0"
- Name 44 "@entryPointOutput_vpai"
- Name 49 "@entryPointOutput_rtai"
- Name 53 "S"
- MemberName 53(S) 0 "ii"
- Name 55 "@entryPointOutput"
- Decorate 25(VertexID) Location 0
- Decorate 34(@entryPointOutput_clip0) BuiltIn ClipDistance
- Decorate 39(@entryPointOutput_cull0) BuiltIn CullDistance
- Decorate 44(@entryPointOutput_vpai) BuiltIn ViewportIndex
- Decorate 49(@entryPointOutput_rtai) BuiltIn Layer
- Decorate 55(@entryPointOutput) Location 0
+ Name 20 "OutputStream.clip0"
+ Name 21 "s"
+ Name 29 "OutputStream.clip0"
+ Name 34 "OutputStream.cull0"
+ Name 40 "OutputStream.vpai"
+ Name 45 "OutputStream.rtai"
+ Name 50 "OutputStream.ii"
+ Name 55 "VertexID"
+ Name 57 "VertexID"
+ Name 59 "OutputStream"
+ Name 60 "param"
+ Name 62 "param"
+ Decorate 20(OutputStream.clip0) BuiltIn Position
+ Decorate 29(OutputStream.clip0) BuiltIn ClipDistance
+ Decorate 34(OutputStream.cull0) BuiltIn CullDistance
+ Decorate 40(OutputStream.vpai) BuiltIn ViewportIndex
+ Decorate 45(OutputStream.rtai) BuiltIn Layer
+ Decorate 50(OutputStream.ii) Location 0
+ Decorate 57(VertexID) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -182,65 +209,72 @@ output primitive = line_strip
9: TypePointer Function 8
10: TypeFloat 32
11: TypeInt 32 1
- 12(S): TypeStruct 10(float) 10(float) 6(int) 6(int) 11(int)
+ 12(S): TypeStruct 10(float) 10(float) 10(float) 6(int) 6(int) 11(int)
13: TypePointer Function 12(S)
- 14: TypeFunction 12(S) 9(ptr) 13(ptr)
- 24: TypePointer Input 8
- 25(VertexID): 24(ptr) Variable Input
- 33: TypePointer Output 10(float)
-34(@entryPointOutput_clip0): 33(ptr) Variable Output
- 35: 11(int) Constant 0
- 36: TypePointer Function 10(float)
-39(@entryPointOutput_cull0): 33(ptr) Variable Output
- 40: 11(int) Constant 1
- 43: TypePointer Output 6(int)
-44(@entryPointOutput_vpai): 43(ptr) Variable Output
- 45: 11(int) Constant 2
- 46: TypePointer Function 6(int)
-49(@entryPointOutput_rtai): 43(ptr) Variable Output
- 50: 11(int) Constant 3
- 53(S): TypeStruct 11(int)
- 54: TypePointer Output 53(S)
-55(@entryPointOutput): 54(ptr) Variable Output
- 56: 11(int) Constant 4
- 57: TypePointer Function 11(int)
- 60: TypePointer Output 11(int)
+ 14: TypeFunction 2 9(ptr) 13(ptr)
+ 19: TypePointer Output 10(float)
+20(OutputStream.clip0): 19(ptr) Variable Output
+ 22: 11(int) Constant 0
+ 23: TypePointer Function 10(float)
+ 26: 6(int) Constant 1
+ 27: TypeArray 10(float) 26
+ 28: TypePointer Output 27
+29(OutputStream.clip0): 28(ptr) Variable Output
+ 30: 11(int) Constant 1
+34(OutputStream.cull0): 28(ptr) Variable Output
+ 35: 11(int) Constant 2
+ 39: TypePointer Output 6(int)
+40(OutputStream.vpai): 39(ptr) Variable Output
+ 41: 11(int) Constant 3
+ 42: TypePointer Function 6(int)
+45(OutputStream.rtai): 39(ptr) Variable Output
+ 46: 11(int) Constant 4
+ 49: TypePointer Output 11(int)
+50(OutputStream.ii): 49(ptr) Variable Output
+ 51: 11(int) Constant 5
+ 52: TypePointer Function 11(int)
+ 56: TypePointer Input 8
+ 57(VertexID): 56(ptr) Variable Input
4(main): 2 Function None 3
5: Label
- 23(VertexID): 9(ptr) Variable Function
- 27(flattenTemp): 13(ptr) Variable Function
-28(OutputStream): 13(ptr) Variable Function
- 29(param): 9(ptr) Variable Function
- 31(param): 13(ptr) Variable Function
- 26: 8 Load 25(VertexID)
- Store 23(VertexID) 26
- 30: 8 Load 23(VertexID)
- Store 29(param) 30
- 32: 12(S) FunctionCall 17(@main(u1[3];struct-S-f1-f1-u1-u1-i11;) 29(param) 31(param)
- Store 27(flattenTemp) 32
- 37: 36(ptr) AccessChain 27(flattenTemp) 35
- 38: 10(float) Load 37
- Store 34(@entryPointOutput_clip0) 38
- 41: 36(ptr) AccessChain 27(flattenTemp) 40
- 42: 10(float) Load 41
- Store 39(@entryPointOutput_cull0) 42
- 47: 46(ptr) AccessChain 27(flattenTemp) 45
- 48: 6(int) Load 47
- Store 44(@entryPointOutput_vpai) 48
- 51: 46(ptr) AccessChain 27(flattenTemp) 50
- 52: 6(int) Load 51
- Store 49(@entryPointOutput_rtai) 52
- 58: 57(ptr) AccessChain 27(flattenTemp) 56
- 59: 11(int) Load 58
- 61: 60(ptr) AccessChain 55(@entryPointOutput) 35
- Store 61 59
+ 55(VertexID): 9(ptr) Variable Function
+59(OutputStream): 13(ptr) Variable Function
+ 60(param): 9(ptr) Variable Function
+ 62(param): 13(ptr) Variable Function
+ 58: 8 Load 57(VertexID)
+ Store 55(VertexID) 58
+ 61: 8 Load 55(VertexID)
+ Store 60(param) 61
+ 63: 2 FunctionCall 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;) 60(param) 62(param)
+ 64: 12(S) Load 62(param)
+ Store 59(OutputStream) 64
Return
FunctionEnd
-17(@main(u1[3];struct-S-f1-f1-u1-u1-i11;): 12(S) Function None 14
+17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;): 2 Function None 14
15(VertexID): 9(ptr) FunctionParameter
16(OutputStream): 13(ptr) FunctionParameter
18: Label
- 19(s): 13(ptr) Variable Function
- 20: 12(S) Load 19(s)
- ReturnValue 20
+ 21(s): 13(ptr) Variable Function
+ 24: 23(ptr) AccessChain 21(s) 22
+ 25: 10(float) Load 24
+ Store 20(OutputStream.clip0) 25
+ 31: 23(ptr) AccessChain 21(s) 30
+ 32: 10(float) Load 31
+ 33: 19(ptr) AccessChain 29(OutputStream.clip0) 22
+ Store 33 32
+ 36: 23(ptr) AccessChain 21(s) 35
+ 37: 10(float) Load 36
+ 38: 19(ptr) AccessChain 34(OutputStream.cull0) 22
+ Store 38 37
+ 43: 42(ptr) AccessChain 21(s) 41
+ 44: 6(int) Load 43
+ Store 40(OutputStream.vpai) 44
+ 47: 42(ptr) AccessChain 21(s) 46
+ 48: 6(int) Load 47
+ Store 45(OutputStream.rtai) 48
+ 53: 52(ptr) AccessChain 21(s) 51
+ 54: 11(int) Load 53
+ Store 50(OutputStream.ii) 54
+ EmitVertex
+ Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic.vert.out
index 0b088563af5..3b4ac559f03 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semantic.vert.out
@@ -1,370 +1,330 @@
hlsl.semantic.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
-0:12 Function Definition: @main(struct-S-f1-f1-f1-f1-f1-f1-i11; ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Function Parameters:
-0:12 'ins' ( in structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
+0:10 Function Definition: @main(struct-S-f1-f1-f1-f1-i11; ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Function Parameters:
+0:10 'ins' ( in structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
0:? Sequence
-0:14 Branch: Return with expression
-0:14 's' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Function Definition: main( ( temp void)
-0:12 Function Parameters:
+0:12 Branch: Return with expression
+0:12 's' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Function Definition: main( ( temp void)
+0:10 Function Parameters:
0:? Sequence
-0:12 Sequence
-0:12 move second child to first child ( temp float)
-0:12 clip: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 0 (const int)
-0:? 'clip' (layout( location=0) in float)
-0:12 move second child to first child ( temp float)
-0:12 clip0: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 1 (const int)
-0:? 'clip0' (layout( location=1) in float)
-0:12 move second child to first child ( temp float)
-0:12 clip7: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 2 (const int)
-0:? 'clip7' (layout( location=2) in float)
-0:12 move second child to first child ( temp float)
-0:12 cull: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 3 (const int)
-0:? 'cull' (layout( location=3) in float)
-0:12 move second child to first child ( temp float)
-0:12 cull2: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 4 (const int)
-0:? 'cull2' (layout( location=4) in float)
-0:12 move second child to first child ( temp float)
-0:12 cull5: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 5 (const int)
-0:? 'cull5' (layout( location=5) in float)
-0:12 move second child to first child ( temp int)
-0:12 ii: direct index for structure ( temp int)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 6 (const int)
-0:? 'ii' ( in int InstanceIndex)
-0:12 Sequence
-0:12 move second child to first child ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Function Call: @main(struct-S-f1-f1-f1-f1-f1-f1-i11; ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_clip7' ( out float ClipDistance)
-0:12 clip: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 0 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_clip7' ( out float ClipDistance)
-0:12 clip0: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 1 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_clip7' ( out float ClipDistance)
-0:12 clip7: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 2 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_cull5' ( out float CullDistance)
-0:12 cull: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 3 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_cull5' ( out float CullDistance)
-0:12 cull2: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 4 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_cull5' ( out float CullDistance)
-0:12 cull5: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 5 (const int)
-0:12 move second child to first child ( temp int)
-0:12 ii: direct index for structure ( temp int)
-0:12 '@entryPointOutput' (layout( location=0) out structure{ temp int ii})
-0:12 Constant:
-0:12 0 (const int)
-0:12 ii: direct index for structure ( temp int)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 6 (const int)
+0:10 Sequence
+0:10 move second child to first child ( temp float)
+0:10 clip0: direct index for structure ( temp float)
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 0 (const int)
+0:? 'ins.clip0' (layout( location=0) in float)
+0:10 move second child to first child ( temp float)
+0:10 clip1: direct index for structure ( temp float)
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 1 (const int)
+0:? 'ins.clip1' (layout( location=1) in float)
+0:10 move second child to first child ( temp float)
+0:10 cull0: direct index for structure ( temp float)
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 2 (const int)
+0:? 'ins.cull0' (layout( location=0) in float)
+0:10 move second child to first child ( temp float)
+0:10 cull1: direct index for structure ( temp float)
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 3 (const int)
+0:? 'ins.cull1' (layout( location=1) in float)
+0:10 move second child to first child ( temp int)
+0:10 ii: direct index for structure ( temp int)
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 4 (const int)
+0:? 'ins.ii' ( in int InstanceIndex)
+0:10 Sequence
+0:10 move second child to first child ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Function Call: @main(struct-S-f1-f1-f1-f1-i11; ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:? Sequence
+0:10 move second child to first child ( temp float)
+0:10 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance)
+0:10 Constant:
+0:10 0 (const int)
+0:10 clip0: direct index for structure ( temp float)
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 0 (const int)
+0:? Sequence
+0:10 move second child to first child ( temp float)
+0:10 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance)
+0:10 Constant:
+0:10 1 (const int)
+0:10 clip1: direct index for structure ( temp float)
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 1 (const int)
+0:? Sequence
+0:10 move second child to first child ( temp float)
+0:10 direct index ( out float CullDistance)
+0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance)
+0:10 Constant:
+0:10 0 (const int)
+0:10 cull0: direct index for structure ( temp float)
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 2 (const int)
+0:? Sequence
+0:10 move second child to first child ( temp float)
+0:10 direct index ( out float CullDistance)
+0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance)
+0:10 Constant:
+0:10 1 (const int)
+0:10 cull1: direct index for structure ( temp float)
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 3 (const int)
+0:10 move second child to first child ( temp int)
+0:? '@entryPointOutput.ii' (layout( location=0) out int)
+0:10 ii: direct index for structure ( temp int)
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 4 (const int)
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp int ii})
-0:? 'clip' (layout( location=0) in float)
-0:? 'clip0' (layout( location=1) in float)
-0:? 'clip7' (layout( location=2) in float)
-0:? 'cull' (layout( location=3) in float)
-0:? 'cull2' (layout( location=4) in float)
-0:? 'cull5' (layout( location=5) in float)
-0:? 'ii' ( in int InstanceIndex)
+0:? '@entryPointOutput.ii' (layout( location=0) out int)
+0:? 'ins.ii' ( in int InstanceIndex)
+0:? 'ins.clip0' (layout( location=0) in float)
+0:? 'ins.clip1' (layout( location=1) in float)
+0:? 'ins.cull0' (layout( location=0) in float)
+0:? 'ins.cull1' (layout( location=1) in float)
+0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance)
+0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance)
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
-0:12 Function Definition: @main(struct-S-f1-f1-f1-f1-f1-f1-i11; ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Function Parameters:
-0:12 'ins' ( in structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
+0:10 Function Definition: @main(struct-S-f1-f1-f1-f1-i11; ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Function Parameters:
+0:10 'ins' ( in structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
0:? Sequence
-0:14 Branch: Return with expression
-0:14 's' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Function Definition: main( ( temp void)
-0:12 Function Parameters:
+0:12 Branch: Return with expression
+0:12 's' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Function Definition: main( ( temp void)
+0:10 Function Parameters:
0:? Sequence
-0:12 Sequence
-0:12 move second child to first child ( temp float)
-0:12 clip: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 0 (const int)
-0:? 'clip' (layout( location=0) in float)
-0:12 move second child to first child ( temp float)
-0:12 clip0: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 1 (const int)
-0:? 'clip0' (layout( location=1) in float)
-0:12 move second child to first child ( temp float)
-0:12 clip7: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 2 (const int)
-0:? 'clip7' (layout( location=2) in float)
-0:12 move second child to first child ( temp float)
-0:12 cull: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 3 (const int)
-0:? 'cull' (layout( location=3) in float)
-0:12 move second child to first child ( temp float)
-0:12 cull2: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 4 (const int)
-0:? 'cull2' (layout( location=4) in float)
-0:12 move second child to first child ( temp float)
-0:12 cull5: direct index for structure ( temp float)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 5 (const int)
-0:? 'cull5' (layout( location=5) in float)
-0:12 move second child to first child ( temp int)
-0:12 ii: direct index for structure ( temp int)
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 6 (const int)
-0:? 'ii' ( in int InstanceIndex)
-0:12 Sequence
-0:12 move second child to first child ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Function Call: @main(struct-S-f1-f1-f1-f1-f1-f1-i11; ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_clip7' ( out float ClipDistance)
-0:12 clip: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 0 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_clip7' ( out float ClipDistance)
-0:12 clip0: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 1 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_clip7' ( out float ClipDistance)
-0:12 clip7: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 2 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_cull5' ( out float CullDistance)
-0:12 cull: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 3 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_cull5' ( out float CullDistance)
-0:12 cull2: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 4 (const int)
-0:12 move second child to first child ( temp float)
-0:? '@entryPointOutput_cull5' ( out float CullDistance)
-0:12 cull5: direct index for structure ( temp float)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 5 (const int)
-0:12 move second child to first child ( temp int)
-0:12 ii: direct index for structure ( temp int)
-0:12 '@entryPointOutput' (layout( location=0) out structure{ temp int ii})
-0:12 Constant:
-0:12 0 (const int)
-0:12 ii: direct index for structure ( temp int)
-0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
-0:12 Constant:
-0:12 6 (const int)
+0:10 Sequence
+0:10 move second child to first child ( temp float)
+0:10 clip0: direct index for structure ( temp float)
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 0 (const int)
+0:? 'ins.clip0' (layout( location=0) in float)
+0:10 move second child to first child ( temp float)
+0:10 clip1: direct index for structure ( temp float)
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 1 (const int)
+0:? 'ins.clip1' (layout( location=1) in float)
+0:10 move second child to first child ( temp float)
+0:10 cull0: direct index for structure ( temp float)
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 2 (const int)
+0:? 'ins.cull0' (layout( location=0) in float)
+0:10 move second child to first child ( temp float)
+0:10 cull1: direct index for structure ( temp float)
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 3 (const int)
+0:? 'ins.cull1' (layout( location=1) in float)
+0:10 move second child to first child ( temp int)
+0:10 ii: direct index for structure ( temp int)
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 4 (const int)
+0:? 'ins.ii' ( in int InstanceIndex)
+0:10 Sequence
+0:10 move second child to first child ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Function Call: @main(struct-S-f1-f1-f1-f1-i11; ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:? Sequence
+0:10 move second child to first child ( temp float)
+0:10 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance)
+0:10 Constant:
+0:10 0 (const int)
+0:10 clip0: direct index for structure ( temp float)
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 0 (const int)
+0:? Sequence
+0:10 move second child to first child ( temp float)
+0:10 direct index ( out float ClipDistance)
+0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance)
+0:10 Constant:
+0:10 1 (const int)
+0:10 clip1: direct index for structure ( temp float)
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 1 (const int)
+0:? Sequence
+0:10 move second child to first child ( temp float)
+0:10 direct index ( out float CullDistance)
+0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance)
+0:10 Constant:
+0:10 0 (const int)
+0:10 cull0: direct index for structure ( temp float)
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 2 (const int)
+0:? Sequence
+0:10 move second child to first child ( temp float)
+0:10 direct index ( out float CullDistance)
+0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance)
+0:10 Constant:
+0:10 1 (const int)
+0:10 cull1: direct index for structure ( temp float)
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 3 (const int)
+0:10 move second child to first child ( temp int)
+0:? '@entryPointOutput.ii' (layout( location=0) out int)
+0:10 ii: direct index for structure ( temp int)
+0:10 'flattenTemp' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii})
+0:10 Constant:
+0:10 4 (const int)
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp int ii})
-0:? 'clip' (layout( location=0) in float)
-0:? 'clip0' (layout( location=1) in float)
-0:? 'clip7' (layout( location=2) in float)
-0:? 'cull' (layout( location=3) in float)
-0:? 'cull2' (layout( location=4) in float)
-0:? 'cull5' (layout( location=5) in float)
-0:? 'ii' ( in int InstanceIndex)
+0:? '@entryPointOutput.ii' (layout( location=0) out int)
+0:? 'ins.ii' ( in int InstanceIndex)
+0:? 'ins.clip0' (layout( location=0) in float)
+0:? 'ins.clip1' (layout( location=1) in float)
+0:? 'ins.cull0' (layout( location=0) in float)
+0:? 'ins.cull1' (layout( location=1) in float)
+0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance)
+0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 77
+// Generated by (magic number): 80002
+// Id's are bound by 70
Capability Shader
Capability ClipDistance
Capability CullDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 21 26 30 34 38 42 47 56 63 72
+ EntryPoint Vertex 4 "main" 21 26 30 34 39 51 59 67
+ Source HLSL 500
Name 4 "main"
Name 8 "S"
- MemberName 8(S) 0 "clip"
- MemberName 8(S) 1 "clip0"
- MemberName 8(S) 2 "clip7"
- MemberName 8(S) 3 "cull"
- MemberName 8(S) 4 "cull2"
- MemberName 8(S) 5 "cull5"
- MemberName 8(S) 6 "ii"
- Name 12 "@main(struct-S-f1-f1-f1-f1-f1-f1-i11;"
+ MemberName 8(S) 0 "clip0"
+ MemberName 8(S) 1 "clip1"
+ MemberName 8(S) 2 "cull0"
+ MemberName 8(S) 3 "cull1"
+ MemberName 8(S) 4 "ii"
+ Name 12 "@main(struct-S-f1-f1-f1-f1-i11;"
Name 11 "ins"
Name 14 "s"
Name 18 "ins"
- Name 21 "clip"
- Name 26 "clip0"
- Name 30 "clip7"
- Name 34 "cull"
- Name 38 "cull2"
- Name 42 "cull5"
- Name 47 "ii"
- Name 51 "flattenTemp"
- Name 52 "param"
- Name 56 "@entryPointOutput_clip7"
- Name 63 "@entryPointOutput_cull5"
- Name 70 "S"
- MemberName 70(S) 0 "ii"
- Name 72 "@entryPointOutput"
- Decorate 21(clip) Location 0
- Decorate 26(clip0) Location 1
- Decorate 30(clip7) Location 2
- Decorate 34(cull) Location 3
- Decorate 38(cull2) Location 4
- Decorate 42(cull5) Location 5
- Decorate 47(ii) BuiltIn InstanceIndex
- Decorate 56(@entryPointOutput_clip7) BuiltIn ClipDistance
- Decorate 63(@entryPointOutput_cull5) BuiltIn CullDistance
- Decorate 72(@entryPointOutput) Location 0
+ Name 21 "ins.clip0"
+ Name 26 "ins.clip1"
+ Name 30 "ins.cull0"
+ Name 34 "ins.cull1"
+ Name 39 "ins.ii"
+ Name 43 "flattenTemp"
+ Name 44 "param"
+ Name 51 "@entryPointOutput.clip1"
+ Name 59 "@entryPointOutput.cull1"
+ Name 67 "@entryPointOutput.ii"
+ Decorate 21(ins.clip0) Location 0
+ Decorate 26(ins.clip1) Location 1
+ Decorate 30(ins.cull0) Location 0
+ Decorate 34(ins.cull1) Location 1
+ Decorate 39(ins.ii) BuiltIn InstanceIndex
+ Decorate 51(@entryPointOutput.clip1) BuiltIn ClipDistance
+ Decorate 59(@entryPointOutput.cull1) BuiltIn CullDistance
+ Decorate 67(@entryPointOutput.ii) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeInt 32 1
- 8(S): TypeStruct 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 7(int)
+ 8(S): TypeStruct 6(float) 6(float) 6(float) 6(float) 7(int)
9: TypePointer Function 8(S)
10: TypeFunction 8(S) 9(ptr)
19: 7(int) Constant 0
20: TypePointer Input 6(float)
- 21(clip): 20(ptr) Variable Input
+ 21(ins.clip0): 20(ptr) Variable Input
23: TypePointer Function 6(float)
25: 7(int) Constant 1
- 26(clip0): 20(ptr) Variable Input
+ 26(ins.clip1): 20(ptr) Variable Input
29: 7(int) Constant 2
- 30(clip7): 20(ptr) Variable Input
+ 30(ins.cull0): 20(ptr) Variable Input
33: 7(int) Constant 3
- 34(cull): 20(ptr) Variable Input
+ 34(ins.cull1): 20(ptr) Variable Input
37: 7(int) Constant 4
- 38(cull2): 20(ptr) Variable Input
- 41: 7(int) Constant 5
- 42(cull5): 20(ptr) Variable Input
- 45: 7(int) Constant 6
- 46: TypePointer Input 7(int)
- 47(ii): 46(ptr) Variable Input
- 49: TypePointer Function 7(int)
- 55: TypePointer Output 6(float)
-56(@entryPointOutput_clip7): 55(ptr) Variable Output
-63(@entryPointOutput_cull5): 55(ptr) Variable Output
- 70(S): TypeStruct 7(int)
- 71: TypePointer Output 70(S)
-72(@entryPointOutput): 71(ptr) Variable Output
- 75: TypePointer Output 7(int)
+ 38: TypePointer Input 7(int)
+ 39(ins.ii): 38(ptr) Variable Input
+ 41: TypePointer Function 7(int)
+ 47: TypeInt 32 0
+ 48: 47(int) Constant 2
+ 49: TypeArray 6(float) 48
+ 50: TypePointer Output 49
+51(@entryPointOutput.clip1): 50(ptr) Variable Output
+ 54: TypePointer Output 6(float)
+59(@entryPointOutput.cull1): 50(ptr) Variable Output
+ 66: TypePointer Output 7(int)
+67(@entryPointOutput.ii): 66(ptr) Variable Output
4(main): 2 Function None 3
5: Label
18(ins): 9(ptr) Variable Function
- 51(flattenTemp): 9(ptr) Variable Function
- 52(param): 9(ptr) Variable Function
- 22: 6(float) Load 21(clip)
+ 43(flattenTemp): 9(ptr) Variable Function
+ 44(param): 9(ptr) Variable Function
+ 22: 6(float) Load 21(ins.clip0)
24: 23(ptr) AccessChain 18(ins) 19
Store 24 22
- 27: 6(float) Load 26(clip0)
+ 27: 6(float) Load 26(ins.clip1)
28: 23(ptr) AccessChain 18(ins) 25
Store 28 27
- 31: 6(float) Load 30(clip7)
+ 31: 6(float) Load 30(ins.cull0)
32: 23(ptr) AccessChain 18(ins) 29
Store 32 31
- 35: 6(float) Load 34(cull)
+ 35: 6(float) Load 34(ins.cull1)
36: 23(ptr) AccessChain 18(ins) 33
Store 36 35
- 39: 6(float) Load 38(cull2)
- 40: 23(ptr) AccessChain 18(ins) 37
- Store 40 39
- 43: 6(float) Load 42(cull5)
- 44: 23(ptr) AccessChain 18(ins) 41
- Store 44 43
- 48: 7(int) Load 47(ii)
- 50: 49(ptr) AccessChain 18(ins) 45
- Store 50 48
- 53: 8(S) Load 18(ins)
- Store 52(param) 53
- 54: 8(S) FunctionCall 12(@main(struct-S-f1-f1-f1-f1-f1-f1-i11;) 52(param)
- Store 51(flattenTemp) 54
- 57: 23(ptr) AccessChain 51(flattenTemp) 19
- 58: 6(float) Load 57
- Store 56(@entryPointOutput_clip7) 58
- 59: 23(ptr) AccessChain 51(flattenTemp) 25
- 60: 6(float) Load 59
- Store 56(@entryPointOutput_clip7) 60
- 61: 23(ptr) AccessChain 51(flattenTemp) 29
- 62: 6(float) Load 61
- Store 56(@entryPointOutput_clip7) 62
- 64: 23(ptr) AccessChain 51(flattenTemp) 33
- 65: 6(float) Load 64
- Store 63(@entryPointOutput_cull5) 65
- 66: 23(ptr) AccessChain 51(flattenTemp) 37
- 67: 6(float) Load 66
- Store 63(@entryPointOutput_cull5) 67
- 68: 23(ptr) AccessChain 51(flattenTemp) 41
- 69: 6(float) Load 68
- Store 63(@entryPointOutput_cull5) 69
- 73: 49(ptr) AccessChain 51(flattenTemp) 45
- 74: 7(int) Load 73
- 76: 75(ptr) AccessChain 72(@entryPointOutput) 19
- Store 76 74
+ 40: 7(int) Load 39(ins.ii)
+ 42: 41(ptr) AccessChain 18(ins) 37
+ Store 42 40
+ 45: 8(S) Load 18(ins)
+ Store 44(param) 45
+ 46: 8(S) FunctionCall 12(@main(struct-S-f1-f1-f1-f1-i11;) 44(param)
+ Store 43(flattenTemp) 46
+ 52: 23(ptr) AccessChain 43(flattenTemp) 19
+ 53: 6(float) Load 52
+ 55: 54(ptr) AccessChain 51(@entryPointOutput.clip1) 19
+ Store 55 53
+ 56: 23(ptr) AccessChain 43(flattenTemp) 25
+ 57: 6(float) Load 56
+ 58: 54(ptr) AccessChain 51(@entryPointOutput.clip1) 25
+ Store 58 57
+ 60: 23(ptr) AccessChain 43(flattenTemp) 29
+ 61: 6(float) Load 60
+ 62: 54(ptr) AccessChain 59(@entryPointOutput.cull1) 19
+ Store 62 61
+ 63: 23(ptr) AccessChain 43(flattenTemp) 33
+ 64: 6(float) Load 63
+ 65: 54(ptr) AccessChain 59(@entryPointOutput.cull1) 25
+ Store 65 64
+ 68: 41(ptr) AccessChain 43(flattenTemp) 37
+ 69: 7(int) Load 68
+ Store 67(@entryPointOutput.ii) 69
Return
FunctionEnd
-12(@main(struct-S-f1-f1-f1-f1-f1-f1-i11;): 8(S) Function None 10
+12(@main(struct-S-f1-f1-f1-f1-i11;): 8(S) Function None 10
11(ins): 9(ptr) FunctionParameter
13: Label
14(s): 9(ptr) Variable Function
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semicolons.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semicolons.frag.out
index 9856b5af422..40bd1282b09 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semicolons.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.semicolons.frag.out
@@ -1,5 +1,5 @@
hlsl.semicolons.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: MyFunc( ( temp void)
@@ -26,19 +26,19 @@ gl_FragCoord origin is upper left
0:? Sequence
0:13 Sequence
0:13 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:13 color: direct index for structure ( temp 4-component vector of float)
0:13 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:13 Constant:
0:13 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: MyFunc( ( temp void)
@@ -65,16 +65,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:13 Sequence
0:13 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:13 color: direct index for structure ( temp 4-component vector of float)
0:13 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:13 Constant:
0:13 0 (const int)
0:? Linker Objects
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 31
Capability Shader
@@ -82,6 +82,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 28
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 6 "MyFunc("
Name 8 "MyFunc2("
@@ -89,8 +90,8 @@ gl_FragCoord origin is upper left
MemberName 12(PS_OUTPUT) 0 "color"
Name 14 "@main("
Name 17 "ps_output"
- Name 28 "color"
- Decorate 28(color) Location 0
+ Name 28 "@entryPointOutput.color"
+ Decorate 28(@entryPointOutput.color) Location 0
2: TypeVoid
3: TypeFunction 2
10: TypeFloat 32
@@ -104,12 +105,12 @@ gl_FragCoord origin is upper left
21: 11(fvec4) ConstantComposite 20 20 20 20
22: TypePointer Function 11(fvec4)
27: TypePointer Output 11(fvec4)
- 28(color): 27(ptr) Variable Output
+28(@entryPointOutput.color): 27(ptr) Variable Output
4(main): 2 Function None 3
5: Label
29:12(PS_OUTPUT) FunctionCall 14(@main()
30: 11(fvec4) CompositeExtract 29 0
- Store 28(color) 30
+ Store 28(@entryPointOutput.color) 30
Return
FunctionEnd
6(MyFunc(): 2 Function None 3
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shapeConv.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shapeConv.frag.out
index 07fa9fd3d52..1fee20cf3a8 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shapeConv.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shapeConv.frag.out
@@ -1,5 +1,5 @@
hlsl.shapeConv.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: PixelShaderFunction(vf4;f1; ( temp 4-component vector of float)
@@ -95,21 +95,66 @@ gl_FragCoord origin is upper left
0:22 Construct vec4 ( temp 4-component vector of float)
0:22 'f' ( in float)
0:22 'v' ( temp 4-component vector of float)
-0:26 Compare Equal ( temp bool)
-0:26 'f1' ( temp 1-component vector of float)
-0:26 Construct float ( temp 1-component vector of float)
-0:26 'v' ( temp 4-component vector of float)
-0:27 Compare Less Than ( temp bool)
-0:27 Construct float ( temp 1-component vector of float)
-0:27 'v' ( temp 4-component vector of float)
-0:27 'f1' ( temp 1-component vector of float)
+0:26 Equal ( temp 4-component vector of bool)
+0:26 Construct vec4 ( temp 4-component vector of float)
+0:26 'f1' ( temp 1-component vector of float)
+0:26 'v' ( temp 4-component vector of float)
+0:27 Compare Less Than ( temp 4-component vector of bool)
+0:27 'v' ( temp 4-component vector of float)
+0:27 Construct vec4 ( temp 4-component vector of float)
+0:27 'f1' ( temp 1-component vector of float)
0:28 Construct float ( temp float)
0:28 'f1' ( temp 1-component vector of float)
0:29 Construct vec3 ( temp 3-component vector of float)
0:29 Construct float ( temp float)
0:29 'f1' ( temp 1-component vector of float)
-0:31 Branch: Return with expression
-0:31 'input' ( in 4-component vector of float)
+0:36 right-shift ( temp 3-component vector of uint)
+0:36 Construct uvec3 ( temp 3-component vector of uint)
+0:36 'ui' ( temp uint)
+0:36 'ui3' ( temp 3-component vector of uint)
+0:37 right-shift ( temp 3-component vector of uint)
+0:37 'ui3' ( temp 3-component vector of uint)
+0:37 'ui' ( temp uint)
+0:39 multiply second child into first child ( temp 4-component vector of float)
+0:39 'v' ( temp 4-component vector of float)
+0:39 'f1' ( temp 1-component vector of float)
+0:40 multiply second child into first child ( temp 1-component vector of float)
+0:40 'f1' ( temp 1-component vector of float)
+0:40 Construct float ( temp 1-component vector of float)
+0:40 'v' ( temp 4-component vector of float)
+0:42 Sequence
+0:42 move second child to first child ( temp 3-component vector of float)
+0:42 'mixed' ( temp 3-component vector of float)
+0:42 component-wise multiply ( temp 3-component vector of float)
+0:42 'u' ( temp 3-component vector of float)
+0:42 Construct vec3 ( temp 3-component vector of float)
+0:42 'v' ( temp 4-component vector of float)
+0:43 move second child to first child ( temp float)
+0:43 'f' ( in float)
+0:43 Construct float ( in float)
+0:43 'u' ( temp 3-component vector of float)
+0:44 move second child to first child ( temp 1-component vector of float)
+0:44 'f1' ( temp 1-component vector of float)
+0:44 Construct float ( temp 1-component vector of float)
+0:44 'u' ( temp 3-component vector of float)
+0:45 Sequence
+0:45 move second child to first child ( temp float)
+0:45 'sf' ( temp float)
+0:45 Construct float ( temp float)
+0:45 'v' ( temp 4-component vector of float)
+0:46 Sequence
+0:46 move second child to first child ( temp 1-component vector of float)
+0:46 'sf1' ( temp 1-component vector of float)
+0:46 Construct float ( temp 1-component vector of float)
+0:46 'v' ( temp 4-component vector of float)
+0:48 Branch: Return with expression
+0:48 component-wise multiply ( temp 4-component vector of float)
+0:48 'input' ( in 4-component vector of float)
+0:48 Constant:
+0:48 3.000000
+0:48 3.000000
+0:48 3.000000
+0:48 3.000000
0:? Linker Objects
@@ -117,7 +162,7 @@ Linked fragment stage:
WARNING: Linking fragment stage: Entry point not found
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: PixelShaderFunction(vf4;f1; ( temp 4-component vector of float)
@@ -213,32 +258,78 @@ gl_FragCoord origin is upper left
0:22 Construct vec4 ( temp 4-component vector of float)
0:22 'f' ( in float)
0:22 'v' ( temp 4-component vector of float)
-0:26 Compare Equal ( temp bool)
-0:26 'f1' ( temp 1-component vector of float)
-0:26 Construct float ( temp 1-component vector of float)
-0:26 'v' ( temp 4-component vector of float)
-0:27 Compare Less Than ( temp bool)
-0:27 Construct float ( temp 1-component vector of float)
-0:27 'v' ( temp 4-component vector of float)
-0:27 'f1' ( temp 1-component vector of float)
+0:26 Equal ( temp 4-component vector of bool)
+0:26 Construct vec4 ( temp 4-component vector of float)
+0:26 'f1' ( temp 1-component vector of float)
+0:26 'v' ( temp 4-component vector of float)
+0:27 Compare Less Than ( temp 4-component vector of bool)
+0:27 'v' ( temp 4-component vector of float)
+0:27 Construct vec4 ( temp 4-component vector of float)
+0:27 'f1' ( temp 1-component vector of float)
0:28 Construct float ( temp float)
0:28 'f1' ( temp 1-component vector of float)
0:29 Construct vec3 ( temp 3-component vector of float)
0:29 Construct float ( temp float)
0:29 'f1' ( temp 1-component vector of float)
-0:31 Branch: Return with expression
-0:31 'input' ( in 4-component vector of float)
+0:36 right-shift ( temp 3-component vector of uint)
+0:36 Construct uvec3 ( temp 3-component vector of uint)
+0:36 'ui' ( temp uint)
+0:36 'ui3' ( temp 3-component vector of uint)
+0:37 right-shift ( temp 3-component vector of uint)
+0:37 'ui3' ( temp 3-component vector of uint)
+0:37 'ui' ( temp uint)
+0:39 multiply second child into first child ( temp 4-component vector of float)
+0:39 'v' ( temp 4-component vector of float)
+0:39 'f1' ( temp 1-component vector of float)
+0:40 multiply second child into first child ( temp 1-component vector of float)
+0:40 'f1' ( temp 1-component vector of float)
+0:40 Construct float ( temp 1-component vector of float)
+0:40 'v' ( temp 4-component vector of float)
+0:42 Sequence
+0:42 move second child to first child ( temp 3-component vector of float)
+0:42 'mixed' ( temp 3-component vector of float)
+0:42 component-wise multiply ( temp 3-component vector of float)
+0:42 'u' ( temp 3-component vector of float)
+0:42 Construct vec3 ( temp 3-component vector of float)
+0:42 'v' ( temp 4-component vector of float)
+0:43 move second child to first child ( temp float)
+0:43 'f' ( in float)
+0:43 Construct float ( in float)
+0:43 'u' ( temp 3-component vector of float)
+0:44 move second child to first child ( temp 1-component vector of float)
+0:44 'f1' ( temp 1-component vector of float)
+0:44 Construct float ( temp 1-component vector of float)
+0:44 'u' ( temp 3-component vector of float)
+0:45 Sequence
+0:45 move second child to first child ( temp float)
+0:45 'sf' ( temp float)
+0:45 Construct float ( temp float)
+0:45 'v' ( temp 4-component vector of float)
+0:46 Sequence
+0:46 move second child to first child ( temp 1-component vector of float)
+0:46 'sf1' ( temp 1-component vector of float)
+0:46 Construct float ( temp 1-component vector of float)
+0:46 'v' ( temp 4-component vector of float)
+0:48 Branch: Return with expression
+0:48 component-wise multiply ( temp 4-component vector of float)
+0:48 'input' ( in 4-component vector of float)
+0:48 Constant:
+0:48 3.000000
+0:48 3.000000
+0:48 3.000000
+0:48 3.000000
0:? Linker Objects
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 85
+// Generated by (magic number): 80002
+// Id's are bound by 127
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 13 "PixelShaderFunction(vf4;f1;"
Name 11 "input"
@@ -250,6 +341,11 @@ gl_FragCoord origin is upper left
Name 34 "MyVal"
Name 37 "foo"
Name 70 "f1"
+ Name 83 "ui"
+ Name 88 "ui3"
+ Name 103 "mixed"
+ Name 115 "sf"
+ Name 118 "sf1"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -281,6 +377,11 @@ gl_FragCoord origin is upper left
56: TypeInt 32 0
57: 56(int) Constant 0
62: TypeVector 41(bool) 4
+ 82: TypePointer Function 56(int)
+ 85: TypeVector 56(int) 3
+ 87: TypePointer Function 85(ivec3)
+ 122: 6(float) Constant 1077936128
+ 123: 7(fvec4) ConstantComposite 122 122 122 122
4(main): 2 Function None 3
5: Label
Return
@@ -296,6 +397,11 @@ gl_FragCoord origin is upper left
34(MyVal): 23(ptr) Variable Function
37(foo): 23(ptr) Variable Function
70(f1): 9(ptr) Variable Function
+ 83(ui): 82(ptr) Variable Function
+ 88(ui3): 87(ptr) Variable Function
+ 103(mixed): 23(ptr) Variable Function
+ 115(sf): 9(ptr) Variable Function
+ 118(sf1): 9(ptr) Variable Function
Store 15(v) 17
Store 15(v) 19
20: 6(float) Load 12(f)
@@ -331,16 +437,55 @@ gl_FragCoord origin is upper left
68: 62(bvec4) FOrdNotEqual 66 67
69: 41(bool) Any 68
71: 6(float) Load 70(f1)
- 72: 7(fvec4) Load 15(v)
- 73: 6(float) CompositeExtract 72 0
- 74: 41(bool) FOrdEqual 71 73
+ 72: 7(fvec4) CompositeConstruct 71 71 71 71
+ 73: 7(fvec4) Load 15(v)
+ 74: 62(bvec4) FOrdEqual 72 73
75: 7(fvec4) Load 15(v)
- 76: 6(float) CompositeExtract 75 0
- 77: 6(float) Load 70(f1)
- 78: 41(bool) FOrdLessThan 76 77
+ 76: 6(float) Load 70(f1)
+ 77: 7(fvec4) CompositeConstruct 76 76 76 76
+ 78: 62(bvec4) FOrdLessThan 75 77
79: 6(float) Load 70(f1)
80: 6(float) Load 70(f1)
81: 22(fvec3) CompositeConstruct 80 80 80
- 82: 7(fvec4) Load 11(input)
- ReturnValue 82
+ 84: 56(int) Load 83(ui)
+ 86: 85(ivec3) CompositeConstruct 84 84 84
+ 89: 85(ivec3) Load 88(ui3)
+ 90: 85(ivec3) ShiftRightLogical 86 89
+ 91: 85(ivec3) Load 88(ui3)
+ 92: 56(int) Load 83(ui)
+ 93: 85(ivec3) CompositeConstruct 92 92 92
+ 94: 85(ivec3) ShiftRightLogical 91 93
+ 95: 6(float) Load 70(f1)
+ 96: 7(fvec4) Load 15(v)
+ 97: 7(fvec4) CompositeConstruct 95 95 95 95
+ 98: 7(fvec4) FMul 96 97
+ Store 15(v) 98
+ 99: 7(fvec4) Load 15(v)
+ 100: 6(float) CompositeExtract 99 0
+ 101: 6(float) Load 70(f1)
+ 102: 6(float) FMul 101 100
+ Store 70(f1) 102
+ 104: 22(fvec3) Load 24(u)
+ 105: 7(fvec4) Load 15(v)
+ 106: 6(float) CompositeExtract 105 0
+ 107: 6(float) CompositeExtract 105 1
+ 108: 6(float) CompositeExtract 105 2
+ 109: 22(fvec3) CompositeConstruct 106 107 108
+ 110: 22(fvec3) FMul 104 109
+ Store 103(mixed) 110
+ 111: 22(fvec3) Load 24(u)
+ 112: 6(float) CompositeExtract 111 0
+ Store 12(f) 112
+ 113: 22(fvec3) Load 24(u)
+ 114: 6(float) CompositeExtract 113 0
+ Store 70(f1) 114
+ 116: 7(fvec4) Load 15(v)
+ 117: 6(float) CompositeExtract 116 0
+ Store 115(sf) 117
+ 119: 7(fvec4) Load 15(v)
+ 120: 6(float) CompositeExtract 119 0
+ Store 118(sf1) 120
+ 121: 7(fvec4) Load 11(input)
+ 124: 7(fvec4) FMul 121 123
+ ReturnValue 124
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shapeConvRet.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shapeConvRet.frag.out
index 54ca7fa8631..432cd6f0be0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shapeConvRet.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shapeConvRet.frag.out
@@ -1,5 +1,5 @@
hlsl.shapeConvRet.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: foo( ( temp 3-component vector of int)
@@ -35,7 +35,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: foo( ( temp 3-component vector of int)
@@ -68,7 +68,7 @@ gl_FragCoord origin is upper left
0:? 'f' (layout( location=0) in float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 35
Capability Shader
@@ -76,6 +76,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 28 31
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 "foo("
Name 16 "@main(f1;"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shift.per-set.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shift.per-set.frag.out
new file mode 100644
index 00000000000..57b32e55e1e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.shift.per-set.frag.out
@@ -0,0 +1,225 @@
+hlsl.shift.per-set.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:34 Function Definition: @main( ( temp 4-component vector of float)
+0:34 Function Parameters:
+0:? Sequence
+0:35 't1' (layout( set=1 binding=1) uniform texture1D)
+0:36 't2' (layout( set=1 binding=2) uniform texture2D)
+0:37 't3' (layout( set=2 binding=1) uniform texture3D)
+0:38 direct index (layout( row_major std430) buffer 4-component vector of float)
+0:38 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of float)
+0:38 't4' (layout( set=3 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:38 Constant:
+0:38 0 (const uint)
+0:38 Constant:
+0:38 0 (const int)
+0:39 indirect index (layout( row_major std430) buffer uint)
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint)
+0:39 't5' (layout( set=3 binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 right-shift ( temp int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 2 (const int)
+0:40 't6' (layout( set=3 binding=3 rgba32f) uniform textureBuffer)
+0:42 's1' (layout( set=1 binding=1) uniform sampler)
+0:43 's2' (layout( set=2 binding=2) uniform sampler)
+0:45 'u1' (layout( set=1 binding=1 rgba32f) uniform image1D)
+0:46 'u2' (layout( set=2 binding=2 rgba32f) uniform image2D)
+0:47 'u3' (layout( set=2 binding=3 rgba32f) uniform image3D)
+0:49 imageLoad ( temp float)
+0:49 'u4' (layout( set=1 binding=4 r32f) uniform imageBuffer)
+0:49 Constant:
+0:49 0 (const int)
+0:50 indirect index (layout( row_major std430) buffer uint)
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint)
+0:50 'u5' (layout( set=2 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 right-shift ( temp int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 2 (const int)
+0:51 direct index (layout( row_major std430) buffer float)
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of float)
+0:51 'u6' (layout( set=3 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 Constant:
+0:51 0 (const int)
+0:52 'u7' (layout( set=4 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:53 'u8' (layout( set=5 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:55 cb1: direct index for structure (layout( row_major std140) uniform int)
+0:55 'anon@0' (layout( set=6 binding=1 row_major std140) uniform block{layout( row_major std140) uniform int cb1})
+0:55 Constant:
+0:55 0 (const uint)
+0:56 tb1: direct index for structure (layout( row_major std430) buffer int)
+0:56 'anon@1' (layout( binding=7 row_major std430) readonly buffer block{layout( row_major std430) buffer int tb1})
+0:56 Constant:
+0:56 0 (const uint)
+0:58 Branch: Return with expression
+0:58 Constant:
+0:58 0.000000
+0:58 0.000000
+0:58 0.000000
+0:58 0.000000
+0:34 Function Definition: main( ( temp void)
+0:34 Function Parameters:
+0:? Sequence
+0:34 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:34 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 's1' (layout( set=1 binding=1) uniform sampler)
+0:? 's2' (layout( set=2 binding=2) uniform sampler)
+0:? 't1' (layout( set=1 binding=1) uniform texture1D)
+0:? 't2' (layout( set=1 binding=2) uniform texture2D)
+0:? 't3' (layout( set=2 binding=1) uniform texture3D)
+0:? 't4' (layout( set=3 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 't5' (layout( set=3 binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:? 't6' (layout( set=3 binding=3 rgba32f) uniform textureBuffer)
+0:? 'u1' (layout( set=1 binding=1 rgba32f) uniform image1D)
+0:? 'u2' (layout( set=2 binding=2 rgba32f) uniform image2D)
+0:? 'u3' (layout( set=2 binding=3 rgba32f) uniform image3D)
+0:? 'u4' (layout( set=1 binding=4 r32f) uniform imageBuffer)
+0:? 'u5' (layout( set=2 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:? 'u6' (layout( set=3 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:? 'u7' (layout( set=4 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:? 'u8' (layout( set=5 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:? 'anon@0' (layout( set=6 binding=1 row_major std140) uniform block{layout( row_major std140) uniform int cb1})
+0:? 'anon@1' (layout( binding=7 row_major std430) readonly buffer block{layout( row_major std430) buffer int tb1})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:34 Function Definition: @main( ( temp 4-component vector of float)
+0:34 Function Parameters:
+0:? Sequence
+0:35 't1' (layout( set=1 binding=1) uniform texture1D)
+0:36 't2' (layout( set=1 binding=2) uniform texture2D)
+0:37 't3' (layout( set=2 binding=1) uniform texture3D)
+0:38 direct index (layout( row_major std430) buffer 4-component vector of float)
+0:38 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of float)
+0:38 't4' (layout( set=3 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:38 Constant:
+0:38 0 (const uint)
+0:38 Constant:
+0:38 0 (const int)
+0:39 indirect index (layout( row_major std430) buffer uint)
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint)
+0:39 't5' (layout( set=3 binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 right-shift ( temp int)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 2 (const int)
+0:40 't6' (layout( set=3 binding=3 rgba32f) uniform textureBuffer)
+0:42 's1' (layout( set=1 binding=1) uniform sampler)
+0:43 's2' (layout( set=2 binding=2) uniform sampler)
+0:45 'u1' (layout( set=1 binding=1 rgba32f) uniform image1D)
+0:46 'u2' (layout( set=2 binding=2 rgba32f) uniform image2D)
+0:47 'u3' (layout( set=2 binding=3 rgba32f) uniform image3D)
+0:49 imageLoad ( temp float)
+0:49 'u4' (layout( set=1 binding=4 r32f) uniform imageBuffer)
+0:49 Constant:
+0:49 0 (const int)
+0:50 indirect index (layout( row_major std430) buffer uint)
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint)
+0:50 'u5' (layout( set=2 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 right-shift ( temp int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 2 (const int)
+0:51 direct index (layout( row_major std430) buffer float)
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of float)
+0:51 'u6' (layout( set=3 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 Constant:
+0:51 0 (const int)
+0:52 'u7' (layout( set=4 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:53 'u8' (layout( set=5 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:55 cb1: direct index for structure (layout( row_major std140) uniform int)
+0:55 'anon@0' (layout( set=6 binding=1 row_major std140) uniform block{layout( row_major std140) uniform int cb1})
+0:55 Constant:
+0:55 0 (const uint)
+0:56 tb1: direct index for structure (layout( row_major std430) buffer int)
+0:56 'anon@1' (layout( binding=7 row_major std430) readonly buffer block{layout( row_major std430) buffer int tb1})
+0:56 Constant:
+0:56 0 (const uint)
+0:58 Branch: Return with expression
+0:58 Constant:
+0:58 0.000000
+0:58 0.000000
+0:58 0.000000
+0:58 0.000000
+0:34 Function Definition: main( ( temp void)
+0:34 Function Parameters:
+0:? Sequence
+0:34 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:34 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 's1' (layout( set=1 binding=1) uniform sampler)
+0:? 's2' (layout( set=2 binding=2) uniform sampler)
+0:? 't1' (layout( set=1 binding=1) uniform texture1D)
+0:? 't2' (layout( set=1 binding=2) uniform texture2D)
+0:? 't3' (layout( set=2 binding=1) uniform texture3D)
+0:? 't4' (layout( set=3 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 't5' (layout( set=3 binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:? 't6' (layout( set=3 binding=3 rgba32f) uniform textureBuffer)
+0:? 'u1' (layout( set=1 binding=1 rgba32f) uniform image1D)
+0:? 'u2' (layout( set=2 binding=2 rgba32f) uniform image2D)
+0:? 'u3' (layout( set=2 binding=3 rgba32f) uniform image3D)
+0:? 'u4' (layout( set=1 binding=4 r32f) uniform imageBuffer)
+0:? 'u5' (layout( set=2 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:? 'u6' (layout( set=3 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:? 'u7' (layout( set=4 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:? 'u8' (layout( set=5 binding=4 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
+0:? 'anon@0' (layout( set=6 binding=1 row_major std140) uniform block{layout( row_major std140) uniform int cb1})
+0:? 'anon@1' (layout( binding=7 row_major std430) readonly buffer block{layout( row_major std430) buffer int tb1})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+Uniform reflection:
+t1: offset -1, type 8b5d, size 1, index -1, binding 21
+t2: offset -1, type 8b5e, size 1, index -1, binding 22
+t3: offset -1, type 8b5f, size 1, index -1, binding 26
+t4.@data: offset 0, type 8b52, size 1, index 0, binding -1
+t5.@data: offset 0, type 1405, size 0, index 1, binding -1
+t6: offset -1, type 8dc2, size 1, index -1, binding 23
+s1: offset -1, type 0, size 1, index -1, binding 11
+s2: offset -1, type 0, size 1, index -1, binding 17
+u1: offset -1, type 904c, size 1, index -1, binding 31
+u2: offset -1, type 904d, size 1, index -1, binding 42
+u3: offset -1, type 904e, size 1, index -1, binding 43
+u4: offset -1, type 9051, size 1, index -1, binding 34
+u5.@data: offset 0, type 1405, size 0, index 2, binding -1
+u6.@data: offset 0, type 1406, size 1, index 3, binding -1
+cb1: offset 0, type 1404, size 1, index 4, binding -1
+tb1: offset 0, type 1404, size 1, index 5, binding -1
+
+Uniform block reflection:
+t4: offset -1, type ffffffff, size 0, index -1, binding 21
+t5: offset -1, type ffffffff, size 0, index -1, binding 22
+u5: offset -1, type ffffffff, size 0, index -1, binding 44
+u6: offset -1, type ffffffff, size 0, index -1, binding 34
+cb: offset -1, type ffffffff, size 4, index -1, binding 51
+tb: offset -1, type ffffffff, size 4, index -1, binding 27
+
+Vertex attribute reflection:
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sin.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sin.frag.out
index 1f96440ef4b..51ee0a75a6c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sin.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.sin.frag.out
@@ -1,5 +1,5 @@
hlsl.sin.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -27,7 +27,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -52,7 +52,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 26
Capability Shader
@@ -60,6 +60,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 19 22
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "@PixelShaderFunction(vf4;"
Name 10 "input"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.snorm.uav.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.snorm.uav.comp.out
new file mode 100644
index 00000000000..1db3da5eef1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.snorm.uav.comp.out
@@ -0,0 +1,212 @@
+hlsl.snorm.uav.comp
+Shader version: 500
+local_size = (16, 16, 1)
+0:? Sequence
+0:12 Function Definition: @main(vu3; ( temp void)
+0:12 Function Parameters:
+0:12 'tid' ( in 3-component vector of uint)
+0:? Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 'storeTemp' ( temp 4-component vector of float)
+0:13 add ( temp 4-component vector of float)
+0:13 textureFetch ( temp 4-component vector of float)
+0:13 'ResultInS' (layout( binding=1) uniform texture3D)
+0:13 'tid' ( in 3-component vector of uint)
+0:13 Constant:
+0:13 0 (const int)
+0:13 uf4: direct index for structure ( uniform 4-component vector of float)
+0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 imageStore ( temp void)
+0:13 'ResultOutS' (layout( binding=1 rgba32f) uniform image3D)
+0:13 'tid' ( in 3-component vector of uint)
+0:13 'storeTemp' ( temp 4-component vector of float)
+0:13 'storeTemp' ( temp 4-component vector of float)
+0:14 Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 'storeTemp' ( temp 4-component vector of float)
+0:14 textureFetch ( temp 4-component vector of float)
+0:14 'ResultInU' (layout( binding=0) uniform texture3D)
+0:14 'tid' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 imageStore ( temp void)
+0:14 'ResultOutU' (layout( binding=0 rgba32f) uniform image3D)
+0:14 'tid' ( in 3-component vector of uint)
+0:14 'storeTemp' ( temp 4-component vector of float)
+0:14 'storeTemp' ( temp 4-component vector of float)
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 3-component vector of uint)
+0:? 'tid' ( temp 3-component vector of uint)
+0:? 'tid' ( in 3-component vector of uint GlobalInvocationID)
+0:12 Function Call: @main(vu3; ( temp void)
+0:? 'tid' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4})
+0:? 'ResultInU' (layout( binding=0) uniform texture3D)
+0:? 'ResultOutU' (layout( binding=0 rgba32f) uniform image3D)
+0:? 'ResultInS' (layout( binding=1) uniform texture3D)
+0:? 'ResultOutS' (layout( binding=1 rgba32f) uniform image3D)
+0:? 'tid' ( in 3-component vector of uint GlobalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (16, 16, 1)
+0:? Sequence
+0:12 Function Definition: @main(vu3; ( temp void)
+0:12 Function Parameters:
+0:12 'tid' ( in 3-component vector of uint)
+0:? Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 'storeTemp' ( temp 4-component vector of float)
+0:13 add ( temp 4-component vector of float)
+0:13 textureFetch ( temp 4-component vector of float)
+0:13 'ResultInS' (layout( binding=1) uniform texture3D)
+0:13 'tid' ( in 3-component vector of uint)
+0:13 Constant:
+0:13 0 (const int)
+0:13 uf4: direct index for structure ( uniform 4-component vector of float)
+0:13 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 imageStore ( temp void)
+0:13 'ResultOutS' (layout( binding=1 rgba32f) uniform image3D)
+0:13 'tid' ( in 3-component vector of uint)
+0:13 'storeTemp' ( temp 4-component vector of float)
+0:13 'storeTemp' ( temp 4-component vector of float)
+0:14 Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 'storeTemp' ( temp 4-component vector of float)
+0:14 textureFetch ( temp 4-component vector of float)
+0:14 'ResultInU' (layout( binding=0) uniform texture3D)
+0:14 'tid' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 imageStore ( temp void)
+0:14 'ResultOutU' (layout( binding=0 rgba32f) uniform image3D)
+0:14 'tid' ( in 3-component vector of uint)
+0:14 'storeTemp' ( temp 4-component vector of float)
+0:14 'storeTemp' ( temp 4-component vector of float)
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp 3-component vector of uint)
+0:? 'tid' ( temp 3-component vector of uint)
+0:? 'tid' ( in 3-component vector of uint GlobalInvocationID)
+0:12 Function Call: @main(vu3; ( temp void)
+0:? 'tid' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float uf4})
+0:? 'ResultInU' (layout( binding=0) uniform texture3D)
+0:? 'ResultOutU' (layout( binding=0 rgba32f) uniform image3D)
+0:? 'ResultInS' (layout( binding=1) uniform texture3D)
+0:? 'ResultOutS' (layout( binding=1 rgba32f) uniform image3D)
+0:? 'tid' ( in 3-component vector of uint GlobalInvocationID)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 54
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 49
+ ExecutionMode 4 LocalSize 16 16 1
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vu3;"
+ Name 10 "tid"
+ Name 16 "storeTemp"
+ Name 19 "ResultInS"
+ Name 25 "$Global"
+ MemberName 25($Global) 0 "uf4"
+ Name 27 ""
+ Name 34 "ResultOutS"
+ Name 38 "storeTemp"
+ Name 39 "ResultInU"
+ Name 43 "ResultOutU"
+ Name 47 "tid"
+ Name 49 "tid"
+ Name 51 "param"
+ Decorate 19(ResultInS) DescriptorSet 0
+ Decorate 19(ResultInS) Binding 1
+ MemberDecorate 25($Global) 0 Offset 0
+ Decorate 25($Global) Block
+ Decorate 27 DescriptorSet 0
+ Decorate 34(ResultOutS) DescriptorSet 0
+ Decorate 34(ResultOutS) Binding 1
+ Decorate 39(ResultInU) DescriptorSet 0
+ Decorate 39(ResultInU) Binding 0
+ Decorate 43(ResultOutU) DescriptorSet 0
+ Decorate 43(ResultOutU) Binding 0
+ Decorate 49(tid) BuiltIn GlobalInvocationId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 9: TypeFunction 2 8(ptr)
+ 13: TypeFloat 32
+ 14: TypeVector 13(float) 4
+ 15: TypePointer Function 14(fvec4)
+ 17: TypeImage 13(float) 3D sampled format:Unknown
+ 18: TypePointer UniformConstant 17
+ 19(ResultInS): 18(ptr) Variable UniformConstant
+ 22: TypeInt 32 1
+ 23: 22(int) Constant 0
+ 25($Global): TypeStruct 14(fvec4)
+ 26: TypePointer Uniform 25($Global)
+ 27: 26(ptr) Variable Uniform
+ 28: TypePointer Uniform 14(fvec4)
+ 32: TypeImage 13(float) 3D nonsampled format:Rgba32f
+ 33: TypePointer UniformConstant 32
+ 34(ResultOutS): 33(ptr) Variable UniformConstant
+ 39(ResultInU): 18(ptr) Variable UniformConstant
+ 43(ResultOutU): 33(ptr) Variable UniformConstant
+ 48: TypePointer Input 7(ivec3)
+ 49(tid): 48(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 47(tid): 8(ptr) Variable Function
+ 51(param): 8(ptr) Variable Function
+ 50: 7(ivec3) Load 49(tid)
+ Store 47(tid) 50
+ 52: 7(ivec3) Load 47(tid)
+ Store 51(param) 52
+ 53: 2 FunctionCall 11(@main(vu3;) 51(param)
+ Return
+ FunctionEnd
+ 11(@main(vu3;): 2 Function None 9
+ 10(tid): 8(ptr) FunctionParameter
+ 12: Label
+ 16(storeTemp): 15(ptr) Variable Function
+ 38(storeTemp): 15(ptr) Variable Function
+ 20: 17 Load 19(ResultInS)
+ 21: 7(ivec3) Load 10(tid)
+ 24: 14(fvec4) ImageFetch 20 21 Lod 23
+ 29: 28(ptr) AccessChain 27 23
+ 30: 14(fvec4) Load 29
+ 31: 14(fvec4) FAdd 24 30
+ Store 16(storeTemp) 31
+ 35: 32 Load 34(ResultOutS)
+ 36: 7(ivec3) Load 10(tid)
+ 37: 14(fvec4) Load 16(storeTemp)
+ ImageWrite 35 36 37
+ 40: 17 Load 39(ResultInU)
+ 41: 7(ivec3) Load 10(tid)
+ 42: 14(fvec4) ImageFetch 40 41 Lod 23
+ Store 38(storeTemp) 42
+ 44: 32 Load 43(ResultOutU)
+ 45: 7(ivec3) Load 10(tid)
+ 46: 14(fvec4) Load 38(storeTemp)
+ ImageWrite 44 45 46
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.staticMemberFunction.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.staticMemberFunction.frag.out
index e8a98cb247d..08d0d20b2f6 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.staticMemberFunction.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.staticMemberFunction.frag.out
@@ -1,5 +1,5 @@
hlsl.staticMemberFunction.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: Test::staticMemFun(vf4; ( global 4-component vector of float)
@@ -60,7 +60,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: Test::staticMemFun(vf4; ( global 4-component vector of float)
@@ -118,7 +118,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 54
Capability Shader
@@ -126,6 +126,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 52
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "Test::staticMemFun(vf4;"
Name 10 "a"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.string.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.string.frag.out
index c4a118f6b95..893e49d1659 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.string.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.string.frag.out
@@ -1,5 +1,5 @@
hlsl.string.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: @main(f1; ( temp float)
@@ -26,7 +26,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: @main(f1; ( temp float)
@@ -50,7 +50,7 @@ gl_FragCoord origin is upper left
0:? 'f' (layout( location=0) in float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 24
Capability Shader
@@ -58,6 +58,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 17 20
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 10 "@main(f1;"
Name 9 "f"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.stringtoken.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.stringtoken.frag.out
index c23d663c985..dcc493d7d3b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.stringtoken.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.stringtoken.frag.out
@@ -1,5 +1,5 @@
hlsl.stringtoken.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:16 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -22,7 +22,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:16 Sequence
0:16 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:16 Color: direct index for structure ( temp 4-component vector of float)
0:16 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:16 Constant:
@@ -30,13 +30,13 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'TestTexture' ( uniform texture2D)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float TestUF})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:16 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
@@ -59,7 +59,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:16 Sequence
0:16 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:16 Color: direct index for structure ( temp 4-component vector of float)
0:16 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:16 Constant:
@@ -67,10 +67,10 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'TestTexture' ( uniform texture2D)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float TestUF})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 34
Capability Shader
@@ -78,17 +78,18 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 25
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
Name 10 "@main("
Name 13 "psout"
- Name 25 "Color"
+ Name 25 "@entryPointOutput.Color"
Name 30 "TestTexture"
Name 31 "$Global"
MemberName 31($Global) 0 "TestUF"
Name 33 ""
- Decorate 25(Color) Location 0
+ Decorate 25(@entryPointOutput.Color) Location 0
Decorate 30(TestTexture) DescriptorSet 0
MemberDecorate 31($Global) 0 Offset 0
Decorate 31($Global) Block
@@ -107,7 +108,7 @@ gl_FragCoord origin is upper left
18: 7(fvec4) ConstantComposite 16 16 16 17
19: TypePointer Function 7(fvec4)
24: TypePointer Output 7(fvec4)
- 25(Color): 24(ptr) Variable Output
+25(@entryPointOutput.Color): 24(ptr) Variable Output
28: TypeImage 6(float) 2D sampled format:Unknown
29: TypePointer UniformConstant 28
30(TestTexture): 29(ptr) Variable UniformConstant
@@ -118,7 +119,7 @@ gl_FragCoord origin is upper left
5: Label
26:8(PS_OUTPUT) FunctionCall 10(@main()
27: 7(fvec4) CompositeExtract 26 0
- Store 25(Color) 27
+ Store 25(@entryPointOutput.Color) 27
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.frag.out
index c01e8fa7e03..c540c16203e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.frag.out
@@ -3,7 +3,7 @@ WARNING: 0:26: 'register' : ignoring shader_profile
WARNING: 0:27: 'register' : ignoring shader_profile
WARNING: 0:30: 'register' : ignoring shader_profile
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; ( temp 4-component vector of float)
@@ -43,70 +43,49 @@ gl_FragCoord origin is upper left
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 0 (const int)
-0:40 a: direct index for structure ( smooth temp 4-component vector of float)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 0 (const int)
+0:? 's.a' (layout( location=1) smooth in 4-component vector of float)
0:40 move second child to first child ( temp bool)
0:40 b: direct index for structure ( temp bool)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 1 (const int)
-0:40 b: direct index for structure ( flat temp bool)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 1 (const int)
+0:? 's.b' (layout( location=2) flat in bool)
0:40 move second child to first child ( temp 1-component vector of float)
0:40 c: direct index for structure ( temp 1-component vector of float)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 2 (const int)
-0:40 c: direct index for structure ( centroid noperspective temp 1-component vector of float)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 2 (const int)
+0:? 's.c' (layout( location=3) centroid noperspective in 1-component vector of float)
0:40 move second child to first child ( temp 2-component vector of float)
0:40 d: direct index for structure ( temp 2-component vector of float)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 3 (const int)
-0:40 d: direct index for structure ( centroid sample temp 2-component vector of float)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 3 (const int)
+0:? 's.d' (layout( location=4) centroid sample in 2-component vector of float)
0:40 move second child to first child ( temp bool)
0:40 ff1: direct index for structure ( temp bool)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 4 (const int)
-0:? 's_ff1' ( in bool Face)
+0:? 's.ff1' ( flat in bool Face)
0:40 move second child to first child ( temp bool)
0:40 ff2: direct index for structure ( temp bool)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 5 (const int)
-0:40 ff2: direct index for structure ( temp bool)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 4 (const int)
+0:? 's.ff2' (layout( location=5) flat in bool)
0:40 move second child to first child ( temp bool)
0:40 ff3: direct index for structure ( temp bool)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 6 (const int)
-0:40 ff3: direct index for structure ( temp bool)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 5 (const int)
+0:? 's.ff3' (layout( location=6) flat in bool)
0:40 move second child to first child ( temp 4-component vector of float)
0:40 ff4: direct index for structure ( temp 4-component vector of float)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 7 (const int)
-0:40 ff4: direct index for structure ( temp 4-component vector of float)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 6 (const int)
+0:? 's.ff4' (layout( location=7) in 4-component vector of float)
0:40 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:40 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; ( temp 4-component vector of float)
@@ -117,14 +96,20 @@ gl_FragCoord origin is upper left
0:? 's2' ( global structure{ temp 4-component vector of float i})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:? 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:? 's_ff1' ( in bool Face)
+0:? 's.ff1' ( flat in bool Face)
+0:? 's.a' (layout( location=1) smooth in 4-component vector of float)
+0:? 's.b' (layout( location=2) flat in bool)
+0:? 's.c' (layout( location=3) centroid noperspective in 1-component vector of float)
+0:? 's.d' (layout( location=4) centroid sample in 2-component vector of float)
+0:? 's.ff2' (layout( location=5) flat in bool)
+0:? 's.ff3' (layout( location=6) flat in bool)
+0:? 's.ff4' (layout( location=7) in 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; ( temp 4-component vector of float)
@@ -164,70 +149,49 @@ gl_FragCoord origin is upper left
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 0 (const int)
-0:40 a: direct index for structure ( smooth temp 4-component vector of float)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 0 (const int)
+0:? 's.a' (layout( location=1) smooth in 4-component vector of float)
0:40 move second child to first child ( temp bool)
0:40 b: direct index for structure ( temp bool)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 1 (const int)
-0:40 b: direct index for structure ( flat temp bool)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 1 (const int)
+0:? 's.b' (layout( location=2) flat in bool)
0:40 move second child to first child ( temp 1-component vector of float)
0:40 c: direct index for structure ( temp 1-component vector of float)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 2 (const int)
-0:40 c: direct index for structure ( centroid noperspective temp 1-component vector of float)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 2 (const int)
+0:? 's.c' (layout( location=3) centroid noperspective in 1-component vector of float)
0:40 move second child to first child ( temp 2-component vector of float)
0:40 d: direct index for structure ( temp 2-component vector of float)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 3 (const int)
-0:40 d: direct index for structure ( centroid sample temp 2-component vector of float)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 3 (const int)
+0:? 's.d' (layout( location=4) centroid sample in 2-component vector of float)
0:40 move second child to first child ( temp bool)
0:40 ff1: direct index for structure ( temp bool)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 4 (const int)
-0:? 's_ff1' ( in bool Face)
+0:? 's.ff1' ( flat in bool Face)
0:40 move second child to first child ( temp bool)
0:40 ff2: direct index for structure ( temp bool)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 5 (const int)
-0:40 ff2: direct index for structure ( temp bool)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 4 (const int)
+0:? 's.ff2' (layout( location=5) flat in bool)
0:40 move second child to first child ( temp bool)
0:40 ff3: direct index for structure ( temp bool)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 6 (const int)
-0:40 ff3: direct index for structure ( temp bool)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 5 (const int)
+0:? 's.ff3' (layout( location=6) flat in bool)
0:40 move second child to first child ( temp 4-component vector of float)
0:40 ff4: direct index for structure ( temp 4-component vector of float)
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 7 (const int)
-0:40 ff4: direct index for structure ( temp 4-component vector of float)
-0:40 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 6 (const int)
+0:? 's.ff4' (layout( location=7) in 4-component vector of float)
0:40 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:40 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; ( temp 4-component vector of float)
@@ -238,18 +202,25 @@ gl_FragCoord origin is upper left
0:? 's2' ( global structure{ temp 4-component vector of float i})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:? 's' (layout( location=1) in structure{ smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:? 's_ff1' ( in bool Face)
+0:? 's.ff1' ( flat in bool Face)
+0:? 's.a' (layout( location=1) smooth in 4-component vector of float)
+0:? 's.b' (layout( location=2) flat in bool)
+0:? 's.c' (layout( location=3) centroid noperspective in 1-component vector of float)
+0:? 's.d' (layout( location=4) centroid sample in 2-component vector of float)
+0:? 's.ff2' (layout( location=5) flat in bool)
+0:? 's.ff3' (layout( location=6) flat in bool)
+0:? 's.ff4' (layout( location=7) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 105
+// Generated by (magic number): 80002
+// Id's are bound by 102
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 51 56 79 94
+ EntryPoint Fragment 4 "PixelShaderFunction" 51 54 59 65 71 76 80 84 87 91
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "IN_S"
MemberName 11(IN_S) 0 "a"
@@ -277,46 +248,53 @@ gl_FragCoord origin is upper left
Name 49 "input"
Name 51 "input"
Name 53 "s"
- Name 54 "IN_S"
- MemberName 54(IN_S) 0 "a"
- MemberName 54(IN_S) 1 "b"
- MemberName 54(IN_S) 2 "c"
- MemberName 54(IN_S) 3 "d"
- MemberName 54(IN_S) 4 "ff2"
- MemberName 54(IN_S) 5 "ff3"
- MemberName 54(IN_S) 6 "ff4"
- Name 56 "s"
- Name 79 "s_ff1"
- Name 94 "@entryPointOutput"
- Name 95 "param"
- Name 97 "param"
- Name 101 "myS"
- MemberName 101(myS) 0 "b"
- MemberName 101(myS) 1 "c"
- MemberName 101(myS) 2 "a"
- MemberName 101(myS) 3 "d"
- Name 102 "$Global"
- MemberName 102($Global) 0 "s1"
- MemberName 102($Global) 1 "ff5"
- MemberName 102($Global) 2 "ff6"
- Name 104 ""
+ Name 54 "s.a"
+ Name 59 "s.b"
+ Name 65 "s.c"
+ Name 71 "s.d"
+ Name 76 "s.ff1"
+ Name 80 "s.ff2"
+ Name 84 "s.ff3"
+ Name 87 "s.ff4"
+ Name 91 "@entryPointOutput"
+ Name 92 "param"
+ Name 94 "param"
+ Name 98 "myS"
+ MemberName 98(myS) 0 "b"
+ MemberName 98(myS) 1 "c"
+ MemberName 98(myS) 2 "a"
+ MemberName 98(myS) 3 "d"
+ Name 99 "$Global"
+ MemberName 99($Global) 0 "s1"
+ MemberName 99($Global) 1 "ff5"
+ MemberName 99($Global) 2 "ff6"
+ Name 101 ""
Decorate 51(input) Location 0
- MemberDecorate 54(IN_S) 1 Flat
- MemberDecorate 54(IN_S) 2 NoPerspective
- MemberDecorate 54(IN_S) 2 Centroid
- MemberDecorate 54(IN_S) 3 Centroid
- Decorate 56(s) Location 1
- Decorate 79(s_ff1) BuiltIn FrontFacing
- Decorate 94(@entryPointOutput) Location 0
- MemberDecorate 101(myS) 0 Offset 0
- MemberDecorate 101(myS) 1 Offset 4
- MemberDecorate 101(myS) 2 Offset 16
- MemberDecorate 101(myS) 3 Offset 32
- MemberDecorate 102($Global) 0 Offset 0
- MemberDecorate 102($Global) 1 Offset 1620
- MemberDecorate 102($Global) 2 Offset 1636
- Decorate 102($Global) Block
- Decorate 104 DescriptorSet 0
+ Decorate 54(s.a) Location 1
+ Decorate 59(s.b) Flat
+ Decorate 59(s.b) Location 2
+ Decorate 65(s.c) NoPerspective
+ Decorate 65(s.c) Centroid
+ Decorate 65(s.c) Location 3
+ Decorate 71(s.d) Centroid
+ Decorate 71(s.d) Location 4
+ Decorate 76(s.ff1) Flat
+ Decorate 76(s.ff1) BuiltIn FrontFacing
+ Decorate 80(s.ff2) Flat
+ Decorate 80(s.ff2) Location 5
+ Decorate 84(s.ff3) Flat
+ Decorate 84(s.ff3) Location 6
+ Decorate 87(s.ff4) Location 7
+ Decorate 91(@entryPointOutput) Location 0
+ MemberDecorate 98(myS) 0 Offset 0
+ MemberDecorate 98(myS) 1 Offset 4
+ MemberDecorate 98(myS) 2 Offset 16
+ MemberDecorate 98(myS) 3 Offset 32
+ MemberDecorate 99($Global) 0 Offset 0
+ MemberDecorate 99($Global) 1 Offset 1620
+ MemberDecorate 99($Global) 2 Offset 1636
+ Decorate 99($Global) Block
+ Decorate 101 DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -343,74 +321,71 @@ gl_FragCoord origin is upper left
42: TypePointer Function 41(containEmpty)
50: TypePointer Input 7(fvec4)
51(input): 50(ptr) Variable Input
- 54(IN_S): TypeStruct 7(fvec4) 9(bool) 6(float) 10(fvec2) 9(bool) 9(bool) 7(fvec4)
- 55: TypePointer Input 54(IN_S)
- 56(s): 55(ptr) Variable Input
- 60: 31(int) Constant 1
- 61: TypePointer Input 9(bool)
- 64: TypePointer Function 9(bool)
- 66: 31(int) Constant 2
- 67: TypePointer Input 6(float)
- 70: TypePointer Function 6(float)
- 72: 31(int) Constant 3
- 73: TypePointer Input 10(fvec2)
- 76: TypePointer Function 10(fvec2)
- 78: 31(int) Constant 4
- 79(s_ff1): 61(ptr) Variable Input
- 82: 31(int) Constant 5
- 86: 31(int) Constant 6
- 93: TypePointer Output 7(fvec4)
-94(@entryPointOutput): 93(ptr) Variable Output
- 100: TypeInt 32 0
- 101(myS): TypeStruct 100(int) 100(int) 7(fvec4) 7(fvec4)
- 102($Global): TypeStruct 101(myS) 6(float) 6(float)
- 103: TypePointer Uniform 102($Global)
- 104: 103(ptr) Variable Uniform
+ 54(s.a): 50(ptr) Variable Input
+ 57: 31(int) Constant 1
+ 58: TypePointer Input 9(bool)
+ 59(s.b): 58(ptr) Variable Input
+ 61: TypePointer Function 9(bool)
+ 63: 31(int) Constant 2
+ 64: TypePointer Input 6(float)
+ 65(s.c): 64(ptr) Variable Input
+ 67: TypePointer Function 6(float)
+ 69: 31(int) Constant 3
+ 70: TypePointer Input 10(fvec2)
+ 71(s.d): 70(ptr) Variable Input
+ 73: TypePointer Function 10(fvec2)
+ 75: 31(int) Constant 4
+ 76(s.ff1): 58(ptr) Variable Input
+ 79: 31(int) Constant 5
+ 80(s.ff2): 58(ptr) Variable Input
+ 83: 31(int) Constant 6
+ 84(s.ff3): 58(ptr) Variable Input
+ 87(s.ff4): 50(ptr) Variable Input
+ 90: TypePointer Output 7(fvec4)
+91(@entryPointOutput): 90(ptr) Variable Output
+ 97: TypeInt 32 0
+ 98(myS): TypeStruct 97(int) 97(int) 7(fvec4) 7(fvec4)
+ 99($Global): TypeStruct 98(myS) 6(float) 6(float)
+ 100: TypePointer Uniform 99($Global)
+ 101: 100(ptr) Variable Uniform
4(PixelShaderFunction): 2 Function None 3
5: Label
49(input): 8(ptr) Variable Function
53(s): 12(ptr) Variable Function
- 95(param): 8(ptr) Variable Function
- 97(param): 12(ptr) Variable Function
+ 92(param): 8(ptr) Variable Function
+ 94(param): 12(ptr) Variable Function
52: 7(fvec4) Load 51(input)
Store 49(input) 52
- 57: 50(ptr) AccessChain 56(s) 32
- 58: 7(fvec4) Load 57
- 59: 8(ptr) AccessChain 53(s) 32
- Store 59 58
- 62: 61(ptr) AccessChain 56(s) 60
- 63: 9(bool) Load 62
- 65: 64(ptr) AccessChain 53(s) 60
- Store 65 63
- 68: 67(ptr) AccessChain 56(s) 66
- 69: 6(float) Load 68
- 71: 70(ptr) AccessChain 53(s) 66
- Store 71 69
- 74: 73(ptr) AccessChain 56(s) 72
- 75: 10(fvec2) Load 74
- 77: 76(ptr) AccessChain 53(s) 72
- Store 77 75
- 80: 9(bool) Load 79(s_ff1)
- 81: 64(ptr) AccessChain 53(s) 78
- Store 81 80
- 83: 61(ptr) AccessChain 56(s) 78
- 84: 9(bool) Load 83
- 85: 64(ptr) AccessChain 53(s) 82
- Store 85 84
- 87: 61(ptr) AccessChain 56(s) 82
- 88: 9(bool) Load 87
- 89: 64(ptr) AccessChain 53(s) 86
+ 55: 7(fvec4) Load 54(s.a)
+ 56: 8(ptr) AccessChain 53(s) 32
+ Store 56 55
+ 60: 9(bool) Load 59(s.b)
+ 62: 61(ptr) AccessChain 53(s) 57
+ Store 62 60
+ 66: 6(float) Load 65(s.c)
+ 68: 67(ptr) AccessChain 53(s) 63
+ Store 68 66
+ 72: 10(fvec2) Load 71(s.d)
+ 74: 73(ptr) AccessChain 53(s) 69
+ Store 74 72
+ 77: 9(bool) Load 76(s.ff1)
+ 78: 61(ptr) AccessChain 53(s) 75
+ Store 78 77
+ 81: 9(bool) Load 80(s.ff2)
+ 82: 61(ptr) AccessChain 53(s) 79
+ Store 82 81
+ 85: 9(bool) Load 84(s.ff3)
+ 86: 61(ptr) AccessChain 53(s) 83
+ Store 86 85
+ 88: 7(fvec4) Load 87(s.ff4)
+ 89: 8(ptr) AccessChain 53(s) 33
Store 89 88
- 90: 50(ptr) AccessChain 56(s) 86
- 91: 7(fvec4) Load 90
- 92: 8(ptr) AccessChain 53(s) 33
- Store 92 91
- 96: 7(fvec4) Load 49(input)
- Store 95(param) 96
- 98: 11(IN_S) Load 53(s)
- Store 97(param) 98
- 99: 7(fvec4) FunctionCall 16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;) 95(param) 97(param)
- Store 94(@entryPointOutput) 99
+ 93: 7(fvec4) Load 49(input)
+ Store 92(param) 93
+ 95: 11(IN_S) Load 53(s)
+ Store 94(param) 95
+ 96: 7(fvec4) FunctionCall 16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;) 92(param) 94(param)
+ Store 91(@entryPointOutput) 96
Return
FunctionEnd
16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;): 7(fvec4) Function None 13
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split-1.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split-1.vert.out
index 9ec01d8393b..6086e320099 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split-1.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split-1.vert.out
@@ -1,5 +1,5 @@
hlsl.struct.split-1.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:17 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11;vf4; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Function Parameters:
@@ -46,19 +46,19 @@ Shader version: 450
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:17 Constant:
0:17 0 (const int)
-0:? 'x0_in' (layout( location=0) in int)
+0:? 'vsin.x0_in' (layout( location=0) in int)
0:17 move second child to first child ( temp 4-component vector of float)
0:17 Pos_in: direct index for structure ( temp 4-component vector of float)
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:17 Constant:
0:17 1 (const int)
-0:? 'Pos_in' (layout( location=1) in 4-component vector of float)
+0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
0:17 move second child to first child ( temp int)
0:17 x1_in: direct index for structure ( temp int)
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:17 Constant:
0:17 2 (const int)
-0:? 'x1_in' (layout( location=2) in int)
+0:? 'vsin.x1_in' (layout( location=2) in int)
0:17 move second child to first child ( temp 4-component vector of float)
0:? 'Pos_loose' ( temp 4-component vector of float)
0:? 'Pos_loose' (layout( location=3) in 4-component vector of float)
@@ -69,41 +69,37 @@ Shader version: 450
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:? 'Pos_loose' ( temp 4-component vector of float)
0:17 move second child to first child ( temp int)
-0:17 x0_out: direct index for structure ( temp int)
-0:17 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:17 Constant:
-0:17 0 (const int)
+0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
0:17 x0_out: direct index for structure ( temp int)
0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Constant:
0:17 0 (const int)
0:17 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos_out' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
0:17 Pos_out: direct index for structure ( temp 4-component vector of float)
0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Constant:
0:17 1 (const int)
0:17 move second child to first child ( temp int)
-0:17 x1_out: direct index for structure ( temp int)
-0:17 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:17 Constant:
-0:17 1 (const int)
+0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
0:17 x1_out: direct index for structure ( temp int)
0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Constant:
0:17 2 (const int)
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:? 'x0_in' (layout( location=0) in int)
-0:? 'Pos_in' (layout( location=1) in 4-component vector of float)
-0:? 'x1_in' (layout( location=2) in int)
+0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
+0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
+0:? 'vsin.x0_in' (layout( location=0) in int)
+0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
+0:? 'vsin.x1_in' (layout( location=2) in int)
0:? 'Pos_loose' (layout( location=3) in 4-component vector of float)
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:17 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11;vf4; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Function Parameters:
@@ -150,19 +146,19 @@ Shader version: 450
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:17 Constant:
0:17 0 (const int)
-0:? 'x0_in' (layout( location=0) in int)
+0:? 'vsin.x0_in' (layout( location=0) in int)
0:17 move second child to first child ( temp 4-component vector of float)
0:17 Pos_in: direct index for structure ( temp 4-component vector of float)
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:17 Constant:
0:17 1 (const int)
-0:? 'Pos_in' (layout( location=1) in 4-component vector of float)
+0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
0:17 move second child to first child ( temp int)
0:17 x1_in: direct index for structure ( temp int)
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:17 Constant:
0:17 2 (const int)
-0:? 'x1_in' (layout( location=2) in int)
+0:? 'vsin.x1_in' (layout( location=2) in int)
0:17 move second child to first child ( temp 4-component vector of float)
0:? 'Pos_loose' ( temp 4-component vector of float)
0:? 'Pos_loose' (layout( location=3) in 4-component vector of float)
@@ -173,44 +169,41 @@ Shader version: 450
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:? 'Pos_loose' ( temp 4-component vector of float)
0:17 move second child to first child ( temp int)
-0:17 x0_out: direct index for structure ( temp int)
-0:17 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:17 Constant:
-0:17 0 (const int)
+0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
0:17 x0_out: direct index for structure ( temp int)
0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Constant:
0:17 0 (const int)
0:17 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos_out' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
0:17 Pos_out: direct index for structure ( temp 4-component vector of float)
0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Constant:
0:17 1 (const int)
0:17 move second child to first child ( temp int)
-0:17 x1_out: direct index for structure ( temp int)
-0:17 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:17 Constant:
-0:17 1 (const int)
+0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
0:17 x1_out: direct index for structure ( temp int)
0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Constant:
0:17 2 (const int)
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:? 'x0_in' (layout( location=0) in int)
-0:? 'Pos_in' (layout( location=1) in 4-component vector of float)
-0:? 'x1_in' (layout( location=2) in int)
+0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
+0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
+0:? 'vsin.x0_in' (layout( location=0) in int)
+0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
+0:? 'vsin.x1_in' (layout( location=2) in int)
0:? 'Pos_loose' (layout( location=3) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 73
+// Generated by (magic number): 80002
+// Id's are bound by 70
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 40 44 47 51 61 67
+ EntryPoint Vertex 4 "main" 40 44 47 51 60 64 67
+ Source HLSL 500
Name 4 "main"
Name 9 "VS_INPUT"
MemberName 9(VS_INPUT) 0 "x0_in"
@@ -225,25 +218,24 @@ Shader version: 450
Name 15 "Pos_loose"
Name 19 "vsout"
Name 38 "vsin"
- Name 40 "x0_in"
- Name 44 "Pos_in"
- Name 47 "x1_in"
+ Name 40 "vsin.x0_in"
+ Name 44 "vsin.Pos_in"
+ Name 47 "vsin.x1_in"
Name 50 "Pos_loose"
Name 51 "Pos_loose"
Name 53 "flattenTemp"
Name 54 "param"
Name 56 "param"
- Name 59 "VS_OUTPUT"
- MemberName 59(VS_OUTPUT) 0 "x0_out"
- MemberName 59(VS_OUTPUT) 1 "x1_out"
- Name 61 "@entryPointOutput"
- Name 67 "@entryPointOutput_Pos_out"
- Decorate 40(x0_in) Location 0
- Decorate 44(Pos_in) Location 1
- Decorate 47(x1_in) Location 2
+ Name 60 "@entryPointOutput.x0_out"
+ Name 64 "@entryPointOutput.Pos_out"
+ Name 67 "@entryPointOutput.x1_out"
+ Decorate 40(vsin.x0_in) Location 0
+ Decorate 44(vsin.Pos_in) Location 1
+ Decorate 47(vsin.x1_in) Location 2
Decorate 51(Pos_loose) Location 3
- Decorate 61(@entryPointOutput) Location 0
- Decorate 67(@entryPointOutput_Pos_out) BuiltIn Position
+ Decorate 60(@entryPointOutput.x0_out) Location 0
+ Decorate 64(@entryPointOutput.Pos_out) BuiltIn Position
+ Decorate 67(@entryPointOutput.x1_out) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -260,17 +252,16 @@ Shader version: 450
25: 6(int) Constant 1
31: 6(int) Constant 2
39: TypePointer Input 6(int)
- 40(x0_in): 39(ptr) Variable Input
+ 40(vsin.x0_in): 39(ptr) Variable Input
43: TypePointer Input 8(fvec4)
- 44(Pos_in): 43(ptr) Variable Input
- 47(x1_in): 39(ptr) Variable Input
+ 44(vsin.Pos_in): 43(ptr) Variable Input
+ 47(vsin.x1_in): 39(ptr) Variable Input
51(Pos_loose): 43(ptr) Variable Input
- 59(VS_OUTPUT): TypeStruct 6(int) 6(int)
- 60: TypePointer Output 59(VS_OUTPUT)
-61(@entryPointOutput): 60(ptr) Variable Output
- 64: TypePointer Output 6(int)
- 66: TypePointer Output 8(fvec4)
-67(@entryPointOutput_Pos_out): 66(ptr) Variable Output
+ 59: TypePointer Output 6(int)
+60(@entryPointOutput.x0_out): 59(ptr) Variable Output
+ 63: TypePointer Output 8(fvec4)
+64(@entryPointOutput.Pos_out): 63(ptr) Variable Output
+67(@entryPointOutput.x1_out): 59(ptr) Variable Output
4(main): 2 Function None 3
5: Label
38(vsin): 10(ptr) Variable Function
@@ -278,13 +269,13 @@ Shader version: 450
53(flattenTemp): 18(ptr) Variable Function
54(param): 10(ptr) Variable Function
56(param): 11(ptr) Variable Function
- 41: 6(int) Load 40(x0_in)
+ 41: 6(int) Load 40(vsin.x0_in)
42: 21(ptr) AccessChain 38(vsin) 20
Store 42 41
- 45: 8(fvec4) Load 44(Pos_in)
+ 45: 8(fvec4) Load 44(vsin.Pos_in)
46: 11(ptr) AccessChain 38(vsin) 25
Store 46 45
- 48: 6(int) Load 47(x1_in)
+ 48: 6(int) Load 47(vsin.x1_in)
49: 21(ptr) AccessChain 38(vsin) 31
Store 49 48
52: 8(fvec4) Load 51(Pos_loose)
@@ -295,17 +286,15 @@ Shader version: 450
Store 56(param) 57
58:12(VS_OUTPUT) FunctionCall 16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;) 54(param) 56(param)
Store 53(flattenTemp) 58
- 62: 21(ptr) AccessChain 53(flattenTemp) 20
- 63: 6(int) Load 62
- 65: 64(ptr) AccessChain 61(@entryPointOutput) 20
- Store 65 63
- 68: 11(ptr) AccessChain 53(flattenTemp) 25
- 69: 8(fvec4) Load 68
- Store 67(@entryPointOutput_Pos_out) 69
- 70: 21(ptr) AccessChain 53(flattenTemp) 31
- 71: 6(int) Load 70
- 72: 64(ptr) AccessChain 61(@entryPointOutput) 25
- Store 72 71
+ 61: 21(ptr) AccessChain 53(flattenTemp) 20
+ 62: 6(int) Load 61
+ Store 60(@entryPointOutput.x0_out) 62
+ 65: 11(ptr) AccessChain 53(flattenTemp) 25
+ 66: 8(fvec4) Load 65
+ Store 64(@entryPointOutput.Pos_out) 66
+ 68: 21(ptr) AccessChain 53(flattenTemp) 31
+ 69: 6(int) Load 68
+ Store 67(@entryPointOutput.x1_out) 69
Return
FunctionEnd
16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;):12(VS_OUTPUT) Function None 13
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.array.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.array.geom.out
index b907815b89d..42f45a8a795 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.array.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.array.geom.out
@@ -1,5 +1,5 @@
hlsl.struct.split.array.geom
-Shader version: 450
+Shader version: 500
invocations = -1
max_vertices = 4
input primitive = points
@@ -72,12 +72,16 @@ output primitive = triangle_strip
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:? Linker Objects
0:? 'v' (layout( location=0) in 1-element array of uint)
+0:? 'OutputStream.Pos' ( out 4-component vector of float Position)
+0:? 'OutputStream.TexCoord' (layout( location=0) out 2-component vector of float)
+0:? 'OutputStream.TerrainPos' (layout( location=1) out 3-component vector of float)
+0:? 'OutputStream.VertexID' (layout( location=2) out uint)
Linked geometry stage:
-Shader version: 450
+Shader version: 500
invocations = 1
max_vertices = 4
input primitive = points
@@ -150,19 +154,24 @@ output primitive = triangle_strip
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:? Linker Objects
0:? 'v' (layout( location=0) in 1-element array of uint)
+0:? 'OutputStream.Pos' ( out 4-component vector of float Position)
+0:? 'OutputStream.TexCoord' (layout( location=0) out 2-component vector of float)
+0:? 'OutputStream.TerrainPos' (layout( location=1) out 3-component vector of float)
+0:? 'OutputStream.VertexID' (layout( location=2) out uint)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 73
+// Generated by (magic number): 80002
+// Id's are bound by 82
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Geometry 4 "main" 66
+ EntryPoint Geometry 4 "main" 66 75 77 79 81
ExecutionMode 4 InputPoints
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 4
+ Source HLSL 500
Name 4 "main"
Name 14 "PSInput"
MemberName 14(PSInput) 0 "Pos"
@@ -181,7 +190,15 @@ output primitive = triangle_strip
Name 68 "OutputStream"
Name 69 "param"
Name 71 "param"
+ Name 75 "OutputStream.Pos"
+ Name 77 "OutputStream.TexCoord"
+ Name 79 "OutputStream.TerrainPos"
+ Name 81 "OutputStream.VertexID"
Decorate 66(v) Location 0
+ Decorate 75(OutputStream.Pos) BuiltIn Position
+ Decorate 77(OutputStream.TexCoord) Location 0
+ Decorate 79(OutputStream.TerrainPos) Location 1
+ Decorate 81(OutputStream.VertexID) Location 2
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -214,6 +231,14 @@ output primitive = triangle_strip
60: 28(int) Constant 1
65: TypePointer Input 8
66(v): 65(ptr) Variable Input
+ 74: TypePointer Output 11(fvec4)
+75(OutputStream.Pos): 74(ptr) Variable Output
+ 76: TypePointer Output 12(fvec2)
+77(OutputStream.TexCoord): 76(ptr) Variable Output
+ 78: TypePointer Output 13(fvec3)
+79(OutputStream.TerrainPos): 78(ptr) Variable Output
+ 80: TypePointer Output 6(int)
+81(OutputStream.VertexID): 80(ptr) Variable Output
4(main): 2 Function None 3
5: Label
64(v): 9(ptr) Variable Function
@@ -225,6 +250,8 @@ output primitive = triangle_strip
70: 8 Load 64(v)
Store 69(param) 70
72: 2 FunctionCall 19(@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;) 69(param) 71(param)
+ 73: 14(PSInput) Load 71(param)
+ Store 68(OutputStream) 73
Return
FunctionEnd
19(@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;): 2 Function None 16
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.assign.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.assign.frag.out
index ad185ee1e8c..b42663951f9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.assign.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.assign.frag.out
@@ -1,5 +1,5 @@
hlsl.struct.split.assign.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: @main(i1;struct-S-f1-vf41[3]; ( temp 4-component vector of float)
@@ -11,16 +11,19 @@ gl_FragCoord origin is upper left
0:9 'input' ( in 3-element array of structure{ temp float f, temp 4-component vector of float pos})
0:9 'a' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos})
0:11 Branch: Return with expression
-0:11 Constant:
-0:11 1.000000
-0:11 1.000000
-0:11 1.000000
+0:11 pos: direct index for structure ( temp 4-component vector of float)
+0:11 direct index ( temp structure{ temp float f, temp 4-component vector of float pos})
+0:11 'a' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
0:7 Function Definition: main( ( temp void)
0:7 Function Parameters:
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'i' ( temp int)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:7 Sequence
0:7 move second child to first child ( temp float)
0:7 f: direct index for structure ( temp float)
@@ -30,13 +33,7 @@ gl_FragCoord origin is upper left
0:7 0 (const int)
0:7 Constant:
0:7 0 (const int)
-0:7 f: direct index for structure ( temp float)
-0:7 direct index (layout( location=1) in structure{ temp float f})
-0:7 'input' (layout( location=1) in 3-element array of structure{ temp float f})
-0:7 Constant:
-0:7 0 (const int)
-0:7 Constant:
-0:7 0 (const int)
+0:? 'input[0].f' (layout( location=1) in float)
0:7 move second child to first child ( temp 4-component vector of float)
0:7 pos: direct index for structure ( temp 4-component vector of float)
0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos})
@@ -46,7 +43,7 @@ gl_FragCoord origin is upper left
0:7 Constant:
0:7 1 (const int)
0:7 direct index ( in 4-component vector of float FragCoord)
-0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
+0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord)
0:7 Constant:
0:7 0 (const int)
0:7 move second child to first child ( temp float)
@@ -57,13 +54,7 @@ gl_FragCoord origin is upper left
0:7 1 (const int)
0:7 Constant:
0:7 0 (const int)
-0:7 f: direct index for structure ( temp float)
-0:7 direct index (layout( location=1) in structure{ temp float f})
-0:7 'input' (layout( location=1) in 3-element array of structure{ temp float f})
-0:7 Constant:
-0:7 1 (const int)
-0:7 Constant:
-0:7 0 (const int)
+0:? 'input[1].f' (layout( location=2) in float)
0:7 move second child to first child ( temp 4-component vector of float)
0:7 pos: direct index for structure ( temp 4-component vector of float)
0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos})
@@ -73,7 +64,7 @@ gl_FragCoord origin is upper left
0:7 Constant:
0:7 1 (const int)
0:7 direct index ( in 4-component vector of float FragCoord)
-0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
+0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord)
0:7 Constant:
0:7 1 (const int)
0:7 move second child to first child ( temp float)
@@ -84,13 +75,7 @@ gl_FragCoord origin is upper left
0:7 2 (const int)
0:7 Constant:
0:7 0 (const int)
-0:7 f: direct index for structure ( temp float)
-0:7 direct index (layout( location=1) in structure{ temp float f})
-0:7 'input' (layout( location=1) in 3-element array of structure{ temp float f})
-0:7 Constant:
-0:7 2 (const int)
-0:7 Constant:
-0:7 0 (const int)
+0:? 'input[2].f' (layout( location=3) in float)
0:7 move second child to first child ( temp 4-component vector of float)
0:7 pos: direct index for structure ( temp 4-component vector of float)
0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos})
@@ -100,7 +85,7 @@ gl_FragCoord origin is upper left
0:7 Constant:
0:7 1 (const int)
0:7 direct index ( in 4-component vector of float FragCoord)
-0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
+0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord)
0:7 Constant:
0:7 2 (const int)
0:7 move second child to first child ( temp 4-component vector of float)
@@ -110,15 +95,17 @@ gl_FragCoord origin is upper left
0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos})
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'i' (layout( location=0) in int)
-0:? 'input' (layout( location=1) in 3-element array of structure{ temp float f})
-0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
+0:? 'i' (layout( location=0) flat in int)
+0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord)
+0:? 'input[0].f' (layout( location=1) in float)
+0:? 'input[1].f' (layout( location=2) in float)
+0:? 'input[2].f' (layout( location=3) in float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: @main(i1;struct-S-f1-vf41[3]; ( temp 4-component vector of float)
@@ -130,16 +117,19 @@ gl_FragCoord origin is upper left
0:9 'input' ( in 3-element array of structure{ temp float f, temp 4-component vector of float pos})
0:9 'a' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos})
0:11 Branch: Return with expression
-0:11 Constant:
-0:11 1.000000
-0:11 1.000000
-0:11 1.000000
+0:11 pos: direct index for structure ( temp 4-component vector of float)
+0:11 direct index ( temp structure{ temp float f, temp 4-component vector of float pos})
+0:11 'a' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos})
+0:11 Constant:
+0:11 1 (const int)
+0:11 Constant:
+0:11 1 (const int)
0:7 Function Definition: main( ( temp void)
0:7 Function Parameters:
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'i' ( temp int)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:7 Sequence
0:7 move second child to first child ( temp float)
0:7 f: direct index for structure ( temp float)
@@ -149,13 +139,7 @@ gl_FragCoord origin is upper left
0:7 0 (const int)
0:7 Constant:
0:7 0 (const int)
-0:7 f: direct index for structure ( temp float)
-0:7 direct index (layout( location=1) in structure{ temp float f})
-0:7 'input' (layout( location=1) in 3-element array of structure{ temp float f})
-0:7 Constant:
-0:7 0 (const int)
-0:7 Constant:
-0:7 0 (const int)
+0:? 'input[0].f' (layout( location=1) in float)
0:7 move second child to first child ( temp 4-component vector of float)
0:7 pos: direct index for structure ( temp 4-component vector of float)
0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos})
@@ -165,7 +149,7 @@ gl_FragCoord origin is upper left
0:7 Constant:
0:7 1 (const int)
0:7 direct index ( in 4-component vector of float FragCoord)
-0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
+0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord)
0:7 Constant:
0:7 0 (const int)
0:7 move second child to first child ( temp float)
@@ -176,13 +160,7 @@ gl_FragCoord origin is upper left
0:7 1 (const int)
0:7 Constant:
0:7 0 (const int)
-0:7 f: direct index for structure ( temp float)
-0:7 direct index (layout( location=1) in structure{ temp float f})
-0:7 'input' (layout( location=1) in 3-element array of structure{ temp float f})
-0:7 Constant:
-0:7 1 (const int)
-0:7 Constant:
-0:7 0 (const int)
+0:? 'input[1].f' (layout( location=2) in float)
0:7 move second child to first child ( temp 4-component vector of float)
0:7 pos: direct index for structure ( temp 4-component vector of float)
0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos})
@@ -192,7 +170,7 @@ gl_FragCoord origin is upper left
0:7 Constant:
0:7 1 (const int)
0:7 direct index ( in 4-component vector of float FragCoord)
-0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
+0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord)
0:7 Constant:
0:7 1 (const int)
0:7 move second child to first child ( temp float)
@@ -203,13 +181,7 @@ gl_FragCoord origin is upper left
0:7 2 (const int)
0:7 Constant:
0:7 0 (const int)
-0:7 f: direct index for structure ( temp float)
-0:7 direct index (layout( location=1) in structure{ temp float f})
-0:7 'input' (layout( location=1) in 3-element array of structure{ temp float f})
-0:7 Constant:
-0:7 2 (const int)
-0:7 Constant:
-0:7 0 (const int)
+0:? 'input[2].f' (layout( location=3) in float)
0:7 move second child to first child ( temp 4-component vector of float)
0:7 pos: direct index for structure ( temp 4-component vector of float)
0:7 direct index ( temp structure{ temp float f, temp 4-component vector of float pos})
@@ -219,7 +191,7 @@ gl_FragCoord origin is upper left
0:7 Constant:
0:7 1 (const int)
0:7 direct index ( in 4-component vector of float FragCoord)
-0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
+0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord)
0:7 Constant:
0:7 2 (const int)
0:7 move second child to first child ( temp 4-component vector of float)
@@ -229,19 +201,22 @@ gl_FragCoord origin is upper left
0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos})
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'i' (layout( location=0) in int)
-0:? 'input' (layout( location=1) in 3-element array of structure{ temp float f})
-0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
+0:? 'i' (layout( location=0) flat in int)
+0:? 'input.pos' ( in 3-element array of 4-component vector of float FragCoord)
+0:? 'input[0].f' (layout( location=1) in float)
+0:? 'input[1].f' (layout( location=2) in float)
+0:? 'input[2].f' (layout( location=3) in float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 73
+// Generated by (magic number): 80002
+// Id's are bound by 66
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 32 39 48 67
+ EntryPoint Fragment 4 "main" 30 35 41 46 53 60
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 10 "S"
MemberName 10(S) 0 "f"
@@ -250,20 +225,23 @@ gl_FragCoord origin is upper left
Name 16 "i"
Name 17 "input"
Name 20 "a"
+ Name 28 "i"
Name 30 "i"
- Name 32 "i"
- Name 34 "input"
- Name 36 "S"
- MemberName 36(S) 0 "f"
- Name 39 "input"
- Name 48 "input_pos"
- Name 67 "@entryPointOutput"
- Name 68 "param"
- Name 70 "param"
- Decorate 32(i) Location 0
- Decorate 39(input) Location 1
- Decorate 48(input_pos) BuiltIn FragCoord
- Decorate 67(@entryPointOutput) Location 0
+ Name 32 "input"
+ Name 35 "input[0].f"
+ Name 41 "input.pos"
+ Name 46 "input[1].f"
+ Name 53 "input[2].f"
+ Name 60 "@entryPointOutput"
+ Name 61 "param"
+ Name 63 "param"
+ Decorate 30(i) Flat
+ Decorate 30(i) Location 0
+ Decorate 35(input[0].f) Location 1
+ Decorate 41(input.pos) BuiltIn FragCoord
+ Decorate 46(input[1].f) Location 2
+ Decorate 53(input[2].f) Location 3
+ Decorate 60(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -276,65 +254,58 @@ gl_FragCoord origin is upper left
13: TypeArray 10(S) 12
14: TypePointer Function 13
15: TypeFunction 9(fvec4) 7(ptr) 14(ptr)
- 22: TypeVector 8(float) 3
- 23: 8(float) Constant 1065353216
- 24: 22(fvec3) ConstantComposite 23 23 23
- 25: TypePointer Function 9(fvec4)
- 31: TypePointer Input 6(int)
- 32(i): 31(ptr) Variable Input
- 35: 6(int) Constant 0
- 36(S): TypeStruct 8(float)
- 37: TypeArray 36(S) 12
- 38: TypePointer Input 37
- 39(input): 38(ptr) Variable Input
- 40: TypePointer Input 8(float)
- 43: TypePointer Function 8(float)
- 45: 6(int) Constant 1
- 46: TypeArray 9(fvec4) 12
- 47: TypePointer Input 46
- 48(input_pos): 47(ptr) Variable Input
- 49: TypePointer Input 9(fvec4)
- 59: 6(int) Constant 2
- 66: TypePointer Output 9(fvec4)
-67(@entryPointOutput): 66(ptr) Variable Output
+ 22: 6(int) Constant 1
+ 23: TypePointer Function 9(fvec4)
+ 29: TypePointer Input 6(int)
+ 30(i): 29(ptr) Variable Input
+ 33: 6(int) Constant 0
+ 34: TypePointer Input 8(float)
+ 35(input[0].f): 34(ptr) Variable Input
+ 37: TypePointer Function 8(float)
+ 39: TypeArray 9(fvec4) 12
+ 40: TypePointer Input 39
+ 41(input.pos): 40(ptr) Variable Input
+ 42: TypePointer Input 9(fvec4)
+ 46(input[1].f): 34(ptr) Variable Input
+ 52: 6(int) Constant 2
+ 53(input[2].f): 34(ptr) Variable Input
+ 59: TypePointer Output 9(fvec4)
+60(@entryPointOutput): 59(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 30(i): 7(ptr) Variable Function
- 34(input): 14(ptr) Variable Function
- 68(param): 7(ptr) Variable Function
- 70(param): 14(ptr) Variable Function
- 33: 6(int) Load 32(i)
- Store 30(i) 33
- 41: 40(ptr) AccessChain 39(input) 35 35
- 42: 8(float) Load 41
- 44: 43(ptr) AccessChain 34(input) 35 35
- Store 44 42
- 50: 49(ptr) AccessChain 48(input_pos) 35
- 51: 9(fvec4) Load 50
- 52: 25(ptr) AccessChain 34(input) 35 45
- Store 52 51
- 53: 40(ptr) AccessChain 39(input) 45 35
- 54: 8(float) Load 53
- 55: 43(ptr) AccessChain 34(input) 45 35
+ 28(i): 7(ptr) Variable Function
+ 32(input): 14(ptr) Variable Function
+ 61(param): 7(ptr) Variable Function
+ 63(param): 14(ptr) Variable Function
+ 31: 6(int) Load 30(i)
+ Store 28(i) 31
+ 36: 8(float) Load 35(input[0].f)
+ 38: 37(ptr) AccessChain 32(input) 33 33
+ Store 38 36
+ 43: 42(ptr) AccessChain 41(input.pos) 33
+ 44: 9(fvec4) Load 43
+ 45: 23(ptr) AccessChain 32(input) 33 22
+ Store 45 44
+ 47: 8(float) Load 46(input[1].f)
+ 48: 37(ptr) AccessChain 32(input) 22 33
+ Store 48 47
+ 49: 42(ptr) AccessChain 41(input.pos) 22
+ 50: 9(fvec4) Load 49
+ 51: 23(ptr) AccessChain 32(input) 22 22
+ Store 51 50
+ 54: 8(float) Load 53(input[2].f)
+ 55: 37(ptr) AccessChain 32(input) 52 33
Store 55 54
- 56: 49(ptr) AccessChain 48(input_pos) 45
+ 56: 42(ptr) AccessChain 41(input.pos) 52
57: 9(fvec4) Load 56
- 58: 25(ptr) AccessChain 34(input) 45 45
+ 58: 23(ptr) AccessChain 32(input) 52 22
Store 58 57
- 60: 40(ptr) AccessChain 39(input) 59 35
- 61: 8(float) Load 60
- 62: 43(ptr) AccessChain 34(input) 59 35
- Store 62 61
- 63: 49(ptr) AccessChain 48(input_pos) 59
- 64: 9(fvec4) Load 63
- 65: 25(ptr) AccessChain 34(input) 59 45
- Store 65 64
- 69: 6(int) Load 30(i)
- Store 68(param) 69
- 71: 13 Load 34(input)
- Store 70(param) 71
- 72: 9(fvec4) FunctionCall 18(@main(i1;struct-S-f1-vf41[3];) 68(param) 70(param)
- Store 67(@entryPointOutput) 72
+ 62: 6(int) Load 28(i)
+ Store 61(param) 62
+ 64: 13 Load 32(input)
+ Store 63(param) 64
+ 65: 9(fvec4) FunctionCall 18(@main(i1;struct-S-f1-vf41[3];) 61(param) 63(param)
+ Store 60(@entryPointOutput) 65
Return
FunctionEnd
18(@main(i1;struct-S-f1-vf41[3];): 9(fvec4) Function None 15
@@ -342,10 +313,9 @@ gl_FragCoord origin is upper left
17(input): 14(ptr) FunctionParameter
19: Label
20(a): 14(ptr) Variable Function
- 26: 25(ptr) Variable Function
21: 13 Load 20(a)
Store 17(input) 21
- Store 26 24
- 27: 9(fvec4) Load 26
- ReturnValue 27
+ 24: 23(ptr) AccessChain 20(a) 22 22
+ 25: 9(fvec4) Load 24
+ ReturnValue 25
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.call.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.call.vert.out
index 9dc7b856ebc..dd6e38e6c76 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.call.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.call.vert.out
@@ -1,5 +1,5 @@
hlsl.struct.split.call.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:17 Function Definition: Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11; ( temp void)
0:17 Function Parameters:
@@ -60,59 +60,55 @@ Shader version: 450
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 0 (const int)
-0:? 'x0_in' (layout( location=0) in int)
+0:? 'vsin.x0_in' (layout( location=0) in int)
0:22 move second child to first child ( temp 4-component vector of float)
0:22 Pos_in: direct index for structure ( temp 4-component vector of float)
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 1 (const int)
-0:? 'Pos_in' (layout( location=1) in 4-component vector of float)
+0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
0:22 move second child to first child ( temp int)
0:22 x1_in: direct index for structure ( temp int)
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 2 (const int)
-0:? 'x1_in' (layout( location=2) in int)
+0:? 'vsin.x1_in' (layout( location=2) in int)
0:22 Sequence
0:22 move second child to first child ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 move second child to first child ( temp int)
-0:22 x0_out: direct index for structure ( temp int)
-0:22 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:22 Constant:
-0:22 0 (const int)
+0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
0:22 x0_out: direct index for structure ( temp int)
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos_out' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
0:22 Pos_out: direct index for structure ( temp 4-component vector of float)
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Constant:
0:22 1 (const int)
0:22 move second child to first child ( temp int)
-0:22 x1_out: direct index for structure ( temp int)
-0:22 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:22 Constant:
-0:22 1 (const int)
+0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
0:22 x1_out: direct index for structure ( temp int)
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Constant:
0:22 2 (const int)
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:? 'x0_in' (layout( location=0) in int)
-0:? 'Pos_in' (layout( location=1) in 4-component vector of float)
-0:? 'x1_in' (layout( location=2) in int)
+0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
+0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
+0:? 'vsin.x0_in' (layout( location=0) in int)
+0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
+0:? 'vsin.x1_in' (layout( location=2) in int)
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:17 Function Definition: Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11; ( temp void)
0:17 Function Parameters:
@@ -173,62 +169,59 @@ Shader version: 450
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 0 (const int)
-0:? 'x0_in' (layout( location=0) in int)
+0:? 'vsin.x0_in' (layout( location=0) in int)
0:22 move second child to first child ( temp 4-component vector of float)
0:22 Pos_in: direct index for structure ( temp 4-component vector of float)
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 1 (const int)
-0:? 'Pos_in' (layout( location=1) in 4-component vector of float)
+0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
0:22 move second child to first child ( temp int)
0:22 x1_in: direct index for structure ( temp int)
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 2 (const int)
-0:? 'x1_in' (layout( location=2) in int)
+0:? 'vsin.x1_in' (layout( location=2) in int)
0:22 Sequence
0:22 move second child to first child ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 move second child to first child ( temp int)
-0:22 x0_out: direct index for structure ( temp int)
-0:22 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:22 Constant:
-0:22 0 (const int)
+0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
0:22 x0_out: direct index for structure ( temp int)
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos_out' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
0:22 Pos_out: direct index for structure ( temp 4-component vector of float)
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Constant:
0:22 1 (const int)
0:22 move second child to first child ( temp int)
-0:22 x1_out: direct index for structure ( temp int)
-0:22 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:22 Constant:
-0:22 1 (const int)
+0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
0:22 x1_out: direct index for structure ( temp int)
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Constant:
0:22 2 (const int)
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
-0:? 'x0_in' (layout( location=0) in int)
-0:? 'Pos_in' (layout( location=1) in 4-component vector of float)
-0:? 'x1_in' (layout( location=2) in int)
+0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
+0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
+0:? 'vsin.x0_in' (layout( location=0) in int)
+0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
+0:? 'vsin.x1_in' (layout( location=2) in int)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 80
+// Generated by (magic number): 80002
+// Id's are bound by 77
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 52 56 59 68 74
+ EntryPoint Vertex 4 "main" 52 56 59 67 71 74
+ Source HLSL 500
Name 4 "main"
Name 9 "VS_INPUT"
MemberName 9(VS_INPUT) 0 "x0_in"
@@ -247,21 +240,20 @@ Shader version: 450
Name 42 "param"
Name 44 "param"
Name 50 "vsin"
- Name 52 "x0_in"
- Name 56 "Pos_in"
- Name 59 "x1_in"
+ Name 52 "vsin.x0_in"
+ Name 56 "vsin.Pos_in"
+ Name 59 "vsin.x1_in"
Name 62 "flattenTemp"
Name 63 "param"
- Name 66 "VS_OUTPUT"
- MemberName 66(VS_OUTPUT) 0 "x0_out"
- MemberName 66(VS_OUTPUT) 1 "x1_out"
- Name 68 "@entryPointOutput"
- Name 74 "@entryPointOutput_Pos_out"
- Decorate 52(x0_in) Location 0
- Decorate 56(Pos_in) Location 1
- Decorate 59(x1_in) Location 2
- Decorate 68(@entryPointOutput) Location 0
- Decorate 74(@entryPointOutput_Pos_out) BuiltIn Position
+ Name 67 "@entryPointOutput.x0_out"
+ Name 71 "@entryPointOutput.Pos_out"
+ Name 74 "@entryPointOutput.x1_out"
+ Decorate 52(vsin.x0_in) Location 0
+ Decorate 56(vsin.Pos_in) Location 1
+ Decorate 59(vsin.x1_in) Location 2
+ Decorate 67(@entryPointOutput.x0_out) Location 0
+ Decorate 71(@entryPointOutput.Pos_out) BuiltIn Position
+ Decorate 74(@entryPointOutput.x1_out) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -279,45 +271,42 @@ Shader version: 450
31: TypePointer Function 6(int)
38: 6(int) Constant 2
51: TypePointer Input 6(int)
- 52(x0_in): 51(ptr) Variable Input
+ 52(vsin.x0_in): 51(ptr) Variable Input
55: TypePointer Input 8(fvec4)
- 56(Pos_in): 55(ptr) Variable Input
- 59(x1_in): 51(ptr) Variable Input
- 66(VS_OUTPUT): TypeStruct 6(int) 6(int)
- 67: TypePointer Output 66(VS_OUTPUT)
-68(@entryPointOutput): 67(ptr) Variable Output
- 71: TypePointer Output 6(int)
- 73: TypePointer Output 8(fvec4)
-74(@entryPointOutput_Pos_out): 73(ptr) Variable Output
+ 56(vsin.Pos_in): 55(ptr) Variable Input
+ 59(vsin.x1_in): 51(ptr) Variable Input
+ 66: TypePointer Output 6(int)
+67(@entryPointOutput.x0_out): 66(ptr) Variable Output
+ 70: TypePointer Output 8(fvec4)
+71(@entryPointOutput.Pos_out): 70(ptr) Variable Output
+74(@entryPointOutput.x1_out): 66(ptr) Variable Output
4(main): 2 Function None 3
5: Label
50(vsin): 10(ptr) Variable Function
62(flattenTemp): 12(ptr) Variable Function
63(param): 10(ptr) Variable Function
- 53: 6(int) Load 52(x0_in)
+ 53: 6(int) Load 52(vsin.x0_in)
54: 31(ptr) AccessChain 50(vsin) 30
Store 54 53
- 57: 8(fvec4) Load 56(Pos_in)
+ 57: 8(fvec4) Load 56(vsin.Pos_in)
58: 23(ptr) AccessChain 50(vsin) 22
Store 58 57
- 60: 6(int) Load 59(x1_in)
+ 60: 6(int) Load 59(vsin.x1_in)
61: 31(ptr) AccessChain 50(vsin) 38
Store 61 60
64: 9(VS_INPUT) Load 50(vsin)
Store 63(param) 64
65:11(VS_OUTPUT) FunctionCall 20(@main(struct-VS_INPUT-i1-vf4-i11;) 63(param)
Store 62(flattenTemp) 65
- 69: 31(ptr) AccessChain 62(flattenTemp) 30
- 70: 6(int) Load 69
- 72: 71(ptr) AccessChain 68(@entryPointOutput) 30
- Store 72 70
- 75: 23(ptr) AccessChain 62(flattenTemp) 22
- 76: 8(fvec4) Load 75
- Store 74(@entryPointOutput_Pos_out) 76
- 77: 31(ptr) AccessChain 62(flattenTemp) 38
- 78: 6(int) Load 77
- 79: 71(ptr) AccessChain 68(@entryPointOutput) 22
- Store 79 78
+ 68: 31(ptr) AccessChain 62(flattenTemp) 30
+ 69: 6(int) Load 68
+ Store 67(@entryPointOutput.x0_out) 69
+ 72: 23(ptr) AccessChain 62(flattenTemp) 22
+ 73: 8(fvec4) Load 72
+ Store 71(@entryPointOutput.Pos_out) 73
+ 75: 31(ptr) AccessChain 62(flattenTemp) 38
+ 76: 6(int) Load 75
+ Store 74(@entryPointOutput.x1_out) 76
Return
FunctionEnd
16(Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;): 2 Function None 13
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.nested.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.nested.geom.out
index 42046da70c4..0d83cdf2aab 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.nested.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.nested.geom.out
@@ -1,5 +1,5 @@
hlsl.struct.split.nested.geom
-Shader version: 450
+Shader version: 500
invocations = -1
max_vertices = 3
input primitive = triangles
@@ -34,11 +34,96 @@ output primitive = triangle_strip
0:? Constant:
0:? 5.000000
0:? 6.000000
-0:30 Sequence
-0:30 move second child to first child ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
-0:30 'ts' ( out structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
-0:30 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
-0:30 EmitVertex ( temp void)
+0:29 move second child to first child ( temp float)
+0:29 direct index ( temp float)
+0:29 m0_array: direct index for structure ( temp 2-element array of float)
+0:29 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:29 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:29 Constant:
+0:29 1 (const int)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 2.300000
+0:30 move second child to first child ( temp float)
+0:30 direct index ( temp float)
+0:30 m0_array: direct index for structure ( temp 2-element array of float)
+0:30 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:30 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:30 Constant:
+0:30 1 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 1 (const int)
+0:30 Constant:
+0:30 2.300000
+0:31 move second child to first child ( temp int)
+0:31 m1: direct index for structure ( temp int)
+0:31 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:31 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:31 Constant:
+0:31 1 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 Constant:
+0:31 2 (const int)
+0:33 Sequence
+0:33 Sequence
+0:33 move second child to first child ( temp 4-component vector of float)
+0:? 'ts.pos' ( out 4-component vector of float Position)
+0:33 pos: direct index for structure ( temp 4-component vector of float)
+0:33 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc})
+0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:33 Constant:
+0:33 0 (const int)
+0:33 Constant:
+0:33 0 (const int)
+0:33 move second child to first child ( temp 2-component vector of float)
+0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float)
+0:33 tc: direct index for structure ( temp 2-component vector of float)
+0:33 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc})
+0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:33 Constant:
+0:33 0 (const int)
+0:33 Constant:
+0:33 1 (const int)
+0:33 move second child to first child ( temp float)
+0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float)
+0:33 direct index ( temp float)
+0:33 m0_array: direct index for structure ( temp 2-element array of float)
+0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:33 Constant:
+0:33 1 (const int)
+0:33 Constant:
+0:33 0 (const int)
+0:33 Constant:
+0:33 0 (const int)
+0:33 move second child to first child ( temp float)
+0:? 'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float)
+0:33 direct index ( temp float)
+0:33 m0_array: direct index for structure ( temp 2-element array of float)
+0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:33 Constant:
+0:33 1 (const int)
+0:33 Constant:
+0:33 0 (const int)
+0:33 Constant:
+0:33 1 (const int)
+0:33 move second child to first child ( temp int)
+0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int)
+0:33 m1: direct index for structure ( temp int)
+0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:33 Constant:
+0:33 1 (const int)
+0:33 Constant:
+0:33 1 (const int)
+0:33 EmitVertex ( temp void)
0:24 Function Definition: main( ( temp void)
0:24 Function Parameters:
0:? Sequence
@@ -52,7 +137,7 @@ output primitive = triangle_strip
0:24 Constant:
0:24 0 (const int)
0:24 direct index ( in 4-component vector of float Position)
-0:? 'tin_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp 2-component vector of float)
@@ -79,7 +164,7 @@ output primitive = triangle_strip
0:24 Constant:
0:24 0 (const int)
0:24 direct index ( in 4-component vector of float Position)
-0:? 'tin_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24 Constant:
0:24 1 (const int)
0:24 move second child to first child ( temp 2-component vector of float)
@@ -106,7 +191,7 @@ output primitive = triangle_strip
0:24 Constant:
0:24 0 (const int)
0:24 direct index ( in 4-component vector of float Position)
-0:? 'tin_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24 Constant:
0:24 2 (const int)
0:24 move second child to first child ( temp 2-component vector of float)
@@ -128,13 +213,19 @@ output primitive = triangle_strip
0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc})
0:? 'ts' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
0:? Linker Objects
+0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:? 'tin' (layout( location=0) in 3-element array of structure{ temp 2-component vector of float tc})
+0:? 'ts.pos' ( out 4-component vector of float Position)
+0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float)
+0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float)
+0:? 'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float)
+0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int)
Linked geometry stage:
-Shader version: 450
+Shader version: 500
invocations = 1
max_vertices = 3
input primitive = triangles
@@ -169,11 +260,96 @@ output primitive = triangle_strip
0:? Constant:
0:? 5.000000
0:? 6.000000
-0:30 Sequence
-0:30 move second child to first child ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
-0:30 'ts' ( out structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
-0:30 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
-0:30 EmitVertex ( temp void)
+0:29 move second child to first child ( temp float)
+0:29 direct index ( temp float)
+0:29 m0_array: direct index for structure ( temp 2-element array of float)
+0:29 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:29 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:29 Constant:
+0:29 1 (const int)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 2.300000
+0:30 move second child to first child ( temp float)
+0:30 direct index ( temp float)
+0:30 m0_array: direct index for structure ( temp 2-element array of float)
+0:30 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:30 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:30 Constant:
+0:30 1 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 1 (const int)
+0:30 Constant:
+0:30 2.300000
+0:31 move second child to first child ( temp int)
+0:31 m1: direct index for structure ( temp int)
+0:31 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:31 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:31 Constant:
+0:31 1 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 Constant:
+0:31 2 (const int)
+0:33 Sequence
+0:33 Sequence
+0:33 move second child to first child ( temp 4-component vector of float)
+0:? 'ts.pos' ( out 4-component vector of float Position)
+0:33 pos: direct index for structure ( temp 4-component vector of float)
+0:33 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc})
+0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:33 Constant:
+0:33 0 (const int)
+0:33 Constant:
+0:33 0 (const int)
+0:33 move second child to first child ( temp 2-component vector of float)
+0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float)
+0:33 tc: direct index for structure ( temp 2-component vector of float)
+0:33 psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc})
+0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:33 Constant:
+0:33 0 (const int)
+0:33 Constant:
+0:33 1 (const int)
+0:33 move second child to first child ( temp float)
+0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float)
+0:33 direct index ( temp float)
+0:33 m0_array: direct index for structure ( temp 2-element array of float)
+0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:33 Constant:
+0:33 1 (const int)
+0:33 Constant:
+0:33 0 (const int)
+0:33 Constant:
+0:33 0 (const int)
+0:33 move second child to first child ( temp float)
+0:? 'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float)
+0:33 direct index ( temp float)
+0:33 m0_array: direct index for structure ( temp 2-element array of float)
+0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:33 Constant:
+0:33 1 (const int)
+0:33 Constant:
+0:33 0 (const int)
+0:33 Constant:
+0:33 1 (const int)
+0:33 move second child to first child ( temp int)
+0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int)
+0:33 m1: direct index for structure ( temp int)
+0:33 contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array, temp int m1})
+0:33 'o' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
+0:33 Constant:
+0:33 1 (const int)
+0:33 Constant:
+0:33 1 (const int)
+0:33 EmitVertex ( temp void)
0:24 Function Definition: main( ( temp void)
0:24 Function Parameters:
0:? Sequence
@@ -187,7 +363,7 @@ output primitive = triangle_strip
0:24 Constant:
0:24 0 (const int)
0:24 direct index ( in 4-component vector of float Position)
-0:? 'tin_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp 2-component vector of float)
@@ -214,7 +390,7 @@ output primitive = triangle_strip
0:24 Constant:
0:24 0 (const int)
0:24 direct index ( in 4-component vector of float Position)
-0:? 'tin_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24 Constant:
0:24 1 (const int)
0:24 move second child to first child ( temp 2-component vector of float)
@@ -241,7 +417,7 @@ output primitive = triangle_strip
0:24 Constant:
0:24 0 (const int)
0:24 direct index ( in 4-component vector of float Position)
-0:? 'tin_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24 Constant:
0:24 2 (const int)
0:24 move second child to first child ( temp 2-component vector of float)
@@ -263,20 +439,27 @@ output primitive = triangle_strip
0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc})
0:? 'ts' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
0:? Linker Objects
+0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:? 'tin' (layout( location=0) in 3-element array of structure{ temp 2-component vector of float tc})
+0:? 'ts.pos' ( out 4-component vector of float Position)
+0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float)
+0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float)
+0:? 'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float)
+0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 75
+// Generated by (magic number): 80002
+// Id's are bound by 100
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Geometry 4 "main" 44 52
+ EntryPoint Geometry 4 "main" 48 52 56 59 63 69 77
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 3
+ Source HLSL 500
Name 4 "main"
Name 9 "PS_IN"
MemberName 9(PS_IN) 0 "pos"
@@ -291,16 +474,26 @@ output primitive = triangle_strip
Name 21 "tin"
Name 22 "ts"
Name 25 "o"
- Name 41 "tin"
- Name 44 "tin_pos"
- Name 49 "PS_IN"
- MemberName 49(PS_IN) 0 "tc"
- Name 52 "tin"
- Name 70 "ts"
- Name 71 "param"
- Name 73 "param"
- Decorate 44(tin_pos) BuiltIn Position
- Decorate 52(tin) Location 0
+ Name 48 "ts.pos"
+ Name 52 "ts.psIn.tc"
+ Name 56 "ts.contains_no_builtin_io.m0_array[0]"
+ Name 59 "ts.contains_no_builtin_io.m0_array[1]"
+ Name 63 "ts.contains_no_builtin_io.m1"
+ Name 66 "tin"
+ Name 69 "tin.pos"
+ Name 74 "PS_IN"
+ MemberName 74(PS_IN) 0 "tc"
+ Name 77 "tin"
+ Name 94 "ts"
+ Name 95 "param"
+ Name 97 "param"
+ Decorate 48(ts.pos) BuiltIn Position
+ Decorate 52(ts.psIn.tc) Location 0
+ Decorate 56(ts.contains_no_builtin_io.m0_array[0]) Location 1
+ Decorate 59(ts.contains_no_builtin_io.m0_array[1]) Location 2
+ Decorate 63(ts.contains_no_builtin_io.m1) Location 3
+ Decorate 69(tin.pos) BuiltIn Position
+ Decorate 77(tin) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -330,49 +523,63 @@ output primitive = triangle_strip
36: 6(float) Constant 1086324736
37: 8(fvec2) ConstantComposite 35 36
38: TypePointer Function 8(fvec2)
- 42: TypeArray 7(fvec4) 11
- 43: TypePointer Input 42
- 44(tin_pos): 43(ptr) Variable Input
- 45: TypePointer Input 7(fvec4)
- 49(PS_IN): TypeStruct 8(fvec2)
- 50: TypeArray 49(PS_IN) 11
- 51: TypePointer Input 50
- 52(tin): 51(ptr) Variable Input
- 53: TypePointer Input 8(fvec2)
- 63: 16(int) Constant 2
+ 40: 6(float) Constant 1075000115
+ 41: TypePointer Function 6(float)
+ 44: 16(int) Constant 2
+ 45: TypePointer Function 16(int)
+ 47: TypePointer Output 7(fvec4)
+ 48(ts.pos): 47(ptr) Variable Output
+ 51: TypePointer Output 8(fvec2)
+ 52(ts.psIn.tc): 51(ptr) Variable Output
+ 55: TypePointer Output 6(float)
+56(ts.contains_no_builtin_io.m0_array[0]): 55(ptr) Variable Output
+59(ts.contains_no_builtin_io.m0_array[1]): 55(ptr) Variable Output
+ 62: TypePointer Output 16(int)
+63(ts.contains_no_builtin_io.m1): 62(ptr) Variable Output
+ 67: TypeArray 7(fvec4) 11
+ 68: TypePointer Input 67
+ 69(tin.pos): 68(ptr) Variable Input
+ 70: TypePointer Input 7(fvec4)
+ 74(PS_IN): TypeStruct 8(fvec2)
+ 75: TypeArray 74(PS_IN) 11
+ 76: TypePointer Input 75
+ 77(tin): 76(ptr) Variable Input
+ 78: TypePointer Input 8(fvec2)
4(main): 2 Function None 3
5: Label
- 41(tin): 13(ptr) Variable Function
- 70(ts): 19(ptr) Variable Function
- 71(param): 13(ptr) Variable Function
- 73(param): 19(ptr) Variable Function
- 46: 45(ptr) AccessChain 44(tin_pos) 26
- 47: 7(fvec4) Load 46
- 48: 32(ptr) AccessChain 41(tin) 26 26
- Store 48 47
- 54: 53(ptr) AccessChain 52(tin) 26 26
- 55: 8(fvec2) Load 54
- 56: 38(ptr) AccessChain 41(tin) 26 34
- Store 56 55
- 57: 45(ptr) AccessChain 44(tin_pos) 34
- 58: 7(fvec4) Load 57
- 59: 32(ptr) AccessChain 41(tin) 34 26
- Store 59 58
- 60: 53(ptr) AccessChain 52(tin) 34 26
- 61: 8(fvec2) Load 60
- 62: 38(ptr) AccessChain 41(tin) 34 34
- Store 62 61
- 64: 45(ptr) AccessChain 44(tin_pos) 63
- 65: 7(fvec4) Load 64
- 66: 32(ptr) AccessChain 41(tin) 63 26
- Store 66 65
- 67: 53(ptr) AccessChain 52(tin) 63 26
- 68: 8(fvec2) Load 67
- 69: 38(ptr) AccessChain 41(tin) 63 34
- Store 69 68
- 72: 12 Load 41(tin)
- Store 71(param) 72
- 74: 2 FunctionCall 23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;) 71(param) 73(param)
+ 66(tin): 13(ptr) Variable Function
+ 94(ts): 19(ptr) Variable Function
+ 95(param): 13(ptr) Variable Function
+ 97(param): 19(ptr) Variable Function
+ 71: 70(ptr) AccessChain 69(tin.pos) 26
+ 72: 7(fvec4) Load 71
+ 73: 32(ptr) AccessChain 66(tin) 26 26
+ Store 73 72
+ 79: 78(ptr) AccessChain 77(tin) 26 26
+ 80: 8(fvec2) Load 79
+ 81: 38(ptr) AccessChain 66(tin) 26 34
+ Store 81 80
+ 82: 70(ptr) AccessChain 69(tin.pos) 34
+ 83: 7(fvec4) Load 82
+ 84: 32(ptr) AccessChain 66(tin) 34 26
+ Store 84 83
+ 85: 78(ptr) AccessChain 77(tin) 34 26
+ 86: 8(fvec2) Load 85
+ 87: 38(ptr) AccessChain 66(tin) 34 34
+ Store 87 86
+ 88: 70(ptr) AccessChain 69(tin.pos) 44
+ 89: 7(fvec4) Load 88
+ 90: 32(ptr) AccessChain 66(tin) 44 26
+ Store 90 89
+ 91: 78(ptr) AccessChain 77(tin) 44 26
+ 92: 8(fvec2) Load 91
+ 93: 38(ptr) AccessChain 66(tin) 44 34
+ Store 93 92
+ 96: 12 Load 66(tin)
+ Store 95(param) 96
+ 98: 2 FunctionCall 23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;) 95(param) 97(param)
+ 99: 18(GS_OUT) Load 97(param)
+ Store 94(ts) 99
Return
FunctionEnd
23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;): 2 Function None 20
@@ -384,8 +591,27 @@ output primitive = triangle_strip
Store 33 31
39: 38(ptr) AccessChain 25(o) 26 34
Store 39 37
- 40: 18(GS_OUT) Load 25(o)
- Store 22(ts) 40
+ 42: 41(ptr) AccessChain 25(o) 34 26 26
+ Store 42 40
+ 43: 41(ptr) AccessChain 25(o) 34 26 34
+ Store 43 40
+ 46: 45(ptr) AccessChain 25(o) 34 34
+ Store 46 44
+ 49: 32(ptr) AccessChain 25(o) 26 26
+ 50: 7(fvec4) Load 49
+ Store 48(ts.pos) 50
+ 53: 38(ptr) AccessChain 25(o) 26 34
+ 54: 8(fvec2) Load 53
+ Store 52(ts.psIn.tc) 54
+ 57: 41(ptr) AccessChain 25(o) 34 26 26
+ 58: 6(float) Load 57
+ Store 56(ts.contains_no_builtin_io.m0_array[0]) 58
+ 60: 41(ptr) AccessChain 25(o) 34 26 34
+ 61: 6(float) Load 60
+ Store 59(ts.contains_no_builtin_io.m0_array[1]) 61
+ 64: 45(ptr) AccessChain 25(o) 34 34
+ 65: 16(int) Load 64
+ Store 63(ts.contains_no_builtin_io.m1) 65
EmitVertex
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.trivial.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.trivial.geom.out
index 29818f141cd..31b2cda7d0a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.trivial.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.trivial.geom.out
@@ -1,5 +1,5 @@
hlsl.struct.split.trivial.geom
-Shader version: 450
+Shader version: 500
invocations = -1
max_vertices = 3
input primitive = triangles
@@ -35,9 +35,13 @@ output primitive = triangle_strip
0:18 Constant:
0:18 0 (const int)
0:19 Sequence
-0:19 move second child to first child ( temp structure{ temp 4-component vector of float pos})
-0:19 'ts' ( out structure{ temp 4-component vector of float pos})
-0:19 'o' ( temp structure{ temp 4-component vector of float pos})
+0:19 Sequence
+0:19 move second child to first child ( temp 4-component vector of float)
+0:? 'ts.pos' ( out 4-component vector of float Position)
+0:19 pos: direct index for structure ( temp 4-component vector of float)
+0:19 'o' ( temp structure{ temp 4-component vector of float pos})
+0:19 Constant:
+0:19 0 (const int)
0:19 EmitVertex ( temp void)
0:17 Loop Terminal Expression
0:17 Pre-Increment ( temp int)
@@ -55,7 +59,7 @@ output primitive = triangle_strip
0:14 Constant:
0:14 0 (const int)
0:14 direct index ( in 4-component vector of float Position)
-0:? 'i_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'i.pos' ( in 3-element array of 4-component vector of float Position)
0:14 Constant:
0:14 0 (const int)
0:14 move second child to first child ( temp 4-component vector of float)
@@ -67,7 +71,7 @@ output primitive = triangle_strip
0:14 Constant:
0:14 0 (const int)
0:14 direct index ( in 4-component vector of float Position)
-0:? 'i_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'i.pos' ( in 3-element array of 4-component vector of float Position)
0:14 Constant:
0:14 1 (const int)
0:14 move second child to first child ( temp 4-component vector of float)
@@ -79,20 +83,21 @@ output primitive = triangle_strip
0:14 Constant:
0:14 0 (const int)
0:14 direct index ( in 4-component vector of float Position)
-0:? 'i_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'i.pos' ( in 3-element array of 4-component vector of float Position)
0:14 Constant:
0:14 2 (const int)
0:14 Function Call: @main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41; ( temp void)
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos})
0:? 'ts' ( temp structure{ temp 4-component vector of float pos})
0:? Linker Objects
-0:? 'i' (layout( location=0) in 3-element array of structure{})
+0:? 'i.pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'ts.pos' ( out 4-component vector of float Position)
Linked geometry stage:
-Shader version: 450
+Shader version: 500
invocations = 1
max_vertices = 3
input primitive = triangles
@@ -128,9 +133,13 @@ output primitive = triangle_strip
0:18 Constant:
0:18 0 (const int)
0:19 Sequence
-0:19 move second child to first child ( temp structure{ temp 4-component vector of float pos})
-0:19 'ts' ( out structure{ temp 4-component vector of float pos})
-0:19 'o' ( temp structure{ temp 4-component vector of float pos})
+0:19 Sequence
+0:19 move second child to first child ( temp 4-component vector of float)
+0:? 'ts.pos' ( out 4-component vector of float Position)
+0:19 pos: direct index for structure ( temp 4-component vector of float)
+0:19 'o' ( temp structure{ temp 4-component vector of float pos})
+0:19 Constant:
+0:19 0 (const int)
0:19 EmitVertex ( temp void)
0:17 Loop Terminal Expression
0:17 Pre-Increment ( temp int)
@@ -148,7 +157,7 @@ output primitive = triangle_strip
0:14 Constant:
0:14 0 (const int)
0:14 direct index ( in 4-component vector of float Position)
-0:? 'i_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'i.pos' ( in 3-element array of 4-component vector of float Position)
0:14 Constant:
0:14 0 (const int)
0:14 move second child to first child ( temp 4-component vector of float)
@@ -160,7 +169,7 @@ output primitive = triangle_strip
0:14 Constant:
0:14 0 (const int)
0:14 direct index ( in 4-component vector of float Position)
-0:? 'i_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'i.pos' ( in 3-element array of 4-component vector of float Position)
0:14 Constant:
0:14 1 (const int)
0:14 move second child to first child ( temp 4-component vector of float)
@@ -172,27 +181,29 @@ output primitive = triangle_strip
0:14 Constant:
0:14 0 (const int)
0:14 direct index ( in 4-component vector of float Position)
-0:? 'i_pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'i.pos' ( in 3-element array of 4-component vector of float Position)
0:14 Constant:
0:14 2 (const int)
0:14 Function Call: @main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41; ( temp void)
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos})
0:? 'ts' ( temp structure{ temp 4-component vector of float pos})
0:? Linker Objects
-0:? 'i' (layout( location=0) in 3-element array of structure{})
+0:? 'i.pos' ( in 3-element array of 4-component vector of float Position)
+0:? 'ts.pos' ( out 4-component vector of float Position)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 67
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Geometry 4 "main" 46 66
+ EntryPoint Geometry 4 "main" 40 49
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 3
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_IN"
MemberName 8(PS_IN) 0 "pos"
@@ -203,15 +214,14 @@ output primitive = triangle_strip
Name 17 "ts"
Name 22 "x"
Name 33 "o"
- Name 43 "i"
- Name 46 "i_pos"
- Name 58 "ts"
- Name 59 "param"
- Name 61 "param"
- Name 63 "PS_IN"
- Name 66 "i"
- Decorate 46(i_pos) BuiltIn Position
- Decorate 66(i) Location 0
+ Name 40 "ts.pos"
+ Name 46 "i"
+ Name 49 "i.pos"
+ Name 61 "ts"
+ Name 62 "param"
+ Name 64 "param"
+ Decorate 40(ts.pos) BuiltIn Position
+ Decorate 49(i.pos) BuiltIn Position
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -230,37 +240,37 @@ output primitive = triangle_strip
30: 20(int) Constant 3
31: TypeBool
35: TypePointer Function 7(fvec4)
- 41: 20(int) Constant 1
- 44: TypeArray 7(fvec4) 10
- 45: TypePointer Input 44
- 46(i_pos): 45(ptr) Variable Input
- 47: TypePointer Input 7(fvec4)
- 54: 20(int) Constant 2
- 63(PS_IN): TypeStruct
- 64: TypeArray 63(PS_IN) 10
- 65: TypePointer Input 64
- 66(i): 65(ptr) Variable Input
+ 39: TypePointer Output 7(fvec4)
+ 40(ts.pos): 39(ptr) Variable Output
+ 44: 20(int) Constant 1
+ 47: TypeArray 7(fvec4) 10
+ 48: TypePointer Input 47
+ 49(i.pos): 48(ptr) Variable Input
+ 50: TypePointer Input 7(fvec4)
+ 57: 20(int) Constant 2
4(main): 2 Function None 3
5: Label
- 43(i): 12(ptr) Variable Function
- 58(ts): 14(ptr) Variable Function
- 59(param): 12(ptr) Variable Function
- 61(param): 14(ptr) Variable Function
- 48: 47(ptr) AccessChain 46(i_pos) 23
- 49: 7(fvec4) Load 48
- 50: 35(ptr) AccessChain 43(i) 23 23
- Store 50 49
- 51: 47(ptr) AccessChain 46(i_pos) 41
+ 46(i): 12(ptr) Variable Function
+ 61(ts): 14(ptr) Variable Function
+ 62(param): 12(ptr) Variable Function
+ 64(param): 14(ptr) Variable Function
+ 51: 50(ptr) AccessChain 49(i.pos) 23
52: 7(fvec4) Load 51
- 53: 35(ptr) AccessChain 43(i) 41 23
+ 53: 35(ptr) AccessChain 46(i) 23 23
Store 53 52
- 55: 47(ptr) AccessChain 46(i_pos) 54
- 56: 7(fvec4) Load 55
- 57: 35(ptr) AccessChain 43(i) 54 23
- Store 57 56
- 60: 11 Load 43(i)
- Store 59(param) 60
- 62: 2 FunctionCall 18(@main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41;) 59(param) 61(param)
+ 54: 50(ptr) AccessChain 49(i.pos) 44
+ 55: 7(fvec4) Load 54
+ 56: 35(ptr) AccessChain 46(i) 44 23
+ Store 56 55
+ 58: 50(ptr) AccessChain 49(i.pos) 57
+ 59: 7(fvec4) Load 58
+ 60: 35(ptr) AccessChain 46(i) 57 23
+ Store 60 59
+ 63: 11 Load 46(i)
+ Store 62(param) 63
+ 65: 2 FunctionCall 18(@main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41;) 62(param) 64(param)
+ 66: 13(GS_OUT) Load 64(param)
+ Store 61(ts) 66
Return
FunctionEnd
18(@main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41;): 2 Function None 15
@@ -284,14 +294,15 @@ output primitive = triangle_strip
37: 7(fvec4) Load 36
38: 35(ptr) AccessChain 33(o) 23
Store 38 37
- 39: 13(GS_OUT) Load 33(o)
- Store 17(ts) 39
+ 41: 35(ptr) AccessChain 33(o) 23
+ 42: 7(fvec4) Load 41
+ Store 40(ts.pos) 42
EmitVertex
Branch 27
27: Label
- 40: 20(int) Load 22(x)
- 42: 20(int) IAdd 40 41
- Store 22(x) 42
+ 43: 20(int) Load 22(x)
+ 45: 20(int) IAdd 43 44
+ Store 22(x) 45
Branch 24
26: Label
Return
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.trivial.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.trivial.vert.out
index 822f819970b..f3c10c46e74 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.trivial.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.struct.split.trivial.vert.out
@@ -1,5 +1,5 @@
hlsl.struct.split.trivial.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:16 Function Definition: @main(struct-VS_INPUT-vf41;vf4; ( temp structure{ temp 4-component vector of float Pos})
0:16 Function Parameters:
@@ -28,13 +28,13 @@ Shader version: 450
0:? 'vsin' ( temp structure{ temp 4-component vector of float Pos_in})
0:16 Constant:
0:16 0 (const int)
-0:? 'Pos_in' (layout( location=0) in 4-component vector of float)
+0:? 'vsin.Pos_in' (layout( location=0) in 4-component vector of float)
0:16 move second child to first child ( temp 4-component vector of float)
0:? 'Pos_loose' ( temp 4-component vector of float)
0:? 'Pos_loose' (layout( location=1) in 4-component vector of float)
0:16 Sequence
0:16 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:16 Pos: direct index for structure ( temp 4-component vector of float)
0:16 Function Call: @main(struct-VS_INPUT-vf41;vf4; ( temp structure{ temp 4-component vector of float Pos})
0:? 'vsin' ( temp structure{ temp 4-component vector of float Pos_in})
@@ -42,15 +42,15 @@ Shader version: 450
0:16 Constant:
0:16 0 (const int)
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{})
-0:? 'Pos_in' (layout( location=0) in 4-component vector of float)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
+0:? 'vsin.Pos_in' (layout( location=0) in 4-component vector of float)
0:? 'Pos_loose' (layout( location=1) in 4-component vector of float)
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:16 Function Definition: @main(struct-VS_INPUT-vf41;vf4; ( temp structure{ temp 4-component vector of float Pos})
0:16 Function Parameters:
@@ -79,13 +79,13 @@ Shader version: 450
0:? 'vsin' ( temp structure{ temp 4-component vector of float Pos_in})
0:16 Constant:
0:16 0 (const int)
-0:? 'Pos_in' (layout( location=0) in 4-component vector of float)
+0:? 'vsin.Pos_in' (layout( location=0) in 4-component vector of float)
0:16 move second child to first child ( temp 4-component vector of float)
0:? 'Pos_loose' ( temp 4-component vector of float)
0:? 'Pos_loose' (layout( location=1) in 4-component vector of float)
0:16 Sequence
0:16 move second child to first child ( temp 4-component vector of float)
-0:? '@entryPointOutput_Pos' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:16 Pos: direct index for structure ( temp 4-component vector of float)
0:16 Function Call: @main(struct-VS_INPUT-vf41;vf4; ( temp structure{ temp 4-component vector of float Pos})
0:? 'vsin' ( temp structure{ temp 4-component vector of float Pos_in})
@@ -93,18 +93,19 @@ Shader version: 450
0:16 Constant:
0:16 0 (const int)
0:? Linker Objects
-0:? '@entryPointOutput' (layout( location=0) out structure{})
-0:? 'Pos_in' (layout( location=0) in 4-component vector of float)
+0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
+0:? 'vsin.Pos_in' (layout( location=0) in 4-component vector of float)
0:? 'Pos_loose' (layout( location=1) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 48
+// Generated by (magic number): 80002
+// Id's are bound by 45
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 31 35 38 47
+ EntryPoint Vertex 4 "main" 31 35 38
+ Source HLSL 500
Name 4 "main"
Name 8 "VS_INPUT"
MemberName 8(VS_INPUT) 0 "Pos_in"
@@ -115,18 +116,15 @@ Shader version: 450
Name 14 "Pos_loose"
Name 18 "vsout"
Name 29 "vsin"
- Name 31 "Pos_in"
+ Name 31 "vsin.Pos_in"
Name 34 "Pos_loose"
Name 35 "Pos_loose"
- Name 38 "@entryPointOutput_Pos"
+ Name 38 "@entryPointOutput.Pos"
Name 39 "param"
Name 41 "param"
- Name 45 "VS_OUTPUT"
- Name 47 "@entryPointOutput"
- Decorate 31(Pos_in) Location 0
+ Decorate 31(vsin.Pos_in) Location 0
Decorate 35(Pos_loose) Location 1
- Decorate 38(@entryPointOutput_Pos) BuiltIn Position
- Decorate 47(@entryPointOutput) Location 0
+ Decorate 38(@entryPointOutput.Pos) BuiltIn Position
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -140,20 +138,17 @@ Shader version: 450
19: TypeInt 32 1
20: 19(int) Constant 0
30: TypePointer Input 7(fvec4)
- 31(Pos_in): 30(ptr) Variable Input
+ 31(vsin.Pos_in): 30(ptr) Variable Input
35(Pos_loose): 30(ptr) Variable Input
37: TypePointer Output 7(fvec4)
-38(@entryPointOutput_Pos): 37(ptr) Variable Output
- 45(VS_OUTPUT): TypeStruct
- 46: TypePointer Output 45(VS_OUTPUT)
-47(@entryPointOutput): 46(ptr) Variable Output
+38(@entryPointOutput.Pos): 37(ptr) Variable Output
4(main): 2 Function None 3
5: Label
29(vsin): 9(ptr) Variable Function
34(Pos_loose): 10(ptr) Variable Function
39(param): 9(ptr) Variable Function
41(param): 10(ptr) Variable Function
- 32: 7(fvec4) Load 31(Pos_in)
+ 32: 7(fvec4) Load 31(vsin.Pos_in)
33: 10(ptr) AccessChain 29(vsin) 20
Store 33 32
36: 7(fvec4) Load 35(Pos_loose)
@@ -164,7 +159,7 @@ Shader version: 450
Store 41(param) 42
43:11(VS_OUTPUT) FunctionCall 15(@main(struct-VS_INPUT-vf41;vf4;) 39(param) 41(param)
44: 7(fvec4) CompositeExtract 43 0
- Store 38(@entryPointOutput_Pos) 44
+ Store 38(@entryPointOutput.Pos) 44
Return
FunctionEnd
15(@main(struct-VS_INPUT-vf41;vf4;):11(VS_OUTPUT) Function None 12
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structIoFourWay.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structIoFourWay.frag.out
index 64c60ed671f..24c902fae7d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structIoFourWay.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structIoFourWay.frag.out
@@ -1,5 +1,5 @@
hlsl.structIoFourWay.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
using depth_greater
0:? Sequence
@@ -12,52 +12,77 @@ using depth_greater
0:15 Function Definition: main( ( temp void)
0:15 Function Parameters:
0:? Sequence
-0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
-0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
-0:? 't' (layout( location=0) in structure{ temp float f, centroid temp float g, temp float d, temp 4-component vector of float normal})
+0:15 Sequence
+0:15 move second child to first child ( temp float)
+0:15 f: direct index for structure ( temp float)
+0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
+0:15 Constant:
+0:15 0 (const int)
+0:? 't.f' (layout( location=0) in float)
+0:15 move second child to first child ( temp float)
+0:15 g: direct index for structure ( temp float)
+0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
+0:15 Constant:
+0:15 1 (const int)
+0:? 't.g' (layout( location=1) centroid in float)
+0:15 move second child to first child ( temp float)
+0:15 d: direct index for structure ( temp float)
+0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
+0:15 Constant:
+0:15 2 (const int)
+0:? 't.d' (layout( location=2) in float)
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 normal: direct index for structure ( temp 4-component vector of float)
+0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
+0:15 Constant:
+0:15 3 (const int)
+0:? 't.normal' (layout( location=3) in 4-component vector of float)
0:15 Sequence
0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Function Call: @main(struct-T-f1-f1-f1-vf41; ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 move second child to first child ( temp float)
-0:? 'f' (layout( location=0) out float)
+0:? '@entryPointOutput.f' (layout( location=0) out float)
0:15 f: direct index for structure ( temp float)
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 0 (const int)
0:15 move second child to first child ( temp float)
-0:? 'g' (layout( location=1) out float)
+0:? '@entryPointOutput.g' (layout( location=1) out float)
0:15 g: direct index for structure ( temp float)
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 1 (const int)
0:15 move second child to first child ( temp float)
-0:? 'd' ( out float FragDepth)
+0:? '@entryPointOutput.d' ( out float FragDepth)
0:15 d: direct index for structure ( temp float)
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 2 (const int)
0:15 move second child to first child ( temp 4-component vector of float)
-0:? 'normal' (layout( location=2) out 4-component vector of float)
+0:? '@entryPointOutput.normal' (layout( location=2) out 4-component vector of float)
0:15 normal: direct index for structure ( temp 4-component vector of float)
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 3 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform structure{layout( offset=68) temp float f, temp float g, temp float d, temp 4-component vector of float normal} s})
-0:? 'anon@1' (layout( row_major std140) uniform block{layout( row_major std140 offset=88) uniform structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal} t})
-0:? 'f' (layout( location=0) out float)
-0:? 'g' (layout( location=1) out float)
-0:? 'd' ( out float FragDepth)
-0:? 'normal' (layout( location=2) out 4-component vector of float)
-0:? 't' (layout( location=0) in structure{ temp float f, centroid temp float g, temp float d, temp 4-component vector of float normal})
+0:? 'anon@1' (layout( row_major std140) uniform block{layout( row_major std140 offset=88) uniform structure{layout( offset=68) temp float f, temp float g, temp float d, temp 4-component vector of float normal} t})
+0:? '@entryPointOutput.d' ( out float FragDepth)
+0:? '@entryPointOutput.f' (layout( location=0) out float)
+0:? '@entryPointOutput.g' (layout( location=1) out float)
+0:? '@entryPointOutput.normal' (layout( location=2) out 4-component vector of float)
+0:? 't.f' (layout( location=0) in float)
+0:? 't.g' (layout( location=1) centroid in float)
+0:? 't.d' (layout( location=2) in float)
+0:? 't.normal' (layout( location=3) in 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
using depth_greater
0:? Sequence
@@ -70,57 +95,83 @@ using depth_greater
0:15 Function Definition: main( ( temp void)
0:15 Function Parameters:
0:? Sequence
-0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
-0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
-0:? 't' (layout( location=0) in structure{ temp float f, centroid temp float g, temp float d, temp 4-component vector of float normal})
+0:15 Sequence
+0:15 move second child to first child ( temp float)
+0:15 f: direct index for structure ( temp float)
+0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
+0:15 Constant:
+0:15 0 (const int)
+0:? 't.f' (layout( location=0) in float)
+0:15 move second child to first child ( temp float)
+0:15 g: direct index for structure ( temp float)
+0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
+0:15 Constant:
+0:15 1 (const int)
+0:? 't.g' (layout( location=1) centroid in float)
+0:15 move second child to first child ( temp float)
+0:15 d: direct index for structure ( temp float)
+0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
+0:15 Constant:
+0:15 2 (const int)
+0:? 't.d' (layout( location=2) in float)
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 normal: direct index for structure ( temp 4-component vector of float)
+0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
+0:15 Constant:
+0:15 3 (const int)
+0:? 't.normal' (layout( location=3) in 4-component vector of float)
0:15 Sequence
0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Function Call: @main(struct-T-f1-f1-f1-vf41; ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 move second child to first child ( temp float)
-0:? 'f' (layout( location=0) out float)
+0:? '@entryPointOutput.f' (layout( location=0) out float)
0:15 f: direct index for structure ( temp float)
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 0 (const int)
0:15 move second child to first child ( temp float)
-0:? 'g' (layout( location=1) out float)
+0:? '@entryPointOutput.g' (layout( location=1) out float)
0:15 g: direct index for structure ( temp float)
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 1 (const int)
0:15 move second child to first child ( temp float)
-0:? 'd' ( out float FragDepth)
+0:? '@entryPointOutput.d' ( out float FragDepth)
0:15 d: direct index for structure ( temp float)
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 2 (const int)
0:15 move second child to first child ( temp 4-component vector of float)
-0:? 'normal' (layout( location=2) out 4-component vector of float)
+0:? '@entryPointOutput.normal' (layout( location=2) out 4-component vector of float)
0:15 normal: direct index for structure ( temp 4-component vector of float)
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 3 (const int)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform structure{layout( offset=68) temp float f, temp float g, temp float d, temp 4-component vector of float normal} s})
-0:? 'anon@1' (layout( row_major std140) uniform block{layout( row_major std140 offset=88) uniform structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal} t})
-0:? 'f' (layout( location=0) out float)
-0:? 'g' (layout( location=1) out float)
-0:? 'd' ( out float FragDepth)
-0:? 'normal' (layout( location=2) out 4-component vector of float)
-0:? 't' (layout( location=0) in structure{ temp float f, centroid temp float g, temp float d, temp 4-component vector of float normal})
+0:? 'anon@1' (layout( row_major std140) uniform block{layout( row_major std140 offset=88) uniform structure{layout( offset=68) temp float f, temp float g, temp float d, temp 4-component vector of float normal} t})
+0:? '@entryPointOutput.d' ( out float FragDepth)
+0:? '@entryPointOutput.f' (layout( location=0) out float)
+0:? '@entryPointOutput.g' (layout( location=1) out float)
+0:? '@entryPointOutput.normal' (layout( location=2) out 4-component vector of float)
+0:? 't.f' (layout( location=0) in float)
+0:? 't.g' (layout( location=1) centroid in float)
+0:? 't.d' (layout( location=2) in float)
+0:? 't.normal' (layout( location=3) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 64
+// Generated by (magic number): 80002
+// Id's are bound by 65
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 21 43 46 49 53
+ EntryPoint Fragment 4 "main" 22 27 31 36 45 48 51 55
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 DepthGreater
+ Source HLSL 500
Name 4 "main"
Name 8 "T"
MemberName 8(T) 0 "f"
@@ -131,54 +182,46 @@ using depth_greater
Name 11 "t"
Name 14 "local"
Name 18 "t"
- Name 19 "T"
- MemberName 19(T) 0 "f"
- MemberName 19(T) 1 "g"
- MemberName 19(T) 2 "d"
- MemberName 19(T) 3 "normal"
- Name 21 "t"
- Name 38 "flattenTemp"
- Name 39 "param"
- Name 43 "f"
- Name 46 "g"
- Name 49 "d"
- Name 53 "normal"
- Name 56 "T"
- MemberName 56(T) 0 "f"
- MemberName 56(T) 1 "g"
- MemberName 56(T) 2 "d"
- MemberName 56(T) 3 "normal"
- Name 57 "$Global"
- MemberName 57($Global) 0 "s"
- Name 59 ""
- Name 60 "T"
- MemberName 60(T) 0 "f"
- MemberName 60(T) 1 "g"
- MemberName 60(T) 2 "d"
- MemberName 60(T) 3 "normal"
- Name 61 "buff"
- MemberName 61(buff) 0 "t"
- Name 63 ""
- MemberDecorate 19(T) 1 Centroid
- Decorate 21(t) Location 0
- Decorate 43(f) Location 0
- Decorate 46(g) Location 1
- Decorate 49(d) BuiltIn FragDepth
- Decorate 53(normal) Location 2
- MemberDecorate 56(T) 0 Offset 68
- MemberDecorate 56(T) 1 Offset 72
- MemberDecorate 56(T) 2 Offset 76
- MemberDecorate 56(T) 3 Offset 80
- MemberDecorate 57($Global) 0 Offset 0
- Decorate 57($Global) Block
- Decorate 59 DescriptorSet 0
- MemberDecorate 60(T) 0 Offset 0
- MemberDecorate 60(T) 1 Offset 4
- MemberDecorate 60(T) 2 Offset 8
- MemberDecorate 60(T) 3 Offset 16
- MemberDecorate 61(buff) 0 Offset 96
- Decorate 61(buff) Block
- Decorate 63 DescriptorSet 0
+ Name 22 "t.f"
+ Name 27 "t.g"
+ Name 31 "t.d"
+ Name 36 "t.normal"
+ Name 40 "flattenTemp"
+ Name 41 "param"
+ Name 45 "@entryPointOutput.f"
+ Name 48 "@entryPointOutput.g"
+ Name 51 "@entryPointOutput.d"
+ Name 55 "@entryPointOutput.normal"
+ Name 58 "T"
+ MemberName 58(T) 0 "f"
+ MemberName 58(T) 1 "g"
+ MemberName 58(T) 2 "d"
+ MemberName 58(T) 3 "normal"
+ Name 59 "$Global"
+ MemberName 59($Global) 0 "s"
+ Name 61 ""
+ Name 62 "buff"
+ MemberName 62(buff) 0 "t"
+ Name 64 ""
+ Decorate 22(t.f) Location 0
+ Decorate 27(t.g) Centroid
+ Decorate 27(t.g) Location 1
+ Decorate 31(t.d) Location 2
+ Decorate 36(t.normal) Location 3
+ Decorate 45(@entryPointOutput.f) Location 0
+ Decorate 48(@entryPointOutput.g) Location 1
+ Decorate 51(@entryPointOutput.d) BuiltIn FragDepth
+ Decorate 55(@entryPointOutput.normal) Location 2
+ MemberDecorate 58(T) 0 Offset 68
+ MemberDecorate 58(T) 1 Offset 72
+ MemberDecorate 58(T) 2 Offset 76
+ MemberDecorate 58(T) 3 Offset 80
+ MemberDecorate 59($Global) 0 Offset 0
+ Decorate 59($Global) Block
+ Decorate 61 DescriptorSet 0
+ MemberDecorate 62(buff) 0 Offset 96
+ Decorate 62(buff) Block
+ Decorate 64 DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -186,64 +229,65 @@ using depth_greater
8(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4)
9: TypePointer Function 8(T)
10: TypeFunction 8(T) 9(ptr)
- 19(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4)
- 20: TypePointer Input 19(T)
- 21(t): 20(ptr) Variable Input
- 24: TypeInt 32 1
- 25: 24(int) Constant 0
- 26: TypePointer Function 6(float)
- 29: 24(int) Constant 1
- 32: 24(int) Constant 2
- 35: 24(int) Constant 3
- 36: TypePointer Function 7(fvec4)
- 42: TypePointer Output 6(float)
- 43(f): 42(ptr) Variable Output
- 46(g): 42(ptr) Variable Output
- 49(d): 42(ptr) Variable Output
- 52: TypePointer Output 7(fvec4)
- 53(normal): 52(ptr) Variable Output
- 56(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4)
- 57($Global): TypeStruct 56(T)
- 58: TypePointer Uniform 57($Global)
- 59: 58(ptr) Variable Uniform
- 60(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4)
- 61(buff): TypeStruct 60(T)
- 62: TypePointer Uniform 61(buff)
- 63: 62(ptr) Variable Uniform
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 0
+ 21: TypePointer Input 6(float)
+ 22(t.f): 21(ptr) Variable Input
+ 24: TypePointer Function 6(float)
+ 26: 19(int) Constant 1
+ 27(t.g): 21(ptr) Variable Input
+ 30: 19(int) Constant 2
+ 31(t.d): 21(ptr) Variable Input
+ 34: 19(int) Constant 3
+ 35: TypePointer Input 7(fvec4)
+ 36(t.normal): 35(ptr) Variable Input
+ 38: TypePointer Function 7(fvec4)
+ 44: TypePointer Output 6(float)
+45(@entryPointOutput.f): 44(ptr) Variable Output
+48(@entryPointOutput.g): 44(ptr) Variable Output
+51(@entryPointOutput.d): 44(ptr) Variable Output
+ 54: TypePointer Output 7(fvec4)
+55(@entryPointOutput.normal): 54(ptr) Variable Output
+ 58(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4)
+ 59($Global): TypeStruct 58(T)
+ 60: TypePointer Uniform 59($Global)
+ 61: 60(ptr) Variable Uniform
+ 62(buff): TypeStruct 58(T)
+ 63: TypePointer Uniform 62(buff)
+ 64: 63(ptr) Variable Uniform
4(main): 2 Function None 3
5: Label
18(t): 9(ptr) Variable Function
- 38(flattenTemp): 9(ptr) Variable Function
- 39(param): 9(ptr) Variable Function
- 22: 19(T) Load 21(t)
- 23: 6(float) CompositeExtract 22 0
- 27: 26(ptr) AccessChain 18(t) 25
- Store 27 23
- 28: 6(float) CompositeExtract 22 1
- 30: 26(ptr) AccessChain 18(t) 29
- Store 30 28
- 31: 6(float) CompositeExtract 22 2
- 33: 26(ptr) AccessChain 18(t) 32
- Store 33 31
- 34: 7(fvec4) CompositeExtract 22 3
- 37: 36(ptr) AccessChain 18(t) 35
- Store 37 34
- 40: 8(T) Load 18(t)
- Store 39(param) 40
- 41: 8(T) FunctionCall 12(@main(struct-T-f1-f1-f1-vf41;) 39(param)
- Store 38(flattenTemp) 41
- 44: 26(ptr) AccessChain 38(flattenTemp) 25
- 45: 6(float) Load 44
- Store 43(f) 45
- 47: 26(ptr) AccessChain 38(flattenTemp) 29
- 48: 6(float) Load 47
- Store 46(g) 48
- 50: 26(ptr) AccessChain 38(flattenTemp) 32
- 51: 6(float) Load 50
- Store 49(d) 51
- 54: 36(ptr) AccessChain 38(flattenTemp) 35
- 55: 7(fvec4) Load 54
- Store 53(normal) 55
+ 40(flattenTemp): 9(ptr) Variable Function
+ 41(param): 9(ptr) Variable Function
+ 23: 6(float) Load 22(t.f)
+ 25: 24(ptr) AccessChain 18(t) 20
+ Store 25 23
+ 28: 6(float) Load 27(t.g)
+ 29: 24(ptr) AccessChain 18(t) 26
+ Store 29 28
+ 32: 6(float) Load 31(t.d)
+ 33: 24(ptr) AccessChain 18(t) 30
+ Store 33 32
+ 37: 7(fvec4) Load 36(t.normal)
+ 39: 38(ptr) AccessChain 18(t) 34
+ Store 39 37
+ 42: 8(T) Load 18(t)
+ Store 41(param) 42
+ 43: 8(T) FunctionCall 12(@main(struct-T-f1-f1-f1-vf41;) 41(param)
+ Store 40(flattenTemp) 43
+ 46: 24(ptr) AccessChain 40(flattenTemp) 20
+ 47: 6(float) Load 46
+ Store 45(@entryPointOutput.f) 47
+ 49: 24(ptr) AccessChain 40(flattenTemp) 26
+ 50: 6(float) Load 49
+ Store 48(@entryPointOutput.g) 50
+ 52: 24(ptr) AccessChain 40(flattenTemp) 30
+ 53: 6(float) Load 52
+ Store 51(@entryPointOutput.d) 53
+ 56: 38(ptr) AccessChain 40(flattenTemp) 34
+ 57: 7(fvec4) Load 56
+ Store 55(@entryPointOutput.normal) 57
Return
FunctionEnd
12(@main(struct-T-f1-f1-f1-vf41;): 8(T) Function None 10
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structStructName.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structStructName.frag.out
index 0fc40325c62..dded13f9fa6 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structStructName.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structStructName.frag.out
@@ -1,5 +1,5 @@
hlsl.structStructName.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: @main( ( temp int)
@@ -23,7 +23,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: @main( ( temp int)
@@ -44,7 +44,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 22
Capability Shader
@@ -52,6 +52,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 20
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "@main("
Name 10 "S"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structarray.flatten.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structarray.flatten.frag.out
index 7c84d37fc37..534ea7ce23d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structarray.flatten.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structarray.flatten.frag.out
@@ -1,5 +1,5 @@
hlsl.structarray.flatten.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:23 Function Definition: @main(struct-PS_OUTPUT-vf41; ( temp void)
@@ -15,8 +15,8 @@ gl_FragCoord origin is upper left
0:25 add ( temp 4-component vector of float)
0:25 texture ( temp 4-component vector of float)
0:25 Construct combined texture-sampler ( temp sampler1D)
-0:? 'tex' ( uniform texture1D)
-0:? 'samp' ( uniform sampler)
+0:? 'g_texdata.tex' ( uniform texture1D)
+0:? 'g_texdata.samp' ( uniform sampler)
0:25 Constant:
0:25 0.500000
0:26 texture ( temp 4-component vector of float)
@@ -27,8 +27,14 @@ gl_FragCoord origin is upper left
0:26 0.400000
0:27 texture ( temp 4-component vector of float)
0:27 Construct combined texture-sampler ( temp sampler1D)
-0:? 'g_texdata_array2[1].tex[0]' ( uniform texture1D)
-0:? 'g_texdata_array2[1].samp[0]' ( uniform sampler)
+0:27 direct index ( temp texture1D)
+0:? 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
+0:27 Constant:
+0:27 0 (const int)
+0:27 direct index ( temp sampler)
+0:? 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
+0:27 Constant:
+0:27 0 (const int)
0:27 Constant:
0:27 0.300000
0:23 Function Definition: main( ( temp void)
@@ -38,7 +44,7 @@ gl_FragCoord origin is upper left
0:? 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:23 Sequence
0:23 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? 'ps_output.color' (layout( location=0) out 4-component vector of float)
0:23 color: direct index for structure ( temp 4-component vector of float)
0:? 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:23 Constant:
@@ -46,25 +52,34 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'g_samp' ( uniform sampler)
0:? 'g_tex' ( uniform texture1D)
-0:? 'g_texdata_array2[0].samp[0]' ( uniform sampler)
-0:? 'g_texdata_array2[0].samp[1]' ( uniform sampler)
-0:? 'g_texdata_array2[0].tex[0]' ( uniform texture1D)
-0:? 'g_texdata_array2[0].tex[1]' ( uniform texture1D)
-0:? 'g_texdata_array2[1].samp[0]' ( uniform sampler)
-0:? 'g_texdata_array2[1].samp[1]' ( uniform sampler)
-0:? 'g_texdata_array2[1].tex[0]' ( uniform texture1D)
-0:? 'g_texdata_array2[1].tex[1]' ( uniform texture1D)
-0:? 'g_texdata_array2[2].samp[0]' ( uniform sampler)
-0:? 'g_texdata_array2[2].samp[1]' ( uniform sampler)
-0:? 'g_texdata_array2[2].tex[0]' ( uniform texture1D)
-0:? 'g_texdata_array2[2].tex[1]' ( uniform texture1D)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? 'g_texdata.samp' ( uniform sampler)
+0:? 'g_texdata.tex' ( uniform texture1D)
+0:? 'g_texdata.nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array[0].samp' ( uniform sampler)
+0:? 'g_texdata_array[0].tex' ( uniform texture1D)
+0:? 'g_texdata_array[0].nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array[1].samp' ( uniform sampler)
+0:? 'g_texdata_array[1].tex' ( uniform texture1D)
+0:? 'g_texdata_array[1].nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array[2].samp' ( uniform sampler)
+0:? 'g_texdata_array[2].tex' ( uniform texture1D)
+0:? 'g_texdata_array[2].nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array2[0].samp' ( uniform 2-element array of sampler)
+0:? 'g_texdata_array2[0].tex' ( uniform 2-element array of texture1D)
+0:? 'g_texdata_array2[0].nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
+0:? 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
+0:? 'g_texdata_array2[1].nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array2[2].samp' ( uniform 2-element array of sampler)
+0:? 'g_texdata_array2[2].tex' ( uniform 2-element array of texture1D)
+0:? 'g_texdata_array2[2].nonopaque_thing' ( uniform int)
+0:? 'ps_output.color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:23 Function Definition: @main(struct-PS_OUTPUT-vf41; ( temp void)
@@ -80,8 +95,8 @@ gl_FragCoord origin is upper left
0:25 add ( temp 4-component vector of float)
0:25 texture ( temp 4-component vector of float)
0:25 Construct combined texture-sampler ( temp sampler1D)
-0:? 'tex' ( uniform texture1D)
-0:? 'samp' ( uniform sampler)
+0:? 'g_texdata.tex' ( uniform texture1D)
+0:? 'g_texdata.samp' ( uniform sampler)
0:25 Constant:
0:25 0.500000
0:26 texture ( temp 4-component vector of float)
@@ -92,8 +107,14 @@ gl_FragCoord origin is upper left
0:26 0.400000
0:27 texture ( temp 4-component vector of float)
0:27 Construct combined texture-sampler ( temp sampler1D)
-0:? 'g_texdata_array2[1].tex[0]' ( uniform texture1D)
-0:? 'g_texdata_array2[1].samp[0]' ( uniform sampler)
+0:27 direct index ( temp texture1D)
+0:? 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
+0:27 Constant:
+0:27 0 (const int)
+0:27 direct index ( temp sampler)
+0:? 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
+0:27 Constant:
+0:27 0 (const int)
0:27 Constant:
0:27 0.300000
0:23 Function Definition: main( ( temp void)
@@ -103,7 +124,7 @@ gl_FragCoord origin is upper left
0:? 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:23 Sequence
0:23 move second child to first child ( temp 4-component vector of float)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? 'ps_output.color' (layout( location=0) out 4-component vector of float)
0:23 color: direct index for structure ( temp 4-component vector of float)
0:? 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:23 Constant:
@@ -111,75 +132,88 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'g_samp' ( uniform sampler)
0:? 'g_tex' ( uniform texture1D)
-0:? 'g_texdata_array2[0].samp[0]' ( uniform sampler)
-0:? 'g_texdata_array2[0].samp[1]' ( uniform sampler)
-0:? 'g_texdata_array2[0].tex[0]' ( uniform texture1D)
-0:? 'g_texdata_array2[0].tex[1]' ( uniform texture1D)
-0:? 'g_texdata_array2[1].samp[0]' ( uniform sampler)
-0:? 'g_texdata_array2[1].samp[1]' ( uniform sampler)
-0:? 'g_texdata_array2[1].tex[0]' ( uniform texture1D)
-0:? 'g_texdata_array2[1].tex[1]' ( uniform texture1D)
-0:? 'g_texdata_array2[2].samp[0]' ( uniform sampler)
-0:? 'g_texdata_array2[2].samp[1]' ( uniform sampler)
-0:? 'g_texdata_array2[2].tex[0]' ( uniform texture1D)
-0:? 'g_texdata_array2[2].tex[1]' ( uniform texture1D)
-0:? 'color' (layout( location=0) out 4-component vector of float)
+0:? 'g_texdata.samp' ( uniform sampler)
+0:? 'g_texdata.tex' ( uniform texture1D)
+0:? 'g_texdata.nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array[0].samp' ( uniform sampler)
+0:? 'g_texdata_array[0].tex' ( uniform texture1D)
+0:? 'g_texdata_array[0].nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array[1].samp' ( uniform sampler)
+0:? 'g_texdata_array[1].tex' ( uniform texture1D)
+0:? 'g_texdata_array[1].nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array[2].samp' ( uniform sampler)
+0:? 'g_texdata_array[2].tex' ( uniform texture1D)
+0:? 'g_texdata_array[2].nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array2[0].samp' ( uniform 2-element array of sampler)
+0:? 'g_texdata_array2[0].tex' ( uniform 2-element array of texture1D)
+0:? 'g_texdata_array2[0].nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
+0:? 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
+0:? 'g_texdata_array2[1].nonopaque_thing' ( uniform int)
+0:? 'g_texdata_array2[2].samp' ( uniform 2-element array of sampler)
+0:? 'g_texdata_array2[2].tex' ( uniform 2-element array of texture1D)
+0:? 'g_texdata_array2[2].nonopaque_thing' ( uniform int)
+0:? 'ps_output.color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 66
+// Generated by (magic number): 80002
+// Id's are bound by 80
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 51
+ EntryPoint Fragment 4 "main" 59
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "color"
Name 12 "@main(struct-PS_OUTPUT-vf41;"
Name 11 "ps_output"
- Name 18 "tex"
- Name 22 "samp"
+ Name 18 "g_texdata.tex"
+ Name 22 "g_texdata.samp"
Name 28 "g_texdata_array[1].tex"
Name 30 "g_texdata_array[1].samp"
- Name 36 "g_texdata_array2[1].tex[0]"
- Name 38 "g_texdata_array2[1].samp[0]"
- Name 46 "ps_output"
- Name 47 "param"
- Name 51 "color"
- Name 54 "g_samp"
- Name 55 "g_tex"
- Name 56 "g_texdata_array2[0].samp[0]"
- Name 57 "g_texdata_array2[0].samp[1]"
- Name 58 "g_texdata_array2[0].tex[0]"
- Name 59 "g_texdata_array2[0].tex[1]"
- Name 60 "g_texdata_array2[1].samp[1]"
- Name 61 "g_texdata_array2[1].tex[1]"
- Name 62 "g_texdata_array2[2].samp[0]"
- Name 63 "g_texdata_array2[2].samp[1]"
- Name 64 "g_texdata_array2[2].tex[0]"
- Name 65 "g_texdata_array2[2].tex[1]"
- Decorate 18(tex) DescriptorSet 0
- Decorate 22(samp) DescriptorSet 0
+ Name 40 "g_texdata_array2[1].tex"
+ Name 45 "g_texdata_array2[1].samp"
+ Name 54 "ps_output"
+ Name 55 "param"
+ Name 59 "ps_output.color"
+ Name 62 "g_samp"
+ Name 63 "g_tex"
+ Name 65 "g_texdata.nonopaque_thing"
+ Name 66 "g_texdata_array[0].samp"
+ Name 67 "g_texdata_array[0].tex"
+ Name 68 "g_texdata_array[0].nonopaque_thing"
+ Name 69 "g_texdata_array[1].nonopaque_thing"
+ Name 70 "g_texdata_array[2].samp"
+ Name 71 "g_texdata_array[2].tex"
+ Name 72 "g_texdata_array[2].nonopaque_thing"
+ Name 73 "g_texdata_array2[0].samp"
+ Name 74 "g_texdata_array2[0].tex"
+ Name 75 "g_texdata_array2[0].nonopaque_thing"
+ Name 76 "g_texdata_array2[1].nonopaque_thing"
+ Name 77 "g_texdata_array2[2].samp"
+ Name 78 "g_texdata_array2[2].tex"
+ Name 79 "g_texdata_array2[2].nonopaque_thing"
+ Decorate 18(g_texdata.tex) DescriptorSet 0
+ Decorate 22(g_texdata.samp) DescriptorSet 0
Decorate 28(g_texdata_array[1].tex) DescriptorSet 0
Decorate 30(g_texdata_array[1].samp) DescriptorSet 0
- Decorate 36(g_texdata_array2[1].tex[0]) DescriptorSet 0
- Decorate 38(g_texdata_array2[1].samp[0]) DescriptorSet 0
- Decorate 51(color) Location 0
- Decorate 54(g_samp) DescriptorSet 0
- Decorate 55(g_tex) DescriptorSet 0
- Decorate 56(g_texdata_array2[0].samp[0]) DescriptorSet 0
- Decorate 57(g_texdata_array2[0].samp[1]) DescriptorSet 0
- Decorate 58(g_texdata_array2[0].tex[0]) DescriptorSet 0
- Decorate 59(g_texdata_array2[0].tex[1]) DescriptorSet 0
- Decorate 60(g_texdata_array2[1].samp[1]) DescriptorSet 0
- Decorate 61(g_texdata_array2[1].tex[1]) DescriptorSet 0
- Decorate 62(g_texdata_array2[2].samp[0]) DescriptorSet 0
- Decorate 63(g_texdata_array2[2].samp[1]) DescriptorSet 0
- Decorate 64(g_texdata_array2[2].tex[0]) DescriptorSet 0
- Decorate 65(g_texdata_array2[2].tex[1]) DescriptorSet 0
+ Decorate 40(g_texdata_array2[1].tex) DescriptorSet 0
+ Decorate 45(g_texdata_array2[1].samp) DescriptorSet 0
+ Decorate 59(ps_output.color) Location 0
+ Decorate 62(g_samp) DescriptorSet 0
+ Decorate 63(g_tex) DescriptorSet 0
+ Decorate 66(g_texdata_array[0].samp) DescriptorSet 0
+ Decorate 67(g_texdata_array[0].tex) DescriptorSet 0
+ Decorate 70(g_texdata_array[2].samp) DescriptorSet 0
+ Decorate 71(g_texdata_array[2].tex) DescriptorSet 0
+ Decorate 73(g_texdata_array2[0].samp) DescriptorSet 0
+ Decorate 74(g_texdata_array2[0].tex) DescriptorSet 0
+ Decorate 77(g_texdata_array2[2].samp) DescriptorSet 0
+ Decorate 78(g_texdata_array2[2].tex) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -191,50 +225,62 @@ gl_FragCoord origin is upper left
15: 14(int) Constant 0
16: TypeImage 6(float) 1D sampled format:Unknown
17: TypePointer UniformConstant 16
- 18(tex): 17(ptr) Variable UniformConstant
+18(g_texdata.tex): 17(ptr) Variable UniformConstant
20: TypeSampler
21: TypePointer UniformConstant 20
- 22(samp): 21(ptr) Variable UniformConstant
+22(g_texdata.samp): 21(ptr) Variable UniformConstant
24: TypeSampledImage 16
26: 6(float) Constant 1056964608
28(g_texdata_array[1].tex): 17(ptr) Variable UniformConstant
30(g_texdata_array[1].samp): 21(ptr) Variable UniformConstant
33: 6(float) Constant 1053609165
-36(g_texdata_array2[1].tex[0]): 17(ptr) Variable UniformConstant
-38(g_texdata_array2[1].samp[0]): 21(ptr) Variable UniformConstant
- 41: 6(float) Constant 1050253722
- 44: TypePointer Function 7(fvec4)
- 50: TypePointer Output 7(fvec4)
- 51(color): 50(ptr) Variable Output
- 54(g_samp): 21(ptr) Variable UniformConstant
- 55(g_tex): 17(ptr) Variable UniformConstant
-56(g_texdata_array2[0].samp[0]): 21(ptr) Variable UniformConstant
-57(g_texdata_array2[0].samp[1]): 21(ptr) Variable UniformConstant
-58(g_texdata_array2[0].tex[0]): 17(ptr) Variable UniformConstant
-59(g_texdata_array2[0].tex[1]): 17(ptr) Variable UniformConstant
-60(g_texdata_array2[1].samp[1]): 21(ptr) Variable UniformConstant
-61(g_texdata_array2[1].tex[1]): 17(ptr) Variable UniformConstant
-62(g_texdata_array2[2].samp[0]): 21(ptr) Variable UniformConstant
-63(g_texdata_array2[2].samp[1]): 21(ptr) Variable UniformConstant
-64(g_texdata_array2[2].tex[0]): 17(ptr) Variable UniformConstant
-65(g_texdata_array2[2].tex[1]): 17(ptr) Variable UniformConstant
+ 36: TypeInt 32 0
+ 37: 36(int) Constant 2
+ 38: TypeArray 16 37
+ 39: TypePointer UniformConstant 38
+40(g_texdata_array2[1].tex): 39(ptr) Variable UniformConstant
+ 43: TypeArray 20 37
+ 44: TypePointer UniformConstant 43
+45(g_texdata_array2[1].samp): 44(ptr) Variable UniformConstant
+ 49: 6(float) Constant 1050253722
+ 52: TypePointer Function 7(fvec4)
+ 58: TypePointer Output 7(fvec4)
+59(ps_output.color): 58(ptr) Variable Output
+ 62(g_samp): 21(ptr) Variable UniformConstant
+ 63(g_tex): 17(ptr) Variable UniformConstant
+ 64: TypePointer UniformConstant 14(int)
+65(g_texdata.nonopaque_thing): 64(ptr) Variable UniformConstant
+66(g_texdata_array[0].samp): 21(ptr) Variable UniformConstant
+67(g_texdata_array[0].tex): 17(ptr) Variable UniformConstant
+68(g_texdata_array[0].nonopaque_thing): 64(ptr) Variable UniformConstant
+69(g_texdata_array[1].nonopaque_thing): 64(ptr) Variable UniformConstant
+70(g_texdata_array[2].samp): 21(ptr) Variable UniformConstant
+71(g_texdata_array[2].tex): 17(ptr) Variable UniformConstant
+72(g_texdata_array[2].nonopaque_thing): 64(ptr) Variable UniformConstant
+73(g_texdata_array2[0].samp): 44(ptr) Variable UniformConstant
+74(g_texdata_array2[0].tex): 39(ptr) Variable UniformConstant
+75(g_texdata_array2[0].nonopaque_thing): 64(ptr) Variable UniformConstant
+76(g_texdata_array2[1].nonopaque_thing): 64(ptr) Variable UniformConstant
+77(g_texdata_array2[2].samp): 44(ptr) Variable UniformConstant
+78(g_texdata_array2[2].tex): 39(ptr) Variable UniformConstant
+79(g_texdata_array2[2].nonopaque_thing): 64(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
- 46(ps_output): 9(ptr) Variable Function
- 47(param): 9(ptr) Variable Function
- 48: 2 FunctionCall 12(@main(struct-PS_OUTPUT-vf41;) 47(param)
- 49:8(PS_OUTPUT) Load 47(param)
- Store 46(ps_output) 49
- 52: 44(ptr) AccessChain 46(ps_output) 15
- 53: 7(fvec4) Load 52
- Store 51(color) 53
+ 54(ps_output): 9(ptr) Variable Function
+ 55(param): 9(ptr) Variable Function
+ 56: 2 FunctionCall 12(@main(struct-PS_OUTPUT-vf41;) 55(param)
+ 57:8(PS_OUTPUT) Load 55(param)
+ Store 54(ps_output) 57
+ 60: 52(ptr) AccessChain 54(ps_output) 15
+ 61: 7(fvec4) Load 60
+ Store 59(ps_output.color) 61
Return
FunctionEnd
12(@main(struct-PS_OUTPUT-vf41;): 2 Function None 10
11(ps_output): 9(ptr) FunctionParameter
13: Label
- 19: 16 Load 18(tex)
- 23: 20 Load 22(samp)
+ 19: 16 Load 18(g_texdata.tex)
+ 23: 20 Load 22(g_texdata.samp)
25: 24 SampledImage 19 23
27: 7(fvec4) ImageSampleImplicitLod 25 26
29: 16 Load 28(g_texdata_array[1].tex)
@@ -242,12 +288,14 @@ gl_FragCoord origin is upper left
32: 24 SampledImage 29 31
34: 7(fvec4) ImageSampleImplicitLod 32 33
35: 7(fvec4) FAdd 27 34
- 37: 16 Load 36(g_texdata_array2[1].tex[0])
- 39: 20 Load 38(g_texdata_array2[1].samp[0])
- 40: 24 SampledImage 37 39
- 42: 7(fvec4) ImageSampleImplicitLod 40 41
- 43: 7(fvec4) FAdd 35 42
- 45: 44(ptr) AccessChain 11(ps_output) 15
- Store 45 43
+ 41: 17(ptr) AccessChain 40(g_texdata_array2[1].tex) 15
+ 42: 16 Load 41
+ 46: 21(ptr) AccessChain 45(g_texdata_array2[1].samp) 15
+ 47: 20 Load 46
+ 48: 24 SampledImage 42 47
+ 50: 7(fvec4) ImageSampleImplicitLod 48 49
+ 51: 7(fvec4) FAdd 35 50
+ 53: 52(ptr) AccessChain 11(ps_output) 15
+ Store 53 51
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structarray.flatten.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structarray.flatten.geom.out
index 1af304d754c..eac315c08e0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structarray.flatten.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structarray.flatten.geom.out
@@ -1,5 +1,5 @@
hlsl.structarray.flatten.geom
-Shader version: 450
+Shader version: 500
invocations = -1
max_vertices = 4
input primitive = lines
@@ -47,9 +47,25 @@ output primitive = triangle_strip
0:21 Constant:
0:21 0 (const int)
0:22 Sequence
-0:22 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
-0:22 'outStream' ( out structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
-0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
+0:22 Sequence
+0:22 move second child to first child ( temp 4-component vector of float)
+0:? 'outStream.position' ( out 4-component vector of float Position)
+0:22 position: direct index for structure ( temp 4-component vector of float)
+0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
+0:22 Constant:
+0:22 0 (const int)
+0:22 move second child to first child ( temp 4-component vector of float)
+0:? 'outStream.color' (layout( location=0) out 4-component vector of float)
+0:22 color: direct index for structure ( temp 4-component vector of float)
+0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
+0:22 Constant:
+0:22 1 (const int)
+0:22 move second child to first child ( temp 2-component vector of float)
+0:? 'outStream.uv' (layout( location=1) out 2-component vector of float)
+0:22 uv: direct index for structure ( temp 2-component vector of float)
+0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
+0:22 Constant:
+0:22 2 (const int)
0:22 EmitVertex ( temp void)
0:16 Function Definition: main( ( temp void)
0:16 Function Parameters:
@@ -62,12 +78,15 @@ output primitive = triangle_strip
0:? 'outStream' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
0:? Linker Objects
0:? 'vin' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
+0:? 'outStream.position' ( out 4-component vector of float Position)
+0:? 'outStream.color' (layout( location=0) out 4-component vector of float)
+0:? 'outStream.uv' (layout( location=1) out 2-component vector of float)
Linked geometry stage:
-Shader version: 450
+Shader version: 500
invocations = 1
max_vertices = 4
input primitive = lines
@@ -115,9 +134,25 @@ output primitive = triangle_strip
0:21 Constant:
0:21 0 (const int)
0:22 Sequence
-0:22 move second child to first child ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
-0:22 'outStream' ( out structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
-0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
+0:22 Sequence
+0:22 move second child to first child ( temp 4-component vector of float)
+0:? 'outStream.position' ( out 4-component vector of float Position)
+0:22 position: direct index for structure ( temp 4-component vector of float)
+0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
+0:22 Constant:
+0:22 0 (const int)
+0:22 move second child to first child ( temp 4-component vector of float)
+0:? 'outStream.color' (layout( location=0) out 4-component vector of float)
+0:22 color: direct index for structure ( temp 4-component vector of float)
+0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
+0:22 Constant:
+0:22 1 (const int)
+0:22 move second child to first child ( temp 2-component vector of float)
+0:? 'outStream.uv' (layout( location=1) out 2-component vector of float)
+0:22 uv: direct index for structure ( temp 2-component vector of float)
+0:22 'vout' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
+0:22 Constant:
+0:22 2 (const int)
0:22 EmitVertex ( temp void)
0:16 Function Definition: main( ( temp void)
0:16 Function Parameters:
@@ -130,19 +165,23 @@ output primitive = triangle_strip
0:? 'outStream' ( temp structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
0:? Linker Objects
0:? 'vin' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv})
+0:? 'outStream.position' ( out 4-component vector of float Position)
+0:? 'outStream.color' (layout( location=0) out 4-component vector of float)
+0:? 'outStream.uv' (layout( location=1) out 2-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 47
+// Generated by (magic number): 80002
+// Id's are bound by 58
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Geometry 4 "main" 40
+ EntryPoint Geometry 4 "main" 38 41 45 50
ExecutionMode 4 InputLines
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 4
+ Source HLSL 500
Name 4 "main"
Name 9 "VertexData"
MemberName 9(VertexData) 0 "position"
@@ -156,12 +195,18 @@ output primitive = triangle_strip
Name 17 "vin"
Name 18 "outStream"
Name 21 "vout"
- Name 38 "vin"
- Name 40 "vin"
- Name 42 "outStream"
- Name 43 "param"
- Name 45 "param"
- Decorate 40(vin) Location 0
+ Name 38 "outStream.position"
+ Name 41 "outStream.color"
+ Name 45 "outStream.uv"
+ Name 48 "vin"
+ Name 50 "vin"
+ Name 52 "outStream"
+ Name 53 "param"
+ Name 55 "param"
+ Decorate 38(outStream.position) BuiltIn Position
+ Decorate 41(outStream.color) Location 0
+ Decorate 45(outStream.uv) Location 1
+ Decorate 50(vin) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -181,19 +226,26 @@ output primitive = triangle_strip
28: 22(int) Constant 2
29: TypePointer Function 8(fvec2)
33: 22(int) Constant 0
- 39: TypePointer Input 12
- 40(vin): 39(ptr) Variable Input
+ 37: TypePointer Output 7(fvec4)
+38(outStream.position): 37(ptr) Variable Output
+41(outStream.color): 37(ptr) Variable Output
+ 44: TypePointer Output 8(fvec2)
+45(outStream.uv): 44(ptr) Variable Output
+ 49: TypePointer Input 12
+ 50(vin): 49(ptr) Variable Input
4(main): 2 Function None 3
5: Label
- 38(vin): 13(ptr) Variable Function
- 42(outStream): 15(ptr) Variable Function
- 43(param): 13(ptr) Variable Function
- 45(param): 15(ptr) Variable Function
- 41: 12 Load 40(vin)
- Store 38(vin) 41
- 44: 12 Load 38(vin)
- Store 43(param) 44
- 46: 2 FunctionCall 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;) 43(param) 45(param)
+ 48(vin): 13(ptr) Variable Function
+ 52(outStream): 15(ptr) Variable Function
+ 53(param): 13(ptr) Variable Function
+ 55(param): 15(ptr) Variable Function
+ 51: 12 Load 50(vin)
+ Store 48(vin) 51
+ 54: 12 Load 48(vin)
+ Store 53(param) 54
+ 56: 2 FunctionCall 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;) 53(param) 55(param)
+ 57: 14(PS_IN) Load 55(param)
+ Store 52(outStream) 57
Return
FunctionEnd
19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;): 2 Function None 16
@@ -213,8 +265,15 @@ output primitive = triangle_strip
35: 7(fvec4) Load 34
36: 24(ptr) AccessChain 21(vout) 33
Store 36 35
- 37: 14(PS_IN) Load 21(vout)
- Store 18(outStream) 37
+ 39: 24(ptr) AccessChain 21(vout) 33
+ 40: 7(fvec4) Load 39
+ Store 38(outStream.position) 40
+ 42: 24(ptr) AccessChain 21(vout) 23
+ 43: 7(fvec4) Load 42
+ Store 41(outStream.color) 43
+ 46: 29(ptr) AccessChain 21(vout) 28
+ 47: 8(fvec2) Load 46
+ Store 45(outStream.uv) 47
EmitVertex
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
new file mode 100644
index 00000000000..1f79b9b5f61
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
@@ -0,0 +1,286 @@
+hlsl.structbuffer.append.fn.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:8 'arg_a@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:8 'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:8 'arg_c@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:? Sequence
+0:9 move second child to first child ( temp 4-component vector of float)
+0:9 indirect index ( buffer 4-component vector of float)
+0:9 @data: direct index for structure ( buffer implicitly-sized array of 4-component vector of float)
+0:9 'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:9 Constant:
+0:9 0 (const uint)
+0:9 AtomicAdd ( temp uint)
+0:9 @count: direct index for structure ( temp int)
+0:9 'arg_a@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:9 Constant:
+0:9 0 (const int)
+0:9 Constant:
+0:9 1 (const int)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:10 Branch: Return with expression
+0:10 indirect index ( buffer 4-component vector of float)
+0:10 @data: direct index for structure ( buffer implicitly-sized array of 4-component vector of float)
+0:10 'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 add ( temp uint)
+0:10 AtomicAdd ( temp uint)
+0:10 @count: direct index for structure ( temp int)
+0:10 'arg_c@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 -1 (const int)
+0:10 Constant:
+0:10 -1 (const int)
+0:19 Function Definition: @main(u1; ( temp 4-component vector of float)
+0:19 Function Parameters:
+0:19 'pos' ( in uint)
+0:? Sequence
+0:22 Branch: Return with expression
+0:22 Function Call: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float)
+0:22 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:22 'sbuf_a@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:22 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:22 'sbuf_c@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:19 Function Definition: main( ( temp void)
+0:19 Function Parameters:
+0:? Sequence
+0:19 move second child to first child ( temp uint)
+0:? 'pos' ( temp uint)
+0:? 'pos' (layout( location=0) flat in uint)
+0:19 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:19 Function Call: @main(u1; ( temp 4-component vector of float)
+0:? 'pos' ( temp uint)
+0:? Linker Objects
+0:? 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' (layout( location=0) flat in uint)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:8 'arg_a@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:8 'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:8 'arg_c@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:? Sequence
+0:9 move second child to first child ( temp 4-component vector of float)
+0:9 indirect index ( buffer 4-component vector of float)
+0:9 @data: direct index for structure ( buffer implicitly-sized array of 4-component vector of float)
+0:9 'arg_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:9 Constant:
+0:9 0 (const uint)
+0:9 AtomicAdd ( temp uint)
+0:9 @count: direct index for structure ( temp int)
+0:9 'arg_a@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:9 Constant:
+0:9 0 (const int)
+0:9 Constant:
+0:9 1 (const int)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:10 Branch: Return with expression
+0:10 indirect index ( buffer 4-component vector of float)
+0:10 @data: direct index for structure ( buffer implicitly-sized array of 4-component vector of float)
+0:10 'arg_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 add ( temp uint)
+0:10 AtomicAdd ( temp uint)
+0:10 @count: direct index for structure ( temp int)
+0:10 'arg_c@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 -1 (const int)
+0:10 Constant:
+0:10 -1 (const int)
+0:19 Function Definition: @main(u1; ( temp 4-component vector of float)
+0:19 Function Parameters:
+0:19 'pos' ( in uint)
+0:? Sequence
+0:22 Branch: Return with expression
+0:22 Function Call: Fn2(block--vf4[0]1;block--vf4[0]1; ( temp 4-component vector of float)
+0:22 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:22 'sbuf_a@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:22 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:22 'sbuf_c@count' ( buffer block{layout( row_major std430) buffer int @count})
+0:19 Function Definition: main( ( temp void)
+0:19 Function Parameters:
+0:? Sequence
+0:19 move second child to first child ( temp uint)
+0:? 'pos' ( temp uint)
+0:? 'pos' (layout( location=0) flat in uint)
+0:19 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:19 Function Call: @main(u1; ( temp 4-component vector of float)
+0:? 'pos' ( temp uint)
+0:? Linker Objects
+0:? 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' (layout( location=0) flat in uint)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 76
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 64 67
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 ""
+ MemberName 9 0 "@data"
+ Name 12 ""
+ MemberName 12 0 "@count"
+ Name 19 "Fn2(block--vf4[0]1;block--vf4[0]1;"
+ Name 15 "arg_a"
+ Name 16 "arg_a@count"
+ Name 17 "arg_c"
+ Name 18 "arg_c@count"
+ Name 25 "@main(u1;"
+ Name 24 "pos"
+ Name 50 "sbuf_a"
+ Name 52 "sbuf_a@count"
+ Name 53 "sbuf_c"
+ Name 54 "sbuf_c@count"
+ Name 55 "param"
+ Name 56 "param"
+ Name 57 "param"
+ Name 58 "param"
+ Name 62 "pos"
+ Name 64 "pos"
+ Name 67 "@entryPointOutput"
+ Name 68 "param"
+ Name 71 "sbuf_a@count"
+ MemberName 71(sbuf_a@count) 0 "@count"
+ Name 73 "sbuf_a@count"
+ Name 74 "sbuf_c@count"
+ Name 75 "sbuf_unused"
+ Decorate 8 ArrayStride 16
+ MemberDecorate 9 0 Offset 0
+ Decorate 9 BufferBlock
+ Decorate 12 BufferBlock
+ Decorate 50(sbuf_a) DescriptorSet 0
+ Decorate 52(sbuf_a@count) DescriptorSet 0
+ Decorate 53(sbuf_c) DescriptorSet 0
+ Decorate 54(sbuf_c@count) DescriptorSet 0
+ Decorate 64(pos) Flat
+ Decorate 64(pos) Location 0
+ Decorate 67(@entryPointOutput) Location 0
+ MemberDecorate 71(sbuf_a@count) 0 Offset 0
+ Decorate 71(sbuf_a@count) BufferBlock
+ Decorate 73(sbuf_a@count) DescriptorSet 0
+ Decorate 74(sbuf_c@count) DescriptorSet 0
+ Decorate 75(sbuf_unused) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeRuntimeArray 7(fvec4)
+ 9: TypeStruct 8
+ 10: TypePointer Function 9(struct)
+ 11: TypeInt 32 1
+ 12: TypeStruct 11(int)
+ 13: TypePointer Function 12(struct)
+ 14: TypeFunction 7(fvec4) 10(ptr) 13(ptr) 10(ptr) 13(ptr)
+ 21: TypeInt 32 0
+ 22: TypePointer Function 21(int)
+ 23: TypeFunction 7(fvec4) 22(ptr)
+ 27: 11(int) Constant 0
+ 28: TypePointer Function 11(int)
+ 30: 11(int) Constant 1
+ 31: 21(int) Constant 1
+ 32: 21(int) Constant 0
+ 34: 6(float) Constant 1065353216
+ 35: 6(float) Constant 1073741824
+ 36: 6(float) Constant 1077936128
+ 37: 6(float) Constant 1082130432
+ 38: 7(fvec4) ConstantComposite 34 35 36 37
+ 39: TypePointer Function 7(fvec4)
+ 42: 11(int) Constant 4294967295
+ 49: TypePointer Uniform 9(struct)
+ 50(sbuf_a): 49(ptr) Variable Uniform
+ 51: TypePointer Uniform 12(struct)
+52(sbuf_a@count): 51(ptr) Variable Uniform
+ 53(sbuf_c): 49(ptr) Variable Uniform
+54(sbuf_c@count): 51(ptr) Variable Uniform
+ 63: TypePointer Input 21(int)
+ 64(pos): 63(ptr) Variable Input
+ 66: TypePointer Output 7(fvec4)
+67(@entryPointOutput): 66(ptr) Variable Output
+71(sbuf_a@count): TypeStruct 11(int)
+ 72: TypePointer Uniform 71(sbuf_a@count)
+73(sbuf_a@count): 72(ptr) Variable Uniform
+74(sbuf_c@count): 72(ptr) Variable Uniform
+ 75(sbuf_unused): 49(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 62(pos): 22(ptr) Variable Function
+ 68(param): 22(ptr) Variable Function
+ 65: 21(int) Load 64(pos)
+ Store 62(pos) 65
+ 69: 21(int) Load 62(pos)
+ Store 68(param) 69
+ 70: 7(fvec4) FunctionCall 25(@main(u1;) 68(param)
+ Store 67(@entryPointOutput) 70
+ Return
+ FunctionEnd
+19(Fn2(block--vf4[0]1;block--vf4[0]1;): 7(fvec4) Function None 14
+ 15(arg_a): 10(ptr) FunctionParameter
+ 16(arg_a@count): 13(ptr) FunctionParameter
+ 17(arg_c): 10(ptr) FunctionParameter
+ 18(arg_c@count): 13(ptr) FunctionParameter
+ 20: Label
+ 29: 28(ptr) AccessChain 16(arg_a@count) 27
+ 33: 21(int) AtomicIAdd 29 31 32 30
+ 40: 39(ptr) AccessChain 15(arg_a) 27 33
+ Store 40 38
+ 41: 28(ptr) AccessChain 18(arg_c@count) 27
+ 43: 21(int) AtomicIAdd 41 31 32 42
+ 44: 21(int) IAdd 43 42
+ 45: 39(ptr) AccessChain 17(arg_c) 27 44
+ 46: 7(fvec4) Load 45
+ ReturnValue 46
+ FunctionEnd
+ 25(@main(u1;): 7(fvec4) Function None 23
+ 24(pos): 22(ptr) FunctionParameter
+ 26: Label
+ 55(param): 10(ptr) Variable Function
+ 56(param): 13(ptr) Variable Function
+ 57(param): 10(ptr) Variable Function
+ 58(param): 13(ptr) Variable Function
+ 59: 7(fvec4) FunctionCall 19(Fn2(block--vf4[0]1;block--vf4[0]1;) 55(param) 56(param) 57(param) 58(param)
+ ReturnValue 59
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.append.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.append.frag.out
new file mode 100644
index 00000000000..9ff5bee37ab
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.append.frag.out
@@ -0,0 +1,224 @@
+hlsl.structbuffer.append.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(u1; ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:7 'pos' ( in uint)
+0:? Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 indirect index (layout( row_major std430) buffer 4-component vector of float)
+0:8 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of float)
+0:8 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:8 Constant:
+0:8 0 (const uint)
+0:8 AtomicAdd ( temp uint)
+0:8 @count: direct index for structure ( temp int)
+0:8 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:10 Branch: Return with expression
+0:10 indirect index (layout( row_major std430) buffer 4-component vector of float)
+0:10 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of float)
+0:10 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 add ( temp uint)
+0:10 AtomicAdd ( temp uint)
+0:10 @count: direct index for structure ( temp int)
+0:10 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 -1 (const int)
+0:10 Constant:
+0:10 -1 (const int)
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 move second child to first child ( temp uint)
+0:? 'pos' ( temp uint)
+0:? 'pos' (layout( location=0) flat in uint)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main(u1; ( temp 4-component vector of float)
+0:? 'pos' ( temp uint)
+0:? Linker Objects
+0:? 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' (layout( location=0) flat in uint)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(u1; ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:7 'pos' ( in uint)
+0:? Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 indirect index (layout( row_major std430) buffer 4-component vector of float)
+0:8 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of float)
+0:8 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:8 Constant:
+0:8 0 (const uint)
+0:8 AtomicAdd ( temp uint)
+0:8 @count: direct index for structure ( temp int)
+0:8 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:10 Branch: Return with expression
+0:10 indirect index (layout( row_major std430) buffer 4-component vector of float)
+0:10 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of float)
+0:10 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 add ( temp uint)
+0:10 AtomicAdd ( temp uint)
+0:10 @count: direct index for structure ( temp int)
+0:10 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 -1 (const int)
+0:10 Constant:
+0:10 -1 (const int)
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 move second child to first child ( temp uint)
+0:? 'pos' ( temp uint)
+0:? 'pos' (layout( location=0) flat in uint)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main(u1; ( temp 4-component vector of float)
+0:? 'pos' ( temp uint)
+0:? Linker Objects
+0:? 'sbuf_a' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 'sbuf_a@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_c' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' (layout( location=0) flat in uint)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 56
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 48 51
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 12 "@main(u1;"
+ Name 11 "pos"
+ Name 15 "sbuf_a"
+ MemberName 15(sbuf_a) 0 "@data"
+ Name 17 "sbuf_a"
+ Name 20 "sbuf_a@count"
+ MemberName 20(sbuf_a@count) 0 "@count"
+ Name 22 "sbuf_a@count"
+ Name 36 "sbuf_c"
+ Name 37 "sbuf_c@count"
+ Name 46 "pos"
+ Name 48 "pos"
+ Name 51 "@entryPointOutput"
+ Name 52 "param"
+ Name 55 "sbuf_unused"
+ Decorate 14 ArrayStride 16
+ MemberDecorate 15(sbuf_a) 0 Offset 0
+ Decorate 15(sbuf_a) BufferBlock
+ Decorate 17(sbuf_a) DescriptorSet 0
+ MemberDecorate 20(sbuf_a@count) 0 Offset 0
+ Decorate 20(sbuf_a@count) BufferBlock
+ Decorate 22(sbuf_a@count) DescriptorSet 0
+ Decorate 36(sbuf_c) DescriptorSet 0
+ Decorate 37(sbuf_c@count) DescriptorSet 0
+ Decorate 48(pos) Flat
+ Decorate 48(pos) Location 0
+ Decorate 51(@entryPointOutput) Location 0
+ Decorate 55(sbuf_unused) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 4
+ 10: TypeFunction 9(fvec4) 7(ptr)
+ 14: TypeRuntimeArray 9(fvec4)
+ 15(sbuf_a): TypeStruct 14
+ 16: TypePointer Uniform 15(sbuf_a)
+ 17(sbuf_a): 16(ptr) Variable Uniform
+ 18: TypeInt 32 1
+ 19: 18(int) Constant 0
+20(sbuf_a@count): TypeStruct 18(int)
+ 21: TypePointer Uniform 20(sbuf_a@count)
+22(sbuf_a@count): 21(ptr) Variable Uniform
+ 23: TypePointer Uniform 18(int)
+ 25: 18(int) Constant 1
+ 26: 6(int) Constant 1
+ 27: 6(int) Constant 0
+ 29: 8(float) Constant 1065353216
+ 30: 8(float) Constant 1073741824
+ 31: 8(float) Constant 1077936128
+ 32: 8(float) Constant 1082130432
+ 33: 9(fvec4) ConstantComposite 29 30 31 32
+ 34: TypePointer Uniform 9(fvec4)
+ 36(sbuf_c): 16(ptr) Variable Uniform
+37(sbuf_c@count): 21(ptr) Variable Uniform
+ 39: 18(int) Constant 4294967295
+ 47: TypePointer Input 6(int)
+ 48(pos): 47(ptr) Variable Input
+ 50: TypePointer Output 9(fvec4)
+51(@entryPointOutput): 50(ptr) Variable Output
+ 55(sbuf_unused): 16(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 46(pos): 7(ptr) Variable Function
+ 52(param): 7(ptr) Variable Function
+ 49: 6(int) Load 48(pos)
+ Store 46(pos) 49
+ 53: 6(int) Load 46(pos)
+ Store 52(param) 53
+ 54: 9(fvec4) FunctionCall 12(@main(u1;) 52(param)
+ Store 51(@entryPointOutput) 54
+ Return
+ FunctionEnd
+ 12(@main(u1;): 9(fvec4) Function None 10
+ 11(pos): 7(ptr) FunctionParameter
+ 13: Label
+ 24: 23(ptr) AccessChain 22(sbuf_a@count) 19
+ 28: 6(int) AtomicIAdd 24 26 27 25
+ 35: 34(ptr) AccessChain 17(sbuf_a) 19 28
+ Store 35 33
+ 38: 23(ptr) AccessChain 37(sbuf_c@count) 19
+ 40: 6(int) AtomicIAdd 38 26 27 39
+ 41: 6(int) IAdd 40 39
+ 42: 34(ptr) AccessChain 36(sbuf_c) 19 41
+ 43: 9(fvec4) Load 42
+ ReturnValue 43
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out
index a463a887846..2e85173fca3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out
@@ -1,5 +1,5 @@
hlsl.structbuffer.atomics.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -224,7 +224,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -232,13 +232,13 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -463,7 +463,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -471,10 +471,10 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 87
Capability Shader
@@ -482,6 +482,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 80 83
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 12 "@main(u1;"
Name 11 "pos"
@@ -497,6 +498,7 @@ gl_FragCoord origin is upper left
MemberDecorate 15(sbuf) 0 Offset 0
Decorate 15(sbuf) BufferBlock
Decorate 17(sbuf) DescriptorSet 0
+ Decorate 80(pos) Flat
Decorate 80(pos) Location 0
Decorate 83(@entryPointOutput) Location 0
2: TypeVoid
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out
index f388f87d6ea..a4084aee4d5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out
@@ -1,5 +1,5 @@
hlsl.structbuffer.byte.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -149,7 +149,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -157,13 +157,13 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -313,7 +313,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -321,10 +321,10 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 114
Capability Shader
@@ -332,6 +332,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 107 110
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 12 "@main(u1;"
Name 11 "pos"
@@ -351,6 +352,7 @@ gl_FragCoord origin is upper left
MemberDecorate 16(sbuf) 0 Offset 0
Decorate 16(sbuf) BufferBlock
Decorate 18(sbuf) DescriptorSet 0
+ Decorate 107(pos) Flat
Decorate 107(pos) Location 0
Decorate 110(@entryPointOutput) Location 0
2: TypeVoid
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out
index f5210c0ee3f..baed6ffbd7f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out
@@ -1,5 +1,5 @@
hlsl.structbuffer.coherent.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -74,7 +74,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -83,13 +83,13 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -164,7 +164,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -173,10 +173,10 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 78
Capability Shader
@@ -184,6 +184,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 71 74
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 12 "@main(u1;"
Name 11 "pos"
@@ -207,15 +208,14 @@ gl_FragCoord origin is upper left
MemberDecorate 15(sbuf2) 0 Offset 0
Decorate 15(sbuf2) BufferBlock
Decorate 17(sbuf2) DescriptorSet 0
- MemberDecorate 28(sb_t) 0 Coherent
MemberDecorate 28(sb_t) 0 Offset 0
- MemberDecorate 28(sb_t) 1 Coherent
MemberDecorate 28(sb_t) 1 Offset 12
Decorate 29 ArrayStride 16
MemberDecorate 30(sbuf) 0 Coherent
MemberDecorate 30(sbuf) 0 Offset 0
Decorate 30(sbuf) BufferBlock
Decorate 32(sbuf) DescriptorSet 0
+ Decorate 71(pos) Flat
Decorate 71(pos) Location 0
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.floatidx.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
new file mode 100644
index 00000000000..9b49bc78633
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
@@ -0,0 +1,326 @@
+hlsl.structbuffer.floatidx.comp
+Shader version: 500
+local_size = (1, 1, 1)
+0:? Sequence
+0:13 Function Definition: @main(vu3; ( temp void)
+0:13 Function Parameters:
+0:13 'nThreadId' ( in 3-component vector of uint)
+0:? Sequence
+0:14 Sequence
+0:14 move second child to first child ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:14 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:14 'csb' (layout( binding=1 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 add ( temp uint)
+0:14 AtomicAdd ( temp uint)
+0:14 @count: direct index for structure ( temp int)
+0:14 'csb@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 -1 (const int)
+0:14 Constant:
+0:14 -1 (const int)
+0:15 Sequence
+0:15 move second child to first child ( temp 2-component vector of float)
+0:15 'coord' ( temp 2-component vector of float)
+0:15 Convert uint to float ( temp 2-component vector of float)
+0:15 vector swizzle ( temp 2-component vector of uint)
+0:15 threadId: direct index for structure ( temp 2-component vector of uint)
+0:15 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Sequence
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 1 (const int)
+0:16 Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 'storeTemp' ( temp 4-component vector of float)
+0:16 color: direct index for structure ( temp 4-component vector of float)
+0:16 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:16 Constant:
+0:16 0 (const int)
+0:16 imageStore ( temp void)
+0:16 'outtx' (layout( rgba32f) uniform image2D)
+0:16 Convert float to uint ( temp 2-component vector of uint)
+0:16 'coord' ( temp 2-component vector of float)
+0:16 'storeTemp' ( temp 4-component vector of float)
+0:16 'storeTemp' ( temp 4-component vector of float)
+0:18 move second child to first child ( temp 4-component vector of float)
+0:18 indirect index (layout( row_major std430) buffer 4-component vector of float)
+0:18 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of float)
+0:18 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:18 Constant:
+0:18 0 (const uint)
+0:18 Convert float to uint ( temp uint)
+0:18 direct index ( temp float)
+0:18 'coord' ( temp 2-component vector of float)
+0:18 Constant:
+0:18 0 (const int)
+0:18 indirect index (layout( row_major std430) buffer 4-component vector of float)
+0:18 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of float)
+0:18 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:18 Constant:
+0:18 0 (const uint)
+0:18 Convert float to uint ( temp uint)
+0:18 direct index ( temp float)
+0:18 'coord' ( temp 2-component vector of float)
+0:18 Constant:
+0:18 1 (const int)
+0:13 Function Definition: main( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-component vector of uint)
+0:? 'nThreadId' ( temp 3-component vector of uint)
+0:? 'nThreadId' ( in 3-component vector of uint GlobalInvocationID)
+0:13 Function Call: @main(vu3; ( temp void)
+0:? 'nThreadId' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'outtx' (layout( rgba32f) uniform image2D)
+0:? 'csb' (layout( binding=1 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId} @data})
+0:? 'csb@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 'nThreadId' ( in 3-component vector of uint GlobalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (1, 1, 1)
+0:? Sequence
+0:13 Function Definition: @main(vu3; ( temp void)
+0:13 Function Parameters:
+0:13 'nThreadId' ( in 3-component vector of uint)
+0:? Sequence
+0:14 Sequence
+0:14 move second child to first child ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:14 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:14 'csb' (layout( binding=1 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 add ( temp uint)
+0:14 AtomicAdd ( temp uint)
+0:14 @count: direct index for structure ( temp int)
+0:14 'csb@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 -1 (const int)
+0:14 Constant:
+0:14 -1 (const int)
+0:15 Sequence
+0:15 move second child to first child ( temp 2-component vector of float)
+0:15 'coord' ( temp 2-component vector of float)
+0:15 Convert uint to float ( temp 2-component vector of float)
+0:15 vector swizzle ( temp 2-component vector of uint)
+0:15 threadId: direct index for structure ( temp 2-component vector of uint)
+0:15 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Sequence
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 1 (const int)
+0:16 Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 'storeTemp' ( temp 4-component vector of float)
+0:16 color: direct index for structure ( temp 4-component vector of float)
+0:16 'data' ( temp structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId})
+0:16 Constant:
+0:16 0 (const int)
+0:16 imageStore ( temp void)
+0:16 'outtx' (layout( rgba32f) uniform image2D)
+0:16 Convert float to uint ( temp 2-component vector of uint)
+0:16 'coord' ( temp 2-component vector of float)
+0:16 'storeTemp' ( temp 4-component vector of float)
+0:16 'storeTemp' ( temp 4-component vector of float)
+0:18 move second child to first child ( temp 4-component vector of float)
+0:18 indirect index (layout( row_major std430) buffer 4-component vector of float)
+0:18 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of float)
+0:18 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:18 Constant:
+0:18 0 (const uint)
+0:18 Convert float to uint ( temp uint)
+0:18 direct index ( temp float)
+0:18 'coord' ( temp 2-component vector of float)
+0:18 Constant:
+0:18 0 (const int)
+0:18 indirect index (layout( row_major std430) buffer 4-component vector of float)
+0:18 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of float)
+0:18 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:18 Constant:
+0:18 0 (const uint)
+0:18 Convert float to uint ( temp uint)
+0:18 direct index ( temp float)
+0:18 'coord' ( temp 2-component vector of float)
+0:18 Constant:
+0:18 1 (const int)
+0:13 Function Definition: main( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-component vector of uint)
+0:? 'nThreadId' ( temp 3-component vector of uint)
+0:? 'nThreadId' ( in 3-component vector of uint GlobalInvocationID)
+0:13 Function Call: @main(vu3; ( temp void)
+0:? 'nThreadId' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'outtx' (layout( rgba32f) uniform image2D)
+0:? 'csb' (layout( binding=1 row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of float color, temp 2-component vector of uint threadId} @data})
+0:? 'csb@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'rwsb' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
+0:? 'nThreadId' ( in 3-component vector of uint GlobalInvocationID)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 84
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 79
+ ExecutionMode 4 LocalSize 1 1 1
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vu3;"
+ Name 10 "nThreadId"
+ Name 16 "sb_t"
+ MemberName 16(sb_t) 0 "color"
+ MemberName 16(sb_t) 1 "threadId"
+ Name 18 "data"
+ Name 19 "sb_t"
+ MemberName 19(sb_t) 0 "color"
+ MemberName 19(sb_t) 1 "threadId"
+ Name 21 "csb"
+ MemberName 21(csb) 0 "@data"
+ Name 23 "csb"
+ Name 26 "csb@count"
+ MemberName 26(csb@count) 0 "@count"
+ Name 28 "csb@count"
+ Name 48 "coord"
+ Name 52 "storeTemp"
+ Name 57 "outtx"
+ Name 63 "rwsb"
+ MemberName 63(rwsb) 0 "@data"
+ Name 65 "rwsb"
+ Name 77 "nThreadId"
+ Name 79 "nThreadId"
+ Name 81 "param"
+ MemberDecorate 19(sb_t) 0 Offset 0
+ MemberDecorate 19(sb_t) 1 Offset 16
+ Decorate 20 ArrayStride 32
+ MemberDecorate 21(csb) 0 Offset 0
+ Decorate 21(csb) BufferBlock
+ Decorate 23(csb) DescriptorSet 0
+ Decorate 23(csb) Binding 1
+ MemberDecorate 26(csb@count) 0 Offset 0
+ Decorate 26(csb@count) BufferBlock
+ Decorate 28(csb@count) DescriptorSet 0
+ Decorate 57(outtx) DescriptorSet 0
+ Decorate 62 ArrayStride 16
+ MemberDecorate 63(rwsb) 0 Offset 0
+ Decorate 63(rwsb) BufferBlock
+ Decorate 65(rwsb) DescriptorSet 0
+ Decorate 79(nThreadId) BuiltIn GlobalInvocationId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 9: TypeFunction 2 8(ptr)
+ 13: TypeFloat 32
+ 14: TypeVector 13(float) 4
+ 15: TypeVector 6(int) 2
+ 16(sb_t): TypeStruct 14(fvec4) 15(ivec2)
+ 17: TypePointer Function 16(sb_t)
+ 19(sb_t): TypeStruct 14(fvec4) 15(ivec2)
+ 20: TypeRuntimeArray 19(sb_t)
+ 21(csb): TypeStruct 20
+ 22: TypePointer Uniform 21(csb)
+ 23(csb): 22(ptr) Variable Uniform
+ 24: TypeInt 32 1
+ 25: 24(int) Constant 0
+ 26(csb@count): TypeStruct 24(int)
+ 27: TypePointer Uniform 26(csb@count)
+ 28(csb@count): 27(ptr) Variable Uniform
+ 29: TypePointer Uniform 24(int)
+ 31: 24(int) Constant 4294967295
+ 32: 6(int) Constant 1
+ 33: 6(int) Constant 0
+ 36: TypePointer Uniform 19(sb_t)
+ 40: TypePointer Function 14(fvec4)
+ 43: 24(int) Constant 1
+ 44: TypePointer Function 15(ivec2)
+ 46: TypeVector 13(float) 2
+ 47: TypePointer Function 46(fvec2)
+ 55: TypeImage 13(float) 2D nonsampled format:Rgba32f
+ 56: TypePointer UniformConstant 55
+ 57(outtx): 56(ptr) Variable UniformConstant
+ 62: TypeRuntimeArray 14(fvec4)
+ 63(rwsb): TypeStruct 62
+ 64: TypePointer Uniform 63(rwsb)
+ 65(rwsb): 64(ptr) Variable Uniform
+ 66: TypePointer Function 13(float)
+ 73: TypePointer Uniform 14(fvec4)
+ 78: TypePointer Input 7(ivec3)
+ 79(nThreadId): 78(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 77(nThreadId): 8(ptr) Variable Function
+ 81(param): 8(ptr) Variable Function
+ 80: 7(ivec3) Load 79(nThreadId)
+ Store 77(nThreadId) 80
+ 82: 7(ivec3) Load 77(nThreadId)
+ Store 81(param) 82
+ 83: 2 FunctionCall 11(@main(vu3;) 81(param)
+ Return
+ FunctionEnd
+ 11(@main(vu3;): 2 Function None 9
+ 10(nThreadId): 8(ptr) FunctionParameter
+ 12: Label
+ 18(data): 17(ptr) Variable Function
+ 48(coord): 47(ptr) Variable Function
+ 52(storeTemp): 40(ptr) Variable Function
+ 30: 29(ptr) AccessChain 28(csb@count) 25
+ 34: 6(int) AtomicIAdd 30 32 33 31
+ 35: 6(int) IAdd 34 31
+ 37: 36(ptr) AccessChain 23(csb) 25 35
+ 38: 19(sb_t) Load 37
+ 39: 14(fvec4) CompositeExtract 38 0
+ 41: 40(ptr) AccessChain 18(data) 25
+ Store 41 39
+ 42: 15(ivec2) CompositeExtract 38 1
+ 45: 44(ptr) AccessChain 18(data) 43
+ Store 45 42
+ 49: 44(ptr) AccessChain 18(data) 43
+ 50: 15(ivec2) Load 49
+ 51: 46(fvec2) ConvertUToF 50
+ Store 48(coord) 51
+ 53: 40(ptr) AccessChain 18(data) 25
+ 54: 14(fvec4) Load 53
+ Store 52(storeTemp) 54
+ 58: 55 Load 57(outtx)
+ 59: 46(fvec2) Load 48(coord)
+ 60: 15(ivec2) ConvertFToU 59
+ 61: 14(fvec4) Load 52(storeTemp)
+ ImageWrite 58 60 61
+ 67: 66(ptr) AccessChain 48(coord) 33
+ 68: 13(float) Load 67
+ 69: 6(int) ConvertFToU 68
+ 70: 66(ptr) AccessChain 48(coord) 32
+ 71: 13(float) Load 70
+ 72: 6(int) ConvertFToU 71
+ 74: 73(ptr) AccessChain 65(rwsb) 25 72
+ 75: 14(fvec4) Load 74
+ 76: 73(ptr) AccessChain 65(rwsb) 25 69
+ Store 76 75
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out
index 8ed27f68175..e5e68f11c53 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out
@@ -1,5 +1,5 @@
hlsl.structbuffer.fn.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: get(block--vu4[0]1;u1; ( temp 4-component vector of uint)
@@ -17,6 +17,7 @@ gl_FragCoord origin is upper left
0:10 Function Definition: set(block--vu4[0]1;u1;vu4; ( temp void)
0:10 Function Parameters:
0:10 'sb' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:10 'sb@count' ( buffer block{layout( row_major std430) buffer int @count})
0:10 'bufferOffset' ( in uint)
0:10 'data' ( in 4-component vector of uint)
0:? Sequence
@@ -34,6 +35,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:21 Function Call: set(block--vu4[0]1;u1;vu4; ( temp void)
0:21 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:21 'sbuf2@count' ( buffer block{layout( row_major std430) buffer int @count})
0:21 Constant:
0:21 2 (const uint)
0:21 Function Call: get(block--vu4[0]1;u1; ( temp 4-component vector of uint)
@@ -51,7 +53,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:20 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:20 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:20 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -59,15 +61,16 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf2@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf3' (layout( binding=12 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 3-component vector of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: get(block--vu4[0]1;u1; ( temp 4-component vector of uint)
@@ -85,6 +88,7 @@ gl_FragCoord origin is upper left
0:10 Function Definition: set(block--vu4[0]1;u1;vu4; ( temp void)
0:10 Function Parameters:
0:10 'sb' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:10 'sb@count' ( buffer block{layout( row_major std430) buffer int @count})
0:10 'bufferOffset' ( in uint)
0:10 'data' ( in 4-component vector of uint)
0:? Sequence
@@ -102,6 +106,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:21 Function Call: set(block--vu4[0]1;u1;vu4; ( temp void)
0:21 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:21 'sbuf2@count' ( buffer block{layout( row_major std430) buffer int @count})
0:21 Constant:
0:21 2 (const uint)
0:21 Function Call: get(block--vu4[0]1;u1; ( temp 4-component vector of uint)
@@ -119,7 +124,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:20 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:20 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:20 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -127,19 +132,21 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf2@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf3' (layout( binding=12 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 3-component vector of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 71
+// Generated by (magic number): 80002
+// Id's are bound by 83
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 59 62
+ EntryPoint Fragment 4 "main" 68 71
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 ""
MemberName 9 0 "@data"
@@ -148,119 +155,148 @@ gl_FragCoord origin is upper left
Name 14 "bufferOffset"
Name 18 ""
MemberName 18 0 "@data"
- Name 25 "set(block--vu4[0]1;u1;vu4;"
- Name 22 "sb"
- Name 23 "bufferOffset"
- Name 24 "data"
- Name 31 "@main(u1;"
- Name 30 "pos"
- Name 44 "sbuf2"
- Name 46 "sbuf"
- Name 48 "param"
- Name 50 "param"
- Name 51 "param"
- Name 57 "pos"
- Name 59 "pos"
- Name 62 "@entryPointOutput"
- Name 63 "param"
- Name 68 "sbuf3"
- MemberName 68(sbuf3) 0 "@data"
- Name 70 "sbuf3"
+ Name 21 ""
+ MemberName 21 0 "@count"
+ Name 29 "set(block--vu4[0]1;u1;vu4;"
+ Name 25 "sb"
+ Name 26 "sb@count"
+ Name 27 "bufferOffset"
+ Name 28 "data"
+ Name 35 "@main(u1;"
+ Name 34 "pos"
+ Name 47 "sbuf2"
+ Name 49 "sbuf2@count"
+ Name 52 "sbuf"
+ Name 54 "param"
+ Name 55 "param"
+ Name 57 "param"
+ Name 58 "param"
+ Name 59 "param"
+ Name 60 "param"
+ Name 66 "pos"
+ Name 68 "pos"
+ Name 71 "@entryPointOutput"
+ Name 72 "param"
+ Name 75 "sbuf2@count"
+ MemberName 75(sbuf2@count) 0 "@count"
+ Name 77 "sbuf2@count"
+ Name 80 "sbuf3"
+ MemberName 80(sbuf3) 0 "@data"
+ Name 82 "sbuf3"
Decorate 8 ArrayStride 16
MemberDecorate 9 0 NonWritable
MemberDecorate 9 0 Offset 0
Decorate 9 BufferBlock
+ Decorate 13(sb) NonWritable
Decorate 17 ArrayStride 16
MemberDecorate 18 0 Offset 0
Decorate 18 BufferBlock
- Decorate 44(sbuf2) DescriptorSet 0
- Decorate 46(sbuf) DescriptorSet 0
- Decorate 46(sbuf) Binding 10
- Decorate 59(pos) Location 0
- Decorate 62(@entryPointOutput) Location 0
- Decorate 67 ArrayStride 16
- MemberDecorate 68(sbuf3) 0 NonWritable
- MemberDecorate 68(sbuf3) 0 Offset 0
- Decorate 68(sbuf3) BufferBlock
- Decorate 70(sbuf3) DescriptorSet 0
- Decorate 70(sbuf3) Binding 12
+ Decorate 21 BufferBlock
+ Decorate 47(sbuf2) DescriptorSet 0
+ Decorate 49(sbuf2@count) DescriptorSet 0
+ Decorate 52(sbuf) DescriptorSet 0
+ Decorate 52(sbuf) Binding 10
+ Decorate 68(pos) Flat
+ Decorate 68(pos) Location 0
+ Decorate 71(@entryPointOutput) Location 0
+ MemberDecorate 75(sbuf2@count) 0 Offset 0
+ Decorate 75(sbuf2@count) BufferBlock
+ Decorate 77(sbuf2@count) DescriptorSet 0
+ Decorate 79 ArrayStride 16
+ MemberDecorate 80(sbuf3) 0 NonWritable
+ MemberDecorate 80(sbuf3) 0 Offset 0
+ Decorate 80(sbuf3) BufferBlock
+ Decorate 82(sbuf3) DescriptorSet 0
+ Decorate 82(sbuf3) Binding 12
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypeVector 6(int) 4
8: TypeRuntimeArray 7(ivec4)
9: TypeStruct 8
- 10: TypePointer Uniform 9(struct)
+ 10: TypePointer Function 9(struct)
11: TypePointer Function 6(int)
12: TypeFunction 7(ivec4) 10(ptr) 11(ptr)
17: TypeRuntimeArray 7(ivec4)
18: TypeStruct 17
- 19: TypePointer Uniform 18(struct)
- 20: TypePointer Function 7(ivec4)
- 21: TypeFunction 2 19(ptr) 11(ptr) 20(ptr)
- 27: TypeFloat 32
- 28: TypeVector 27(float) 4
- 29: TypeFunction 28(fvec4) 11(ptr)
- 33: TypeInt 32 1
- 34: 33(int) Constant 0
- 36: TypePointer Uniform 7(ivec4)
- 44(sbuf2): 19(ptr) Variable Uniform
- 45: 6(int) Constant 2
- 46(sbuf): 10(ptr) Variable Uniform
- 47: 6(int) Constant 3
- 53: 27(float) Constant 0
- 54: 28(fvec4) ConstantComposite 53 53 53 53
- 58: TypePointer Input 6(int)
- 59(pos): 58(ptr) Variable Input
- 61: TypePointer Output 28(fvec4)
-62(@entryPointOutput): 61(ptr) Variable Output
- 66: TypeVector 6(int) 3
- 67: TypeRuntimeArray 66(ivec3)
- 68(sbuf3): TypeStruct 67
- 69: TypePointer Uniform 68(sbuf3)
- 70(sbuf3): 69(ptr) Variable Uniform
+ 19: TypePointer Function 18(struct)
+ 20: TypeInt 32 1
+ 21: TypeStruct 20(int)
+ 22: TypePointer Function 21(struct)
+ 23: TypePointer Function 7(ivec4)
+ 24: TypeFunction 2 19(ptr) 22(ptr) 11(ptr) 23(ptr)
+ 31: TypeFloat 32
+ 32: TypeVector 31(float) 4
+ 33: TypeFunction 32(fvec4) 11(ptr)
+ 37: 20(int) Constant 0
+ 46: TypePointer Uniform 18(struct)
+ 47(sbuf2): 46(ptr) Variable Uniform
+ 48: TypePointer Uniform 21(struct)
+ 49(sbuf2@count): 48(ptr) Variable Uniform
+ 50: 6(int) Constant 2
+ 51: TypePointer Uniform 9(struct)
+ 52(sbuf): 51(ptr) Variable Uniform
+ 53: 6(int) Constant 3
+ 62: 31(float) Constant 0
+ 63: 32(fvec4) ConstantComposite 62 62 62 62
+ 67: TypePointer Input 6(int)
+ 68(pos): 67(ptr) Variable Input
+ 70: TypePointer Output 32(fvec4)
+71(@entryPointOutput): 70(ptr) Variable Output
+ 75(sbuf2@count): TypeStruct 20(int)
+ 76: TypePointer Uniform 75(sbuf2@count)
+ 77(sbuf2@count): 76(ptr) Variable Uniform
+ 78: TypeVector 6(int) 3
+ 79: TypeRuntimeArray 78(ivec3)
+ 80(sbuf3): TypeStruct 79
+ 81: TypePointer Uniform 80(sbuf3)
+ 82(sbuf3): 81(ptr) Variable Uniform
4(main): 2 Function None 3
5: Label
- 57(pos): 11(ptr) Variable Function
- 63(param): 11(ptr) Variable Function
- 60: 6(int) Load 59(pos)
- Store 57(pos) 60
- 64: 6(int) Load 57(pos)
- Store 63(param) 64
- 65: 28(fvec4) FunctionCall 31(@main(u1;) 63(param)
- Store 62(@entryPointOutput) 65
+ 66(pos): 11(ptr) Variable Function
+ 72(param): 11(ptr) Variable Function
+ 69: 6(int) Load 68(pos)
+ Store 66(pos) 69
+ 73: 6(int) Load 66(pos)
+ Store 72(param) 73
+ 74: 32(fvec4) FunctionCall 35(@main(u1;) 72(param)
+ Store 71(@entryPointOutput) 74
Return
FunctionEnd
15(get(block--vu4[0]1;u1;): 7(ivec4) Function None 12
13(sb): 10(ptr) FunctionParameter
14(bufferOffset): 11(ptr) FunctionParameter
16: Label
- 35: 6(int) Load 14(bufferOffset)
- 37: 36(ptr) AccessChain 13(sb) 34 35
- 38: 7(ivec4) Load 37
- ReturnValue 38
+ 38: 6(int) Load 14(bufferOffset)
+ 39: 23(ptr) AccessChain 13(sb) 37 38
+ 40: 7(ivec4) Load 39
+ ReturnValue 40
FunctionEnd
-25(set(block--vu4[0]1;u1;vu4;): 2 Function None 21
- 22(sb): 19(ptr) FunctionParameter
-23(bufferOffset): 11(ptr) FunctionParameter
- 24(data): 20(ptr) FunctionParameter
- 26: Label
- 41: 6(int) Load 23(bufferOffset)
- 42: 7(ivec4) Load 24(data)
- 43: 36(ptr) AccessChain 22(sb) 34 41
- Store 43 42
+29(set(block--vu4[0]1;u1;vu4;): 2 Function None 24
+ 25(sb): 19(ptr) FunctionParameter
+ 26(sb@count): 22(ptr) FunctionParameter
+27(bufferOffset): 11(ptr) FunctionParameter
+ 28(data): 23(ptr) FunctionParameter
+ 30: Label
+ 43: 6(int) Load 27(bufferOffset)
+ 44: 7(ivec4) Load 28(data)
+ 45: 23(ptr) AccessChain 25(sb) 37 43
+ Store 45 44
Return
FunctionEnd
- 31(@main(u1;): 28(fvec4) Function None 29
- 30(pos): 11(ptr) FunctionParameter
- 32: Label
- 48(param): 11(ptr) Variable Function
- 50(param): 11(ptr) Variable Function
- 51(param): 20(ptr) Variable Function
- Store 48(param) 47
- 49: 7(ivec4) FunctionCall 15(get(block--vu4[0]1;u1;) 46(sbuf) 48(param)
- Store 50(param) 45
- Store 51(param) 49
- 52: 2 FunctionCall 25(set(block--vu4[0]1;u1;vu4;) 44(sbuf2) 50(param) 51(param)
- ReturnValue 54
+ 35(@main(u1;): 32(fvec4) Function None 33
+ 34(pos): 11(ptr) FunctionParameter
+ 36: Label
+ 54(param): 10(ptr) Variable Function
+ 55(param): 11(ptr) Variable Function
+ 57(param): 19(ptr) Variable Function
+ 58(param): 22(ptr) Variable Function
+ 59(param): 11(ptr) Variable Function
+ 60(param): 23(ptr) Variable Function
+ Store 55(param) 53
+ 56: 7(ivec4) FunctionCall 15(get(block--vu4[0]1;u1;) 54(param) 55(param)
+ Store 59(param) 50
+ Store 60(param) 56
+ 61: 2 FunctionCall 29(set(block--vu4[0]1;u1;vu4;) 57(param) 58(param) 59(param) 60(param)
+ ReturnValue 63
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn2.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn2.comp.out
new file mode 100644
index 00000000000..bb84b99c059
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn2.comp.out
@@ -0,0 +1,246 @@
+hlsl.structbuffer.fn2.comp
+Shader version: 500
+local_size = (256, 1, 1)
+0:? Sequence
+0:5 Function Definition: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint)
+0:5 Function Parameters:
+0:5 'loc' ( in uint)
+0:5 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:? Sequence
+0:6 Sequence
+0:6 move second child to first child ( temp 2-component vector of uint)
+0:6 'result' ( temp 2-component vector of uint)
+0:? Sequence
+0:6 move second child to first child ( temp int)
+0:6 'byteAddrTemp' ( temp int)
+0:6 right-shift ( temp int)
+0:6 'loc' ( in uint)
+0:6 Constant:
+0:6 2 (const int)
+0:? Construct vec2 ( temp 2-component vector of uint)
+0:6 indirect index ( temp float)
+0:6 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint)
+0:6 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:6 Constant:
+0:6 0 (const uint)
+0:6 'byteAddrTemp' ( temp int)
+0:6 indirect index ( temp float)
+0:6 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint)
+0:6 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:6 Constant:
+0:6 0 (const uint)
+0:6 add ( temp int)
+0:6 'byteAddrTemp' ( temp int)
+0:6 Constant:
+0:6 1 (const int)
+0:7 Branch: Return with expression
+0:7 'result' ( temp 2-component vector of uint)
+0:12 Function Definition: @main(u1; ( temp void)
+0:12 Function Parameters:
+0:12 'dispatchId' ( in uint)
+0:? Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp 2-component vector of uint)
+0:13 'result' ( temp 2-component vector of uint)
+0:13 Function Call: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint)
+0:13 'dispatchId' ( in uint)
+0:13 'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:14 Sequence
+0:14 imageStore ( temp void)
+0:14 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
+0:14 'dispatchId' ( in uint)
+0:14 'result' ( temp 2-component vector of uint)
+0:14 'result' ( temp 2-component vector of uint)
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp uint)
+0:? 'dispatchId' ( temp uint)
+0:? 'dispatchId' ( in uint GlobalInvocationID)
+0:12 Function Call: @main(u1; ( temp void)
+0:? 'dispatchId' ( temp uint)
+0:? Linker Objects
+0:? 'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:? 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
+0:? 'dispatchId' ( in uint GlobalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (256, 1, 1)
+0:? Sequence
+0:5 Function Definition: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint)
+0:5 Function Parameters:
+0:5 'loc' ( in uint)
+0:5 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:? Sequence
+0:6 Sequence
+0:6 move second child to first child ( temp 2-component vector of uint)
+0:6 'result' ( temp 2-component vector of uint)
+0:? Sequence
+0:6 move second child to first child ( temp int)
+0:6 'byteAddrTemp' ( temp int)
+0:6 right-shift ( temp int)
+0:6 'loc' ( in uint)
+0:6 Constant:
+0:6 2 (const int)
+0:? Construct vec2 ( temp 2-component vector of uint)
+0:6 indirect index ( temp float)
+0:6 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint)
+0:6 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:6 Constant:
+0:6 0 (const uint)
+0:6 'byteAddrTemp' ( temp int)
+0:6 indirect index ( temp float)
+0:6 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint)
+0:6 'buffer' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:6 Constant:
+0:6 0 (const uint)
+0:6 add ( temp int)
+0:6 'byteAddrTemp' ( temp int)
+0:6 Constant:
+0:6 1 (const int)
+0:7 Branch: Return with expression
+0:7 'result' ( temp 2-component vector of uint)
+0:12 Function Definition: @main(u1; ( temp void)
+0:12 Function Parameters:
+0:12 'dispatchId' ( in uint)
+0:? Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp 2-component vector of uint)
+0:13 'result' ( temp 2-component vector of uint)
+0:13 Function Call: testLoad(u1;block--u1[0]1; ( temp 2-component vector of uint)
+0:13 'dispatchId' ( in uint)
+0:13 'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:14 Sequence
+0:14 imageStore ( temp void)
+0:14 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
+0:14 'dispatchId' ( in uint)
+0:14 'result' ( temp 2-component vector of uint)
+0:14 'result' ( temp 2-component vector of uint)
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 move second child to first child ( temp uint)
+0:? 'dispatchId' ( temp uint)
+0:? 'dispatchId' ( in uint GlobalInvocationID)
+0:12 Function Call: @main(u1; ( temp void)
+0:? 'dispatchId' ( temp uint)
+0:? Linker Objects
+0:? 'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:? 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
+0:? 'dispatchId' ( in uint GlobalInvocationID)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 62
+
+ Capability Shader
+ Capability ImageBuffer
+ Capability StorageImageExtendedFormats
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 57
+ ExecutionMode 4 LocalSize 256 1 1
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 ""
+ MemberName 9 0 "@data"
+ Name 15 "testLoad(u1;block--u1[0]1;"
+ Name 13 "loc"
+ Name 14 "buffer"
+ Name 19 "@main(u1;"
+ Name 18 "dispatchId"
+ Name 22 "result"
+ Name 25 "byteAddrTemp"
+ Name 42 "result"
+ Name 44 "g_input"
+ Name 45 "param"
+ Name 47 "param"
+ Name 51 "g_output"
+ Name 55 "dispatchId"
+ Name 57 "dispatchId"
+ Name 59 "param"
+ Decorate 8 ArrayStride 4
+ MemberDecorate 9 0 NonWritable
+ MemberDecorate 9 0 Offset 0
+ Decorate 9 BufferBlock
+ Decorate 14(buffer) NonWritable
+ Decorate 44(g_input) DescriptorSet 0
+ Decorate 44(g_input) Binding 0
+ Decorate 51(g_output) DescriptorSet 0
+ Decorate 51(g_output) Binding 1
+ Decorate 57(dispatchId) BuiltIn GlobalInvocationId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 8: TypeRuntimeArray 6(int)
+ 9: TypeStruct 8
+ 10: TypePointer Function 9(struct)
+ 11: TypeVector 6(int) 2
+ 12: TypeFunction 11(ivec2) 7(ptr) 10(ptr)
+ 17: TypeFunction 2 7(ptr)
+ 21: TypePointer Function 11(ivec2)
+ 23: TypeInt 32 1
+ 24: TypePointer Function 23(int)
+ 27: 23(int) Constant 2
+ 29: 23(int) Constant 0
+ 34: 23(int) Constant 1
+ 43: TypePointer Uniform 9(struct)
+ 44(g_input): 43(ptr) Variable Uniform
+ 49: TypeImage 6(int) Buffer nonsampled format:Rg32ui
+ 50: TypePointer UniformConstant 49
+ 51(g_output): 50(ptr) Variable UniformConstant
+ 56: TypePointer Input 6(int)
+ 57(dispatchId): 56(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 55(dispatchId): 7(ptr) Variable Function
+ 59(param): 7(ptr) Variable Function
+ 58: 6(int) Load 57(dispatchId)
+ Store 55(dispatchId) 58
+ 60: 6(int) Load 55(dispatchId)
+ Store 59(param) 60
+ 61: 2 FunctionCall 19(@main(u1;) 59(param)
+ Return
+ FunctionEnd
+15(testLoad(u1;block--u1[0]1;): 11(ivec2) Function None 12
+ 13(loc): 7(ptr) FunctionParameter
+ 14(buffer): 10(ptr) FunctionParameter
+ 16: Label
+ 22(result): 21(ptr) Variable Function
+25(byteAddrTemp): 24(ptr) Variable Function
+ 26: 6(int) Load 13(loc)
+ 28: 23(int) ShiftRightLogical 26 27
+ Store 25(byteAddrTemp) 28
+ 30: 23(int) Load 25(byteAddrTemp)
+ 31: 7(ptr) AccessChain 14(buffer) 29 30
+ 32: 6(int) Load 31
+ 33: 23(int) Load 25(byteAddrTemp)
+ 35: 23(int) IAdd 33 34
+ 36: 7(ptr) AccessChain 14(buffer) 29 35
+ 37: 6(int) Load 36
+ 38: 11(ivec2) CompositeConstruct 32 37
+ Store 22(result) 38
+ 39: 11(ivec2) Load 22(result)
+ ReturnValue 39
+ FunctionEnd
+ 19(@main(u1;): 2 Function None 17
+ 18(dispatchId): 7(ptr) FunctionParameter
+ 20: Label
+ 42(result): 21(ptr) Variable Function
+ 45(param): 7(ptr) Variable Function
+ 47(param): 10(ptr) Variable Function
+ 46: 6(int) Load 18(dispatchId)
+ Store 45(param) 46
+ 48: 11(ivec2) FunctionCall 15(testLoad(u1;block--u1[0]1;) 45(param) 47(param)
+ Store 42(result) 48
+ 52: 49 Load 51(g_output)
+ 53: 6(int) Load 18(dispatchId)
+ 54: 11(ivec2) Load 42(result)
+ ImageWrite 52 53 54
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.frag.out
index 3c8b1146a7f..187a41bbefc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.frag.out
@@ -1,5 +1,5 @@
hlsl.structbuffer.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -80,7 +80,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -89,13 +89,13 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:? 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -176,7 +176,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -185,17 +185,18 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:? 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 94
+// Generated by (magic number): 80002
+// Id's are bound by 96
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 87 90
+ EntryPoint Fragment 4 "main" 89 92
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 12 "@main(u1;"
Name 11 "pos"
@@ -211,20 +212,17 @@ gl_FragCoord origin is upper left
Name 21 "sbuf"
MemberName 21(sbuf) 0 "@data"
Name 23 "sbuf"
- Name 40 "size"
- Name 42 "stride"
- Name 57 "sbuf2"
- MemberName 57(sbuf2) 0 "@data"
+ Name 43 "size"
+ Name 45 "stride"
Name 59 "sbuf2"
- Name 85 "pos"
+ MemberName 59(sbuf2) 0 "@data"
+ Name 61 "sbuf2"
Name 87 "pos"
- Name 90 "@entryPointOutput"
- Name 91 "param"
- MemberDecorate 19(sb_t) 0 NonWritable
+ Name 89 "pos"
+ Name 92 "@entryPointOutput"
+ Name 93 "param"
MemberDecorate 19(sb_t) 0 Offset 0
- MemberDecorate 19(sb_t) 1 NonWritable
MemberDecorate 19(sb_t) 1 Offset 12
- MemberDecorate 19(sb_t) 2 NonWritable
MemberDecorate 19(sb_t) 2 Offset 16
Decorate 20 ArrayStride 32
MemberDecorate 21(sbuf) 0 NonWritable
@@ -232,13 +230,14 @@ gl_FragCoord origin is upper left
Decorate 21(sbuf) BufferBlock
Decorate 23(sbuf) DescriptorSet 0
Decorate 23(sbuf) Binding 10
- Decorate 56 ArrayStride 4
- MemberDecorate 57(sbuf2) 0 NonWritable
- MemberDecorate 57(sbuf2) 0 Offset 0
- Decorate 57(sbuf2) BufferBlock
- Decorate 59(sbuf2) DescriptorSet 0
- Decorate 87(pos) Location 0
- Decorate 90(@entryPointOutput) Location 0
+ Decorate 58 ArrayStride 4
+ MemberDecorate 59(sbuf2) 0 NonWritable
+ MemberDecorate 59(sbuf2) 0 Offset 0
+ Decorate 59(sbuf2) BufferBlock
+ Decorate 61(sbuf2) DescriptorSet 0
+ Decorate 89(pos) Flat
+ Decorate 89(pos) Location 0
+ Decorate 92(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -260,41 +259,41 @@ gl_FragCoord origin is upper left
27: TypePointer Uniform 19(sb_t)
31: TypePointer Function 14(fvec3)
34: 24(int) Constant 1
- 35: TypePointer Function 15(bool)
- 38: 24(int) Constant 2
- 43: 6(int) Constant 32
- 45: TypePointer Uniform 6(int)
- 48: 6(int) Constant 0
- 53: TypePointer Uniform 14(fvec3)
- 56: TypeRuntimeArray 8(float)
- 57(sbuf2): TypeStruct 56
- 58: TypePointer Uniform 57(sbuf2)
- 59(sbuf2): 58(ptr) Variable Uniform
- 61: TypePointer Uniform 8(float)
- 66: 8(float) Constant 0
- 73: TypePointer Function 8(float)
- 86: TypePointer Input 6(int)
- 87(pos): 86(ptr) Variable Input
- 89: TypePointer Output 9(fvec4)
-90(@entryPointOutput): 89(ptr) Variable Output
+ 35: 6(int) Constant 0
+ 37: TypePointer Function 15(bool)
+ 40: 24(int) Constant 2
+ 46: 6(int) Constant 32
+ 48: TypePointer Uniform 6(int)
+ 55: TypePointer Uniform 14(fvec3)
+ 58: TypeRuntimeArray 8(float)
+ 59(sbuf2): TypeStruct 58
+ 60: TypePointer Uniform 59(sbuf2)
+ 61(sbuf2): 60(ptr) Variable Uniform
+ 63: TypePointer Uniform 8(float)
+ 68: 8(float) Constant 0
+ 75: TypePointer Function 8(float)
+ 88: TypePointer Input 6(int)
+ 89(pos): 88(ptr) Variable Input
+ 91: TypePointer Output 9(fvec4)
+92(@entryPointOutput): 91(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 85(pos): 7(ptr) Variable Function
- 91(param): 7(ptr) Variable Function
- 88: 6(int) Load 87(pos)
- Store 85(pos) 88
- 92: 6(int) Load 85(pos)
- Store 91(param) 92
- 93: 9(fvec4) FunctionCall 12(@main(u1;) 91(param)
- Store 90(@entryPointOutput) 93
+ 87(pos): 7(ptr) Variable Function
+ 93(param): 7(ptr) Variable Function
+ 90: 6(int) Load 89(pos)
+ Store 87(pos) 90
+ 94: 6(int) Load 87(pos)
+ Store 93(param) 94
+ 95: 9(fvec4) FunctionCall 12(@main(u1;) 93(param)
+ Store 92(@entryPointOutput) 95
Return
FunctionEnd
12(@main(u1;): 9(fvec4) Function None 10
11(pos): 7(ptr) FunctionParameter
13: Label
18(mydata): 17(ptr) Variable Function
- 40(size): 7(ptr) Variable Function
- 42(stride): 7(ptr) Variable Function
+ 43(size): 7(ptr) Variable Function
+ 45(stride): 7(ptr) Variable Function
26: 6(int) Load 11(pos)
28: 27(ptr) AccessChain 23(sbuf) 25 26
29: 19(sb_t) Load 28
@@ -302,46 +301,48 @@ gl_FragCoord origin is upper left
32: 31(ptr) AccessChain 18(mydata) 25
Store 32 30
33: 6(int) CompositeExtract 29 1
- 36: 35(ptr) AccessChain 18(mydata) 34
- Store 36 33
- 37: 6(int) CompositeExtract 29 2
- 39: 35(ptr) AccessChain 18(mydata) 38
- Store 39 37
- 41: 24(int) ArrayLength 23(sbuf) 0
- Store 40(size) 41
- Store 42(stride) 43
- 44: 6(int) Load 11(pos)
- 46: 45(ptr) AccessChain 23(sbuf) 25 44 34
- 47: 6(int) Load 46
- 49: 15(bool) INotEqual 47 48
- SelectionMerge 51 None
- BranchConditional 49 50 72
- 50: Label
- 52: 6(int) Load 11(pos)
- 54: 53(ptr) AccessChain 23(sbuf) 25 52 25
- 55: 14(fvec3) Load 54
- 60: 6(int) Load 11(pos)
- 62: 61(ptr) AccessChain 59(sbuf2) 25 60
- 63: 8(float) Load 62
- 64: 14(fvec3) CompositeConstruct 63 63 63
- 65: 14(fvec3) FAdd 55 64
- 67: 8(float) CompositeExtract 65 0
- 68: 8(float) CompositeExtract 65 1
- 69: 8(float) CompositeExtract 65 2
- 70: 9(fvec4) CompositeConstruct 67 68 69 66
- ReturnValue 70
- 72: Label
- 74: 73(ptr) AccessChain 18(mydata) 25 48
- 75: 8(float) Load 74
- 76: 6(int) Load 40(size)
- 77: 8(float) ConvertUToF 76
- 78: 8(float) FAdd 75 77
- 79: 6(int) Load 42(stride)
- 80: 8(float) ConvertUToF 79
- 81: 8(float) FAdd 78 80
- 82: 9(fvec4) CompositeConstruct 81 81 81 81
- ReturnValue 82
- 51: Label
- 84: 9(fvec4) Undef
- ReturnValue 84
+ 36: 15(bool) INotEqual 33 35
+ 38: 37(ptr) AccessChain 18(mydata) 34
+ Store 38 36
+ 39: 6(int) CompositeExtract 29 2
+ 41: 15(bool) INotEqual 39 35
+ 42: 37(ptr) AccessChain 18(mydata) 40
+ Store 42 41
+ 44: 24(int) ArrayLength 23(sbuf) 0
+ Store 43(size) 44
+ Store 45(stride) 46
+ 47: 6(int) Load 11(pos)
+ 49: 48(ptr) AccessChain 23(sbuf) 25 47 34
+ 50: 6(int) Load 49
+ 51: 15(bool) INotEqual 50 35
+ SelectionMerge 53 None
+ BranchConditional 51 52 74
+ 52: Label
+ 54: 6(int) Load 11(pos)
+ 56: 55(ptr) AccessChain 23(sbuf) 25 54 25
+ 57: 14(fvec3) Load 56
+ 62: 6(int) Load 11(pos)
+ 64: 63(ptr) AccessChain 61(sbuf2) 25 62
+ 65: 8(float) Load 64
+ 66: 14(fvec3) CompositeConstruct 65 65 65
+ 67: 14(fvec3) FAdd 57 66
+ 69: 8(float) CompositeExtract 67 0
+ 70: 8(float) CompositeExtract 67 1
+ 71: 8(float) CompositeExtract 67 2
+ 72: 9(fvec4) CompositeConstruct 69 70 71 68
+ ReturnValue 72
+ 74: Label
+ 76: 75(ptr) AccessChain 18(mydata) 25 35
+ 77: 8(float) Load 76
+ 78: 6(int) Load 43(size)
+ 79: 8(float) ConvertUToF 78
+ 80: 8(float) FAdd 77 79
+ 81: 6(int) Load 45(stride)
+ 82: 8(float) ConvertUToF 81
+ 83: 8(float) FAdd 80 82
+ 84: 9(fvec4) CompositeConstruct 83 83 83 83
+ ReturnValue 84
+ 53: Label
+ 86: 9(fvec4) Undef
+ ReturnValue 86
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.incdec.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.incdec.frag.out
new file mode 100644
index 00000000000..a63fcbe5806
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.incdec.frag.out
@@ -0,0 +1,324 @@
+hlsl.structbuffer.incdec.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(u1; ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:7 'pos' ( in uint)
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of uint)
+0:8 'result' ( temp 4-component vector of uint)
+0:8 Constant:
+0:8 0 (const uint)
+0:8 0 (const uint)
+0:8 0 (const uint)
+0:8 0 (const uint)
+0:10 direct index (layout( row_major std430) buffer 4-component vector of uint)
+0:10 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint)
+0:10 'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 Constant:
+0:10 7 (const int)
+0:11 direct index (layout( row_major std430) buffer 4-component vector of uint)
+0:11 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint)
+0:11 'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:11 Constant:
+0:11 0 (const uint)
+0:11 Constant:
+0:11 7 (const int)
+0:13 move second child to first child ( temp 4-component vector of uint)
+0:13 direct index (layout( row_major std430) buffer 4-component vector of uint)
+0:13 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint)
+0:13 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 Constant:
+0:13 5 (const int)
+0:13 Constant:
+0:13 2 (const uint)
+0:13 2 (const uint)
+0:13 2 (const uint)
+0:13 2 (const uint)
+0:15 Sequence
+0:15 move second child to first child ( temp uint)
+0:15 'c1' ( temp uint)
+0:15 AtomicAdd ( temp uint)
+0:15 @count: direct index for structure ( temp int)
+0:15 'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 1 (const int)
+0:16 Sequence
+0:16 move second child to first child ( temp uint)
+0:16 'c2' ( temp uint)
+0:16 add ( temp uint)
+0:16 AtomicAdd ( temp uint)
+0:16 @count: direct index for structure ( temp int)
+0:16 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 -1 (const int)
+0:16 Constant:
+0:16 -1 (const int)
+0:18 Branch: Return with expression
+0:? Construct vec4 ( temp 4-component vector of float)
+0:18 Convert uint to float ( temp float)
+0:18 direct index ( temp uint)
+0:18 'result' ( temp 4-component vector of uint)
+0:18 Constant:
+0:18 0 (const int)
+0:18 Convert uint to float ( temp float)
+0:18 direct index ( temp uint)
+0:18 'result' ( temp 4-component vector of uint)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Convert uint to float ( temp float)
+0:18 'c1' ( temp uint)
+0:18 Convert uint to float ( temp float)
+0:18 'c2' ( temp uint)
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 move second child to first child ( temp uint)
+0:? 'pos' ( temp uint)
+0:? 'pos' (layout( location=0) flat in uint)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main(u1; ( temp 4-component vector of float)
+0:? 'pos' ( temp uint)
+0:? Linker Objects
+0:? 'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' (layout( location=0) flat in uint)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(u1; ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:7 'pos' ( in uint)
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of uint)
+0:8 'result' ( temp 4-component vector of uint)
+0:8 Constant:
+0:8 0 (const uint)
+0:8 0 (const uint)
+0:8 0 (const uint)
+0:8 0 (const uint)
+0:10 direct index (layout( row_major std430) buffer 4-component vector of uint)
+0:10 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint)
+0:10 'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 Constant:
+0:10 7 (const int)
+0:11 direct index (layout( row_major std430) buffer 4-component vector of uint)
+0:11 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint)
+0:11 'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:11 Constant:
+0:11 0 (const uint)
+0:11 Constant:
+0:11 7 (const int)
+0:13 move second child to first child ( temp 4-component vector of uint)
+0:13 direct index (layout( row_major std430) buffer 4-component vector of uint)
+0:13 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint)
+0:13 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 Constant:
+0:13 5 (const int)
+0:13 Constant:
+0:13 2 (const uint)
+0:13 2 (const uint)
+0:13 2 (const uint)
+0:13 2 (const uint)
+0:15 Sequence
+0:15 move second child to first child ( temp uint)
+0:15 'c1' ( temp uint)
+0:15 AtomicAdd ( temp uint)
+0:15 @count: direct index for structure ( temp int)
+0:15 'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 1 (const int)
+0:16 Sequence
+0:16 move second child to first child ( temp uint)
+0:16 'c2' ( temp uint)
+0:16 add ( temp uint)
+0:16 AtomicAdd ( temp uint)
+0:16 @count: direct index for structure ( temp int)
+0:16 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 -1 (const int)
+0:16 Constant:
+0:16 -1 (const int)
+0:18 Branch: Return with expression
+0:? Construct vec4 ( temp 4-component vector of float)
+0:18 Convert uint to float ( temp float)
+0:18 direct index ( temp uint)
+0:18 'result' ( temp 4-component vector of uint)
+0:18 Constant:
+0:18 0 (const int)
+0:18 Convert uint to float ( temp float)
+0:18 direct index ( temp uint)
+0:18 'result' ( temp 4-component vector of uint)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Convert uint to float ( temp float)
+0:18 'c1' ( temp uint)
+0:18 Convert uint to float ( temp float)
+0:18 'c2' ( temp uint)
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 move second child to first child ( temp uint)
+0:? 'pos' ( temp uint)
+0:? 'pos' (layout( location=0) flat in uint)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main(u1; ( temp 4-component vector of float)
+0:? 'pos' ( temp uint)
+0:? Linker Objects
+0:? 'sbuf_rw_i' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf_rw_i@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_rw_d' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
+0:? 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' (layout( location=0) flat in uint)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 70
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 63 66
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 12 "@main(u1;"
+ Name 11 "pos"
+ Name 16 "result"
+ Name 20 "sbuf_rw_i"
+ MemberName 20(sbuf_rw_i) 0 "@data"
+ Name 22 "sbuf_rw_i"
+ Name 26 "sbuf_rw_d"
+ Name 27 "sbuf_rw_nocounter"
+ Name 33 "c1"
+ Name 34 "sbuf_rw_i@count"
+ MemberName 34(sbuf_rw_i@count) 0 "@count"
+ Name 36 "sbuf_rw_i@count"
+ Name 42 "c2"
+ Name 43 "sbuf_rw_d@count"
+ Name 61 "pos"
+ Name 63 "pos"
+ Name 66 "@entryPointOutput"
+ Name 67 "param"
+ Decorate 19 ArrayStride 16
+ MemberDecorate 20(sbuf_rw_i) 0 Offset 0
+ Decorate 20(sbuf_rw_i) BufferBlock
+ Decorate 22(sbuf_rw_i) DescriptorSet 0
+ Decorate 26(sbuf_rw_d) DescriptorSet 0
+ Decorate 27(sbuf_rw_nocounter) DescriptorSet 0
+ MemberDecorate 34(sbuf_rw_i@count) 0 Offset 0
+ Decorate 34(sbuf_rw_i@count) BufferBlock
+ Decorate 36(sbuf_rw_i@count) DescriptorSet 0
+ Decorate 43(sbuf_rw_d@count) DescriptorSet 0
+ Decorate 63(pos) Flat
+ Decorate 63(pos) Location 0
+ Decorate 66(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 4
+ 10: TypeFunction 9(fvec4) 7(ptr)
+ 14: TypeVector 6(int) 4
+ 15: TypePointer Function 14(ivec4)
+ 17: 6(int) Constant 0
+ 18: 14(ivec4) ConstantComposite 17 17 17 17
+ 19: TypeRuntimeArray 14(ivec4)
+ 20(sbuf_rw_i): TypeStruct 19
+ 21: TypePointer Uniform 20(sbuf_rw_i)
+ 22(sbuf_rw_i): 21(ptr) Variable Uniform
+ 23: TypeInt 32 1
+ 24: 23(int) Constant 0
+ 25: 23(int) Constant 7
+ 26(sbuf_rw_d): 21(ptr) Variable Uniform
+27(sbuf_rw_nocounter): 21(ptr) Variable Uniform
+ 28: 23(int) Constant 5
+ 29: 6(int) Constant 2
+ 30: 14(ivec4) ConstantComposite 29 29 29 29
+ 31: TypePointer Uniform 14(ivec4)
+34(sbuf_rw_i@count): TypeStruct 23(int)
+ 35: TypePointer Uniform 34(sbuf_rw_i@count)
+36(sbuf_rw_i@count): 35(ptr) Variable Uniform
+ 37: TypePointer Uniform 23(int)
+ 39: 23(int) Constant 1
+ 40: 6(int) Constant 1
+43(sbuf_rw_d@count): 35(ptr) Variable Uniform
+ 45: 23(int) Constant 4294967295
+ 62: TypePointer Input 6(int)
+ 63(pos): 62(ptr) Variable Input
+ 65: TypePointer Output 9(fvec4)
+66(@entryPointOutput): 65(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 61(pos): 7(ptr) Variable Function
+ 67(param): 7(ptr) Variable Function
+ 64: 6(int) Load 63(pos)
+ Store 61(pos) 64
+ 68: 6(int) Load 61(pos)
+ Store 67(param) 68
+ 69: 9(fvec4) FunctionCall 12(@main(u1;) 67(param)
+ Store 66(@entryPointOutput) 69
+ Return
+ FunctionEnd
+ 12(@main(u1;): 9(fvec4) Function None 10
+ 11(pos): 7(ptr) FunctionParameter
+ 13: Label
+ 16(result): 15(ptr) Variable Function
+ 33(c1): 7(ptr) Variable Function
+ 42(c2): 7(ptr) Variable Function
+ Store 16(result) 18
+ 32: 31(ptr) AccessChain 27(sbuf_rw_nocounter) 24 28
+ Store 32 30
+ 38: 37(ptr) AccessChain 36(sbuf_rw_i@count) 24
+ 41: 6(int) AtomicIAdd 38 40 17 39
+ Store 33(c1) 41
+ 44: 37(ptr) AccessChain 43(sbuf_rw_d@count) 24
+ 46: 6(int) AtomicIAdd 44 40 17 45
+ 47: 6(int) IAdd 46 45
+ Store 42(c2) 47
+ 48: 7(ptr) AccessChain 16(result) 17
+ 49: 6(int) Load 48
+ 50: 8(float) ConvertUToF 49
+ 51: 7(ptr) AccessChain 16(result) 40
+ 52: 6(int) Load 51
+ 53: 8(float) ConvertUToF 52
+ 54: 6(int) Load 33(c1)
+ 55: 8(float) ConvertUToF 54
+ 56: 6(int) Load 42(c2)
+ 57: 8(float) ConvertUToF 56
+ 58: 9(fvec4) CompositeConstruct 50 53 55 57
+ ReturnValue 58
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out
index bfe4c39b669..87d50f052ff 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out
@@ -1,5 +1,5 @@
hlsl.structbuffer.rw.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -74,7 +74,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -83,13 +83,13 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -164,7 +164,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -173,10 +173,10 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 78
Capability Shader
@@ -184,6 +184,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 71 74
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 12 "@main(u1;"
Name 11 "pos"
@@ -212,6 +213,7 @@ gl_FragCoord origin is upper left
MemberDecorate 30(sbuf) 0 Offset 0
Decorate 30(sbuf) BufferBlock
Decorate 32(sbuf) DescriptorSet 0
+ Decorate 71(pos) Flat
Decorate 71(pos) Location 0
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
index e99bc435d0e..77c27443a24 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
@@ -1,5 +1,5 @@
hlsl.structbuffer.rwbyte.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -490,7 +490,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -498,13 +498,13 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main(u1; ( temp 4-component vector of float)
@@ -995,7 +995,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -1003,10 +1003,10 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 240
Capability Shader
@@ -1014,6 +1014,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 233 236
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 12 "@main(u1;"
Name 11 "pos"
@@ -1036,6 +1037,7 @@ gl_FragCoord origin is upper left
MemberDecorate 16(sbuf) 0 Offset 0
Decorate 16(sbuf) BufferBlock
Decorate 18(sbuf) DescriptorSet 0
+ Decorate 233(pos) Flat
Decorate 233(pos) Location 0
Decorate 236(@entryPointOutput) Location 0
2: TypeVoid
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structin.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structin.vert.out
index c621941e6e0..45304f52d53 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structin.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.structin.vert.out
@@ -1,15 +1,15 @@
hlsl.structin.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
-0:8 Function Definition: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 Function Definition: @main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Function Parameters:
0:8 'd' ( in 4-component vector of float)
-0:8 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 'e' ( in 4-component vector of float)
0:? Sequence
0:11 move second child to first child ( temp 4-component vector of float)
0:11 b: direct index for structure ( temp 4-component vector of float)
-0:11 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:11 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:11 Constant:
0:11 2 (const int)
0:11 add ( temp 4-component vector of float)
@@ -18,31 +18,66 @@ Shader version: 450
0:11 add ( temp 4-component vector of float)
0:11 direct index ( temp 4-component vector of float)
0:11 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( temp 4-component vector of float)
0:11 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Construct vec4 ( temp 4-component vector of float)
-0:11 Convert uint to float ( temp float)
-0:11 direct index ( temp uint)
-0:11 coord: direct index for structure ( temp 2-component vector of uint)
-0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
-0:11 Constant:
-0:11 1 (const int)
+0:11 direct index ( temp float)
+0:11 coord: direct index for structure ( temp 4-component vector of float)
+0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:11 Constant:
-0:11 0 (const int)
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
0:11 'd' ( in 4-component vector of float)
0:11 'e' ( in 4-component vector of float)
-0:13 Branch: Return with expression
-0:13 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:12 move second child to first child ( temp 4-component vector of float)
+0:12 coord: direct index for structure ( temp 4-component vector of float)
+0:12 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 1.000000
+0:12 1.000000
+0:12 1.000000
+0:12 1.000000
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 direct index ( temp 4-component vector of float)
+0:13 m: direct index for structure ( temp 2-element array of 4-component vector of float)
+0:13 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2.000000
+0:13 2.000000
+0:13 2.000000
+0:13 2.000000
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 direct index ( temp 4-component vector of float)
+0:14 m: direct index for structure ( temp 2-element array of 4-component vector of float)
+0:14 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 3.000000
+0:14 3.000000
+0:14 3.000000
+0:14 3.000000
+0:16 Branch: Return with expression
+0:16 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Function Definition: main( ( temp void)
0:8 Function Parameters:
0:? Sequence
@@ -53,96 +88,100 @@ Shader version: 450
0:8 move second child to first child ( temp 4-component vector of float)
0:8 direct index ( temp 4-component vector of float)
0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 0 (const int)
-0:? 'm[0]' (layout( location=1) in 4-component vector of float)
+0:? 'vi.m[0]' (layout( location=1) in 4-component vector of float)
0:8 move second child to first child ( temp 4-component vector of float)
0:8 direct index ( temp 4-component vector of float)
0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 1 (const int)
-0:? 'm[1]' (layout( location=2) in 4-component vector of float)
-0:8 move second child to first child ( temp 2-component vector of uint)
-0:8 coord: direct index for structure ( temp 2-component vector of uint)
-0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? 'vi.m[1]' (layout( location=2) in 4-component vector of float)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 coord: direct index for structure ( temp 4-component vector of float)
+0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 1 (const int)
-0:? 'coord' (layout( location=3) in 2-component vector of uint)
+0:? 'vi.coord' (layout( location=3) in 4-component vector of float)
0:8 move second child to first child ( temp 4-component vector of float)
0:8 b: direct index for structure ( temp 4-component vector of float)
-0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 2 (const int)
-0:? 'b' (layout( location=4) in 4-component vector of float)
+0:? 'vi.b' (layout( location=4) in 4-component vector of float)
0:8 move second child to first child ( temp 4-component vector of float)
0:? 'e' ( temp 4-component vector of float)
0:? 'e' (layout( location=5) in 4-component vector of float)
0:8 Sequence
-0:8 move second child to first child ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
-0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
-0:8 Function Call: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 move second child to first child ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:8 Function Call: @main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:? 'd' ( temp 4-component vector of float)
-0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:? 'e' ( temp 4-component vector of float)
-0:8 move second child to first child ( temp 2-element array of 4-component vector of float)
-0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:8 '@entryPointOutput' ( out structure Position{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
-0:8 Constant:
-0:8 0 (const int)
-0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.m[0]' (layout( location=0) out 4-component vector of float)
+0:8 direct index ( temp 4-component vector of float)
+0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:8 Constant:
+0:8 0 (const int)
0:8 Constant:
0:8 0 (const int)
-0:8 move second child to first child ( temp 2-component vector of uint)
-0:8 coord: direct index for structure ( temp 2-component vector of uint)
-0:8 '@entryPointOutput' ( out structure Position{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.m[1]' (layout( location=1) out 4-component vector of float)
+0:8 direct index ( temp 4-component vector of float)
+0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:8 Constant:
+0:8 0 (const int)
0:8 Constant:
0:8 1 (const int)
-0:8 coord: direct index for structure ( temp 2-component vector of uint)
-0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.coord' ( out 4-component vector of float Position)
+0:8 coord: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 1 (const int)
0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.b' (layout( location=2) smooth out 4-component vector of float)
0:8 b: direct index for structure ( temp 4-component vector of float)
-0:8 '@entryPointOutput' ( out structure Position{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
-0:8 Constant:
-0:8 2 (const int)
-0:8 b: direct index for structure ( temp 4-component vector of float)
-0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 2 (const int)
0:? Linker Objects
-0:? '@entryPointOutput' ( out structure Position{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? '@entryPointOutput.coord' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.m[0]' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.m[1]' (layout( location=1) out 4-component vector of float)
+0:? '@entryPointOutput.b' (layout( location=2) smooth out 4-component vector of float)
0:? 'd' (layout( location=0) in 4-component vector of float)
-0:? 'm[0]' (layout( location=1) in 4-component vector of float)
-0:? 'm[1]' (layout( location=2) in 4-component vector of float)
-0:? 'm[0]' (layout( location=1) in 4-component vector of float)
-0:? 'm[1]' (layout( location=2) in 4-component vector of float)
-0:? 'coord' (layout( location=3) in 2-component vector of uint)
-0:? 'b' (layout( location=4) in 4-component vector of float)
+0:? 'vi.m[0]' (layout( location=1) in 4-component vector of float)
+0:? 'vi.m[1]' (layout( location=2) in 4-component vector of float)
+0:? 'vi.coord' (layout( location=3) in 4-component vector of float)
+0:? 'vi.b' (layout( location=4) in 4-component vector of float)
0:? 'e' (layout( location=5) in 4-component vector of float)
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
-0:8 Function Definition: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 Function Definition: @main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Function Parameters:
0:8 'd' ( in 4-component vector of float)
-0:8 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 'e' ( in 4-component vector of float)
0:? Sequence
0:11 move second child to first child ( temp 4-component vector of float)
0:11 b: direct index for structure ( temp 4-component vector of float)
-0:11 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:11 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:11 Constant:
0:11 2 (const int)
0:11 add ( temp 4-component vector of float)
@@ -151,31 +190,66 @@ Shader version: 450
0:11 add ( temp 4-component vector of float)
0:11 direct index ( temp 4-component vector of float)
0:11 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( temp 4-component vector of float)
0:11 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Construct vec4 ( temp 4-component vector of float)
-0:11 Convert uint to float ( temp float)
-0:11 direct index ( temp uint)
-0:11 coord: direct index for structure ( temp 2-component vector of uint)
-0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
-0:11 Constant:
-0:11 1 (const int)
+0:11 direct index ( temp float)
+0:11 coord: direct index for structure ( temp 4-component vector of float)
+0:11 'vi' ( in structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:11 Constant:
-0:11 0 (const int)
+0:11 1 (const int)
+0:11 Constant:
+0:11 0 (const int)
0:11 'd' ( in 4-component vector of float)
0:11 'e' ( in 4-component vector of float)
-0:13 Branch: Return with expression
-0:13 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:12 move second child to first child ( temp 4-component vector of float)
+0:12 coord: direct index for structure ( temp 4-component vector of float)
+0:12 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:12 Constant:
+0:12 1 (const int)
+0:12 Constant:
+0:12 1.000000
+0:12 1.000000
+0:12 1.000000
+0:12 1.000000
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 direct index ( temp 4-component vector of float)
+0:13 m: direct index for structure ( temp 2-element array of 4-component vector of float)
+0:13 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2.000000
+0:13 2.000000
+0:13 2.000000
+0:13 2.000000
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 direct index ( temp 4-component vector of float)
+0:14 m: direct index for structure ( temp 2-element array of 4-component vector of float)
+0:14 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 1 (const int)
+0:14 Constant:
+0:14 3.000000
+0:14 3.000000
+0:14 3.000000
+0:14 3.000000
+0:16 Branch: Return with expression
+0:16 'local' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Function Definition: main( ( temp void)
0:8 Function Parameters:
0:? Sequence
@@ -186,124 +260,131 @@ Shader version: 450
0:8 move second child to first child ( temp 4-component vector of float)
0:8 direct index ( temp 4-component vector of float)
0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 0 (const int)
-0:? 'm[0]' (layout( location=1) in 4-component vector of float)
+0:? 'vi.m[0]' (layout( location=1) in 4-component vector of float)
0:8 move second child to first child ( temp 4-component vector of float)
0:8 direct index ( temp 4-component vector of float)
0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 1 (const int)
-0:? 'm[1]' (layout( location=2) in 4-component vector of float)
-0:8 move second child to first child ( temp 2-component vector of uint)
-0:8 coord: direct index for structure ( temp 2-component vector of uint)
-0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? 'vi.m[1]' (layout( location=2) in 4-component vector of float)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 coord: direct index for structure ( temp 4-component vector of float)
+0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 1 (const int)
-0:? 'coord' (layout( location=3) in 2-component vector of uint)
+0:? 'vi.coord' (layout( location=3) in 4-component vector of float)
0:8 move second child to first child ( temp 4-component vector of float)
0:8 b: direct index for structure ( temp 4-component vector of float)
-0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 2 (const int)
-0:? 'b' (layout( location=4) in 4-component vector of float)
+0:? 'vi.b' (layout( location=4) in 4-component vector of float)
0:8 move second child to first child ( temp 4-component vector of float)
0:? 'e' ( temp 4-component vector of float)
0:? 'e' (layout( location=5) in 4-component vector of float)
0:8 Sequence
-0:8 move second child to first child ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
-0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
-0:8 Function Call: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 move second child to first child ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:8 Function Call: @main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4; ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:? 'd' ( temp 4-component vector of float)
-0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? 'vi' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:? 'e' ( temp 4-component vector of float)
-0:8 move second child to first child ( temp 2-element array of 4-component vector of float)
-0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:8 '@entryPointOutput' ( out structure Position{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
-0:8 Constant:
-0:8 0 (const int)
-0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
-0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.m[0]' (layout( location=0) out 4-component vector of float)
+0:8 direct index ( temp 4-component vector of float)
+0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:8 Constant:
+0:8 0 (const int)
0:8 Constant:
0:8 0 (const int)
-0:8 move second child to first child ( temp 2-component vector of uint)
-0:8 coord: direct index for structure ( temp 2-component vector of uint)
-0:8 '@entryPointOutput' ( out structure Position{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.m[1]' (layout( location=1) out 4-component vector of float)
+0:8 direct index ( temp 4-component vector of float)
+0:8 m: direct index for structure ( temp 2-element array of 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
+0:8 Constant:
+0:8 0 (const int)
0:8 Constant:
0:8 1 (const int)
-0:8 coord: direct index for structure ( temp 2-component vector of uint)
-0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.coord' ( out 4-component vector of float Position)
+0:8 coord: direct index for structure ( temp 4-component vector of float)
+0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 1 (const int)
0:8 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.b' (layout( location=2) smooth out 4-component vector of float)
0:8 b: direct index for structure ( temp 4-component vector of float)
-0:8 '@entryPointOutput' ( out structure Position{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
-0:8 Constant:
-0:8 2 (const int)
-0:8 b: direct index for structure ( temp 4-component vector of float)
-0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 'flattenTemp' ( temp structure{ temp 2-element array of 4-component vector of float m, temp 4-component vector of float coord, temp 4-component vector of float b})
0:8 Constant:
0:8 2 (const int)
0:? Linker Objects
-0:? '@entryPointOutput' ( out structure Position{ temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:? '@entryPointOutput.coord' ( out 4-component vector of float Position)
+0:? '@entryPointOutput.m[0]' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.m[1]' (layout( location=1) out 4-component vector of float)
+0:? '@entryPointOutput.b' (layout( location=2) smooth out 4-component vector of float)
0:? 'd' (layout( location=0) in 4-component vector of float)
-0:? 'm[0]' (layout( location=1) in 4-component vector of float)
-0:? 'm[1]' (layout( location=2) in 4-component vector of float)
-0:? 'm[0]' (layout( location=1) in 4-component vector of float)
-0:? 'm[1]' (layout( location=2) in 4-component vector of float)
-0:? 'coord' (layout( location=3) in 2-component vector of uint)
-0:? 'b' (layout( location=4) in 4-component vector of float)
+0:? 'vi.m[0]' (layout( location=1) in 4-component vector of float)
+0:? 'vi.m[1]' (layout( location=2) in 4-component vector of float)
+0:? 'vi.coord' (layout( location=3) in 4-component vector of float)
+0:? 'vi.b' (layout( location=4) in 4-component vector of float)
0:? 'e' (layout( location=5) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 92
+// Generated by (magic number): 80002
+// Id's are bound by 94
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 48 51 54 58 62 66 78
+ EntryPoint Vertex 4 "main" 55 58 61 64 67 71 82 85 88 91
+ Source HLSL 500
Name 4 "main"
- Name 13 "VI"
- MemberName 13(VI) 0 "m"
- MemberName 13(VI) 1 "coord"
- MemberName 13(VI) 2 "b"
- Name 19 "@main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4;"
- Name 16 "d"
- Name 17 "vi"
- Name 18 "e"
- Name 21 "local"
- Name 46 "d"
- Name 48 "d"
- Name 50 "vi"
- Name 51 "m[0]"
- Name 54 "m[1]"
- Name 58 "coord"
- Name 62 "b"
- Name 65 "e"
- Name 66 "e"
- Name 68 "flattenTemp"
- Name 69 "param"
- Name 71 "param"
- Name 73 "param"
- Name 76 "VI"
- MemberName 76(VI) 0 "m"
- MemberName 76(VI) 1 "coord"
- MemberName 76(VI) 2 "b"
- Name 78 "@entryPointOutput"
- Decorate 48(d) Location 0
- Decorate 51(m[0]) Location 1
- Decorate 54(m[1]) Location 2
- Decorate 58(coord) Location 3
- Decorate 62(b) Location 4
- Decorate 66(e) Location 5
- Decorate 78(@entryPointOutput) BuiltIn Position
+ Name 12 "VI"
+ MemberName 12(VI) 0 "m"
+ MemberName 12(VI) 1 "coord"
+ MemberName 12(VI) 2 "b"
+ Name 18 "@main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4;"
+ Name 15 "d"
+ Name 16 "vi"
+ Name 17 "e"
+ Name 20 "local"
+ Name 53 "d"
+ Name 55 "d"
+ Name 57 "vi"
+ Name 58 "vi.m[0]"
+ Name 61 "vi.m[1]"
+ Name 64 "vi.coord"
+ Name 67 "vi.b"
+ Name 70 "e"
+ Name 71 "e"
+ Name 73 "flattenTemp"
+ Name 74 "param"
+ Name 76 "param"
+ Name 78 "param"
+ Name 82 "@entryPointOutput.m[0]"
+ Name 85 "@entryPointOutput.m[1]"
+ Name 88 "@entryPointOutput.coord"
+ Name 91 "@entryPointOutput.b"
+ Decorate 55(d) Location 0
+ Decorate 58(vi.m[0]) Location 1
+ Decorate 61(vi.m[1]) Location 2
+ Decorate 64(vi.coord) Location 3
+ Decorate 67(vi.b) Location 4
+ Decorate 71(e) Location 5
+ Decorate 82(@entryPointOutput.m[0]) Location 0
+ Decorate 85(@entryPointOutput.m[1]) Location 1
+ Decorate 88(@entryPointOutput.coord) BuiltIn Position
+ Decorate 91(@entryPointOutput.b) Location 2
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -312,101 +393,107 @@ Shader version: 450
9: TypeInt 32 0
10: 9(int) Constant 2
11: TypeArray 7(fvec4) 10
- 12: TypeVector 9(int) 2
- 13(VI): TypeStruct 11 12(ivec2) 7(fvec4)
- 14: TypePointer Function 13(VI)
- 15: TypeFunction 13(VI) 8(ptr) 14(ptr) 8(ptr)
- 22: TypeInt 32 1
- 23: 22(int) Constant 2
- 24: 22(int) Constant 0
- 25: 22(int) Constant 1
- 31: 9(int) Constant 0
- 32: TypePointer Function 9(int)
- 47: TypePointer Input 7(fvec4)
- 48(d): 47(ptr) Variable Input
- 51(m[0]): 47(ptr) Variable Input
- 54(m[1]): 47(ptr) Variable Input
- 57: TypePointer Input 12(ivec2)
- 58(coord): 57(ptr) Variable Input
- 60: TypePointer Function 12(ivec2)
- 62(b): 47(ptr) Variable Input
- 66(e): 47(ptr) Variable Input
- 76(VI): TypeStruct 11 12(ivec2) 7(fvec4)
- 77: TypePointer Output 76(VI)
-78(@entryPointOutput): 77(ptr) Variable Output
- 79: TypePointer Function 11
- 82: TypePointer Output 11
- 86: TypePointer Output 12(ivec2)
- 90: TypePointer Output 7(fvec4)
+ 12(VI): TypeStruct 11 7(fvec4) 7(fvec4)
+ 13: TypePointer Function 12(VI)
+ 14: TypeFunction 12(VI) 8(ptr) 13(ptr) 8(ptr)
+ 21: TypeInt 32 1
+ 22: 21(int) Constant 2
+ 23: 21(int) Constant 0
+ 24: 21(int) Constant 1
+ 30: 9(int) Constant 0
+ 31: TypePointer Function 6(float)
+ 41: 6(float) Constant 1065353216
+ 42: 7(fvec4) ConstantComposite 41 41 41 41
+ 44: 6(float) Constant 1073741824
+ 45: 7(fvec4) ConstantComposite 44 44 44 44
+ 47: 6(float) Constant 1077936128
+ 48: 7(fvec4) ConstantComposite 47 47 47 47
+ 54: TypePointer Input 7(fvec4)
+ 55(d): 54(ptr) Variable Input
+ 58(vi.m[0]): 54(ptr) Variable Input
+ 61(vi.m[1]): 54(ptr) Variable Input
+ 64(vi.coord): 54(ptr) Variable Input
+ 67(vi.b): 54(ptr) Variable Input
+ 71(e): 54(ptr) Variable Input
+ 81: TypePointer Output 7(fvec4)
+82(@entryPointOutput.m[0]): 81(ptr) Variable Output
+85(@entryPointOutput.m[1]): 81(ptr) Variable Output
+88(@entryPointOutput.coord): 81(ptr) Variable Output
+91(@entryPointOutput.b): 81(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 46(d): 8(ptr) Variable Function
- 50(vi): 14(ptr) Variable Function
- 65(e): 8(ptr) Variable Function
- 68(flattenTemp): 14(ptr) Variable Function
- 69(param): 8(ptr) Variable Function
- 71(param): 14(ptr) Variable Function
- 73(param): 8(ptr) Variable Function
- 49: 7(fvec4) Load 48(d)
- Store 46(d) 49
- 52: 7(fvec4) Load 51(m[0])
- 53: 8(ptr) AccessChain 50(vi) 24 24
- Store 53 52
- 55: 7(fvec4) Load 54(m[1])
- 56: 8(ptr) AccessChain 50(vi) 24 25
- Store 56 55
- 59: 12(ivec2) Load 58(coord)
- 61: 60(ptr) AccessChain 50(vi) 25
- Store 61 59
- 63: 7(fvec4) Load 62(b)
- 64: 8(ptr) AccessChain 50(vi) 23
- Store 64 63
- 67: 7(fvec4) Load 66(e)
- Store 65(e) 67
- 70: 7(fvec4) Load 46(d)
- Store 69(param) 70
- 72: 13(VI) Load 50(vi)
- Store 71(param) 72
- 74: 7(fvec4) Load 65(e)
- Store 73(param) 74
- 75: 13(VI) FunctionCall 19(@main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4;) 69(param) 71(param) 73(param)
- Store 68(flattenTemp) 75
- 80: 79(ptr) AccessChain 68(flattenTemp) 24
- 81: 11 Load 80
- 83: 82(ptr) AccessChain 78(@entryPointOutput) 24
- Store 83 81
- 84: 60(ptr) AccessChain 68(flattenTemp) 25
- 85: 12(ivec2) Load 84
- 87: 86(ptr) AccessChain 78(@entryPointOutput) 25
- Store 87 85
- 88: 8(ptr) AccessChain 68(flattenTemp) 23
- 89: 7(fvec4) Load 88
- 91: 90(ptr) AccessChain 78(@entryPointOutput) 23
- Store 91 89
+ 53(d): 8(ptr) Variable Function
+ 57(vi): 13(ptr) Variable Function
+ 70(e): 8(ptr) Variable Function
+ 73(flattenTemp): 13(ptr) Variable Function
+ 74(param): 8(ptr) Variable Function
+ 76(param): 13(ptr) Variable Function
+ 78(param): 8(ptr) Variable Function
+ 56: 7(fvec4) Load 55(d)
+ Store 53(d) 56
+ 59: 7(fvec4) Load 58(vi.m[0])
+ 60: 8(ptr) AccessChain 57(vi) 23 23
+ Store 60 59
+ 62: 7(fvec4) Load 61(vi.m[1])
+ 63: 8(ptr) AccessChain 57(vi) 23 24
+ Store 63 62
+ 65: 7(fvec4) Load 64(vi.coord)
+ 66: 8(ptr) AccessChain 57(vi) 24
+ Store 66 65
+ 68: 7(fvec4) Load 67(vi.b)
+ 69: 8(ptr) AccessChain 57(vi) 22
+ Store 69 68
+ 72: 7(fvec4) Load 71(e)
+ Store 70(e) 72
+ 75: 7(fvec4) Load 53(d)
+ Store 74(param) 75
+ 77: 12(VI) Load 57(vi)
+ Store 76(param) 77
+ 79: 7(fvec4) Load 70(e)
+ Store 78(param) 79
+ 80: 12(VI) FunctionCall 18(@main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4;) 74(param) 76(param) 78(param)
+ Store 73(flattenTemp) 80
+ 83: 8(ptr) AccessChain 73(flattenTemp) 23 23
+ 84: 7(fvec4) Load 83
+ Store 82(@entryPointOutput.m[0]) 84
+ 86: 8(ptr) AccessChain 73(flattenTemp) 23 24
+ 87: 7(fvec4) Load 86
+ Store 85(@entryPointOutput.m[1]) 87
+ 89: 8(ptr) AccessChain 73(flattenTemp) 24
+ 90: 7(fvec4) Load 89
+ Store 88(@entryPointOutput.coord) 90
+ 92: 8(ptr) AccessChain 73(flattenTemp) 22
+ 93: 7(fvec4) Load 92
+ Store 91(@entryPointOutput.b) 93
Return
FunctionEnd
-19(@main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4;): 13(VI) Function None 15
- 16(d): 8(ptr) FunctionParameter
- 17(vi): 14(ptr) FunctionParameter
- 18(e): 8(ptr) FunctionParameter
- 20: Label
- 21(local): 14(ptr) Variable Function
- 26: 8(ptr) AccessChain 17(vi) 24 25
- 27: 7(fvec4) Load 26
- 28: 8(ptr) AccessChain 17(vi) 24 24
- 29: 7(fvec4) Load 28
- 30: 7(fvec4) FAdd 27 29
- 33: 32(ptr) AccessChain 17(vi) 25 31
- 34: 9(int) Load 33
- 35: 6(float) ConvertUToF 34
- 36: 7(fvec4) CompositeConstruct 35 35 35 35
- 37: 7(fvec4) FAdd 30 36
- 38: 7(fvec4) Load 16(d)
+18(@main(vf4;struct-VI-vf4[2]-vf4-vf41;vf4;): 12(VI) Function None 14
+ 15(d): 8(ptr) FunctionParameter
+ 16(vi): 13(ptr) FunctionParameter
+ 17(e): 8(ptr) FunctionParameter
+ 19: Label
+ 20(local): 13(ptr) Variable Function
+ 25: 8(ptr) AccessChain 16(vi) 23 24
+ 26: 7(fvec4) Load 25
+ 27: 8(ptr) AccessChain 16(vi) 23 23
+ 28: 7(fvec4) Load 27
+ 29: 7(fvec4) FAdd 26 28
+ 32: 31(ptr) AccessChain 16(vi) 24 30
+ 33: 6(float) Load 32
+ 34: 7(fvec4) CompositeConstruct 33 33 33 33
+ 35: 7(fvec4) FAdd 29 34
+ 36: 7(fvec4) Load 15(d)
+ 37: 7(fvec4) FAdd 35 36
+ 38: 7(fvec4) Load 17(e)
39: 7(fvec4) FAdd 37 38
- 40: 7(fvec4) Load 18(e)
- 41: 7(fvec4) FAdd 39 40
- 42: 8(ptr) AccessChain 21(local) 23
- Store 42 41
- 43: 13(VI) Load 21(local)
- ReturnValue 43
+ 40: 8(ptr) AccessChain 20(local) 22
+ Store 40 39
+ 43: 8(ptr) AccessChain 20(local) 24
+ Store 43 42
+ 46: 8(ptr) AccessChain 20(local) 23 23
+ Store 46 45
+ 49: 8(ptr) AccessChain 20(local) 23 24
+ Store 49 48
+ 50: 12(VI) Load 20(local)
+ ReturnValue 50
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.subpass.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.subpass.frag.out
new file mode 100644
index 00000000000..470699a7374
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.subpass.frag.out
@@ -0,0 +1,777 @@
+hlsl.subpass.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:68 Function Definition: @main( ( temp 4-component vector of float)
+0:68 Function Parameters:
+0:? Sequence
+0:69 Sequence
+0:69 move second child to first child ( temp 4-component vector of float)
+0:69 'result00' ( temp 4-component vector of float)
+0:69 subpassLoad ( temp 4-component vector of float)
+0:69 'subpass_f4' (layout( binding=1 input_attachment_index=1) uniform subpassInput)
+0:70 Sequence
+0:70 move second child to first child ( temp 4-component vector of int)
+0:70 'result01' ( temp 4-component vector of int)
+0:70 subpassLoad ( temp 4-component vector of int)
+0:70 'subpass_i4' ( uniform isubpassInput)
+0:71 Sequence
+0:71 move second child to first child ( temp 4-component vector of uint)
+0:71 'result02' ( temp 4-component vector of uint)
+0:71 subpassLoad ( temp 4-component vector of uint)
+0:71 'subpass_u4' ( uniform usubpassInput)
+0:73 Sequence
+0:73 move second child to first child ( temp 4-component vector of float)
+0:73 'result10' ( temp 4-component vector of float)
+0:73 subpassLoadMS ( temp 4-component vector of float)
+0:73 'subpass_ms_f4' ( uniform subpassInputMS)
+0:73 Constant:
+0:73 3 (const int)
+0:74 Sequence
+0:74 move second child to first child ( temp 4-component vector of int)
+0:74 'result11' ( temp 4-component vector of int)
+0:74 subpassLoadMS ( temp 4-component vector of int)
+0:74 'subpass_ms_i4' ( uniform isubpassInputMS)
+0:74 Constant:
+0:74 3 (const int)
+0:75 Sequence
+0:75 move second child to first child ( temp 4-component vector of uint)
+0:75 'result12' ( temp 4-component vector of uint)
+0:75 subpassLoadMS ( temp 4-component vector of uint)
+0:75 'subpass_ms_u4' ( uniform usubpassInputMS)
+0:75 Constant:
+0:75 3 (const int)
+0:77 Sequence
+0:77 move second child to first child ( temp 3-component vector of float)
+0:77 'result20' ( temp 3-component vector of float)
+0:77 Construct vec3 ( temp 3-component vector of float)
+0:77 subpassLoad ( temp 4-component vector of float)
+0:77 'subpass_f3' ( uniform subpassInput)
+0:78 Sequence
+0:78 move second child to first child ( temp 3-component vector of int)
+0:78 'result21' ( temp 3-component vector of int)
+0:78 Construct ivec3 ( temp 3-component vector of int)
+0:78 subpassLoad ( temp 4-component vector of int)
+0:78 'subpass_i3' ( uniform isubpassInput)
+0:79 Sequence
+0:79 move second child to first child ( temp 3-component vector of uint)
+0:79 'result22' ( temp 3-component vector of uint)
+0:79 Construct uvec3 ( temp 3-component vector of uint)
+0:79 subpassLoad ( temp 4-component vector of uint)
+0:79 'subpass_u3' ( uniform usubpassInput)
+0:81 Sequence
+0:81 move second child to first child ( temp 3-component vector of float)
+0:81 'result30' ( temp 3-component vector of float)
+0:81 Construct vec3 ( temp 3-component vector of float)
+0:81 subpassLoadMS ( temp 4-component vector of float)
+0:81 'subpass_ms_f3' ( uniform subpassInputMS)
+0:81 Constant:
+0:81 3 (const int)
+0:82 Sequence
+0:82 move second child to first child ( temp 3-component vector of int)
+0:82 'result31' ( temp 3-component vector of int)
+0:82 Construct ivec3 ( temp 3-component vector of int)
+0:82 subpassLoadMS ( temp 4-component vector of int)
+0:82 'subpass_ms_i3' ( uniform isubpassInputMS)
+0:82 Constant:
+0:82 3 (const int)
+0:83 Sequence
+0:83 move second child to first child ( temp 3-component vector of uint)
+0:83 'result32' ( temp 3-component vector of uint)
+0:83 Construct uvec3 ( temp 3-component vector of uint)
+0:83 subpassLoadMS ( temp 4-component vector of uint)
+0:83 'subpass_ms_u3' ( uniform usubpassInputMS)
+0:83 Constant:
+0:83 3 (const int)
+0:85 Sequence
+0:85 move second child to first child ( temp 2-component vector of float)
+0:85 'result40' ( temp 2-component vector of float)
+0:85 Construct vec2 ( temp 2-component vector of float)
+0:85 subpassLoad ( temp 4-component vector of float)
+0:85 'subpass_f2' ( uniform subpassInput)
+0:86 Sequence
+0:86 move second child to first child ( temp 2-component vector of int)
+0:86 'result41' ( temp 2-component vector of int)
+0:86 Construct ivec2 ( temp 2-component vector of int)
+0:86 subpassLoad ( temp 4-component vector of int)
+0:86 'subpass_i2' ( uniform isubpassInput)
+0:87 Sequence
+0:87 move second child to first child ( temp 2-component vector of uint)
+0:87 'result42' ( temp 2-component vector of uint)
+0:87 Construct uvec2 ( temp 2-component vector of uint)
+0:87 subpassLoad ( temp 4-component vector of uint)
+0:87 'subpass_u2' ( uniform usubpassInput)
+0:89 Sequence
+0:89 move second child to first child ( temp 2-component vector of float)
+0:89 'result50' ( temp 2-component vector of float)
+0:89 Construct vec2 ( temp 2-component vector of float)
+0:89 subpassLoadMS ( temp 4-component vector of float)
+0:89 'subpass_ms_f2' ( uniform subpassInputMS)
+0:89 Constant:
+0:89 2 (const int)
+0:90 Sequence
+0:90 move second child to first child ( temp 2-component vector of int)
+0:90 'result51' ( temp 2-component vector of int)
+0:90 Construct ivec2 ( temp 2-component vector of int)
+0:90 subpassLoadMS ( temp 4-component vector of int)
+0:90 'subpass_ms_i2' ( uniform isubpassInputMS)
+0:90 Constant:
+0:90 2 (const int)
+0:91 Sequence
+0:91 move second child to first child ( temp 2-component vector of uint)
+0:91 'result52' ( temp 2-component vector of uint)
+0:91 Construct uvec2 ( temp 2-component vector of uint)
+0:91 subpassLoadMS ( temp 4-component vector of uint)
+0:91 'subpass_ms_u2' ( uniform usubpassInputMS)
+0:91 Constant:
+0:91 2 (const int)
+0:93 Sequence
+0:93 move second child to first child ( temp float)
+0:93 'result60' ( temp float)
+0:93 Construct float ( temp float)
+0:93 subpassLoad ( temp 4-component vector of float)
+0:93 'subpass_f' ( uniform subpassInput)
+0:94 Sequence
+0:94 move second child to first child ( temp int)
+0:94 'result61' ( temp int)
+0:94 Construct int ( temp int)
+0:94 subpassLoad ( temp 4-component vector of int)
+0:94 'subpass_i' ( uniform isubpassInput)
+0:95 Sequence
+0:95 move second child to first child ( temp uint)
+0:95 'result62' ( temp uint)
+0:95 Construct uint ( temp uint)
+0:95 subpassLoad ( temp 4-component vector of uint)
+0:95 'subpass_u' ( uniform usubpassInput)
+0:97 Sequence
+0:97 move second child to first child ( temp float)
+0:97 'result70' ( temp float)
+0:97 Construct float ( temp float)
+0:97 subpassLoadMS ( temp 4-component vector of float)
+0:97 'subpass_ms_f' ( uniform subpassInputMS)
+0:97 Constant:
+0:97 2 (const int)
+0:98 Sequence
+0:98 move second child to first child ( temp int)
+0:98 'result71' ( temp int)
+0:98 Construct int ( temp int)
+0:98 subpassLoadMS ( temp 4-component vector of int)
+0:98 'subpass_ms_i' ( uniform isubpassInputMS)
+0:98 Constant:
+0:98 2 (const int)
+0:99 Sequence
+0:99 move second child to first child ( temp uint)
+0:99 'result72' ( temp uint)
+0:99 Construct uint ( temp uint)
+0:99 subpassLoadMS ( temp 4-component vector of uint)
+0:99 'subpass_ms_u' ( uniform usubpassInputMS)
+0:99 Constant:
+0:99 2 (const int)
+0:101 Sequence
+0:101 move second child to first child ( temp 4-component vector of float)
+0:101 'result73' ( temp 4-component vector of float)
+0:101 subpassLoad ( temp 4-component vector of float)
+0:101 'subpass_2' ( uniform subpassInput)
+0:112 Branch: Return with expression
+0:112 Constant:
+0:112 0.000000
+0:112 0.000000
+0:112 0.000000
+0:112 0.000000
+0:68 Function Definition: main( ( temp void)
+0:68 Function Parameters:
+0:? Sequence
+0:68 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:68 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'subpass_f4' (layout( binding=1 input_attachment_index=1) uniform subpassInput)
+0:? 'subpass_i4' ( uniform isubpassInput)
+0:? 'subpass_u4' ( uniform usubpassInput)
+0:? 'subpass_ms_f4' ( uniform subpassInputMS)
+0:? 'subpass_ms_i4' ( uniform isubpassInputMS)
+0:? 'subpass_ms_u4' ( uniform usubpassInputMS)
+0:? 'subpass_f3' ( uniform subpassInput)
+0:? 'subpass_i3' ( uniform isubpassInput)
+0:? 'subpass_u3' ( uniform usubpassInput)
+0:? 'subpass_ms_f3' ( uniform subpassInputMS)
+0:? 'subpass_ms_i3' ( uniform isubpassInputMS)
+0:? 'subpass_ms_u3' ( uniform usubpassInputMS)
+0:? 'subpass_f2' ( uniform subpassInput)
+0:? 'subpass_i2' ( uniform isubpassInput)
+0:? 'subpass_u2' ( uniform usubpassInput)
+0:? 'subpass_ms_f2' ( uniform subpassInputMS)
+0:? 'subpass_ms_i2' ( uniform isubpassInputMS)
+0:? 'subpass_ms_u2' ( uniform usubpassInputMS)
+0:? 'subpass_f' ( uniform subpassInput)
+0:? 'subpass_i' ( uniform isubpassInput)
+0:? 'subpass_u' ( uniform usubpassInput)
+0:? 'subpass_ms_f' ( uniform subpassInputMS)
+0:? 'subpass_ms_i' ( uniform isubpassInputMS)
+0:? 'subpass_ms_u' ( uniform usubpassInputMS)
+0:? 'subpass_2' ( uniform subpassInput)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:68 Function Definition: @main( ( temp 4-component vector of float)
+0:68 Function Parameters:
+0:? Sequence
+0:69 Sequence
+0:69 move second child to first child ( temp 4-component vector of float)
+0:69 'result00' ( temp 4-component vector of float)
+0:69 subpassLoad ( temp 4-component vector of float)
+0:69 'subpass_f4' (layout( binding=1 input_attachment_index=1) uniform subpassInput)
+0:70 Sequence
+0:70 move second child to first child ( temp 4-component vector of int)
+0:70 'result01' ( temp 4-component vector of int)
+0:70 subpassLoad ( temp 4-component vector of int)
+0:70 'subpass_i4' ( uniform isubpassInput)
+0:71 Sequence
+0:71 move second child to first child ( temp 4-component vector of uint)
+0:71 'result02' ( temp 4-component vector of uint)
+0:71 subpassLoad ( temp 4-component vector of uint)
+0:71 'subpass_u4' ( uniform usubpassInput)
+0:73 Sequence
+0:73 move second child to first child ( temp 4-component vector of float)
+0:73 'result10' ( temp 4-component vector of float)
+0:73 subpassLoadMS ( temp 4-component vector of float)
+0:73 'subpass_ms_f4' ( uniform subpassInputMS)
+0:73 Constant:
+0:73 3 (const int)
+0:74 Sequence
+0:74 move second child to first child ( temp 4-component vector of int)
+0:74 'result11' ( temp 4-component vector of int)
+0:74 subpassLoadMS ( temp 4-component vector of int)
+0:74 'subpass_ms_i4' ( uniform isubpassInputMS)
+0:74 Constant:
+0:74 3 (const int)
+0:75 Sequence
+0:75 move second child to first child ( temp 4-component vector of uint)
+0:75 'result12' ( temp 4-component vector of uint)
+0:75 subpassLoadMS ( temp 4-component vector of uint)
+0:75 'subpass_ms_u4' ( uniform usubpassInputMS)
+0:75 Constant:
+0:75 3 (const int)
+0:77 Sequence
+0:77 move second child to first child ( temp 3-component vector of float)
+0:77 'result20' ( temp 3-component vector of float)
+0:77 Construct vec3 ( temp 3-component vector of float)
+0:77 subpassLoad ( temp 4-component vector of float)
+0:77 'subpass_f3' ( uniform subpassInput)
+0:78 Sequence
+0:78 move second child to first child ( temp 3-component vector of int)
+0:78 'result21' ( temp 3-component vector of int)
+0:78 Construct ivec3 ( temp 3-component vector of int)
+0:78 subpassLoad ( temp 4-component vector of int)
+0:78 'subpass_i3' ( uniform isubpassInput)
+0:79 Sequence
+0:79 move second child to first child ( temp 3-component vector of uint)
+0:79 'result22' ( temp 3-component vector of uint)
+0:79 Construct uvec3 ( temp 3-component vector of uint)
+0:79 subpassLoad ( temp 4-component vector of uint)
+0:79 'subpass_u3' ( uniform usubpassInput)
+0:81 Sequence
+0:81 move second child to first child ( temp 3-component vector of float)
+0:81 'result30' ( temp 3-component vector of float)
+0:81 Construct vec3 ( temp 3-component vector of float)
+0:81 subpassLoadMS ( temp 4-component vector of float)
+0:81 'subpass_ms_f3' ( uniform subpassInputMS)
+0:81 Constant:
+0:81 3 (const int)
+0:82 Sequence
+0:82 move second child to first child ( temp 3-component vector of int)
+0:82 'result31' ( temp 3-component vector of int)
+0:82 Construct ivec3 ( temp 3-component vector of int)
+0:82 subpassLoadMS ( temp 4-component vector of int)
+0:82 'subpass_ms_i3' ( uniform isubpassInputMS)
+0:82 Constant:
+0:82 3 (const int)
+0:83 Sequence
+0:83 move second child to first child ( temp 3-component vector of uint)
+0:83 'result32' ( temp 3-component vector of uint)
+0:83 Construct uvec3 ( temp 3-component vector of uint)
+0:83 subpassLoadMS ( temp 4-component vector of uint)
+0:83 'subpass_ms_u3' ( uniform usubpassInputMS)
+0:83 Constant:
+0:83 3 (const int)
+0:85 Sequence
+0:85 move second child to first child ( temp 2-component vector of float)
+0:85 'result40' ( temp 2-component vector of float)
+0:85 Construct vec2 ( temp 2-component vector of float)
+0:85 subpassLoad ( temp 4-component vector of float)
+0:85 'subpass_f2' ( uniform subpassInput)
+0:86 Sequence
+0:86 move second child to first child ( temp 2-component vector of int)
+0:86 'result41' ( temp 2-component vector of int)
+0:86 Construct ivec2 ( temp 2-component vector of int)
+0:86 subpassLoad ( temp 4-component vector of int)
+0:86 'subpass_i2' ( uniform isubpassInput)
+0:87 Sequence
+0:87 move second child to first child ( temp 2-component vector of uint)
+0:87 'result42' ( temp 2-component vector of uint)
+0:87 Construct uvec2 ( temp 2-component vector of uint)
+0:87 subpassLoad ( temp 4-component vector of uint)
+0:87 'subpass_u2' ( uniform usubpassInput)
+0:89 Sequence
+0:89 move second child to first child ( temp 2-component vector of float)
+0:89 'result50' ( temp 2-component vector of float)
+0:89 Construct vec2 ( temp 2-component vector of float)
+0:89 subpassLoadMS ( temp 4-component vector of float)
+0:89 'subpass_ms_f2' ( uniform subpassInputMS)
+0:89 Constant:
+0:89 2 (const int)
+0:90 Sequence
+0:90 move second child to first child ( temp 2-component vector of int)
+0:90 'result51' ( temp 2-component vector of int)
+0:90 Construct ivec2 ( temp 2-component vector of int)
+0:90 subpassLoadMS ( temp 4-component vector of int)
+0:90 'subpass_ms_i2' ( uniform isubpassInputMS)
+0:90 Constant:
+0:90 2 (const int)
+0:91 Sequence
+0:91 move second child to first child ( temp 2-component vector of uint)
+0:91 'result52' ( temp 2-component vector of uint)
+0:91 Construct uvec2 ( temp 2-component vector of uint)
+0:91 subpassLoadMS ( temp 4-component vector of uint)
+0:91 'subpass_ms_u2' ( uniform usubpassInputMS)
+0:91 Constant:
+0:91 2 (const int)
+0:93 Sequence
+0:93 move second child to first child ( temp float)
+0:93 'result60' ( temp float)
+0:93 Construct float ( temp float)
+0:93 subpassLoad ( temp 4-component vector of float)
+0:93 'subpass_f' ( uniform subpassInput)
+0:94 Sequence
+0:94 move second child to first child ( temp int)
+0:94 'result61' ( temp int)
+0:94 Construct int ( temp int)
+0:94 subpassLoad ( temp 4-component vector of int)
+0:94 'subpass_i' ( uniform isubpassInput)
+0:95 Sequence
+0:95 move second child to first child ( temp uint)
+0:95 'result62' ( temp uint)
+0:95 Construct uint ( temp uint)
+0:95 subpassLoad ( temp 4-component vector of uint)
+0:95 'subpass_u' ( uniform usubpassInput)
+0:97 Sequence
+0:97 move second child to first child ( temp float)
+0:97 'result70' ( temp float)
+0:97 Construct float ( temp float)
+0:97 subpassLoadMS ( temp 4-component vector of float)
+0:97 'subpass_ms_f' ( uniform subpassInputMS)
+0:97 Constant:
+0:97 2 (const int)
+0:98 Sequence
+0:98 move second child to first child ( temp int)
+0:98 'result71' ( temp int)
+0:98 Construct int ( temp int)
+0:98 subpassLoadMS ( temp 4-component vector of int)
+0:98 'subpass_ms_i' ( uniform isubpassInputMS)
+0:98 Constant:
+0:98 2 (const int)
+0:99 Sequence
+0:99 move second child to first child ( temp uint)
+0:99 'result72' ( temp uint)
+0:99 Construct uint ( temp uint)
+0:99 subpassLoadMS ( temp 4-component vector of uint)
+0:99 'subpass_ms_u' ( uniform usubpassInputMS)
+0:99 Constant:
+0:99 2 (const int)
+0:101 Sequence
+0:101 move second child to first child ( temp 4-component vector of float)
+0:101 'result73' ( temp 4-component vector of float)
+0:101 subpassLoad ( temp 4-component vector of float)
+0:101 'subpass_2' ( uniform subpassInput)
+0:112 Branch: Return with expression
+0:112 Constant:
+0:112 0.000000
+0:112 0.000000
+0:112 0.000000
+0:112 0.000000
+0:68 Function Definition: main( ( temp void)
+0:68 Function Parameters:
+0:? Sequence
+0:68 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:68 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'subpass_f4' (layout( binding=1 input_attachment_index=1) uniform subpassInput)
+0:? 'subpass_i4' ( uniform isubpassInput)
+0:? 'subpass_u4' ( uniform usubpassInput)
+0:? 'subpass_ms_f4' ( uniform subpassInputMS)
+0:? 'subpass_ms_i4' ( uniform isubpassInputMS)
+0:? 'subpass_ms_u4' ( uniform usubpassInputMS)
+0:? 'subpass_f3' ( uniform subpassInput)
+0:? 'subpass_i3' ( uniform isubpassInput)
+0:? 'subpass_u3' ( uniform usubpassInput)
+0:? 'subpass_ms_f3' ( uniform subpassInputMS)
+0:? 'subpass_ms_i3' ( uniform isubpassInputMS)
+0:? 'subpass_ms_u3' ( uniform usubpassInputMS)
+0:? 'subpass_f2' ( uniform subpassInput)
+0:? 'subpass_i2' ( uniform isubpassInput)
+0:? 'subpass_u2' ( uniform usubpassInput)
+0:? 'subpass_ms_f2' ( uniform subpassInputMS)
+0:? 'subpass_ms_i2' ( uniform isubpassInputMS)
+0:? 'subpass_ms_u2' ( uniform usubpassInputMS)
+0:? 'subpass_f' ( uniform subpassInput)
+0:? 'subpass_i' ( uniform isubpassInput)
+0:? 'subpass_u' ( uniform usubpassInput)
+0:? 'subpass_ms_f' ( uniform subpassInputMS)
+0:? 'subpass_ms_i' ( uniform isubpassInputMS)
+0:? 'subpass_ms_u' ( uniform usubpassInputMS)
+0:? 'subpass_2' ( uniform subpassInput)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 204
+
+ Capability Shader
+ Capability InputAttachment
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 202
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 12 "result00"
+ Name 15 "subpass_f4"
+ Name 24 "result01"
+ Name 27 "subpass_i4"
+ Name 33 "result02"
+ Name 36 "subpass_u4"
+ Name 39 "result10"
+ Name 42 "subpass_ms_f4"
+ Name 46 "result11"
+ Name 49 "subpass_ms_i4"
+ Name 52 "result12"
+ Name 55 "subpass_ms_u4"
+ Name 60 "result20"
+ Name 61 "subpass_f3"
+ Name 70 "result21"
+ Name 71 "subpass_i3"
+ Name 80 "result22"
+ Name 81 "subpass_u3"
+ Name 88 "result30"
+ Name 89 "subpass_ms_f3"
+ Name 96 "result31"
+ Name 97 "subpass_ms_i3"
+ Name 104 "result32"
+ Name 105 "subpass_ms_u3"
+ Name 114 "result40"
+ Name 115 "subpass_f2"
+ Name 122 "result41"
+ Name 123 "subpass_i2"
+ Name 131 "result42"
+ Name 132 "subpass_u2"
+ Name 138 "result50"
+ Name 139 "subpass_ms_f2"
+ Name 146 "result51"
+ Name 147 "subpass_ms_i2"
+ Name 153 "result52"
+ Name 154 "subpass_ms_u2"
+ Name 161 "result60"
+ Name 162 "subpass_f"
+ Name 167 "result61"
+ Name 168 "subpass_i"
+ Name 173 "result62"
+ Name 174 "subpass_u"
+ Name 178 "result70"
+ Name 179 "subpass_ms_f"
+ Name 183 "result71"
+ Name 184 "subpass_ms_i"
+ Name 188 "result72"
+ Name 189 "subpass_ms_u"
+ Name 193 "result73"
+ Name 194 "subpass_2"
+ Name 202 "@entryPointOutput"
+ Decorate 15(subpass_f4) DescriptorSet 0
+ Decorate 15(subpass_f4) Binding 1
+ Decorate 15(subpass_f4) InputAttachmentIndex 1
+ Decorate 27(subpass_i4) DescriptorSet 0
+ Decorate 27(subpass_i4) InputAttachmentIndex 2
+ Decorate 36(subpass_u4) DescriptorSet 0
+ Decorate 36(subpass_u4) InputAttachmentIndex 3
+ Decorate 42(subpass_ms_f4) DescriptorSet 0
+ Decorate 42(subpass_ms_f4) InputAttachmentIndex 4
+ Decorate 49(subpass_ms_i4) DescriptorSet 0
+ Decorate 49(subpass_ms_i4) InputAttachmentIndex 5
+ Decorate 55(subpass_ms_u4) DescriptorSet 0
+ Decorate 55(subpass_ms_u4) InputAttachmentIndex 6
+ Decorate 61(subpass_f3) DescriptorSet 0
+ Decorate 61(subpass_f3) InputAttachmentIndex 1
+ Decorate 71(subpass_i3) DescriptorSet 0
+ Decorate 71(subpass_i3) InputAttachmentIndex 2
+ Decorate 81(subpass_u3) DescriptorSet 0
+ Decorate 81(subpass_u3) InputAttachmentIndex 3
+ Decorate 89(subpass_ms_f3) DescriptorSet 0
+ Decorate 89(subpass_ms_f3) InputAttachmentIndex 4
+ Decorate 97(subpass_ms_i3) DescriptorSet 0
+ Decorate 97(subpass_ms_i3) InputAttachmentIndex 5
+ Decorate 105(subpass_ms_u3) DescriptorSet 0
+ Decorate 105(subpass_ms_u3) InputAttachmentIndex 6
+ Decorate 115(subpass_f2) DescriptorSet 0
+ Decorate 115(subpass_f2) InputAttachmentIndex 1
+ Decorate 123(subpass_i2) DescriptorSet 0
+ Decorate 123(subpass_i2) InputAttachmentIndex 2
+ Decorate 132(subpass_u2) DescriptorSet 0
+ Decorate 132(subpass_u2) InputAttachmentIndex 3
+ Decorate 139(subpass_ms_f2) DescriptorSet 0
+ Decorate 139(subpass_ms_f2) InputAttachmentIndex 4
+ Decorate 147(subpass_ms_i2) DescriptorSet 0
+ Decorate 147(subpass_ms_i2) InputAttachmentIndex 5
+ Decorate 154(subpass_ms_u2) DescriptorSet 0
+ Decorate 154(subpass_ms_u2) InputAttachmentIndex 6
+ Decorate 162(subpass_f) DescriptorSet 0
+ Decorate 162(subpass_f) InputAttachmentIndex 1
+ Decorate 168(subpass_i) DescriptorSet 0
+ Decorate 168(subpass_i) InputAttachmentIndex 2
+ Decorate 174(subpass_u) DescriptorSet 0
+ Decorate 174(subpass_u) InputAttachmentIndex 3
+ Decorate 179(subpass_ms_f) DescriptorSet 0
+ Decorate 179(subpass_ms_f) InputAttachmentIndex 4
+ Decorate 184(subpass_ms_i) DescriptorSet 0
+ Decorate 184(subpass_ms_i) InputAttachmentIndex 5
+ Decorate 189(subpass_ms_u) DescriptorSet 0
+ Decorate 189(subpass_ms_u) InputAttachmentIndex 6
+ Decorate 194(subpass_2) DescriptorSet 0
+ Decorate 194(subpass_2) InputAttachmentIndex 7
+ Decorate 202(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypePointer Function 7(fvec4)
+ 13: TypeImage 6(float) SubpassData nonsampled format:Unknown
+ 14: TypePointer UniformConstant 13
+ 15(subpass_f4): 14(ptr) Variable UniformConstant
+ 17: TypeInt 32 1
+ 18: 17(int) Constant 0
+ 19: TypeVector 17(int) 2
+ 20: 19(ivec2) ConstantComposite 18 18
+ 22: TypeVector 17(int) 4
+ 23: TypePointer Function 22(ivec4)
+ 25: TypeImage 17(int) SubpassData nonsampled format:Unknown
+ 26: TypePointer UniformConstant 25
+ 27(subpass_i4): 26(ptr) Variable UniformConstant
+ 30: TypeInt 32 0
+ 31: TypeVector 30(int) 4
+ 32: TypePointer Function 31(ivec4)
+ 34: TypeImage 30(int) SubpassData nonsampled format:Unknown
+ 35: TypePointer UniformConstant 34
+ 36(subpass_u4): 35(ptr) Variable UniformConstant
+ 40: TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown
+ 41: TypePointer UniformConstant 40
+42(subpass_ms_f4): 41(ptr) Variable UniformConstant
+ 44: 17(int) Constant 3
+ 47: TypeImage 17(int) SubpassData multi-sampled nonsampled format:Unknown
+ 48: TypePointer UniformConstant 47
+49(subpass_ms_i4): 48(ptr) Variable UniformConstant
+ 53: TypeImage 30(int) SubpassData multi-sampled nonsampled format:Unknown
+ 54: TypePointer UniformConstant 53
+55(subpass_ms_u4): 54(ptr) Variable UniformConstant
+ 58: TypeVector 6(float) 3
+ 59: TypePointer Function 58(fvec3)
+ 61(subpass_f3): 14(ptr) Variable UniformConstant
+ 68: TypeVector 17(int) 3
+ 69: TypePointer Function 68(ivec3)
+ 71(subpass_i3): 26(ptr) Variable UniformConstant
+ 78: TypeVector 30(int) 3
+ 79: TypePointer Function 78(ivec3)
+ 81(subpass_u3): 35(ptr) Variable UniformConstant
+89(subpass_ms_f3): 41(ptr) Variable UniformConstant
+97(subpass_ms_i3): 48(ptr) Variable UniformConstant
+105(subpass_ms_u3): 54(ptr) Variable UniformConstant
+ 112: TypeVector 6(float) 2
+ 113: TypePointer Function 112(fvec2)
+ 115(subpass_f2): 14(ptr) Variable UniformConstant
+ 121: TypePointer Function 19(ivec2)
+ 123(subpass_i2): 26(ptr) Variable UniformConstant
+ 129: TypeVector 30(int) 2
+ 130: TypePointer Function 129(ivec2)
+ 132(subpass_u2): 35(ptr) Variable UniformConstant
+139(subpass_ms_f2): 41(ptr) Variable UniformConstant
+ 141: 17(int) Constant 2
+147(subpass_ms_i2): 48(ptr) Variable UniformConstant
+154(subpass_ms_u2): 54(ptr) Variable UniformConstant
+ 160: TypePointer Function 6(float)
+ 162(subpass_f): 14(ptr) Variable UniformConstant
+ 166: TypePointer Function 17(int)
+ 168(subpass_i): 26(ptr) Variable UniformConstant
+ 172: TypePointer Function 30(int)
+ 174(subpass_u): 35(ptr) Variable UniformConstant
+179(subpass_ms_f): 41(ptr) Variable UniformConstant
+184(subpass_ms_i): 48(ptr) Variable UniformConstant
+189(subpass_ms_u): 54(ptr) Variable UniformConstant
+ 194(subpass_2): 14(ptr) Variable UniformConstant
+ 197: 6(float) Constant 0
+ 198: 7(fvec4) ConstantComposite 197 197 197 197
+ 201: TypePointer Output 7(fvec4)
+202(@entryPointOutput): 201(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 203: 7(fvec4) FunctionCall 9(@main()
+ Store 202(@entryPointOutput) 203
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 12(result00): 11(ptr) Variable Function
+ 24(result01): 23(ptr) Variable Function
+ 33(result02): 32(ptr) Variable Function
+ 39(result10): 11(ptr) Variable Function
+ 46(result11): 23(ptr) Variable Function
+ 52(result12): 32(ptr) Variable Function
+ 60(result20): 59(ptr) Variable Function
+ 70(result21): 69(ptr) Variable Function
+ 80(result22): 79(ptr) Variable Function
+ 88(result30): 59(ptr) Variable Function
+ 96(result31): 69(ptr) Variable Function
+ 104(result32): 79(ptr) Variable Function
+ 114(result40): 113(ptr) Variable Function
+ 122(result41): 121(ptr) Variable Function
+ 131(result42): 130(ptr) Variable Function
+ 138(result50): 113(ptr) Variable Function
+ 146(result51): 121(ptr) Variable Function
+ 153(result52): 130(ptr) Variable Function
+ 161(result60): 160(ptr) Variable Function
+ 167(result61): 166(ptr) Variable Function
+ 173(result62): 172(ptr) Variable Function
+ 178(result70): 160(ptr) Variable Function
+ 183(result71): 166(ptr) Variable Function
+ 188(result72): 172(ptr) Variable Function
+ 193(result73): 11(ptr) Variable Function
+ 16: 13 Load 15(subpass_f4)
+ 21: 7(fvec4) ImageRead 16 20
+ Store 12(result00) 21
+ 28: 25 Load 27(subpass_i4)
+ 29: 22(ivec4) ImageRead 28 20
+ Store 24(result01) 29
+ 37: 34 Load 36(subpass_u4)
+ 38: 31(ivec4) ImageRead 37 20
+ Store 33(result02) 38
+ 43: 40 Load 42(subpass_ms_f4)
+ 45: 7(fvec4) ImageRead 43 20 Sample 44
+ Store 39(result10) 45
+ 50: 47 Load 49(subpass_ms_i4)
+ 51: 22(ivec4) ImageRead 50 20 Sample 44
+ Store 46(result11) 51
+ 56: 53 Load 55(subpass_ms_u4)
+ 57: 31(ivec4) ImageRead 56 20 Sample 44
+ Store 52(result12) 57
+ 62: 13 Load 61(subpass_f3)
+ 63: 7(fvec4) ImageRead 62 20
+ 64: 6(float) CompositeExtract 63 0
+ 65: 6(float) CompositeExtract 63 1
+ 66: 6(float) CompositeExtract 63 2
+ 67: 58(fvec3) CompositeConstruct 64 65 66
+ Store 60(result20) 67
+ 72: 25 Load 71(subpass_i3)
+ 73: 22(ivec4) ImageRead 72 20
+ 74: 17(int) CompositeExtract 73 0
+ 75: 17(int) CompositeExtract 73 1
+ 76: 17(int) CompositeExtract 73 2
+ 77: 68(ivec3) CompositeConstruct 74 75 76
+ Store 70(result21) 77
+ 82: 34 Load 81(subpass_u3)
+ 83: 31(ivec4) ImageRead 82 20
+ 84: 30(int) CompositeExtract 83 0
+ 85: 30(int) CompositeExtract 83 1
+ 86: 30(int) CompositeExtract 83 2
+ 87: 78(ivec3) CompositeConstruct 84 85 86
+ Store 80(result22) 87
+ 90: 40 Load 89(subpass_ms_f3)
+ 91: 7(fvec4) ImageRead 90 20 Sample 44
+ 92: 6(float) CompositeExtract 91 0
+ 93: 6(float) CompositeExtract 91 1
+ 94: 6(float) CompositeExtract 91 2
+ 95: 58(fvec3) CompositeConstruct 92 93 94
+ Store 88(result30) 95
+ 98: 47 Load 97(subpass_ms_i3)
+ 99: 22(ivec4) ImageRead 98 20 Sample 44
+ 100: 17(int) CompositeExtract 99 0
+ 101: 17(int) CompositeExtract 99 1
+ 102: 17(int) CompositeExtract 99 2
+ 103: 68(ivec3) CompositeConstruct 100 101 102
+ Store 96(result31) 103
+ 106: 53 Load 105(subpass_ms_u3)
+ 107: 31(ivec4) ImageRead 106 20 Sample 44
+ 108: 30(int) CompositeExtract 107 0
+ 109: 30(int) CompositeExtract 107 1
+ 110: 30(int) CompositeExtract 107 2
+ 111: 78(ivec3) CompositeConstruct 108 109 110
+ Store 104(result32) 111
+ 116: 13 Load 115(subpass_f2)
+ 117: 7(fvec4) ImageRead 116 20
+ 118: 6(float) CompositeExtract 117 0
+ 119: 6(float) CompositeExtract 117 1
+ 120: 112(fvec2) CompositeConstruct 118 119
+ Store 114(result40) 120
+ 124: 25 Load 123(subpass_i2)
+ 125: 22(ivec4) ImageRead 124 20
+ 126: 17(int) CompositeExtract 125 0
+ 127: 17(int) CompositeExtract 125 1
+ 128: 19(ivec2) CompositeConstruct 126 127
+ Store 122(result41) 128
+ 133: 34 Load 132(subpass_u2)
+ 134: 31(ivec4) ImageRead 133 20
+ 135: 30(int) CompositeExtract 134 0
+ 136: 30(int) CompositeExtract 134 1
+ 137: 129(ivec2) CompositeConstruct 135 136
+ Store 131(result42) 137
+ 140: 40 Load 139(subpass_ms_f2)
+ 142: 7(fvec4) ImageRead 140 20 Sample 141
+ 143: 6(float) CompositeExtract 142 0
+ 144: 6(float) CompositeExtract 142 1
+ 145: 112(fvec2) CompositeConstruct 143 144
+ Store 138(result50) 145
+ 148: 47 Load 147(subpass_ms_i2)
+ 149: 22(ivec4) ImageRead 148 20 Sample 141
+ 150: 17(int) CompositeExtract 149 0
+ 151: 17(int) CompositeExtract 149 1
+ 152: 19(ivec2) CompositeConstruct 150 151
+ Store 146(result51) 152
+ 155: 53 Load 154(subpass_ms_u2)
+ 156: 31(ivec4) ImageRead 155 20 Sample 141
+ 157: 30(int) CompositeExtract 156 0
+ 158: 30(int) CompositeExtract 156 1
+ 159: 129(ivec2) CompositeConstruct 157 158
+ Store 153(result52) 159
+ 163: 13 Load 162(subpass_f)
+ 164: 7(fvec4) ImageRead 163 20
+ 165: 6(float) CompositeExtract 164 0
+ Store 161(result60) 165
+ 169: 25 Load 168(subpass_i)
+ 170: 22(ivec4) ImageRead 169 20
+ 171: 17(int) CompositeExtract 170 0
+ Store 167(result61) 171
+ 175: 34 Load 174(subpass_u)
+ 176: 31(ivec4) ImageRead 175 20
+ 177: 30(int) CompositeExtract 176 0
+ Store 173(result62) 177
+ 180: 40 Load 179(subpass_ms_f)
+ 181: 7(fvec4) ImageRead 180 20 Sample 141
+ 182: 6(float) CompositeExtract 181 0
+ Store 178(result70) 182
+ 185: 47 Load 184(subpass_ms_i)
+ 186: 22(ivec4) ImageRead 185 20 Sample 141
+ 187: 17(int) CompositeExtract 186 0
+ Store 183(result71) 187
+ 190: 53 Load 189(subpass_ms_u)
+ 191: 31(ivec4) ImageRead 190 20 Sample 141
+ 192: 30(int) CompositeExtract 191 0
+ Store 188(result72) 192
+ 195: 13 Load 194(subpass_2)
+ 196: 7(fvec4) ImageRead 195 20
+ Store 193(result73) 196
+ ReturnValue 198
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.switch.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.switch.frag.out
index 8ee9d7c4249..f1e3a4eb7eb 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.switch.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.switch.frag.out
@@ -1,5 +1,5 @@
hlsl.switch.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4;i1;i1; ( temp 4-component vector of float)
@@ -129,10 +129,10 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
0:2 move second child to first child ( temp int)
0:? 'c' ( temp int)
-0:? 'c' (layout( location=1) in int)
+0:? 'c' (layout( location=1) flat in int)
0:2 move second child to first child ( temp int)
0:? 'd' ( temp int)
-0:? 'd' (layout( location=2) in int)
+0:? 'd' (layout( location=2) flat in int)
0:2 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:2 Function Call: @PixelShaderFunction(vf4;i1;i1; ( temp 4-component vector of float)
@@ -142,14 +142,14 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:? 'c' (layout( location=1) in int)
-0:? 'd' (layout( location=2) in int)
+0:? 'c' (layout( location=1) flat in int)
+0:? 'd' (layout( location=2) flat in int)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4;i1;i1; ( temp 4-component vector of float)
@@ -279,10 +279,10 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
0:2 move second child to first child ( temp int)
0:? 'c' ( temp int)
-0:? 'c' (layout( location=1) in int)
+0:? 'c' (layout( location=1) flat in int)
0:2 move second child to first child ( temp int)
0:? 'd' ( temp int)
-0:? 'd' (layout( location=2) in int)
+0:? 'd' (layout( location=2) flat in int)
0:2 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:2 Function Call: @PixelShaderFunction(vf4;i1;i1; ( temp 4-component vector of float)
@@ -292,11 +292,11 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:? 'c' (layout( location=1) in int)
-0:? 'd' (layout( location=2) in int)
+0:? 'c' (layout( location=1) flat in int)
+0:? 'd' (layout( location=2) flat in int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 106
Capability Shader
@@ -304,6 +304,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 88 92 95 98
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 15 "@PixelShaderFunction(vf4;i1;i1;"
Name 12 "input"
@@ -320,7 +321,9 @@ gl_FragCoord origin is upper left
Name 101 "param"
Name 103 "param"
Decorate 88(input) Location 0
+ Decorate 92(c) Flat
Decorate 92(c) Location 1
+ Decorate 95(d) Flat
Decorate 95(d) Location 2
Decorate 98(@entryPointOutput) Location 0
2: TypeVoid
@@ -396,7 +399,7 @@ gl_FragCoord origin is upper left
Branch 25
25: Label
36: 9(int) Load 13(c)
- SelectionMerge 40 None
+ SelectionMerge 40 DontFlatten
Switch 36 39
case 1: 37
case 2: 38
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.swizzle.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.swizzle.frag.out
index 4674b76438d..380a8bf759e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.swizzle.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.swizzle.frag.out
@@ -1,5 +1,5 @@
hlsl.swizzle.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
@@ -40,7 +40,7 @@ Linked fragment stage:
WARNING: Linking fragment stage: Entry point not found
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
@@ -77,7 +77,7 @@ gl_FragCoord origin is upper left
0:? 'AmbientColor' ( global 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 30
Capability Shader
@@ -85,6 +85,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf4;"
Name 10 "input"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.synthesizeInput.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.synthesizeInput.frag.out
new file mode 100644
index 00000000000..521ff7473fa
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.synthesizeInput.frag.out
@@ -0,0 +1,172 @@
+hlsl.synthesizeInput.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:7 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:? Sequence
+0:8 Branch: Return with expression
+0:? Construct vec4 ( temp 4-component vector of float)
+0:8 Convert uint to float ( temp float)
+0:8 no_interp: direct index for structure ( temp uint)
+0:8 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:8 Constant:
+0:8 1 (const int)
+0:8 interp: direct index for structure ( temp float)
+0:8 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 0.000000
+0:8 Constant:
+0:8 1.000000
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp float)
+0:7 interp: direct index for structure ( temp float)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:7 Constant:
+0:7 0 (const int)
+0:? 'input.interp' (layout( location=0) in float)
+0:7 move second child to first child ( temp uint)
+0:7 no_interp: direct index for structure ( temp uint)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:7 Constant:
+0:7 1 (const int)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'input.interp' (layout( location=0) in float)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
+0:7 Function Parameters:
+0:7 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:? Sequence
+0:8 Branch: Return with expression
+0:? Construct vec4 ( temp 4-component vector of float)
+0:8 Convert uint to float ( temp float)
+0:8 no_interp: direct index for structure ( temp uint)
+0:8 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:8 Constant:
+0:8 1 (const int)
+0:8 interp: direct index for structure ( temp float)
+0:8 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 0.000000
+0:8 Constant:
+0:8 1.000000
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp float)
+0:7 interp: direct index for structure ( temp float)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:7 Constant:
+0:7 0 (const int)
+0:? 'input.interp' (layout( location=0) in float)
+0:7 move second child to first child ( temp uint)
+0:7 no_interp: direct index for structure ( temp uint)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:7 Constant:
+0:7 1 (const int)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:7 Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'input.interp' (layout( location=0) in float)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 44
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 32 36 40
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "PSInput"
+ MemberName 8(PSInput) 0 "interp"
+ MemberName 8(PSInput) 1 "no_interp"
+ Name 13 "@main(struct-PSInput-f1-u11;"
+ Name 12 "input"
+ Name 30 "input"
+ Name 32 "input.interp"
+ Name 36 "input.no_interp"
+ Name 40 "@entryPointOutput"
+ Name 41 "param"
+ Decorate 32(input.interp) Location 0
+ Decorate 36(input.no_interp) Flat
+ Decorate 36(input.no_interp) Location 1
+ Decorate 40(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeInt 32 0
+ 8(PSInput): TypeStruct 6(float) 7(int)
+ 9: TypePointer Function 8(PSInput)
+ 10: TypeVector 6(float) 4
+ 11: TypeFunction 10(fvec4) 9(ptr)
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 1
+ 17: TypePointer Function 7(int)
+ 21: 15(int) Constant 0
+ 22: TypePointer Function 6(float)
+ 25: 6(float) Constant 0
+ 26: 6(float) Constant 1065353216
+ 31: TypePointer Input 6(float)
+32(input.interp): 31(ptr) Variable Input
+ 35: TypePointer Input 7(int)
+36(input.no_interp): 35(ptr) Variable Input
+ 39: TypePointer Output 10(fvec4)
+40(@entryPointOutput): 39(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 30(input): 9(ptr) Variable Function
+ 41(param): 9(ptr) Variable Function
+ 33: 6(float) Load 32(input.interp)
+ 34: 22(ptr) AccessChain 30(input) 21
+ Store 34 33
+ 37: 7(int) Load 36(input.no_interp)
+ 38: 17(ptr) AccessChain 30(input) 16
+ Store 38 37
+ 42: 8(PSInput) Load 30(input)
+ Store 41(param) 42
+ 43: 10(fvec4) FunctionCall 13(@main(struct-PSInput-f1-u11;) 41(param)
+ Store 40(@entryPointOutput) 43
+ Return
+ FunctionEnd
+13(@main(struct-PSInput-f1-u11;): 10(fvec4) Function None 11
+ 12(input): 9(ptr) FunctionParameter
+ 14: Label
+ 18: 17(ptr) AccessChain 12(input) 16
+ 19: 7(int) Load 18
+ 20: 6(float) ConvertUToF 19
+ 23: 22(ptr) AccessChain 12(input) 21
+ 24: 6(float) Load 23
+ 27: 10(fvec4) CompositeConstruct 20 24 25 26
+ ReturnValue 27
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.target.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.target.frag.out
new file mode 100644
index 00000000000..2a62e8540a5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.target.frag.out
@@ -0,0 +1,209 @@
+hlsl.target.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void)
+0:7 Function Parameters:
+0:7 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:7 'out1' ( out 4-component vector of float)
+0:7 'out2' ( out 4-component vector of float)
+0:? Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'out1' ( out 4-component vector of float)
+0:8 Constant:
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:9 move second child to first child ( temp 4-component vector of float)
+0:9 'out2' ( out 4-component vector of float)
+0:9 Constant:
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp float)
+0:7 interp: direct index for structure ( temp float)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:7 Constant:
+0:7 0 (const int)
+0:? 'input.interp' (layout( location=0) in float)
+0:7 move second child to first child ( temp uint)
+0:7 no_interp: direct index for structure ( temp uint)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:7 Constant:
+0:7 1 (const int)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:7 Function Call: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:? 'out1' ( temp 4-component vector of float)
+0:? 'out2' ( temp 4-component vector of float)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? 'out1' (layout( location=1) out 4-component vector of float)
+0:? 'out1' ( temp 4-component vector of float)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? 'out2' (layout( location=3) out 4-component vector of float)
+0:? 'out2' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'input.interp' (layout( location=0) in float)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:? 'out1' (layout( location=1) out 4-component vector of float)
+0:? 'out2' (layout( location=3) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void)
+0:7 Function Parameters:
+0:7 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:7 'out1' ( out 4-component vector of float)
+0:7 'out2' ( out 4-component vector of float)
+0:? Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'out1' ( out 4-component vector of float)
+0:8 Constant:
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:9 move second child to first child ( temp 4-component vector of float)
+0:9 'out2' ( out 4-component vector of float)
+0:9 Constant:
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:9 0.000000
+0:7 Function Definition: main( ( temp void)
+0:7 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp float)
+0:7 interp: direct index for structure ( temp float)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:7 Constant:
+0:7 0 (const int)
+0:? 'input.interp' (layout( location=0) in float)
+0:7 move second child to first child ( temp uint)
+0:7 no_interp: direct index for structure ( temp uint)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:7 Constant:
+0:7 1 (const int)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:7 Function Call: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:? 'out1' ( temp 4-component vector of float)
+0:? 'out2' ( temp 4-component vector of float)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? 'out1' (layout( location=1) out 4-component vector of float)
+0:? 'out1' ( temp 4-component vector of float)
+0:7 move second child to first child ( temp 4-component vector of float)
+0:? 'out2' (layout( location=3) out 4-component vector of float)
+0:? 'out2' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'input.interp' (layout( location=0) in float)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:? 'out1' (layout( location=1) out 4-component vector of float)
+0:? 'out2' (layout( location=3) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 50
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 26 32 46 48
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "PSInput"
+ MemberName 8(PSInput) 0 "interp"
+ MemberName 8(PSInput) 1 "no_interp"
+ Name 16 "@main(struct-PSInput-f1-u11;vf4;vf4;"
+ Name 13 "input"
+ Name 14 "out1"
+ Name 15 "out2"
+ Name 22 "input"
+ Name 26 "input.interp"
+ Name 32 "input.no_interp"
+ Name 36 "out1"
+ Name 37 "out2"
+ Name 38 "param"
+ Name 40 "param"
+ Name 41 "param"
+ Name 46 "out1"
+ Name 48 "out2"
+ Decorate 26(input.interp) Location 0
+ Decorate 32(input.no_interp) Flat
+ Decorate 32(input.no_interp) Location 1
+ Decorate 46(out1) Location 1
+ Decorate 48(out2) Location 3
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeInt 32 0
+ 8(PSInput): TypeStruct 6(float) 7(int)
+ 9: TypePointer Function 8(PSInput)
+ 10: TypeVector 6(float) 4
+ 11: TypePointer Function 10(fvec4)
+ 12: TypeFunction 2 9(ptr) 11(ptr) 11(ptr)
+ 18: 6(float) Constant 1065353216
+ 19: 10(fvec4) ConstantComposite 18 18 18 18
+ 20: 6(float) Constant 0
+ 21: 10(fvec4) ConstantComposite 20 20 20 20
+ 23: TypeInt 32 1
+ 24: 23(int) Constant 0
+ 25: TypePointer Input 6(float)
+26(input.interp): 25(ptr) Variable Input
+ 28: TypePointer Function 6(float)
+ 30: 23(int) Constant 1
+ 31: TypePointer Input 7(int)
+32(input.no_interp): 31(ptr) Variable Input
+ 34: TypePointer Function 7(int)
+ 45: TypePointer Output 10(fvec4)
+ 46(out1): 45(ptr) Variable Output
+ 48(out2): 45(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 22(input): 9(ptr) Variable Function
+ 36(out1): 11(ptr) Variable Function
+ 37(out2): 11(ptr) Variable Function
+ 38(param): 9(ptr) Variable Function
+ 40(param): 11(ptr) Variable Function
+ 41(param): 11(ptr) Variable Function
+ 27: 6(float) Load 26(input.interp)
+ 29: 28(ptr) AccessChain 22(input) 24
+ Store 29 27
+ 33: 7(int) Load 32(input.no_interp)
+ 35: 34(ptr) AccessChain 22(input) 30
+ Store 35 33
+ 39: 8(PSInput) Load 22(input)
+ Store 38(param) 39
+ 42: 2 FunctionCall 16(@main(struct-PSInput-f1-u11;vf4;vf4;) 38(param) 40(param) 41(param)
+ 43: 10(fvec4) Load 40(param)
+ Store 36(out1) 43
+ 44: 10(fvec4) Load 41(param)
+ Store 37(out2) 44
+ 47: 10(fvec4) Load 36(out1)
+ Store 46(out1) 47
+ 49: 10(fvec4) Load 37(out2)
+ Store 48(out2) 49
+ Return
+ FunctionEnd
+16(@main(struct-PSInput-f1-u11;vf4;vf4;): 2 Function None 12
+ 13(input): 9(ptr) FunctionParameter
+ 14(out1): 11(ptr) FunctionParameter
+ 15(out2): 11(ptr) FunctionParameter
+ 17: Label
+ Store 14(out1) 19
+ Store 15(out2) 21
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.targetStruct1.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.targetStruct1.frag.out
new file mode 100644
index 00000000000..f1edfbd3bc5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.targetStruct1.frag.out
@@ -0,0 +1,298 @@
+hlsl.targetStruct1.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:12 Function Definition: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Parameters:
+0:12 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:12 'po' ( out 4-component vector of float)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 o1: direct index for structure ( temp 4-component vector of float)
+0:14 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:14 Constant:
+0:14 0 (const int)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:14 Convert uint to float ( temp float)
+0:14 no_interp: direct index for structure ( temp uint)
+0:14 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:14 Constant:
+0:14 1 (const int)
+0:14 interp: direct index for structure ( temp float)
+0:14 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0.000000
+0:14 Constant:
+0:14 1.000000
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 o2: direct index for structure ( temp 4-component vector of float)
+0:15 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 1.000000
+0:15 1.000000
+0:15 1.000000
+0:15 1.000000
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 'po' ( out 4-component vector of float)
+0:16 Constant:
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:18 Branch: Return with expression
+0:18 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 Sequence
+0:12 move second child to first child ( temp float)
+0:12 interp: direct index for structure ( temp float)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:12 Constant:
+0:12 0 (const int)
+0:? 'input.interp' (layout( location=0) in float)
+0:12 move second child to first child ( temp uint)
+0:12 no_interp: direct index for structure ( temp uint)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:12 Constant:
+0:12 1 (const int)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:12 Sequence
+0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Call: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:? 'po' ( temp 4-component vector of float)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float)
+0:12 o1: direct index for structure ( temp 4-component vector of float)
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Constant:
+0:12 0 (const int)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.o2' (layout( location=1) out 4-component vector of float)
+0:12 o2: direct index for structure ( temp 4-component vector of float)
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Constant:
+0:12 1 (const int)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? 'po' (layout( location=0) out 4-component vector of float)
+0:? 'po' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float)
+0:? '@entryPointOutput.o2' (layout( location=1) out 4-component vector of float)
+0:? 'input.interp' (layout( location=0) in float)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:? 'po' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:12 Function Definition: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Parameters:
+0:12 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:12 'po' ( out 4-component vector of float)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 o1: direct index for structure ( temp 4-component vector of float)
+0:14 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:14 Constant:
+0:14 0 (const int)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:14 Convert uint to float ( temp float)
+0:14 no_interp: direct index for structure ( temp uint)
+0:14 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:14 Constant:
+0:14 1 (const int)
+0:14 interp: direct index for structure ( temp float)
+0:14 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0.000000
+0:14 Constant:
+0:14 1.000000
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 o2: direct index for structure ( temp 4-component vector of float)
+0:15 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 1.000000
+0:15 1.000000
+0:15 1.000000
+0:15 1.000000
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 'po' ( out 4-component vector of float)
+0:16 Constant:
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:18 Branch: Return with expression
+0:18 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 Sequence
+0:12 move second child to first child ( temp float)
+0:12 interp: direct index for structure ( temp float)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:12 Constant:
+0:12 0 (const int)
+0:? 'input.interp' (layout( location=0) in float)
+0:12 move second child to first child ( temp uint)
+0:12 no_interp: direct index for structure ( temp uint)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:12 Constant:
+0:12 1 (const int)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:12 Sequence
+0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Call: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:? 'po' ( temp 4-component vector of float)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float)
+0:12 o1: direct index for structure ( temp 4-component vector of float)
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Constant:
+0:12 0 (const int)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.o2' (layout( location=1) out 4-component vector of float)
+0:12 o2: direct index for structure ( temp 4-component vector of float)
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Constant:
+0:12 1 (const int)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? 'po' (layout( location=0) out 4-component vector of float)
+0:? 'po' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float)
+0:? '@entryPointOutput.o2' (layout( location=1) out 4-component vector of float)
+0:? 'input.interp' (layout( location=0) in float)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:? 'po' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 65
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 42 46 57 60 63
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "PSInput"
+ MemberName 8(PSInput) 0 "interp"
+ MemberName 8(PSInput) 1 "no_interp"
+ Name 12 "PSOutput"
+ MemberName 12(PSOutput) 0 "o1"
+ MemberName 12(PSOutput) 1 "o2"
+ Name 16 "@main(struct-PSInput-f1-u11;vf4;"
+ Name 14 "input"
+ Name 15 "po"
+ Name 19 "pso"
+ Name 40 "input"
+ Name 42 "input.interp"
+ Name 46 "input.no_interp"
+ Name 49 "flattenTemp"
+ Name 50 "po"
+ Name 51 "param"
+ Name 53 "param"
+ Name 57 "@entryPointOutput.o1"
+ Name 60 "@entryPointOutput.o2"
+ Name 63 "po"
+ Decorate 42(input.interp) Location 0
+ Decorate 46(input.no_interp) Flat
+ Decorate 46(input.no_interp) Location 1
+ Decorate 57(@entryPointOutput.o1) Location 2
+ Decorate 60(@entryPointOutput.o2) Location 1
+ Decorate 63(po) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeInt 32 0
+ 8(PSInput): TypeStruct 6(float) 7(int)
+ 9: TypePointer Function 8(PSInput)
+ 10: TypeVector 6(float) 4
+ 11: TypePointer Function 10(fvec4)
+ 12(PSOutput): TypeStruct 10(fvec4) 10(fvec4)
+ 13: TypeFunction 12(PSOutput) 9(ptr) 11(ptr)
+ 18: TypePointer Function 12(PSOutput)
+ 20: TypeInt 32 1
+ 21: 20(int) Constant 0
+ 22: 20(int) Constant 1
+ 23: TypePointer Function 7(int)
+ 27: TypePointer Function 6(float)
+ 30: 6(float) Constant 0
+ 31: 6(float) Constant 1065353216
+ 34: 10(fvec4) ConstantComposite 31 31 31 31
+ 36: 10(fvec4) ConstantComposite 30 30 30 30
+ 41: TypePointer Input 6(float)
+42(input.interp): 41(ptr) Variable Input
+ 45: TypePointer Input 7(int)
+46(input.no_interp): 45(ptr) Variable Input
+ 56: TypePointer Output 10(fvec4)
+57(@entryPointOutput.o1): 56(ptr) Variable Output
+60(@entryPointOutput.o2): 56(ptr) Variable Output
+ 63(po): 56(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 40(input): 9(ptr) Variable Function
+ 49(flattenTemp): 18(ptr) Variable Function
+ 50(po): 11(ptr) Variable Function
+ 51(param): 9(ptr) Variable Function
+ 53(param): 11(ptr) Variable Function
+ 43: 6(float) Load 42(input.interp)
+ 44: 27(ptr) AccessChain 40(input) 21
+ Store 44 43
+ 47: 7(int) Load 46(input.no_interp)
+ 48: 23(ptr) AccessChain 40(input) 22
+ Store 48 47
+ 52: 8(PSInput) Load 40(input)
+ Store 51(param) 52
+ 54:12(PSOutput) FunctionCall 16(@main(struct-PSInput-f1-u11;vf4;) 51(param) 53(param)
+ 55: 10(fvec4) Load 53(param)
+ Store 50(po) 55
+ Store 49(flattenTemp) 54
+ 58: 11(ptr) AccessChain 49(flattenTemp) 21
+ 59: 10(fvec4) Load 58
+ Store 57(@entryPointOutput.o1) 59
+ 61: 11(ptr) AccessChain 49(flattenTemp) 22
+ 62: 10(fvec4) Load 61
+ Store 60(@entryPointOutput.o2) 62
+ 64: 10(fvec4) Load 50(po)
+ Store 63(po) 64
+ Return
+ FunctionEnd
+16(@main(struct-PSInput-f1-u11;vf4;):12(PSOutput) Function None 13
+ 14(input): 9(ptr) FunctionParameter
+ 15(po): 11(ptr) FunctionParameter
+ 17: Label
+ 19(pso): 18(ptr) Variable Function
+ 24: 23(ptr) AccessChain 14(input) 22
+ 25: 7(int) Load 24
+ 26: 6(float) ConvertUToF 25
+ 28: 27(ptr) AccessChain 14(input) 21
+ 29: 6(float) Load 28
+ 32: 10(fvec4) CompositeConstruct 26 29 30 31
+ 33: 11(ptr) AccessChain 19(pso) 21
+ Store 33 32
+ 35: 11(ptr) AccessChain 19(pso) 22
+ Store 35 34
+ Store 15(po) 36
+ 37:12(PSOutput) Load 19(pso)
+ ReturnValue 37
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.targetStruct2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.targetStruct2.frag.out
new file mode 100644
index 00000000000..3800604b346
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.targetStruct2.frag.out
@@ -0,0 +1,298 @@
+hlsl.targetStruct2.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:12 Function Definition: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Parameters:
+0:12 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:12 'po' ( out 4-component vector of float)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 o1: direct index for structure ( temp 4-component vector of float)
+0:14 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:14 Constant:
+0:14 0 (const int)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:14 Convert uint to float ( temp float)
+0:14 no_interp: direct index for structure ( temp uint)
+0:14 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:14 Constant:
+0:14 1 (const int)
+0:14 interp: direct index for structure ( temp float)
+0:14 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0.000000
+0:14 Constant:
+0:14 1.000000
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 o2: direct index for structure ( temp 4-component vector of float)
+0:15 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 1.000000
+0:15 1.000000
+0:15 1.000000
+0:15 1.000000
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 'po' ( out 4-component vector of float)
+0:16 Constant:
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:18 Branch: Return with expression
+0:18 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 Sequence
+0:12 move second child to first child ( temp float)
+0:12 interp: direct index for structure ( temp float)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:12 Constant:
+0:12 0 (const int)
+0:? 'input.interp' (layout( location=0) in float)
+0:12 move second child to first child ( temp uint)
+0:12 no_interp: direct index for structure ( temp uint)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:12 Constant:
+0:12 1 (const int)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:12 Sequence
+0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Call: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:? 'po' ( temp 4-component vector of float)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float)
+0:12 o1: direct index for structure ( temp 4-component vector of float)
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Constant:
+0:12 0 (const int)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.o2' (layout( location=3) out 4-component vector of float)
+0:12 o2: direct index for structure ( temp 4-component vector of float)
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Constant:
+0:12 1 (const int)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? 'po' (layout( location=0) out 4-component vector of float)
+0:? 'po' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float)
+0:? '@entryPointOutput.o2' (layout( location=3) out 4-component vector of float)
+0:? 'input.interp' (layout( location=0) in float)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:? 'po' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:12 Function Definition: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Parameters:
+0:12 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:12 'po' ( out 4-component vector of float)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 o1: direct index for structure ( temp 4-component vector of float)
+0:14 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:14 Constant:
+0:14 0 (const int)
+0:? Construct vec4 ( temp 4-component vector of float)
+0:14 Convert uint to float ( temp float)
+0:14 no_interp: direct index for structure ( temp uint)
+0:14 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:14 Constant:
+0:14 1 (const int)
+0:14 interp: direct index for structure ( temp float)
+0:14 'input' ( in structure{ temp float interp, temp uint no_interp})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0.000000
+0:14 Constant:
+0:14 1.000000
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 o2: direct index for structure ( temp 4-component vector of float)
+0:15 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:15 Constant:
+0:15 1 (const int)
+0:15 Constant:
+0:15 1.000000
+0:15 1.000000
+0:15 1.000000
+0:15 1.000000
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 'po' ( out 4-component vector of float)
+0:16 Constant:
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:16 0.000000
+0:18 Branch: Return with expression
+0:18 'pso' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Definition: main( ( temp void)
+0:12 Function Parameters:
+0:? Sequence
+0:12 Sequence
+0:12 move second child to first child ( temp float)
+0:12 interp: direct index for structure ( temp float)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:12 Constant:
+0:12 0 (const int)
+0:? 'input.interp' (layout( location=0) in float)
+0:12 move second child to first child ( temp uint)
+0:12 no_interp: direct index for structure ( temp uint)
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:12 Constant:
+0:12 1 (const int)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:12 Sequence
+0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Function Call: @main(struct-PSInput-f1-u11;vf4; ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
+0:? 'po' ( temp 4-component vector of float)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float)
+0:12 o1: direct index for structure ( temp 4-component vector of float)
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Constant:
+0:12 0 (const int)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput.o2' (layout( location=3) out 4-component vector of float)
+0:12 o2: direct index for structure ( temp 4-component vector of float)
+0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
+0:12 Constant:
+0:12 1 (const int)
+0:12 move second child to first child ( temp 4-component vector of float)
+0:? 'po' (layout( location=0) out 4-component vector of float)
+0:? 'po' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput.o1' (layout( location=2) out 4-component vector of float)
+0:? '@entryPointOutput.o2' (layout( location=3) out 4-component vector of float)
+0:? 'input.interp' (layout( location=0) in float)
+0:? 'input.no_interp' (layout( location=1) flat in uint)
+0:? 'po' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 65
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 42 46 57 60 63
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "PSInput"
+ MemberName 8(PSInput) 0 "interp"
+ MemberName 8(PSInput) 1 "no_interp"
+ Name 12 "PSOutput"
+ MemberName 12(PSOutput) 0 "o1"
+ MemberName 12(PSOutput) 1 "o2"
+ Name 16 "@main(struct-PSInput-f1-u11;vf4;"
+ Name 14 "input"
+ Name 15 "po"
+ Name 19 "pso"
+ Name 40 "input"
+ Name 42 "input.interp"
+ Name 46 "input.no_interp"
+ Name 49 "flattenTemp"
+ Name 50 "po"
+ Name 51 "param"
+ Name 53 "param"
+ Name 57 "@entryPointOutput.o1"
+ Name 60 "@entryPointOutput.o2"
+ Name 63 "po"
+ Decorate 42(input.interp) Location 0
+ Decorate 46(input.no_interp) Flat
+ Decorate 46(input.no_interp) Location 1
+ Decorate 57(@entryPointOutput.o1) Location 2
+ Decorate 60(@entryPointOutput.o2) Location 3
+ Decorate 63(po) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeInt 32 0
+ 8(PSInput): TypeStruct 6(float) 7(int)
+ 9: TypePointer Function 8(PSInput)
+ 10: TypeVector 6(float) 4
+ 11: TypePointer Function 10(fvec4)
+ 12(PSOutput): TypeStruct 10(fvec4) 10(fvec4)
+ 13: TypeFunction 12(PSOutput) 9(ptr) 11(ptr)
+ 18: TypePointer Function 12(PSOutput)
+ 20: TypeInt 32 1
+ 21: 20(int) Constant 0
+ 22: 20(int) Constant 1
+ 23: TypePointer Function 7(int)
+ 27: TypePointer Function 6(float)
+ 30: 6(float) Constant 0
+ 31: 6(float) Constant 1065353216
+ 34: 10(fvec4) ConstantComposite 31 31 31 31
+ 36: 10(fvec4) ConstantComposite 30 30 30 30
+ 41: TypePointer Input 6(float)
+42(input.interp): 41(ptr) Variable Input
+ 45: TypePointer Input 7(int)
+46(input.no_interp): 45(ptr) Variable Input
+ 56: TypePointer Output 10(fvec4)
+57(@entryPointOutput.o1): 56(ptr) Variable Output
+60(@entryPointOutput.o2): 56(ptr) Variable Output
+ 63(po): 56(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 40(input): 9(ptr) Variable Function
+ 49(flattenTemp): 18(ptr) Variable Function
+ 50(po): 11(ptr) Variable Function
+ 51(param): 9(ptr) Variable Function
+ 53(param): 11(ptr) Variable Function
+ 43: 6(float) Load 42(input.interp)
+ 44: 27(ptr) AccessChain 40(input) 21
+ Store 44 43
+ 47: 7(int) Load 46(input.no_interp)
+ 48: 23(ptr) AccessChain 40(input) 22
+ Store 48 47
+ 52: 8(PSInput) Load 40(input)
+ Store 51(param) 52
+ 54:12(PSOutput) FunctionCall 16(@main(struct-PSInput-f1-u11;vf4;) 51(param) 53(param)
+ 55: 10(fvec4) Load 53(param)
+ Store 50(po) 55
+ Store 49(flattenTemp) 54
+ 58: 11(ptr) AccessChain 49(flattenTemp) 21
+ 59: 10(fvec4) Load 58
+ Store 57(@entryPointOutput.o1) 59
+ 61: 11(ptr) AccessChain 49(flattenTemp) 22
+ 62: 10(fvec4) Load 61
+ Store 60(@entryPointOutput.o2) 62
+ 64: 10(fvec4) Load 50(po)
+ Store 63(po) 64
+ Return
+ FunctionEnd
+16(@main(struct-PSInput-f1-u11;vf4;):12(PSOutput) Function None 13
+ 14(input): 9(ptr) FunctionParameter
+ 15(po): 11(ptr) FunctionParameter
+ 17: Label
+ 19(pso): 18(ptr) Variable Function
+ 24: 23(ptr) AccessChain 14(input) 22
+ 25: 7(int) Load 24
+ 26: 6(float) ConvertUToF 25
+ 28: 27(ptr) AccessChain 14(input) 21
+ 29: 6(float) Load 28
+ 32: 10(fvec4) CompositeConstruct 26 29 30 31
+ 33: 11(ptr) AccessChain 19(pso) 21
+ Store 33 32
+ 35: 11(ptr) AccessChain 19(pso) 22
+ Store 35 34
+ Store 15(po) 36
+ 37:12(PSOutput) Load 19(pso)
+ ReturnValue 37
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.templatetypes.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.templatetypes.frag.out
index 11ea394bf72..88783f69608 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.templatetypes.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.templatetypes.frag.out
@@ -1,5 +1,5 @@
hlsl.templatetypes.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: @PixelShaderFunction( ( temp float)
@@ -255,7 +255,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: @PixelShaderFunction( ( temp float)
@@ -508,7 +508,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 153
Capability Shader
@@ -517,6 +517,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 151
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 8 "@PixelShaderFunction("
Name 12 "r00"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texture.struct.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texture.struct.frag.out
new file mode 100644
index 00000000000..2aa7bd2c04f
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texture.struct.frag.out
@@ -0,0 +1,1197 @@
+hlsl.texture.struct.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:38 Function Definition: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:38 Function Parameters:
+0:38 't1' ( in texture2D)
+0:? Sequence
+0:38 Branch: Return with expression
+0:38 Sequence
+0:38 move second child to first child ( temp 4-component vector of float)
+0:38 '@sampleResultShadow' ( temp 4-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:38 Construct combined texture-sampler ( temp sampler2D)
+0:38 't1' ( in texture2D)
+0:38 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.600000
+0:? 0.610000
+0:38 move second child to first child ( temp float)
+0:38 c0: direct index for structure ( temp float)
+0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:38 Constant:
+0:38 0 (const uint)
+0:38 direct index ( temp float)
+0:38 '@sampleResultShadow' ( temp 4-component vector of float)
+0:38 Constant:
+0:38 0 (const uint)
+0:38 move second child to first child ( temp float)
+0:38 direct index ( temp float)
+0:38 c1: direct index for structure ( temp 2-component vector of float)
+0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:38 Constant:
+0:38 1 (const uint)
+0:38 Constant:
+0:38 0 (const int)
+0:38 direct index ( temp float)
+0:38 '@sampleResultShadow' ( temp 4-component vector of float)
+0:38 Constant:
+0:38 1 (const uint)
+0:38 move second child to first child ( temp float)
+0:38 direct index ( temp float)
+0:38 c1: direct index for structure ( temp 2-component vector of float)
+0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:38 Constant:
+0:38 1 (const uint)
+0:38 Constant:
+0:38 1 (const int)
+0:38 direct index ( temp float)
+0:38 '@sampleResultShadow' ( temp 4-component vector of float)
+0:38 Constant:
+0:38 2 (const uint)
+0:38 move second child to first child ( temp float)
+0:38 c2: direct index for structure ( temp float)
+0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:38 Constant:
+0:38 2 (const uint)
+0:38 direct index ( temp float)
+0:38 '@sampleResultShadow' ( temp 4-component vector of float)
+0:38 Constant:
+0:38 3 (const uint)
+0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:39 Function Definition: fn1(t2-tx-struct1-1; ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:39 Function Parameters:
+0:39 't2' ( in texture2D)
+0:? Sequence
+0:39 Branch: Return with expression
+0:39 Sequence
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 '@sampleResultShadow' ( temp 4-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:39 Construct combined texture-sampler ( temp sampler2D)
+0:39 't2' ( in texture2D)
+0:39 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.600000
+0:? 0.610000
+0:39 move second child to first child ( temp float)
+0:39 c0: direct index for structure ( temp float)
+0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp float)
+0:39 '@sampleResultShadow' ( temp 4-component vector of float)
+0:39 Constant:
+0:39 0 (const uint)
+0:39 move second child to first child ( temp float)
+0:39 direct index ( temp float)
+0:39 c1: direct index for structure ( temp 3-component vector of float)
+0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:39 Constant:
+0:39 1 (const uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( temp float)
+0:39 '@sampleResultShadow' ( temp 4-component vector of float)
+0:39 Constant:
+0:39 1 (const uint)
+0:39 move second child to first child ( temp float)
+0:39 direct index ( temp float)
+0:39 c1: direct index for structure ( temp 3-component vector of float)
+0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:39 Constant:
+0:39 1 (const uint)
+0:39 Constant:
+0:39 1 (const int)
+0:39 direct index ( temp float)
+0:39 '@sampleResultShadow' ( temp 4-component vector of float)
+0:39 Constant:
+0:39 2 (const uint)
+0:39 move second child to first child ( temp float)
+0:39 direct index ( temp float)
+0:39 c1: direct index for structure ( temp 3-component vector of float)
+0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:39 Constant:
+0:39 1 (const uint)
+0:39 Constant:
+0:39 2 (const int)
+0:39 direct index ( temp float)
+0:39 '@sampleResultShadow' ( temp 4-component vector of float)
+0:39 Constant:
+0:39 3 (const uint)
+0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:42 Function Definition: @main( ( temp 4-component vector of float)
+0:42 Function Parameters:
+0:? Sequence
+0:43 Sequence
+0:43 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 's1' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 Sequence
+0:43 move second child to first child ( temp 4-component vector of float)
+0:43 '@sampleResultShadow' ( temp 4-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:43 Construct combined texture-sampler ( temp sampler2D)
+0:43 'g_tTex2s1' ( uniform texture2D)
+0:43 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.110000
+0:43 move second child to first child ( temp float)
+0:43 c0: direct index for structure ( temp float)
+0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 Constant:
+0:43 0 (const uint)
+0:43 direct index ( temp float)
+0:43 '@sampleResultShadow' ( temp 4-component vector of float)
+0:43 Constant:
+0:43 0 (const uint)
+0:43 move second child to first child ( temp float)
+0:43 direct index ( temp float)
+0:43 c1: direct index for structure ( temp 2-component vector of float)
+0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 Constant:
+0:43 1 (const uint)
+0:43 Constant:
+0:43 0 (const int)
+0:43 direct index ( temp float)
+0:43 '@sampleResultShadow' ( temp 4-component vector of float)
+0:43 Constant:
+0:43 1 (const uint)
+0:43 move second child to first child ( temp float)
+0:43 direct index ( temp float)
+0:43 c1: direct index for structure ( temp 2-component vector of float)
+0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 Constant:
+0:43 1 (const uint)
+0:43 Constant:
+0:43 1 (const int)
+0:43 direct index ( temp float)
+0:43 '@sampleResultShadow' ( temp 4-component vector of float)
+0:43 Constant:
+0:43 2 (const uint)
+0:43 move second child to first child ( temp float)
+0:43 c2: direct index for structure ( temp float)
+0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 Constant:
+0:43 2 (const uint)
+0:43 direct index ( temp float)
+0:43 '@sampleResultShadow' ( temp 4-component vector of float)
+0:43 Constant:
+0:43 3 (const uint)
+0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:44 Sequence
+0:44 move second child to first child ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 's2' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 Sequence
+0:44 move second child to first child ( temp 4-component vector of float)
+0:44 '@sampleResultShadow' ( temp 4-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:44 Construct combined texture-sampler ( temp sampler2D)
+0:44 'g_tTex2s2' ( uniform texture2D)
+0:44 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.210000
+0:44 move second child to first child ( temp float)
+0:44 c0: direct index for structure ( temp float)
+0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp float)
+0:44 '@sampleResultShadow' ( temp 4-component vector of float)
+0:44 Constant:
+0:44 0 (const uint)
+0:44 move second child to first child ( temp float)
+0:44 direct index ( temp float)
+0:44 c1: direct index for structure ( temp 3-component vector of float)
+0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 Constant:
+0:44 1 (const uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 direct index ( temp float)
+0:44 '@sampleResultShadow' ( temp 4-component vector of float)
+0:44 Constant:
+0:44 1 (const uint)
+0:44 move second child to first child ( temp float)
+0:44 direct index ( temp float)
+0:44 c1: direct index for structure ( temp 3-component vector of float)
+0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 Constant:
+0:44 1 (const uint)
+0:44 Constant:
+0:44 1 (const int)
+0:44 direct index ( temp float)
+0:44 '@sampleResultShadow' ( temp 4-component vector of float)
+0:44 Constant:
+0:44 2 (const uint)
+0:44 move second child to first child ( temp float)
+0:44 direct index ( temp float)
+0:44 c1: direct index for structure ( temp 3-component vector of float)
+0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 Constant:
+0:44 1 (const uint)
+0:44 Constant:
+0:44 2 (const int)
+0:44 direct index ( temp float)
+0:44 '@sampleResultShadow' ( temp 4-component vector of float)
+0:44 Constant:
+0:44 3 (const uint)
+0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:45 Sequence
+0:45 move second child to first child ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:45 's3' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:45 Sequence
+0:45 move second child to first child ( temp 4-component vector of float)
+0:45 '@sampleResultShadow' ( temp 4-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:45 Construct combined texture-sampler ( temp sampler2D)
+0:45 'g_tTex2s3' ( uniform texture2D)
+0:45 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.300000
+0:? 0.310000
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 c0: direct index for structure ( temp 2-component vector of float)
+0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 direct index ( temp float)
+0:45 '@sampleResultShadow' ( temp 4-component vector of float)
+0:45 Constant:
+0:45 0 (const uint)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 c0: direct index for structure ( temp 2-component vector of float)
+0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 Constant:
+0:45 1 (const int)
+0:45 direct index ( temp float)
+0:45 '@sampleResultShadow' ( temp 4-component vector of float)
+0:45 Constant:
+0:45 1 (const uint)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 c1: direct index for structure ( temp 1-component vector of float)
+0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:45 Constant:
+0:45 1 (const uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 direct index ( temp float)
+0:45 '@sampleResultShadow' ( temp 4-component vector of float)
+0:45 Constant:
+0:45 2 (const uint)
+0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:46 Sequence
+0:46 move second child to first child ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 's4' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 Sequence
+0:46 move second child to first child ( temp 4-component vector of int)
+0:46 '@sampleResultShadow' ( temp 4-component vector of int)
+0:? texture ( temp 4-component vector of int)
+0:46 Construct combined texture-sampler ( temp isampler2D)
+0:46 'g_tTex2s4' ( uniform itexture2D)
+0:46 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.400000
+0:? 0.410000
+0:46 move second child to first child ( temp int)
+0:46 c0: direct index for structure ( temp int)
+0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp int)
+0:46 '@sampleResultShadow' ( temp 4-component vector of int)
+0:46 Constant:
+0:46 0 (const uint)
+0:46 move second child to first child ( temp float)
+0:46 direct index ( temp float)
+0:46 c1: direct index for structure ( temp 2-component vector of int)
+0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 Constant:
+0:46 1 (const uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Convert int to float ( temp float)
+0:46 direct index ( temp int)
+0:46 '@sampleResultShadow' ( temp 4-component vector of int)
+0:46 Constant:
+0:46 1 (const uint)
+0:46 move second child to first child ( temp float)
+0:46 direct index ( temp float)
+0:46 c1: direct index for structure ( temp 2-component vector of int)
+0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 Constant:
+0:46 1 (const uint)
+0:46 Constant:
+0:46 1 (const int)
+0:46 Convert int to float ( temp float)
+0:46 direct index ( temp int)
+0:46 '@sampleResultShadow' ( temp 4-component vector of int)
+0:46 Constant:
+0:46 2 (const uint)
+0:46 move second child to first child ( temp int)
+0:46 c2: direct index for structure ( temp int)
+0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 Constant:
+0:46 2 (const uint)
+0:46 direct index ( temp int)
+0:46 '@sampleResultShadow' ( temp 4-component vector of int)
+0:46 Constant:
+0:46 3 (const uint)
+0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:47 Sequence
+0:47 move second child to first child ( temp structure{ temp uint c0, temp uint c1})
+0:47 's5' ( temp structure{ temp uint c0, temp uint c1})
+0:47 Sequence
+0:47 move second child to first child ( temp 4-component vector of uint)
+0:47 '@sampleResultShadow' ( temp 4-component vector of uint)
+0:? texture ( temp 4-component vector of uint)
+0:47 Construct combined texture-sampler ( temp usampler2D)
+0:47 'g_tTex2s5' ( uniform utexture2D)
+0:47 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.500000
+0:? 0.510000
+0:47 move second child to first child ( temp uint)
+0:47 c0: direct index for structure ( temp uint)
+0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 '@sampleResultShadow' ( temp 4-component vector of uint)
+0:47 Constant:
+0:47 0 (const uint)
+0:47 move second child to first child ( temp uint)
+0:47 c1: direct index for structure ( temp uint)
+0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1})
+0:47 Constant:
+0:47 1 (const uint)
+0:47 direct index ( temp uint)
+0:47 '@sampleResultShadow' ( temp 4-component vector of uint)
+0:47 Constant:
+0:47 1 (const uint)
+0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1})
+0:49 Sequence
+0:49 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:49 'r0' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:49 Function Call: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:49 'g_tTex2s1' ( uniform texture2D)
+0:50 Sequence
+0:50 move second child to first child ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:50 'r1' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:50 Function Call: fn1(t2-tx-struct1-1; ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:50 'g_tTex2s2' ( uniform texture2D)
+0:51 Sequence
+0:51 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:51 'r2' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:51 Function Call: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:51 'g_tTex2s1a' ( uniform texture2D)
+0:53 Branch: Return with expression
+0:53 Constant:
+0:53 0.000000
+0:53 0.000000
+0:53 0.000000
+0:53 0.000000
+0:42 Function Definition: main( ( temp void)
+0:42 Function Parameters:
+0:? Sequence
+0:42 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:42 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_sSamp' ( uniform sampler)
+0:? 'g_tTex2s1' ( uniform texture2D)
+0:? 'g_tTex2s2' ( uniform texture2D)
+0:? 'g_tTex2s3' ( uniform texture2D)
+0:? 'g_tTex2s4' ( uniform itexture2D)
+0:? 'g_tTex2s5' ( uniform utexture2D)
+0:? 'g_tTex2s1a' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:38 Function Definition: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:38 Function Parameters:
+0:38 't1' ( in texture2D)
+0:? Sequence
+0:38 Branch: Return with expression
+0:38 Sequence
+0:38 move second child to first child ( temp 4-component vector of float)
+0:38 '@sampleResultShadow' ( temp 4-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:38 Construct combined texture-sampler ( temp sampler2D)
+0:38 't1' ( in texture2D)
+0:38 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.600000
+0:? 0.610000
+0:38 move second child to first child ( temp float)
+0:38 c0: direct index for structure ( temp float)
+0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:38 Constant:
+0:38 0 (const uint)
+0:38 direct index ( temp float)
+0:38 '@sampleResultShadow' ( temp 4-component vector of float)
+0:38 Constant:
+0:38 0 (const uint)
+0:38 move second child to first child ( temp float)
+0:38 direct index ( temp float)
+0:38 c1: direct index for structure ( temp 2-component vector of float)
+0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:38 Constant:
+0:38 1 (const uint)
+0:38 Constant:
+0:38 0 (const int)
+0:38 direct index ( temp float)
+0:38 '@sampleResultShadow' ( temp 4-component vector of float)
+0:38 Constant:
+0:38 1 (const uint)
+0:38 move second child to first child ( temp float)
+0:38 direct index ( temp float)
+0:38 c1: direct index for structure ( temp 2-component vector of float)
+0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:38 Constant:
+0:38 1 (const uint)
+0:38 Constant:
+0:38 1 (const int)
+0:38 direct index ( temp float)
+0:38 '@sampleResultShadow' ( temp 4-component vector of float)
+0:38 Constant:
+0:38 2 (const uint)
+0:38 move second child to first child ( temp float)
+0:38 c2: direct index for structure ( temp float)
+0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:38 Constant:
+0:38 2 (const uint)
+0:38 direct index ( temp float)
+0:38 '@sampleResultShadow' ( temp 4-component vector of float)
+0:38 Constant:
+0:38 3 (const uint)
+0:38 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:39 Function Definition: fn1(t2-tx-struct1-1; ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:39 Function Parameters:
+0:39 't2' ( in texture2D)
+0:? Sequence
+0:39 Branch: Return with expression
+0:39 Sequence
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 '@sampleResultShadow' ( temp 4-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:39 Construct combined texture-sampler ( temp sampler2D)
+0:39 't2' ( in texture2D)
+0:39 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.600000
+0:? 0.610000
+0:39 move second child to first child ( temp float)
+0:39 c0: direct index for structure ( temp float)
+0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp float)
+0:39 '@sampleResultShadow' ( temp 4-component vector of float)
+0:39 Constant:
+0:39 0 (const uint)
+0:39 move second child to first child ( temp float)
+0:39 direct index ( temp float)
+0:39 c1: direct index for structure ( temp 3-component vector of float)
+0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:39 Constant:
+0:39 1 (const uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 direct index ( temp float)
+0:39 '@sampleResultShadow' ( temp 4-component vector of float)
+0:39 Constant:
+0:39 1 (const uint)
+0:39 move second child to first child ( temp float)
+0:39 direct index ( temp float)
+0:39 c1: direct index for structure ( temp 3-component vector of float)
+0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:39 Constant:
+0:39 1 (const uint)
+0:39 Constant:
+0:39 1 (const int)
+0:39 direct index ( temp float)
+0:39 '@sampleResultShadow' ( temp 4-component vector of float)
+0:39 Constant:
+0:39 2 (const uint)
+0:39 move second child to first child ( temp float)
+0:39 direct index ( temp float)
+0:39 c1: direct index for structure ( temp 3-component vector of float)
+0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:39 Constant:
+0:39 1 (const uint)
+0:39 Constant:
+0:39 2 (const int)
+0:39 direct index ( temp float)
+0:39 '@sampleResultShadow' ( temp 4-component vector of float)
+0:39 Constant:
+0:39 3 (const uint)
+0:39 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:42 Function Definition: @main( ( temp 4-component vector of float)
+0:42 Function Parameters:
+0:? Sequence
+0:43 Sequence
+0:43 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 's1' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 Sequence
+0:43 move second child to first child ( temp 4-component vector of float)
+0:43 '@sampleResultShadow' ( temp 4-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:43 Construct combined texture-sampler ( temp sampler2D)
+0:43 'g_tTex2s1' ( uniform texture2D)
+0:43 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.110000
+0:43 move second child to first child ( temp float)
+0:43 c0: direct index for structure ( temp float)
+0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 Constant:
+0:43 0 (const uint)
+0:43 direct index ( temp float)
+0:43 '@sampleResultShadow' ( temp 4-component vector of float)
+0:43 Constant:
+0:43 0 (const uint)
+0:43 move second child to first child ( temp float)
+0:43 direct index ( temp float)
+0:43 c1: direct index for structure ( temp 2-component vector of float)
+0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 Constant:
+0:43 1 (const uint)
+0:43 Constant:
+0:43 0 (const int)
+0:43 direct index ( temp float)
+0:43 '@sampleResultShadow' ( temp 4-component vector of float)
+0:43 Constant:
+0:43 1 (const uint)
+0:43 move second child to first child ( temp float)
+0:43 direct index ( temp float)
+0:43 c1: direct index for structure ( temp 2-component vector of float)
+0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 Constant:
+0:43 1 (const uint)
+0:43 Constant:
+0:43 1 (const int)
+0:43 direct index ( temp float)
+0:43 '@sampleResultShadow' ( temp 4-component vector of float)
+0:43 Constant:
+0:43 2 (const uint)
+0:43 move second child to first child ( temp float)
+0:43 c2: direct index for structure ( temp float)
+0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:43 Constant:
+0:43 2 (const uint)
+0:43 direct index ( temp float)
+0:43 '@sampleResultShadow' ( temp 4-component vector of float)
+0:43 Constant:
+0:43 3 (const uint)
+0:43 '@sampleStructTemp' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:44 Sequence
+0:44 move second child to first child ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 's2' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 Sequence
+0:44 move second child to first child ( temp 4-component vector of float)
+0:44 '@sampleResultShadow' ( temp 4-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:44 Construct combined texture-sampler ( temp sampler2D)
+0:44 'g_tTex2s2' ( uniform texture2D)
+0:44 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.210000
+0:44 move second child to first child ( temp float)
+0:44 c0: direct index for structure ( temp float)
+0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp float)
+0:44 '@sampleResultShadow' ( temp 4-component vector of float)
+0:44 Constant:
+0:44 0 (const uint)
+0:44 move second child to first child ( temp float)
+0:44 direct index ( temp float)
+0:44 c1: direct index for structure ( temp 3-component vector of float)
+0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 Constant:
+0:44 1 (const uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 direct index ( temp float)
+0:44 '@sampleResultShadow' ( temp 4-component vector of float)
+0:44 Constant:
+0:44 1 (const uint)
+0:44 move second child to first child ( temp float)
+0:44 direct index ( temp float)
+0:44 c1: direct index for structure ( temp 3-component vector of float)
+0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 Constant:
+0:44 1 (const uint)
+0:44 Constant:
+0:44 1 (const int)
+0:44 direct index ( temp float)
+0:44 '@sampleResultShadow' ( temp 4-component vector of float)
+0:44 Constant:
+0:44 2 (const uint)
+0:44 move second child to first child ( temp float)
+0:44 direct index ( temp float)
+0:44 c1: direct index for structure ( temp 3-component vector of float)
+0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:44 Constant:
+0:44 1 (const uint)
+0:44 Constant:
+0:44 2 (const int)
+0:44 direct index ( temp float)
+0:44 '@sampleResultShadow' ( temp 4-component vector of float)
+0:44 Constant:
+0:44 3 (const uint)
+0:44 '@sampleStructTemp' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:45 Sequence
+0:45 move second child to first child ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:45 's3' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:45 Sequence
+0:45 move second child to first child ( temp 4-component vector of float)
+0:45 '@sampleResultShadow' ( temp 4-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:45 Construct combined texture-sampler ( temp sampler2D)
+0:45 'g_tTex2s3' ( uniform texture2D)
+0:45 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.300000
+0:? 0.310000
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 c0: direct index for structure ( temp 2-component vector of float)
+0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 direct index ( temp float)
+0:45 '@sampleResultShadow' ( temp 4-component vector of float)
+0:45 Constant:
+0:45 0 (const uint)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 c0: direct index for structure ( temp 2-component vector of float)
+0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 Constant:
+0:45 1 (const int)
+0:45 direct index ( temp float)
+0:45 '@sampleResultShadow' ( temp 4-component vector of float)
+0:45 Constant:
+0:45 1 (const uint)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 c1: direct index for structure ( temp 1-component vector of float)
+0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:45 Constant:
+0:45 1 (const uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 direct index ( temp float)
+0:45 '@sampleResultShadow' ( temp 4-component vector of float)
+0:45 Constant:
+0:45 2 (const uint)
+0:45 '@sampleStructTemp' ( temp structure{ temp 2-component vector of float c0, temp 1-component vector of float c1})
+0:46 Sequence
+0:46 move second child to first child ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 's4' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 Sequence
+0:46 move second child to first child ( temp 4-component vector of int)
+0:46 '@sampleResultShadow' ( temp 4-component vector of int)
+0:? texture ( temp 4-component vector of int)
+0:46 Construct combined texture-sampler ( temp isampler2D)
+0:46 'g_tTex2s4' ( uniform itexture2D)
+0:46 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.400000
+0:? 0.410000
+0:46 move second child to first child ( temp int)
+0:46 c0: direct index for structure ( temp int)
+0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp int)
+0:46 '@sampleResultShadow' ( temp 4-component vector of int)
+0:46 Constant:
+0:46 0 (const uint)
+0:46 move second child to first child ( temp float)
+0:46 direct index ( temp float)
+0:46 c1: direct index for structure ( temp 2-component vector of int)
+0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 Constant:
+0:46 1 (const uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Convert int to float ( temp float)
+0:46 direct index ( temp int)
+0:46 '@sampleResultShadow' ( temp 4-component vector of int)
+0:46 Constant:
+0:46 1 (const uint)
+0:46 move second child to first child ( temp float)
+0:46 direct index ( temp float)
+0:46 c1: direct index for structure ( temp 2-component vector of int)
+0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 Constant:
+0:46 1 (const uint)
+0:46 Constant:
+0:46 1 (const int)
+0:46 Convert int to float ( temp float)
+0:46 direct index ( temp int)
+0:46 '@sampleResultShadow' ( temp 4-component vector of int)
+0:46 Constant:
+0:46 2 (const uint)
+0:46 move second child to first child ( temp int)
+0:46 c2: direct index for structure ( temp int)
+0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:46 Constant:
+0:46 2 (const uint)
+0:46 direct index ( temp int)
+0:46 '@sampleResultShadow' ( temp 4-component vector of int)
+0:46 Constant:
+0:46 3 (const uint)
+0:46 '@sampleStructTemp' ( temp structure{ temp int c0, temp 2-component vector of int c1, temp int c2})
+0:47 Sequence
+0:47 move second child to first child ( temp structure{ temp uint c0, temp uint c1})
+0:47 's5' ( temp structure{ temp uint c0, temp uint c1})
+0:47 Sequence
+0:47 move second child to first child ( temp 4-component vector of uint)
+0:47 '@sampleResultShadow' ( temp 4-component vector of uint)
+0:? texture ( temp 4-component vector of uint)
+0:47 Construct combined texture-sampler ( temp usampler2D)
+0:47 'g_tTex2s5' ( uniform utexture2D)
+0:47 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.500000
+0:? 0.510000
+0:47 move second child to first child ( temp uint)
+0:47 c0: direct index for structure ( temp uint)
+0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 '@sampleResultShadow' ( temp 4-component vector of uint)
+0:47 Constant:
+0:47 0 (const uint)
+0:47 move second child to first child ( temp uint)
+0:47 c1: direct index for structure ( temp uint)
+0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1})
+0:47 Constant:
+0:47 1 (const uint)
+0:47 direct index ( temp uint)
+0:47 '@sampleResultShadow' ( temp 4-component vector of uint)
+0:47 Constant:
+0:47 1 (const uint)
+0:47 '@sampleStructTemp' ( temp structure{ temp uint c0, temp uint c1})
+0:49 Sequence
+0:49 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:49 'r0' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:49 Function Call: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:49 'g_tTex2s1' ( uniform texture2D)
+0:50 Sequence
+0:50 move second child to first child ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:50 'r1' ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:50 Function Call: fn1(t2-tx-struct1-1; ( temp structure{ temp float c0, temp 3-component vector of float c1})
+0:50 'g_tTex2s2' ( uniform texture2D)
+0:51 Sequence
+0:51 move second child to first child ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:51 'r2' ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:51 Function Call: fn1(t2-tx-struct0-1; ( temp structure{ temp float c0, temp 2-component vector of float c1, temp float c2})
+0:51 'g_tTex2s1a' ( uniform texture2D)
+0:53 Branch: Return with expression
+0:53 Constant:
+0:53 0.000000
+0:53 0.000000
+0:53 0.000000
+0:53 0.000000
+0:42 Function Definition: main( ( temp void)
+0:42 Function Parameters:
+0:? Sequence
+0:42 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:42 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_sSamp' ( uniform sampler)
+0:? 'g_tTex2s1' ( uniform texture2D)
+0:? 'g_tTex2s2' ( uniform texture2D)
+0:? 'g_tTex2s3' ( uniform texture2D)
+0:? 'g_tTex2s4' ( uniform itexture2D)
+0:? 'g_tTex2s5' ( uniform utexture2D)
+0:? 'g_tTex2s1a' ( uniform texture2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 240
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 238
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 10 "s1_t"
+ MemberName 10(s1_t) 0 "c0"
+ MemberName 10(s1_t) 1 "c1"
+ MemberName 10(s1_t) 2 "c2"
+ Name 13 "fn1(t2-tx-struct0-1;"
+ Name 12 "t1"
+ Name 16 "s2_t"
+ MemberName 16(s2_t) 0 "c0"
+ MemberName 16(s2_t) 1 "c1"
+ Name 19 "fn1(t2-tx-struct1-1;"
+ Name 18 "t2"
+ Name 23 "@main("
+ Name 26 "@sampleResultShadow"
+ Name 30 "g_sSamp"
+ Name 39 "@sampleStructTemp"
+ Name 65 "@sampleResultShadow"
+ Name 71 "@sampleStructTemp"
+ Name 87 "s1"
+ Name 88 "@sampleResultShadow"
+ Name 90 "g_tTex2s1"
+ Name 98 "@sampleStructTemp"
+ Name 112 "s2"
+ Name 113 "@sampleResultShadow"
+ Name 114 "g_tTex2s2"
+ Name 122 "@sampleStructTemp"
+ Name 136 "s3_t"
+ MemberName 136(s3_t) 0 "c0"
+ MemberName 136(s3_t) 1 "c1"
+ Name 138 "s3"
+ Name 139 "@sampleResultShadow"
+ Name 140 "g_tTex2s3"
+ Name 148 "@sampleStructTemp"
+ Name 160 "s4_t"
+ MemberName 160(s4_t) 0 "c0"
+ MemberName 160(s4_t) 1 "c1"
+ MemberName 160(s4_t) 2 "c2"
+ Name 162 "s4"
+ Name 165 "@sampleResultShadow"
+ Name 168 "g_tTex2s4"
+ Name 177 "@sampleStructTemp"
+ Name 194 "s5_t"
+ MemberName 194(s5_t) 0 "c0"
+ MemberName 194(s5_t) 1 "c1"
+ Name 196 "s5"
+ Name 199 "@sampleResultShadow"
+ Name 202 "g_tTex2s5"
+ Name 211 "@sampleStructTemp"
+ Name 220 "r0"
+ Name 221 "param"
+ Name 224 "r1"
+ Name 225 "param"
+ Name 228 "r2"
+ Name 229 "g_tTex2s1a"
+ Name 230 "param"
+ Name 238 "@entryPointOutput"
+ Decorate 30(g_sSamp) DescriptorSet 0
+ Decorate 90(g_tTex2s1) DescriptorSet 0
+ Decorate 114(g_tTex2s2) DescriptorSet 0
+ Decorate 140(g_tTex2s3) DescriptorSet 0
+ Decorate 168(g_tTex2s4) DescriptorSet 0
+ Decorate 202(g_tTex2s5) DescriptorSet 0
+ Decorate 229(g_tTex2s1a) DescriptorSet 0
+ Decorate 238(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeImage 6(float) 2D sampled format:Unknown
+ 8: TypePointer Function 7
+ 9: TypeVector 6(float) 2
+ 10(s1_t): TypeStruct 6(float) 9(fvec2) 6(float)
+ 11: TypeFunction 10(s1_t) 8(ptr)
+ 15: TypeVector 6(float) 3
+ 16(s2_t): TypeStruct 6(float) 15(fvec3)
+ 17: TypeFunction 16(s2_t) 8(ptr)
+ 21: TypeVector 6(float) 4
+ 22: TypeFunction 21(fvec4)
+ 25: TypePointer Function 21(fvec4)
+ 28: TypeSampler
+ 29: TypePointer UniformConstant 28
+ 30(g_sSamp): 29(ptr) Variable UniformConstant
+ 32: TypeSampledImage 7
+ 34: 6(float) Constant 1058642330
+ 35: 6(float) Constant 1058810102
+ 36: 9(fvec2) ConstantComposite 34 35
+ 38: TypePointer Function 10(s1_t)
+ 40: TypeInt 32 1
+ 41: 40(int) Constant 0
+ 42: TypeInt 32 0
+ 43: 42(int) Constant 0
+ 44: TypePointer Function 6(float)
+ 48: 40(int) Constant 1
+ 49: 42(int) Constant 1
+ 53: 42(int) Constant 2
+ 57: 40(int) Constant 2
+ 58: 42(int) Constant 3
+ 70: TypePointer Function 16(s2_t)
+ 89: TypePointer UniformConstant 7
+ 90(g_tTex2s1): 89(ptr) Variable UniformConstant
+ 94: 6(float) Constant 1036831949
+ 95: 6(float) Constant 1038174126
+ 96: 9(fvec2) ConstantComposite 94 95
+ 114(g_tTex2s2): 89(ptr) Variable UniformConstant
+ 118: 6(float) Constant 1045220557
+ 119: 6(float) Constant 1045891645
+ 120: 9(fvec2) ConstantComposite 118 119
+ 136(s3_t): TypeStruct 9(fvec2) 6(float)
+ 137: TypePointer Function 136(s3_t)
+ 140(g_tTex2s3): 89(ptr) Variable UniformConstant
+ 144: 6(float) Constant 1050253722
+ 145: 6(float) Constant 1050589266
+ 146: 9(fvec2) ConstantComposite 144 145
+ 159: TypeVector 40(int) 2
+ 160(s4_t): TypeStruct 40(int) 159(ivec2) 40(int)
+ 161: TypePointer Function 160(s4_t)
+ 163: TypeVector 40(int) 4
+ 164: TypePointer Function 163(ivec4)
+ 166: TypeImage 40(int) 2D sampled format:Unknown
+ 167: TypePointer UniformConstant 166
+ 168(g_tTex2s4): 167(ptr) Variable UniformConstant
+ 171: TypeSampledImage 166
+ 173: 6(float) Constant 1053609165
+ 174: 6(float) Constant 1053944709
+ 175: 9(fvec2) ConstantComposite 173 174
+ 178: TypePointer Function 40(int)
+ 194(s5_t): TypeStruct 42(int) 42(int)
+ 195: TypePointer Function 194(s5_t)
+ 197: TypeVector 42(int) 4
+ 198: TypePointer Function 197(ivec4)
+ 200: TypeImage 42(int) 2D sampled format:Unknown
+ 201: TypePointer UniformConstant 200
+ 202(g_tTex2s5): 201(ptr) Variable UniformConstant
+ 205: TypeSampledImage 200
+ 207: 6(float) Constant 1056964608
+ 208: 6(float) Constant 1057132380
+ 209: 9(fvec2) ConstantComposite 207 208
+ 212: TypePointer Function 42(int)
+ 229(g_tTex2s1a): 89(ptr) Variable UniformConstant
+ 233: 6(float) Constant 0
+ 234: 21(fvec4) ConstantComposite 233 233 233 233
+ 237: TypePointer Output 21(fvec4)
+238(@entryPointOutput): 237(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 239: 21(fvec4) FunctionCall 23(@main()
+ Store 238(@entryPointOutput) 239
+ Return
+ FunctionEnd
+13(fn1(t2-tx-struct0-1;): 10(s1_t) Function None 11
+ 12(t1): 8(ptr) FunctionParameter
+ 14: Label
+26(@sampleResultShadow): 25(ptr) Variable Function
+39(@sampleStructTemp): 38(ptr) Variable Function
+ 27: 7 Load 12(t1)
+ 31: 28 Load 30(g_sSamp)
+ 33: 32 SampledImage 27 31
+ 37: 21(fvec4) ImageSampleImplicitLod 33 36
+ Store 26(@sampleResultShadow) 37
+ 45: 44(ptr) AccessChain 26(@sampleResultShadow) 43
+ 46: 6(float) Load 45
+ 47: 44(ptr) AccessChain 39(@sampleStructTemp) 41
+ Store 47 46
+ 50: 44(ptr) AccessChain 26(@sampleResultShadow) 49
+ 51: 6(float) Load 50
+ 52: 44(ptr) AccessChain 39(@sampleStructTemp) 48 43
+ Store 52 51
+ 54: 44(ptr) AccessChain 26(@sampleResultShadow) 53
+ 55: 6(float) Load 54
+ 56: 44(ptr) AccessChain 39(@sampleStructTemp) 48 49
+ Store 56 55
+ 59: 44(ptr) AccessChain 26(@sampleResultShadow) 58
+ 60: 6(float) Load 59
+ 61: 44(ptr) AccessChain 39(@sampleStructTemp) 57
+ Store 61 60
+ 62: 10(s1_t) Load 39(@sampleStructTemp)
+ ReturnValue 62
+ FunctionEnd
+19(fn1(t2-tx-struct1-1;): 16(s2_t) Function None 17
+ 18(t2): 8(ptr) FunctionParameter
+ 20: Label
+65(@sampleResultShadow): 25(ptr) Variable Function
+71(@sampleStructTemp): 70(ptr) Variable Function
+ 66: 7 Load 18(t2)
+ 67: 28 Load 30(g_sSamp)
+ 68: 32 SampledImage 66 67
+ 69: 21(fvec4) ImageSampleImplicitLod 68 36
+ Store 65(@sampleResultShadow) 69
+ 72: 44(ptr) AccessChain 65(@sampleResultShadow) 43
+ 73: 6(float) Load 72
+ 74: 44(ptr) AccessChain 71(@sampleStructTemp) 41
+ Store 74 73
+ 75: 44(ptr) AccessChain 65(@sampleResultShadow) 49
+ 76: 6(float) Load 75
+ 77: 44(ptr) AccessChain 71(@sampleStructTemp) 48 43
+ Store 77 76
+ 78: 44(ptr) AccessChain 65(@sampleResultShadow) 53
+ 79: 6(float) Load 78
+ 80: 44(ptr) AccessChain 71(@sampleStructTemp) 48 49
+ Store 80 79
+ 81: 44(ptr) AccessChain 65(@sampleResultShadow) 58
+ 82: 6(float) Load 81
+ 83: 44(ptr) AccessChain 71(@sampleStructTemp) 48 53
+ Store 83 82
+ 84: 16(s2_t) Load 71(@sampleStructTemp)
+ ReturnValue 84
+ FunctionEnd
+ 23(@main(): 21(fvec4) Function None 22
+ 24: Label
+ 87(s1): 38(ptr) Variable Function
+88(@sampleResultShadow): 25(ptr) Variable Function
+98(@sampleStructTemp): 38(ptr) Variable Function
+ 112(s2): 70(ptr) Variable Function
+113(@sampleResultShadow): 25(ptr) Variable Function
+122(@sampleStructTemp): 70(ptr) Variable Function
+ 138(s3): 137(ptr) Variable Function
+139(@sampleResultShadow): 25(ptr) Variable Function
+148(@sampleStructTemp): 137(ptr) Variable Function
+ 162(s4): 161(ptr) Variable Function
+165(@sampleResultShadow): 164(ptr) Variable Function
+177(@sampleStructTemp): 161(ptr) Variable Function
+ 196(s5): 195(ptr) Variable Function
+199(@sampleResultShadow): 198(ptr) Variable Function
+211(@sampleStructTemp): 195(ptr) Variable Function
+ 220(r0): 38(ptr) Variable Function
+ 221(param): 8(ptr) Variable Function
+ 224(r1): 70(ptr) Variable Function
+ 225(param): 8(ptr) Variable Function
+ 228(r2): 38(ptr) Variable Function
+ 230(param): 8(ptr) Variable Function
+ 91: 7 Load 90(g_tTex2s1)
+ 92: 28 Load 30(g_sSamp)
+ 93: 32 SampledImage 91 92
+ 97: 21(fvec4) ImageSampleImplicitLod 93 96
+ Store 88(@sampleResultShadow) 97
+ 99: 44(ptr) AccessChain 88(@sampleResultShadow) 43
+ 100: 6(float) Load 99
+ 101: 44(ptr) AccessChain 98(@sampleStructTemp) 41
+ Store 101 100
+ 102: 44(ptr) AccessChain 88(@sampleResultShadow) 49
+ 103: 6(float) Load 102
+ 104: 44(ptr) AccessChain 98(@sampleStructTemp) 48 43
+ Store 104 103
+ 105: 44(ptr) AccessChain 88(@sampleResultShadow) 53
+ 106: 6(float) Load 105
+ 107: 44(ptr) AccessChain 98(@sampleStructTemp) 48 49
+ Store 107 106
+ 108: 44(ptr) AccessChain 88(@sampleResultShadow) 58
+ 109: 6(float) Load 108
+ 110: 44(ptr) AccessChain 98(@sampleStructTemp) 57
+ Store 110 109
+ 111: 10(s1_t) Load 98(@sampleStructTemp)
+ Store 87(s1) 111
+ 115: 7 Load 114(g_tTex2s2)
+ 116: 28 Load 30(g_sSamp)
+ 117: 32 SampledImage 115 116
+ 121: 21(fvec4) ImageSampleImplicitLod 117 120
+ Store 113(@sampleResultShadow) 121
+ 123: 44(ptr) AccessChain 113(@sampleResultShadow) 43
+ 124: 6(float) Load 123
+ 125: 44(ptr) AccessChain 122(@sampleStructTemp) 41
+ Store 125 124
+ 126: 44(ptr) AccessChain 113(@sampleResultShadow) 49
+ 127: 6(float) Load 126
+ 128: 44(ptr) AccessChain 122(@sampleStructTemp) 48 43
+ Store 128 127
+ 129: 44(ptr) AccessChain 113(@sampleResultShadow) 53
+ 130: 6(float) Load 129
+ 131: 44(ptr) AccessChain 122(@sampleStructTemp) 48 49
+ Store 131 130
+ 132: 44(ptr) AccessChain 113(@sampleResultShadow) 58
+ 133: 6(float) Load 132
+ 134: 44(ptr) AccessChain 122(@sampleStructTemp) 48 53
+ Store 134 133
+ 135: 16(s2_t) Load 122(@sampleStructTemp)
+ Store 112(s2) 135
+ 141: 7 Load 140(g_tTex2s3)
+ 142: 28 Load 30(g_sSamp)
+ 143: 32 SampledImage 141 142
+ 147: 21(fvec4) ImageSampleImplicitLod 143 146
+ Store 139(@sampleResultShadow) 147
+ 149: 44(ptr) AccessChain 139(@sampleResultShadow) 43
+ 150: 6(float) Load 149
+ 151: 44(ptr) AccessChain 148(@sampleStructTemp) 41 43
+ Store 151 150
+ 152: 44(ptr) AccessChain 139(@sampleResultShadow) 49
+ 153: 6(float) Load 152
+ 154: 44(ptr) AccessChain 148(@sampleStructTemp) 41 49
+ Store 154 153
+ 155: 44(ptr) AccessChain 139(@sampleResultShadow) 53
+ 156: 6(float) Load 155
+ 157: 44(ptr) AccessChain 148(@sampleStructTemp) 48
+ Store 157 156
+ 158: 136(s3_t) Load 148(@sampleStructTemp)
+ Store 138(s3) 158
+ 169: 166 Load 168(g_tTex2s4)
+ 170: 28 Load 30(g_sSamp)
+ 172: 171 SampledImage 169 170
+ 176: 163(ivec4) ImageSampleImplicitLod 172 175
+ Store 165(@sampleResultShadow) 176
+ 179: 178(ptr) AccessChain 165(@sampleResultShadow) 43
+ 180: 40(int) Load 179
+ 181: 178(ptr) AccessChain 177(@sampleStructTemp) 41
+ Store 181 180
+ 182: 178(ptr) AccessChain 165(@sampleResultShadow) 49
+ 183: 40(int) Load 182
+ 184: 6(float) ConvertSToF 183
+ 185: 178(ptr) AccessChain 177(@sampleStructTemp) 48 43
+ Store 185 184
+ 186: 178(ptr) AccessChain 165(@sampleResultShadow) 53
+ 187: 40(int) Load 186
+ 188: 6(float) ConvertSToF 187
+ 189: 178(ptr) AccessChain 177(@sampleStructTemp) 48 49
+ Store 189 188
+ 190: 178(ptr) AccessChain 165(@sampleResultShadow) 58
+ 191: 40(int) Load 190
+ 192: 178(ptr) AccessChain 177(@sampleStructTemp) 57
+ Store 192 191
+ 193: 160(s4_t) Load 177(@sampleStructTemp)
+ Store 162(s4) 193
+ 203: 200 Load 202(g_tTex2s5)
+ 204: 28 Load 30(g_sSamp)
+ 206: 205 SampledImage 203 204
+ 210: 197(ivec4) ImageSampleImplicitLod 206 209
+ Store 199(@sampleResultShadow) 210
+ 213: 212(ptr) AccessChain 199(@sampleResultShadow) 43
+ 214: 42(int) Load 213
+ 215: 212(ptr) AccessChain 211(@sampleStructTemp) 41
+ Store 215 214
+ 216: 212(ptr) AccessChain 199(@sampleResultShadow) 49
+ 217: 42(int) Load 216
+ 218: 212(ptr) AccessChain 211(@sampleStructTemp) 48
+ Store 218 217
+ 219: 194(s5_t) Load 211(@sampleStructTemp)
+ Store 196(s5) 219
+ 222: 7 Load 90(g_tTex2s1)
+ Store 221(param) 222
+ 223: 10(s1_t) FunctionCall 13(fn1(t2-tx-struct0-1;) 221(param)
+ Store 220(r0) 223
+ 226: 7 Load 114(g_tTex2s2)
+ Store 225(param) 226
+ 227: 16(s2_t) FunctionCall 19(fn1(t2-tx-struct1-1;) 225(param)
+ Store 224(r1) 227
+ 231: 7 Load 229(g_tTex2s1a)
+ Store 230(param) 231
+ 232: 10(s1_t) FunctionCall 13(fn1(t2-tx-struct0-1;) 230(param)
+ Store 228(r2) 232
+ ReturnValue 234
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texture.subvec4.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texture.subvec4.frag.out
new file mode 100644
index 00000000000..deaa82b5c98
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texture.subvec4.frag.out
@@ -0,0 +1,544 @@
+hlsl.texture.subvec4.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: @main( ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:? Sequence
+0:24 Sequence
+0:24 move second child to first child ( temp 2-component vector of uint)
+0:24 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:24 textureSize ( temp 2-component vector of uint)
+0:24 'g_tTex2dmsf1' ( uniform texture2DMS)
+0:24 move second child to first child ( temp uint)
+0:24 'WidthU' ( temp uint)
+0:24 direct index ( temp uint)
+0:24 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 move second child to first child ( temp uint)
+0:24 'HeightU' ( temp uint)
+0:24 direct index ( temp uint)
+0:24 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:24 Constant:
+0:24 1 (const int)
+0:24 move second child to first child ( temp uint)
+0:24 'NumberOfSamplesU' ( temp uint)
+0:24 imageQuerySamples ( temp uint)
+0:24 'g_tTex2dmsf1' ( uniform texture2DMS)
+0:25 Sequence
+0:25 move second child to first child ( temp 2-component vector of uint)
+0:25 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:25 textureSize ( temp 2-component vector of uint)
+0:25 'g_tTex2dmsf2' ( uniform texture2DMS)
+0:25 move second child to first child ( temp uint)
+0:25 'WidthU' ( temp uint)
+0:25 direct index ( temp uint)
+0:25 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 move second child to first child ( temp uint)
+0:25 'HeightU' ( temp uint)
+0:25 direct index ( temp uint)
+0:25 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:25 Constant:
+0:25 1 (const int)
+0:25 move second child to first child ( temp uint)
+0:25 'NumberOfSamplesU' ( temp uint)
+0:25 imageQuerySamples ( temp uint)
+0:25 'g_tTex2dmsf2' ( uniform texture2DMS)
+0:26 Sequence
+0:26 move second child to first child ( temp 2-component vector of uint)
+0:26 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:26 textureSize ( temp 2-component vector of uint)
+0:26 'g_tTex2dmsf3' ( uniform texture2DMS)
+0:26 move second child to first child ( temp uint)
+0:26 'WidthU' ( temp uint)
+0:26 direct index ( temp uint)
+0:26 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 move second child to first child ( temp uint)
+0:26 'HeightU' ( temp uint)
+0:26 direct index ( temp uint)
+0:26 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:26 Constant:
+0:26 1 (const int)
+0:26 move second child to first child ( temp uint)
+0:26 'NumberOfSamplesU' ( temp uint)
+0:26 imageQuerySamples ( temp uint)
+0:26 'g_tTex2dmsf3' ( uniform texture2DMS)
+0:27 Sequence
+0:27 move second child to first child ( temp 2-component vector of uint)
+0:27 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:27 textureSize ( temp 2-component vector of uint)
+0:27 'g_tTex2dmsf4' ( uniform texture2DMS)
+0:27 move second child to first child ( temp uint)
+0:27 'WidthU' ( temp uint)
+0:27 direct index ( temp uint)
+0:27 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 move second child to first child ( temp uint)
+0:27 'HeightU' ( temp uint)
+0:27 direct index ( temp uint)
+0:27 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:27 Constant:
+0:27 1 (const int)
+0:27 move second child to first child ( temp uint)
+0:27 'NumberOfSamplesU' ( temp uint)
+0:27 imageQuerySamples ( temp uint)
+0:27 'g_tTex2dmsf4' ( uniform texture2DMS)
+0:29 Construct float ( temp float)
+0:? textureFetch ( temp 4-component vector of float)
+0:29 'g_tTex2dmsf1' ( uniform texture2DMS)
+0:? Constant:
+0:? 1 (const int)
+0:? 2 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:30 Construct vec2 ( temp 2-component vector of float)
+0:? textureFetch ( temp 4-component vector of float)
+0:30 'g_tTex2dmsf2' ( uniform texture2DMS)
+0:? Constant:
+0:? 1 (const int)
+0:? 2 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:31 Construct vec3 ( temp 3-component vector of float)
+0:? textureFetch ( temp 4-component vector of float)
+0:31 'g_tTex2dmsf3' ( uniform texture2DMS)
+0:? Constant:
+0:? 1 (const int)
+0:? 2 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:32 textureFetch ( temp 4-component vector of float)
+0:32 'g_tTex2dmsf4' ( uniform texture2DMS)
+0:? Constant:
+0:? 1 (const int)
+0:? 2 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:34 Construct float ( temp float)
+0:? texture ( temp 4-component vector of float)
+0:34 Construct combined texture-sampler ( temp sampler2D)
+0:34 'g_tTex2df1' ( uniform texture2D)
+0:34 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:35 Construct vec2 ( temp 2-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:35 Construct combined texture-sampler ( temp sampler2D)
+0:35 'g_tTex2df2' ( uniform texture2D)
+0:35 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:36 Construct vec3 ( temp 3-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:36 Construct combined texture-sampler ( temp sampler2D)
+0:36 'g_tTex2df3' ( uniform texture2D)
+0:36 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:37 texture ( temp 4-component vector of float)
+0:37 Construct combined texture-sampler ( temp sampler2D)
+0:37 'g_tTex2df4' ( uniform texture2D)
+0:37 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:39 Branch: Return with expression
+0:39 Constant:
+0:39 0.000000
+0:39 0.000000
+0:39 0.000000
+0:39 0.000000
+0:15 Function Definition: main( ( temp void)
+0:15 Function Parameters:
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:15 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tTex2dmsf1' ( uniform texture2DMS)
+0:? 'g_tTex2dmsf2' ( uniform texture2DMS)
+0:? 'g_tTex2dmsf3' ( uniform texture2DMS)
+0:? 'g_tTex2dmsf4' ( uniform texture2DMS)
+0:? 'g_tTex2df1' ( uniform texture2D)
+0:? 'g_tTex2df2' ( uniform texture2D)
+0:? 'g_tTex2df3' ( uniform texture2D)
+0:? 'g_tTex2df4' ( uniform texture2D)
+0:? 'g_sSamp' ( uniform sampler)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: @main( ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:? Sequence
+0:24 Sequence
+0:24 move second child to first child ( temp 2-component vector of uint)
+0:24 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:24 textureSize ( temp 2-component vector of uint)
+0:24 'g_tTex2dmsf1' ( uniform texture2DMS)
+0:24 move second child to first child ( temp uint)
+0:24 'WidthU' ( temp uint)
+0:24 direct index ( temp uint)
+0:24 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 move second child to first child ( temp uint)
+0:24 'HeightU' ( temp uint)
+0:24 direct index ( temp uint)
+0:24 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:24 Constant:
+0:24 1 (const int)
+0:24 move second child to first child ( temp uint)
+0:24 'NumberOfSamplesU' ( temp uint)
+0:24 imageQuerySamples ( temp uint)
+0:24 'g_tTex2dmsf1' ( uniform texture2DMS)
+0:25 Sequence
+0:25 move second child to first child ( temp 2-component vector of uint)
+0:25 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:25 textureSize ( temp 2-component vector of uint)
+0:25 'g_tTex2dmsf2' ( uniform texture2DMS)
+0:25 move second child to first child ( temp uint)
+0:25 'WidthU' ( temp uint)
+0:25 direct index ( temp uint)
+0:25 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 move second child to first child ( temp uint)
+0:25 'HeightU' ( temp uint)
+0:25 direct index ( temp uint)
+0:25 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:25 Constant:
+0:25 1 (const int)
+0:25 move second child to first child ( temp uint)
+0:25 'NumberOfSamplesU' ( temp uint)
+0:25 imageQuerySamples ( temp uint)
+0:25 'g_tTex2dmsf2' ( uniform texture2DMS)
+0:26 Sequence
+0:26 move second child to first child ( temp 2-component vector of uint)
+0:26 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:26 textureSize ( temp 2-component vector of uint)
+0:26 'g_tTex2dmsf3' ( uniform texture2DMS)
+0:26 move second child to first child ( temp uint)
+0:26 'WidthU' ( temp uint)
+0:26 direct index ( temp uint)
+0:26 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 move second child to first child ( temp uint)
+0:26 'HeightU' ( temp uint)
+0:26 direct index ( temp uint)
+0:26 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:26 Constant:
+0:26 1 (const int)
+0:26 move second child to first child ( temp uint)
+0:26 'NumberOfSamplesU' ( temp uint)
+0:26 imageQuerySamples ( temp uint)
+0:26 'g_tTex2dmsf3' ( uniform texture2DMS)
+0:27 Sequence
+0:27 move second child to first child ( temp 2-component vector of uint)
+0:27 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:27 textureSize ( temp 2-component vector of uint)
+0:27 'g_tTex2dmsf4' ( uniform texture2DMS)
+0:27 move second child to first child ( temp uint)
+0:27 'WidthU' ( temp uint)
+0:27 direct index ( temp uint)
+0:27 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 move second child to first child ( temp uint)
+0:27 'HeightU' ( temp uint)
+0:27 direct index ( temp uint)
+0:27 'sizeQueryTemp' ( temp 2-component vector of uint)
+0:27 Constant:
+0:27 1 (const int)
+0:27 move second child to first child ( temp uint)
+0:27 'NumberOfSamplesU' ( temp uint)
+0:27 imageQuerySamples ( temp uint)
+0:27 'g_tTex2dmsf4' ( uniform texture2DMS)
+0:29 Construct float ( temp float)
+0:? textureFetch ( temp 4-component vector of float)
+0:29 'g_tTex2dmsf1' ( uniform texture2DMS)
+0:? Constant:
+0:? 1 (const int)
+0:? 2 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:30 Construct vec2 ( temp 2-component vector of float)
+0:? textureFetch ( temp 4-component vector of float)
+0:30 'g_tTex2dmsf2' ( uniform texture2DMS)
+0:? Constant:
+0:? 1 (const int)
+0:? 2 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:31 Construct vec3 ( temp 3-component vector of float)
+0:? textureFetch ( temp 4-component vector of float)
+0:31 'g_tTex2dmsf3' ( uniform texture2DMS)
+0:? Constant:
+0:? 1 (const int)
+0:? 2 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:32 textureFetch ( temp 4-component vector of float)
+0:32 'g_tTex2dmsf4' ( uniform texture2DMS)
+0:? Constant:
+0:? 1 (const int)
+0:? 2 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:34 Construct float ( temp float)
+0:? texture ( temp 4-component vector of float)
+0:34 Construct combined texture-sampler ( temp sampler2D)
+0:34 'g_tTex2df1' ( uniform texture2D)
+0:34 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:35 Construct vec2 ( temp 2-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:35 Construct combined texture-sampler ( temp sampler2D)
+0:35 'g_tTex2df2' ( uniform texture2D)
+0:35 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:36 Construct vec3 ( temp 3-component vector of float)
+0:? texture ( temp 4-component vector of float)
+0:36 Construct combined texture-sampler ( temp sampler2D)
+0:36 'g_tTex2df3' ( uniform texture2D)
+0:36 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:37 texture ( temp 4-component vector of float)
+0:37 Construct combined texture-sampler ( temp sampler2D)
+0:37 'g_tTex2df4' ( uniform texture2D)
+0:37 'g_sSamp' ( uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:39 Branch: Return with expression
+0:39 Constant:
+0:39 0.000000
+0:39 0.000000
+0:39 0.000000
+0:39 0.000000
+0:15 Function Definition: main( ( temp void)
+0:15 Function Parameters:
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:15 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'g_tTex2dmsf1' ( uniform texture2DMS)
+0:? 'g_tTex2dmsf2' ( uniform texture2DMS)
+0:? 'g_tTex2dmsf3' ( uniform texture2DMS)
+0:? 'g_tTex2dmsf4' ( uniform texture2DMS)
+0:? 'g_tTex2df1' ( uniform texture2D)
+0:? 'g_tTex2df2' ( uniform texture2D)
+0:? 'g_tTex2df3' ( uniform texture2D)
+0:? 'g_tTex2df4' ( uniform texture2D)
+0:? 'g_sSamp' ( uniform sampler)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 130
+
+ Capability Shader
+ Capability ImageQuery
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 128
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 14 "sizeQueryTemp"
+ Name 17 "g_tTex2dmsf1"
+ Name 21 "WidthU"
+ Name 25 "HeightU"
+ Name 29 "NumberOfSamplesU"
+ Name 32 "sizeQueryTemp"
+ Name 33 "g_tTex2dmsf2"
+ Name 42 "sizeQueryTemp"
+ Name 43 "g_tTex2dmsf3"
+ Name 52 "sizeQueryTemp"
+ Name 53 "g_tTex2dmsf4"
+ Name 88 "g_tTex2df1"
+ Name 92 "g_sSamp"
+ Name 101 "g_tTex2df2"
+ Name 109 "g_tTex2df3"
+ Name 118 "g_tTex2df4"
+ Name 128 "@entryPointOutput"
+ Decorate 17(g_tTex2dmsf1) DescriptorSet 0
+ Decorate 33(g_tTex2dmsf2) DescriptorSet 0
+ Decorate 43(g_tTex2dmsf3) DescriptorSet 0
+ Decorate 53(g_tTex2dmsf4) DescriptorSet 0
+ Decorate 88(g_tTex2df1) DescriptorSet 0
+ Decorate 92(g_sSamp) DescriptorSet 0
+ Decorate 101(g_tTex2df2) DescriptorSet 0
+ Decorate 109(g_tTex2df3) DescriptorSet 0
+ Decorate 118(g_tTex2df4) DescriptorSet 0
+ Decorate 128(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeInt 32 0
+ 12: TypeVector 11(int) 2
+ 13: TypePointer Function 12(ivec2)
+ 15: TypeImage 6(float) 2D multi-sampled sampled format:Unknown
+ 16: TypePointer UniformConstant 15
+17(g_tTex2dmsf1): 16(ptr) Variable UniformConstant
+ 20: TypePointer Function 11(int)
+ 22: 11(int) Constant 0
+ 26: 11(int) Constant 1
+33(g_tTex2dmsf2): 16(ptr) Variable UniformConstant
+43(g_tTex2dmsf3): 16(ptr) Variable UniformConstant
+53(g_tTex2dmsf4): 16(ptr) Variable UniformConstant
+ 63: TypeInt 32 1
+ 64: TypeVector 63(int) 2
+ 65: 63(int) Constant 1
+ 66: 63(int) Constant 2
+ 67: 64(ivec2) ConstantComposite 65 66
+ 68: 63(int) Constant 3
+ 73: TypeVector 6(float) 2
+ 79: TypeVector 6(float) 3
+ 86: TypeImage 6(float) 2D sampled format:Unknown
+ 87: TypePointer UniformConstant 86
+ 88(g_tTex2df1): 87(ptr) Variable UniformConstant
+ 90: TypeSampler
+ 91: TypePointer UniformConstant 90
+ 92(g_sSamp): 91(ptr) Variable UniformConstant
+ 94: TypeSampledImage 86
+ 96: 6(float) Constant 1036831949
+ 97: 6(float) Constant 1045220557
+ 98: 73(fvec2) ConstantComposite 96 97
+ 101(g_tTex2df2): 87(ptr) Variable UniformConstant
+ 109(g_tTex2df3): 87(ptr) Variable UniformConstant
+ 118(g_tTex2df4): 87(ptr) Variable UniformConstant
+ 123: 6(float) Constant 0
+ 124: 7(fvec4) ConstantComposite 123 123 123 123
+ 127: TypePointer Output 7(fvec4)
+128(@entryPointOutput): 127(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 129: 7(fvec4) FunctionCall 9(@main()
+ Store 128(@entryPointOutput) 129
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+14(sizeQueryTemp): 13(ptr) Variable Function
+ 21(WidthU): 20(ptr) Variable Function
+ 25(HeightU): 20(ptr) Variable Function
+29(NumberOfSamplesU): 20(ptr) Variable Function
+32(sizeQueryTemp): 13(ptr) Variable Function
+42(sizeQueryTemp): 13(ptr) Variable Function
+52(sizeQueryTemp): 13(ptr) Variable Function
+ 18: 15 Load 17(g_tTex2dmsf1)
+ 19: 12(ivec2) ImageQuerySize 18
+ Store 14(sizeQueryTemp) 19
+ 23: 20(ptr) AccessChain 14(sizeQueryTemp) 22
+ 24: 11(int) Load 23
+ Store 21(WidthU) 24
+ 27: 20(ptr) AccessChain 14(sizeQueryTemp) 26
+ 28: 11(int) Load 27
+ Store 25(HeightU) 28
+ 30: 15 Load 17(g_tTex2dmsf1)
+ 31: 11(int) ImageQuerySamples 30
+ Store 29(NumberOfSamplesU) 31
+ 34: 15 Load 33(g_tTex2dmsf2)
+ 35: 12(ivec2) ImageQuerySize 34
+ Store 32(sizeQueryTemp) 35
+ 36: 20(ptr) AccessChain 32(sizeQueryTemp) 22
+ 37: 11(int) Load 36
+ Store 21(WidthU) 37
+ 38: 20(ptr) AccessChain 32(sizeQueryTemp) 26
+ 39: 11(int) Load 38
+ Store 25(HeightU) 39
+ 40: 15 Load 33(g_tTex2dmsf2)
+ 41: 11(int) ImageQuerySamples 40
+ Store 29(NumberOfSamplesU) 41
+ 44: 15 Load 43(g_tTex2dmsf3)
+ 45: 12(ivec2) ImageQuerySize 44
+ Store 42(sizeQueryTemp) 45
+ 46: 20(ptr) AccessChain 42(sizeQueryTemp) 22
+ 47: 11(int) Load 46
+ Store 21(WidthU) 47
+ 48: 20(ptr) AccessChain 42(sizeQueryTemp) 26
+ 49: 11(int) Load 48
+ Store 25(HeightU) 49
+ 50: 15 Load 43(g_tTex2dmsf3)
+ 51: 11(int) ImageQuerySamples 50
+ Store 29(NumberOfSamplesU) 51
+ 54: 15 Load 53(g_tTex2dmsf4)
+ 55: 12(ivec2) ImageQuerySize 54
+ Store 52(sizeQueryTemp) 55
+ 56: 20(ptr) AccessChain 52(sizeQueryTemp) 22
+ 57: 11(int) Load 56
+ Store 21(WidthU) 57
+ 58: 20(ptr) AccessChain 52(sizeQueryTemp) 26
+ 59: 11(int) Load 58
+ Store 25(HeightU) 59
+ 60: 15 Load 53(g_tTex2dmsf4)
+ 61: 11(int) ImageQuerySamples 60
+ Store 29(NumberOfSamplesU) 61
+ 62: 15 Load 17(g_tTex2dmsf1)
+ 69: 7(fvec4) ImageFetch 62 67 Sample 68
+ 70: 6(float) CompositeExtract 69 0
+ 71: 15 Load 33(g_tTex2dmsf2)
+ 72: 7(fvec4) ImageFetch 71 67 Sample 68
+ 74: 6(float) CompositeExtract 72 0
+ 75: 6(float) CompositeExtract 72 1
+ 76: 73(fvec2) CompositeConstruct 74 75
+ 77: 15 Load 43(g_tTex2dmsf3)
+ 78: 7(fvec4) ImageFetch 77 67 Sample 68
+ 80: 6(float) CompositeExtract 78 0
+ 81: 6(float) CompositeExtract 78 1
+ 82: 6(float) CompositeExtract 78 2
+ 83: 79(fvec3) CompositeConstruct 80 81 82
+ 84: 15 Load 53(g_tTex2dmsf4)
+ 85: 7(fvec4) ImageFetch 84 67 Sample 68
+ 89: 86 Load 88(g_tTex2df1)
+ 93: 90 Load 92(g_sSamp)
+ 95: 94 SampledImage 89 93
+ 99: 7(fvec4) ImageSampleImplicitLod 95 98
+ 100: 6(float) CompositeExtract 99 0
+ 102: 86 Load 101(g_tTex2df2)
+ 103: 90 Load 92(g_sSamp)
+ 104: 94 SampledImage 102 103
+ 105: 7(fvec4) ImageSampleImplicitLod 104 98
+ 106: 6(float) CompositeExtract 105 0
+ 107: 6(float) CompositeExtract 105 1
+ 108: 73(fvec2) CompositeConstruct 106 107
+ 110: 86 Load 109(g_tTex2df3)
+ 111: 90 Load 92(g_sSamp)
+ 112: 94 SampledImage 110 111
+ 113: 7(fvec4) ImageSampleImplicitLod 112 98
+ 114: 6(float) CompositeExtract 113 0
+ 115: 6(float) CompositeExtract 113 1
+ 116: 6(float) CompositeExtract 113 2
+ 117: 79(fvec3) CompositeConstruct 114 115 116
+ 119: 86 Load 118(g_tTex2df4)
+ 120: 90 Load 92(g_sSamp)
+ 121: 94 SampledImage 119 120
+ 122: 7(fvec4) ImageSampleImplicitLod 121 98
+ ReturnValue 124
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texturebuffer.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texturebuffer.frag.out
new file mode 100644
index 00000000000..e1e36b00f25
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.texturebuffer.frag.out
@@ -0,0 +1,153 @@
+hlsl.texturebuffer.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:15 'pos' ( in 4-component vector of float)
+0:? Sequence
+0:16 Branch: Return with expression
+0:16 add ( temp 4-component vector of float)
+0:16 f: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
+0:16 'TextureBuffer_var' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f, layout( row_major std430) buffer 4-component vector of int i})
+0:16 Constant:
+0:16 0 (const int)
+0:16 f2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
+0:16 'anon@0' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f2, layout( row_major std430) buffer 4-component vector of int i2})
+0:16 Constant:
+0:16 0 (const uint)
+0:15 Function Definition: main( ( temp void)
+0:15 Function Parameters:
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:15 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:15 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'TextureBuffer_var' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f, layout( row_major std430) buffer 4-component vector of int i})
+0:? 'anon@0' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f2, layout( row_major std430) buffer 4-component vector of int i2})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:15 'pos' ( in 4-component vector of float)
+0:? Sequence
+0:16 Branch: Return with expression
+0:16 add ( temp 4-component vector of float)
+0:16 f: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
+0:16 'TextureBuffer_var' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f, layout( row_major std430) buffer 4-component vector of int i})
+0:16 Constant:
+0:16 0 (const int)
+0:16 f2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
+0:16 'anon@0' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f2, layout( row_major std430) buffer 4-component vector of int i2})
+0:16 Constant:
+0:16 0 (const uint)
+0:15 Function Definition: main( ( temp void)
+0:15 Function Parameters:
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+0:15 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:15 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'pos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'TextureBuffer_var' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f, layout( row_major std430) buffer 4-component vector of int i})
+0:? 'anon@0' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float f2, layout( row_major std430) buffer 4-component vector of int i2})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'pos' ( in 4-component vector of float FragCoord)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 39
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 32 35
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vf4;"
+ Name 10 "pos"
+ Name 15 "TextureBuffer_var"
+ MemberName 15(TextureBuffer_var) 0 "f"
+ MemberName 15(TextureBuffer_var) 1 "i"
+ Name 17 "TextureBuffer_var"
+ Name 22 "tbuf2"
+ MemberName 22(tbuf2) 0 "f2"
+ MemberName 22(tbuf2) 1 "i2"
+ Name 24 ""
+ Name 30 "pos"
+ Name 32 "pos"
+ Name 35 "@entryPointOutput"
+ Name 36 "param"
+ MemberDecorate 15(TextureBuffer_var) 0 NonWritable
+ MemberDecorate 15(TextureBuffer_var) 0 Offset 0
+ MemberDecorate 15(TextureBuffer_var) 1 NonWritable
+ MemberDecorate 15(TextureBuffer_var) 1 Offset 16
+ Decorate 15(TextureBuffer_var) BufferBlock
+ Decorate 17(TextureBuffer_var) DescriptorSet 0
+ Decorate 17(TextureBuffer_var) Binding 0
+ MemberDecorate 22(tbuf2) 0 NonWritable
+ MemberDecorate 22(tbuf2) 0 Offset 0
+ MemberDecorate 22(tbuf2) 1 NonWritable
+ MemberDecorate 22(tbuf2) 1 Offset 16
+ Decorate 22(tbuf2) BufferBlock
+ Decorate 24 DescriptorSet 0
+ Decorate 32(pos) BuiltIn FragCoord
+ Decorate 35(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeFunction 7(fvec4) 8(ptr)
+ 13: TypeInt 32 1
+ 14: TypeVector 13(int) 4
+15(TextureBuffer_var): TypeStruct 7(fvec4) 14(ivec4)
+ 16: TypePointer Uniform 15(TextureBuffer_var)
+17(TextureBuffer_var): 16(ptr) Variable Uniform
+ 18: 13(int) Constant 0
+ 19: TypePointer Uniform 7(fvec4)
+ 22(tbuf2): TypeStruct 7(fvec4) 14(ivec4)
+ 23: TypePointer Uniform 22(tbuf2)
+ 24: 23(ptr) Variable Uniform
+ 31: TypePointer Input 7(fvec4)
+ 32(pos): 31(ptr) Variable Input
+ 34: TypePointer Output 7(fvec4)
+35(@entryPointOutput): 34(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 30(pos): 8(ptr) Variable Function
+ 36(param): 8(ptr) Variable Function
+ 33: 7(fvec4) Load 32(pos)
+ Store 30(pos) 33
+ 37: 7(fvec4) Load 30(pos)
+ Store 36(param) 37
+ 38: 7(fvec4) FunctionCall 11(@main(vf4;) 36(param)
+ Store 35(@entryPointOutput) 38
+ Return
+ FunctionEnd
+ 11(@main(vf4;): 7(fvec4) Function None 9
+ 10(pos): 8(ptr) FunctionParameter
+ 12: Label
+ 20: 19(ptr) AccessChain 17(TextureBuffer_var) 18
+ 21: 7(fvec4) Load 20
+ 25: 19(ptr) AccessChain 24 18
+ 26: 7(fvec4) Load 25
+ 27: 7(fvec4) FAdd 21 26
+ ReturnValue 27
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.this.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.this.frag.out
index 8619468e2e6..f538abc32bb 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.this.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.this.frag.out
@@ -1,5 +1,5 @@
hlsl.this.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
@@ -121,7 +121,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Sequence
@@ -240,7 +240,7 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 98
Capability Shader
@@ -248,6 +248,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 96
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 "type1"
MemberName 9(type1) 0 "bar"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.tx.bracket.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.tx.bracket.frag.out
index 9e1db24f35e..94bea4cd3b5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.tx.bracket.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.tx.bracket.frag.out
@@ -1,5 +1,5 @@
hlsl.tx.bracket.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: Fn1(vi4; ( temp 4-component vector of int)
@@ -183,7 +183,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:45 Sequence
0:45 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:45 Color: direct index for structure ( temp 4-component vector of float)
0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:45 Constant:
@@ -206,13 +206,13 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di4a' ( uniform itexture2DArray)
0:? 'g_tTex2du4a' ( uniform utexture2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:38 Function Definition: Fn1(vi4; ( temp 4-component vector of int)
@@ -396,7 +396,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:45 Sequence
0:45 move second child to first child ( temp 4-component vector of float)
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:45 Color: direct index for structure ( temp 4-component vector of float)
0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:45 Constant:
@@ -419,10 +419,10 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2di4a' ( uniform itexture2DArray)
0:? 'g_tTex2du4a' ( uniform utexture2DArray)
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
-0:? 'Color' (layout( location=0) out 4-component vector of float)
+0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 188
Capability Shader
@@ -431,6 +431,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 164
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "Fn1(vi4;"
Name 10 "x"
@@ -474,7 +475,7 @@ gl_FragCoord origin is upper left
Name 147 "param"
Name 153 "param"
Name 156 "psout"
- Name 164 "Color"
+ Name 164 "@entryPointOutput.Color"
Name 169 "g_sSamp"
Name 172 "g_tTex1df4a"
Name 175 "g_tTex1di4a"
@@ -502,7 +503,7 @@ gl_FragCoord origin is upper left
Decorate 114(g_tTex3df4) DescriptorSet 0
Decorate 124(g_tTex3di4) DescriptorSet 0
Decorate 132(g_tTex3du4) DescriptorSet 0
- Decorate 164(Color) Location 0
+ Decorate 164(@entryPointOutput.Color) Location 0
Decorate 169(g_sSamp) DescriptorSet 0
Decorate 169(g_sSamp) Binding 0
Decorate 172(g_tTex1df4a) DescriptorSet 0
@@ -572,7 +573,7 @@ gl_FragCoord origin is upper left
157: 20(float) Constant 1065353216
158: 21(fvec4) ConstantComposite 157 157 157 157
163: TypePointer Output 21(fvec4)
- 164(Color): 163(ptr) Variable Output
+164(@entryPointOutput.Color): 163(ptr) Variable Output
167: TypeSampler
168: TypePointer UniformConstant 167
169(g_sSamp): 168(ptr) Variable UniformConstant
@@ -598,7 +599,7 @@ gl_FragCoord origin is upper left
5: Label
165:30(PS_OUTPUT) FunctionCall 32(@main()
166: 21(fvec4) CompositeExtract 165 0
- Store 164(Color) 166
+ Store 164(@entryPointOutput.Color) 166
Return
FunctionEnd
11(Fn1(vi4;): 7(ivec4) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.tx.overload.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.tx.overload.frag.out
new file mode 100644
index 00000000000..6e6bef07f07
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.tx.overload.frag.out
@@ -0,0 +1,247 @@
+hlsl.tx.overload.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: Func(t211; ( temp float)
+0:8 Function Parameters:
+0:8 'DummyTex' ( in texture2D)
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 Constant:
+0:8 1.000000
+0:9 Function Definition: Func(t21; ( temp 4-component vector of float)
+0:9 Function Parameters:
+0:9 'DummyTex' ( in texture2D)
+0:? Sequence
+0:9 Branch: Return with expression
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:11 Function Definition: Func(I211; ( temp float)
+0:11 Function Parameters:
+0:11 'DummyTex' (layout( r32f) in image2D)
+0:? Sequence
+0:11 Branch: Return with expression
+0:11 Constant:
+0:11 1.000000
+0:12 Function Definition: Func(I21; ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:12 'DummyTex' (layout( rgba32f) in image2D)
+0:? Sequence
+0:12 Branch: Return with expression
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:15 Function Definition: @main( ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:? Sequence
+0:16 Branch: Return with expression
+0:16 add ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 Function Call: Func(t211; ( temp float)
+0:16 'tf1' ( uniform texture2D)
+0:16 Function Call: Func(t21; ( temp 4-component vector of float)
+0:16 'tf4' ( uniform texture2D)
+0:16 Function Call: Func(I211; ( temp float)
+0:16 'twf1' (layout( r32f) uniform image2D)
+0:16 Function Call: Func(I21; ( temp 4-component vector of float)
+0:16 'twf4' (layout( rgba32f) uniform image2D)
+0:15 Function Definition: main( ( temp void)
+0:15 Function Parameters:
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:15 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'tf1' ( uniform texture2D)
+0:? 'tf4' ( uniform texture2D)
+0:? 'twf1' (layout( r32f) uniform image2D)
+0:? 'twf4' (layout( rgba32f) uniform image2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: Func(t211; ( temp float)
+0:8 Function Parameters:
+0:8 'DummyTex' ( in texture2D)
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 Constant:
+0:8 1.000000
+0:9 Function Definition: Func(t21; ( temp 4-component vector of float)
+0:9 Function Parameters:
+0:9 'DummyTex' ( in texture2D)
+0:? Sequence
+0:9 Branch: Return with expression
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:11 Function Definition: Func(I211; ( temp float)
+0:11 Function Parameters:
+0:11 'DummyTex' (layout( r32f) in image2D)
+0:? Sequence
+0:11 Branch: Return with expression
+0:11 Constant:
+0:11 1.000000
+0:12 Function Definition: Func(I21; ( temp 4-component vector of float)
+0:12 Function Parameters:
+0:12 'DummyTex' (layout( rgba32f) in image2D)
+0:? Sequence
+0:12 Branch: Return with expression
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:15 Function Definition: @main( ( temp 4-component vector of float)
+0:15 Function Parameters:
+0:? Sequence
+0:16 Branch: Return with expression
+0:16 add ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 add ( temp 4-component vector of float)
+0:16 Function Call: Func(t211; ( temp float)
+0:16 'tf1' ( uniform texture2D)
+0:16 Function Call: Func(t21; ( temp 4-component vector of float)
+0:16 'tf4' ( uniform texture2D)
+0:16 Function Call: Func(I211; ( temp float)
+0:16 'twf1' (layout( r32f) uniform image2D)
+0:16 Function Call: Func(I21; ( temp 4-component vector of float)
+0:16 'twf4' (layout( rgba32f) uniform image2D)
+0:15 Function Definition: main( ( temp void)
+0:15 Function Parameters:
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:15 Function Call: @main( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'tf1' ( uniform texture2D)
+0:? 'tf4' ( uniform texture2D)
+0:? 'twf1' (layout( r32f) uniform image2D)
+0:? 'twf4' (layout( rgba32f) uniform image2D)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 73
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 71
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "Func(t211;"
+ Name 10 "DummyTex"
+ Name 16 "Func(t21;"
+ Name 15 "DummyTex"
+ Name 22 "Func(I211;"
+ Name 21 "DummyTex"
+ Name 28 "Func(I21;"
+ Name 27 "DummyTex"
+ Name 31 "@main("
+ Name 45 "tf1"
+ Name 46 "param"
+ Name 49 "tf4"
+ Name 50 "param"
+ Name 56 "twf1"
+ Name 57 "param"
+ Name 63 "twf4"
+ Name 64 "param"
+ Name 71 "@entryPointOutput"
+ Decorate 45(tf1) DescriptorSet 0
+ Decorate 49(tf4) DescriptorSet 0
+ Decorate 56(twf1) DescriptorSet 0
+ Decorate 63(twf4) DescriptorSet 0
+ Decorate 71(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeImage 6(float) 2D sampled format:Unknown
+ 8: TypePointer Function 7
+ 9: TypeFunction 6(float) 8(ptr)
+ 13: TypeVector 6(float) 4
+ 14: TypeFunction 13(fvec4) 8(ptr)
+ 18: TypeImage 6(float) 2D nonsampled format:R32f
+ 19: TypePointer Function 18
+ 20: TypeFunction 6(float) 19(ptr)
+ 24: TypeImage 6(float) 2D nonsampled format:Rgba32f
+ 25: TypePointer Function 24
+ 26: TypeFunction 13(fvec4) 25(ptr)
+ 30: TypeFunction 13(fvec4)
+ 33: 6(float) Constant 1065353216
+ 36: 6(float) Constant 0
+ 37: 13(fvec4) ConstantComposite 36 36 36 36
+ 44: TypePointer UniformConstant 7
+ 45(tf1): 44(ptr) Variable UniformConstant
+ 49(tf4): 44(ptr) Variable UniformConstant
+ 55: TypePointer UniformConstant 18
+ 56(twf1): 55(ptr) Variable UniformConstant
+ 62: TypePointer UniformConstant 24
+ 63(twf4): 62(ptr) Variable UniformConstant
+ 70: TypePointer Output 13(fvec4)
+71(@entryPointOutput): 70(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 72: 13(fvec4) FunctionCall 31(@main()
+ Store 71(@entryPointOutput) 72
+ Return
+ FunctionEnd
+ 11(Func(t211;): 6(float) Function None 9
+ 10(DummyTex): 8(ptr) FunctionParameter
+ 12: Label
+ ReturnValue 33
+ FunctionEnd
+ 16(Func(t21;): 13(fvec4) Function None 14
+ 15(DummyTex): 8(ptr) FunctionParameter
+ 17: Label
+ ReturnValue 37
+ FunctionEnd
+ 22(Func(I211;): 6(float) Function None 20
+ 21(DummyTex): 19(ptr) FunctionParameter
+ 23: Label
+ ReturnValue 33
+ FunctionEnd
+ 28(Func(I21;): 13(fvec4) Function None 26
+ 27(DummyTex): 25(ptr) FunctionParameter
+ 29: Label
+ ReturnValue 37
+ FunctionEnd
+ 31(@main(): 13(fvec4) Function None 30
+ 32: Label
+ 46(param): 8(ptr) Variable Function
+ 50(param): 8(ptr) Variable Function
+ 57(param): 19(ptr) Variable Function
+ 64(param): 25(ptr) Variable Function
+ 47: 7 Load 45(tf1)
+ Store 46(param) 47
+ 48: 6(float) FunctionCall 11(Func(t211;) 46(param)
+ 51: 7 Load 49(tf4)
+ Store 50(param) 51
+ 52: 13(fvec4) FunctionCall 16(Func(t21;) 50(param)
+ 53: 13(fvec4) CompositeConstruct 48 48 48 48
+ 54: 13(fvec4) FAdd 53 52
+ 58: 18 Load 56(twf1)
+ Store 57(param) 58
+ 59: 6(float) FunctionCall 22(Func(I211;) 57(param)
+ 60: 13(fvec4) CompositeConstruct 59 59 59 59
+ 61: 13(fvec4) FAdd 54 60
+ 65: 24 Load 63(twf4)
+ Store 64(param) 65
+ 66: 13(fvec4) FunctionCall 28(Func(I21;) 64(param)
+ 67: 13(fvec4) FAdd 61 66
+ ReturnValue 67
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.type.half.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.type.half.frag.out
index 104c7394690..75750f92efc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.type.half.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.type.half.frag.out
@@ -1,47 +1,75 @@
hlsl.type.half.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: @main( ( temp 4-component vector of float)
0:3 Function Parameters:
0:? Sequence
0:4 Sequence
-0:4 move second child to first child ( temp mediump float)
-0:4 'h0' ( temp mediump float)
+0:4 move second child to first child ( temp float)
+0:4 'h0' ( temp float)
0:4 Constant:
0:4 0.000000
0:5 Sequence
-0:5 move second child to first child ( temp mediump 1-component vector of float)
-0:5 'h1' ( temp mediump 1-component vector of float)
+0:5 move second child to first child ( temp 1-component vector of float)
+0:5 'h1' ( temp 1-component vector of float)
0:5 Constant:
0:5 1.000000
0:6 Sequence
-0:6 move second child to first child ( temp mediump 2-component vector of float)
-0:6 'h2' ( temp mediump 2-component vector of float)
+0:6 move second child to first child ( temp 2-component vector of float)
+0:6 'h2' ( temp 2-component vector of float)
0:6 Constant:
0:6 2.000000
0:6 2.000000
0:7 Sequence
-0:7 move second child to first child ( temp mediump 3-component vector of float)
-0:7 'h3' ( temp mediump 3-component vector of float)
+0:7 move second child to first child ( temp 3-component vector of float)
+0:7 'h3' ( temp 3-component vector of float)
0:7 Constant:
0:7 3.000000
0:7 3.000000
0:7 3.000000
0:8 Sequence
-0:8 move second child to first child ( temp mediump 4-component vector of float)
-0:8 'h4' ( temp mediump 4-component vector of float)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'h4' ( temp 4-component vector of float)
0:8 Constant:
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
-0:10 Branch: Return with expression
-0:10 Constant:
-0:10 0.000000
-0:10 0.000000
-0:10 0.000000
-0:10 0.000000
+0:15 Sequence
+0:15 move second child to first child ( temp 2X2 matrix of float)
+0:15 'h22' ( temp 2X2 matrix of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:16 Sequence
+0:16 move second child to first child ( temp 2X3 matrix of float)
+0:16 'h23' ( temp 2X3 matrix of float)
+0:16 Constant:
+0:16 4.900000
+0:16 4.900000
+0:16 4.900000
+0:16 4.900000
+0:16 4.900000
+0:16 4.900000
+0:27 Branch: Return with expression
+0:27 Construct vec4 ( temp 4-component vector of float)
+0:27 add ( temp float)
+0:27 add ( temp float)
+0:27 direct index ( temp float)
+0:27 direct index ( temp 3-component vector of float)
+0:27 'h23' ( temp 2X3 matrix of float)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 0 (const int)
+0:27 direct index ( temp float)
+0:27 'h4' ( temp 4-component vector of float)
+0:27 Constant:
+0:27 1 (const int)
+0:27 'h0' ( temp float)
0:3 Function Definition: main( ( temp void)
0:3 Function Parameters:
0:? Sequence
@@ -55,49 +83,77 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:3 Function Definition: @main( ( temp 4-component vector of float)
0:3 Function Parameters:
0:? Sequence
0:4 Sequence
-0:4 move second child to first child ( temp mediump float)
-0:4 'h0' ( temp mediump float)
+0:4 move second child to first child ( temp float)
+0:4 'h0' ( temp float)
0:4 Constant:
0:4 0.000000
0:5 Sequence
-0:5 move second child to first child ( temp mediump 1-component vector of float)
-0:5 'h1' ( temp mediump 1-component vector of float)
+0:5 move second child to first child ( temp 1-component vector of float)
+0:5 'h1' ( temp 1-component vector of float)
0:5 Constant:
0:5 1.000000
0:6 Sequence
-0:6 move second child to first child ( temp mediump 2-component vector of float)
-0:6 'h2' ( temp mediump 2-component vector of float)
+0:6 move second child to first child ( temp 2-component vector of float)
+0:6 'h2' ( temp 2-component vector of float)
0:6 Constant:
0:6 2.000000
0:6 2.000000
0:7 Sequence
-0:7 move second child to first child ( temp mediump 3-component vector of float)
-0:7 'h3' ( temp mediump 3-component vector of float)
+0:7 move second child to first child ( temp 3-component vector of float)
+0:7 'h3' ( temp 3-component vector of float)
0:7 Constant:
0:7 3.000000
0:7 3.000000
0:7 3.000000
0:8 Sequence
-0:8 move second child to first child ( temp mediump 4-component vector of float)
-0:8 'h4' ( temp mediump 4-component vector of float)
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'h4' ( temp 4-component vector of float)
0:8 Constant:
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
-0:10 Branch: Return with expression
-0:10 Constant:
-0:10 0.000000
-0:10 0.000000
-0:10 0.000000
-0:10 0.000000
+0:15 Sequence
+0:15 move second child to first child ( temp 2X2 matrix of float)
+0:15 'h22' ( temp 2X2 matrix of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:16 Sequence
+0:16 move second child to first child ( temp 2X3 matrix of float)
+0:16 'h23' ( temp 2X3 matrix of float)
+0:16 Constant:
+0:16 4.900000
+0:16 4.900000
+0:16 4.900000
+0:16 4.900000
+0:16 4.900000
+0:16 4.900000
+0:27 Branch: Return with expression
+0:27 Construct vec4 ( temp 4-component vector of float)
+0:27 add ( temp float)
+0:27 add ( temp float)
+0:27 direct index ( temp float)
+0:27 direct index ( temp 3-component vector of float)
+0:27 'h23' ( temp 2X3 matrix of float)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 0 (const int)
+0:27 direct index ( temp float)
+0:27 'h4' ( temp 4-component vector of float)
+0:27 Constant:
+0:27 1 (const int)
+0:27 'h0' ( temp float)
0:3 Function Definition: main( ( temp void)
0:3 Function Parameters:
0:? Sequence
@@ -108,14 +164,15 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 36
+// Generated by (magic number): 80002
+// Id's are bound by 60
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 34
+ EntryPoint Fragment 4 "main" 58
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 9 "@main("
Name 12 "h0"
@@ -123,13 +180,10 @@ gl_FragCoord origin is upper left
Name 18 "h2"
Name 23 "h3"
Name 27 "h4"
- Name 34 "@entryPointOutput"
- Decorate 12(h0) RelaxedPrecision
- Decorate 14(h1) RelaxedPrecision
- Decorate 18(h2) RelaxedPrecision
- Decorate 23(h3) RelaxedPrecision
- Decorate 27(h4) RelaxedPrecision
- Decorate 34(@entryPointOutput) Location 0
+ Name 32 "h22"
+ Name 38 "h23"
+ Name 58 "@entryPointOutput"
+ Decorate 58(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -149,13 +203,27 @@ gl_FragCoord origin is upper left
26: TypePointer Function 7(fvec4)
28: 6(float) Constant 1082130432
29: 7(fvec4) ConstantComposite 28 28 28 28
- 30: 7(fvec4) ConstantComposite 13 13 13 13
- 33: TypePointer Output 7(fvec4)
-34(@entryPointOutput): 33(ptr) Variable Output
+ 30: TypeMatrix 16(fvec2) 2
+ 31: TypePointer Function 30
+ 33: 16(fvec2) ConstantComposite 15 19
+ 34: 16(fvec2) ConstantComposite 24 28
+ 35: 30 ConstantComposite 33 34
+ 36: TypeMatrix 21(fvec3) 2
+ 37: TypePointer Function 36
+ 39: 6(float) Constant 1084017869
+ 40: 21(fvec3) ConstantComposite 39 39 39
+ 41: 36 ConstantComposite 40 40
+ 42: TypeInt 32 1
+ 43: 42(int) Constant 0
+ 44: TypeInt 32 0
+ 45: 44(int) Constant 0
+ 48: 44(int) Constant 1
+ 57: TypePointer Output 7(fvec4)
+58(@entryPointOutput): 57(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 35: 7(fvec4) FunctionCall 9(@main()
- Store 34(@entryPointOutput) 35
+ 59: 7(fvec4) FunctionCall 9(@main()
+ Store 58(@entryPointOutput) 59
Return
FunctionEnd
9(@main(): 7(fvec4) Function None 8
@@ -165,10 +233,22 @@ gl_FragCoord origin is upper left
18(h2): 17(ptr) Variable Function
23(h3): 22(ptr) Variable Function
27(h4): 26(ptr) Variable Function
+ 32(h22): 31(ptr) Variable Function
+ 38(h23): 37(ptr) Variable Function
Store 12(h0) 13
Store 14(h1) 15
Store 18(h2) 20
Store 23(h3) 25
Store 27(h4) 29
- ReturnValue 30
+ Store 32(h22) 35
+ Store 38(h23) 41
+ 46: 11(ptr) AccessChain 38(h23) 43 45
+ 47: 6(float) Load 46
+ 49: 11(ptr) AccessChain 27(h4) 48
+ 50: 6(float) Load 49
+ 51: 6(float) FAdd 47 50
+ 52: 6(float) Load 12(h0)
+ 53: 6(float) FAdd 51 52
+ 54: 7(fvec4) CompositeConstruct 53 53 53 53
+ ReturnValue 54
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.type.identifier.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.type.identifier.frag.out
index e8a763c9798..fe6ac01d49c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.type.identifier.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.type.identifier.frag.out
@@ -1,5 +1,5 @@
hlsl.type.identifier.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:6 Function Definition: fn(f1; ( temp float)
@@ -50,8 +50,8 @@ gl_FragCoord origin is upper left
0:15 'min10float' ( temp mediump float)
0:15 'min16float' ( temp mediump float)
0:16 Sequence
-0:16 move second child to first child ( temp mediump float)
-0:16 'half' ( temp mediump float)
+0:16 move second child to first child ( temp float)
+0:16 'half' ( temp float)
0:16 Constant:
0:16 0.500000
0:? Sequence
@@ -99,9 +99,28 @@ gl_FragCoord origin is upper left
0:25 'float' ( temp mediump float)
0:25 Function Call: fn(f1; ( temp mediump float)
0:25 'float' ( temp mediump float)
-0:27 Branch: Return with expression
-0:27 Construct vec4 ( temp 4-component vector of float)
-0:27 'float' ( temp float)
+0:28 move second child to first child ( temp float)
+0:28 direct index ( temp float)
+0:28 direct index ( temp 3-component vector of float)
+0:28 'half2x3' ( temp 2X3 matrix of float)
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 0 (const int)
+0:28 component-wise multiply ( temp float)
+0:28 'float' ( temp float)
+0:28 'float' ( temp float)
+0:30 Branch: Return with expression
+0:30 Construct vec4 ( temp 4-component vector of float)
+0:30 add ( temp float)
+0:30 'float' ( temp float)
+0:30 direct index ( temp float)
+0:30 direct index ( temp 3-component vector of float)
+0:30 'half2x3' ( temp 2X3 matrix of float)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 0 (const int)
0:9 Function Definition: main( ( temp void)
0:9 Function Parameters:
0:? Sequence
@@ -115,7 +134,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:6 Function Definition: fn(f1; ( temp float)
@@ -166,8 +185,8 @@ gl_FragCoord origin is upper left
0:15 'min10float' ( temp mediump float)
0:15 'min16float' ( temp mediump float)
0:16 Sequence
-0:16 move second child to first child ( temp mediump float)
-0:16 'half' ( temp mediump float)
+0:16 move second child to first child ( temp float)
+0:16 'half' ( temp float)
0:16 Constant:
0:16 0.500000
0:? Sequence
@@ -215,9 +234,28 @@ gl_FragCoord origin is upper left
0:25 'float' ( temp mediump float)
0:25 Function Call: fn(f1; ( temp mediump float)
0:25 'float' ( temp mediump float)
-0:27 Branch: Return with expression
-0:27 Construct vec4 ( temp 4-component vector of float)
-0:27 'float' ( temp float)
+0:28 move second child to first child ( temp float)
+0:28 direct index ( temp float)
+0:28 direct index ( temp 3-component vector of float)
+0:28 'half2x3' ( temp 2X3 matrix of float)
+0:28 Constant:
+0:28 0 (const int)
+0:28 Constant:
+0:28 0 (const int)
+0:28 component-wise multiply ( temp float)
+0:28 'float' ( temp float)
+0:28 'float' ( temp float)
+0:30 Branch: Return with expression
+0:30 Construct vec4 ( temp 4-component vector of float)
+0:30 add ( temp float)
+0:30 'float' ( temp float)
+0:30 direct index ( temp float)
+0:30 direct index ( temp 3-component vector of float)
+0:30 'half2x3' ( temp 2X3 matrix of float)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 0 (const int)
0:9 Function Definition: main( ( temp void)
0:9 Function Parameters:
0:? Sequence
@@ -228,14 +266,15 @@ gl_FragCoord origin is upper left
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 97
+// Generated by (magic number): 80002
+// Id's are bound by 109
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 95
+ EntryPoint Fragment 4 "main" 107
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 10 "fn(f1;"
Name 9 "float"
@@ -251,13 +290,13 @@ gl_FragCoord origin is upper left
MemberName 56(foo_t) 0 "float"
Name 58 "float"
Name 86 "param"
- Name 95 "@entryPointOutput"
+ Name 93 "half2x3"
+ Name 107 "@entryPointOutput"
Decorate 49(min16float) RelaxedPrecision
Decorate 50 RelaxedPrecision
Decorate 51 RelaxedPrecision
Decorate 52(min10float) RelaxedPrecision
Decorate 53 RelaxedPrecision
- Decorate 54(half) RelaxedPrecision
Decorate 64 RelaxedPrecision
Decorate 65 RelaxedPrecision
Decorate 66 RelaxedPrecision
@@ -277,7 +316,7 @@ gl_FragCoord origin is upper left
Decorate 87 RelaxedPrecision
Decorate 88 RelaxedPrecision
Decorate 89 RelaxedPrecision
- Decorate 95(@entryPointOutput) Location 0
+ Decorate 107(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -302,12 +341,16 @@ gl_FragCoord origin is upper left
56(foo_t): TypeStruct 6(float)
57: TypePointer Function 56(foo_t)
59: 6(float) Constant 1109917696
- 94: TypePointer Output 12(fvec4)
-95(@entryPointOutput): 94(ptr) Variable Output
+ 90: TypeVector 6(float) 3
+ 91: TypeMatrix 90(fvec3) 2
+ 92: TypePointer Function 91
+ 97: 22(int) Constant 0
+ 106: TypePointer Output 12(fvec4)
+107(@entryPointOutput): 106(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 96: 12(fvec4) FunctionCall 14(@main()
- Store 95(@entryPointOutput) 96
+ 108: 12(fvec4) FunctionCall 14(@main()
+ Store 107(@entryPointOutput) 108
Return
FunctionEnd
10(fn(f1;): 6(float) Function None 8
@@ -328,6 +371,7 @@ gl_FragCoord origin is upper left
58(float): 57(ptr) Variable Function
75: 7(ptr) Variable Function
86(param): 7(ptr) Variable Function
+ 93(half2x3): 92(ptr) Variable Function
Store 19(float) 20
27: 6(float) Load 19(float)
29: 21(bool) FOrdNotEqual 27 28
@@ -389,7 +433,15 @@ gl_FragCoord origin is upper left
88: 6(float) FunctionCall 10(fn(f1;) 86(param)
89: 6(float) FAdd 85 88
Store 19(float) 89
- 90: 6(float) Load 19(float)
- 91: 12(fvec4) CompositeConstruct 90 90 90 90
- ReturnValue 91
+ 94: 6(float) Load 19(float)
+ 95: 6(float) Load 19(float)
+ 96: 6(float) FMul 94 95
+ 98: 7(ptr) AccessChain 93(half2x3) 40 97
+ Store 98 96
+ 99: 6(float) Load 19(float)
+ 100: 7(ptr) AccessChain 93(half2x3) 40 97
+ 101: 6(float) Load 100
+ 102: 6(float) FAdd 99 101
+ 103: 12(fvec4) CompositeConstruct 102 102 102 102
+ ReturnValue 103
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.typeGraphCopy.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.typeGraphCopy.vert.out
index 7d55c44047d..4ae33e20cfa 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.typeGraphCopy.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.typeGraphCopy.vert.out
@@ -1,5 +1,5 @@
hlsl.typeGraphCopy.vert
-Shader version: 450
+Shader version: 500
0:? Sequence
0:22 Function Definition: @main( ( temp float)
0:22 Function Parameters:
@@ -32,7 +32,7 @@ Shader version: 450
Linked vertex stage:
-Shader version: 450
+Shader version: 500
0:? Sequence
0:22 Function Definition: @main( ( temp float)
0:22 Function Parameters:
@@ -62,13 +62,14 @@ Shader version: 450
0:? '@entryPointOutput' (layout( location=0) out float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 28
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 26
+ Source HLSL 500
Name 4 "main"
Name 8 "@main("
Name 11 "N1"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.typedef.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.typedef.frag.out
index 6edb191d7a4..3f3e34cc009 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.typedef.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.typedef.frag.out
@@ -1,5 +1,5 @@
hlsl.typedef.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: ShaderFunction(vf4;i1; ( temp 4-component vector of float)
@@ -41,7 +41,7 @@ Linked fragment stage:
WARNING: Linking fragment stage: Entry point not found
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4 Function Definition: ShaderFunction(vf4;i1; ( temp 4-component vector of float)
@@ -79,7 +79,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 34
Capability Shader
@@ -87,6 +87,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 14 "ShaderFunction(vf4;i1;"
Name 12 "input"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.void.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.void.frag.out
index 584f3784f91..e685c2c51e9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.void.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.void.frag.out
@@ -1,5 +1,5 @@
hlsl.void.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Function Definition: foo1( ( temp void)
@@ -28,7 +28,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1 Function Definition: foo1( ( temp void)
@@ -54,7 +54,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 27
Capability Shader
@@ -62,6 +62,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 22
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 6 "foo1("
Name 8 "foo2("
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.whileLoop.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.whileLoop.frag.out
index 2f68da116a6..cffef62660f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.whileLoop.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/hlsl.whileLoop.frag.out
@@ -1,5 +1,5 @@
hlsl.whileLoop.frag
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -49,7 +49,7 @@ gl_FragCoord origin is upper left
Linked fragment stage:
-Shader version: 450
+Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
@@ -96,7 +96,7 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 52
Capability Shader
@@ -104,6 +104,7 @@ gl_FragCoord origin is upper left
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 45 48
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "@PixelShaderFunction(vf4;"
Name 10 "input"
@@ -170,7 +171,7 @@ gl_FragCoord origin is upper left
28: Label
Branch 32
32: Label
- LoopMerge 34 35 None
+ LoopMerge 34 35 Unroll
Branch 36
36: Label
BranchConditional 31 33 34
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/implicitInnerAtomicUint.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/implicitInnerAtomicUint.frag.out
new file mode 100644
index 00000000000..ed9771e7ca1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/implicitInnerAtomicUint.frag.out
@@ -0,0 +1,20 @@
+implicitInnerAtomicUint.frag
+ERROR: 0:2: '[]' : only outermost dimension of an array of arrays can be implicitly sized
+ERROR: 1 compilation errors. No code generated.
+
+
+Shader version: 460
+ERROR: node is still EOpNull!
+0:? Linker Objects
+0:? 'c' (layout( binding=0 offset=0) uniform 1-element array of 1-element array of atomic_uint)
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
+
+Shader version: 460
+ERROR: node is still EOpNull!
+0:? Linker Objects
+0:? 'c' (layout( binding=0 offset=0) uniform 1-element array of 1-element array of atomic_uint)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/include.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/include.vert.out
new file mode 100644
index 00000000000..42f10323a55
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/include.vert.out
@@ -0,0 +1,67 @@
+include.vert
+Shader version: 450
+Requested GL_GOOGLE_cpp_style_line_directive
+Requested GL_GOOGLE_include_directive
+0:? Sequence
+0:13 Function Definition: main( ( global void)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 'color' ( smooth out 4-component vector of float)
+0:15 add ( temp 4-component vector of float)
+0:15 add ( temp 4-component vector of float)
+0:15 add ( temp 4-component vector of float)
+0:15 add ( temp 4-component vector of float)
+0:15 add ( temp 4-component vector of float)
+0:15 'i1' ( global 4-component vector of float)
+0:15 'i2' ( global 4-component vector of float)
+0:15 'i3' ( global 4-component vector of float)
+0:15 'i4' ( global 4-component vector of float)
+0:15 'i5' ( global 4-component vector of float)
+0:15 'i6' ( global 4-component vector of float)
+0:? Linker Objects
+0:? 'i1' ( global 4-component vector of float)
+0:? 'i2' ( global 4-component vector of float)
+0:? 'i4' ( global 4-component vector of float)
+0:? 'i3' ( global 4-component vector of float)
+0:? 'i6' ( global 4-component vector of float)
+0:? 'i5' ( global 4-component vector of float)
+0:? 'color' ( smooth out 4-component vector of float)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 450
+Requested GL_GOOGLE_cpp_style_line_directive
+Requested GL_GOOGLE_include_directive
+0:? Sequence
+0:13 Function Definition: main( ( global void)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 'color' ( smooth out 4-component vector of float)
+0:15 add ( temp 4-component vector of float)
+0:15 add ( temp 4-component vector of float)
+0:15 add ( temp 4-component vector of float)
+0:15 add ( temp 4-component vector of float)
+0:15 add ( temp 4-component vector of float)
+0:15 'i1' ( global 4-component vector of float)
+0:15 'i2' ( global 4-component vector of float)
+0:15 'i3' ( global 4-component vector of float)
+0:15 'i4' ( global 4-component vector of float)
+0:15 'i5' ( global 4-component vector of float)
+0:15 'i6' ( global 4-component vector of float)
+0:? Linker Objects
+0:? 'i1' ( global 4-component vector of float)
+0:? 'i2' ( global 4-component vector of float)
+0:? 'i4' ( global 4-component vector of float)
+0:? 'i3' ( global 4-component vector of float)
+0:? 'i6' ( global 4-component vector of float)
+0:? 'i5' ( global 4-component vector of float)
+0:? 'color' ( smooth out 4-component vector of float)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/invalidSwizzle.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/invalidSwizzle.vert.out
new file mode 100644
index 00000000000..5104fdcdccc
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/invalidSwizzle.vert.out
@@ -0,0 +1,38 @@
+invalidSwizzle.vert
+ERROR: 0:7: 'rr' : does not apply to this type: uniform sampler2D
+ERROR: 0:7: '=' : cannot convert from ' uniform sampler2D' to ' temp 2-component vector of float'
+ERROR: 0:8: 'xx' : does not apply to this type: global void
+ERROR: 0:9: 'xy' : does not apply to this type: global void
+ERROR: 4 compilation errors. No code generated.
+
+
+Shader version: 420
+ERROR: node is still EOpNull!
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
+0:? Sequence
+0:8 Function Call: f( ( global void)
+0:9 Function Call: f( ( global void)
+0:? Linker Objects
+0:? 's' ( uniform sampler2D)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+ERROR: Linking vertex stage: No function definition (body) found:
+ f(
+
+Shader version: 420
+ERROR: node is still EOpNull!
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
+0:? Sequence
+0:8 Function Call: f( ( global void)
+0:9 Function Call: f( ( global void)
+0:? Linker Objects
+0:? 's' ( uniform sampler2D)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/lineContinuation.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/lineContinuation.vert.out
index 929041545bf..3dd8206106e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/lineContinuation.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/lineContinuation.vert.out
@@ -19,7 +19,7 @@ ERROR: 0:112: '#if' : unexpected tokens following directive
ERROR: 0:117: 'macro expansion' : End of line in macro substitution: FOOM
ERROR: 0:118: 'preprocessor evaluation' : can't evaluate expression
ERROR: 0:118: '#if' : unexpected tokens following directive
-ERROR: 0:150: '' : syntax error
+ERROR: 0:150: '' : syntax error, unexpected EQUAL
ERROR: 19 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/link1.vk.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/link1.vk.frag.out
index 436f5e217e5..26a26af875f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/link1.vk.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/link1.vk.frag.out
@@ -1,6 +1,4 @@
link1.vk.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
@@ -14,8 +12,6 @@ gl_FragCoord origin is upper left
0:? 'color' ( out highp 4-component vector of float)
link2.vk.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/missingBodies.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/missingBodies.vert.out
index 7760c3fd30b..3a9a99f6c2c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/missingBodies.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/missingBodies.vert.out
@@ -1,6 +1,4 @@
missingBodies.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
Shader version: 450
0:? Sequence
0:4 Function Definition: foo( ( global void)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/negativeArraySize.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/negativeArraySize.comp.out
index abdd51e2cca..0a5ba310fb6 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/negativeArraySize.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/negativeArraySize.comp.out
@@ -1,5 +1,4 @@
negativeArraySize.comp
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:9: '' : array size must be a positive integer
ERROR: 1 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/newTexture.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/newTexture.frag.out
index 3a1c7a201c8..52921e8fc15 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/newTexture.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/newTexture.frag.out
@@ -1,6 +1,4 @@
newTexture.frag
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
-
Shader version: 430
0:? Sequence
0:36 Function Definition: main( ( global void)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/nonVulkan.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/nonVulkan.frag.out
index 236f5a84714..2b8b6a0ce3c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/nonVulkan.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/nonVulkan.frag.out
@@ -1,5 +1,4 @@
nonVulkan.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'constant_id' : only allowed when generating SPIR-V
ERROR: 0:4: 'input_attachment_index' : only allowed when using GLSL for Vulkan
ERROR: 0:4: 'input_attachment_index' : can only be used with a subpass
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/numeral.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/numeral.frag.out
index 22f4a949895..c1e313478b5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/numeral.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/numeral.frag.out
@@ -1,5 +1,4 @@
numeral.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:14: '' : octal literal digit too large
ERROR: 0:15: '' : octal literal digit too large
ERROR: 0:16: '' : octal literal digit too large
@@ -12,7 +11,9 @@ ERROR: 0:50: '' : hexadecimal literal too big
ERROR: 0:88: '' : float literal needs a decimal point or exponent
ERROR: 0:98: '' : numeric literal too big
ERROR: 0:101: '' : numeric literal too big
-ERROR: 12 compilation errors. No code generated.
+ERROR: 0:104: '#' : preprocessor directive cannot be preceded by another token
+ERROR: 0:104: '' : syntax error, unexpected $end, expecting COMMA or SEMICOLON
+ERROR: 14 compilation errors. No code generated.
Shader version: 400
@@ -418,6 +419,7 @@ ERROR: node is still EOpNull!
0:? 'g4' ( global int)
0:? 'g5' ( global int)
0:? 'g6' ( global int)
+0:? 'inf1' ( global float)
Linked fragment stage:
@@ -826,4 +828,5 @@ ERROR: node is still EOpNull!
0:? 'g4' ( global int)
0:? 'g5' ( global int)
0:? 'g6' ( global int)
+0:? 'inf1' ( global float)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/overlongLiteral.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/overlongLiteral.frag.out
new file mode 100644
index 00000000000..372d7777545
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/overlongLiteral.frag.out
@@ -0,0 +1,19 @@
+overlongLiteral.frag
+ERROR: 0:1: '' : hexadecimal literal too long
+ERROR: 0:1: '' : syntax error, unexpected INTCONSTANT
+ERROR: 2 compilation errors. No code generated.
+
+
+Shader version: 100
+ERROR: node is still EOpNull!
+0:? Linker Objects
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
+
+Shader version: 100
+ERROR: node is still EOpNull!
+0:? Linker Objects
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/precise.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/precise.tesc.out
index 7beff892e42..abe56f7509d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/precise.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/precise.tesc.out
@@ -1,6 +1,4 @@
precise.tesc
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
Shader version: 450
Requested GL_EXT_gpu_shader5
Requested GL_EXT_shader_io_blocks
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/precise_struct_block.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/precise_struct_block.vert.out
index 638bd1b5203..a239e95de25 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/precise_struct_block.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/precise_struct_block.vert.out
@@ -1,6 +1,4 @@
precise_struct_block.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
Shader version: 450
0:? Sequence
0:11 Function Definition: struct_member( ( global float)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.edge_cases.vert.err b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.edge_cases.vert.err
index 5f177e6cc12..e69de29bb2d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.edge_cases.vert.err
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.edge_cases.vert.err
@@ -1,2 +0,0 @@
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.errors.vert.err b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.errors.vert.err
index cfde4041e9f..bc588958fe3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.errors.vert.err
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.errors.vert.err
@@ -1,4 +1,3 @@
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:9: '#error' : This should show up in pp output .
ERROR: 0:14: '#' : invalid directive: def
ERROR: 0:15: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile Y
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.extensions.vert.err b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.extensions.vert.err
index 925cc0ca05d..35db3034196 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.extensions.vert.err
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.extensions.vert.err
@@ -1,3 +1,2 @@
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
WARNING: 0:6: '#extension' : extension not supported: GL_EXT_shader_texture_image_samples
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.function_macro.vert.err b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.function_macro.vert.err
index 5f177e6cc12..e69de29bb2d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.function_macro.vert.err
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.function_macro.vert.err
@@ -1,2 +0,0 @@
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.line.frag.err b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.line.frag.err
index 5f177e6cc12..e69de29bb2d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.line.frag.err
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.line.frag.err
@@ -1,2 +0,0 @@
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.pragma.vert.err b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.pragma.vert.err
index 5f177e6cc12..e69de29bb2d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.pragma.vert.err
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.pragma.vert.err
@@ -1,2 +0,0 @@
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.simple.vert.err b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.simple.vert.err
index 5f177e6cc12..e69de29bb2d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.simple.vert.err
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/preprocessor.simple.vert.err
@@ -1,2 +0,0 @@
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/reflection.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/reflection.vert.out
index ba3e0e698a0..422c049be68 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/reflection.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/reflection.vert.out
@@ -1,6 +1,4 @@
reflection.vert
-Warning, version 440 is not yet complete; most version-specific features are present, but some are missing.
-
Uniform reflection:
image_ui2D: offset -1, type 9063, size 1, index -1, binding -1
sampler_2D: offset -1, type 8b5e, size 1, index -1, binding -1
@@ -72,6 +70,10 @@ deepD[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1
deepD[1].v3: offset -1, type 8b54, size 1, index -1, binding -1
abl.foo: offset 0, type 1406, size 1, index 7, binding -1
abl2.foo: offset 0, type 1406, size 1, index 11, binding -1
+buf1.runtimeArray: offset 4, type 1406, size 4, index 12, binding -1
+buf2.runtimeArray.c: offset 8, type 1406, size 1, index 13, binding -1
+buf3.runtimeArray: offset 4, type 1406, size 0, index 14, binding -1
+buf4.runtimeArray.c: offset 8, type 1406, size 1, index 15, binding -1
anonMember1: offset 0, type 8b51, size 1, index 0, binding -1
uf1: offset -1, type 1406, size 1, index -1, binding -1
uf2: offset -1, type 1406, size 1, index -1, binding -1
@@ -90,6 +92,10 @@ abl2[0]: offset -1, type ffffffff, size 4, index -1, binding -1
abl2[1]: offset -1, type ffffffff, size 4, index -1, binding -1
abl2[2]: offset -1, type ffffffff, size 4, index -1, binding -1
abl2[3]: offset -1, type ffffffff, size 4, index -1, binding -1
+buf1: offset -1, type ffffffff, size 4, index -1, binding -1
+buf2: offset -1, type ffffffff, size 4, index -1, binding -1
+buf3: offset -1, type ffffffff, size 4, index -1, binding -1
+buf4: offset -1, type ffffffff, size 4, index -1, binding -1
Vertex attribute reflection:
attributeFloat: offset 0, type 1406, size 0, index 0, binding -1
@@ -97,4 +103,5 @@ attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1
attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1
attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1
attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1
+gl_InstanceID: offset 0, type 1404, size 0, index 0, binding -1
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.dcefunc.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.dcefunc.frag.out
index c28d90a3957..da8f78a2396 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.dcefunc.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.dcefunc.frag.out
@@ -1,8 +1,6 @@
remap.basic.dcefunc.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 22
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.everything.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.everything.frag.out
index 357a8d2be5a..bf17c59fd0f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.everything.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.everything.frag.out
@@ -1,8 +1,6 @@
remap.basic.everything.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 24969
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.none.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.none.frag.out
index 44f5747bf13..054a6b45d47 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.none.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.none.frag.out
@@ -1,8 +1,6 @@
remap.basic.none.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 22
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.strip.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.strip.frag.out
index ab1a003af32..ee9d93cfe2b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.strip.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.basic.strip.frag.out
@@ -1,8 +1,6 @@
remap.basic.strip.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 22
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
index 4fc29872009..b986a7d9d20 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
@@ -2,14 +2,14 @@ remap.hlsl.sample.basic.everything.frag
WARNING: 0:4: 'immediate sampler state' : unimplemented
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 24878
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 5663 "main" 4656 4112
+ EntryPoint Fragment 5663 "main" 4253 3709
ExecutionMode 5663 OriginUpperLeft
Decorate 4727 DescriptorSet 0
Decorate 4727 Binding 0
@@ -26,8 +26,8 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
Decorate 3789 DescriptorSet 0
Decorate 3805 DescriptorSet 0
Decorate 3869 DescriptorSet 0
- Decorate 4656 Location 0
- Decorate 4112 BuiltIn FragDepth
+ Decorate 4253 Location 0
+ Decorate 3709 BuiltIn FragDepth
8: TypeVoid
1282: TypeFunction 8
13: TypeFloat 32
@@ -127,9 +127,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
1284: 29(fvec4) ConstantComposite 138 138 138 138
650: TypePointer Function 13(float)
667: TypePointer Output 29(fvec4)
- 4656: 667(ptr) Variable Output
+ 4253: 667(ptr) Variable Output
651: TypePointer Output 13(float)
- 4112: 651(ptr) Variable Output
+ 3709: 651(ptr) Variable Output
5663: 8 Function None 1282
24877: Label
4104: 1669(ptr) Variable Function
@@ -137,10 +137,10 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
Store 4104 18803
13396: 666(ptr) AccessChain 4104 2571
7967: 29(fvec4) Load 13396
- Store 4656 7967
+ Store 4253 7967
16622: 650(ptr) AccessChain 4104 2574
11539: 13(float) Load 16622
- Store 4112 11539
+ Store 3709 11539
Return
FunctionEnd
3317:1032(struct) Function None 319
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
index 5af75db0309..699fb8d8528 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
@@ -2,7 +2,7 @@ remap.hlsl.sample.basic.none.frag
WARNING: 0:4: 'immediate sampler state' : unimplemented
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 198
Capability Shader
@@ -11,6 +11,7 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 188 192
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -57,8 +58,8 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
Name 169 "g_tTexcdu4"
Name 176 "psout"
Name 185 "flattenTemp"
- Name 188 "Color"
- Name 192 "Depth"
+ Name 188 "@entryPointOutput.Color"
+ Name 192 "@entryPointOutput.Depth"
Name 195 "g_sSamp2d"
Name 196 "g_sSamp2D_b"
Name 197 "g_tTex1df4a"
@@ -77,8 +78,8 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
Decorate 151(g_tTexcdf4) DescriptorSet 0
Decorate 160(g_tTexcdi4) DescriptorSet 0
Decorate 169(g_tTexcdu4) DescriptorSet 0
- Decorate 188(Color) Location 0
- Decorate 192(Depth) BuiltIn FragDepth
+ Decorate 188(@entryPointOutput.Color) Location 0
+ Decorate 192(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 195(g_sSamp2d) DescriptorSet 0
Decorate 196(g_sSamp2D_b) DescriptorSet 0
Decorate 197(g_tTex1df4a) DescriptorSet 0
@@ -184,9 +185,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
178: 7(fvec4) ConstantComposite 177 177 177 177
180: TypePointer Function 6(float)
187: TypePointer Output 7(fvec4)
- 188(Color): 187(ptr) Variable Output
+188(@entryPointOutput.Color): 187(ptr) Variable Output
191: TypePointer Output 6(float)
- 192(Depth): 191(ptr) Variable Output
+192(@entryPointOutput.Depth): 191(ptr) Variable Output
195(g_sSamp2d): 48(ptr) Variable UniformConstant
196(g_sSamp2D_b): 48(ptr) Variable UniformConstant
197(g_tTex1df4a): 44(ptr) Variable UniformConstant
@@ -197,10 +198,10 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
Store 185(flattenTemp) 186
189: 41(ptr) AccessChain 185(flattenTemp) 29
190: 7(fvec4) Load 189
- Store 188(Color) 190
+ Store 188(@entryPointOutput.Color) 190
193: 180(ptr) AccessChain 185(flattenTemp) 16
194: 6(float) Load 193
- Store 192(Depth) 194
+ Store 192(@entryPointOutput.Depth) 194
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
index d76bdd93c67..f46f93f0740 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
@@ -2,7 +2,7 @@ remap.hlsl.sample.basic.strip.frag
WARNING: 0:4: 'immediate sampler state' : unimplemented
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 198
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
index 330aecd6037..fe2df78d8a7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
@@ -1,6 +1,6 @@
remap.hlsl.templatetypes.everything.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 24954
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
index c5d8a010ed0..bc5916e1d5e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
@@ -1,6 +1,6 @@
remap.hlsl.templatetypes.none.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 160
Capability Shader
@@ -9,6 +9,7 @@ remap.hlsl.templatetypes.none.frag
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 153 156
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "@main(vf4;"
Name 10 "input"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.if.everything.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.if.everything.frag.out
index d20564c5dd5..7a1733e4167 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.if.everything.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.if.everything.frag.out
@@ -1,8 +1,6 @@
remap.if.everything.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 22855
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.if.none.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.if.none.frag.out
index 081d5cdd699..1601a6cc56e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.if.none.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.if.none.frag.out
@@ -1,8 +1,6 @@
remap.if.none.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 25
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.invalid-spirv-1.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.invalid-spirv-1.out
new file mode 100644
index 00000000000..91b4b6d90c3
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.invalid-spirv-1.out
@@ -0,0 +1 @@
+ID out of range: 4160749568
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.invalid-spirv-2.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.invalid-spirv-2.out
new file mode 100644
index 00000000000..808b9b870b6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.invalid-spirv-2.out
@@ -0,0 +1 @@
+ID not found
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1a.everything.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1a.everything.frag.out
index 384b8e8619b..f67acfbaf83 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1a.everything.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1a.everything.frag.out
@@ -1,8 +1,6 @@
remap.similar_1a.everything.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 24916
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1a.none.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1a.none.frag.out
index 910ef424a44..2bbf53a6cc8 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1a.none.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1a.none.frag.out
@@ -1,8 +1,6 @@
remap.similar_1a.none.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 86
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1b.everything.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1b.everything.frag.out
index 0ce4544c963..67ff7df7f48 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1b.everything.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1b.everything.frag.out
@@ -1,8 +1,6 @@
remap.similar_1b.everything.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 24916
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1b.none.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1b.none.frag.out
index ce79e00beff..089ea5c3374 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1b.none.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.similar_1b.none.frag.out
@@ -1,8 +1,6 @@
remap.similar_1b.none.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 91
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.specconst.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.specconst.comp.out
new file mode 100644
index 00000000000..cc439f12aa6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.specconst.comp.out
@@ -0,0 +1,31 @@
+remap.specconst.comp
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 16104
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 5663 "main"
+ ExecutionMode 5663 LocalSize 1 1 1
+ Decorate 2 SpecId 0
+ Decorate 3 SpecId 1
+ Decorate 4 SpecId 2
+ Decorate 5 BuiltIn WorkgroupSize
+ 8: TypeVoid
+ 1282: TypeFunction 8
+ 11: TypeInt 32 0
+ 2: 11(int) SpecConstant 1
+ 3: 11(int) SpecConstant 1
+ 4: 11(int) SpecConstant 1
+ 20: TypeVector 11(int) 3
+ 5: 20(ivec3) SpecConstantComposite 2 3 4
+ 6: 11(int) SpecConstantOp 81 5 0
+ 7: 11(int) SpecConstantOp 81 5 1(GLSL.std.450)
+ 9: 11(int) SpecConstantOp 81 5 2
+ 10: 11(int) SpecConstantOp 132 7 9
+ 12: 11(int) SpecConstantOp 128 6 10
+ 5663: 8 Function None 1282
+ 16103: Label
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.switch.everything.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.switch.everything.frag.out
index e5a7ef75977..c1fddd9ab9f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.switch.everything.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.switch.everything.frag.out
@@ -1,10 +1,9 @@
remap.switch.everything.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
"precision mediump int; precision highp float;"
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 23990
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.switch.none.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.switch.none.frag.out
index 68d075b2579..fa78e77f19b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.switch.none.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.switch.none.frag.out
@@ -1,10 +1,9 @@
remap.switch.none.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
"precision mediump int; precision highp float;"
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 48
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.uniformarray.everything.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.uniformarray.everything.frag.out
index ed906d535a0..aa9014c5839 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.uniformarray.everything.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.uniformarray.everything.frag.out
@@ -1,6 +1,6 @@
remap.uniformarray.everything.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 25030
Capability Shader
@@ -8,6 +8,7 @@ remap.uniformarray.everything.frag
MemoryModel Logical GLSL450
EntryPoint Fragment 5663 "main" 3608 4957 4339 5139
ExecutionMode 5663 OriginUpperLeft
+ Decorate 5139 Location 0
8: TypeVoid
1282: TypeFunction 8
13: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.uniformarray.none.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.uniformarray.none.frag.out
index 526b9e49698..cba724ea91f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.uniformarray.none.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/remap.uniformarray.none.frag.out
@@ -1,6 +1,6 @@
remap.uniformarray.none.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 53
Capability Shader
@@ -16,6 +16,7 @@ remap.uniformarray.none.frag
Name 35 "alpha"
Name 47 "gl_FragColor"
Name 52 "texSampler2D"
+ Decorate 47(gl_FragColor) Location 0
Decorate 52(texSampler2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/specExamples.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/specExamples.frag.out
index 939ea62067a..ba47b6c753f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/specExamples.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/specExamples.frag.out
@@ -1,5 +1,4 @@
specExamples.frag
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:6: '=' : cannot convert from ' const uint' to ' global int'
ERROR: 0:20: '' : numeric literal too big
ERROR: 0:21: '' : hexadecimal literal too big
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/specExamples.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/specExamples.vert.out
index f050477be82..71ce868987d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/specExamples.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/specExamples.vert.out
@@ -1,5 +1,4 @@
specExamples.vert
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:29: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers
ERROR: 0:31: 'triangles' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)
ERROR: 0:31: 'invocations' : there is no such layout identifier for this stage taking an assigned value
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.100ops.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.100ops.frag.out
index efd82012b02..5cf2100f2d3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.100ops.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.100ops.frag.out
@@ -1,8 +1,6 @@
spv.100ops.frag
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 49
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.130.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.130.frag.out
index 19c6db0df2e..51e8b093cf1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.130.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.130.frag.out
@@ -2,7 +2,7 @@ spv.130.frag
WARNING: 0:31: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 205
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.140.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.140.frag.out
index 324cc0c5ca5..c63fb934062 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.140.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.140.frag.out
@@ -1,6 +1,6 @@
spv.140.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 96
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.150.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.150.geom.out
index 1c98c70e72a..50267685506 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.150.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.150.geom.out
@@ -1,6 +1,6 @@
spv.150.geom
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 71
Capability Geometry
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.150.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.150.vert.out
index 28431397210..2ad94617cad 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.150.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.150.vert.out
@@ -1,6 +1,6 @@
spv.150.vert
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 63
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300BuiltIns.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300BuiltIns.vert.out
index 7dc949dcaf9..a2c5075f929 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300BuiltIns.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300BuiltIns.vert.out
@@ -1,8 +1,6 @@
spv.300BuiltIns.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 42
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layout.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layout.frag.out
index 7ce08d86891..8200bb828d3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layout.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layout.frag.out
@@ -1,8 +1,6 @@
spv.300layout.frag
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 37
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layout.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layout.vert.out
index 69f66b6a33c..a820796107d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layout.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layout.vert.out
@@ -1,8 +1,6 @@
spv.300layout.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 163
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layoutp.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layoutp.vert.out
index 5924137cdca..78098eb2f0c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layoutp.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.300layoutp.vert.out
@@ -1,8 +1,6 @@
spv.300layoutp.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 115
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.310.bitcast.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.310.bitcast.frag.out
index 14e184a47dc..bcbe8e69f33 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.310.bitcast.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.310.bitcast.frag.out
@@ -1,8 +1,6 @@
spv.310.bitcast.frag
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 153
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.310.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.310.comp.out
index 4b47c7d7615..fec52c59c6e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.310.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.310.comp.out
@@ -1,8 +1,6 @@
spv.310.comp
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 69
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.330.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.330.geom.out
index 3e81dcbc79b..eccaccd218a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.330.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.330.geom.out
@@ -1,6 +1,6 @@
spv.330.geom
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 32
Capability Geometry
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.frag.out
index cb2de968711..2b574ab62a1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.frag.out
@@ -1,8 +1,6 @@
spv.400.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 1118
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.tesc.out
index 68b142e5af0..5b6a6b1ad06 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.tesc.out
@@ -1,8 +1,6 @@
spv.400.tesc
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 93
Capability Tessellation
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.tese.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.tese.out
index 0c62bed6d29..37cdb4b0d71 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.tese.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.400.tese.out
@@ -1,8 +1,6 @@
spv.400.tese
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 96
Capability Tessellation
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.420.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.420.geom.out
index 6413d5a4521..28665bc71a1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.420.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.420.geom.out
@@ -1,8 +1,6 @@
spv.420.geom
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 72
Capability Geometry
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.430.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.430.frag.out
index abe2a58a0ea..4aedf77eef7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.430.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.430.frag.out
@@ -1,8 +1,6 @@
spv.430.frag
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 24
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.430.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.430.vert.out
index 8ea95d1a73e..c63d5e97cfe 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.430.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.430.vert.out
@@ -1,8 +1,6 @@
spv.430.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 66
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.geom.out
index 85c68143211..f745068445e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.geom.out
@@ -1,15 +1,14 @@
spv.450.geom
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 26
+// Generated by (magic number): 80002
+// Id's are bound by 31
Capability Geometry
Capability GeometryPointSize
+ Capability MultiViewport
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Geometry 4 "main" 13 20
+ EntryPoint Geometry 4 "main" 13 20 27 29
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 4
ExecutionMode 4 OutputLineStrip
@@ -28,6 +27,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
MemberName 16(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 16(gl_PerVertex) 3 "gl_CullDistance"
Name 20 "gl_in"
+ Name 27 "gl_Layer"
+ Name 29 "gl_ViewportIndex"
MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
@@ -38,6 +39,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
MemberDecorate 16(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 16(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 16(gl_PerVertex) Block
+ Decorate 27(gl_Layer) BuiltIn Layer
+ Decorate 29(gl_ViewportIndex) BuiltIn ViewportIndex
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -57,11 +60,18 @@ Warning, version 450 is not yet complete; most version-specific features are pre
20(gl_in): 19(ptr) Variable Input
21: TypePointer Input 6(float)
24: TypePointer Output 6(float)
+ 26: TypePointer Output 14(int)
+ 27(gl_Layer): 26(ptr) Variable Output
+ 28: 14(int) Constant 2
+29(gl_ViewportIndex): 26(ptr) Variable Output
+ 30: 14(int) Constant 3
4(main): 2 Function None 3
5: Label
22: 21(ptr) AccessChain 20(gl_in) 15 15
23: 6(float) Load 22
25: 24(ptr) AccessChain 13 15
Store 25 23
+ Store 27(gl_Layer) 28
+ Store 29(gl_ViewportIndex) 30
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.noRedecl.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.noRedecl.tesc.out
index e62aa38aafd..4d6a25a2848 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.noRedecl.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.noRedecl.tesc.out
@@ -1,8 +1,6 @@
spv.450.noRedecl.tesc
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 21
Capability Tessellation
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.tesc.out
index a0bf3dd3bab..5cbaca92a9e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.450.tesc.out
@@ -1,79 +1,120 @@
spv.450.tesc
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 23
+// Generated by (magic number): 80002
+// Id's are bound by 45
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 9 16 19 22
+ EntryPoint TessellationControl 4 "main" 15 18 25 32 38 41 44
ExecutionMode 4 OutputVertices 4
Source GLSL 450
Name 4 "main"
- Name 9 "patchOut"
- Name 10 "S"
- MemberName 10(S) 0 "sMem1"
- MemberName 10(S) 1 "sMem2"
- Name 11 "TheBlock"
- MemberName 11(TheBlock) 0 "bMem1"
- MemberName 11(TheBlock) 1 "bMem2"
- MemberName 11(TheBlock) 2 "s"
- Name 16 "tcBlock"
- Name 17 "SingleBlock"
- MemberName 17(SingleBlock) 0 "bMem1"
- MemberName 17(SingleBlock) 1 "bMem2"
- MemberName 17(SingleBlock) 2 "s"
- Name 19 "singleBlock"
- Name 20 "bn"
- MemberName 20(bn) 0 "v1"
- MemberName 20(bn) 1 "v2"
- MemberName 20(bn) 2 "v3"
- Name 22 ""
- Decorate 9(patchOut) Patch
- MemberDecorate 11(TheBlock) 0 Patch
- MemberDecorate 11(TheBlock) 1 Patch
- MemberDecorate 11(TheBlock) 2 Patch
- Decorate 11(TheBlock) Block
- Decorate 16(tcBlock) Location 12
- MemberDecorate 17(SingleBlock) 0 Patch
- MemberDecorate 17(SingleBlock) 0 Location 2
- MemberDecorate 17(SingleBlock) 1 Patch
- MemberDecorate 17(SingleBlock) 1 Location 3
- MemberDecorate 17(SingleBlock) 2 Patch
- MemberDecorate 17(SingleBlock) 2 Location 4
- Decorate 17(SingleBlock) Block
- Decorate 19(singleBlock) Location 2
- MemberDecorate 20(bn) 0 Patch
- MemberDecorate 20(bn) 0 Location 20
- MemberDecorate 20(bn) 0 Component 0
- MemberDecorate 20(bn) 1 Patch
- MemberDecorate 20(bn) 1 Location 24
- MemberDecorate 20(bn) 2 Patch
- MemberDecorate 20(bn) 2 Location 25
- MemberDecorate 20(bn) 2 Component 0
- Decorate 20(bn) Block
+ Name 11 "gl_PerVertex"
+ MemberName 11(gl_PerVertex) 0 "gl_Position"
+ MemberName 11(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 11(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 11(gl_PerVertex) 3 "gl_CullDistance"
+ Name 15 "gl_out"
+ Name 18 "gl_InvocationID"
+ Name 21 "gl_PerVertex"
+ MemberName 21(gl_PerVertex) 0 "gl_Position"
+ MemberName 21(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 21(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 21(gl_PerVertex) 3 "gl_CullDistance"
+ Name 25 "gl_in"
+ Name 32 "patchOut"
+ Name 33 "S"
+ MemberName 33(S) 0 "sMem1"
+ MemberName 33(S) 1 "sMem2"
+ Name 34 "TheBlock"
+ MemberName 34(TheBlock) 0 "bMem1"
+ MemberName 34(TheBlock) 1 "bMem2"
+ MemberName 34(TheBlock) 2 "s"
+ Name 38 "tcBlock"
+ Name 39 "SingleBlock"
+ MemberName 39(SingleBlock) 0 "bMem1"
+ MemberName 39(SingleBlock) 1 "bMem2"
+ MemberName 39(SingleBlock) 2 "s"
+ Name 41 "singleBlock"
+ Name 42 "bn"
+ MemberName 42(bn) 0 "v1"
+ MemberName 42(bn) 1 "v2"
+ MemberName 42(bn) 2 "v3"
+ Name 44 ""
+ MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 11(gl_PerVertex) Block
+ Decorate 18(gl_InvocationID) BuiltIn InvocationId
+ MemberDecorate 21(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 21(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 21(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 21(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 21(gl_PerVertex) Block
+ Decorate 32(patchOut) Patch
+ Decorate 32(patchOut) Location 1
+ MemberDecorate 34(TheBlock) 0 Patch
+ MemberDecorate 34(TheBlock) 1 Patch
+ MemberDecorate 34(TheBlock) 2 Patch
+ Decorate 34(TheBlock) Block
+ Decorate 38(tcBlock) Location 12
+ MemberDecorate 39(SingleBlock) 0 Patch
+ MemberDecorate 39(SingleBlock) 1 Patch
+ MemberDecorate 39(SingleBlock) 2 Patch
+ Decorate 39(SingleBlock) Block
+ Decorate 41(singleBlock) Location 2
+ MemberDecorate 42(bn) 0 Patch
+ MemberDecorate 42(bn) 0 Location 20
+ MemberDecorate 42(bn) 1 Patch
+ MemberDecorate 42(bn) 1 Location 24
+ MemberDecorate 42(bn) 2 Patch
+ MemberDecorate 42(bn) 2 Location 25
+ Decorate 42(bn) Block
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
- 8: TypePointer Output 7(fvec4)
- 9(patchOut): 8(ptr) Variable Output
- 10(S): TypeStruct 6(float) 6(float)
- 11(TheBlock): TypeStruct 6(float) 6(float) 10(S)
- 12: TypeInt 32 0
- 13: 12(int) Constant 2
- 14: TypeArray 11(TheBlock) 13
- 15: TypePointer Output 14
- 16(tcBlock): 15(ptr) Variable Output
- 17(SingleBlock): TypeStruct 6(float) 6(float) 10(S)
- 18: TypePointer Output 17(SingleBlock)
- 19(singleBlock): 18(ptr) Variable Output
- 20(bn): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4)
- 21: TypePointer Output 20(bn)
- 22: 21(ptr) Variable Output
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 1
+ 10: TypeArray 6(float) 9
+11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10
+ 12: 8(int) Constant 4
+ 13: TypeArray 11(gl_PerVertex) 12
+ 14: TypePointer Output 13
+ 15(gl_out): 14(ptr) Variable Output
+ 16: TypeInt 32 1
+ 17: TypePointer Input 16(int)
+18(gl_InvocationID): 17(ptr) Variable Input
+ 20: 16(int) Constant 0
+21(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10
+ 22: 8(int) Constant 32
+ 23: TypeArray 21(gl_PerVertex) 22
+ 24: TypePointer Input 23
+ 25(gl_in): 24(ptr) Variable Input
+ 27: TypePointer Input 7(fvec4)
+ 30: TypePointer Output 7(fvec4)
+ 32(patchOut): 30(ptr) Variable Output
+ 33(S): TypeStruct 6(float) 6(float)
+ 34(TheBlock): TypeStruct 6(float) 6(float) 33(S)
+ 35: 8(int) Constant 2
+ 36: TypeArray 34(TheBlock) 35
+ 37: TypePointer Output 36
+ 38(tcBlock): 37(ptr) Variable Output
+ 39(SingleBlock): TypeStruct 6(float) 6(float) 33(S)
+ 40: TypePointer Output 39(SingleBlock)
+ 41(singleBlock): 40(ptr) Variable Output
+ 42(bn): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4)
+ 43: TypePointer Output 42(bn)
+ 44: 43(ptr) Variable Output
4(main): 2 Function None 3
5: Label
+ 19: 16(int) Load 18(gl_InvocationID)
+ 26: 16(int) Load 18(gl_InvocationID)
+ 28: 27(ptr) AccessChain 25(gl_in) 26 20
+ 29: 7(fvec4) Load 28
+ 31: 30(ptr) AccessChain 15(gl_out) 19 20
+ Store 31 29
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.comp.out
new file mode 100644
index 00000000000..d8e68be372e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.comp.out
@@ -0,0 +1,33 @@
+spv.460.comp
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 15
+
+ Capability Shader
+ Capability SubgroupVoteKHR
+ Extension "SPV_KHR_subgroup_vote"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main"
+ ExecutionMode 4 LocalSize 1 1 1
+ Source GLSL 460
+ Name 4 "main"
+ Name 8 "b1"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeBool
+ 7: TypePointer Function 6(bool)
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(b1): 7(ptr) Variable Function
+ 9: 6(bool) Load 8(b1)
+ 10: 6(bool) SubgroupAnyKHR 9
+ Store 8(b1) 10
+ 11: 6(bool) Load 8(b1)
+ 12: 6(bool) SubgroupAllKHR 11
+ Store 8(b1) 12
+ 13: 6(bool) Load 8(b1)
+ 14: 6(bool) SubgroupAllEqualKHR 13
+ Store 8(b1) 14
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.frag.out
new file mode 100644
index 00000000000..6cdcc85084a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.frag.out
@@ -0,0 +1,51 @@
+spv.460.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 32
+
+ Capability Shader
+ Capability AtomicStorage
+ Capability AtomicStorageOps
+ Extension "SPV_KHR_shader_atomic_counter_ops"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginLowerLeft
+ Source GLSL 460
+ Name 4 "main"
+ Name 8 "aui"
+ Name 10 "ui"
+ Decorate 8(aui) Offset 0
+ Decorate 8(aui) Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer AtomicCounter 6(int)
+ 8(aui): 7(ptr) Variable AtomicCounter
+ 9: TypePointer Private 6(int)
+ 10(ui): 9(ptr) Variable Private
+ 12: 6(int) Constant 1
+ 13: 6(int) Constant 0
+ 4(main): 2 Function None 3
+ 5: Label
+ 11: 6(int) Load 10(ui)
+ 14: 6(int) AtomicIAdd 8(aui) 12 13 11
+ 15: 6(int) Load 10(ui)
+ 16: 6(int) AtomicISub 8(aui) 12 13 15
+ 17: 6(int) Load 10(ui)
+ 18: 6(int) AtomicUMin 8(aui) 12 13 17
+ 19: 6(int) Load 10(ui)
+ 20: 6(int) AtomicUMax 8(aui) 12 13 19
+ 21: 6(int) Load 10(ui)
+ 22: 6(int) AtomicAnd 8(aui) 12 13 21
+ 23: 6(int) Load 10(ui)
+ 24: 6(int) AtomicOr 8(aui) 12 13 23
+ 25: 6(int) Load 10(ui)
+ 26: 6(int) AtomicXor 8(aui) 12 13 25
+ 27: 6(int) Load 10(ui)
+ 28: 6(int) AtomicExchange 8(aui) 12 13 27
+ 29: 6(int) Load 10(ui)
+ 30: 6(int) Load 10(ui)
+ 31: 6(int) AtomicCompareExchange 8(aui) 12 13 13 30 29
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.vert.out
new file mode 100644
index 00000000000..7b8d953e2b8
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.460.vert.out
@@ -0,0 +1,45 @@
+spv.460.vert
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 20
+
+ Capability Shader
+ Capability DrawParameters
+ Extension "SPV_KHR_shader_draw_parameters"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 10 12 15 18 19
+ Source GLSL 460
+ Name 4 "main"
+ Name 8 "a"
+ Name 10 "gl_BaseVertex"
+ Name 12 "gl_BaseInstance"
+ Name 15 "gl_DrawID"
+ Name 18 "gl_VertexID"
+ Name 19 "gl_InstanceID"
+ Decorate 10(gl_BaseVertex) BuiltIn BaseVertex
+ Decorate 12(gl_BaseInstance) BuiltIn BaseInstance
+ Decorate 15(gl_DrawID) BuiltIn DrawIndex
+ Decorate 18(gl_VertexID) BuiltIn VertexId
+ Decorate 19(gl_InstanceID) BuiltIn InstanceId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypePointer Function 6(int)
+ 9: TypePointer Input 6(int)
+10(gl_BaseVertex): 9(ptr) Variable Input
+12(gl_BaseInstance): 9(ptr) Variable Input
+ 15(gl_DrawID): 9(ptr) Variable Input
+ 18(gl_VertexID): 9(ptr) Variable Input
+19(gl_InstanceID): 9(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(a): 7(ptr) Variable Function
+ 11: 6(int) Load 10(gl_BaseVertex)
+ 13: 6(int) Load 12(gl_BaseInstance)
+ 14: 6(int) IAdd 11 13
+ 16: 6(int) Load 15(gl_DrawID)
+ 17: 6(int) IAdd 14 16
+ Store 8(a) 17
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.AofA.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.AofA.frag.out
index 4eb756301b5..8c0d6c09392 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.AofA.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.AofA.frag.out
@@ -1,8 +1,6 @@
spv.AofA.frag
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 104
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.GeometryShaderPassthrough.geom.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
index 05aeb9710ee..2b85ddf6bb0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
@@ -1,8 +1,6 @@
spv.GeometryShaderPassthrough.geom
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 15
Capability Geometry
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.OVR_multiview.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.OVR_multiview.vert.out
new file mode 100644
index 00000000000..49901a5cd68
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.OVR_multiview.vert.out
@@ -0,0 +1,57 @@
+spv.OVR_multiview.vert
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 27
+
+ Capability Shader
+ Capability MultiView
+ Extension "SPV_KHR_multiview"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 13 17 25 26
+ Source GLSL 330
+ SourceExtension "GL_OVR_multiview"
+ Name 4 "main"
+ Name 11 "gl_PerVertex"
+ MemberName 11(gl_PerVertex) 0 "gl_Position"
+ MemberName 11(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 11(gl_PerVertex) 2 "gl_ClipDistance"
+ Name 13 ""
+ Name 17 "gl_ViewID_OVR"
+ Name 25 "gl_VertexID"
+ Name 26 "gl_InstanceID"
+ MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
+ Decorate 11(gl_PerVertex) Block
+ Decorate 17(gl_ViewID_OVR) BuiltIn ViewIndex
+ Decorate 25(gl_VertexID) BuiltIn VertexId
+ Decorate 26(gl_InstanceID) BuiltIn InstanceId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 1
+ 10: TypeArray 6(float) 9
+11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10
+ 12: TypePointer Output 11(gl_PerVertex)
+ 13: 12(ptr) Variable Output
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: TypePointer Input 8(int)
+17(gl_ViewID_OVR): 16(ptr) Variable Input
+ 20: 6(float) Constant 0
+ 22: TypePointer Output 7(fvec4)
+ 24: TypePointer Input 14(int)
+ 25(gl_VertexID): 24(ptr) Variable Input
+26(gl_InstanceID): 24(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 18: 8(int) Load 17(gl_ViewID_OVR)
+ 19: 6(float) ConvertUToF 18
+ 21: 7(fvec4) CompositeConstruct 19 20 20 20
+ 23: 22(ptr) AccessChain 13 15
+ Store 23 21
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out
index aeee253bfb4..8f61e02119b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out
@@ -1,8 +1,6 @@
spv.Operations.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 532
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.accessChain.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.accessChain.frag.out
index b319cfd13dd..89a39a0371a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.accessChain.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.accessChain.frag.out
@@ -1,8 +1,6 @@
spv.accessChain.frag
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 206
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.aggOps.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.aggOps.frag.out
index c3ceb9a67b2..ca495c1884b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.aggOps.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.aggOps.frag.out
@@ -1,10 +1,9 @@
spv.aggOps.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
WARNING: 0:4: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
"precision mediump int; precision highp float;"
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 215
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.always-discard.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.always-discard.frag.out
index 652d45c846e..ac4c9f39286 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.always-discard.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.always-discard.frag.out
@@ -1,6 +1,6 @@
spv.always-discard.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 84
Capability Shader
@@ -18,6 +18,7 @@ spv.always-discard.frag
Name 30 "y"
Name 36 "radius"
Name 59 "gl_FragColor"
+ Decorate 59(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.always-discard2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.always-discard2.frag.out
index 0bbb9eee890..5aed2e07772 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.always-discard2.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.always-discard2.frag.out
@@ -1,6 +1,6 @@
spv.always-discard2.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 40
Capability Shader
@@ -17,6 +17,7 @@ spv.always-discard2.frag
Name 21 "tex_coord"
Name 30 "y"
Name 38 "gl_FragColor"
+ Decorate 38(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.arbPostDepthCoverage.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.arbPostDepthCoverage.frag.out
new file mode 100644
index 00000000000..b7ac2b669a4
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.arbPostDepthCoverage.frag.out
@@ -0,0 +1,42 @@
+spv.arbPostDepthCoverage.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 18
+
+ Capability Shader
+ Capability SampleMaskPostDepthCoverage
+ Extension "SPV_KHR_post_depth_coverage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 8 13
+ ExecutionMode 4 OriginUpperLeft
+ ExecutionMode 4 EarlyFragmentTests
+ ExecutionMode 4 PostDepthCoverage
+ Source GLSL 450
+ SourceExtension "GL_ARB_post_depth_coverage"
+ SourceExtension "GL_EXT_post_depth_coverage"
+ Name 4 "main"
+ Name 8 "readSampleMaskIn"
+ Name 13 "gl_SampleMaskIn"
+ Decorate 8(readSampleMaskIn) Location 0
+ Decorate 13(gl_SampleMaskIn) Flat
+ Decorate 13(gl_SampleMaskIn) BuiltIn SampleMask
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypePointer Output 6(int)
+8(readSampleMaskIn): 7(ptr) Variable Output
+ 9: TypeInt 32 0
+ 10: 9(int) Constant 1
+ 11: TypeArray 6(int) 10
+ 12: TypePointer Input 11
+13(gl_SampleMaskIn): 12(ptr) Variable Input
+ 14: 6(int) Constant 0
+ 15: TypePointer Input 6(int)
+ 4(main): 2 Function None 3
+ 5: Label
+ 16: 15(ptr) AccessChain 13(gl_SampleMaskIn) 14
+ 17: 6(int) Load 16
+ Store 8(readSampleMaskIn) 17
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.arbPostDepthCoverage_Error.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.arbPostDepthCoverage_Error.frag.out
new file mode 100644
index 00000000000..b210144da25
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.arbPostDepthCoverage_Error.frag.out
@@ -0,0 +1,7 @@
+spv.arbPostDepthCoverage_Error.frag
+ERROR: 0:7: 'early_fragment_tests' : can only apply to a standalone qualifier
+ERROR: 0:7: 'post_depth_coverage' : can only apply to a standalone qualifier
+ERROR: 2 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.atomic.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.atomic.comp.out
index 97c7f6e3ab4..b64dc90b793 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.atomic.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.atomic.comp.out
@@ -1,9 +1,7 @@
spv.atomic.comp
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 73
+// Generated by (magic number): 80002
+// Id's are bound by 74
Capability Shader
Capability AtomicStorage
@@ -19,29 +17,29 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Name 20 "counter"
Name 23 "val"
Name 27 "countArr"
- Name 35 "origi"
- Name 37 "atomi"
- Name 40 "origu"
- Name 42 "atomu"
- Name 43 "value"
- Name 60 "dataSSB"
- MemberName 60(dataSSB) 0 "f"
- MemberName 60(dataSSB) 1 "n_frames_rendered"
- Name 62 "result"
- Name 70 "arrX"
- Name 71 "arrY"
- Name 72 "arrZ"
+ Name 37 "origi"
+ Name 39 "atomi"
+ Name 42 "origu"
+ Name 44 "atomu"
+ Name 45 "value"
+ Name 62 "dataSSB"
+ MemberName 62(dataSSB) 0 "f"
+ MemberName 62(dataSSB) 1 "n_frames_rendered"
+ Name 64 "result"
+ Name 71 "arrX"
+ Name 72 "arrY"
+ Name 73 "arrZ"
Decorate 20(counter) Offset 0
Decorate 20(counter) Binding 0
Decorate 27(countArr) Offset 4
Decorate 27(countArr) Binding 0
- MemberDecorate 60(dataSSB) 0 Restrict
- MemberDecorate 60(dataSSB) 0 Offset 0
- MemberDecorate 60(dataSSB) 1 Restrict
- MemberDecorate 60(dataSSB) 1 Offset 16
- Decorate 60(dataSSB) BufferBlock
- Decorate 62(result) DescriptorSet 0
- Decorate 62(result) Binding 0
+ MemberDecorate 62(dataSSB) 0 Restrict
+ MemberDecorate 62(dataSSB) 0 Offset 0
+ MemberDecorate 62(dataSSB) 1 Restrict
+ MemberDecorate 62(dataSSB) 1 Offset 16
+ Decorate 62(dataSSB) BufferBlock
+ Decorate 64(result) DescriptorSet 0
+ Decorate 64(result) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -58,29 +56,29 @@ Warning, version 450 is not yet complete; most version-specific features are pre
27(countArr): 26(ptr) Variable AtomicCounter
28: TypeInt 32 1
29: 28(int) Constant 2
- 34: TypePointer Function 28(int)
- 36: TypePointer Workgroup 28(int)
- 37(atomi): 36(ptr) Variable Workgroup
- 38: 28(int) Constant 3
- 41: TypePointer Workgroup 6(int)
- 42(atomu): 41(ptr) Variable Workgroup
- 43(value): 41(ptr) Variable Workgroup
- 46: 6(int) Constant 7
- 51: 28(int) Constant 7
- 55: 6(int) Constant 10
- 58: TypeFloat 32
- 59: TypeVector 28(int) 4
- 60(dataSSB): TypeStruct 58(float) 59(ivec4)
- 61: TypePointer Uniform 60(dataSSB)
- 62(result): 61(ptr) Variable Uniform
- 63: 28(int) Constant 1
- 64: 6(int) Constant 2
- 65: TypePointer Uniform 28(int)
- 68: TypeArray 28(int) 14
- 69: TypePointer Private 68
- 70(arrX): 69(ptr) Variable Private
- 71(arrY): 69(ptr) Variable Private
- 72(arrZ): 69(ptr) Variable Private
+ 33: 28(int) Constant 1
+ 36: TypePointer Function 28(int)
+ 38: TypePointer Workgroup 28(int)
+ 39(atomi): 38(ptr) Variable Workgroup
+ 40: 28(int) Constant 3
+ 43: TypePointer Workgroup 6(int)
+ 44(atomu): 43(ptr) Variable Workgroup
+ 45(value): 43(ptr) Variable Workgroup
+ 48: 6(int) Constant 7
+ 53: 28(int) Constant 7
+ 57: 6(int) Constant 10
+ 60: TypeFloat 32
+ 61: TypeVector 28(int) 4
+ 62(dataSSB): TypeStruct 60(float) 61(ivec4)
+ 63: TypePointer Uniform 62(dataSSB)
+ 64(result): 63(ptr) Variable Uniform
+ 65: 6(int) Constant 2
+ 66: TypePointer Uniform 28(int)
+ 69: TypeArray 28(int) 14
+ 70: TypePointer Private 69
+ 71(arrX): 70(ptr) Variable Private
+ 72(arrY): 70(ptr) Variable Private
+ 73(arrZ): 70(ptr) Variable Private
4(main): 2 Function None 3
5: Label
23(val): 22(ptr) Variable Function
@@ -90,7 +88,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
31: 6(int) AtomicLoad 30 14 15
Store 23(val) 31
32: 6(int) AtomicIDecrement 20(counter) 14 15
- 33: 6(int) AtomicIIncrement 20(counter) 14 15
+ 34: 6(int) ISub 32 33
+ 35: 6(int) AtomicIIncrement 20(counter) 14 15
Return
FunctionEnd
10(func(au1;): 6(int) Function None 8
@@ -101,29 +100,29 @@ Warning, version 450 is not yet complete; most version-specific features are pre
FunctionEnd
12(atoms(): 2 Function None 3
13: Label
- 35(origi): 34(ptr) Variable Function
- 40(origu): 22(ptr) Variable Function
- 39: 28(int) AtomicIAdd 37(atomi) 14 15 38
- Store 35(origi) 39
- 44: 6(int) Load 43(value)
- 45: 6(int) AtomicAnd 42(atomu) 14 15 44
- Store 40(origu) 45
- 47: 6(int) AtomicOr 42(atomu) 14 15 46
- Store 40(origu) 47
- 48: 6(int) AtomicXor 42(atomu) 14 15 46
- Store 40(origu) 48
- 49: 6(int) Load 43(value)
- 50: 6(int) AtomicUMin 42(atomu) 14 15 49
- Store 40(origu) 50
- 52: 28(int) AtomicSMax 37(atomi) 14 15 51
- Store 35(origi) 52
- 53: 28(int) Load 35(origi)
- 54: 28(int) AtomicExchange 37(atomi) 14 15 53
- Store 35(origi) 54
- 56: 6(int) Load 43(value)
- 57: 6(int) AtomicCompareExchange 42(atomu) 14 15 15 56 55
- Store 40(origu) 57
- 66: 65(ptr) AccessChain 62(result) 63 64
- 67: 28(int) AtomicIAdd 66 14 15 63
+ 37(origi): 36(ptr) Variable Function
+ 42(origu): 22(ptr) Variable Function
+ 41: 28(int) AtomicIAdd 39(atomi) 14 15 40
+ Store 37(origi) 41
+ 46: 6(int) Load 45(value)
+ 47: 6(int) AtomicAnd 44(atomu) 14 15 46
+ Store 42(origu) 47
+ 49: 6(int) AtomicOr 44(atomu) 14 15 48
+ Store 42(origu) 49
+ 50: 6(int) AtomicXor 44(atomu) 14 15 48
+ Store 42(origu) 50
+ 51: 6(int) Load 45(value)
+ 52: 6(int) AtomicUMin 44(atomu) 14 15 51
+ Store 42(origu) 52
+ 54: 28(int) AtomicSMax 39(atomi) 14 15 53
+ Store 37(origi) 54
+ 55: 28(int) Load 37(origi)
+ 56: 28(int) AtomicExchange 39(atomi) 14 15 55
+ Store 37(origi) 56
+ 58: 6(int) Load 45(value)
+ 59: 6(int) AtomicCompareExchange 44(atomu) 14 15 15 58 57
+ Store 42(origu) 59
+ 67: 66(ptr) AccessChain 64(result) 33 65
+ 68: 28(int) AtomicIAdd 67 14 15 33
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.atomicInt64.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.atomicInt64.comp.out
new file mode 100644
index 00000000000..cbd7c1cbc6c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.atomicInt64.comp.out
@@ -0,0 +1,215 @@
+spv.atomicInt64.comp
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 149
+
+ Capability Shader
+ Capability Int64
+ Capability Int64Atomics
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main"
+ ExecutionMode 4 LocalSize 16 16 1
+ Source GLSL 450
+ SourceExtension "GL_ARB_gpu_shader_int64"
+ SourceExtension "GL_NV_shader_atomic_int64"
+ Name 4 "main"
+ Name 8 "i64"
+ Name 12 "u64"
+ Name 14 "Buffer"
+ MemberName 14(Buffer) 0 "i64"
+ MemberName 14(Buffer) 1 "u64"
+ Name 16 "buf"
+ Name 84 "Struct"
+ MemberName 84(Struct) 0 "i64"
+ MemberName 84(Struct) 1 "u64"
+ Name 86 "s"
+ MemberDecorate 14(Buffer) 0 Offset 0
+ MemberDecorate 14(Buffer) 1 Offset 8
+ Decorate 14(Buffer) BufferBlock
+ Decorate 16(buf) DescriptorSet 0
+ Decorate 16(buf) Binding 0
+ Decorate 148 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 64 1
+ 7: TypePointer Function 6(int)
+ 9: 6(int) Constant 0 0
+ 10: TypeInt 64 0
+ 11: TypePointer Function 10(int)
+ 13: 10(int) Constant 0 0
+ 14(Buffer): TypeStruct 6(int) 10(int)
+ 15: TypePointer Uniform 14(Buffer)
+ 16(buf): 15(ptr) Variable Uniform
+ 17: TypeInt 32 1
+ 18: 17(int) Constant 0
+ 19: TypePointer Uniform 6(int)
+ 21: 6(int) Constant 4294967272 4294967295
+ 22: TypeInt 32 0
+ 23: 22(int) Constant 1
+ 24: 22(int) Constant 0
+ 28: 17(int) Constant 1
+ 29: TypePointer Uniform 10(int)
+ 31: 10(int) Constant 15 0
+ 84(Struct): TypeStruct 6(int) 10(int)
+ 85: TypePointer Workgroup 84(Struct)
+ 86(s): 85(ptr) Variable Workgroup
+ 87: TypePointer Workgroup 6(int)
+ 92: TypePointer Workgroup 10(int)
+ 146: TypeVector 22(int) 3
+ 147: 22(int) Constant 16
+ 148: 146(ivec3) ConstantComposite 147 147 23
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(i64): 7(ptr) Variable Function
+ 12(u64): 11(ptr) Variable Function
+ Store 8(i64) 9
+ Store 12(u64) 13
+ 20: 19(ptr) AccessChain 16(buf) 18
+ 25: 6(int) AtomicSMin 20 23 24 21
+ 26: 6(int) Load 8(i64)
+ 27: 6(int) IAdd 26 25
+ Store 8(i64) 27
+ 30: 29(ptr) AccessChain 16(buf) 28
+ 32: 10(int) AtomicUMin 30 23 24 31
+ 33: 10(int) Load 12(u64)
+ 34: 10(int) IAdd 33 32
+ Store 12(u64) 34
+ 35: 19(ptr) AccessChain 16(buf) 18
+ 36: 6(int) AtomicSMax 35 23 24 21
+ 37: 6(int) Load 8(i64)
+ 38: 6(int) IAdd 37 36
+ Store 8(i64) 38
+ 39: 29(ptr) AccessChain 16(buf) 28
+ 40: 10(int) AtomicUMax 39 23 24 31
+ 41: 10(int) Load 12(u64)
+ 42: 10(int) IAdd 41 40
+ Store 12(u64) 42
+ 43: 19(ptr) AccessChain 16(buf) 18
+ 44: 6(int) AtomicAnd 43 23 24 21
+ 45: 6(int) Load 8(i64)
+ 46: 6(int) IAdd 45 44
+ Store 8(i64) 46
+ 47: 29(ptr) AccessChain 16(buf) 28
+ 48: 10(int) AtomicAnd 47 23 24 31
+ 49: 10(int) Load 12(u64)
+ 50: 10(int) IAdd 49 48
+ Store 12(u64) 50
+ 51: 19(ptr) AccessChain 16(buf) 18
+ 52: 6(int) AtomicOr 51 23 24 21
+ 53: 6(int) Load 8(i64)
+ 54: 6(int) IAdd 53 52
+ Store 8(i64) 54
+ 55: 29(ptr) AccessChain 16(buf) 28
+ 56: 10(int) AtomicOr 55 23 24 31
+ 57: 10(int) Load 12(u64)
+ 58: 10(int) IAdd 57 56
+ Store 12(u64) 58
+ 59: 19(ptr) AccessChain 16(buf) 18
+ 60: 6(int) AtomicXor 59 23 24 21
+ 61: 6(int) Load 8(i64)
+ 62: 6(int) IAdd 61 60
+ Store 8(i64) 62
+ 63: 29(ptr) AccessChain 16(buf) 28
+ 64: 10(int) AtomicXor 63 23 24 31
+ 65: 10(int) Load 12(u64)
+ 66: 10(int) IAdd 65 64
+ Store 12(u64) 66
+ 67: 19(ptr) AccessChain 16(buf) 18
+ 68: 6(int) AtomicIAdd 67 23 24 21
+ 69: 6(int) Load 8(i64)
+ 70: 6(int) IAdd 69 68
+ Store 8(i64) 70
+ 71: 19(ptr) AccessChain 16(buf) 18
+ 72: 6(int) AtomicExchange 71 23 24 21
+ 73: 6(int) Load 8(i64)
+ 74: 6(int) IAdd 73 72
+ Store 8(i64) 74
+ 75: 19(ptr) AccessChain 16(buf) 18
+ 76: 6(int) Load 8(i64)
+ 77: 6(int) AtomicCompareExchange 75 23 24 24 76 21
+ 78: 6(int) Load 8(i64)
+ 79: 6(int) IAdd 78 77
+ Store 8(i64) 79
+ 80: 6(int) Load 8(i64)
+ 81: 19(ptr) AccessChain 16(buf) 18
+ Store 81 80
+ 82: 10(int) Load 12(u64)
+ 83: 29(ptr) AccessChain 16(buf) 28
+ Store 83 82
+ Store 8(i64) 9
+ Store 12(u64) 13
+ 88: 87(ptr) AccessChain 86(s) 18
+ 89: 6(int) AtomicSMin 88 23 24 21
+ 90: 6(int) Load 8(i64)
+ 91: 6(int) IAdd 90 89
+ Store 8(i64) 91
+ 93: 92(ptr) AccessChain 86(s) 28
+ 94: 10(int) AtomicUMin 93 23 24 31
+ 95: 10(int) Load 12(u64)
+ 96: 10(int) IAdd 95 94
+ Store 12(u64) 96
+ 97: 87(ptr) AccessChain 86(s) 18
+ 98: 6(int) AtomicSMax 97 23 24 21
+ 99: 6(int) Load 8(i64)
+ 100: 6(int) IAdd 99 98
+ Store 8(i64) 100
+ 101: 92(ptr) AccessChain 86(s) 28
+ 102: 10(int) AtomicUMax 101 23 24 31
+ 103: 10(int) Load 12(u64)
+ 104: 10(int) IAdd 103 102
+ Store 12(u64) 104
+ 105: 87(ptr) AccessChain 86(s) 18
+ 106: 6(int) AtomicAnd 105 23 24 21
+ 107: 6(int) Load 8(i64)
+ 108: 6(int) IAdd 107 106
+ Store 8(i64) 108
+ 109: 92(ptr) AccessChain 86(s) 28
+ 110: 10(int) AtomicAnd 109 23 24 31
+ 111: 10(int) Load 12(u64)
+ 112: 10(int) IAdd 111 110
+ Store 12(u64) 112
+ 113: 87(ptr) AccessChain 86(s) 18
+ 114: 6(int) AtomicOr 113 23 24 21
+ 115: 6(int) Load 8(i64)
+ 116: 6(int) IAdd 115 114
+ Store 8(i64) 116
+ 117: 92(ptr) AccessChain 86(s) 28
+ 118: 10(int) AtomicOr 117 23 24 31
+ 119: 10(int) Load 12(u64)
+ 120: 10(int) IAdd 119 118
+ Store 12(u64) 120
+ 121: 87(ptr) AccessChain 86(s) 18
+ 122: 6(int) AtomicXor 121 23 24 21
+ 123: 6(int) Load 8(i64)
+ 124: 6(int) IAdd 123 122
+ Store 8(i64) 124
+ 125: 92(ptr) AccessChain 86(s) 28
+ 126: 10(int) AtomicXor 125 23 24 31
+ 127: 10(int) Load 12(u64)
+ 128: 10(int) IAdd 127 126
+ Store 12(u64) 128
+ 129: 87(ptr) AccessChain 86(s) 18
+ 130: 6(int) AtomicIAdd 129 23 24 21
+ 131: 6(int) Load 8(i64)
+ 132: 6(int) IAdd 131 130
+ Store 8(i64) 132
+ 133: 87(ptr) AccessChain 86(s) 18
+ 134: 6(int) AtomicExchange 133 23 24 21
+ 135: 6(int) Load 8(i64)
+ 136: 6(int) IAdd 135 134
+ Store 8(i64) 136
+ 137: 87(ptr) AccessChain 86(s) 18
+ 138: 6(int) Load 8(i64)
+ 139: 6(int) AtomicCompareExchange 137 23 24 24 138 21
+ 140: 6(int) Load 8(i64)
+ 141: 6(int) IAdd 140 139
+ Store 8(i64) 141
+ 142: 6(int) Load 8(i64)
+ 143: 87(ptr) AccessChain 86(s) 18
+ Store 143 142
+ 144: 10(int) Load 12(u64)
+ 145: 92(ptr) AccessChain 86(s) 28
+ Store 145 144
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.bitCast.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.bitCast.frag.out
index 07dd729e6d5..75662132be4 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.bitCast.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.bitCast.frag.out
@@ -1,8 +1,6 @@
spv.bitCast.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 172
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.bool.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.bool.vert.out
index 2810ff1e4fc..5f02671a34a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.bool.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.bool.vert.out
@@ -1,9 +1,7 @@
spv.bool.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 44
+// Generated by (magic number): 80002
+// Id's are bound by 46
Capability Shader
1: ExtInstImport "GLSL.std.450"
@@ -56,7 +54,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
38: 18(fvec4) ConstantComposite 37 37 37 37
39: 17(float) Constant 1065353216
40: 18(fvec4) ConstantComposite 39 39 39 39
- 42: TypePointer Output 18(fvec4)
+ 41: TypeVector 6(bool) 4
+ 44: TypePointer Output 18(fvec4)
4(main): 2 Function None 3
5: Label
30(param): 7(ptr) Variable Function
@@ -65,9 +64,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre
35: 6(bool) INotEqual 33 34
Store 30(param) 35
36: 6(bool) FunctionCall 10(foo(b1;) 30(param)
- 41: 18(fvec4) Select 36 38 40
- 43: 42(ptr) AccessChain 24 26
- Store 43 41
+ 42: 41(bvec4) CompositeConstruct 36 36 36 36
+ 43: 18(fvec4) Select 42 38 40
+ 45: 44(ptr) AccessChain 24 26
+ Store 45 43
Return
FunctionEnd
10(foo(b1;): 6(bool) Function None 8
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.boolInBlock.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.boolInBlock.frag.out
index 2181f26d686..6102c4a184f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.boolInBlock.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.boolInBlock.frag.out
@@ -1,8 +1,6 @@
spv.boolInBlock.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 107
Capability Shader
@@ -52,9 +50,9 @@ Warning, version 450 is not yet complete; most version-specific features are pre
28: 27(int) Constant 0
29: 6(bool) ConstantFalse
30: 9(bvec2) ConstantComposite 29 29
- 31: 22(int) Constant 0
+ 31: 22(int) Constant 1
32: 23(ivec2) ConstantComposite 31 31
- 33: 22(int) Constant 1
+ 33: 22(int) Constant 0
34: 23(ivec2) ConstantComposite 33 33
36: TypePointer Uniform 23(ivec2)
38: TypeVector 22(int) 4
@@ -62,7 +60,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
40: TypePointer Uniform 39(Uniform)
41: 40(ptr) Variable Uniform
42: TypePointer Uniform 38(ivec4)
- 65: 38(ivec4) ConstantComposite 31 31 31 31
+ 65: 38(ivec4) ConstantComposite 33 33 33 33
72: TypeFloat 32
73: TypeVector 72(float) 4
74: TypePointer Output 73(fvec4)
@@ -73,22 +71,22 @@ Warning, version 450 is not yet complete; most version-specific features are pre
5: Label
62(param): 8(ptr) Variable Function
67(param): 10(ptr) Variable Function
- 35: 23(ivec2) Select 30 34 32
+ 35: 23(ivec2) Select 30 32 34
37: 36(ptr) AccessChain 26 28
Store 37 35
43: 42(ptr) AccessChain 41 28
44: 38(ivec4) Load 43
45: 22(int) CompositeExtract 44 2
- 46: 6(bool) INotEqual 45 31
+ 46: 6(bool) INotEqual 45 33
SelectionMerge 48 None
BranchConditional 46 47 48
47: Label
49: 42(ptr) AccessChain 41 28
50: 38(ivec4) Load 49
51: 22(int) CompositeExtract 50 0
- 52: 6(bool) INotEqual 51 31
+ 52: 6(bool) INotEqual 51 33
53: 9(bvec2) CompositeConstruct 52 52
- 54: 23(ivec2) Select 53 34 32
+ 54: 23(ivec2) Select 53 32 34
55: 36(ptr) AccessChain 26 28
Store 55 54
Branch 48
@@ -96,7 +94,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
56: 36(ptr) AccessChain 26 28
57: 23(ivec2) Load 56
58: 22(int) CompositeExtract 57 0
- 59: 6(bool) INotEqual 58 31
+ 59: 6(bool) INotEqual 58 33
SelectionMerge 61 None
BranchConditional 59 60 61
60: Label
@@ -106,7 +104,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Store 62(param) 66
68: 2 FunctionCall 14(foo(vb4;vb2;) 62(param) 67(param)
69: 9(bvec2) Load 67(param)
- 70: 23(ivec2) Select 69 34 32
+ 70: 23(ivec2) Select 69 32 34
71: 36(ptr) AccessChain 26 28
Store 71 70
Branch 61
@@ -114,14 +112,14 @@ Warning, version 450 is not yet complete; most version-specific features are pre
76: 42(ptr) AccessChain 41 28
77: 38(ivec4) Load 76
78: 22(int) CompositeExtract 77 0
- 79: 6(bool) INotEqual 78 31
+ 79: 6(bool) INotEqual 78 33
SelectionMerge 81 None
BranchConditional 79 80 81
80: Label
82: 42(ptr) AccessChain 41 28
83: 38(ivec4) Load 82
84: 22(int) CompositeExtract 83 1
- 85: 6(bool) INotEqual 84 31
+ 85: 6(bool) INotEqual 84 33
Branch 81
81: Label
86: 6(bool) Phi 79 61 85 80
@@ -131,7 +129,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
91: 42(ptr) AccessChain 41 28
92: 38(ivec4) Load 91
93: 22(int) CompositeExtract 92 0
- 94: 6(bool) INotEqual 93 31
+ 94: 6(bool) INotEqual 93 33
95: 6(bool) LogicalNot 94
SelectionMerge 97 None
BranchConditional 95 96 97
@@ -139,7 +137,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
98: 42(ptr) AccessChain 41 28
99: 38(ivec4) Load 98
100: 22(int) CompositeExtract 99 1
- 101: 6(bool) INotEqual 100 31
+ 101: 6(bool) INotEqual 100 33
Branch 97
97: Label
102: 6(bool) Phi 94 81 101 96
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.branch-return.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.branch-return.vert.out
index 9093135b954..6633d660da2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.branch-return.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.branch-return.vert.out
@@ -1,8 +1,6 @@
spv.branch-return.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 38
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.buffer.autoassign.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.buffer.autoassign.frag.out
index 8fb6215ccf2..549a5a28303 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.buffer.autoassign.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.buffer.autoassign.frag.out
@@ -1,6 +1,6 @@
spv.buffer.autoassign.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 50
Capability Shader
@@ -8,6 +8,7 @@ spv.buffer.autoassign.frag
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 47
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -23,7 +24,7 @@ spv.buffer.autoassign.frag
Name 34 "MyUB3"
MemberName 34(MyUB3) 0 "g_d"
Name 36 ""
- Name 47 "Color"
+ Name 47 "@entryPointOutput.Color"
MemberDecorate 16(MyUB1) 0 Offset 0
MemberDecorate 16(MyUB1) 1 Offset 4
Decorate 16(MyUB1) Block
@@ -37,7 +38,7 @@ spv.buffer.autoassign.frag
Decorate 34(MyUB3) Block
Decorate 36 DescriptorSet 0
Decorate 36 Binding 16
- Decorate 47(Color) Location 0
+ Decorate 47(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -61,12 +62,12 @@ spv.buffer.autoassign.frag
36: 35(ptr) Variable Uniform
41: TypePointer Function 7(fvec4)
46: TypePointer Output 7(fvec4)
- 47(Color): 46(ptr) Variable Output
+47(@entryPointOutput.Color): 46(ptr) Variable Output
4(main): 2 Function None 3
5: Label
48:8(PS_OUTPUT) FunctionCall 10(@main()
49: 7(fvec4) CompositeExtract 48 0
- Store 47(Color) 49
+ Store 47(@entryPointOutput.Color) 49
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.conditionalDiscard.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.conditionalDiscard.frag.out
index b3cb8e866a7..b62e3b3e49e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.conditionalDiscard.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.conditionalDiscard.frag.out
@@ -1,8 +1,6 @@
spv.conditionalDiscard.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 36
Capability Shader
@@ -17,6 +15,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Name 17 "coord"
Name 34 "gl_FragColor"
Decorate 13(tex) DescriptorSet 0
+ Decorate 34(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.conversion.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.conversion.frag.out
index b38d84e8266..bdc1972f610 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.conversion.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.conversion.frag.out
@@ -1,6 +1,6 @@
spv.conversion.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 455
Capability Shader
@@ -51,6 +51,7 @@ spv.conversion.frag
Name 454 "i_f4"
Decorate 39(i_i) Flat
Decorate 157(i_i4) Flat
+ Decorate 322(gl_FragColor) Location 0
Decorate 446(i_i2) Flat
Decorate 448(i_i3) Flat
2: TypeVoid
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOut.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOut.frag.out
index 9dbe5d124b3..6b990647c53 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOut.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOut.frag.out
@@ -1,6 +1,6 @@
spv.dataOut.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 20
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOutIndirect.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOutIndirect.frag.out
index 663092fd324..520d9a84868 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOutIndirect.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOutIndirect.frag.out
@@ -1,6 +1,6 @@
spv.dataOutIndirect.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 26
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOutIndirect.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOutIndirect.vert.out
index 1523fab59e8..764cec12ce7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOutIndirect.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.dataOutIndirect.vert.out
@@ -2,7 +2,7 @@ spv.dataOutIndirect.vert
WARNING: 0:3: attribute deprecated in version 130; may be removed in future release
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 38
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.debugInfo.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.debugInfo.frag.out
new file mode 100644
index 00000000000..706f068e40d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.debugInfo.frag.out
@@ -0,0 +1,280 @@
+spv.debugInfo.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 126
+
+ Capability Shader
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5 "main" 24 52
+ ExecutionMode 5 OriginLowerLeft
+ 1: String "spv.debugInfo.frag"
+ Source GLSL 450 1 "// OpModuleProcessed no-storage-format
+// OpModuleProcessed resource-set-binding 3
+// OpModuleProcessed auto-map-locations
+// OpModuleProcessed client opengl100
+// OpModuleProcessed target-env opengl
+// OpModuleProcessed relaxed-errors
+// OpModuleProcessed suppress-warnings
+// OpModuleProcessed hlsl-offsets
+// OpModuleProcessed entry-point main
+#line 1
+#version 450
+
+struct S {
+ int a;
+};
+
+uniform ubuf {
+ S s;
+};
+
+uniform sampler2D s2d;
+
+layout(location = 0) in vec4 inv;
+layout(location = 0) out vec4 outv;
+
+vec4 foo(S s)
+{
+ vec4 r = s.a * inv;
+ ++r;
+ if (r.x > 3.0)
+ --r;
+ else
+ r *= 2;
+
+ return r;
+}
+
+void main()
+{
+ outv = foo(s);
+ outv += texture(s2d, vec2(0.5));
+
+ switch (s.a) {
+ case 10:
+ ++outv;
+ break;
+ case 20:
+ outv = 2 * outv;
+ ++outv;
+ break;
+ default:
+ --outv;
+ break;
+ }
+
+ for (int i = 0; i < 10; ++i)
+ outv *= 3.0;
+
+ outv.x < 10.0 ?
+ outv = sin(outv) :
+ outv = cos(outv);
+}"
+ Name 5 "main"
+ Name 8 "S"
+ MemberName 8(S) 0 "a"
+ Name 14 "foo(struct-S-i11;"
+ Name 13 "s"
+ Name 17 "r"
+ Name 24 "inv"
+ Name 52 "outv"
+ Name 53 "S"
+ MemberName 53(S) 0 "a"
+ Name 54 "ubuf"
+ MemberName 54(ubuf) 0 "s"
+ Name 56 ""
+ Name 57 "S"
+ MemberName 57(S) 0 "a"
+ Name 59 "param"
+ Name 69 "s2d"
+ Name 99 "i"
+ Decorate 24(inv) Location 0
+ Decorate 52(outv) Location 0
+ MemberDecorate 53(S) 0 Offset 0
+ MemberDecorate 54(ubuf) 0 Offset 0
+ Decorate 54(ubuf) Block
+ Decorate 56 DescriptorSet 3
+ Decorate 69(s2d) DescriptorSet 3
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 7: TypeInt 32 1
+ 8(S): TypeStruct 7(int)
+ 9: TypePointer Function 8(S)
+ 10: TypeFloat 32
+ 11: TypeVector 10(float) 4
+ 12: TypeFunction 11(fvec4) 9(ptr)
+ 16: TypePointer Function 11(fvec4)
+ 18: 7(int) Constant 0
+ 19: TypePointer Function 7(int)
+ 23: TypePointer Input 11(fvec4)
+ 24(inv): 23(ptr) Variable Input
+ 28: 10(float) Constant 1065353216
+ 31: TypeInt 32 0
+ 32: 31(int) Constant 0
+ 33: TypePointer Function 10(float)
+ 36: 10(float) Constant 1077936128
+ 37: TypeBool
+ 45: 10(float) Constant 1073741824
+ 51: TypePointer Output 11(fvec4)
+ 52(outv): 51(ptr) Variable Output
+ 53(S): TypeStruct 7(int)
+ 54(ubuf): TypeStruct 53(S)
+ 55: TypePointer Uniform 54(ubuf)
+ 56: 55(ptr) Variable Uniform
+ 57(S): TypeStruct 7(int)
+ 58: TypePointer Function 57(S)
+ 60: TypePointer Uniform 53(S)
+ 66: TypeImage 10(float) 2D sampled format:Unknown
+ 67: TypeSampledImage 66
+ 68: TypePointer UniformConstant 67
+ 69(s2d): 68(ptr) Variable UniformConstant
+ 71: TypeVector 10(float) 2
+ 72: 10(float) Constant 1056964608
+ 73: 71(fvec2) ConstantComposite 72 72
+ 77: TypePointer Uniform 7(int)
+ 106: 7(int) Constant 10
+ 111: 7(int) Constant 1
+ 114: TypePointer Output 10(float)
+ 117: 10(float) Constant 1092616192
+ 5(main): 3 Function None 4
+ 6: Label
+ 59(param): 58(ptr) Variable Function
+ 99(i): 19(ptr) Variable Function
+ 113: 16(ptr) Variable Function
+ Line 1 30 0
+ 61: 60(ptr) AccessChain 56 18
+ 62: 53(S) Load 61
+ 63: 7(int) CompositeExtract 62 0
+ 64: 19(ptr) AccessChain 59(param) 18
+ Store 64 63
+ 65: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 59(param)
+ Store 52(outv) 65
+ Line 1 31 0
+ 70: 67 Load 69(s2d)
+ 74: 11(fvec4) ImageSampleImplicitLod 70 73
+ 75: 11(fvec4) Load 52(outv)
+ 76: 11(fvec4) FAdd 75 74
+ Store 52(outv) 76
+ Line 1 33 0
+ 78: 77(ptr) AccessChain 56 18 18
+ 79: 7(int) Load 78
+ SelectionMerge 83 None
+ Switch 79 82
+ case 10: 80
+ case 20: 81
+ 82: Label
+ Line 1 42 0
+ 94: 11(fvec4) Load 52(outv)
+ 95: 11(fvec4) CompositeConstruct 28 28 28 28
+ 96: 11(fvec4) FSub 94 95
+ Store 52(outv) 96
+ Line 1 43 0
+ Branch 83
+ 80: Label
+ Line 1 35 0
+ 84: 11(fvec4) Load 52(outv)
+ 85: 11(fvec4) CompositeConstruct 28 28 28 28
+ 86: 11(fvec4) FAdd 84 85
+ Store 52(outv) 86
+ Line 1 36 0
+ Branch 83
+ 81: Label
+ Line 1 38 0
+ 88: 11(fvec4) Load 52(outv)
+ 89: 11(fvec4) VectorTimesScalar 88 45
+ Store 52(outv) 89
+ Line 1 39 0
+ 90: 11(fvec4) Load 52(outv)
+ 91: 11(fvec4) CompositeConstruct 28 28 28 28
+ 92: 11(fvec4) FAdd 90 91
+ Store 52(outv) 92
+ Line 1 40 0
+ Branch 83
+ 83: Label
+ Line 1 46 0
+ Store 99(i) 18
+ Branch 100
+ 100: Label
+ LoopMerge 102 103 None
+ Branch 104
+ 104: Label
+ 105: 7(int) Load 99(i)
+ 107: 37(bool) SLessThan 105 106
+ BranchConditional 107 101 102
+ 101: Label
+ Line 1 47 0
+ 108: 11(fvec4) Load 52(outv)
+ 109: 11(fvec4) VectorTimesScalar 108 36
+ Store 52(outv) 109
+ Branch 103
+ 103: Label
+ Line 1 46 0
+ 110: 7(int) Load 99(i)
+ 112: 7(int) IAdd 110 111
+ Store 99(i) 112
+ Branch 100
+ 102: Label
+ Line 1 49 0
+ 115: 114(ptr) AccessChain 52(outv) 32
+ 116: 10(float) Load 115
+ 118: 37(bool) FOrdLessThan 116 117
+ SelectionMerge 120 None
+ BranchConditional 118 119 123
+ 119: Label
+ Line 1 50 0
+ 121: 11(fvec4) Load 52(outv)
+ 122: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 121
+ Store 52(outv) 122
+ Store 113 122
+ Branch 120
+ 123: Label
+ Line 1 51 0
+ 124: 11(fvec4) Load 52(outv)
+ 125: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 124
+ Store 52(outv) 125
+ Store 113 125
+ Branch 120
+ 120: Label
+ Return
+ FunctionEnd
+14(foo(struct-S-i11;): 11(fvec4) Function None 12
+ 13(s): 9(ptr) FunctionParameter
+ 15: Label
+ 17(r): 16(ptr) Variable Function
+ Line 1 18 0
+ 20: 19(ptr) AccessChain 13(s) 18
+ 21: 7(int) Load 20
+ 22: 10(float) ConvertSToF 21
+ 25: 11(fvec4) Load 24(inv)
+ 26: 11(fvec4) VectorTimesScalar 25 22
+ Store 17(r) 26
+ Line 1 19 0
+ 27: 11(fvec4) Load 17(r)
+ 29: 11(fvec4) CompositeConstruct 28 28 28 28
+ 30: 11(fvec4) FAdd 27 29
+ Store 17(r) 30
+ Line 1 20 0
+ 34: 33(ptr) AccessChain 17(r) 32
+ 35: 10(float) Load 34
+ 38: 37(bool) FOrdGreaterThan 35 36
+ SelectionMerge 40 None
+ BranchConditional 38 39 44
+ 39: Label
+ Line 1 21 0
+ 41: 11(fvec4) Load 17(r)
+ 42: 11(fvec4) CompositeConstruct 28 28 28 28
+ 43: 11(fvec4) FSub 41 42
+ Store 17(r) 43
+ Branch 40
+ 44: Label
+ Line 1 23 0
+ 46: 11(fvec4) Load 17(r)
+ 47: 11(fvec4) VectorTimesScalar 46 45
+ Store 17(r) 47
+ Branch 40
+ 40: Label
+ Line 1 25 0
+ 48: 11(fvec4) Load 17(r)
+ ReturnValue 48
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.deepRvalue.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.deepRvalue.frag.out
index b6613ef5ae9..4561f02173e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.deepRvalue.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.deepRvalue.frag.out
@@ -1,12 +1,12 @@
spv.deepRvalue.frag
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 150
+// Generated by (magic number): 80002
+// Id's are bound by 152
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 144
+ EntryPoint Fragment 4 "main" 146
ExecutionMode 4 OriginUpperLeft
Source GLSL 330
Name 4 "main"
@@ -21,13 +21,14 @@ spv.deepRvalue.frag
Name 106 "h"
Name 107 "i"
Name 111 "samp2D"
- Name 129 "str"
- MemberName 129(str) 0 "a"
- MemberName 129(str) 1 "b"
- MemberName 129(str) 2 "c"
- Name 131 "t"
- Name 144 "gl_FragColor"
+ Name 131 "str"
+ MemberName 131(str) 0 "a"
+ MemberName 131(str) 1 "b"
+ MemberName 131(str) 2 "c"
+ Name 133 "t"
+ Name 146 "gl_FragColor"
Decorate 111(samp2D) DescriptorSet 0
+ Decorate 146(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -77,19 +78,20 @@ spv.deepRvalue.frag
115: 113(fvec2) ConstantComposite 114 114
119: 6(float) Constant 1036831949
120: TypeBool
- 128: TypeArray 113(fvec2) 84
- 129(str): TypeStruct 81(int) 128 120(bool)
- 130: TypePointer Function 129(str)
- 132: 113(fvec2) ConstantComposite 10 11
- 133: 6(float) Constant 1082130432
- 134: 113(fvec2) ConstantComposite 133 12
- 135: 6(float) Constant 1086324736
- 136: 113(fvec2) ConstantComposite 135 13
- 137: 128 ConstantComposite 132 134 136
- 138: 120(bool) ConstantTrue
- 139: 129(str) ConstantComposite 82 137 138
- 143: TypePointer Output 7(fvec4)
-144(gl_FragColor): 143(ptr) Variable Output
+ 124: TypeVector 120(bool) 4
+ 130: TypeArray 113(fvec2) 84
+ 131(str): TypeStruct 81(int) 130 120(bool)
+ 132: TypePointer Function 131(str)
+ 134: 113(fvec2) ConstantComposite 10 11
+ 135: 6(float) Constant 1082130432
+ 136: 113(fvec2) ConstantComposite 135 12
+ 137: 6(float) Constant 1086324736
+ 138: 113(fvec2) ConstantComposite 137 13
+ 139: 130 ConstantComposite 134 136 138
+ 140: 120(bool) ConstantTrue
+ 141: 131(str) ConstantComposite 82 139 140
+ 145: TypePointer Output 7(fvec4)
+146(gl_FragColor): 145(ptr) Variable Output
4(main): 2 Function None 3
5: Label
35(m): 34(ptr) Variable Function
@@ -98,7 +100,7 @@ spv.deepRvalue.frag
87(g): 79(ptr) Variable Function
106(h): 79(ptr) Variable Function
107(i): 79(ptr) Variable Function
- 131(t): 130(ptr) Variable Function
+ 133(t): 132(ptr) Variable Function
Store 9(v1) 14
Store 15(v2) 20
Store 21(v3) 26
@@ -174,21 +176,22 @@ spv.deepRvalue.frag
121: 120(bool) FOrdGreaterThan 118 119
122: 7(fvec4) Load 9(v1)
123: 7(fvec4) Load 15(v2)
- 124: 7(fvec4) Select 121 122 123
- 125: 6(float) CompositeExtract 124 3
- 126: 6(float) Load 107(i)
- 127: 6(float) FAdd 126 125
- Store 107(i) 127
- Store 131(t) 139
- 140: 6(float) CompositeExtract 139 1 2 1
- 141: 6(float) Load 107(i)
- 142: 6(float) FAdd 141 140
- Store 107(i) 142
- 145: 6(float) Load 80(f)
- 146: 6(float) Load 87(g)
- 147: 6(float) Load 106(h)
- 148: 6(float) Load 107(i)
- 149: 7(fvec4) CompositeConstruct 145 146 147 148
- Store 144(gl_FragColor) 149
+ 125: 124(bvec4) CompositeConstruct 121 121 121 121
+ 126: 7(fvec4) Select 125 122 123
+ 127: 6(float) CompositeExtract 126 3
+ 128: 6(float) Load 107(i)
+ 129: 6(float) FAdd 128 127
+ Store 107(i) 129
+ Store 133(t) 141
+ 142: 6(float) CompositeExtract 141 1 2 1
+ 143: 6(float) Load 107(i)
+ 144: 6(float) FAdd 143 142
+ Store 107(i) 144
+ 147: 6(float) Load 80(f)
+ 148: 6(float) Load 87(g)
+ 149: 6(float) Load 106(h)
+ 150: 6(float) Load 107(i)
+ 151: 7(fvec4) CompositeConstruct 147 148 149 150
+ Store 146(gl_FragColor) 151
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.depthOut.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.depthOut.frag.out
index 247b2f3d084..12ac32cd0b7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.depthOut.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.depthOut.frag.out
@@ -1,8 +1,6 @@
spv.depthOut.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 15
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out
index 42e045b3c89..1761c92c680 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out
@@ -1,8 +1,6 @@
spv.deviceGroup.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 17
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.discard-dce.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.discard-dce.frag.out
index 173ea260ae9..770199b848e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.discard-dce.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.discard-dce.frag.out
@@ -1,6 +1,6 @@
spv.discard-dce.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 84
Capability Shader
@@ -18,6 +18,7 @@ spv.discard-dce.frag
Name 30 "y"
Name 36 "radius"
Name 59 "gl_FragColor"
+ Decorate 59(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.do-simple.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.do-simple.vert.out
index d6d4c28f338..f503be062d5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.do-simple.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.do-simple.vert.out
@@ -1,8 +1,6 @@
spv.do-simple.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 21
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.do-while-continue-break.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.do-while-continue-break.vert.out
index d1d0c85c98a..c6a8b8680ca 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.do-while-continue-break.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.do-while-continue-break.vert.out
@@ -1,8 +1,6 @@
spv.do-while-continue-break.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 43
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.doWhileLoop.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.doWhileLoop.frag.out
index 9b8cee7013f..4cf8f09e5f4 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.doWhileLoop.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.doWhileLoop.frag.out
@@ -1,6 +1,6 @@
spv.doWhileLoop.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 34
Capability Shader
@@ -15,6 +15,7 @@ spv.doWhileLoop.frag
Name 17 "bigColor"
Name 27 "d"
Name 32 "gl_FragColor"
+ Decorate 32(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.double.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.double.comp.out
index 3b1bdc89ca8..52410d8a38e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.double.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.double.comp.out
@@ -1,8 +1,6 @@
spv.double.comp
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 60
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out
index b75efe0482d..c5b29a3ee0b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out
@@ -1,8 +1,6 @@
spv.drawParams.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 29
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.earlyReturnDiscard.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.earlyReturnDiscard.frag.out
index 41441b7f6f3..61788aa0dd7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.earlyReturnDiscard.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.earlyReturnDiscard.frag.out
@@ -1,6 +1,6 @@
spv.earlyReturnDiscard.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 110
Capability Shader
@@ -24,6 +24,7 @@ spv.earlyReturnDiscard.frag
Name 77 "b"
Name 105 "gl_FragColor"
Name 109 "threshhold3"
+ Decorate 105(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.extPostDepthCoverage.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.extPostDepthCoverage.frag.out
new file mode 100644
index 00000000000..ca777e0fc71
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.extPostDepthCoverage.frag.out
@@ -0,0 +1,23 @@
+spv.extPostDepthCoverage.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 6
+
+ Capability Shader
+ Capability SampleMaskPostDepthCoverage
+ Extension "SPV_KHR_post_depth_coverage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ ExecutionMode 4 EarlyFragmentTests
+ ExecutionMode 4 PostDepthCoverage
+ Source ESSL 310
+ SourceExtension "GL_EXT_post_depth_coverage"
+ Name 4 "main"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 4(main): 2 Function None 3
+ 5: Label
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.extPostDepthCoverage_Error.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.extPostDepthCoverage_Error.frag.out
new file mode 100644
index 00000000000..9ce299f462f
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.extPostDepthCoverage_Error.frag.out
@@ -0,0 +1,4 @@
+spv.extPostDepthCoverage_Error.frag
+ERROR: Linking fragment stage: post_depth_coverage requires early_fragment_tests
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.float16.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.float16.frag.out
index 78156e40b1d..004ba52bdd6 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.float16.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.float16.frag.out
@@ -1,8 +1,6 @@
spv.float16.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 534
Capability Shader
@@ -11,7 +9,11 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Capability Int64
Capability DerivativeControl
Capability InterpolationFunction
+ Capability StorageUniformBufferBlock16
+ Capability StorageUniform16
+ Capability StorageInputOutput16
Extension "SPV_AMD_gpu_shader_half_float"
+ Extension "SPV_KHR_16bit_storage"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 465
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.flowControl.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.flowControl.frag.out
index 274cb74612e..ca04e07cbb2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.flowControl.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.flowControl.frag.out
@@ -1,6 +1,6 @@
spv.flowControl.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 39
Capability Shader
@@ -19,6 +19,7 @@ spv.flowControl.frag
Name 25 "bigColor"
Name 30 "smallColor"
Name 35 "gl_FragColor"
+ Decorate 35(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-complex-condition.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-complex-condition.vert.out
index 939d082735a..0bea463f0f9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-complex-condition.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-complex-condition.vert.out
@@ -1,8 +1,6 @@
spv.for-complex-condition.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 31
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-continue-break.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-continue-break.vert.out
index 764001dbe37..98c8fd07419 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-continue-break.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-continue-break.vert.out
@@ -1,8 +1,6 @@
spv.for-continue-break.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 45
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-nobody.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-nobody.vert.out
index 0ec3584da80..919c71aa82e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-nobody.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-nobody.vert.out
@@ -1,8 +1,6 @@
spv.for-nobody.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 25
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-notest.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-notest.vert.out
index c7346f9df8c..b2e574c2ba0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-notest.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-notest.vert.out
@@ -1,8 +1,6 @@
spv.for-notest.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 20
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-simple.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-simple.vert.out
index 996b65a4af0..945668c5b6c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-simple.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.for-simple.vert.out
@@ -1,8 +1,6 @@
spv.for-simple.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 24
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.forLoop.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.forLoop.frag.out
index 628c791f67f..6095a45047d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.forLoop.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.forLoop.frag.out
@@ -1,6 +1,6 @@
spv.forLoop.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 131
Capability Shader
@@ -26,6 +26,7 @@ spv.forLoop.frag
Name 104 "f"
Name 117 "i"
Decorate 24(Count) Flat
+ Decorate 36(gl_FragColor) Location 0
Decorate 53(v4) Flat
2: TypeVoid
3: TypeFunction 2
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.forwardFun.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.forwardFun.frag.out
index 65759531edb..06d76bff133 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.forwardFun.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.forwardFun.frag.out
@@ -1,6 +1,6 @@
spv.forwardFun.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 60
Capability Shader
@@ -32,6 +32,7 @@ spv.forwardFun.frag
Decorate 27(f) RelaxedPrecision
Decorate 28 RelaxedPrecision
Decorate 30(gl_FragColor) RelaxedPrecision
+ Decorate 30(gl_FragColor) Location 0
Decorate 31 RelaxedPrecision
Decorate 32 RelaxedPrecision
Decorate 33 RelaxedPrecision
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionCall.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionCall.frag.out
index 69a525f7912..c9762d9054e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionCall.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionCall.frag.out
@@ -4,7 +4,7 @@ WARNING: 0:4: varying deprecated in version 130; may be removed in future releas
WARNING: 0:5: varying deprecated in version 130; may be removed in future release
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 76
Capability Shader
@@ -28,6 +28,7 @@ WARNING: 0:5: varying deprecated in version 130; may be removed in future releas
Name 66 "g"
Name 69 "gl_FragColor"
Name 75 "bigColor"
+ Decorate 69(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionNestedOpaque.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionNestedOpaque.vert.out
index 1dae38144f6..71f994e0562 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionNestedOpaque.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionNestedOpaque.vert.out
@@ -1,8 +1,6 @@
spv.functionNestedOpaque.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 39
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionSemantics.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionSemantics.frag.out
index 005a315bb1e..e81cb30c410 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionSemantics.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.functionSemantics.frag.out
@@ -1,8 +1,6 @@
spv.functionSemantics.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 156
Capability Shader
@@ -44,6 +42,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Name 133 "param"
Name 136 "arg"
Name 152 "gl_FragColor"
+ Decorate 152(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glFragColor.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glFragColor.frag.out
index febbdf46981..15f77654c3e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glFragColor.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glFragColor.frag.out
@@ -1,6 +1,6 @@
spv.glFragColor.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 12
Capability Shader
@@ -11,6 +11,7 @@ spv.glFragColor.frag
Source GLSL 330
Name 4 "main"
Name 9 "gl_FragColor"
+ Decorate 9(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glsl.register.autoassign.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glsl.register.autoassign.frag.out
index 11818f6473b..e26fd6ada35 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glsl.register.autoassign.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glsl.register.autoassign.frag.out
@@ -1,8 +1,6 @@
spv.glsl.register.autoassign.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 142
Capability Shader
@@ -78,6 +76,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Decorate 126(g_tTex_unused2) DescriptorSet 0
Decorate 126(g_tTex_unused2) Binding 12
Decorate 128(g_sSamp_unused2) DescriptorSet 0
+ Decorate 137(FragColor) Location 0
Decorate 141(g_tTex_unused3) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glsl.register.noautoassign.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glsl.register.noautoassign.frag.out
index 327ac04aea5..5fd0596b8e1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glsl.register.noautoassign.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.glsl.register.noautoassign.frag.out
@@ -1,8 +1,6 @@
spv.glsl.register.noautoassign.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 142
Capability Shader
@@ -72,6 +70,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Decorate 126(g_tTex_unused2) DescriptorSet 0
Decorate 126(g_tTex_unused2) Binding 12
Decorate 128(g_sSamp_unused2) DescriptorSet 0
+ Decorate 137(FragColor) Location 0
Decorate 141(g_tTex_unused3) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.hlslDebugInfo.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.hlslDebugInfo.frag.out
new file mode 100644
index 00000000000..9eddfdfad52
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.hlslDebugInfo.frag.out
@@ -0,0 +1,58 @@
+spv.hlslDebugInfo.vert
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 19
+
+ Capability Shader
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 5 "newMain" 17
+ 1: String "spv.hlslDebugInfo.vert"
+ Source HLSL 500 1 "// OpModuleProcessed entry-point newMain
+// OpModuleProcessed shift-sampler-binding 2
+// OpModuleProcessed shift-texture-binding 4
+// OpModuleProcessed shift-image-binding 1
+// OpModuleProcessed shift-UBO-binding 6
+// OpModuleProcessed shift-ssbo-binding 3
+// OpModuleProcessed shift-uav-binding 5
+// OpModuleProcessed flatten-uniform-arrays
+// OpModuleProcessed no-storage-format
+// OpModuleProcessed resource-set-binding t0 0 0
+// OpModuleProcessed hlsl-iomap
+// OpModuleProcessed auto-map-bindings
+// OpModuleProcessed auto-map-locations
+// OpModuleProcessed client vulkan100
+// OpModuleProcessed target-env vulkan1.0
+// OpModuleProcessed source-entrypoint origMain
+// OpModuleProcessed hlsl-offsets
+#line 1
+float4 origMain() : SV_Position
+{
+ return (float4)0;
+}
+"
+ Name 5 "newMain"
+ Name 10 "@newMain("
+ Name 17 "@entryPointOutput"
+ Decorate 17(@entryPointOutput) BuiltIn Position
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 7: TypeFloat 32
+ 8: TypeVector 7(float) 4
+ 9: TypeFunction 8(fvec4)
+ 12: 7(float) Constant 0
+ 13: 8(fvec4) ConstantComposite 12 12 12 12
+ 16: TypePointer Output 8(fvec4)
+17(@entryPointOutput): 16(ptr) Variable Output
+ 5(newMain): 3 Function None 4
+ 6: Label
+ Line 1 2 0
+ 18: 8(fvec4) FunctionCall 10(@newMain()
+ Store 17(@entryPointOutput) 18
+ Return
+ FunctionEnd
+ 10(@newMain(): 8(fvec4) Function None 9
+ 11: Label
+ Line 1 3 0
+ ReturnValue 13
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.hlslOffsets.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.hlslOffsets.vert.out
new file mode 100644
index 00000000000..f96a629e927
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.hlslOffsets.vert.out
@@ -0,0 +1,76 @@
+spv.hlslOffsets.vert
+Shader version: 450
+0:? Sequence
+0:27 Function Definition: main( ( global void)
+0:27 Function Parameters:
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float m0, layout( column_major std430) buffer highp 3-component vector of float m4, layout( column_major std430) buffer highp float m16, layout( column_major std430 offset=20) buffer highp 3-component vector of float m20, layout( column_major std430) buffer highp 3-component vector of float m32, layout( column_major std430) buffer highp 2-component vector of float m48, layout( column_major std430) buffer highp 2-component vector of float m56, layout( column_major std430) buffer highp float m64, layout( column_major std430) buffer highp 2-component vector of float m68, layout( column_major std430) buffer highp float m76, layout( column_major std430) buffer highp float m80, layout( column_major std430 offset=88) buffer highp 2-component vector of float m88, layout( column_major std430) buffer highp 2-component vector of float m96, layout( column_major std430) buffer 2-component vector of double m112})
+
+
+Linked vertex stage:
+
+
+Shader version: 450
+0:? Sequence
+0:27 Function Definition: main( ( global void)
+0:27 Function Parameters:
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float m0, layout( column_major std430) buffer highp 3-component vector of float m4, layout( column_major std430) buffer highp float m16, layout( column_major std430 offset=20) buffer highp 3-component vector of float m20, layout( column_major std430) buffer highp 3-component vector of float m32, layout( column_major std430) buffer highp 2-component vector of float m48, layout( column_major std430) buffer highp 2-component vector of float m56, layout( column_major std430) buffer highp float m64, layout( column_major std430) buffer highp 2-component vector of float m68, layout( column_major std430) buffer highp float m76, layout( column_major std430) buffer highp float m80, layout( column_major std430 offset=88) buffer highp 2-component vector of float m88, layout( column_major std430) buffer highp 2-component vector of float m96, layout( column_major std430) buffer 2-component vector of double m112})
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 14
+
+ Capability Shader
+ Capability Float64
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main"
+ Source GLSL 450
+ Name 4 "main"
+ Name 11 "block"
+ MemberName 11(block) 0 "m0"
+ MemberName 11(block) 1 "m4"
+ MemberName 11(block) 2 "m16"
+ MemberName 11(block) 3 "m20"
+ MemberName 11(block) 4 "m32"
+ MemberName 11(block) 5 "m48"
+ MemberName 11(block) 6 "m56"
+ MemberName 11(block) 7 "m64"
+ MemberName 11(block) 8 "m68"
+ MemberName 11(block) 9 "m76"
+ MemberName 11(block) 10 "m80"
+ MemberName 11(block) 11 "m88"
+ MemberName 11(block) 12 "m96"
+ MemberName 11(block) 13 "m112"
+ Name 13 ""
+ MemberDecorate 11(block) 0 Offset 0
+ MemberDecorate 11(block) 1 Offset 4
+ MemberDecorate 11(block) 2 Offset 16
+ MemberDecorate 11(block) 3 Offset 20
+ MemberDecorate 11(block) 4 Offset 32
+ MemberDecorate 11(block) 5 Offset 48
+ MemberDecorate 11(block) 6 Offset 56
+ MemberDecorate 11(block) 7 Offset 64
+ MemberDecorate 11(block) 8 Offset 68
+ MemberDecorate 11(block) 9 Offset 76
+ MemberDecorate 11(block) 10 Offset 80
+ MemberDecorate 11(block) 11 Offset 88
+ MemberDecorate 11(block) 12 Offset 96
+ MemberDecorate 11(block) 13 Offset 112
+ Decorate 11(block) BufferBlock
+ Decorate 13 DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8: TypeVector 6(float) 2
+ 9: TypeFloat 64
+ 10: TypeVector 9(float) 2
+ 11(block): TypeStruct 6(float) 7(fvec3) 6(float) 7(fvec3) 7(fvec3) 8(fvec2) 8(fvec2) 6(float) 8(fvec2) 6(float) 6(float) 8(fvec2) 8(fvec2) 10(fvec2)
+ 12: TypePointer Uniform 11(block)
+ 13: 12(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.image.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.image.frag.out
index ee29baf2e1c..6e35b36761b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.image.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.image.frag.out
@@ -1,22 +1,21 @@
spv.image.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 374
+// Generated by (magic number): 80002
+// Id's are bound by 376
Capability Shader
- Capability SampledRect
- Capability Sampled1D
- Capability SampledCubeArray
- Capability SampledBuffer
+ Capability StorageImageMultisample
+ Capability ImageCubeArray
+ Capability ImageRect
+ Capability Image1D
+ Capability ImageBuffer
Capability ImageMSArray
Capability StorageImageExtendedFormats
Capability ImageQuery
Capability StorageImageWriteWithoutFormat
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 132 142 152 248 362 373
+ EntryPoint Fragment 4 "main" 132 142 152 248 362 375
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
@@ -42,7 +41,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Name 248 "value"
Name 357 "wo2D"
Name 362 "fragData"
- Name 373 "ic4D"
+ Name 375 "ic4D"
Decorate 15(i1D) DescriptorSet 0
Decorate 15(i1D) Binding 0
Decorate 27(i2D) DescriptorSet 0
@@ -76,7 +75,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Decorate 357(wo2D) DescriptorSet 0
Decorate 357(wo2D) Binding 1
Decorate 357(wo2D) NonReadable
- Decorate 373(ic4D) Flat
+ Decorate 375(ic4D) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -164,9 +163,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre
361: TypePointer Output 125(fvec4)
362(fragData): 361(ptr) Variable Output
367: TypeBool
- 371: TypeVector 6(int) 4
- 372: TypePointer Input 371(ivec4)
- 373(ic4D): 372(ptr) Variable Input
+ 370: TypeVector 367(bool) 4
+ 373: TypeVector 6(int) 4
+ 374: TypePointer Input 373(ivec4)
+ 375(ic4D): 374(ptr) Variable Input
4(main): 2 Function None 3
5: Label
9(iv): 8(ptr) Variable Function
@@ -503,7 +503,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
366: 18(int) Bitcast 365
368: 367(bool) INotEqual 363 366
369: 125(fvec4) Load 127(v)
- 370: 125(fvec4) Select 368 369 129
- Store 362(fragData) 370
+ 371: 370(bvec4) CompositeConstruct 368 368 368 368
+ 372: 125(fvec4) Select 371 369 129
+ Store 362(fragData) 372
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.imageLoadStoreLod.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.imageLoadStoreLod.frag.out
new file mode 100644
index 00000000000..50b04a82747
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.imageLoadStoreLod.frag.out
@@ -0,0 +1,135 @@
+spv.imageLoadStoreLod.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 82
+
+ Capability Shader
+ Capability ImageCubeArray
+ Capability SparseResidency
+ Capability Image1D
+ Capability ImageReadWriteLodAMD
+ Extension "SPV_AMD_shader_image_load_store_lod"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 77
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_AMD_shader_image_load_store_lod"
+ Name 4 "main"
+ Name 9 "f4"
+ Name 14 "i1D"
+ Name 24 "i2D"
+ Name 34 "i3D"
+ Name 46 "iiCube"
+ Name 53 "ii1DArray"
+ Name 60 "ui2DArray"
+ Name 64 "u4"
+ Name 65 "ResType"
+ Name 71 "uiCubeArray"
+ Name 77 "fragColor"
+ Decorate 14(i1D) DescriptorSet 0
+ Decorate 14(i1D) Binding 0
+ Decorate 24(i2D) DescriptorSet 0
+ Decorate 24(i2D) Binding 1
+ Decorate 34(i3D) DescriptorSet 0
+ Decorate 34(i3D) Binding 2
+ Decorate 46(iiCube) DescriptorSet 0
+ Decorate 46(iiCube) Binding 3
+ Decorate 53(ii1DArray) DescriptorSet 0
+ Decorate 53(ii1DArray) Binding 4
+ Decorate 60(ui2DArray) DescriptorSet 0
+ Decorate 60(ui2DArray) Binding 5
+ Decorate 71(uiCubeArray) DescriptorSet 0
+ Decorate 71(uiCubeArray) Binding 6
+ Decorate 77(fragColor) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 10: 6(float) Constant 0
+ 11: 7(fvec4) ConstantComposite 10 10 10 10
+ 12: TypeImage 6(float) 1D nonsampled format:Rgba32f
+ 13: TypePointer UniformConstant 12
+ 14(i1D): 13(ptr) Variable UniformConstant
+ 16: TypeInt 32 1
+ 17: 16(int) Constant 1
+ 18: 16(int) Constant 3
+ 22: TypeImage 6(float) 2D nonsampled format:Rgba32f
+ 23: TypePointer UniformConstant 22
+ 24(i2D): 23(ptr) Variable UniformConstant
+ 26: TypeVector 16(int) 2
+ 27: 16(int) Constant 2
+ 28: 26(ivec2) ConstantComposite 27 18
+ 32: TypeImage 6(float) 3D nonsampled format:Rgba32f
+ 33: TypePointer UniformConstant 32
+ 34(i3D): 33(ptr) Variable UniformConstant
+ 36: TypeVector 16(int) 3
+ 37: 16(int) Constant 4
+ 38: 16(int) Constant 5
+ 39: 16(int) Constant 6
+ 40: 36(ivec3) ConstantComposite 37 38 39
+ 44: TypeImage 16(int) Cube nonsampled format:Rgba32i
+ 45: TypePointer UniformConstant 44
+ 46(iiCube): 45(ptr) Variable UniformConstant
+ 49: TypeVector 16(int) 4
+ 51: TypeImage 16(int) 1D array nonsampled format:Rgba32i
+ 52: TypePointer UniformConstant 51
+ 53(ii1DArray): 52(ptr) Variable UniformConstant
+ 57: TypeInt 32 0
+ 58: TypeImage 57(int) 2D array nonsampled format:Rgba32ui
+ 59: TypePointer UniformConstant 58
+ 60(ui2DArray): 59(ptr) Variable UniformConstant
+ 62: TypeVector 57(int) 4
+ 63: TypePointer Function 62(ivec4)
+ 65(ResType): TypeStruct 16(int) 62(ivec4)
+ 69: TypeImage 57(int) Cube array nonsampled format:Rgba32ui
+ 70: TypePointer UniformConstant 69
+ 71(uiCubeArray): 70(ptr) Variable UniformConstant
+ 76: TypePointer Output 7(fvec4)
+ 77(fragColor): 76(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(f4): 8(ptr) Variable Function
+ 64(u4): 63(ptr) Variable Function
+ Store 9(f4) 11
+ 15: 12 Load 14(i1D)
+ 19: 7(fvec4) ImageRead 15 17 Lod 18
+ 20: 7(fvec4) Load 9(f4)
+ 21: 7(fvec4) FAdd 20 19
+ Store 9(f4) 21
+ 25: 22 Load 24(i2D)
+ 29: 7(fvec4) ImageRead 25 28 Lod 18
+ 30: 7(fvec4) Load 9(f4)
+ 31: 7(fvec4) FAdd 30 29
+ Store 9(f4) 31
+ 35: 32 Load 34(i3D)
+ 41: 7(fvec4) ImageRead 35 40 Lod 18
+ 42: 7(fvec4) Load 9(f4)
+ 43: 7(fvec4) FAdd 42 41
+ Store 9(f4) 43
+ 47: 44 Load 46(iiCube)
+ 48: 7(fvec4) Load 9(f4)
+ 50: 49(ivec4) ConvertFToS 48
+ ImageWrite 47 40 50 Lod 18
+ 54: 51 Load 53(ii1DArray)
+ 55: 7(fvec4) Load 9(f4)
+ 56: 49(ivec4) ConvertFToS 55
+ ImageWrite 54 28 56 Lod 18
+ 61: 58 Load 60(ui2DArray)
+ 66: 65(ResType) ImageSparseRead 61 40 Lod 18
+ 67: 62(ivec4) CompositeExtract 66 1
+ Store 64(u4) 67
+ 68: 16(int) CompositeExtract 66 0
+ 72: 69 Load 71(uiCubeArray)
+ 73: 65(ResType) ImageSparseRead 72 40 Lod 18
+ 74: 62(ivec4) CompositeExtract 73 1
+ Store 64(u4) 74
+ 75: 16(int) CompositeExtract 73 0
+ 78: 7(fvec4) Load 9(f4)
+ 79: 62(ivec4) Load 64(u4)
+ 80: 7(fvec4) ConvertUToF 79
+ 81: 7(fvec4) FAdd 78 80
+ Store 77(fragColor) 81
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.int16.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.int16.frag.out
new file mode 100644
index 00000000000..6cc60705418
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.int16.frag.out
@@ -0,0 +1,779 @@
+spv.int16.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 561
+
+ Capability Shader
+ Capability Float16
+ Capability Float64
+ Capability Int64
+ Capability Int16
+ Capability StorageUniform16
+ Capability StorageInputOutput16
+ Extension "SPV_AMD_gpu_shader_half_float"
+ Extension "SPV_AMD_gpu_shader_int16"
+ Extension "SPV_KHR_16bit_storage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 520 522
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_AMD_gpu_shader_half_float"
+ SourceExtension "GL_AMD_gpu_shader_int16"
+ SourceExtension "GL_ARB_gpu_shader_int64"
+ Name 4 "main"
+ Name 6 "literal("
+ Name 8 "operators("
+ Name 10 "typeCast("
+ Name 12 "builtinFuncs("
+ Name 16 "u16"
+ Name 25 "Uniforms"
+ MemberName 25(Uniforms) 0 "i"
+ Name 27 ""
+ Name 34 "indexable"
+ Name 45 "indexable"
+ Name 51 "u16v"
+ Name 57 "i16"
+ Name 70 "u16"
+ Name 108 "i"
+ Name 130 "b"
+ Name 151 "u"
+ Name 190 "i16v"
+ Name 193 "bv"
+ Name 201 "u16v"
+ Name 214 "iv"
+ Name 227 "uv"
+ Name 241 "fv"
+ Name 253 "dv"
+ Name 265 "f16v"
+ Name 277 "i64v"
+ Name 291 "u64v"
+ Name 306 "i16v"
+ Name 312 "i16"
+ Name 320 "u16v"
+ Name 322 "u16"
+ Name 394 "f16v"
+ Name 397 "exp"
+ Name 398 "ResType"
+ Name 419 "packi"
+ Name 424 "packu"
+ Name 433 "packi64"
+ Name 442 "packu64"
+ Name 451 "bv"
+ Name 516 "Block"
+ MemberName 516(Block) 0 "i16v"
+ MemberName 516(Block) 1 "u16"
+ Name 518 "block"
+ Name 520 "iu16v"
+ Name 522 "ii16"
+ Name 523 "si64"
+ Name 524 "su64"
+ Name 525 "si"
+ Name 526 "su"
+ Name 527 "sb"
+ Name 528 "si16"
+ Name 529 "su16"
+ MemberDecorate 25(Uniforms) 0 Offset 0
+ Decorate 25(Uniforms) Block
+ Decorate 27 DescriptorSet 0
+ Decorate 27 Binding 0
+ MemberDecorate 516(Block) 0 Offset 0
+ MemberDecorate 516(Block) 1 Offset 6
+ Decorate 516(Block) Block
+ Decorate 518(block) DescriptorSet 0
+ Decorate 518(block) Binding 1
+ Decorate 520(iu16v) Flat
+ Decorate 520(iu16v) Location 0
+ Decorate 522(ii16) Flat
+ Decorate 522(ii16) Location 1
+ Decorate 523(si64) SpecId 100
+ Decorate 524(su64) SpecId 101
+ Decorate 525(si) SpecId 102
+ Decorate 526(su) SpecId 103
+ Decorate 527(sb) SpecId 104
+ Decorate 528(si16) SpecId 105
+ Decorate 529(su16) SpecId 106
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 14: TypeInt 16 0
+ 15: TypePointer Function 14(int)
+ 17: TypeInt 16 1
+ 18: TypeInt 32 0
+ 19: 18(int) Constant 3
+ 20: TypeArray 17(int) 19
+ 21: 17(int) Constant 273
+ 22: 17(int) Constant 65534
+ 23: 17(int) Constant 256
+ 24: 20 ConstantComposite 21 22 23
+ 25(Uniforms): TypeStruct 18(int)
+ 26: TypePointer Uniform 25(Uniforms)
+ 27: 26(ptr) Variable Uniform
+ 28: TypeInt 32 1
+ 29: 28(int) Constant 0
+ 30: TypePointer Uniform 18(int)
+ 33: TypePointer Function 20
+ 35: TypePointer Function 17(int)
+ 39: TypeArray 14(int) 19
+ 40: 14(int) Constant 65535
+ 41: 39 ConstantComposite 40 40 40
+ 44: TypePointer Function 39
+ 49: TypeVector 14(int) 3
+ 50: TypePointer Function 49(ivec3)
+ 53: 17(int) Constant 1
+ 54: TypeVector 17(int) 3
+ 107: TypePointer Function 28(int)
+ 111: TypeVector 28(int) 3
+ 114: 18(int) Constant 1
+ 120: 18(int) Constant 2
+ 128: TypeBool
+ 129: TypePointer Function 128(bool)
+ 131: 18(int) Constant 0
+ 150: TypePointer Function 18(int)
+ 188: TypeVector 17(int) 2
+ 189: TypePointer Function 188(ivec2)
+ 191: TypeVector 128(bool) 2
+ 192: TypePointer Function 191(bvec2)
+ 195: 17(int) Constant 0
+ 196: 188(ivec2) ConstantComposite 195 195
+ 197: 188(ivec2) ConstantComposite 53 53
+ 199: TypeVector 14(int) 2
+ 200: TypePointer Function 199(ivec2)
+ 203: 14(int) Constant 0
+ 204: 14(int) Constant 1
+ 205: 199(ivec2) ConstantComposite 203 203
+ 206: 199(ivec2) ConstantComposite 204 204
+ 212: TypeVector 28(int) 2
+ 213: TypePointer Function 212(ivec2)
+ 223: TypeVector 18(int) 2
+ 226: TypePointer Function 223(ivec2)
+ 238: TypeFloat 32
+ 239: TypeVector 238(float) 2
+ 240: TypePointer Function 239(fvec2)
+ 250: TypeFloat 64
+ 251: TypeVector 250(float) 2
+ 252: TypePointer Function 251(fvec2)
+ 262: TypeFloat 16
+ 263: TypeVector 262(float) 2
+ 264: TypePointer Function 263(fvec2)
+ 274: TypeInt 64 1
+ 275: TypeVector 274(int) 2
+ 276: TypePointer Function 275(ivec2)
+ 286: TypeInt 64 0
+ 287: TypeVector 286(int) 2
+ 290: TypePointer Function 287(ivec2)
+ 317: 17(int) Constant 65535
+ 318: 188(ivec2) ConstantComposite 317 317
+ 327: 49(ivec3) ConstantComposite 203 203 203
+ 369: 128(bool) ConstantTrue
+ 376: 128(bool) ConstantFalse
+ 377: 191(bvec2) ConstantComposite 376 376
+ 389: TypeVector 128(bool) 3
+ 390: 389(bvec3) ConstantComposite 376 376 376
+ 392: TypeVector 262(float) 3
+ 393: TypePointer Function 392(fvec3)
+ 396: TypePointer Function 54(ivec3)
+ 398(ResType): TypeStruct 392(fvec3) 54(ivec3)
+ 408: TypePointer Function 262(float)
+ 432: TypePointer Function 274(int)
+ 435: TypeVector 17(int) 4
+ 441: TypePointer Function 286(int)
+ 444: TypeVector 14(int) 4
+ 450: TypePointer Function 389(bvec3)
+ 516(Block): TypeStruct 54(ivec3) 14(int)
+ 517: TypePointer Uniform 516(Block)
+ 518(block): 517(ptr) Variable Uniform
+ 519: TypePointer Input 49(ivec3)
+ 520(iu16v): 519(ptr) Variable Input
+ 521: TypePointer Input 17(int)
+ 522(ii16): 521(ptr) Variable Input
+ 523(si64): 274(int) SpecConstant 4294967286 4294967295
+ 524(su64): 286(int) SpecConstant 20 0
+ 525(si): 28(int) SpecConstant 4294967291
+ 526(su): 18(int) SpecConstant 4
+ 527(sb): 128(bool) SpecConstantTrue
+ 528(si16): 17(int) SpecConstant 65531
+ 529(su16): 14(int) SpecConstant 4
+ 530: 128(bool) SpecConstantOp 171 528(si16) 203
+ 531: 128(bool) SpecConstantOp 171 529(su16) 203
+ 532: 17(int) SpecConstantOp 169 527(sb) 53 195
+ 533: 14(int) SpecConstantOp 169 527(sb) 204 203
+ 534: 28(int) SpecConstantOp 114 528(si16)
+ 535: 18(int) SpecConstantOp 113 529(su16)
+ 536: 28(int) SpecConstantOp 128 535 131
+ 537: 17(int) SpecConstantOp 114 525(si)
+ 538: 17(int) SpecConstantOp 114 525(si)
+ 539: 14(int) SpecConstantOp 128 538 203
+ 540: 28(int) SpecConstantOp 114 528(si16)
+ 541: 18(int) SpecConstantOp 128 540 131
+ 542: 18(int) SpecConstantOp 113 529(su16)
+ 543: 14(int) SpecConstantOp 113 526(su)
+ 544: 17(int) SpecConstantOp 128 543 203
+ 545: 14(int) SpecConstantOp 113 526(su)
+ 546: 274(int) SpecConstantOp 114 528(si16)
+ 547: 286(int) SpecConstantOp 113 529(su16)
+ 548: 286(int) Constant 0 0
+ 549: 274(int) SpecConstantOp 128 547 548
+ 550: 17(int) SpecConstantOp 114 523(si64)
+ 551: 17(int) SpecConstantOp 114 523(si64)
+ 552: 14(int) SpecConstantOp 128 551 203
+ 553: 274(int) SpecConstantOp 114 528(si16)
+ 554: 286(int) SpecConstantOp 128 553 548
+ 555: 286(int) SpecConstantOp 113 529(su16)
+ 556: 14(int) SpecConstantOp 113 524(su64)
+ 557: 17(int) SpecConstantOp 128 556 203
+ 558: 14(int) SpecConstantOp 113 524(su64)
+ 559: 14(int) SpecConstantOp 128 528(si16) 203
+ 560: 17(int) SpecConstantOp 128 529(su16) 203
+ 4(main): 2 Function None 3
+ 5: Label
+ 512: 2 FunctionCall 6(literal()
+ 513: 2 FunctionCall 8(operators()
+ 514: 2 FunctionCall 10(typeCast()
+ 515: 2 FunctionCall 12(builtinFuncs()
+ Return
+ FunctionEnd
+ 6(literal(): 2 Function None 3
+ 7: Label
+ 16(u16): 15(ptr) Variable Function
+ 34(indexable): 33(ptr) Variable Function
+ 45(indexable): 44(ptr) Variable Function
+ 31: 30(ptr) AccessChain 27 29
+ 32: 18(int) Load 31
+ Store 34(indexable) 24
+ 36: 35(ptr) AccessChain 34(indexable) 32
+ 37: 17(int) Load 36
+ 38: 14(int) Bitcast 37
+ 42: 30(ptr) AccessChain 27 29
+ 43: 18(int) Load 42
+ Store 45(indexable) 41
+ 46: 15(ptr) AccessChain 45(indexable) 43
+ 47: 14(int) Load 46
+ 48: 14(int) IAdd 38 47
+ Store 16(u16) 48
+ Return
+ FunctionEnd
+ 8(operators(): 2 Function None 3
+ 9: Label
+ 51(u16v): 50(ptr) Variable Function
+ 57(i16): 35(ptr) Variable Function
+ 70(u16): 15(ptr) Variable Function
+ 108(i): 107(ptr) Variable Function
+ 130(b): 129(ptr) Variable Function
+ 151(u): 150(ptr) Variable Function
+ 52: 49(ivec3) Load 51(u16v)
+ 55: 54(ivec3) CompositeConstruct 53 53 53
+ 56: 49(ivec3) IAdd 52 55
+ Store 51(u16v) 56
+ 58: 17(int) Load 57(i16)
+ 59: 17(int) ISub 58 53
+ Store 57(i16) 59
+ 60: 17(int) Load 57(i16)
+ 61: 17(int) IAdd 60 53
+ Store 57(i16) 61
+ 62: 49(ivec3) Load 51(u16v)
+ 63: 54(ivec3) CompositeConstruct 53 53 53
+ 64: 49(ivec3) ISub 62 63
+ Store 51(u16v) 64
+ 65: 49(ivec3) Load 51(u16v)
+ 66: 49(ivec3) Not 65
+ Store 51(u16v) 66
+ 67: 17(int) Load 57(i16)
+ Store 57(i16) 67
+ 68: 49(ivec3) Load 51(u16v)
+ 69: 49(ivec3) SNegate 68
+ Store 51(u16v) 69
+ 71: 17(int) Load 57(i16)
+ 72: 14(int) Bitcast 71
+ 73: 14(int) Load 70(u16)
+ 74: 14(int) IAdd 73 72
+ Store 70(u16) 74
+ 75: 49(ivec3) Load 51(u16v)
+ 76: 49(ivec3) Load 51(u16v)
+ 77: 49(ivec3) ISub 76 75
+ Store 51(u16v) 77
+ 78: 17(int) Load 57(i16)
+ 79: 17(int) Load 57(i16)
+ 80: 17(int) IMul 79 78
+ Store 57(i16) 80
+ 81: 49(ivec3) Load 51(u16v)
+ 82: 49(ivec3) Load 51(u16v)
+ 83: 49(ivec3) UDiv 82 81
+ Store 51(u16v) 83
+ 84: 17(int) Load 57(i16)
+ 85: 14(int) Bitcast 84
+ 86: 49(ivec3) Load 51(u16v)
+ 87: 49(ivec3) CompositeConstruct 85 85 85
+ 88: 49(ivec3) UMod 86 87
+ Store 51(u16v) 88
+ 89: 49(ivec3) Load 51(u16v)
+ 90: 49(ivec3) Load 51(u16v)
+ 91: 49(ivec3) IAdd 89 90
+ Store 51(u16v) 91
+ 92: 17(int) Load 57(i16)
+ 93: 14(int) Bitcast 92
+ 94: 14(int) Load 70(u16)
+ 95: 14(int) ISub 93 94
+ Store 70(u16) 95
+ 96: 49(ivec3) Load 51(u16v)
+ 97: 17(int) Load 57(i16)
+ 98: 14(int) Bitcast 97
+ 99: 49(ivec3) CompositeConstruct 98 98 98
+ 100: 49(ivec3) IMul 96 99
+ Store 51(u16v) 100
+ 101: 17(int) Load 57(i16)
+ 102: 17(int) Load 57(i16)
+ 103: 17(int) IMul 101 102
+ Store 57(i16) 103
+ 104: 17(int) Load 57(i16)
+ 105: 17(int) Load 57(i16)
+ 106: 17(int) SMod 104 105
+ Store 57(i16) 106
+ 109: 28(int) Load 108(i)
+ 110: 49(ivec3) Load 51(u16v)
+ 112: 111(ivec3) CompositeConstruct 109 109 109
+ 113: 49(ivec3) ShiftLeftLogical 110 112
+ Store 51(u16v) 113
+ 115: 15(ptr) AccessChain 51(u16v) 114
+ 116: 14(int) Load 115
+ 117: 17(int) Load 57(i16)
+ 118: 17(int) ShiftRightArithmetic 117 116
+ Store 57(i16) 118
+ 119: 17(int) Load 57(i16)
+ 121: 15(ptr) AccessChain 51(u16v) 120
+ 122: 14(int) Load 121
+ 123: 17(int) ShiftLeftLogical 119 122
+ Store 57(i16) 123
+ 124: 49(ivec3) Load 51(u16v)
+ 125: 17(int) Load 57(i16)
+ 126: 54(ivec3) CompositeConstruct 125 125 125
+ 127: 49(ivec3) ShiftLeftLogical 124 126
+ Store 51(u16v) 127
+ 132: 15(ptr) AccessChain 51(u16v) 131
+ 133: 14(int) Load 132
+ 134: 17(int) Load 57(i16)
+ 135: 14(int) Bitcast 134
+ 136: 128(bool) INotEqual 133 135
+ Store 130(b) 136
+ 137: 17(int) Load 57(i16)
+ 138: 14(int) Bitcast 137
+ 139: 15(ptr) AccessChain 51(u16v) 131
+ 140: 14(int) Load 139
+ 141: 128(bool) IEqual 138 140
+ Store 130(b) 141
+ 142: 15(ptr) AccessChain 51(u16v) 131
+ 143: 14(int) Load 142
+ 144: 15(ptr) AccessChain 51(u16v) 114
+ 145: 14(int) Load 144
+ 146: 128(bool) UGreaterThan 143 145
+ Store 130(b) 146
+ 147: 17(int) Load 57(i16)
+ 148: 28(int) SConvert 147
+ 149: 18(int) Bitcast 148
+ 152: 18(int) Load 151(u)
+ 153: 128(bool) ULessThan 149 152
+ Store 130(b) 153
+ 154: 15(ptr) AccessChain 51(u16v) 114
+ 155: 14(int) Load 154
+ 156: 15(ptr) AccessChain 51(u16v) 131
+ 157: 14(int) Load 156
+ 158: 128(bool) UGreaterThanEqual 155 157
+ Store 130(b) 158
+ 159: 17(int) Load 57(i16)
+ 160: 28(int) SConvert 159
+ 161: 28(int) Load 108(i)
+ 162: 128(bool) SLessThanEqual 160 161
+ Store 130(b) 162
+ 163: 17(int) Load 57(i16)
+ 164: 14(int) Bitcast 163
+ 165: 49(ivec3) Load 51(u16v)
+ 166: 49(ivec3) CompositeConstruct 164 164 164
+ 167: 49(ivec3) BitwiseOr 165 166
+ Store 51(u16v) 167
+ 168: 17(int) Load 57(i16)
+ 169: 14(int) Bitcast 168
+ 170: 14(int) Load 70(u16)
+ 171: 14(int) BitwiseOr 169 170
+ Store 70(u16) 171
+ 172: 17(int) Load 57(i16)
+ 173: 17(int) Load 57(i16)
+ 174: 17(int) BitwiseAnd 173 172
+ Store 57(i16) 174
+ 175: 49(ivec3) Load 51(u16v)
+ 176: 49(ivec3) Load 51(u16v)
+ 177: 49(ivec3) BitwiseAnd 175 176
+ Store 51(u16v) 177
+ 178: 17(int) Load 57(i16)
+ 179: 14(int) Bitcast 178
+ 180: 49(ivec3) Load 51(u16v)
+ 181: 49(ivec3) CompositeConstruct 179 179 179
+ 182: 49(ivec3) BitwiseXor 180 181
+ Store 51(u16v) 182
+ 183: 49(ivec3) Load 51(u16v)
+ 184: 17(int) Load 57(i16)
+ 185: 14(int) Bitcast 184
+ 186: 49(ivec3) CompositeConstruct 185 185 185
+ 187: 49(ivec3) BitwiseXor 183 186
+ Store 51(u16v) 187
+ Return
+ FunctionEnd
+ 10(typeCast(): 2 Function None 3
+ 11: Label
+ 190(i16v): 189(ptr) Variable Function
+ 193(bv): 192(ptr) Variable Function
+ 201(u16v): 200(ptr) Variable Function
+ 214(iv): 213(ptr) Variable Function
+ 227(uv): 226(ptr) Variable Function
+ 241(fv): 240(ptr) Variable Function
+ 253(dv): 252(ptr) Variable Function
+ 265(f16v): 264(ptr) Variable Function
+ 277(i64v): 276(ptr) Variable Function
+ 291(u64v): 290(ptr) Variable Function
+ 194: 191(bvec2) Load 193(bv)
+ 198: 188(ivec2) Select 194 197 196
+ Store 190(i16v) 198
+ 202: 191(bvec2) Load 193(bv)
+ 207: 199(ivec2) Select 202 206 205
+ Store 201(u16v) 207
+ 208: 188(ivec2) Load 190(i16v)
+ 209: 191(bvec2) INotEqual 208 205
+ Store 193(bv) 209
+ 210: 199(ivec2) Load 201(u16v)
+ 211: 191(bvec2) INotEqual 210 205
+ Store 193(bv) 211
+ 215: 212(ivec2) Load 214(iv)
+ 216: 188(ivec2) SConvert 215
+ Store 190(i16v) 216
+ 217: 212(ivec2) Load 214(iv)
+ 218: 188(ivec2) SConvert 217
+ 219: 199(ivec2) Bitcast 218
+ Store 201(u16v) 219
+ 220: 188(ivec2) Load 190(i16v)
+ 221: 212(ivec2) SConvert 220
+ Store 214(iv) 221
+ 222: 199(ivec2) Load 201(u16v)
+ 224: 223(ivec2) UConvert 222
+ 225: 212(ivec2) Bitcast 224
+ Store 214(iv) 225
+ 228: 223(ivec2) Load 227(uv)
+ 229: 199(ivec2) UConvert 228
+ 230: 188(ivec2) Bitcast 229
+ Store 190(i16v) 230
+ 231: 223(ivec2) Load 227(uv)
+ 232: 199(ivec2) UConvert 231
+ Store 201(u16v) 232
+ 233: 188(ivec2) Load 190(i16v)
+ 234: 212(ivec2) SConvert 233
+ 235: 223(ivec2) Bitcast 234
+ Store 227(uv) 235
+ 236: 199(ivec2) Load 201(u16v)
+ 237: 223(ivec2) UConvert 236
+ Store 227(uv) 237
+ 242: 239(fvec2) Load 241(fv)
+ 243: 188(ivec2) ConvertFToS 242
+ Store 190(i16v) 243
+ 244: 239(fvec2) Load 241(fv)
+ 245: 199(ivec2) ConvertFToU 244
+ Store 201(u16v) 245
+ 246: 188(ivec2) Load 190(i16v)
+ 247: 239(fvec2) ConvertSToF 246
+ Store 241(fv) 247
+ 248: 199(ivec2) Load 201(u16v)
+ 249: 239(fvec2) ConvertUToF 248
+ Store 241(fv) 249
+ 254: 251(fvec2) Load 253(dv)
+ 255: 188(ivec2) ConvertFToS 254
+ Store 190(i16v) 255
+ 256: 251(fvec2) Load 253(dv)
+ 257: 199(ivec2) ConvertFToU 256
+ Store 201(u16v) 257
+ 258: 188(ivec2) Load 190(i16v)
+ 259: 251(fvec2) ConvertSToF 258
+ Store 253(dv) 259
+ 260: 199(ivec2) Load 201(u16v)
+ 261: 251(fvec2) ConvertUToF 260
+ Store 253(dv) 261
+ 266: 263(fvec2) Load 265(f16v)
+ 267: 188(ivec2) ConvertFToS 266
+ Store 190(i16v) 267
+ 268: 263(fvec2) Load 265(f16v)
+ 269: 199(ivec2) ConvertFToU 268
+ Store 201(u16v) 269
+ 270: 188(ivec2) Load 190(i16v)
+ 271: 263(fvec2) ConvertSToF 270
+ Store 265(f16v) 271
+ 272: 199(ivec2) Load 201(u16v)
+ 273: 263(fvec2) ConvertUToF 272
+ Store 265(f16v) 273
+ 278: 275(ivec2) Load 277(i64v)
+ 279: 188(ivec2) SConvert 278
+ Store 190(i16v) 279
+ 280: 275(ivec2) Load 277(i64v)
+ 281: 188(ivec2) SConvert 280
+ 282: 199(ivec2) Bitcast 281
+ Store 201(u16v) 282
+ 283: 188(ivec2) Load 190(i16v)
+ 284: 275(ivec2) SConvert 283
+ Store 277(i64v) 284
+ 285: 199(ivec2) Load 201(u16v)
+ 288: 287(ivec2) UConvert 285
+ 289: 275(ivec2) Bitcast 288
+ Store 277(i64v) 289
+ 292: 287(ivec2) Load 291(u64v)
+ 293: 199(ivec2) UConvert 292
+ 294: 188(ivec2) Bitcast 293
+ Store 190(i16v) 294
+ 295: 287(ivec2) Load 291(u64v)
+ 296: 199(ivec2) UConvert 295
+ Store 201(u16v) 296
+ 297: 188(ivec2) Load 190(i16v)
+ 298: 275(ivec2) SConvert 297
+ 299: 287(ivec2) Bitcast 298
+ Store 291(u64v) 299
+ 300: 199(ivec2) Load 201(u16v)
+ 301: 287(ivec2) UConvert 300
+ Store 291(u64v) 301
+ 302: 199(ivec2) Load 201(u16v)
+ 303: 188(ivec2) Bitcast 302
+ Store 190(i16v) 303
+ 304: 188(ivec2) Load 190(i16v)
+ 305: 199(ivec2) Bitcast 304
+ Store 201(u16v) 305
+ Return
+ FunctionEnd
+12(builtinFuncs(): 2 Function None 3
+ 13: Label
+ 306(i16v): 189(ptr) Variable Function
+ 312(i16): 35(ptr) Variable Function
+ 320(u16v): 50(ptr) Variable Function
+ 322(u16): 15(ptr) Variable Function
+ 394(f16v): 393(ptr) Variable Function
+ 397(exp): 396(ptr) Variable Function
+ 419(packi): 107(ptr) Variable Function
+ 424(packu): 150(ptr) Variable Function
+ 433(packi64): 432(ptr) Variable Function
+ 442(packu64): 441(ptr) Variable Function
+ 451(bv): 450(ptr) Variable Function
+ 307: 188(ivec2) Load 306(i16v)
+ 308: 188(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 307
+ Store 306(i16v) 308
+ 309: 188(ivec2) Load 306(i16v)
+ 310: 188(ivec2) ExtInst 1(GLSL.std.450) 7(SSign) 309
+ Store 306(i16v) 310
+ 311: 188(ivec2) Load 306(i16v)
+ 313: 17(int) Load 312(i16)
+ 314: 188(ivec2) CompositeConstruct 313 313
+ 315: 188(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 311 314
+ Store 306(i16v) 315
+ 316: 188(ivec2) Load 306(i16v)
+ 319: 188(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 316 318
+ Store 306(i16v) 319
+ 321: 49(ivec3) Load 320(u16v)
+ 323: 14(int) Load 322(u16)
+ 324: 49(ivec3) CompositeConstruct 323 323 323
+ 325: 49(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 321 324
+ Store 320(u16v) 325
+ 326: 49(ivec3) Load 320(u16v)
+ 328: 49(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 326 327
+ Store 320(u16v) 328
+ 329: 188(ivec2) Load 306(i16v)
+ 330: 17(int) Load 312(i16)
+ 331: 188(ivec2) CompositeConstruct 330 330
+ 332: 188(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 329 331
+ Store 306(i16v) 332
+ 333: 188(ivec2) Load 306(i16v)
+ 334: 188(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 333 318
+ Store 306(i16v) 334
+ 335: 49(ivec3) Load 320(u16v)
+ 336: 14(int) Load 322(u16)
+ 337: 49(ivec3) CompositeConstruct 336 336 336
+ 338: 49(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 335 337
+ Store 320(u16v) 338
+ 339: 49(ivec3) Load 320(u16v)
+ 340: 49(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 339 327
+ Store 320(u16v) 340
+ 341: 188(ivec2) Load 306(i16v)
+ 342: 17(int) Load 312(i16)
+ 343: 17(int) SNegate 342
+ 344: 17(int) Load 312(i16)
+ 345: 188(ivec2) CompositeConstruct 343 343
+ 346: 188(ivec2) CompositeConstruct 344 344
+ 347: 188(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 341 345 346
+ Store 306(i16v) 347
+ 348: 188(ivec2) Load 306(i16v)
+ 349: 188(ivec2) Load 306(i16v)
+ 350: 188(ivec2) SNegate 349
+ 351: 188(ivec2) Load 306(i16v)
+ 352: 188(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 348 350 351
+ Store 306(i16v) 352
+ 353: 49(ivec3) Load 320(u16v)
+ 354: 14(int) Load 322(u16)
+ 355: 14(int) SNegate 354
+ 356: 14(int) Load 322(u16)
+ 357: 49(ivec3) CompositeConstruct 355 355 355
+ 358: 49(ivec3) CompositeConstruct 356 356 356
+ 359: 49(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 353 357 358
+ Store 320(u16v) 359
+ 360: 49(ivec3) Load 320(u16v)
+ 361: 49(ivec3) Load 320(u16v)
+ 362: 49(ivec3) SNegate 361
+ 363: 49(ivec3) Load 320(u16v)
+ 364: 49(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 360 362 363
+ Store 320(u16v) 364
+ 365: 35(ptr) AccessChain 306(i16v) 131
+ 366: 17(int) Load 365
+ 367: 35(ptr) AccessChain 306(i16v) 114
+ 368: 17(int) Load 367
+ 370: 17(int) Select 369 368 366
+ Store 312(i16) 370
+ 371: 17(int) Load 312(i16)
+ 372: 188(ivec2) CompositeConstruct 371 371
+ 373: 17(int) Load 312(i16)
+ 374: 17(int) SNegate 373
+ 375: 188(ivec2) CompositeConstruct 374 374
+ 378: 188(ivec2) Select 377 375 372
+ Store 306(i16v) 378
+ 379: 15(ptr) AccessChain 320(u16v) 131
+ 380: 14(int) Load 379
+ 381: 15(ptr) AccessChain 320(u16v) 114
+ 382: 14(int) Load 381
+ 383: 14(int) Select 369 382 380
+ Store 322(u16) 383
+ 384: 14(int) Load 322(u16)
+ 385: 49(ivec3) CompositeConstruct 384 384 384
+ 386: 14(int) Load 322(u16)
+ 387: 14(int) SNegate 386
+ 388: 49(ivec3) CompositeConstruct 387 387 387
+ 391: 49(ivec3) Select 390 388 385
+ Store 320(u16v) 391
+ 395: 392(fvec3) Load 394(f16v)
+ 399:398(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 395
+ 400: 54(ivec3) CompositeExtract 399 1
+ Store 397(exp) 400
+ 401: 392(fvec3) CompositeExtract 399 0
+ Store 394(f16v) 401
+ 402: 392(fvec3) Load 394(f16v)
+ 403: 54(ivec3) Load 397(exp)
+ 404: 392(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 402 403
+ Store 394(f16v) 404
+ 405: 392(fvec3) Load 394(f16v)
+ 406: 263(fvec2) VectorShuffle 405 405 0 1
+ 407: 188(ivec2) Bitcast 406
+ Store 306(i16v) 407
+ 409: 408(ptr) AccessChain 394(f16v) 120
+ 410: 262(float) Load 409
+ 411: 14(int) Bitcast 410
+ 412: 15(ptr) AccessChain 320(u16v) 131
+ Store 412 411
+ 413: 188(ivec2) Load 306(i16v)
+ 414: 263(fvec2) Bitcast 413
+ 415: 392(fvec3) Load 394(f16v)
+ 416: 392(fvec3) VectorShuffle 415 414 3 4 2
+ Store 394(f16v) 416
+ 417: 49(ivec3) Load 320(u16v)
+ 418: 392(fvec3) Bitcast 417
+ Store 394(f16v) 418
+ 420: 188(ivec2) Load 306(i16v)
+ 421: 28(int) Bitcast 420
+ Store 419(packi) 421
+ 422: 28(int) Load 419(packi)
+ 423: 188(ivec2) Bitcast 422
+ Store 306(i16v) 423
+ 425: 49(ivec3) Load 320(u16v)
+ 426: 199(ivec2) VectorShuffle 425 425 0 1
+ 427: 18(int) Bitcast 426
+ Store 424(packu) 427
+ 428: 18(int) Load 424(packu)
+ 429: 199(ivec2) Bitcast 428
+ 430: 49(ivec3) Load 320(u16v)
+ 431: 49(ivec3) VectorShuffle 430 429 3 4 2
+ Store 320(u16v) 431
+ 434: 17(int) Load 312(i16)
+ 436: 435(ivec4) CompositeConstruct 434 434 434 434
+ 437: 274(int) Bitcast 436
+ Store 433(packi64) 437
+ 438: 274(int) Load 433(packi64)
+ 439: 435(ivec4) Bitcast 438
+ 440: 188(ivec2) VectorShuffle 439 439 0 1
+ Store 306(i16v) 440
+ 443: 14(int) Load 322(u16)
+ 445: 444(ivec4) CompositeConstruct 443 443 443 443
+ 446: 286(int) Bitcast 445
+ Store 442(packu64) 446
+ 447: 286(int) Load 442(packu64)
+ 448: 444(ivec4) Bitcast 447
+ 449: 49(ivec3) VectorShuffle 448 448 0 1 2
+ Store 320(u16v) 449
+ 452: 49(ivec3) Load 320(u16v)
+ 453: 14(int) Load 322(u16)
+ 454: 49(ivec3) CompositeConstruct 453 453 453
+ 455: 389(bvec3) ULessThan 452 454
+ Store 451(bv) 455
+ 456: 188(ivec2) Load 306(i16v)
+ 457: 17(int) Load 312(i16)
+ 458: 188(ivec2) CompositeConstruct 457 457
+ 459: 191(bvec2) SLessThan 456 458
+ 460: 389(bvec3) Load 451(bv)
+ 461: 389(bvec3) VectorShuffle 460 459 3 4 2
+ Store 451(bv) 461
+ 462: 49(ivec3) Load 320(u16v)
+ 463: 14(int) Load 322(u16)
+ 464: 49(ivec3) CompositeConstruct 463 463 463
+ 465: 389(bvec3) ULessThanEqual 462 464
+ Store 451(bv) 465
+ 466: 188(ivec2) Load 306(i16v)
+ 467: 17(int) Load 312(i16)
+ 468: 188(ivec2) CompositeConstruct 467 467
+ 469: 191(bvec2) SLessThanEqual 466 468
+ 470: 389(bvec3) Load 451(bv)
+ 471: 389(bvec3) VectorShuffle 470 469 3 4 2
+ Store 451(bv) 471
+ 472: 49(ivec3) Load 320(u16v)
+ 473: 14(int) Load 322(u16)
+ 474: 49(ivec3) CompositeConstruct 473 473 473
+ 475: 389(bvec3) UGreaterThan 472 474
+ Store 451(bv) 475
+ 476: 188(ivec2) Load 306(i16v)
+ 477: 17(int) Load 312(i16)
+ 478: 188(ivec2) CompositeConstruct 477 477
+ 479: 191(bvec2) SGreaterThan 476 478
+ 480: 389(bvec3) Load 451(bv)
+ 481: 389(bvec3) VectorShuffle 480 479 3 4 2
+ Store 451(bv) 481
+ 482: 49(ivec3) Load 320(u16v)
+ 483: 14(int) Load 322(u16)
+ 484: 49(ivec3) CompositeConstruct 483 483 483
+ 485: 389(bvec3) UGreaterThanEqual 482 484
+ Store 451(bv) 485
+ 486: 188(ivec2) Load 306(i16v)
+ 487: 17(int) Load 312(i16)
+ 488: 188(ivec2) CompositeConstruct 487 487
+ 489: 191(bvec2) SGreaterThanEqual 486 488
+ 490: 389(bvec3) Load 451(bv)
+ 491: 389(bvec3) VectorShuffle 490 489 3 4 2
+ Store 451(bv) 491
+ 492: 49(ivec3) Load 320(u16v)
+ 493: 14(int) Load 322(u16)
+ 494: 49(ivec3) CompositeConstruct 493 493 493
+ 495: 389(bvec3) IEqual 492 494
+ Store 451(bv) 495
+ 496: 188(ivec2) Load 306(i16v)
+ 497: 17(int) Load 312(i16)
+ 498: 188(ivec2) CompositeConstruct 497 497
+ 499: 191(bvec2) IEqual 496 498
+ 500: 389(bvec3) Load 451(bv)
+ 501: 389(bvec3) VectorShuffle 500 499 3 4 2
+ Store 451(bv) 501
+ 502: 49(ivec3) Load 320(u16v)
+ 503: 14(int) Load 322(u16)
+ 504: 49(ivec3) CompositeConstruct 503 503 503
+ 505: 389(bvec3) INotEqual 502 504
+ Store 451(bv) 505
+ 506: 188(ivec2) Load 306(i16v)
+ 507: 17(int) Load 312(i16)
+ 508: 188(ivec2) CompositeConstruct 507 507
+ 509: 191(bvec2) INotEqual 506 508
+ 510: 389(bvec3) Load 451(bv)
+ 511: 389(bvec3) VectorShuffle 510 509 3 4 2
+ Store 451(bv) 511
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.int64.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.int64.frag.out
index df35fea780e..3c6dc8509b4 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.int64.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.int64.frag.out
@@ -1,8 +1,6 @@
spv.int64.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 480
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.intOps.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.intOps.vert.out
index 93d2dfdae19..33e57bf37cd 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.intOps.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.intOps.vert.out
@@ -1,8 +1,6 @@
spv.intOps.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 268
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.interpOps.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.interpOps.frag.out
index 88d8e53cfd6..05e7f62f6af 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.interpOps.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.interpOps.frag.out
@@ -1,8 +1,6 @@
spv.interpOps.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 100
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.layoutNested.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.layoutNested.vert.out
index 0d0b28bbec6..3e73b84ac66 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.layoutNested.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.layoutNested.vert.out
@@ -1,8 +1,6 @@
spv.layoutNested.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 66
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.length.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.length.frag.out
index 76f6ca63d60..2bb07e2ee11 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.length.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.length.frag.out
@@ -1,6 +1,6 @@
spv.length.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 33
Capability Shader
@@ -14,6 +14,7 @@ spv.length.frag
Name 14 "v"
Name 26 "gl_FragColor"
Name 32 "u"
+ Decorate 26(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.localAggregates.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.localAggregates.frag.out
index 7ffa874171c..b59dfd89a52 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.localAggregates.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.localAggregates.frag.out
@@ -1,8 +1,6 @@
spv.localAggregates.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 136
Capability Shader
@@ -42,6 +40,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Name 135 "foo2"
Decorate 15(foo3) Flat
Decorate 90(condition) Flat
+ Decorate 108(gl_FragColor) Location 0
Decorate 128(samp2D) DescriptorSet 0
Decorate 134(foo) Flat
Decorate 135(foo2) Flat
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.loops.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.loops.frag.out
index 8b1b48076d7..7ce2c1c5bee 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.loops.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.loops.frag.out
@@ -1,6 +1,6 @@
spv.loops.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 725
Capability Shader
@@ -49,6 +49,7 @@ spv.loops.frag
Name 687 "d18"
Name 698 "d17"
Decorate 157(Count) Flat
+ Decorate 615(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.loopsArtificial.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.loopsArtificial.frag.out
index 707a78df0e8..a2339bd849c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.loopsArtificial.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.loopsArtificial.frag.out
@@ -1,6 +1,6 @@
spv.loopsArtificial.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 158
Capability Shader
@@ -30,6 +30,7 @@ spv.loopsArtificial.frag
Name 153 "d2"
Name 154 "d3"
Name 157 "Count"
+ Decorate 140(gl_FragColor) Location 0
Decorate 157(Count) Flat
2: TypeVoid
3: TypeFunction 2
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.looseUniformNoLoc.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.looseUniformNoLoc.vert.out
new file mode 100644
index 00000000000..55d1639cb28
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.looseUniformNoLoc.vert.out
@@ -0,0 +1,8 @@
+spv.looseUniformNoLoc.vert
+ERROR: spv.looseUniformNoLoc.vert:9: 'uv' : non-opaque uniform variables need a layout(location=L)
+ERROR: 1 compilation errors. No code generated.
+
+
+ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matFun.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matFun.vert.out
index 38d9d2cf1fc..832f38ed6dd 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matFun.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matFun.vert.out
@@ -1,8 +1,6 @@
spv.matFun.vert
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 103
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matrix.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matrix.frag.out
index c7077b9a066..1ac5ad5af26 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matrix.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matrix.frag.out
@@ -1,8 +1,6 @@
spv.matrix.frag
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 286
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matrix2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matrix2.frag.out
index 78facff346c..b6d747362a0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matrix2.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.matrix2.frag.out
@@ -1,6 +1,6 @@
spv.matrix2.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 221
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.memoryQualifier.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.memoryQualifier.frag.out
index a990e47594a..b1ae8df8a58 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.memoryQualifier.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.memoryQualifier.frag.out
@@ -1,13 +1,11 @@
spv.memoryQualifier.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 97
Capability Shader
- Capability SampledRect
- Capability Sampled1D
+ Capability ImageRect
+ Capability Image1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
@@ -46,9 +44,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Decorate 44(iCube) DescriptorSet 0
Decorate 44(iCube) Binding 3
Decorate 44(iCube) NonReadable
- MemberDecorate 49(Data) 0 Coherent
MemberDecorate 49(Data) 0 Offset 0
- MemberDecorate 49(Data) 1 Coherent
MemberDecorate 49(Data) 1 Offset 8
MemberDecorate 50(Buffer) 0 Coherent
MemberDecorate 50(Buffer) 0 Volatile
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.merge-unreachable.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.merge-unreachable.frag.out
index 58bbb0627af..24c0f4b4466 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.merge-unreachable.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.merge-unreachable.frag.out
@@ -1,8 +1,6 @@
spv.merge-unreachable.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 25
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiStruct.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiStruct.comp.out
index f8c0eead85b..04e9c3a3e4e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiStruct.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiStruct.comp.out
@@ -1,9 +1,7 @@
spv.multiStruct.comp
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 157
+// Generated by (magic number): 80002
+// Id's are bound by 161
Capability Shader
1: ExtInstImport "GLSL.std.450"
@@ -22,31 +20,31 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Name 17 "SSBO0"
MemberName 17(SSBO0) 0 "a"
Name 19 "inBuf"
- Name 37 "SSBO1"
- MemberName 37(SSBO1) 0 "b"
- Name 39 "outBuf"
- Name 57 "MyStruct"
- MemberName 57(MyStruct) 0 "foo"
- MemberName 57(MyStruct) 1 "sb"
- Name 58 "UBO"
- MemberName 58(UBO) 0 "c"
- Name 60 "uBuf"
- Name 84 "Nested"
- MemberName 84(Nested) 0 "f"
- MemberName 84(Nested) 1 "S"
- Name 86 "n"
- Name 88 "Nested"
- MemberName 88(Nested) 0 "f"
- MemberName 88(Nested) 1 "S"
- Name 89 "UBON"
- MemberName 89(UBON) 0 "N1"
- Name 91 "uBufN"
- Name 122 "Nested"
- MemberName 122(Nested) 0 "f"
- MemberName 122(Nested) 1 "S"
- Name 123 "SSBO1N"
- MemberName 123(SSBO1N) 0 "N2"
- Name 125 "outBufN"
+ Name 39 "SSBO1"
+ MemberName 39(SSBO1) 0 "b"
+ Name 41 "outBuf"
+ Name 58 "MyStruct"
+ MemberName 58(MyStruct) 0 "foo"
+ MemberName 58(MyStruct) 1 "sb"
+ Name 59 "UBO"
+ MemberName 59(UBO) 0 "c"
+ Name 61 "uBuf"
+ Name 86 "Nested"
+ MemberName 86(Nested) 0 "f"
+ MemberName 86(Nested) 1 "S"
+ Name 88 "n"
+ Name 90 "Nested"
+ MemberName 90(Nested) 0 "f"
+ MemberName 90(Nested) 1 "S"
+ Name 91 "UBON"
+ MemberName 91(UBON) 0 "N1"
+ Name 93 "uBufN"
+ Name 126 "Nested"
+ MemberName 126(Nested) 0 "f"
+ MemberName 126(Nested) 1 "S"
+ Name 127 "SSBO1N"
+ MemberName 127(SSBO1N) 0 "N2"
+ Name 129 "outBufN"
Decorate 15 ArrayStride 8
MemberDecorate 16(MyStruct) 0 Offset 0
MemberDecorate 16(MyStruct) 1 Offset 16
@@ -54,31 +52,31 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Decorate 17(SSBO0) BufferBlock
Decorate 19(inBuf) DescriptorSet 0
Decorate 19(inBuf) Binding 0
- MemberDecorate 37(SSBO1) 0 Offset 0
- Decorate 37(SSBO1) BufferBlock
- Decorate 39(outBuf) DescriptorSet 0
- Decorate 39(outBuf) Binding 1
- Decorate 56 ArrayStride 16
- MemberDecorate 57(MyStruct) 0 Offset 0
- MemberDecorate 57(MyStruct) 1 Offset 32
- MemberDecorate 58(UBO) 0 Offset 0
- Decorate 58(UBO) Block
- Decorate 60(uBuf) DescriptorSet 0
- Decorate 60(uBuf) Binding 2
- Decorate 87 ArrayStride 48
- MemberDecorate 88(Nested) 0 Offset 0
- MemberDecorate 88(Nested) 1 Offset 16
- MemberDecorate 89(UBON) 0 Offset 0
- Decorate 89(UBON) Block
- Decorate 91(uBufN) DescriptorSet 0
- Decorate 91(uBufN) Binding 2
- Decorate 121 ArrayStride 24
- MemberDecorate 122(Nested) 0 Offset 0
- MemberDecorate 122(Nested) 1 Offset 8
- MemberDecorate 123(SSBO1N) 0 Offset 0
- Decorate 123(SSBO1N) BufferBlock
- Decorate 125(outBufN) DescriptorSet 0
- Decorate 125(outBufN) Binding 1
+ MemberDecorate 39(SSBO1) 0 Offset 0
+ Decorate 39(SSBO1) BufferBlock
+ Decorate 41(outBuf) DescriptorSet 0
+ Decorate 41(outBuf) Binding 1
+ Decorate 57 ArrayStride 16
+ MemberDecorate 58(MyStruct) 0 Offset 0
+ MemberDecorate 58(MyStruct) 1 Offset 32
+ MemberDecorate 59(UBO) 0 Offset 0
+ Decorate 59(UBO) Block
+ Decorate 61(uBuf) DescriptorSet 0
+ Decorate 61(uBuf) Binding 2
+ Decorate 89 ArrayStride 48
+ MemberDecorate 90(Nested) 0 Offset 0
+ MemberDecorate 90(Nested) 1 Offset 16
+ MemberDecorate 91(UBON) 0 Offset 0
+ Decorate 91(UBON) Block
+ Decorate 93(uBufN) DescriptorSet 0
+ Decorate 93(uBufN) Binding 2
+ Decorate 125 ArrayStride 24
+ MemberDecorate 126(Nested) 0 Offset 0
+ MemberDecorate 126(Nested) 1 Offset 8
+ MemberDecorate 127(SSBO1N) 0 Offset 0
+ Decorate 127(SSBO1N) BufferBlock
+ Decorate 129(outBufN) DescriptorSet 0
+ Decorate 129(outBufN) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -100,44 +98,44 @@ Warning, version 450 is not yet complete; most version-specific features are pre
26: TypePointer Function 10
29: TypePointer Function 7(fvec2)
32: 20(int) Constant 1
- 35: TypePointer Function 11(bool)
- 37(SSBO1): TypeStruct 16(MyStruct)
- 38: TypePointer Uniform 37(SSBO1)
- 39(outBuf): 38(ptr) Variable Uniform
- 43: TypePointer Uniform 15
- 46: TypePointer Uniform 7(fvec2)
- 51: 8(int) Constant 0
- 52: 8(int) Constant 1
- 54: TypePointer Uniform 8(int)
- 56: TypeArray 7(fvec2) 9
- 57(MyStruct): TypeStruct 56 8(int)
- 58(UBO): TypeStruct 57(MyStruct)
- 59: TypePointer Uniform 58(UBO)
- 60(uBuf): 59(ptr) Variable Uniform
- 61: TypePointer Uniform 57(MyStruct)
- 83: TypeArray 12(MyStruct) 9
- 84(Nested): TypeStruct 6(float) 83
- 85: TypePointer Function 84(Nested)
- 87: TypeArray 57(MyStruct) 9
- 88(Nested): TypeStruct 6(float) 87
- 89(UBON): TypeStruct 88(Nested)
- 90: TypePointer Uniform 89(UBON)
- 91(uBufN): 90(ptr) Variable Uniform
- 92: TypePointer Uniform 88(Nested)
- 96: TypePointer Function 6(float)
- 99: TypePointer Function 83
- 121: TypeArray 16(MyStruct) 9
- 122(Nested): TypeStruct 6(float) 121
- 123(SSBO1N): TypeStruct 122(Nested)
- 124: TypePointer Uniform 123(SSBO1N)
- 125(outBufN): 124(ptr) Variable Uniform
- 127: TypePointer Uniform 122(Nested)
- 130: TypePointer Uniform 6(float)
- 133: TypePointer Uniform 121
+ 35: 8(int) Constant 0
+ 37: TypePointer Function 11(bool)
+ 39(SSBO1): TypeStruct 16(MyStruct)
+ 40: TypePointer Uniform 39(SSBO1)
+ 41(outBuf): 40(ptr) Variable Uniform
+ 45: TypePointer Uniform 15
+ 48: TypePointer Uniform 7(fvec2)
+ 53: 8(int) Constant 1
+ 55: TypePointer Uniform 8(int)
+ 57: TypeArray 7(fvec2) 9
+ 58(MyStruct): TypeStruct 57 8(int)
+ 59(UBO): TypeStruct 58(MyStruct)
+ 60: TypePointer Uniform 59(UBO)
+ 61(uBuf): 60(ptr) Variable Uniform
+ 62: TypePointer Uniform 58(MyStruct)
+ 85: TypeArray 12(MyStruct) 9
+ 86(Nested): TypeStruct 6(float) 85
+ 87: TypePointer Function 86(Nested)
+ 89: TypeArray 58(MyStruct) 9
+ 90(Nested): TypeStruct 6(float) 89
+ 91(UBON): TypeStruct 90(Nested)
+ 92: TypePointer Uniform 91(UBON)
+ 93(uBufN): 92(ptr) Variable Uniform
+ 94: TypePointer Uniform 90(Nested)
+ 98: TypePointer Function 6(float)
+ 101: TypePointer Function 85
+ 125: TypeArray 16(MyStruct) 9
+ 126(Nested): TypeStruct 6(float) 125
+ 127(SSBO1N): TypeStruct 126(Nested)
+ 128: TypePointer Uniform 127(SSBO1N)
+ 129(outBufN): 128(ptr) Variable Uniform
+ 131: TypePointer Uniform 126(Nested)
+ 134: TypePointer Uniform 6(float)
+ 137: TypePointer Uniform 125
4(main): 2 Function None 3
5: Label
14(t): 13(ptr) Variable Function
- 86(n): 85(ptr) Variable Function
+ 88(n): 87(ptr) Variable Function
23: 22(ptr) AccessChain 19(inBuf) 21
24:16(MyStruct) Load 23
25: 15 CompositeExtract 24 0
@@ -149,116 +147,120 @@ Warning, version 450 is not yet complete; most version-specific features are pre
33: 29(ptr) AccessChain 27 32
Store 33 31
34: 8(int) CompositeExtract 24 1
- 36: 35(ptr) AccessChain 14(t) 32
- Store 36 34
- 40:12(MyStruct) Load 14(t)
- 41: 22(ptr) AccessChain 39(outBuf) 21
- 42: 10 CompositeExtract 40 0
- 44: 43(ptr) AccessChain 41 21
- 45: 7(fvec2) CompositeExtract 42 0
- 47: 46(ptr) AccessChain 44 21
- Store 47 45
- 48: 7(fvec2) CompositeExtract 42 1
- 49: 46(ptr) AccessChain 44 32
- Store 49 48
- 50: 11(bool) CompositeExtract 40 1
- 53: 8(int) Select 50 52 51
- 55: 54(ptr) AccessChain 41 32
- Store 55 53
- 62: 61(ptr) AccessChain 60(uBuf) 21
- 63:57(MyStruct) Load 62
- 64: 56 CompositeExtract 63 0
- 65: 26(ptr) AccessChain 14(t) 21
- 66: 7(fvec2) CompositeExtract 64 0
- 67: 29(ptr) AccessChain 65 21
- Store 67 66
- 68: 7(fvec2) CompositeExtract 64 1
- 69: 29(ptr) AccessChain 65 32
- Store 69 68
- 70: 8(int) CompositeExtract 63 1
- 71: 35(ptr) AccessChain 14(t) 32
- Store 71 70
- 72:12(MyStruct) Load 14(t)
- 73: 22(ptr) AccessChain 39(outBuf) 21
- 74: 10 CompositeExtract 72 0
- 75: 43(ptr) AccessChain 73 21
- 76: 7(fvec2) CompositeExtract 74 0
- 77: 46(ptr) AccessChain 75 21
- Store 77 76
- 78: 7(fvec2) CompositeExtract 74 1
- 79: 46(ptr) AccessChain 75 32
+ 36: 11(bool) INotEqual 34 35
+ 38: 37(ptr) AccessChain 14(t) 32
+ Store 38 36
+ 42:12(MyStruct) Load 14(t)
+ 43: 22(ptr) AccessChain 41(outBuf) 21
+ 44: 10 CompositeExtract 42 0
+ 46: 45(ptr) AccessChain 43 21
+ 47: 7(fvec2) CompositeExtract 44 0
+ 49: 48(ptr) AccessChain 46 21
+ Store 49 47
+ 50: 7(fvec2) CompositeExtract 44 1
+ 51: 48(ptr) AccessChain 46 32
+ Store 51 50
+ 52: 11(bool) CompositeExtract 42 1
+ 54: 8(int) Select 52 53 35
+ 56: 55(ptr) AccessChain 43 32
+ Store 56 54
+ 63: 62(ptr) AccessChain 61(uBuf) 21
+ 64:58(MyStruct) Load 63
+ 65: 57 CompositeExtract 64 0
+ 66: 26(ptr) AccessChain 14(t) 21
+ 67: 7(fvec2) CompositeExtract 65 0
+ 68: 29(ptr) AccessChain 66 21
+ Store 68 67
+ 69: 7(fvec2) CompositeExtract 65 1
+ 70: 29(ptr) AccessChain 66 32
+ Store 70 69
+ 71: 8(int) CompositeExtract 64 1
+ 72: 11(bool) INotEqual 71 35
+ 73: 37(ptr) AccessChain 14(t) 32
+ Store 73 72
+ 74:12(MyStruct) Load 14(t)
+ 75: 22(ptr) AccessChain 41(outBuf) 21
+ 76: 10 CompositeExtract 74 0
+ 77: 45(ptr) AccessChain 75 21
+ 78: 7(fvec2) CompositeExtract 76 0
+ 79: 48(ptr) AccessChain 77 21
Store 79 78
- 80: 11(bool) CompositeExtract 72 1
- 81: 8(int) Select 80 52 51
- 82: 54(ptr) AccessChain 73 32
- Store 82 81
- 93: 92(ptr) AccessChain 91(uBufN) 21
- 94: 88(Nested) Load 93
- 95: 6(float) CompositeExtract 94 0
- 97: 96(ptr) AccessChain 86(n) 21
- Store 97 95
- 98: 87 CompositeExtract 94 1
- 100: 99(ptr) AccessChain 86(n) 32
- 101:57(MyStruct) CompositeExtract 98 0
- 102: 13(ptr) AccessChain 100 21
- 103: 56 CompositeExtract 101 0
- 104: 26(ptr) AccessChain 102 21
- 105: 7(fvec2) CompositeExtract 103 0
- 106: 29(ptr) AccessChain 104 21
- Store 106 105
- 107: 7(fvec2) CompositeExtract 103 1
- 108: 29(ptr) AccessChain 104 32
+ 80: 7(fvec2) CompositeExtract 76 1
+ 81: 48(ptr) AccessChain 77 32
+ Store 81 80
+ 82: 11(bool) CompositeExtract 74 1
+ 83: 8(int) Select 82 53 35
+ 84: 55(ptr) AccessChain 75 32
+ Store 84 83
+ 95: 94(ptr) AccessChain 93(uBufN) 21
+ 96: 90(Nested) Load 95
+ 97: 6(float) CompositeExtract 96 0
+ 99: 98(ptr) AccessChain 88(n) 21
+ Store 99 97
+ 100: 89 CompositeExtract 96 1
+ 102: 101(ptr) AccessChain 88(n) 32
+ 103:58(MyStruct) CompositeExtract 100 0
+ 104: 13(ptr) AccessChain 102 21
+ 105: 57 CompositeExtract 103 0
+ 106: 26(ptr) AccessChain 104 21
+ 107: 7(fvec2) CompositeExtract 105 0
+ 108: 29(ptr) AccessChain 106 21
Store 108 107
- 109: 8(int) CompositeExtract 101 1
- 110: 35(ptr) AccessChain 102 32
+ 109: 7(fvec2) CompositeExtract 105 1
+ 110: 29(ptr) AccessChain 106 32
Store 110 109
- 111:57(MyStruct) CompositeExtract 98 1
- 112: 13(ptr) AccessChain 100 32
- 113: 56 CompositeExtract 111 0
- 114: 26(ptr) AccessChain 112 21
- 115: 7(fvec2) CompositeExtract 113 0
- 116: 29(ptr) AccessChain 114 21
- Store 116 115
- 117: 7(fvec2) CompositeExtract 113 1
- 118: 29(ptr) AccessChain 114 32
- Store 118 117
- 119: 8(int) CompositeExtract 111 1
- 120: 35(ptr) AccessChain 112 32
- Store 120 119
- 126: 84(Nested) Load 86(n)
- 128: 127(ptr) AccessChain 125(outBufN) 21
- 129: 6(float) CompositeExtract 126 0
- 131: 130(ptr) AccessChain 128 21
- Store 131 129
- 132: 83 CompositeExtract 126 1
- 134: 133(ptr) AccessChain 128 32
- 135:12(MyStruct) CompositeExtract 132 0
- 136: 22(ptr) AccessChain 134 21
- 137: 10 CompositeExtract 135 0
- 138: 43(ptr) AccessChain 136 21
- 139: 7(fvec2) CompositeExtract 137 0
- 140: 46(ptr) AccessChain 138 21
- Store 140 139
- 141: 7(fvec2) CompositeExtract 137 1
- 142: 46(ptr) AccessChain 138 32
- Store 142 141
- 143: 11(bool) CompositeExtract 135 1
- 144: 8(int) Select 143 52 51
- 145: 54(ptr) AccessChain 136 32
- Store 145 144
- 146:12(MyStruct) CompositeExtract 132 1
- 147: 22(ptr) AccessChain 134 32
- 148: 10 CompositeExtract 146 0
- 149: 43(ptr) AccessChain 147 21
- 150: 7(fvec2) CompositeExtract 148 0
- 151: 46(ptr) AccessChain 149 21
- Store 151 150
- 152: 7(fvec2) CompositeExtract 148 1
- 153: 46(ptr) AccessChain 149 32
- Store 153 152
- 154: 11(bool) CompositeExtract 146 1
- 155: 8(int) Select 154 52 51
- 156: 54(ptr) AccessChain 147 32
- Store 156 155
+ 111: 8(int) CompositeExtract 103 1
+ 112: 11(bool) INotEqual 111 35
+ 113: 37(ptr) AccessChain 104 32
+ Store 113 112
+ 114:58(MyStruct) CompositeExtract 100 1
+ 115: 13(ptr) AccessChain 102 32
+ 116: 57 CompositeExtract 114 0
+ 117: 26(ptr) AccessChain 115 21
+ 118: 7(fvec2) CompositeExtract 116 0
+ 119: 29(ptr) AccessChain 117 21
+ Store 119 118
+ 120: 7(fvec2) CompositeExtract 116 1
+ 121: 29(ptr) AccessChain 117 32
+ Store 121 120
+ 122: 8(int) CompositeExtract 114 1
+ 123: 11(bool) INotEqual 122 35
+ 124: 37(ptr) AccessChain 115 32
+ Store 124 123
+ 130: 86(Nested) Load 88(n)
+ 132: 131(ptr) AccessChain 129(outBufN) 21
+ 133: 6(float) CompositeExtract 130 0
+ 135: 134(ptr) AccessChain 132 21
+ Store 135 133
+ 136: 85 CompositeExtract 130 1
+ 138: 137(ptr) AccessChain 132 32
+ 139:12(MyStruct) CompositeExtract 136 0
+ 140: 22(ptr) AccessChain 138 21
+ 141: 10 CompositeExtract 139 0
+ 142: 45(ptr) AccessChain 140 21
+ 143: 7(fvec2) CompositeExtract 141 0
+ 144: 48(ptr) AccessChain 142 21
+ Store 144 143
+ 145: 7(fvec2) CompositeExtract 141 1
+ 146: 48(ptr) AccessChain 142 32
+ Store 146 145
+ 147: 11(bool) CompositeExtract 139 1
+ 148: 8(int) Select 147 53 35
+ 149: 55(ptr) AccessChain 140 32
+ Store 149 148
+ 150:12(MyStruct) CompositeExtract 136 1
+ 151: 22(ptr) AccessChain 138 32
+ 152: 10 CompositeExtract 150 0
+ 153: 45(ptr) AccessChain 151 21
+ 154: 7(fvec2) CompositeExtract 152 0
+ 155: 48(ptr) AccessChain 153 21
+ Store 155 154
+ 156: 7(fvec2) CompositeExtract 152 1
+ 157: 48(ptr) AccessChain 153 32
+ Store 157 156
+ 158: 11(bool) CompositeExtract 150 1
+ 159: 8(int) Select 158 53 35
+ 160: 55(ptr) AccessChain 151 32
+ Store 160 159
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiStructFuncall.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiStructFuncall.frag.out
index b9b0cb2cb66..195f20f764c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiStructFuncall.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiStructFuncall.frag.out
@@ -1,8 +1,6 @@
spv.multiStructFuncall.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 63
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out
index de2a5496042..0633a121975 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out
@@ -1,8 +1,6 @@
spv.multiView.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 17
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
index f93aa0172a3..b3ed72c3947 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
@@ -1,8 +1,6 @@
spv.multiviewPerViewAttributes.tesc
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 37
Capability Tessellation
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
index 350944a85b2..f4a589e8183 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
@@ -1,8 +1,6 @@
spv.multiviewPerViewAttributes.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 29
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.newTexture.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.newTexture.frag.out
index ea694eeafb2..4d3f4c7b821 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.newTexture.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.newTexture.frag.out
@@ -1,8 +1,6 @@
spv.newTexture.frag
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 284
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noBuiltInLoc.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noBuiltInLoc.vert.out
new file mode 100644
index 00000000000..6cdc321f58c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noBuiltInLoc.vert.out
@@ -0,0 +1,74 @@
+spv.noBuiltInLoc.vert
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 33
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 9 11 18 31 32
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "bar"
+ Name 11 "foo"
+ Name 16 "gl_PerVertex"
+ MemberName 16(gl_PerVertex) 0 "gl_Position"
+ MemberName 16(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 16(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 16(gl_PerVertex) 3 "gl_CullDistance"
+ Name 18 ""
+ Name 24 "uv1"
+ Name 26 "uv2"
+ Name 29 "uv3"
+ Name 31 "gl_VertexID"
+ Name 32 "gl_InstanceID"
+ Decorate 9(bar) Location 0
+ Decorate 11(foo) Location 0
+ MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 16(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 16(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 16(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 16(gl_PerVertex) Block
+ Decorate 24(uv1) Location 0
+ Decorate 24(uv1) DescriptorSet 0
+ Decorate 26(uv2) Location 1
+ Decorate 26(uv2) DescriptorSet 0
+ Decorate 29(uv3) Location 2
+ Decorate 29(uv3) DescriptorSet 0
+ Decorate 31(gl_VertexID) BuiltIn VertexId
+ Decorate 32(gl_InstanceID) BuiltIn InstanceId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(bar): 8(ptr) Variable Output
+ 10: TypePointer Input 7(fvec4)
+ 11(foo): 10(ptr) Variable Input
+ 13: TypeInt 32 0
+ 14: 13(int) Constant 1
+ 15: TypeArray 6(float) 14
+16(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 15 15
+ 17: TypePointer Output 16(gl_PerVertex)
+ 18: 17(ptr) Variable Output
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 0
+ 23: TypePointer UniformConstant 7(fvec4)
+ 24(uv1): 23(ptr) Variable UniformConstant
+ 25: TypePointer UniformConstant 6(float)
+ 26(uv2): 25(ptr) Variable UniformConstant
+ 27: TypeVector 6(float) 3
+ 28: TypePointer UniformConstant 27(fvec3)
+ 29(uv3): 28(ptr) Variable UniformConstant
+ 30: TypePointer Input 19(int)
+ 31(gl_VertexID): 30(ptr) Variable Input
+32(gl_InstanceID): 30(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 12: 7(fvec4) Load 11(foo)
+ Store 9(bar) 12
+ 21: 7(fvec4) Load 11(foo)
+ 22: 8(ptr) AccessChain 18 20
+ Store 22 21
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noDeadDecorations.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noDeadDecorations.vert.out
index 41d2a43147a..cba32b5f422 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noDeadDecorations.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noDeadDecorations.vert.out
@@ -1,8 +1,6 @@
spv.noDeadDecorations.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 32
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noLocation.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noLocation.vert.out
new file mode 100644
index 00000000000..7a664745f71
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noLocation.vert.out
@@ -0,0 +1,10 @@
+spv.noLocation.vert
+ERROR: spv.noLocation.vert:4: 'location' : SPIR-V requires location for user input/output
+ERROR: spv.noLocation.vert:8: 'location' : SPIR-V requires location for user input/output
+ERROR: spv.noLocation.vert:19: 'location' : SPIR-V requires location for user input/output
+ERROR: spv.noLocation.vert:25: 'location' : SPIR-V requires location for user input/output
+ERROR: spv.noLocation.vert:29: 'location' : SPIR-V requires location for user input/output
+ERROR: 5 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noWorkgroup.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noWorkgroup.comp.out
index 0f88436c5a9..97e7119705a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noWorkgroup.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.noWorkgroup.comp.out
@@ -1,8 +1,6 @@
spv.noWorkgroup.comp
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 12
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.nonSquare.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.nonSquare.vert.out
index 684d4f16b31..ca472521091 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.nonSquare.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.nonSquare.vert.out
@@ -1,6 +1,6 @@
spv.nonSquare.vert
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 90
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.offsets.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.offsets.frag.out
index ea4be8f4c66..f9b01441719 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.offsets.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.offsets.frag.out
@@ -1,8 +1,6 @@
spv.offsets.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 15
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.paramMemory.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.paramMemory.frag.out
new file mode 100644
index 00000000000..28d96bb73a7
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.paramMemory.frag.out
@@ -0,0 +1,137 @@
+spv.paramMemory.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 69
+
+ Capability Shader
+ Capability StorageImageReadWithoutFormat
+ Capability StorageImageWriteWithoutFormat
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 27 66
+ ExecutionMode 4 OriginUpperLeft
+ Source ESSL 310
+ Name 4 "main"
+ Name 16 "image_load(I21;vi2;"
+ Name 14 "image"
+ Name 15 "coords"
+ Name 23 "image_store(I21;vi2;vf4;"
+ Name 20 "image"
+ Name 21 "coords"
+ Name 22 "data"
+ Name 27 "in_coords"
+ Name 35 "read1"
+ Name 38 "image1"
+ Name 39 "param"
+ Name 42 "read2"
+ Name 45 "image2"
+ Name 46 "param"
+ Name 49 "image3"
+ Name 53 "param"
+ Name 55 "param"
+ Name 57 "image4"
+ Name 61 "param"
+ Name 63 "param"
+ Name 66 "out_color"
+ Decorate 14(image) Coherent
+ Decorate 14(image) NonWritable
+ Decorate 20(image) Coherent
+ Decorate 20(image) NonReadable
+ Decorate 27(in_coords) Flat
+ Decorate 27(in_coords) Location 0
+ Decorate 38(image1) DescriptorSet 0
+ Decorate 38(image1) Binding 0
+ Decorate 38(image1) Coherent
+ Decorate 38(image1) NonWritable
+ Decorate 45(image2) DescriptorSet 0
+ Decorate 45(image2) Binding 2
+ Decorate 45(image2) NonWritable
+ Decorate 49(image3) DescriptorSet 0
+ Decorate 49(image3) Binding 1
+ Decorate 49(image3) Coherent
+ Decorate 49(image3) NonReadable
+ Decorate 57(image4) DescriptorSet 0
+ Decorate 57(image4) Binding 3
+ Decorate 57(image4) NonReadable
+ Decorate 66(out_color) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeImage 6(float) 2D nonsampled format:Unknown
+ 8: TypePointer UniformConstant 7
+ 9: TypeInt 32 1
+ 10: TypeVector 9(int) 2
+ 11: TypePointer Function 10(ivec2)
+ 12: TypeVector 6(float) 4
+ 13: TypeFunction 12(fvec4) 8(ptr) 11(ptr)
+ 18: TypePointer Function 12(fvec4)
+ 19: TypeFunction 2 8(ptr) 11(ptr) 18(ptr)
+ 26: TypePointer Input 10(ivec2)
+ 27(in_coords): 26(ptr) Variable Input
+ 36: TypeImage 6(float) 2D nonsampled format:Rgba32f
+ 37: TypePointer UniformConstant 36
+ 38(image1): 37(ptr) Variable UniformConstant
+ 43: TypeImage 6(float) 2D nonsampled format:Rgba16f
+ 44: TypePointer UniformConstant 43
+ 45(image2): 44(ptr) Variable UniformConstant
+ 49(image3): 37(ptr) Variable UniformConstant
+ 51: 6(float) Constant 1056964608
+ 57(image4): 44(ptr) Variable UniformConstant
+ 59: 6(float) Constant 1073741824
+ 65: TypePointer Output 12(fvec4)
+ 66(out_color): 65(ptr) Variable Output
+ 67: 6(float) Constant 0
+ 68: 12(fvec4) ConstantComposite 67 67 67 67
+ 4(main): 2 Function None 3
+ 5: Label
+ 35(read1): 18(ptr) Variable Function
+ 39(param): 11(ptr) Variable Function
+ 42(read2): 18(ptr) Variable Function
+ 46(param): 11(ptr) Variable Function
+ 53(param): 11(ptr) Variable Function
+ 55(param): 18(ptr) Variable Function
+ 61(param): 11(ptr) Variable Function
+ 63(param): 18(ptr) Variable Function
+ 40: 10(ivec2) Load 27(in_coords)
+ Store 39(param) 40
+ 41: 12(fvec4) FunctionCall 16(image_load(I21;vi2;) 38(image1) 39(param)
+ Store 35(read1) 41
+ 47: 10(ivec2) Load 27(in_coords)
+ Store 46(param) 47
+ 48: 12(fvec4) FunctionCall 16(image_load(I21;vi2;) 45(image2) 46(param)
+ Store 42(read2) 48
+ 50: 12(fvec4) Load 35(read1)
+ 52: 12(fvec4) VectorTimesScalar 50 51
+ 54: 10(ivec2) Load 27(in_coords)
+ Store 53(param) 54
+ Store 55(param) 52
+ 56: 2 FunctionCall 23(image_store(I21;vi2;vf4;) 49(image3) 53(param) 55(param)
+ 58: 12(fvec4) Load 42(read2)
+ 60: 12(fvec4) VectorTimesScalar 58 59
+ 62: 10(ivec2) Load 27(in_coords)
+ Store 61(param) 62
+ Store 63(param) 60
+ 64: 2 FunctionCall 23(image_store(I21;vi2;vf4;) 57(image4) 61(param) 63(param)
+ Store 66(out_color) 68
+ Return
+ FunctionEnd
+16(image_load(I21;vi2;): 12(fvec4) Function None 13
+ 14(image): 8(ptr) FunctionParameter
+ 15(coords): 11(ptr) FunctionParameter
+ 17: Label
+ 25: 7 Load 14(image)
+ 28: 10(ivec2) Load 27(in_coords)
+ 29: 12(fvec4) ImageRead 25 28
+ ReturnValue 29
+ FunctionEnd
+23(image_store(I21;vi2;vf4;): 2 Function None 19
+ 20(image): 8(ptr) FunctionParameter
+ 21(coords): 11(ptr) FunctionParameter
+ 22(data): 18(ptr) FunctionParameter
+ 24: Label
+ 32: 7 Load 20(image)
+ 33: 10(ivec2) Load 27(in_coords)
+ 34: 12(fvec4) Load 22(data)
+ ImageWrite 32 33 34
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precise.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precise.tesc.out
index 4bae395a8aa..91c2f35dfb7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precise.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precise.tesc.out
@@ -1,8 +1,6 @@
spv.precise.tesc
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 72
Capability Tessellation
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precise.tese.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precise.tese.out
index 4f1839c7752..c05ced41551 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precise.tese.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precise.tese.out
@@ -1,8 +1,6 @@
spv.precise.tese
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 119
Capability Tessellation
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precision.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precision.frag.out
index f49b3566381..2284108f23e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precision.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precision.frag.out
@@ -1,8 +1,6 @@
spv.precision.frag
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 127
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precisionNonESSamp.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precisionNonESSamp.frag.out
new file mode 100644
index 00000000000..5bb1dee985e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.precisionNonESSamp.frag.out
@@ -0,0 +1,98 @@
+spv.precisionNonESSamp.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 47
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 17 27 39
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "color"
+ Name 13 "s"
+ Name 17 "v2"
+ Name 23 "t"
+ Name 27 "v3"
+ Name 31 "vi1"
+ Name 34 "i1"
+ Name 39 "iv2"
+ Name 42 "vi2"
+ Name 43 "i2"
+ Decorate 9(color) RelaxedPrecision
+ Decorate 9(color) Location 0
+ Decorate 13(s) RelaxedPrecision
+ Decorate 13(s) DescriptorSet 0
+ Decorate 14 RelaxedPrecision
+ Decorate 17(v2) RelaxedPrecision
+ Decorate 17(v2) Location 0
+ Decorate 18 RelaxedPrecision
+ Decorate 19 RelaxedPrecision
+ Decorate 23(t) DescriptorSet 0
+ Decorate 27(v3) RelaxedPrecision
+ Decorate 27(v3) Location 1
+ Decorate 28 RelaxedPrecision
+ Decorate 31(vi1) RelaxedPrecision
+ Decorate 34(i1) RelaxedPrecision
+ Decorate 34(i1) DescriptorSet 0
+ Decorate 35 RelaxedPrecision
+ Decorate 39(iv2) RelaxedPrecision
+ Decorate 39(iv2) Flat
+ Decorate 39(iv2) Location 3
+ Decorate 40 RelaxedPrecision
+ Decorate 41 RelaxedPrecision
+ Decorate 42(vi2) RelaxedPrecision
+ Decorate 43(i2) DescriptorSet 0
+ Decorate 45 RelaxedPrecision
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(color): 8(ptr) Variable Output
+ 10: TypeImage 6(float) 2D sampled format:Unknown
+ 11: TypeSampledImage 10
+ 12: TypePointer UniformConstant 11
+ 13(s): 12(ptr) Variable UniformConstant
+ 15: TypeVector 6(float) 2
+ 16: TypePointer Input 15(fvec2)
+ 17(v2): 16(ptr) Variable Input
+ 20: TypeImage 6(float) 3D sampled format:Unknown
+ 21: TypeSampledImage 20
+ 22: TypePointer UniformConstant 21
+ 23(t): 22(ptr) Variable UniformConstant
+ 25: TypeVector 6(float) 3
+ 26: TypePointer Input 25(fvec3)
+ 27(v3): 26(ptr) Variable Input
+ 30: TypePointer Function 7(fvec4)
+ 32: TypeImage 6(float) 2D nonsampled format:Rgba32f
+ 33: TypePointer UniformConstant 32
+ 34(i1): 33(ptr) Variable UniformConstant
+ 36: TypeInt 32 1
+ 37: TypeVector 36(int) 2
+ 38: TypePointer Input 37(ivec2)
+ 39(iv2): 38(ptr) Variable Input
+ 43(i2): 33(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 31(vi1): 30(ptr) Variable Function
+ 42(vi2): 30(ptr) Variable Function
+ 14: 11 Load 13(s)
+ 18: 15(fvec2) Load 17(v2)
+ 19: 7(fvec4) ImageSampleImplicitLod 14 18
+ Store 9(color) 19
+ 24: 21 Load 23(t)
+ 28: 25(fvec3) Load 27(v3)
+ 29: 7(fvec4) ImageSampleImplicitLod 24 28
+ Store 9(color) 29
+ 35: 32 Load 34(i1)
+ 40: 37(ivec2) Load 39(iv2)
+ 41: 7(fvec4) ImageRead 35 40
+ Store 31(vi1) 41
+ 44: 32 Load 43(i2)
+ 45: 37(ivec2) Load 39(iv2)
+ 46: 7(fvec4) ImageRead 44 45
+ Store 42(vi2) 46
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.prepost.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.prepost.frag.out
index 410286cad0f..68a6909b3ea 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.prepost.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.prepost.frag.out
@@ -1,6 +1,6 @@
spv.prepost.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 94
Capability Shader
@@ -20,6 +20,7 @@ spv.prepost.frag
Name 66 "z"
Name 73 "v"
Name 90 "gl_FragColor"
+ Decorate 90(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.pushConstant.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.pushConstant.vert.out
index bdefd63de6d..e86320fa099 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.pushConstant.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.pushConstant.vert.out
@@ -1,8 +1,6 @@
spv.pushConstant.vert
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 35
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.pushConstantAnon.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.pushConstantAnon.vert.out
index 9559815b5b3..37e61ae9106 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.pushConstantAnon.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.pushConstantAnon.vert.out
@@ -1,8 +1,6 @@
spv.pushConstantAnon.vert
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 38
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.qualifiers.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.qualifiers.vert.out
index 37f474cca54..fa51edc175a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.qualifiers.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.qualifiers.vert.out
@@ -1,8 +1,6 @@
spv.qualifiers.vert
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 21
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.queryL.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.queryL.frag.out
index fbdcbc8130f..419d213ce15 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.queryL.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.queryL.frag.out
@@ -1,8 +1,6 @@
spv.queryL.frag
-Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 224
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.autoassign-2.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.autoassign-2.frag.out
index c8273dd14fd..14040df4b4b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.autoassign-2.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.autoassign-2.frag.out
@@ -1,6 +1,6 @@
spv.register.autoassign-2.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 47
Capability Shader
@@ -8,6 +8,7 @@ spv.register.autoassign-2.frag
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 44
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -18,14 +19,14 @@ spv.register.autoassign-2.frag
Name 31 "g_tScene[1]"
Name 39 "psout"
Name 40 "param"
- Name 44 "Color"
+ Name 44 "psout.Color"
Decorate 18(g_tScene[0]) DescriptorSet 0
Decorate 18(g_tScene[0]) Binding 10
Decorate 22(g_tSamp) DescriptorSet 0
Decorate 22(g_tSamp) Binding 5
Decorate 31(g_tScene[1]) DescriptorSet 0
Decorate 31(g_tScene[1]) Binding 11
- Decorate 44(Color) Location 0
+ Decorate 44(psout.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -49,7 +50,7 @@ spv.register.autoassign-2.frag
31(g_tScene[1]): 17(ptr) Variable UniformConstant
37: TypePointer Function 7(fvec4)
43: TypePointer Output 7(fvec4)
- 44(Color): 43(ptr) Variable Output
+ 44(psout.Color): 43(ptr) Variable Output
4(main): 2 Function None 3
5: Label
39(psout): 9(ptr) Variable Function
@@ -59,7 +60,7 @@ spv.register.autoassign-2.frag
Store 39(psout) 42
45: 37(ptr) AccessChain 39(psout) 15
46: 7(fvec4) Load 45
- Store 44(Color) 46
+ Store 44(psout.Color) 46
Return
FunctionEnd
12(@main(struct-PS_OUTPUT-vf41;): 2 Function None 10
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.autoassign.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.autoassign.frag.out
index ae048ce9878..854025322a8 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.autoassign.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.autoassign.frag.out
@@ -1,6 +1,6 @@
spv.register.autoassign.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 155
Capability Shader
@@ -9,6 +9,7 @@ spv.register.autoassign.frag
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main_ep" 151
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main_ep"
Name 9 "Func1("
Name 11 "Func2("
@@ -41,7 +42,7 @@ spv.register.autoassign.frag
Name 130 "g_tTex_unused2"
Name 132 "g_sSamp_unused2"
Name 141 "psout"
- Name 151 "Color"
+ Name 151 "@entryPointOutput.Color"
Name 154 "g_tTex_unused3"
Decorate 21(g_tTex1) DescriptorSet 0
Decorate 21(g_tTex1) Binding 11
@@ -79,7 +80,7 @@ spv.register.autoassign.frag
Decorate 130(g_tTex_unused2) DescriptorSet 0
Decorate 130(g_tTex_unused2) Binding 12
Decorate 132(g_sSamp_unused2) DescriptorSet 0
- Decorate 151(Color) Location 0
+ Decorate 151(@entryPointOutput.Color) Location 0
Decorate 154(g_tTex_unused3) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
@@ -140,13 +141,13 @@ spv.register.autoassign.frag
140: TypePointer Function 15(PS_OUTPUT)
145: TypePointer Function 7(fvec4)
150: TypePointer Output 7(fvec4)
- 151(Color): 150(ptr) Variable Output
+151(@entryPointOutput.Color): 150(ptr) Variable Output
154(g_tTex_unused3): 20(ptr) Variable UniformConstant
4(main_ep): 2 Function None 3
5: Label
152:15(PS_OUTPUT) FunctionCall 17(@main_ep()
153: 7(fvec4) CompositeExtract 152 0
- Store 151(Color) 153
+ Store 151(@entryPointOutput.Color) 153
Return
FunctionEnd
9(Func1(): 7(fvec4) Function None 8
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.noautoassign.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.noautoassign.frag.out
index afadc48f907..a6339935138 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.noautoassign.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.noautoassign.frag.out
@@ -1,6 +1,6 @@
spv.register.noautoassign.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 155
Capability Shader
@@ -9,6 +9,7 @@ spv.register.noautoassign.frag
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main_ep" 151
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main_ep"
Name 9 "Func1("
Name 11 "Func2("
@@ -41,7 +42,7 @@ spv.register.noautoassign.frag
Name 130 "g_tTex_unused2"
Name 132 "g_sSamp_unused2"
Name 141 "psout"
- Name 151 "Color"
+ Name 151 "@entryPointOutput.Color"
Name 154 "g_tTex_unused3"
Decorate 21(g_tTex1) DescriptorSet 0
Decorate 21(g_tTex1) Binding 11
@@ -72,7 +73,7 @@ spv.register.noautoassign.frag
Decorate 130(g_tTex_unused2) DescriptorSet 0
Decorate 130(g_tTex_unused2) Binding 12
Decorate 132(g_sSamp_unused2) DescriptorSet 0
- Decorate 151(Color) Location 0
+ Decorate 151(@entryPointOutput.Color) Location 0
Decorate 154(g_tTex_unused3) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
@@ -133,13 +134,13 @@ spv.register.noautoassign.frag
140: TypePointer Function 15(PS_OUTPUT)
145: TypePointer Function 7(fvec4)
150: TypePointer Output 7(fvec4)
- 151(Color): 150(ptr) Variable Output
+151(@entryPointOutput.Color): 150(ptr) Variable Output
154(g_tTex_unused3): 20(ptr) Variable UniformConstant
4(main_ep): 2 Function None 3
5: Label
152:15(PS_OUTPUT) FunctionCall 17(@main_ep()
153: 7(fvec4) CompositeExtract 152 0
- Store 151(Color) 153
+ Store 151(@entryPointOutput.Color) 153
Return
FunctionEnd
9(Func1(): 7(fvec4) Function None 8
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.subpass.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.subpass.frag.out
new file mode 100644
index 00000000000..2a2232648a5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.register.subpass.frag.out
@@ -0,0 +1,75 @@
+spv.register.subpass.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 40
+
+ Capability Shader
+ Capability InputAttachment
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 38
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 12 "result00"
+ Name 15 "subpass_f4"
+ Name 22 "result10"
+ Name 25 "subpass_ms_f4"
+ Name 29 "result73"
+ Name 30 "subpass_2"
+ Name 38 "@entryPointOutput"
+ Decorate 15(subpass_f4) DescriptorSet 0
+ Decorate 15(subpass_f4) Binding 21
+ Decorate 15(subpass_f4) InputAttachmentIndex 1
+ Decorate 25(subpass_ms_f4) DescriptorSet 0
+ Decorate 25(subpass_ms_f4) Binding 20
+ Decorate 25(subpass_ms_f4) InputAttachmentIndex 4
+ Decorate 30(subpass_2) DescriptorSet 0
+ Decorate 30(subpass_2) Binding 22
+ Decorate 30(subpass_2) InputAttachmentIndex 7
+ Decorate 38(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypePointer Function 7(fvec4)
+ 13: TypeImage 6(float) SubpassData nonsampled format:Unknown
+ 14: TypePointer UniformConstant 13
+ 15(subpass_f4): 14(ptr) Variable UniformConstant
+ 17: TypeInt 32 1
+ 18: 17(int) Constant 0
+ 19: TypeVector 17(int) 2
+ 20: 19(ivec2) ConstantComposite 18 18
+ 23: TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown
+ 24: TypePointer UniformConstant 23
+25(subpass_ms_f4): 24(ptr) Variable UniformConstant
+ 27: 17(int) Constant 3
+ 30(subpass_2): 14(ptr) Variable UniformConstant
+ 33: 6(float) Constant 0
+ 34: 7(fvec4) ConstantComposite 33 33 33 33
+ 37: TypePointer Output 7(fvec4)
+38(@entryPointOutput): 37(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 39: 7(fvec4) FunctionCall 9(@main()
+ Store 38(@entryPointOutput) 39
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 12(result00): 11(ptr) Variable Function
+ 22(result10): 11(ptr) Variable Function
+ 29(result73): 11(ptr) Variable Function
+ 16: 13 Load 15(subpass_f4)
+ 21: 7(fvec4) ImageRead 16 20
+ Store 12(result00) 21
+ 26: 23 Load 25(subpass_ms_f4)
+ 28: 7(fvec4) ImageRead 26 20 Sample 27
+ Store 22(result10) 28
+ 31: 13 Load 30(subpass_2)
+ 32: 7(fvec4) ImageRead 31 20
+ Store 29(result73) 32
+ ReturnValue 34
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.rw.autoassign.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.rw.autoassign.frag.out
index e2b544abebb..ecca7617842 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.rw.autoassign.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.rw.autoassign.frag.out
@@ -1,15 +1,16 @@
spv.rw.autoassign.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 42
Capability Shader
- Capability Sampled1D
- Capability SampledBuffer
+ Capability Image1D
+ Capability ImageBuffer
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 39
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
@@ -19,12 +20,12 @@ spv.rw.autoassign.frag
Name 23 "r01"
Name 26 "g_tBuf1du1"
Name 30 "psout"
- Name 39 "Color"
+ Name 39 "@entryPointOutput.Color"
Decorate 16(g_tTex1df1) DescriptorSet 0
Decorate 16(g_tTex1df1) Binding 20
Decorate 26(g_tBuf1du1) DescriptorSet 0
Decorate 26(g_tBuf1du1) Binding 21
- Decorate 39(Color) Location 0
+ Decorate 39(@entryPointOutput.Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -47,12 +48,12 @@ spv.rw.autoassign.frag
32: 7(fvec4) ConstantComposite 31 31 31 31
33: TypePointer Function 7(fvec4)
38: TypePointer Output 7(fvec4)
- 39(Color): 38(ptr) Variable Output
+39(@entryPointOutput.Color): 38(ptr) Variable Output
4(main): 2 Function None 3
5: Label
40:8(PS_OUTPUT) FunctionCall 10(@main()
41: 7(fvec4) CompositeExtract 40 0
- Store 39(Color) 41
+ Store 39(@entryPointOutput.Color) 41
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sample.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sample.frag.out
new file mode 100644
index 00000000000..166ce943dcf
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sample.frag.out
@@ -0,0 +1,32 @@
+spv.sample.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 13
+
+ Capability Shader
+ Capability SampleRateShading
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 11
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "color"
+ Name 11 "samp"
+ Decorate 9(color) Location 0
+ Decorate 11(samp) Sample
+ Decorate 11(samp) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(color): 8(ptr) Variable Output
+ 10: TypePointer Input 7(fvec4)
+ 11(samp): 10(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 12: 7(fvec4) Load 11(samp)
+ Store 9(color) 12
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sampleId.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sampleId.frag.out
new file mode 100644
index 00000000000..11ade877954
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sampleId.frag.out
@@ -0,0 +1,52 @@
+spv.sampleId.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 26
+
+ Capability Shader
+ Capability SampleRateShading
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 8 18 20
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 8 "gl_SampleID"
+ Name 18 "color"
+ Name 20 "samp"
+ Decorate 8(gl_SampleID) Flat
+ Decorate 8(gl_SampleID) BuiltIn SampleId
+ Decorate 18(color) Location 0
+ Decorate 20(samp) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypePointer Input 6(int)
+ 8(gl_SampleID): 7(ptr) Variable Input
+ 10: 6(int) Constant 3
+ 11: TypeBool
+ 15: TypeFloat 32
+ 16: TypeVector 15(float) 4
+ 17: TypePointer Output 16(fvec4)
+ 18(color): 17(ptr) Variable Output
+ 19: TypePointer Input 16(fvec4)
+ 20(samp): 19(ptr) Variable Input
+ 23: 15(float) Constant 1073741824
+ 4(main): 2 Function None 3
+ 5: Label
+ 9: 6(int) Load 8(gl_SampleID)
+ 12: 11(bool) SLessThan 9 10
+ SelectionMerge 14 None
+ BranchConditional 12 13 22
+ 13: Label
+ 21: 16(fvec4) Load 20(samp)
+ Store 18(color) 21
+ Branch 14
+ 22: Label
+ 24: 16(fvec4) Load 20(samp)
+ 25: 16(fvec4) VectorTimesScalar 24 23
+ Store 18(color) 25
+ Branch 14
+ 14: Label
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
index 6bae6bd0c3f..848b4a048dc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
@@ -1,12 +1,9 @@
spv.sampleMaskOverrideCoverage.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 20
Capability Shader
- Capability SampleRateShading
Extension "SPV_NV_sample_mask_override_coverage"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.samplePosition.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.samplePosition.frag.out
new file mode 100644
index 00000000000..5f4a0b93e0c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.samplePosition.frag.out
@@ -0,0 +1,55 @@
+spv.samplePosition.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 30
+
+ Capability Shader
+ Capability SampleRateShading
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 22 24
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "gl_SamplePosition"
+ Name 22 "color"
+ Name 24 "samp"
+ Decorate 9(gl_SamplePosition) BuiltIn SamplePosition
+ Decorate 22(color) Location 0
+ Decorate 24(samp) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 2
+ 8: TypePointer Input 7(fvec2)
+9(gl_SamplePosition): 8(ptr) Variable Input
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 1
+ 12: TypePointer Input 6(float)
+ 15: 6(float) Constant 1056964608
+ 16: TypeBool
+ 20: TypeVector 6(float) 4
+ 21: TypePointer Output 20(fvec4)
+ 22(color): 21(ptr) Variable Output
+ 23: TypePointer Input 20(fvec4)
+ 24(samp): 23(ptr) Variable Input
+ 27: 6(float) Constant 1073741824
+ 4(main): 2 Function None 3
+ 5: Label
+ 13: 12(ptr) AccessChain 9(gl_SamplePosition) 11
+ 14: 6(float) Load 13
+ 17: 16(bool) FOrdLessThan 14 15
+ SelectionMerge 19 None
+ BranchConditional 17 18 26
+ 18: Label
+ 25: 20(fvec4) Load 24(samp)
+ Store 22(color) 25
+ Branch 19
+ 26: Label
+ 28: 20(fvec4) Load 24(samp)
+ 29: 20(fvec4) VectorTimesScalar 28 27
+ Store 22(color) 29
+ Branch 19
+ 19: Label
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.separate.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.separate.frag.out
index c654117f7f4..0e6243be919 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.separate.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.separate.frag.out
@@ -1,8 +1,6 @@
spv.separate.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 319
Capability Shader
@@ -10,7 +8,6 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Capability Sampled1D
Capability SampledCubeArray
Capability SampledBuffer
- Capability ImageMSArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 11 34
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.set.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.set.vert.out
index 38cb669c6ae..530b5546b66 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.set.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.set.vert.out
@@ -1,8 +1,6 @@
spv.set.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 22
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderBallot.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderBallot.comp.out
index b8d5e3a0193..8be7a06f273 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderBallot.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderBallot.comp.out
@@ -1,8 +1,6 @@
spv.shaderBallot.comp
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 298
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderBallotAMD.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderBallotAMD.comp.out
index bb7f8c1627f..51a52f3005f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderBallotAMD.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderBallotAMD.comp.out
@@ -1,8 +1,6 @@
spv.shaderBallotAMD.comp
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 1048
Capability Shader
@@ -10,8 +8,11 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Capability Float64
Capability Int64
Capability Groups
+ Capability StorageUniformBufferBlock16
+ Capability StorageUniform16
Extension "SPV_AMD_gpu_shader_half_float"
Extension "SPV_AMD_shader_ballot"
+ Extension "SPV_KHR_16bit_storage"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderDrawParams.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderDrawParams.vert.out
index 41ad78d480c..36c5ca5916c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderDrawParams.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderDrawParams.vert.out
@@ -1,8 +1,6 @@
spv.shaderDrawParams.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 53
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderFragMaskAMD.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderFragMaskAMD.frag.out
new file mode 100644
index 00000000000..56081b12928
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderFragMaskAMD.frag.out
@@ -0,0 +1,122 @@
+spv.shaderFragMaskAMD.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 80
+
+ Capability Shader
+ Capability InputAttachment
+ Capability FragmentMaskAMD
+ Extension "SPV_AMD_shader_fragment_mask"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 78
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_AMD_shader_fragment_mask"
+ Name 4 "main"
+ Name 9 "f4"
+ Name 14 "fragMask"
+ Name 18 "s2DMS"
+ Name 27 "fragIndex"
+ Name 42 "is2DMSArray"
+ Name 62 "usubpassMS"
+ Name 78 "fragColor"
+ Decorate 18(s2DMS) DescriptorSet 0
+ Decorate 18(s2DMS) Binding 0
+ Decorate 42(is2DMSArray) DescriptorSet 0
+ Decorate 42(is2DMSArray) Binding 1
+ Decorate 62(usubpassMS) DescriptorSet 0
+ Decorate 62(usubpassMS) Binding 2
+ Decorate 62(usubpassMS) InputAttachmentIndex 0
+ Decorate 78(fragColor) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 10: 6(float) Constant 0
+ 11: 7(fvec4) ConstantComposite 10 10 10 10
+ 12: TypeInt 32 0
+ 13: TypePointer Function 12(int)
+ 15: TypeImage 6(float) 2D multi-sampled sampled format:Unknown
+ 16: TypeSampledImage 15
+ 17: TypePointer UniformConstant 16
+ 18(s2DMS): 17(ptr) Variable UniformConstant
+ 20: TypeInt 32 1
+ 21: TypeVector 20(int) 2
+ 22: 20(int) Constant 2
+ 23: 20(int) Constant 3
+ 24: 21(ivec2) ConstantComposite 22 23
+ 29: 12(int) Constant 240
+ 31: 20(int) Constant 4
+ 34: 12(int) Constant 1
+ 39: TypeImage 20(int) 2D array multi-sampled sampled format:Unknown
+ 40: TypeSampledImage 39
+ 41: TypePointer UniformConstant 40
+ 42(is2DMSArray): 41(ptr) Variable UniformConstant
+ 44: TypeVector 20(int) 3
+ 45: 20(int) Constant 1
+ 46: 44(ivec3) ConstantComposite 22 23 45
+ 55: TypeVector 20(int) 4
+ 60: TypeImage 12(int) SubpassData multi-sampled nonsampled format:Unknown
+ 61: TypePointer UniformConstant 60
+ 62(usubpassMS): 61(ptr) Variable UniformConstant
+ 64: 20(int) Constant 0
+ 65: 21(ivec2) ConstantComposite 64 64
+ 72: TypeVector 12(int) 4
+ 77: TypePointer Output 7(fvec4)
+ 78(fragColor): 77(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(f4): 8(ptr) Variable Function
+ 14(fragMask): 13(ptr) Variable Function
+ 27(fragIndex): 13(ptr) Variable Function
+ Store 9(f4) 11
+ 19: 16 Load 18(s2DMS)
+ 25: 15 Image 19
+ 26: 12(int) FragmentMaskFetchAMD 25 24
+ Store 14(fragMask) 26
+ 28: 12(int) Load 14(fragMask)
+ 30: 12(int) BitwiseAnd 28 29
+ 32: 12(int) ShiftRightLogical 30 31
+ Store 27(fragIndex) 32
+ 33: 16 Load 18(s2DMS)
+ 35: 15 Image 33
+ 36: 7(fvec4) FragmentFetchAMD 35 24 34
+ 37: 7(fvec4) Load 9(f4)
+ 38: 7(fvec4) FAdd 37 36
+ Store 9(f4) 38
+ 43: 40 Load 42(is2DMSArray)
+ 47: 39 Image 43
+ 48: 12(int) FragmentMaskFetchAMD 47 46
+ Store 14(fragMask) 48
+ 49: 12(int) Load 14(fragMask)
+ 50: 12(int) BitwiseAnd 49 29
+ 51: 12(int) ShiftRightLogical 50 31
+ Store 27(fragIndex) 51
+ 52: 40 Load 42(is2DMSArray)
+ 53: 12(int) Load 27(fragIndex)
+ 54: 39 Image 52
+ 56: 55(ivec4) FragmentFetchAMD 54 46 53
+ 57: 7(fvec4) ConvertSToF 56
+ 58: 7(fvec4) Load 9(f4)
+ 59: 7(fvec4) FAdd 58 57
+ Store 9(f4) 59
+ 63: 60 Load 62(usubpassMS)
+ 66: 12(int) FragmentMaskFetchAMD 63 65
+ Store 14(fragMask) 66
+ 67: 12(int) Load 14(fragMask)
+ 68: 12(int) BitwiseAnd 67 29
+ 69: 12(int) ShiftRightLogical 68 31
+ Store 27(fragIndex) 69
+ 70: 60 Load 62(usubpassMS)
+ 71: 12(int) Load 27(fragIndex)
+ 73: 72(ivec4) FragmentFetchAMD 70 65 71
+ 74: 7(fvec4) ConvertUToF 73
+ 75: 7(fvec4) Load 9(f4)
+ 76: 7(fvec4) FAdd 75 74
+ Store 9(f4) 76
+ 79: 7(fvec4) Load 9(f4)
+ Store 78(fragColor) 79
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderGroupVote.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderGroupVote.comp.out
index 027714941d1..abd180468ce 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderGroupVote.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderGroupVote.comp.out
@@ -1,8 +1,6 @@
spv.shaderGroupVote.comp
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 33
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderStencilExport.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderStencilExport.frag.out
new file mode 100644
index 00000000000..a126e96ebe9
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shaderStencilExport.frag.out
@@ -0,0 +1,28 @@
+spv.shaderStencilExport.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 10
+
+ Capability Shader
+ Capability StencilExportEXT
+ Extension "SPV_EXT_shader_stencil_export"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 8
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_ARB_shader_stencil_export"
+ Name 4 "main"
+ Name 8 "gl_FragStencilRefARB"
+ Decorate 8(gl_FragStencilRefARB) BuiltIn FragStencilRefEXT
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypePointer Output 6(int)
+8(gl_FragStencilRefARB): 7(ptr) Variable Output
+ 9: 6(int) Constant 100
+ 4(main): 2 Function None 3
+ 5: Label
+ Store 8(gl_FragStencilRefARB) 9
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shiftOps.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shiftOps.frag.out
index 498c287784b..b2bfcad1278 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shiftOps.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shiftOps.frag.out
@@ -1,8 +1,6 @@
spv.shiftOps.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 38
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shortCircuit.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shortCircuit.frag.out
index 7d5189a2518..33eec772282 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shortCircuit.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.shortCircuit.frag.out
@@ -1,8 +1,6 @@
spv.shortCircuit.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 147
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.simpleFunctionCall.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.simpleFunctionCall.frag.out
index 2e6b671f468..62b42550123 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.simpleFunctionCall.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.simpleFunctionCall.frag.out
@@ -1,6 +1,6 @@
spv.simpleFunctionCall.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 19
Capability Shader
@@ -13,6 +13,7 @@ spv.simpleFunctionCall.frag
Name 9 "foo("
Name 12 "BaseColor"
Name 17 "gl_FragColor"
+ Decorate 17(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.simpleMat.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.simpleMat.vert.out
index 2cad63137f1..56933e4c464 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.simpleMat.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.simpleMat.vert.out
@@ -2,7 +2,7 @@ spv.simpleMat.vert
WARNING: 0:3: varying deprecated in version 130; may be removed in future release
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 39
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sparseTexture.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sparseTexture.frag.out
index 431ef152847..376a8747519 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sparseTexture.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sparseTexture.frag.out
@@ -1,11 +1,10 @@
spv.sparseTexture.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 438
Capability Shader
+ Capability StorageImageMultisample
Capability SampledRect
Capability SparseResidency
Capability SampledCubeArray
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sparseTextureClamp.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sparseTextureClamp.frag.out
index 175dc35c8a5..21f9583cab8 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sparseTextureClamp.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.sparseTextureClamp.frag.out
@@ -1,8 +1,6 @@
spv.sparseTextureClamp.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 360
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConst.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConst.vert.out
index 5e2020fe015..766bdaf78db 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConst.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConst.vert.out
@@ -1,8 +1,6 @@
spv.specConst.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 27
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstant.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstant.comp.out
index 481ed68c3ac..de8411be7d0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstant.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstant.comp.out
@@ -1,8 +1,6 @@
spv.specConstant.comp
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 27
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out
index ea4e542a350..8dda41d4951 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out
@@ -1,8 +1,6 @@
spv.specConstant.vert
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 81
Capability Shader
@@ -13,7 +11,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Source GLSL 400
Name 4 "main"
Name 9 "arraySize"
- Name 14 "foo(vf4[s1518];"
+ Name 14 "foo(vf4[s1506];"
Name 13 "p"
Name 17 "builtin_spec_constant("
Name 20 "color"
@@ -104,10 +102,10 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Store 20(color) 46
48: 10 Load 22(ucol)
Store 47(param) 48
- 49: 2 FunctionCall 14(foo(vf4[s1518];) 47(param)
+ 49: 2 FunctionCall 14(foo(vf4[s1506];) 47(param)
Return
FunctionEnd
-14(foo(vf4[s1518];): 2 Function None 12
+14(foo(vf4[s1506];): 2 Function None 12
13(p): 11(ptr) FunctionParameter
15: Label
54: 24(ptr) AccessChain 53(dupUcol) 23
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstantComposite.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstantComposite.vert.out
index 9079554bae9..194f567f869 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstantComposite.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstantComposite.vert.out
@@ -1,8 +1,6 @@
spv.specConstantComposite.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 43
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstantOperations.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstantOperations.vert.out
index 597820b940c..429e0682572 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstantOperations.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.specConstantOperations.vert.out
@@ -1,9 +1,7 @@
spv.specConstantOperations.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 160
+// Generated by (magic number): 80002
+// Id's are bound by 162
Capability Shader
Capability Float64
@@ -168,7 +166,9 @@ Warning, version 450 is not yet complete; most version-specific features are pre
156: 154(fvec2) ConstantComposite 155 155
157: 39(float) Constant 1073741824
158: 154(fvec2) ConstantComposite 157 157
- 159: 154(fvec2) SpecConstantOp 169 153 156 158
+ 159: TypeVector 22(bool) 2
+ 160: 159(bvec2) SpecConstantComposite 153 153
+ 161: 154(fvec2) SpecConstantOp 169 160 156 158
4(main): 2 Function None 3
5: Label
Return
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.ssbo.autoassign.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.ssbo.autoassign.frag.out
index 8d10b6b75cd..02de2cb25cc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.ssbo.autoassign.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.ssbo.autoassign.frag.out
@@ -1,13 +1,14 @@
spv.ssbo.autoassign.frag
// Module Version 10000
-// Generated by (magic number): 80001
-// Id's are bound by 95
+// Generated by (magic number): 80002
+// Id's are bound by 99
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 88 91
+ EntryPoint Fragment 4 "main" 92 95
ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
Name 4 "main"
Name 11 "@main(vf4;"
Name 10 "pos"
@@ -22,16 +23,14 @@ spv.ssbo.autoassign.frag
MemberName 26(TestCB) 0 "W"
MemberName 26(TestCB) 1 "H"
Name 28 ""
- Name 55 "SB1"
- MemberName 55(SB1) 0 "@data"
Name 57 "SB1"
- Name 86 "pos"
- Name 88 "pos"
- Name 91 "@entryPointOutput"
- Name 92 "param"
- MemberDecorate 14(BufType) 0 NonWritable
+ MemberName 57(SB1) 0 "@data"
+ Name 59 "SB1"
+ Name 90 "pos"
+ Name 92 "pos"
+ Name 95 "@entryPointOutput"
+ Name 96 "param"
MemberDecorate 14(BufType) 0 Offset 0
- MemberDecorate 14(BufType) 1 NonWritable
MemberDecorate 14(BufType) 1 Offset 16
Decorate 15 ArrayStride 32
MemberDecorate 16(SB0) 0 NonWritable
@@ -44,13 +43,13 @@ spv.ssbo.autoassign.frag
Decorate 26(TestCB) Block
Decorate 28 DescriptorSet 0
Decorate 28 Binding 15
- Decorate 54 ArrayStride 32
- MemberDecorate 55(SB1) 0 Offset 0
- Decorate 55(SB1) BufferBlock
- Decorate 57(SB1) DescriptorSet 0
- Decorate 57(SB1) Binding 31
- Decorate 88(pos) Location 0
- Decorate 91(@entryPointOutput) Location 0
+ Decorate 56 ArrayStride 32
+ MemberDecorate 57(SB1) 0 Offset 0
+ Decorate 57(SB1) BufferBlock
+ Decorate 59(SB1) DescriptorSet 0
+ Decorate 59(SB1) Binding 31
+ Decorate 92(pos) Location 0
+ Decorate 95(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -72,26 +71,26 @@ spv.ssbo.autoassign.frag
28: 27(ptr) Variable Uniform
29: TypePointer Uniform 21(int)
34: 21(int) Constant 0
- 38: TypePointer Uniform 7(fvec4)
- 50: 19(int) Constant 1
- 54: TypeRuntimeArray 14(BufType)
- 55(SB1): TypeStruct 54
- 56: TypePointer Uniform 55(SB1)
- 57(SB1): 56(ptr) Variable Uniform
- 87: TypePointer Input 7(fvec4)
- 88(pos): 87(ptr) Variable Input
- 90: TypePointer Output 7(fvec4)
-91(@entryPointOutput): 90(ptr) Variable Output
+ 39: TypePointer Uniform 7(fvec4)
+ 52: 19(int) Constant 1
+ 56: TypeRuntimeArray 14(BufType)
+ 57(SB1): TypeStruct 56
+ 58: TypePointer Uniform 57(SB1)
+ 59(SB1): 58(ptr) Variable Uniform
+ 91: TypePointer Input 7(fvec4)
+ 92(pos): 91(ptr) Variable Input
+ 94: TypePointer Output 7(fvec4)
+95(@entryPointOutput): 94(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 86(pos): 8(ptr) Variable Function
- 92(param): 8(ptr) Variable Function
- 89: 7(fvec4) Load 88(pos)
- Store 86(pos) 89
- 93: 7(fvec4) Load 86(pos)
- Store 92(param) 93
- 94: 7(fvec4) FunctionCall 11(@main(vf4;) 92(param)
- Store 91(@entryPointOutput) 94
+ 90(pos): 8(ptr) Variable Function
+ 96(param): 8(ptr) Variable Function
+ 93: 7(fvec4) Load 92(pos)
+ Store 90(pos) 93
+ 97: 7(fvec4) Load 90(pos)
+ Store 96(param) 97
+ 98: 7(fvec4) FunctionCall 11(@main(vf4;) 96(param)
+ Store 95(@entryPointOutput) 98
Return
FunctionEnd
11(@main(vf4;): 7(fvec4) Function None 9
@@ -107,47 +106,51 @@ spv.ssbo.autoassign.frag
35: 23(ptr) AccessChain 10(pos) 34
36: 6(float) Load 35
37: 6(float) FAdd 33 36
- 39: 38(ptr) AccessChain 18(SB0) 20 37 20
- 40: 7(fvec4) Load 39
- 41: 23(ptr) AccessChain 10(pos) 22
- 42: 6(float) Load 41
- 43: 29(ptr) AccessChain 28 20
- 44: 21(int) Load 43
- 45: 6(float) ConvertUToF 44
- 46: 6(float) FMul 42 45
- 47: 23(ptr) AccessChain 10(pos) 34
- 48: 6(float) Load 47
- 49: 6(float) FAdd 46 48
- 51: 38(ptr) AccessChain 18(SB0) 20 49 50
- 52: 7(fvec4) Load 51
- 53: 7(fvec4) FAdd 40 52
- Store 13(vTmp) 53
- 58: 23(ptr) AccessChain 10(pos) 22
- 59: 6(float) Load 58
- 60: 29(ptr) AccessChain 28 20
- 61: 21(int) Load 60
- 62: 6(float) ConvertUToF 61
- 63: 6(float) FMul 59 62
- 64: 23(ptr) AccessChain 10(pos) 34
- 65: 6(float) Load 64
- 66: 6(float) FAdd 63 65
- 67: 38(ptr) AccessChain 57(SB1) 20 66 20
- 68: 7(fvec4) Load 67
- 69: 23(ptr) AccessChain 10(pos) 22
- 70: 6(float) Load 69
- 71: 29(ptr) AccessChain 28 20
- 72: 21(int) Load 71
- 73: 6(float) ConvertUToF 72
- 74: 6(float) FMul 70 73
- 75: 23(ptr) AccessChain 10(pos) 34
- 76: 6(float) Load 75
- 77: 6(float) FAdd 74 76
- 78: 38(ptr) AccessChain 57(SB1) 20 77 50
- 79: 7(fvec4) Load 78
- 80: 7(fvec4) FAdd 68 79
- 81: 7(fvec4) Load 13(vTmp)
- 82: 7(fvec4) FAdd 81 80
- Store 13(vTmp) 82
- 83: 7(fvec4) Load 13(vTmp)
- ReturnValue 83
+ 38: 21(int) ConvertFToU 37
+ 40: 39(ptr) AccessChain 18(SB0) 20 38 20
+ 41: 7(fvec4) Load 40
+ 42: 23(ptr) AccessChain 10(pos) 22
+ 43: 6(float) Load 42
+ 44: 29(ptr) AccessChain 28 20
+ 45: 21(int) Load 44
+ 46: 6(float) ConvertUToF 45
+ 47: 6(float) FMul 43 46
+ 48: 23(ptr) AccessChain 10(pos) 34
+ 49: 6(float) Load 48
+ 50: 6(float) FAdd 47 49
+ 51: 21(int) ConvertFToU 50
+ 53: 39(ptr) AccessChain 18(SB0) 20 51 52
+ 54: 7(fvec4) Load 53
+ 55: 7(fvec4) FAdd 41 54
+ Store 13(vTmp) 55
+ 60: 23(ptr) AccessChain 10(pos) 22
+ 61: 6(float) Load 60
+ 62: 29(ptr) AccessChain 28 20
+ 63: 21(int) Load 62
+ 64: 6(float) ConvertUToF 63
+ 65: 6(float) FMul 61 64
+ 66: 23(ptr) AccessChain 10(pos) 34
+ 67: 6(float) Load 66
+ 68: 6(float) FAdd 65 67
+ 69: 21(int) ConvertFToU 68
+ 70: 39(ptr) AccessChain 59(SB1) 20 69 20
+ 71: 7(fvec4) Load 70
+ 72: 23(ptr) AccessChain 10(pos) 22
+ 73: 6(float) Load 72
+ 74: 29(ptr) AccessChain 28 20
+ 75: 21(int) Load 74
+ 76: 6(float) ConvertUToF 75
+ 77: 6(float) FMul 73 76
+ 78: 23(ptr) AccessChain 10(pos) 34
+ 79: 6(float) Load 78
+ 80: 6(float) FAdd 77 79
+ 81: 21(int) ConvertFToU 80
+ 82: 39(ptr) AccessChain 59(SB1) 20 81 52
+ 83: 7(fvec4) Load 82
+ 84: 7(fvec4) FAdd 71 83
+ 85: 7(fvec4) Load 13(vTmp)
+ 86: 7(fvec4) FAdd 85 84
+ Store 13(vTmp) 86
+ 87: 7(fvec4) Load 13(vTmp)
+ ReturnValue 87
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.ssboAlias.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.ssboAlias.frag.out
new file mode 100644
index 00000000000..876646d8e45
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.ssboAlias.frag.out
@@ -0,0 +1,88 @@
+spv.ssboAlias.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 46
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 43
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 9 "@main("
+ Name 13 "Buf1"
+ MemberName 13(Buf1) 0 "@data"
+ Name 15 "Buf1"
+ Name 18 "Buf1@count"
+ MemberName 18(Buf1@count) 0 "@count"
+ Name 20 "Buf1@count"
+ Name 30 "Buf2"
+ Name 31 "Buf2@count"
+ Name 43 "@entryPointOutput"
+ Name 45 "Buf3"
+ Decorate 12 ArrayStride 4
+ MemberDecorate 13(Buf1) 0 Offset 0
+ Decorate 13(Buf1) BufferBlock
+ Decorate 15(Buf1) DescriptorSet 0
+ Decorate 15(Buf1) Binding 84
+ MemberDecorate 18(Buf1@count) 0 Offset 0
+ Decorate 18(Buf1@count) BufferBlock
+ Decorate 20(Buf1@count) DescriptorSet 0
+ Decorate 20(Buf1@count) Binding 83
+ Decorate 30(Buf2) DescriptorSet 0
+ Decorate 30(Buf2) Binding 85
+ Decorate 31(Buf2@count) DescriptorSet 0
+ Decorate 31(Buf2@count) Binding 86
+ Decorate 43(@entryPointOutput) Location 0
+ Decorate 45(Buf3) DescriptorSet 0
+ Decorate 45(Buf3) Binding 84
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeInt 32 0
+ 12: TypeRuntimeArray 11(int)
+ 13(Buf1): TypeStruct 12
+ 14: TypePointer Uniform 13(Buf1)
+ 15(Buf1): 14(ptr) Variable Uniform
+ 16: TypeInt 32 1
+ 17: 16(int) Constant 0
+ 18(Buf1@count): TypeStruct 16(int)
+ 19: TypePointer Uniform 18(Buf1@count)
+ 20(Buf1@count): 19(ptr) Variable Uniform
+ 21: TypePointer Uniform 16(int)
+ 23: 16(int) Constant 1
+ 24: 11(int) Constant 1
+ 25: 11(int) Constant 0
+ 27: 11(int) Constant 10
+ 28: TypePointer Uniform 11(int)
+ 30(Buf2): 14(ptr) Variable Uniform
+ 31(Buf2@count): 19(ptr) Variable Uniform
+ 34: 11(int) Constant 20
+ 36: 6(float) Constant 1065353216
+ 37: 6(float) Constant 1077936128
+ 38: 6(float) Constant 1084227584
+ 39: 7(fvec4) ConstantComposite 36 37 38 36
+ 42: TypePointer Output 7(fvec4)
+43(@entryPointOutput): 42(ptr) Variable Output
+ 45(Buf3): 14(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 44: 7(fvec4) FunctionCall 9(@main()
+ Store 43(@entryPointOutput) 44
+ Return
+ FunctionEnd
+ 9(@main(): 7(fvec4) Function None 8
+ 10: Label
+ 22: 21(ptr) AccessChain 20(Buf1@count) 17
+ 26: 11(int) AtomicIAdd 22 24 25 23
+ 29: 28(ptr) AccessChain 15(Buf1) 17 26
+ Store 29 27
+ 32: 21(ptr) AccessChain 31(Buf2@count) 17
+ 33: 11(int) AtomicIAdd 32 24 25 23
+ 35: 28(ptr) AccessChain 30(Buf2) 17 33
+ Store 35 34
+ ReturnValue 39
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out
index 8fd6dd5c882..b2c9b39b2ba 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out
@@ -1,85 +1,86 @@
spv.stereoViewRendering.tesc
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 38
+ Capability Geometry
Capability Tessellation
+ Capability ShaderViewportIndexLayerNV
Capability ShaderViewportMaskNV
Capability ShaderStereoViewNV
+ Extension "SPV_EXT_shader_viewport_index_layer"
Extension "SPV_NV_stereo_view_rendering"
Extension "SPV_NV_viewport_array2"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 16 18 32
+ EntryPoint TessellationControl 4 "main" 16 18 31 37
ExecutionMode 4 OutputVertices 4
Source GLSL 450
SourceExtension "GL_NV_stereo_view_rendering"
SourceExtension "GL_NV_viewport_array2"
Name 4 "main"
Name 12 "gl_PerVertex"
- MemberName 12(gl_PerVertex) 0 "gl_Layer"
- MemberName 12(gl_PerVertex) 1 "gl_SecondaryPositionNV"
- MemberName 12(gl_PerVertex) 2 "gl_SecondaryViewportMaskNV"
+ MemberName 12(gl_PerVertex) 0 "gl_SecondaryPositionNV"
+ MemberName 12(gl_PerVertex) 1 "gl_SecondaryViewportMaskNV"
Name 16 "gl_out"
Name 18 "gl_InvocationID"
- Name 28 "gl_PerVertex"
- MemberName 28(gl_PerVertex) 0 "gl_Position"
- MemberName 28(gl_PerVertex) 1 "gl_PointSize"
- MemberName 28(gl_PerVertex) 2 "gl_ClipDistance"
- MemberName 28(gl_PerVertex) 3 "gl_CullDistance"
- MemberName 28(gl_PerVertex) 4 "gl_SecondaryPositionNV"
- Name 32 "gl_in"
- MemberDecorate 12(gl_PerVertex) 0 BuiltIn Layer
- MemberDecorate 12(gl_PerVertex) 0 ViewportRelativeNV
- MemberDecorate 12(gl_PerVertex) 0 SecondaryViewportRelativeNV 1
- MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryPositionNV
- MemberDecorate 12(gl_PerVertex) 2 BuiltIn SecondaryViewportMaskNV
+ Name 27 "gl_PerVertex"
+ MemberName 27(gl_PerVertex) 0 "gl_Position"
+ MemberName 27(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 27(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 27(gl_PerVertex) 3 "gl_CullDistance"
+ MemberName 27(gl_PerVertex) 4 "gl_SecondaryPositionNV"
+ Name 31 "gl_in"
+ Name 37 "gl_Layer"
+ MemberDecorate 12(gl_PerVertex) 0 BuiltIn SecondaryPositionNV
+ MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryViewportMaskNV
Decorate 12(gl_PerVertex) Block
Decorate 18(gl_InvocationID) BuiltIn InvocationId
- MemberDecorate 28(gl_PerVertex) 0 BuiltIn Position
- MemberDecorate 28(gl_PerVertex) 1 BuiltIn PointSize
- MemberDecorate 28(gl_PerVertex) 2 BuiltIn ClipDistance
- MemberDecorate 28(gl_PerVertex) 3 BuiltIn CullDistance
- Decorate 28(gl_PerVertex) Block
+ MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 27(gl_PerVertex) Block
+ Decorate 37(gl_Layer) BuiltIn Layer
+ Decorate 37(gl_Layer) ViewportRelativeNV
+ Decorate 37(gl_Layer) SecondaryViewportRelativeNV 1
2: TypeVoid
3: TypeFunction 2
- 6: TypeInt 32 1
- 7: TypeFloat 32
- 8: TypeVector 7(float) 4
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 1
9: TypeInt 32 0
10: 9(int) Constant 2
- 11: TypeArray 6(int) 10
-12(gl_PerVertex): TypeStruct 6(int) 8(fvec4) 11
+ 11: TypeArray 8(int) 10
+12(gl_PerVertex): TypeStruct 7(fvec4) 11
13: 9(int) Constant 4
14: TypeArray 12(gl_PerVertex) 13
15: TypePointer Output 14
16(gl_out): 15(ptr) Variable Output
- 17: TypePointer Input 6(int)
+ 17: TypePointer Input 8(int)
18(gl_InvocationID): 17(ptr) Variable Input
- 20: 6(int) Constant 2
- 21: 6(int) Constant 0
- 22: 6(int) Constant 1
- 23: TypePointer Output 6(int)
- 26: 9(int) Constant 1
- 27: TypeArray 7(float) 26
-28(gl_PerVertex): TypeStruct 8(fvec4) 7(float) 27 27 8(fvec4)
- 29: 9(int) Constant 32
- 30: TypeArray 28(gl_PerVertex) 29
- 31: TypePointer Input 30
- 32(gl_in): 31(ptr) Variable Input
- 33: TypePointer Input 8(fvec4)
- 36: TypePointer Output 8(fvec4)
+ 20: 8(int) Constant 1
+ 21: 8(int) Constant 0
+ 22: TypePointer Output 8(int)
+ 25: 9(int) Constant 1
+ 26: TypeArray 6(float) 25
+27(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 26 26 7(fvec4)
+ 28: 9(int) Constant 32
+ 29: TypeArray 27(gl_PerVertex) 28
+ 30: TypePointer Input 29
+ 31(gl_in): 30(ptr) Variable Input
+ 32: TypePointer Input 7(fvec4)
+ 35: TypePointer Output 7(fvec4)
+ 37(gl_Layer): 22(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 19: 6(int) Load 18(gl_InvocationID)
- 24: 23(ptr) AccessChain 16(gl_out) 19 20 21
- Store 24 22
- 25: 6(int) Load 18(gl_InvocationID)
- 34: 33(ptr) AccessChain 32(gl_in) 22 21
- 35: 8(fvec4) Load 34
- 37: 36(ptr) AccessChain 16(gl_out) 25 22
- Store 37 35
+ 19: 8(int) Load 18(gl_InvocationID)
+ 23: 22(ptr) AccessChain 16(gl_out) 19 20 21
+ Store 23 20
+ 24: 8(int) Load 18(gl_InvocationID)
+ 33: 32(ptr) AccessChain 31(gl_in) 20 21
+ 34: 7(fvec4) Load 33
+ 36: 35(ptr) AccessChain 16(gl_out) 24 21
+ Store 36 34
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.vert.out
index d6c695601e3..f2b22d5f5b7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.vert.out
@@ -1,8 +1,6 @@
spv.stereoViewRendering.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 27
Capability Shader
@@ -10,6 +8,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Capability ShaderViewportIndexLayerNV
Capability ShaderViewportMaskNV
Capability ShaderStereoViewNV
+ Extension "SPV_EXT_shader_viewport_index_layer"
Extension "SPV_NV_stereo_view_rendering"
Extension "SPV_NV_viewport_array2"
1: ExtInstImport "GLSL.std.450"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.storageBuffer.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.storageBuffer.vert.out
new file mode 100644
index 00000000000..b8b7e9410e6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.storageBuffer.vert.out
@@ -0,0 +1,67 @@
+spv.storageBuffer.vert
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 31
+
+ Capability Shader
+ Extension "SPV_KHR_storage_buffer_storage_class"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 13
+ Source GLSL 450
+ Name 4 "main"
+ Name 11 "gl_PerVertex"
+ MemberName 11(gl_PerVertex) 0 "gl_Position"
+ MemberName 11(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 11(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 11(gl_PerVertex) 3 "gl_CullDistance"
+ Name 13 ""
+ Name 16 "ub"
+ MemberName 16(ub) 0 "a"
+ Name 18 "ubi"
+ Name 22 "bb"
+ MemberName 22(bb) 0 "b"
+ Name 24 "bbi"
+ MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 11(gl_PerVertex) Block
+ MemberDecorate 16(ub) 0 Offset 0
+ Decorate 16(ub) Block
+ Decorate 18(ubi) DescriptorSet 0
+ MemberDecorate 22(bb) 0 Offset 0
+ Decorate 22(bb) Block
+ Decorate 24(bbi) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 1
+ 10: TypeArray 6(float) 9
+11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10
+ 12: TypePointer Output 11(gl_PerVertex)
+ 13: 12(ptr) Variable Output
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16(ub): TypeStruct 7(fvec4)
+ 17: TypePointer Uniform 16(ub)
+ 18(ubi): 17(ptr) Variable Uniform
+ 19: TypePointer Uniform 7(fvec4)
+ 22(bb): TypeStruct 7(fvec4)
+ 23: TypePointer StorageBuffer 22(bb)
+ 24(bbi): 23(ptr) Variable StorageBuffer
+ 25: TypePointer StorageBuffer 7(fvec4)
+ 29: TypePointer Output 7(fvec4)
+ 4(main): 2 Function None 3
+ 5: Label
+ 20: 19(ptr) AccessChain 18(ubi) 15
+ 21: 7(fvec4) Load 20
+ 26: 25(ptr) AccessChain 24(bbi) 15
+ 27: 7(fvec4) Load 26
+ 28: 7(fvec4) FAdd 21 27
+ 30: 29(ptr) AccessChain 13 15
+ Store 30 28
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structAssignment.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structAssignment.frag.out
index eb796f7c89c..b107de2bd74 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structAssignment.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structAssignment.frag.out
@@ -3,7 +3,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to
"precision mediump int; precision highp float;"
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 50
Capability Shader
@@ -36,6 +36,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to
MemberDecorate 9(lunarStruct2) 0 RelaxedPrecision
MemberDecorate 10(lunarStruct3) 1 RelaxedPrecision
Decorate 16 RelaxedPrecision
+ Decorate 31(gl_FragColor) Location 0
Decorate 40(samp2D) DescriptorSet 0
Decorate 44(coord) RelaxedPrecision
Decorate 45 RelaxedPrecision
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structDeref.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structDeref.frag.out
index e60159f9952..fb55c71ac8f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structDeref.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structDeref.frag.out
@@ -1,6 +1,6 @@
spv.structDeref.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 123
Capability Shader
@@ -40,6 +40,7 @@ spv.structDeref.frag
Name 99 "gl_FragColor"
Name 116 "samp2D"
Name 122 "foo2"
+ Decorate 99(gl_FragColor) Location 0
Decorate 116(samp2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structure.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structure.frag.out
index f7cb2d2a258..5672196e964 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structure.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.structure.frag.out
@@ -1,6 +1,6 @@
spv.structure.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 60
Capability Shader
@@ -24,6 +24,7 @@ spv.structure.frag
Name 50 "samp2D"
Name 54 "coord"
Name 59 "foo"
+ Decorate 45(gl_FragColor) Location 0
Decorate 50(samp2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.subpass.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.subpass.frag.out
index c2421113881..76248982cdb 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.subpass.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.subpass.frag.out
@@ -1,8 +1,6 @@
spv.subpass.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 67
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.switch.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.switch.frag.out
index 86acb6c8eea..0a35155533f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.switch.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.switch.frag.out
@@ -1,11 +1,10 @@
spv.switch.frag
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
WARNING: 0:121: 'switch' : last case/default label not followed by statements
WARNING: 0:134: 'switch' : last case/default label not followed by statements
WARNING: 0:139: 'switch' : last case/default label not followed by statements
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 269
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.swizzle.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.swizzle.frag.out
index 46978f8c60c..b194d272117 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.swizzle.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.swizzle.frag.out
@@ -1,6 +1,6 @@
spv.swizzle.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 108
Capability Shader
@@ -24,6 +24,7 @@ spv.swizzle.frag
Name 81 "c"
Name 83 "rep"
Name 107 "blend"
+ Decorate 69(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.swizzleInversion.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.swizzleInversion.frag.out
index bf0699a3cf7..dd910f7cbb5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.swizzleInversion.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.swizzleInversion.frag.out
@@ -1,8 +1,6 @@
spv.swizzleInversion.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 46
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.test.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.test.frag.out
index bf0135aebe6..e61785ce0e5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.test.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.test.frag.out
@@ -1,8 +1,6 @@
spv.test.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 55
Capability Shader
@@ -25,6 +23,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Name 49 "blend"
Decorate 16(texSampler2D) DescriptorSet 0
Decorate 33(texSampler3D) DescriptorSet 0
+ Decorate 43(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.test.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.test.vert.out
index 623d16ba679..5f3d41edd4e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.test.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.test.vert.out
@@ -2,7 +2,7 @@ spv.test.vert
WARNING: 0:5: attribute deprecated in version 130; may be removed in future release
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 24
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.frag.out
index 467f2545896..99bb381aecf 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.frag.out
@@ -4,7 +4,7 @@ WARNING: 0:11: varying deprecated in version 130; may be removed in future relea
WARNING: 0:12: varying deprecated in version 130; may be removed in future release
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 305
Capability Shader
@@ -45,6 +45,7 @@ WARNING: 0:12: varying deprecated in version 130; may be removed in future relea
Decorate 130(texSamplerCube) DescriptorSet 0
Decorate 145(shadowSampler1D) DescriptorSet 0
Decorate 164(shadowSampler2D) DescriptorSet 0
+ Decorate 291(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.sampler.transform.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.sampler.transform.frag.out
new file mode 100644
index 00000000000..6af2b4fb728
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.sampler.transform.frag.out
@@ -0,0 +1,37 @@
+spv.texture.sampler.transform.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 20
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 17
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 440
+ Name 4 "main"
+ Name 9 "color"
+ Name 13 "tex"
+ Name 17 "coord"
+ Decorate 13(tex) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(color): 8(ptr) Variable Output
+ 10: TypeImage 6(float) 2D sampled format:Unknown
+ 11: TypeSampledImage 10
+ 12: TypePointer UniformConstant 11
+ 13(tex): 12(ptr) Variable UniformConstant
+ 15: TypeVector 6(float) 2
+ 16: TypePointer Input 15(fvec2)
+ 17(coord): 16(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 14: 11 Load 13(tex)
+ 18: 15(fvec2) Load 17(coord)
+ 19: 7(fvec4) ImageSampleImplicitLod 14 18
+ Store 9(color) 19
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.vert.out
index c361549952d..c704f9fa033 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.texture.vert.out
@@ -1,6 +1,6 @@
spv.texture.vert
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 150
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.textureBuffer.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.textureBuffer.vert.out
new file mode 100644
index 00000000000..2a9432dc37f
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.textureBuffer.vert.out
@@ -0,0 +1,64 @@
+spv.textureBuffer.vert
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 42
+
+ Capability Shader
+ Capability SampledBuffer
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main"
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "tBuf"
+ Name 13 "s"
+ Name 23 "sBuf"
+ Name 32 "utBuf"
+ Name 38 "itBuf"
+ Decorate 9(tBuf) DescriptorSet 0
+ Decorate 13(s) DescriptorSet 0
+ Decorate 23(sBuf) DescriptorSet 0
+ Decorate 32(utBuf) DescriptorSet 0
+ Decorate 38(itBuf) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeImage 6(float) Buffer sampled format:Unknown
+ 8: TypePointer UniformConstant 7
+ 9(tBuf): 8(ptr) Variable UniformConstant
+ 11: TypeSampler
+ 12: TypePointer UniformConstant 11
+ 13(s): 12(ptr) Variable UniformConstant
+ 15: TypeSampledImage 7
+ 17: TypeInt 32 1
+ 18: 17(int) Constant 13
+ 20: TypeVector 6(float) 4
+ 22: TypePointer UniformConstant 15
+ 23(sBuf): 22(ptr) Variable UniformConstant
+ 29: TypeInt 32 0
+ 30: TypeImage 29(int) Buffer sampled format:Unknown
+ 31: TypePointer UniformConstant 30
+ 32(utBuf): 31(ptr) Variable UniformConstant
+ 34: TypeVector 29(int) 4
+ 36: TypeImage 17(int) Buffer sampled format:Unknown
+ 37: TypePointer UniformConstant 36
+ 38(itBuf): 37(ptr) Variable UniformConstant
+ 40: TypeVector 17(int) 4
+ 4(main): 2 Function None 3
+ 5: Label
+ 10: 7 Load 9(tBuf)
+ 14: 11 Load 13(s)
+ 16: 15 SampledImage 10 14
+ 19: 7 Image 16
+ 21: 20(fvec4) ImageFetch 19 18
+ 24: 15 Load 23(sBuf)
+ 25: 7 Image 24
+ 26: 20(fvec4) ImageFetch 25 18
+ 27: 7 Load 9(tBuf)
+ 28: 20(fvec4) ImageFetch 27 18
+ 33: 30 Load 32(utBuf)
+ 35: 34(ivec4) ImageFetch 33 18
+ 39: 36 Load 38(itBuf)
+ 41: 40(ivec4) ImageFetch 39 18
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.textureGatherBiasLod.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.textureGatherBiasLod.frag.out
new file mode 100644
index 00000000000..3a416687df1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.textureGatherBiasLod.frag.out
@@ -0,0 +1,384 @@
+spv.textureGatherBiasLod.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 298
+
+ Capability Shader
+ Capability SparseResidency
+ Capability SampledCubeArray
+ Capability ImageGatherBiasLodAMD
+ Extension "SPV_AMD_texture_gather_bias_lod"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 20 25 37 61 176 296
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_AMD_texture_gather_bias_lod"
+ SourceExtension "GL_ARB_sparse_texture2"
+ Name 4 "main"
+ Name 9 "texel"
+ Name 12 "result"
+ Name 16 "s2D"
+ Name 20 "c2"
+ Name 25 "bias"
+ Name 33 "s2DArray"
+ Name 37 "c3"
+ Name 47 "sCube"
+ Name 58 "sCubeArray"
+ Name 61 "c4"
+ Name 104 "ResType"
+ Name 176 "lod"
+ Name 296 "fragColor"
+ Decorate 16(s2D) DescriptorSet 0
+ Decorate 33(s2DArray) DescriptorSet 0
+ Decorate 47(sCube) DescriptorSet 0
+ Decorate 58(sCubeArray) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 10: 6(float) Constant 0
+ 11: 7(fvec4) ConstantComposite 10 10 10 10
+ 13: TypeImage 6(float) 2D sampled format:Unknown
+ 14: TypeSampledImage 13
+ 15: TypePointer UniformConstant 14
+ 16(s2D): 15(ptr) Variable UniformConstant
+ 18: TypeVector 6(float) 2
+ 19: TypePointer Input 18(fvec2)
+ 20(c2): 19(ptr) Variable Input
+ 22: TypeInt 32 1
+ 23: 22(int) Constant 0
+ 24: TypePointer Input 6(float)
+ 25(bias): 24(ptr) Variable Input
+ 30: TypeImage 6(float) 2D array sampled format:Unknown
+ 31: TypeSampledImage 30
+ 32: TypePointer UniformConstant 31
+ 33(s2DArray): 32(ptr) Variable UniformConstant
+ 35: TypeVector 6(float) 3
+ 36: TypePointer Input 35(fvec3)
+ 37(c3): 36(ptr) Variable Input
+ 39: 22(int) Constant 1
+ 44: TypeImage 6(float) Cube sampled format:Unknown
+ 45: TypeSampledImage 44
+ 46: TypePointer UniformConstant 45
+ 47(sCube): 46(ptr) Variable UniformConstant
+ 50: 22(int) Constant 2
+ 55: TypeImage 6(float) Cube array sampled format:Unknown
+ 56: TypeSampledImage 55
+ 57: TypePointer UniformConstant 56
+ 58(sCubeArray): 57(ptr) Variable UniformConstant
+ 60: TypePointer Input 7(fvec4)
+ 61(c4): 60(ptr) Variable Input
+ 63: 22(int) Constant 3
+ 70: TypeVector 22(int) 2
+ 71: 70(ivec2) ConstantComposite 23 23
+ 78: 70(ivec2) ConstantComposite 23 39
+ 85: TypeInt 32 0
+ 86: 85(int) Constant 4
+ 87: TypeArray 70(ivec2) 86
+ 88: 70(ivec2) ConstantComposite 39 23
+ 89: 70(ivec2) ConstantComposite 39 39
+ 90: 87 ConstantComposite 71 78 88 89
+ 104(ResType): TypeStruct 22(int) 7(fvec4)
+ 176(lod): 24(ptr) Variable Input
+ 295: TypePointer Output 7(fvec4)
+ 296(fragColor): 295(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(texel): 8(ptr) Variable Function
+ 12(result): 8(ptr) Variable Function
+ Store 9(texel) 11
+ Store 12(result) 11
+ 17: 14 Load 16(s2D)
+ 21: 18(fvec2) Load 20(c2)
+ 26: 6(float) Load 25(bias)
+ 27: 7(fvec4) ImageGather 17 21 23 Bias 26
+ 28: 7(fvec4) Load 9(texel)
+ 29: 7(fvec4) FAdd 28 27
+ Store 9(texel) 29
+ 34: 31 Load 33(s2DArray)
+ 38: 35(fvec3) Load 37(c3)
+ 40: 6(float) Load 25(bias)
+ 41: 7(fvec4) ImageGather 34 38 39 Bias 40
+ 42: 7(fvec4) Load 9(texel)
+ 43: 7(fvec4) FAdd 42 41
+ Store 9(texel) 43
+ 48: 45 Load 47(sCube)
+ 49: 35(fvec3) Load 37(c3)
+ 51: 6(float) Load 25(bias)
+ 52: 7(fvec4) ImageGather 48 49 50 Bias 51
+ 53: 7(fvec4) Load 9(texel)
+ 54: 7(fvec4) FAdd 53 52
+ Store 9(texel) 54
+ 59: 56 Load 58(sCubeArray)
+ 62: 7(fvec4) Load 61(c4)
+ 64: 6(float) Load 25(bias)
+ 65: 7(fvec4) ImageGather 59 62 63 Bias 64
+ 66: 7(fvec4) Load 9(texel)
+ 67: 7(fvec4) FAdd 66 65
+ Store 9(texel) 67
+ 68: 14 Load 16(s2D)
+ 69: 18(fvec2) Load 20(c2)
+ 72: 6(float) Load 25(bias)
+ 73: 7(fvec4) ImageGather 68 69 23 Bias ConstOffset 72 71
+ 74: 7(fvec4) Load 9(texel)
+ 75: 7(fvec4) FAdd 74 73
+ Store 9(texel) 75
+ 76: 31 Load 33(s2DArray)
+ 77: 35(fvec3) Load 37(c3)
+ 79: 6(float) Load 25(bias)
+ 80: 7(fvec4) ImageGather 76 77 39 Bias ConstOffset 79 78
+ 81: 7(fvec4) Load 9(texel)
+ 82: 7(fvec4) FAdd 81 80
+ Store 9(texel) 82
+ 83: 14 Load 16(s2D)
+ 84: 18(fvec2) Load 20(c2)
+ 91: 6(float) Load 25(bias)
+ 92: 7(fvec4) ImageGather 83 84 23 Bias ConstOffsets 91 90
+ 93: 7(fvec4) Load 9(texel)
+ 94: 7(fvec4) FAdd 93 92
+ Store 9(texel) 94
+ 95: 31 Load 33(s2DArray)
+ 96: 35(fvec3) Load 37(c3)
+ 97: 6(float) Load 25(bias)
+ 98: 7(fvec4) ImageGather 95 96 39 Bias ConstOffsets 97 90
+ 99: 7(fvec4) Load 9(texel)
+ 100: 7(fvec4) FAdd 99 98
+ Store 9(texel) 100
+ 101: 14 Load 16(s2D)
+ 102: 18(fvec2) Load 20(c2)
+ 103: 6(float) Load 25(bias)
+ 105:104(ResType) ImageSparseGather 101 102 23 Bias 103
+ 106: 7(fvec4) CompositeExtract 105 1
+ Store 12(result) 106
+ 107: 22(int) CompositeExtract 105 0
+ 108: 7(fvec4) Load 12(result)
+ 109: 7(fvec4) Load 9(texel)
+ 110: 7(fvec4) FAdd 109 108
+ Store 9(texel) 110
+ 111: 31 Load 33(s2DArray)
+ 112: 35(fvec3) Load 37(c3)
+ 113: 6(float) Load 25(bias)
+ 114:104(ResType) ImageSparseGather 111 112 39 Bias 113
+ 115: 7(fvec4) CompositeExtract 114 1
+ Store 12(result) 115
+ 116: 22(int) CompositeExtract 114 0
+ 117: 7(fvec4) Load 12(result)
+ 118: 7(fvec4) Load 9(texel)
+ 119: 7(fvec4) FAdd 118 117
+ Store 9(texel) 119
+ 120: 45 Load 47(sCube)
+ 121: 35(fvec3) Load 37(c3)
+ 122: 6(float) Load 25(bias)
+ 123:104(ResType) ImageSparseGather 120 121 50 Bias 122
+ 124: 7(fvec4) CompositeExtract 123 1
+ Store 12(result) 124
+ 125: 22(int) CompositeExtract 123 0
+ 126: 7(fvec4) Load 12(result)
+ 127: 7(fvec4) Load 9(texel)
+ 128: 7(fvec4) FAdd 127 126
+ Store 9(texel) 128
+ 129: 56 Load 58(sCubeArray)
+ 130: 7(fvec4) Load 61(c4)
+ 131: 6(float) Load 25(bias)
+ 132:104(ResType) ImageSparseGather 129 130 50 Bias 131
+ 133: 7(fvec4) CompositeExtract 132 1
+ Store 12(result) 133
+ 134: 22(int) CompositeExtract 132 0
+ 135: 7(fvec4) Load 12(result)
+ 136: 7(fvec4) Load 9(texel)
+ 137: 7(fvec4) FAdd 136 135
+ Store 9(texel) 137
+ 138: 14 Load 16(s2D)
+ 139: 18(fvec2) Load 20(c2)
+ 140: 6(float) Load 25(bias)
+ 141:104(ResType) ImageSparseGather 138 139 23 Bias ConstOffset 140 71
+ 142: 7(fvec4) CompositeExtract 141 1
+ Store 12(result) 142
+ 143: 22(int) CompositeExtract 141 0
+ 144: 7(fvec4) Load 12(result)
+ 145: 7(fvec4) Load 9(texel)
+ 146: 7(fvec4) FAdd 145 144
+ Store 9(texel) 146
+ 147: 31 Load 33(s2DArray)
+ 148: 35(fvec3) Load 37(c3)
+ 149: 6(float) Load 25(bias)
+ 150:104(ResType) ImageSparseGather 147 148 39 Bias ConstOffset 149 78
+ 151: 7(fvec4) CompositeExtract 150 1
+ Store 12(result) 151
+ 152: 22(int) CompositeExtract 150 0
+ 153: 7(fvec4) Load 12(result)
+ 154: 7(fvec4) Load 9(texel)
+ 155: 7(fvec4) FAdd 154 153
+ Store 9(texel) 155
+ 156: 14 Load 16(s2D)
+ 157: 18(fvec2) Load 20(c2)
+ 158: 6(float) Load 25(bias)
+ 159:104(ResType) ImageSparseGather 156 157 23 Bias ConstOffsets 158 90
+ 160: 7(fvec4) CompositeExtract 159 1
+ Store 12(result) 160
+ 161: 22(int) CompositeExtract 159 0
+ 162: 7(fvec4) Load 12(result)
+ 163: 7(fvec4) Load 9(texel)
+ 164: 7(fvec4) FAdd 163 162
+ Store 9(texel) 164
+ 165: 31 Load 33(s2DArray)
+ 166: 35(fvec3) Load 37(c3)
+ 167: 6(float) Load 25(bias)
+ 168:104(ResType) ImageSparseGather 165 166 39 Bias ConstOffsets 167 90
+ 169: 7(fvec4) CompositeExtract 168 1
+ Store 12(result) 169
+ 170: 22(int) CompositeExtract 168 0
+ 171: 7(fvec4) Load 12(result)
+ 172: 7(fvec4) Load 9(texel)
+ 173: 7(fvec4) FAdd 172 171
+ Store 9(texel) 173
+ 174: 14 Load 16(s2D)
+ 175: 18(fvec2) Load 20(c2)
+ 177: 6(float) Load 176(lod)
+ 178: 7(fvec4) ImageGather 174 175 23 Lod 177
+ 179: 7(fvec4) Load 9(texel)
+ 180: 7(fvec4) FAdd 179 178
+ Store 9(texel) 180
+ 181: 31 Load 33(s2DArray)
+ 182: 35(fvec3) Load 37(c3)
+ 183: 6(float) Load 176(lod)
+ 184: 7(fvec4) ImageGather 181 182 39 Lod 183
+ 185: 7(fvec4) Load 9(texel)
+ 186: 7(fvec4) FAdd 185 184
+ Store 9(texel) 186
+ 187: 45 Load 47(sCube)
+ 188: 35(fvec3) Load 37(c3)
+ 189: 6(float) Load 176(lod)
+ 190: 7(fvec4) ImageGather 187 188 50 Lod 189
+ 191: 7(fvec4) Load 9(texel)
+ 192: 7(fvec4) FAdd 191 190
+ Store 9(texel) 192
+ 193: 56 Load 58(sCubeArray)
+ 194: 7(fvec4) Load 61(c4)
+ 195: 6(float) Load 176(lod)
+ 196: 7(fvec4) ImageGather 193 194 63 Lod 195
+ 197: 7(fvec4) Load 9(texel)
+ 198: 7(fvec4) FAdd 197 196
+ Store 9(texel) 198
+ 199: 14 Load 16(s2D)
+ 200: 18(fvec2) Load 20(c2)
+ 201: 6(float) Load 176(lod)
+ 202: 7(fvec4) ImageGather 199 200 23 Lod ConstOffset 201 71
+ 203: 7(fvec4) Load 9(texel)
+ 204: 7(fvec4) FAdd 203 202
+ Store 9(texel) 204
+ 205: 31 Load 33(s2DArray)
+ 206: 35(fvec3) Load 37(c3)
+ 207: 6(float) Load 176(lod)
+ 208: 7(fvec4) ImageGather 205 206 39 Lod ConstOffset 207 78
+ 209: 7(fvec4) Load 9(texel)
+ 210: 7(fvec4) FAdd 209 208
+ Store 9(texel) 210
+ 211: 14 Load 16(s2D)
+ 212: 18(fvec2) Load 20(c2)
+ 213: 6(float) Load 176(lod)
+ 214: 7(fvec4) ImageGather 211 212 23 Lod ConstOffsets 213 90
+ 215: 7(fvec4) Load 9(texel)
+ 216: 7(fvec4) FAdd 215 214
+ Store 9(texel) 216
+ 217: 31 Load 33(s2DArray)
+ 218: 35(fvec3) Load 37(c3)
+ 219: 6(float) Load 176(lod)
+ 220: 7(fvec4) ImageGather 217 218 39 Lod ConstOffsets 219 90
+ 221: 7(fvec4) Load 9(texel)
+ 222: 7(fvec4) FAdd 221 220
+ Store 9(texel) 222
+ 223: 14 Load 16(s2D)
+ 224: 18(fvec2) Load 20(c2)
+ 225: 6(float) Load 176(lod)
+ 226:104(ResType) ImageSparseGather 223 224 23 Lod 225
+ 227: 7(fvec4) CompositeExtract 226 1
+ Store 12(result) 227
+ 228: 22(int) CompositeExtract 226 0
+ 229: 7(fvec4) Load 12(result)
+ 230: 7(fvec4) Load 9(texel)
+ 231: 7(fvec4) FAdd 230 229
+ Store 9(texel) 231
+ 232: 31 Load 33(s2DArray)
+ 233: 35(fvec3) Load 37(c3)
+ 234: 6(float) Load 176(lod)
+ 235:104(ResType) ImageSparseGather 232 233 39 Lod 234
+ 236: 7(fvec4) CompositeExtract 235 1
+ Store 12(result) 236
+ 237: 22(int) CompositeExtract 235 0
+ 238: 7(fvec4) Load 12(result)
+ 239: 7(fvec4) Load 9(texel)
+ 240: 7(fvec4) FAdd 239 238
+ Store 9(texel) 240
+ 241: 45 Load 47(sCube)
+ 242: 35(fvec3) Load 37(c3)
+ 243: 6(float) Load 176(lod)
+ 244:104(ResType) ImageSparseGather 241 242 50 Lod 243
+ 245: 7(fvec4) CompositeExtract 244 1
+ Store 12(result) 245
+ 246: 22(int) CompositeExtract 244 0
+ 247: 7(fvec4) Load 12(result)
+ 248: 7(fvec4) Load 9(texel)
+ 249: 7(fvec4) FAdd 248 247
+ Store 9(texel) 249
+ 250: 56 Load 58(sCubeArray)
+ 251: 7(fvec4) Load 61(c4)
+ 252: 6(float) Load 176(lod)
+ 253:104(ResType) ImageSparseGather 250 251 50 Lod 252
+ 254: 7(fvec4) CompositeExtract 253 1
+ Store 12(result) 254
+ 255: 22(int) CompositeExtract 253 0
+ 256: 7(fvec4) Load 12(result)
+ 257: 7(fvec4) Load 9(texel)
+ 258: 7(fvec4) FAdd 257 256
+ Store 9(texel) 258
+ 259: 14 Load 16(s2D)
+ 260: 18(fvec2) Load 20(c2)
+ 261: 6(float) Load 176(lod)
+ 262:104(ResType) ImageSparseGather 259 260 23 Lod ConstOffset 261 71
+ 263: 7(fvec4) CompositeExtract 262 1
+ Store 12(result) 263
+ 264: 22(int) CompositeExtract 262 0
+ 265: 7(fvec4) Load 12(result)
+ 266: 7(fvec4) Load 9(texel)
+ 267: 7(fvec4) FAdd 266 265
+ Store 9(texel) 267
+ 268: 31 Load 33(s2DArray)
+ 269: 35(fvec3) Load 37(c3)
+ 270: 6(float) Load 176(lod)
+ 271:104(ResType) ImageSparseGather 268 269 39 Lod ConstOffset 270 78
+ 272: 7(fvec4) CompositeExtract 271 1
+ Store 12(result) 272
+ 273: 22(int) CompositeExtract 271 0
+ 274: 7(fvec4) Load 12(result)
+ 275: 7(fvec4) Load 9(texel)
+ 276: 7(fvec4) FAdd 275 274
+ Store 9(texel) 276
+ 277: 14 Load 16(s2D)
+ 278: 18(fvec2) Load 20(c2)
+ 279: 6(float) Load 176(lod)
+ 280:104(ResType) ImageSparseGather 277 278 23 Lod ConstOffsets 279 90
+ 281: 7(fvec4) CompositeExtract 280 1
+ Store 12(result) 281
+ 282: 22(int) CompositeExtract 280 0
+ 283: 7(fvec4) Load 12(result)
+ 284: 7(fvec4) Load 9(texel)
+ 285: 7(fvec4) FAdd 284 283
+ Store 9(texel) 285
+ 286: 31 Load 33(s2DArray)
+ 287: 35(fvec3) Load 37(c3)
+ 288: 6(float) Load 176(lod)
+ 289:104(ResType) ImageSparseGather 286 287 39 Lod ConstOffsets 288 90
+ 290: 7(fvec4) CompositeExtract 289 1
+ Store 12(result) 290
+ 291: 22(int) CompositeExtract 289 0
+ 292: 7(fvec4) Load 12(result)
+ 293: 7(fvec4) Load 9(texel)
+ 294: 7(fvec4) FAdd 293 292
+ Store 9(texel) 294
+ 297: 7(fvec4) Load 9(texel)
+ Store 296(fragColor) 297
+ Return
+ FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.types.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.types.frag.out
index 9a2d8e35f94..87264868b78 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.types.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.types.frag.out
@@ -1,6 +1,6 @@
spv.types.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 260
Capability Shader
@@ -55,6 +55,7 @@ spv.types.frag
Decorate 111(i_i3) Flat
Decorate 118(u_i4) Flat
Decorate 120(i_i4) Flat
+ Decorate 160(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeBool
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.uint.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.uint.frag.out
index e9ba0ce2633..92c4ce7ba1b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.uint.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.uint.frag.out
@@ -1,8 +1,6 @@
spv.uint.frag
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 213
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.uniformArray.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.uniformArray.frag.out
index 447ad4fd4e3..87aa2f26b2f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.uniformArray.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.uniformArray.frag.out
@@ -1,6 +1,6 @@
spv.uniformArray.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 53
Capability Shader
@@ -16,6 +16,7 @@ spv.uniformArray.frag
Name 35 "alpha"
Name 47 "gl_FragColor"
Name 52 "texSampler2D"
+ Decorate 47(gl_FragColor) Location 0
Decorate 52(texSampler2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.variableArrayIndex.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.variableArrayIndex.frag.out
index b4d3fe01a4d..fa682cd928f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.variableArrayIndex.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.variableArrayIndex.frag.out
@@ -1,8 +1,6 @@
spv.variableArrayIndex.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 93
Capability Shader
@@ -38,6 +36,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Decorate 20(foo3) Flat
Decorate 34(foo2) Flat
Decorate 36(foo) Flat
+ Decorate 54(gl_FragColor) Location 0
Decorate 59(samp2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.varyingArray.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.varyingArray.frag.out
index 58833ea1b67..22748ac5aa5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.varyingArray.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.varyingArray.frag.out
@@ -1,6 +1,6 @@
spv.varyingArray.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 61
Capability Shader
@@ -18,6 +18,7 @@ spv.varyingArray.frag
Name 45 "gl_FragColor"
Name 48 "foo"
Decorate 13(texSampler2D) DescriptorSet 0
+ Decorate 45(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.varyingArrayIndirect.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.varyingArrayIndirect.frag.out
index 9c018406ab8..701f9d198d3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.varyingArrayIndirect.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.varyingArrayIndirect.frag.out
@@ -1,6 +1,6 @@
spv.varyingArrayIndirect.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 70
Capability Shader
@@ -22,6 +22,7 @@ spv.varyingArrayIndirect.frag
Decorate 13(texSampler2D) DescriptorSet 0
Decorate 22(b) Flat
Decorate 31(a) Flat
+ Decorate 56(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out
index fdfa2b88432..d62455cbd8d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out
@@ -1,58 +1,58 @@
spv.viewportArray2.tesc
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 25
+ Capability Geometry
Capability Tessellation
Capability MultiViewport
Capability ShaderViewportIndexLayerNV
Capability ShaderViewportMaskNV
+ Extension "SPV_EXT_shader_viewport_index_layer"
Extension "SPV_NV_viewport_array2"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 14 16
+ EntryPoint TessellationControl 4 "main" 14 16 22 24
ExecutionMode 4 OutputVertices 4
Source GLSL 450
SourceExtension "GL_NV_viewport_array2"
Name 4 "main"
Name 10 "gl_PerVertex"
- MemberName 10(gl_PerVertex) 0 "gl_ViewportIndex"
- MemberName 10(gl_PerVertex) 1 "gl_Layer"
- MemberName 10(gl_PerVertex) 2 "gl_ViewportMask"
+ MemberName 10(gl_PerVertex) 0 "gl_ViewportMask"
Name 14 "gl_out"
Name 16 "gl_InvocationID"
- MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportIndex
- MemberDecorate 10(gl_PerVertex) 1 BuiltIn Layer
- MemberDecorate 10(gl_PerVertex) 1 ViewportRelativeNV
- MemberDecorate 10(gl_PerVertex) 2 BuiltIn ViewportMaskNV
+ Name 22 "gl_ViewportIndex"
+ Name 24 "gl_Layer"
+ MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportMaskNV
Decorate 10(gl_PerVertex) Block
Decorate 16(gl_InvocationID) BuiltIn InvocationId
+ Decorate 22(gl_ViewportIndex) BuiltIn ViewportIndex
+ Decorate 24(gl_Layer) BuiltIn Layer
+ Decorate 24(gl_Layer) ViewportRelativeNV
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypeInt 32 0
8: 7(int) Constant 2
9: TypeArray 6(int) 8
-10(gl_PerVertex): TypeStruct 6(int) 6(int) 9
+10(gl_PerVertex): TypeStruct 9
11: 7(int) Constant 4
12: TypeArray 10(gl_PerVertex) 11
13: TypePointer Output 12
14(gl_out): 13(ptr) Variable Output
15: TypePointer Input 6(int)
16(gl_InvocationID): 15(ptr) Variable Input
- 18: 6(int) Constant 2
- 19: 6(int) Constant 0
- 20: 6(int) Constant 1
- 21: TypePointer Output 6(int)
+ 18: 6(int) Constant 0
+ 19: 6(int) Constant 1
+ 20: TypePointer Output 6(int)
+22(gl_ViewportIndex): 20(ptr) Variable Output
+ 23: 6(int) Constant 2
+ 24(gl_Layer): 20(ptr) Variable Output
4(main): 2 Function None 3
5: Label
17: 6(int) Load 16(gl_InvocationID)
- 22: 21(ptr) AccessChain 14(gl_out) 17 18 19
- Store 22 20
- 23: 6(int) Load 16(gl_InvocationID)
- 24: 21(ptr) AccessChain 14(gl_out) 23 19
- Store 24 18
+ 21: 20(ptr) AccessChain 14(gl_out) 17 18 18
+ Store 21 19
+ Store 22(gl_ViewportIndex) 23
Return
FunctionEnd
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.viewportArray2.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.viewportArray2.vert.out
index 766685f6978..b627b4680c7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.viewportArray2.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.viewportArray2.vert.out
@@ -1,8 +1,6 @@
spv.viewportArray2.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 19
Capability Shader
@@ -10,6 +8,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Capability MultiViewport
Capability ShaderViewportIndexLayerNV
Capability ShaderViewportMaskNV
+ Extension "SPV_EXT_shader_viewport_index_layer"
Extension "SPV_NV_viewport_array2"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.voidFunction.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.voidFunction.frag.out
index 44348616e80..1fbd69f9209 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.voidFunction.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.voidFunction.frag.out
@@ -1,8 +1,6 @@
spv.voidFunction.frag
-Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 43
Capability Shader
@@ -20,6 +18,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Name 37 "gl_FragColor"
Name 40 "BaseColor"
Name 42 "d"
+ Decorate 37(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
10: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.while-continue-break.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.while-continue-break.vert.out
index 73dc35ced38..1d343ed2627 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.while-continue-break.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.while-continue-break.vert.out
@@ -1,8 +1,6 @@
spv.while-continue-break.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 41
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.while-simple.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.while-simple.vert.out
index 82121dd00c0..d956c6c3f41 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.while-simple.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.while-simple.vert.out
@@ -1,8 +1,6 @@
spv.while-simple.vert
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 22
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.whileLoop.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.whileLoop.frag.out
index ce1e195d0dc..e58fb043c80 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.whileLoop.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/spv.whileLoop.frag.out
@@ -1,6 +1,6 @@
spv.whileLoop.frag
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 35
Capability Shader
@@ -15,6 +15,7 @@ spv.whileLoop.frag
Name 24 "d"
Name 28 "bigColor"
Name 33 "gl_FragColor"
+ Decorate 33(gl_FragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/syntaxError.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/syntaxError.frag.out
index cdda760f78d..b6ebea3ea41 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/syntaxError.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/syntaxError.frag.out
@@ -1,6 +1,6 @@
syntaxError.frag
ERROR: 0:9: 'vec5' : undeclared identifier
-ERROR: 0:9: '' : syntax error
+ERROR: 0:9: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON
ERROR: 2 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out
index e544d9ee330..b5ba9a5f878 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out
@@ -1,5 +1,4 @@
tokenPaste.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:38: '##' : unexpected location
ERROR: 0:40: '##' : unexpected location; end of replacement list
ERROR: 0:49: '##' : combined tokens are too long
@@ -8,7 +7,8 @@ ERROR: 0:69: '##' : combined token is invalid
ERROR: 0:82: 'macro expansion' : Too few args in Macro rec
ERROR: 0:82: '##' : unexpected location
ERROR: 0:82: '##' : unexpected location
-ERROR: 8 compilation errors. No code generated.
+ERROR: 0:86: '##' : unexpected location; end of argument
+ERROR: 9 compilation errors. No code generated.
Shader version: 450
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/versionsClean.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/versionsClean.vert.out
index cd9da127b6b..eb2e07b36fb 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/versionsClean.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/versionsClean.vert.out
@@ -1,6 +1,4 @@
versionsClean.vert
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
-
Shader version: 420
0:? Sequence
0:40 Function Definition: main( ( global void)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/versionsErrors.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/versionsErrors.vert.out
index 0d371365c40..f11e0114f67 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/versionsErrors.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/versionsErrors.vert.out
@@ -1,5 +1,4 @@
versionsErrors.vert
-Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
WARNING: 0:38: attribute deprecated in version 130; may be removed in future release
ERROR: 0:38: 'attribute' : no longer supported in core profile; removed in version 420
ERROR: 0:45: 'discard' : not supported in this stage: vertex
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.ast.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.ast.vert.out
index bfc38c0355a..0712e07106b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.ast.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.ast.vert.out
@@ -1,6 +1,4 @@
vulkan.ast.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
-
Shader version: 450
0:? Sequence
0:7 Function Definition: main( ( global void)
@@ -260,7 +258,7 @@ Shader version: 450
0:? 2 (const int)
// Module Version 10000
-// Generated by (magic number): 80001
+// Generated by (magic number): 80002
// Id's are bound by 50
Capability Shader
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.comp.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.comp.out
index 5eb4c5b484e..e56dca48e90 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.comp.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.comp.out
@@ -1,5 +1,4 @@
vulkan.comp
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:5: 'local_size' : cannot change previously set size
ERROR: 1 compilation errors. No code generated.
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.frag.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.frag.out
index 27edff9b829..0440cf494d3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.frag.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.frag.out
@@ -1,5 +1,4 @@
vulkan.frag
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:14: 'sampler2D' : sampler-constructor requires two arguments
ERROR: 0:15: 'sampler2D' : sampler-constructor first argument must be a scalar textureXXX type
ERROR: 0:16: 'sampler2D' : sampler-constructor first argument must be a scalar textureXXX type
@@ -26,9 +25,9 @@ ERROR: 0:60: 'subpassLoadMS' : no matching overloaded function found
ERROR: 0:61: 'subpassLoad' : no matching overloaded function found
ERROR: 0:63: 'subpassLoadMS' : no matching overloaded function found
ERROR: 0:66: 'subroutine' : not allowed when generating SPIR-V
-ERROR: 0:66: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
+ERROR: 0:66: 'subroutine' : feature not yet implemented
ERROR: 0:67: 'subroutine' : not allowed when generating SPIR-V
-ERROR: 0:67: 'uniform' : no qualifiers allowed for function return
+ERROR: 0:67: 'subroutine' : feature not yet implemented
ERROR: 0:69: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
ERROR: 0:73: 'texture' : no matching overloaded function found
ERROR: 0:74: 'imageStore' : no matching overloaded function found
@@ -40,7 +39,11 @@ ERROR: 0:93: ',' : sampler constructor must appear at point of use
ERROR: 0:94: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion)
ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use
ERROR: 0:96: 'gl_NumSamples' : undeclared identifier
-ERROR: 38 compilation errors. No code generated.
+ERROR: 0:101: 'noise1' : no matching overloaded function found
+ERROR: 0:102: 'noise2' : no matching overloaded function found
+ERROR: 0:103: 'noise3' : no matching overloaded function found
+ERROR: 0:104: 'noise4' : no matching overloaded function found
+ERROR: 42 compilation errors. No code generated.
ERROR: Linking fragment stage: Only one push_constant block is allowed per stage
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.vert.out b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.vert.out
index 1e7441721cb..0b2ea5309c5 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.vert.out
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/baseResults/vulkan.vert.out
@@ -1,5 +1,4 @@
vulkan.vert
-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:3: 'subpass input' : not supported in this stage: vertex
ERROR: 0:4: 'subpass input' : not supported in this stage: vertex
ERROR: 0:5: 'subpass input' : not supported in this stage: vertex
@@ -23,7 +22,11 @@ ERROR: 0:32: 'initializer' : can't use with types containing arrays sized with a
ERROR: 0:34: '=' : can't use with types containing arrays sized with a specialization constant
ERROR: 0:35: '==' : can't use with types containing arrays sized with a specialization constant
ERROR: 0:39: 'set' : cannot be used with push_constant
-ERROR: 23 compilation errors. No code generated.
+ERROR: 0:49: '[]' : only outermost dimension of an array of arrays can be a specialization constant
+ERROR: 0:50: '[]' : only outermost dimension of an array of arrays can be a specialization constant
+ERROR: 0:51: '[]' : only outermost dimension of an array of arrays can be a specialization constant
+ERROR: 0:54: '[]' : only outermost dimension of an array of arrays can be a specialization constant
+ERROR: 27 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/constFoldIntMin.frag b/3rdparty/bgfx/3rdparty/glslang/Test/constFoldIntMin.frag
new file mode 100644
index 00000000000..68618326cbc
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/constFoldIntMin.frag
@@ -0,0 +1,12 @@
+#version 460 core
+#extension GL_AMD_gpu_shader_int16 : enable
+#extension GL_ARB_gpu_shader_int64 : enable
+
+void a(){
+ int16_t u = -32768S / -1S; // SHRT_MIN
+ int v = -2147483648 / -1; // INT_MIN
+ int64_t w = -9223372036854775808L / -1L; // LLONG_MIN
+ int16_t x = -32768S % -1S; // SHRT_MIN
+ int y = -2147483648 % -1; // INT_MIN
+ int64_t z = -9223372036854775808L % -1L; // LLONG_MIN
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/cppDeepNest.frag b/3rdparty/bgfx/3rdparty/glslang/Test/cppDeepNest.frag
new file mode 100644
index 00000000000..51c436e4f95
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/cppDeepNest.frag
@@ -0,0 +1,117 @@
+#ifdef O
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#if
+#endif
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/cppIntMinOverNegativeOne.frag b/3rdparty/bgfx/3rdparty/glslang/Test/cppIntMinOverNegativeOne.frag
new file mode 100644
index 00000000000..b7e0a95364f
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/cppIntMinOverNegativeOne.frag
@@ -0,0 +1,6 @@
+#if (-2147483648 / -1) != 0
+#error INT_MIN / -1 should yield 0, something went wrong.
+#endif
+#if (-2147483648 % -1) != 0
+#error INT_MIN % -1 should yield 0, something went wrong.
+#endif \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/cppPassMacroName.frag b/3rdparty/bgfx/3rdparty/glslang/Test/cppPassMacroName.frag
new file mode 100644
index 00000000000..f42d9de6d5b
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/cppPassMacroName.frag
@@ -0,0 +1,12 @@
+#define f1(i) ((i)*(i))
+#define I2(f, n) f(n) + f(n+1)
+#define I3(f, n) I2(f, n) + f(n+2)
+
+void main()
+{
+ int f1 = 4;
+ int f2 = f1;
+ int f3 = f1(3);
+ int f4 = I2(f1, 0);
+ int f5 = I3(f1, 0);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/cppSimple.vert b/3rdparty/bgfx/3rdparty/glslang/Test/cppSimple.vert
index 198203a69d7..fdd14221b63 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/cppSimple.vert
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/cppSimple.vert
@@ -337,6 +337,16 @@ int aoeua = FOOOM;
#error \ 376
#error \377
+// ERROR for macro expansion to yield 'defined'
+#line 9600
+#define DEF_MAC
+#define DEF_DEFINED defined
+#if DEF_DEFINED DEF_MAC
+#error DEF_DEFINED then
+#else
+#error DEF_DEFINED else
+#endif
+
#line 10000
#if 1
#else
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/foo.h b/3rdparty/bgfx/3rdparty/glslang/Test/foo.h
new file mode 100644
index 00000000000..7f79340b6d1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/foo.h
@@ -0,0 +1 @@
+#error should not be included \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/glsl.-D-U.frag b/3rdparty/bgfx/3rdparty/glslang/Test/glsl.-D-U.frag
new file mode 100644
index 00000000000..4d2325f1daa
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/glsl.-D-U.frag
@@ -0,0 +1,32 @@
+#version 450
+
+#define IN_SHADER
+
+layout(location=0) out vec4 color;
+
+void main()
+{
+#if FOO==200
+ color = vec4(1.0);
+#else
+ #error expected FOO 200
+#endif
+
+#ifdef IN_SHADER
+ color++;
+#else
+ #error IN_SHADER was undef
+#endif
+
+#ifdef UNDEFED
+ #error UNDEFED defined
+#else
+ color *= 3.0;
+#endif
+
+#if MUL == 400
+ color *= MUL;
+#else
+ #error bad MUL
+#endif
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/glsl.entryPointRename.vert b/3rdparty/bgfx/3rdparty/glslang/Test/glsl.entryPointRename.vert
new file mode 100644
index 00000000000..7fc6b7a1bd5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/glsl.entryPointRename.vert
@@ -0,0 +1,11 @@
+#version 460
+
+void bar()
+{
+ gl_Position = vec4(1);
+}
+
+void main()
+{
+ gl_Position = vec4(1);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/glsl.entryPointRename2.vert b/3rdparty/bgfx/3rdparty/glslang/Test/glsl.entryPointRename2.vert
new file mode 100644
index 00000000000..0473e9bc4c5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/glsl.entryPointRename2.vert
@@ -0,0 +1,6 @@
+#version 460
+
+void bar()
+{
+ gl_Position = vec4(1);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/glspv.frag b/3rdparty/bgfx/3rdparty/glslang/Test/glspv.frag
index cea8e135b25..86c9f6aba64 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/glspv.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/glspv.frag
@@ -1,4 +1,4 @@
-#version 330
+#version 450
#ifdef GL_SPIRV
#error GL_SPIRV is set ( correct, not an error )
@@ -11,4 +11,17 @@ void main()
{
}
+uniform float f; // ERROR, no location
+layout(location = 2) uniform float g;
+uniform sampler2D s1;
+layout(location = 3) uniform sampler2D s2;
+
+void noise()
+{
+ noise1(vec4(1));
+ noise2(4.0);
+ noise3(vec2(3));
+ noise4(1);
+}
+
layout(input_attachment_index = 1) uniform subpassInput sub; // ERROR, no inputs
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.-D-U.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.-D-U.frag
new file mode 100644
index 00000000000..0a022220813
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.-D-U.frag
@@ -0,0 +1,31 @@
+
+#define IN_SHADER
+
+static float4 color;
+
+void main()
+{
+#if FOO==200
+ color = 1.0;
+#else
+ #error expected FOO 200
+#endif
+
+#ifdef FOO
+ color -= 5.0;
+#else
+ #error expected FOO 200
+#endif
+
+#ifdef IN_SHADER
+ color++;
+#else
+ #error IN_SHADER was undef
+#endif
+
+#ifdef UNDEFED
+ #error UNDEFED defined
+#else
+ color *= 3.0;
+#endif
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.aliasOpaque.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.aliasOpaque.frag
new file mode 100644
index 00000000000..8b1cceff91f
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.aliasOpaque.frag
@@ -0,0 +1,29 @@
+struct OS {
+ SamplerState ss;
+ float a;
+ Texture2D tex;
+};
+
+SamplerState gss;
+SamplerState gss2;
+Texture2D gtex;
+
+float4 osCall(OS s)
+{
+ return s.a * s.tex.Sample(s.ss, float2(0.2, 0.3));
+}
+
+float4 main() : SV_TARGET0
+{
+ OS os;
+ os.ss = gss2;
+ os.ss = gss;
+ os.tex = gtex;
+ os.a = 3.0;
+
+ // this should give an error
+ //SamplerState localss;
+ //localss = gss2;
+
+ return osCall(os);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.array.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.array.frag
index 1abba89fce1..ff0004fd83d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.array.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.array.frag
@@ -4,8 +4,15 @@ struct {
float4 m[7];
} s[11];
-float4 PixelShaderFunction(int i, float4 input[3]) : COLOR0
+static float4 C = float4(1,2,3,4);
+float4 a1[1] = { float4(1,2,3,4) };
+float4 a2[2] = { float4(1,2,3,4), float4(5,2,3,4), };
+const float4 c1[1] = { float4(1,2,3,4) };
+static const float4 c2[2] = { C, float4(1,2,3,4), };
+
+float4 PixelShaderFunction(int i : sem1, float4 input[3] : sem2) : SV_TARGET0
{
- float4 b[10];
- return a[1] + a[i] + input[2] + input[i] + b[5] + b[i] + s[i].m[i];
-} \ No newline at end of file
+ float4 b[10] = { C, C, C, C, C, C, C, C, C, C };
+ float4 tmp = C + a1[0] + c1[0] + a2[i] + c2[i];
+ return a[1] + a[i] + input[2] + input[i] + b[5] + b[i] + s[i].m[i] + tmp;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.attributeC11.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.attributeC11.frag
new file mode 100644
index 00000000000..4fe663a2a4f
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.attributeC11.frag
@@ -0,0 +1,18 @@
+struct S {
+ float2 f;
+};
+
+[[vk::binding(1)]]
+StructuredBuffer<S> buffer1;
+
+[[vk::binding(3, 2)]]
+StructuredBuffer<S> buffer3;
+
+[[vk::input_attachment_index(4)]]
+Texture2D<float4> attach;
+
+[[vk::location(7)]] float4
+main([[vk::location(8)]] float4 input: A) : B
+{
+ return input + attach.Load(float2(0.5));
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.attributeGlobalBuffer.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.attributeGlobalBuffer.frag
new file mode 100644
index 00000000000..a1177dab232
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.attributeGlobalBuffer.frag
@@ -0,0 +1,8 @@
+[[vk::global_cbuffer_binding(5, 2)]]
+float4 u1;
+float4 u2;
+
+float4 main() : SV_Target0
+{
+ return u1 + u2;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.automap.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.automap.frag
new file mode 100644
index 00000000000..da1e885fce5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.automap.frag
@@ -0,0 +1,57 @@
+// Test register class offsets for different resource types
+
+SamplerState s1 : register(s1);
+SamplerComparisonState s2 : register(s2);
+
+Texture1D <float4> t1 : register(t1);
+Texture2D <float4> t2 : register(t2);
+Texture3D <float4> t3 : register(t3);
+StructuredBuffer<float4> t4 : register(t4);
+ByteAddressBuffer t5 : register(t5);
+Buffer<float4> t6 : register(t6);
+
+RWTexture1D <float4> u1 : register(u1);
+RWTexture2D <float4> u2 : register(u2);
+RWTexture3D <float4> u3 : register(u3);
+
+RWBuffer <float> u4 : register(u4);
+RWByteAddressBuffer u5 : register(u5);
+RWStructuredBuffer<float> u6 : register(u6);
+AppendStructuredBuffer<float> u7 : register(u7);
+ConsumeStructuredBuffer<float> u8 : register(u8);
+
+cbuffer cb : register(b1) {
+ int cb1;
+};
+
+tbuffer tb : register(t7) {
+ int tb1;
+};
+
+float4 main() : SV_Target0
+{
+ t1;
+ t2;
+ t3;
+ t4[0];
+ t5.Load(0);
+ t6;
+
+ s1;
+ s2;
+
+ u1;
+ u2;
+ u3;
+
+ u4[0];
+ u5.Load(0);
+ u6[0];
+ u7;
+ u8;
+
+ cb1;
+ tb1;
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.boolConv.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.boolConv.vert
new file mode 100644
index 00000000000..7efe20b0ae5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.boolConv.vert
@@ -0,0 +1,20 @@
+static bool a, b = true;
+float4 main() : SV_Position
+{
+ int r = 0;
+
+ r += a + b;
+ r += a - b;
+ r += a * b;
+ r += a / b;
+ r += a % b;
+
+ r += a & b;
+ r += a | b;
+ r += a ^ b;
+
+ r += a << b;
+ r += a >> b;
+
+ return r;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.buffer.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.buffer.frag
index b93dcd3124c..520de09e855 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.buffer.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.buffer.frag
@@ -1,17 +1,17 @@
-cbuffer {
+cbuffer buf1 {
float4 v1;
-};
+}; // extraneous ;
-tbuffer {
+tbuffer buf2 {
float4 v2;
-};
+}; // extraneous ;
-cbuffer cbufName : register(b2, space10) {
- float4 v3;
- int i3 : packoffset(c1.y);
-};
+cbuffer cbufName {
+ float4 v3 : packoffset(c0);
+ int i3 : packoffset(c1.y);
+}
-tbuffer tbufName : register(b8) {
+tbuffer tbufName : register(t8) {
float4 v4 : packoffset(c1);
int i4 : packoffset(c3);
float f1 : packoffset(c3.w);
@@ -19,14 +19,19 @@ tbuffer tbufName : register(b8) {
float f4 : packoffset(c4.y);
float f5 : packoffset(c4.z);
float f6 : packoffset(c);
- float f7;
- float3x4 m1;
- row_major float3x4 m2;
- column_major float3x4 m3;
- float3x4 m4;
-};
+ float f7 : packoffset(c8);
+ float3x4 m1 : packoffset(c7);
+ row_major float3x4 m2 : packoffset(c11);
+ column_major float3x4 m3 : packoffset(c15);
+ float3x4 m4 : packoffset(c19);
+}
+
+float foo() // float looks like identifier, but can't be part of tbuffer
+{
+ return 1.0;
+}
-float4 PixelShaderFunction(float4 input) : COLOR0
+float4 PixelShaderFunction(float4 input : SV_POSITION) : SV_TARGET0
{
- return input + v1 + v2 + v3 + v4;
+ return (input + v1 + v2 + v3 + v4) * foo();
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.charLit.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.charLit.vert
new file mode 100644
index 00000000000..36c4a1e5e00
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.charLit.vert
@@ -0,0 +1,17 @@
+float4 main() : SV_Position
+{
+ uint a1 = 'A';
+ int a2 = '0';
+
+ int a3 = '\a';
+ a3 += '\b';
+ a3 += '\t';
+ a3 += '\n';
+ a3 += '\v';
+ a3 += '\f';
+ a3 += '\r';
+
+ int a10 = '\c';
+
+ return a1 + a2 + a3 + a10;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clip.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clip.frag
new file mode 100644
index 00000000000..a44c9e95036
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clip.frag
@@ -0,0 +1,12 @@
+
+float GetEntitySelectClip()
+{
+ return 1.0f;
+}
+
+float4 main() : SV_TARGET
+{
+ clip(GetEntitySelectClip());
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.frag
new file mode 100644
index 00000000000..10813b30baa
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.frag
@@ -0,0 +1,6 @@
+float4 main(in float4 pos : SV_Position,
+ in float clip : SV_ClipDistance,
+ in float cull : SV_CullDistance) : SV_Target0
+{
+ return pos + clip + cull;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.geom b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.geom
new file mode 100644
index 00000000000..76c34b35518
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.geom
@@ -0,0 +1,19 @@
+struct S {
+ float4 pos : SV_Position;
+ float2 clip : SV_ClipDistance0;
+};
+
+[maxvertexcount(3)]
+void main(triangle in float4 pos[3] : SV_Position,
+ triangle in uint VertexID[3] : VertexID,
+ inout LineStream<S> OutputStream,
+ triangle in float4 clip[3] : SV_ClipDistance) // externally: an array 3 of array 4 (not vec4!) of float.
+{
+ S s;
+
+ s.pos = pos[0];
+ s.clip = clip[0].xy;
+
+ OutputStream.Append(s);
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.vert
new file mode 100644
index 00000000000..bcebafc3339
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-1.vert
@@ -0,0 +1,8 @@
+void main(out float4 pos : SV_Position,
+ out float clip : SV_ClipDistance, // scalar float
+ out float cull : SV_CullDistance) // scalar float
+{
+ pos = 1.0f.xxxx;
+ clip = 0.5f;
+ cull = 0.51f;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.frag
new file mode 100644
index 00000000000..b6f88d567a9
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.frag
@@ -0,0 +1,7 @@
+float4 main(in float4 pos : SV_Position,
+ in float2 clip[2] : SV_ClipDistance, // array of vector float
+ in float2 cull[2] : SV_CullDistance) : SV_Target0 // array of vector float
+{
+
+ return pos + clip[0][0] + cull[0][0];
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.geom b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.geom
new file mode 100644
index 00000000000..90f047feb7e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.geom
@@ -0,0 +1,19 @@
+struct S {
+ float4 pos : SV_Position;
+ float2 clip[2] : SV_ClipDistance0;
+};
+
+[maxvertexcount(3)]
+void main(triangle in float4 pos[3] : SV_Position,
+ triangle in uint VertexID[3] : VertexID,
+ inout LineStream<S> OutputStream,
+ triangle in float2 clip[3][2] : SV_ClipDistance) // externally: an array 3 of array 4 of float.
+{
+ S s;
+
+ s.pos = pos[0];
+ s.clip[0] = clip[0][0];
+ s.clip[1] = clip[0][1];
+
+ OutputStream.Append(s);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.vert
new file mode 100644
index 00000000000..bf8c0ee029e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-2.vert
@@ -0,0 +1,15 @@
+void main(out float4 pos : SV_Position,
+ out float2 clip[2] : SV_ClipDistance, // array of vector float
+ out float2 cull[2] : SV_CullDistance) // array of vector float
+{
+ pos = 1.0f.xxxx;
+ clip[0].x = 0.5f;
+ clip[0].y = 0.6f;
+ clip[1].x = 0.7f;
+ clip[1].y = 0.8f;
+
+ cull[0].x = 0.525f;
+ cull[0].y = 0.625f;
+ cull[1].x = 0.725f;
+ cull[1].y = 0.825f;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.frag
new file mode 100644
index 00000000000..e2b6b8627e7
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.frag
@@ -0,0 +1,6 @@
+float4 main(in float4 pos : SV_Position,
+ in float clip[2] : SV_ClipDistance, // array of scalar float
+ in float cull[2] : SV_CullDistance) : SV_Target0 // array of scalar float
+{
+ return pos + clip[0] + cull[0];
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.geom b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.geom
new file mode 100644
index 00000000000..2aa4cd46d41
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.geom
@@ -0,0 +1,20 @@
+struct S {
+ float4 pos : SV_Position;
+ float2 clip0 : SV_ClipDistance0; // clip0 and clip1 form an array of float[4] externally.
+ float2 clip1 : SV_ClipDistance1;
+};
+
+[maxvertexcount(3)]
+void main(triangle in float4 pos[3] : SV_Position,
+ triangle in uint VertexID[3] : VertexID,
+ inout LineStream<S> OutputStream,
+ triangle in float4 clip[3] : SV_ClipDistance) // externally: an array 3 of array 4 (not vec4!) of float.
+{
+ S s;
+
+ s.pos = pos[0];
+ s.clip0 = clip[0].xy;
+ s.clip1 = clip[0].zw;
+
+ OutputStream.Append(s);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.vert
new file mode 100644
index 00000000000..a759a9ccf46
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-3.vert
@@ -0,0 +1,13 @@
+void main(out float4 pos : SV_Position,
+ out float clip[2] : SV_ClipDistance, // array of scalar float
+ out float cull[2] : SV_CullDistance) // array of scalar float
+{
+ pos = 1.0f.xxxx;
+ clip[0] = 0.5f;
+ clip[1] = 0.6f;
+
+ cull[0] = 0.525f;
+ cull[1] = 0.625f;
+}
+
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.frag
new file mode 100644
index 00000000000..61441604ae6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.frag
@@ -0,0 +1,9 @@
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+ float4 ClipRect : SV_ClipDistance0; // vector in split struct
+};
+
+float4 main(const VS_OUTPUT v) : SV_Target0
+{
+ return v.Position + v.ClipRect;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.geom b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.geom
new file mode 100644
index 00000000000..ff296a88ce3
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.geom
@@ -0,0 +1,21 @@
+struct S {
+ float4 pos : SV_Position;
+ float2 clip0 : SV_ClipDistance0; // clip0 and clip1 form an array of float[4] externally.
+ float2 clip1 : SV_ClipDistance1;
+};
+
+[maxvertexcount(3)]
+void main(triangle in float4 pos[3] : SV_Position,
+ triangle in uint VertexID[3] : VertexID,
+ inout LineStream<S> OutputStream,
+ triangle in float2 clip0[3] : SV_ClipDistance0, // test input arrayed semantic vars
+ triangle in float2 clip1[3] : SV_ClipDistance1)
+{
+ S s;
+
+ s.pos = pos[0];
+ s.clip0 = clip0[0];
+ s.clip1 = clip1[0];
+
+ OutputStream.Append(s);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.vert
new file mode 100644
index 00000000000..5e0d082f147
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-4.vert
@@ -0,0 +1,21 @@
+struct VS_INPUT {
+ float4 Position : POSITION;
+};
+
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+ float4 ClipRect : SV_ClipDistance0; // vector in split struct
+};
+
+VS_OUTPUT main(const VS_INPUT v)
+{
+ VS_OUTPUT Output;
+ Output.Position = 0;
+
+ Output.ClipRect.x = 1;
+ Output.ClipRect.y = 2;
+ Output.ClipRect.z = 3;
+ Output.ClipRect.w = 4;
+
+ return Output;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-5.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-5.frag
new file mode 100644
index 00000000000..472299948d2
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-5.frag
@@ -0,0 +1,9 @@
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+ float2 ClipRect[2] : SV_ClipDistance0; // array of float2 in split struct
+};
+
+float4 main(const VS_OUTPUT v) : SV_Target0
+{
+ return v.Position + v.ClipRect[0].x + v.ClipRect[1].x;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-5.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-5.vert
new file mode 100644
index 00000000000..02fb86270d6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-5.vert
@@ -0,0 +1,21 @@
+struct VS_INPUT {
+ float4 Position : POSITION;
+};
+
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+ float2 ClipRect[2] : SV_ClipDistance0; // array of float2 in split struct
+};
+
+VS_OUTPUT main(const VS_INPUT v)
+{
+ VS_OUTPUT Output;
+ Output.Position = 0;
+
+ Output.ClipRect[0].x = 1;
+ Output.ClipRect[0].y = 2;
+ Output.ClipRect[1].x = 3;
+ Output.ClipRect[1].y = 4;
+
+ return Output;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-6.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-6.frag
new file mode 100644
index 00000000000..646197be7e1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-6.frag
@@ -0,0 +1,10 @@
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+ float4 clip0 : SV_ClipDistance0; // multiple semantic IDs, two vec4s (no extra packing)
+ float4 clip1 : SV_ClipDistance1; // ...
+};
+
+float4 main(VS_OUTPUT v) : SV_Target0
+{
+ return v.Position + v.clip0 + v.clip1;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-6.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-6.vert
new file mode 100644
index 00000000000..d68c2254cc9
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-6.vert
@@ -0,0 +1,23 @@
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+ float4 clip0 : SV_ClipDistance0; // multiple semantic IDs, two vec4s (no extra packing)
+ float4 clip1 : SV_ClipDistance1; // ...
+};
+
+VS_OUTPUT main()
+{
+ VS_OUTPUT Output;
+ Output.Position = 0;
+
+ Output.clip0.x = 0;
+ Output.clip0.y = 1;
+ Output.clip0.z = 2;
+ Output.clip0.w = 3;
+
+ Output.clip1.x = 4;
+ Output.clip1.y = 5;
+ Output.clip1.z = 6;
+ Output.clip1.w = 7;
+
+ return Output;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-7.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-7.frag
new file mode 100644
index 00000000000..1a26df8a4ff
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-7.frag
@@ -0,0 +1,10 @@
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+ float3 clip0 : SV_ClipDistance0; // multiple semantic IDs, vec3+vec4 (skip)
+ float4 clip1 : SV_ClipDistance1; // ...
+};
+
+float4 main(VS_OUTPUT v) : SV_Target0
+{
+ return v.Position + v.clip0.x + v.clip1.x;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-7.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-7.vert
new file mode 100644
index 00000000000..c615d1f8c99
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-7.vert
@@ -0,0 +1,23 @@
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+ float3 clip0 : SV_ClipDistance0; // multiple semantic IDs, vec3+vec4 (skip)
+ float4 clip1 : SV_ClipDistance1; // ...
+};
+
+VS_OUTPUT main()
+{
+ VS_OUTPUT Output;
+ Output.Position = 0;
+
+ Output.clip0.x = 0;
+ Output.clip0.y = 1;
+ Output.clip0.z = 2;
+ // Position 3 is skipped
+
+ Output.clip1.x = 4;
+ Output.clip1.y = 5;
+ Output.clip1.z = 6;
+ Output.clip1.w = 7;
+
+ return Output;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-8.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-8.frag
new file mode 100644
index 00000000000..2edf1948f1e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-8.frag
@@ -0,0 +1,10 @@
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+ float3 clip0 : SV_ClipDistance0; // multiple semantic IDs, vec3+float (pack)
+ float clip1 : SV_ClipDistance1; // ...
+};
+
+float4 main(VS_OUTPUT v) : SV_Target0
+{
+ return v.Position + v.clip0.x + v.clip1;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-8.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-8.vert
new file mode 100644
index 00000000000..c6377d2ddd3
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-8.vert
@@ -0,0 +1,20 @@
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+ float3 clip0 : SV_ClipDistance0; // multiple semantic IDs, vec3+float (pack)
+ float clip1 : SV_ClipDistance1; // ...
+};
+
+VS_OUTPUT main()
+{
+ VS_OUTPUT Output;
+ Output.Position = 0;
+
+ Output.clip0.x = 0;
+ Output.clip0.y = 1;
+ Output.clip0.z = 2;
+
+ // Position 3 is packed from clip1's float
+ Output.clip1 = 3;
+
+ return Output;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-9.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-9.frag
new file mode 100644
index 00000000000..cbe940af36a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-9.frag
@@ -0,0 +1,8 @@
+
+// Test packing 0 and 1 semantics into single array[4], from in fn params.
+float4 main(in float4 Position : SV_Position,
+ in float3 clip0 : SV_ClipDistance0,
+ in float clip1 : SV_ClipDistance1) : SV_Target0
+{
+ return Position + clip0.x + clip1;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-9.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-9.vert
new file mode 100644
index 00000000000..d48830703b3
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.clipdistance-9.vert
@@ -0,0 +1,19 @@
+struct VS_OUTPUT {
+ float4 Position : SV_Position;
+};
+
+// Test packing 0 and 1 semantics into single array[4] output, from out fn params.
+VS_OUTPUT main(out float3 clip0 : SV_ClipDistance0, out float clip1 : SV_ClipDistance1)
+{
+ VS_OUTPUT Output;
+ Output.Position = 0;
+
+ clip0.x = 0;
+ clip0.y = 1;
+ clip0.z = 2;
+
+ // Position 3 is packed from clip1's float
+ clip1 = 3;
+
+ return Output;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.conditional.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.conditional.frag
index 128c5931a69..91f75eec7fd 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.conditional.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.conditional.frag
@@ -1,3 +1,28 @@
+float4 c4;
+float4 t4;
+float4 f4;
+float t;
+float f;
+
+float4 vectorCond()
+{
+ return (c4 ? t4 : f4) +
+ (c4 ? t : f ) +
+ (t4 < f4 ? t4 : f4) +
+ (c4 ? t : f4);
+}
+
+float4 scalarCond()
+{
+ float4 ret = t != f ? t * f4 : 1;
+ return ret;
+}
+
+float2 fbSelect(bool2 cnd, float2 src0, float2 src1)
+{
+ return cnd ? src0 : src1;
+}
+
float4 PixelShaderFunction(float4 input) : COLOR0
{
int a = 1 < 2 ? 3 < 4 ? 5 : 6 : 7;
@@ -12,5 +37,6 @@ float4 PixelShaderFunction(float4 input) : COLOR0
e = a = b ? c = d : 10, b = a ? d = c : 11;
float4 f;
f = ret.x < input.y ? c * input : d * input;
- return e * ret + f;
+ return e * ret + f + vectorCond() + scalarCond() +
+ float4(fbSelect(bool2(true, false), float2(1.0, 2.0), float2(3.0, 4.0)), 10.0, 10.0);
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constantbuffer.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constantbuffer.frag
new file mode 100644
index 00000000000..c2b3a00ca99
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constantbuffer.frag
@@ -0,0 +1,26 @@
+
+struct c1_t {
+ float4 x;
+};
+
+struct c2_t {
+ bool x;
+ float y;
+};
+
+ConstantBuffer<c1_t> cb1 : register(b12);
+ConstantBuffer<c2_t> cb2[3];
+ConstantBuffer<c2_t> cb3[2][4];
+
+cbuffer cbuff {
+ int c1;
+};
+
+float4 main() : SV_Target0
+{
+ if (cb3[1][2].x)
+ return cb1.x + cb2[1].y + c1;
+ else
+ return cb3[1][3].y;
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constructArray.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constructArray.vert
new file mode 100644
index 00000000000..52c4b6f0c92
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constructArray.vert
@@ -0,0 +1,10 @@
+float4 main() : SV_POSITION
+{
+ int4 int4_array[3];
+ float4 float4_array_times[2] = (float4[2])int4_array;
+ float2 float2_array_times2[4] = (float2[4])int4_array;
+ int4 int4_array2[2] = (int4[2])int4_array;
+ int int1_array[2] = (int[2])int4_array;
+
+ return (float4)0.0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constructimat.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constructimat.frag
new file mode 100644
index 00000000000..f320ba152b8
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.constructimat.frag
@@ -0,0 +1,52 @@
+int main() : SV_TARGET
+{
+ // integer mat constructors
+ const int4x4 var441 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 };
+ const int4x4 var442 = int4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 );
+ int4x4 var443 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 };
+ int4x4 var444 = int4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 );
+
+ const int4x2 var421 = { 0,1, 1,1, 1,0, 0,0 };
+ const int4x2 var422 = int4x2( 0,1, 1,1, 1,0, 0,0 );
+ int4x2 var423 = { 0,1, 1,1, 1,0, 0,0 };
+ int4x2 var424 = int4x2( 0,1, 1,1, 1,0, 0,0 );
+
+ const int3x2 var321 = { 0,1, 1,1, 1,0 };
+ const int3x2 var322 = int3x2( 0,1, 1,1, 1,0 );
+ int3x2 var323 = { 0,1, 1,1, 1,0 };
+ int3x2 var234 = int3x2( 0,1, 1,1, 1,0);
+
+ // unsigned integer mat constructors
+ const uint4x4 uvar441 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 };
+ const uint4x4 uvar442 = uint4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 );
+ uint4x4 uvar443 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 };
+ uint4x4 uvar444 = uint4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 );
+
+ const uint4x2 uvar421 = { 0,1, 1,1, 1,0, 0,0 };
+ const uint4x2 uvar422 = uint4x2( 0,1, 1,1, 1,0, 0,0 );
+ uint4x2 uvar423 = { 0,1, 1,1, 1,0, 0,0 };
+ uint4x2 uvar424 = uint4x2( 0,1, 1,1, 1,0, 0,0 );
+
+ const uint3x2 uvar321 = { 0,1, 1,1, 1,0 };
+ const uint3x2 uvar322 = uint3x2( 0,1, 1,1, 1,0 );
+ uint3x2 uvar323 = { 0,1, 1,1, 1,0 };
+ uint3x2 uvar234 = uint3x2( 0,1, 1,1, 1,0);
+
+ // boolean mat constructors
+ const bool4x4 bvar441 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 };
+ const bool4x4 bvar442 = bool4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 );
+ bool4x4 bvar443 = { 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 };
+ bool4x4 bvar444 = bool4x4( 0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0 );
+
+ const bool4x2 bvar421 = { 0,1, 1,1, 1,0, 0,0 };
+ const bool4x2 bvar422 = bool4x2( 0,1, 1,1, 1,0, 0,0 );
+ bool4x2 bvar423 = { 0,1, 1,1, 1,0, 0,0 };
+ bool4x2 bvar424 = bool4x2( 0,1, 1,1, 1,0, 0,0 );
+
+ const bool3x2 bvar321 = { 0,1, 1,1, 1,0 };
+ const bool3x2 bvar322 = bool3x2( 0,1, 1,1, 1,0 );
+ bool3x2 bvar323 = { 0,1, 1,1, 1,0 };
+ bool3x2 bvar234 = bool3x2( 0,1, 1,1, 1,0);
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.dashI.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.dashI.vert
new file mode 100644
index 00000000000..a432be51e96
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.dashI.vert
@@ -0,0 +1,13 @@
+// For -Iinc1/path1 -Iinc1/path2
+// bar.h from local directory will define i1, while the ones from inc1/path1 and inc1/path2 will not.
+// notHere.h is only in inc1/path1 and inc2/path2, and only inc1/path1 defines p1, p2, and p3
+// parent.h is local again, and defines i4
+
+#include "bar.h"
+#include "notHere.h"
+#include "parent.h"
+
+float4 main() : SV_Position
+{
+ return i1 + i4 + p1 + p2 + p3;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.doLoop.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.doLoop.frag
index 251a8c12063..0318dc8f39e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.doLoop.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.doLoop.frag
@@ -1,6 +1,9 @@
-float4 PixelShaderFunction(float4 input) : COLOR0
+float4 PixelShaderFunction(float input) : COLOR0
{
[unroll] do {} while (false);
[unroll] do {;} while (false);
- do { return input; } while (all(input == input));
+ do { return (float4)input; } while (input > 2.0);
+ do ++input; while (input < 10.0);
+ do while (++input < 10.0); while (++input < 10.0); // nest while inside do-while
+ return (float4)input;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.1.tese b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.1.tese
new file mode 100644
index 00000000000..7366e9bc6fd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.1.tese
@@ -0,0 +1,32 @@
+
+struct ds_in_t
+{
+ float4 pos : POSITION;
+ float3 norm : TEXCOORD0;
+};
+
+struct pcf_in_t
+{
+ float flTessFactor [3] : SV_TessFactor;
+ float flInsideTessFactor : SV_InsideTessFactor;
+};
+
+struct gs_in_t
+{
+ float4 pos : POSITION;
+ float3 norm : TEXCOORD0;
+};
+
+[domain ( "tri" )]
+gs_in_t main (const OutputPatch <ds_in_t, 3> i, float f : msem, float3 tesscoord : SV_DomainLocation, pcf_in_t pcf_data )
+{
+ gs_in_t o;
+
+ o.pos = i[0].pos + tesscoord.x * f;
+ o.norm = i[0].norm + tesscoord.y;
+
+ tesscoord.z;
+
+ return o;
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.2.tese b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.2.tese
new file mode 100644
index 00000000000..ffb53f1f993
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.2.tese
@@ -0,0 +1,35 @@
+// This will test having the PCF input to the domain shader not be given at the end of
+// the argument list. We must move it to the end of the linkage in this case.
+
+struct ds_in_t
+{
+ float4 pos : POSITION;
+ float3 norm : TEXCOORD0;
+};
+
+struct pcf_in_t
+{
+ float flTessFactor [3] : SV_TessFactor;
+ float flInsideTessFactor : SV_InsideTessFactor;
+ float foo : PCF_FOO;
+};
+
+struct gs_in_t
+{
+ float4 pos : POSITION;
+ float3 norm : TEXCOORD0;
+};
+
+[domain ( "tri" )]
+gs_in_t main (pcf_in_t pcf_data, const OutputPatch <ds_in_t, 3> i, float3 tesscoord : SV_DomainLocation)
+{
+ gs_in_t o;
+
+ o.pos = i[0].pos + tesscoord.x;
+ o.norm = i[0].norm + tesscoord.y;
+
+ tesscoord.z;
+
+ return o;
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.3.tese b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.3.tese
new file mode 100644
index 00000000000..aeceedacb95
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.domain.3.tese
@@ -0,0 +1,31 @@
+// Test vec2 tessellation coordinate: the IO form should be a vec3, copied to a vec2
+// at the entry point boundary.
+
+struct ds_in_t
+{
+ float4 pos : POSITION;
+ float3 norm : TEXCOORD0;
+};
+
+struct pcf_in_t
+{
+ float flTessFactor [3] : SV_TessFactor;
+ float flInsideTessFactor : SV_InsideTessFactor;
+};
+
+struct gs_in_t
+{
+ float4 pos : POSITION;
+ float3 norm : TEXCOORD0;
+};
+
+[domain ( "isoline" )]
+gs_in_t main (const OutputPatch <ds_in_t, 2> i, float2 tesscoord : SV_DomainLocation, pcf_in_t pcf_data )
+{
+ gs_in_t o;
+
+ o.pos = i[0].pos + tesscoord.x;
+ o.norm = i[0].norm + tesscoord.y;
+
+ return o;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.emptystruct.init.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.emptystruct.init.vert
new file mode 100644
index 00000000000..02050f8ba1b
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.emptystruct.init.vert
@@ -0,0 +1,8 @@
+struct Test { };
+
+static const Test Test_Empty;
+
+float4 main(in uint vertexIndex : VERTEXID) : VS_OUT_POSITION
+{
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.explicitDescriptorSet.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.explicitDescriptorSet.frag
new file mode 100644
index 00000000000..1cff8d303f0
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.explicitDescriptorSet.frag
@@ -0,0 +1,15 @@
+SamplerState g_sSamp : register(s1);
+
+Texture1D <float4> g_tTex1df4 : register(t0);
+
+SamplerState g_sSamp2_amb;
+uniform float floatval_amb;
+
+Buffer<float> floatbuff;
+
+float4 main() : SV_Target0
+{
+ g_sSamp2_amb;
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaque.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaque.frag
new file mode 100644
index 00000000000..279be8a0bd2
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaque.frag
@@ -0,0 +1,40 @@
+struct os {
+ sampler2D s2D;
+};
+
+struct os2 {
+ sampler2D s2D;
+ Texture2D tex;
+};
+
+Texture2D tex;
+os s;
+os2 s2;
+
+float4 osCall1(os s)
+{
+ return tex.Sample(s.s2D, float2(0.2, 0.3));
+}
+
+float4 osCall2(os s, float2 f2)
+{
+ return tex.Sample(s.s2D, f2);
+}
+
+float4 os2Call1(os2 s)
+{
+ return s.tex.Sample(s.s2D, float2(0.2, 0.3));
+}
+
+float4 os2Call2(os2 s, float2 f2)
+{
+ return s.tex.Sample(s.s2D, f2);
+}
+
+float4 main() : SV_TARGET0
+{
+ return osCall1(s) +
+ osCall2(s, float2(0.2, 0.3)) +
+ os2Call1(s2) +
+ os2Call2(s2, float2(0.2, 0.3));
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaqueInit.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaqueInit.vert
new file mode 100644
index 00000000000..bcf39ceb697
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaqueInit.vert
@@ -0,0 +1,23 @@
+struct FxaaTex { SamplerState smpl; Texture2D tex; };
+SamplerState g_tInputTexture_sampler; Texture2D g_tInputTexture;
+
+float4 lookUp(FxaaTex tex)
+{
+ return tex.tex.Sample(tex.smpl, float2(0.3, 0.4));
+}
+
+FxaaTex fillOpaque()
+{
+ FxaaTex t;
+ t.smpl = g_tInputTexture_sampler;
+ t.tex = g_tInputTexture;
+ return t;
+}
+
+float4 main() : SV_TARGET0
+{
+ FxaaTex tex1 = { g_tInputTexture_sampler, g_tInputTexture };
+ FxaaTex tex2 = fillOpaque();
+ FxaaTex tex3 = tex1;
+ return lookUp(tex3);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaqueInitMix.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaqueInitMix.vert
new file mode 100644
index 00000000000..2e712ee5bb4
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenOpaqueInitMix.vert
@@ -0,0 +1,13 @@
+struct FxaaTex { SamplerState smpl; Texture2D tex; float f; };
+SamplerState g_tInputTexture_sampler; Texture2D g_tInputTexture;
+
+float4 lookUp(FxaaTex tex)
+{
+ return tex.tex.Sample(tex.smpl, float2(tex.f, tex.f));
+}
+
+float4 main() : SV_TARGET0
+{
+ FxaaTex tex = { g_tInputTexture_sampler, g_tInputTexture, 0.5 };
+ return lookUp(tex);
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenSubset.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenSubset.frag
new file mode 100644
index 00000000000..c80e093c8b0
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenSubset.frag
@@ -0,0 +1,36 @@
+struct S0
+{
+ int x;
+ int y;
+ SamplerState ss;
+};
+
+struct S1
+{
+ float b;
+ SamplerState samplerState;
+ S0 s0;
+ int a;
+};
+
+struct S2
+{
+ int a1;
+ int a2;
+ int a3;
+ int a4;
+ int a5;
+ S1 resources;
+};
+
+SamplerState samp;
+Texture2D tex;
+
+float4 main(float4 vpos : VPOS) : COLOR0
+{
+ S1 s1;
+ S2 s2;
+ s1.s0.ss = samp;
+ s2.resources = s1;
+ return tex.Sample(s2.resources.s0.ss, float2(0.5));
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenSubset2.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenSubset2.frag
new file mode 100644
index 00000000000..753475dc1f0
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.flattenSubset2.frag
@@ -0,0 +1,24 @@
+struct Nested { float y; Texture2D texNested; };
+struct A { Nested n; float x; };
+struct B { Nested n; Texture2D tex; };
+
+Texture2D someTex;
+
+float4 main(float4 vpos : VPOS) : COLOR0
+{
+ A a1, a2;
+ B b;
+
+ // Assignment of nested structs to nested structs
+ a1.n = a2.n;
+ b .n = a1.n;
+
+ // Assignment of nested struct to standalone
+ Nested n = b.n;
+
+ // Assignment to nestested struct members
+ a2.n.texNested = someTex;
+ a1.n.y = 1.0;
+
+ return float4(0,0,0,0);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.forLoop.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.forLoop.frag
index 937899670da..9cf60ee4600 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.forLoop.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.forLoop.frag
@@ -5,9 +5,13 @@ float4 PixelShaderFunction(float4 input) : COLOR0
[unroll] for (; any(input != input); ) {}
for (; any(input != input); ) { return -input; }
for (--input; any(input != input); input += 2) { return -input; }
- for (;;) if (input.x > 2.0) break;
- for (;;) if (input.x > 2.0) continue;
- float ii;
- for (int ii = -1; ii < 3; ++ii) if (ii == 2) continue;
- --ii;
+ for (;;) if (input.x > 2.0) break;
+ for (;;) if (input.x > 2.0) continue;
+ float ii;
+ for (int ii = -1; ii < 3; ++ii) if (ii == 2) continue;
+ --ii;
+ for (int first = 0, second = 1; ;) first + second;
+ for ( int i = 0, count = int(ii); i < count; i++ );
+ for (float first = 0, second[2], third; first < second[0]; ++second[1]) first + second[1] + third;
+ for (--ii, --ii, --ii;;) ii;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.fraggeom.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.fraggeom.frag
new file mode 100644
index 00000000000..5592e857a6b
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.fraggeom.frag
@@ -0,0 +1,17 @@
+// test geometry shader in fragment shader. GS attributes should be successfully ignored.
+
+struct myVertex {
+ float4 pos : SV_Position;
+};
+
+[maxvertexcount(1)]
+void GS_Draw(point myVertex IN, inout PointStream<myVertex> OutputStream)
+{
+ OutputStream.Append(IN);
+ OutputStream.RestartStrip();
+}
+
+float4 main() : SV_TARGET
+{
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.function.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.function.frag
new file mode 100644
index 00000000000..5834b319642
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.function.frag
@@ -0,0 +1,25 @@
+float4 fun0()
+{
+ return 1.0f;
+}
+
+uint fun2(float4 col)
+{
+ return 7;
+}
+
+float4 fun4(uint id1, uniform uint id2)
+{
+ return id1 * id2;
+}
+
+float4 fun1(int index)
+{
+ uint entityId = fun2(fun0());
+ return fun4(entityId, entityId);
+}
+
+int main() : SV_TARGET
+{
+ return fun1;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.array.dx10.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.array.dx10.frag
index 4ed7f4b4cd1..b6310acb647 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.array.dx10.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.array.dx10.frag
@@ -29,6 +29,10 @@ PS_OUTPUT main()
// no 1D gathers
+ float4 txval80 = g_tTex2df4a . GatherCmp(g_sSampCmp, c3, .75);
+ int4 txval81 = g_tTex2di4a . GatherCmp(g_sSampCmp, c3, .75);
+ uint4 txval82 = g_tTex2du4a . GatherCmp(g_sSampCmp, c3, .75);
+
float4 txval00 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, .75);
int4 txval01 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, .75);
uint4 txval02 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, .75);
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.basic.dx10.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.basic.dx10.frag
index 9dc163150ad..94ef576dd0f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.basic.dx10.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.basic.dx10.frag
@@ -51,6 +51,10 @@ PS_OUTPUT main()
int4 txval31 = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75);
uint4 txval32 = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75);
+ float4 txval80 = g_tTex2df4 . GatherCmp(g_sSampCmp, c2, 0.75);
+ int4 txval81 = g_tTex2di4 . GatherCmp(g_sSampCmp, c2, 0.75);
+ uint4 txval82 = g_tTex2du4 . GatherCmp(g_sSampCmp, c2, 0.75);
+
// no 3D gathers
float4 txval40 = g_tTexcdf4 . GatherCmpRed(g_sSampCmp, c3, 0.75);
@@ -69,6 +73,10 @@ PS_OUTPUT main()
int4 txval71 = g_tTexcdi4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75);
uint4 txval72 = g_tTexcdu4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75);
+ float4 txval90 = g_tTexcdf4 . GatherCmp(g_sSampCmp, c3, 0.75);
+ int4 txval91 = g_tTexcdi4 . GatherCmp(g_sSampCmp, c3, 0.75);
+ uint4 txval92 = g_tTexcdu4 . GatherCmp(g_sSampCmp, c3, 0.75);
+
psout.Color = 1.0;
psout.Depth = 1.0;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.offset.dx10.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.offset.dx10.frag
index 18e3a37e093..7287fe48e66 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.offset.dx10.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.offset.dx10.frag
@@ -50,13 +50,9 @@ PS_OUTPUT main()
int4 txval014 = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,-1), int2(1,-1), int2(1,-1), int2(1,-1));
uint4 txval024 = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,1), int2(1,1), int2(1,1), int2(1,1));
- // float4 txval00s = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), status);
- // int4 txval01s = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), status);
- // uint4 txval02s = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), status);
-
- // float4 txval004s = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status);
- // int4 txval014s = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status);
- // uint4 txval024s = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status);
+ float4 txval401 = g_tTex2df4 . GatherCmp(g_sSampCmp, c2, 0.75, int2(1,0));
+ int4 txval411 = g_tTex2di4 . GatherCmp(g_sSampCmp, c2, 0.75, int2(1,-1));
+ uint4 txval421 = g_tTex2du4 . GatherCmp(g_sSampCmp, c2, 0.75, int2(1,1));
// GatherCmpGreen not implemented pending OpImageDrefGather component input
// float4 txval101 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0));
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.offsetarray.dx10.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.offsetarray.dx10.frag
index 11131bcb7bb..7f381bb1e7d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.offsetarray.dx10.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gathercmpRGBA.offsetarray.dx10.frag
@@ -36,6 +36,10 @@ PS_OUTPUT main()
// no 1D gathers
+ float4 txval401 = g_tTex2df4a . GatherCmp(g_sSampCmp, c3, 0.75, o2);
+ int4 txval411 = g_tTex2di4a . GatherCmp(g_sSampCmp, c3, 0.75, o2);
+ uint4 txval421 = g_tTex2du4a . GatherCmp(g_sSampCmp, c3, 0.75, o2);
+
float4 txval001 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2);
int4 txval011 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2);
uint4 txval021 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2);
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.getsampleposition.dx10.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.getsampleposition.dx10.frag
index a7a93b3784a..a1182fb6b0f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.getsampleposition.dx10.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.getsampleposition.dx10.frag
@@ -9,12 +9,12 @@ struct PS_OUTPUT
float Depth : SV_Depth;
};
-PS_OUTPUT main()
+PS_OUTPUT main(int sample : SAMPLE)
{
PS_OUTPUT psout;
- float2 r00 = g_tTex2dmsf4.GetSamplePosition(1);
- float2 r01 = g_tTex2dmsf4a.GetSamplePosition(2);
+ float2 r00 = g_tTex2dmsf4.GetSamplePosition(sample);
+ float2 r01 = g_tTex2dmsf4a.GetSamplePosition(sample);
psout.Color = 1.0;
psout.Depth = 1.0;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.global-const-init.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.global-const-init.frag
new file mode 100644
index 00000000000..d8f36c9664f
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.global-const-init.frag
@@ -0,0 +1,14 @@
+
+cbuffer CB {
+ float4 foo;
+};
+
+static const float4 bar = foo; // test const (in the immutable sense) initializer from non-const.
+
+static const float2 a1[2] = { { 1, 2 }, { foo.x, 4 } }; // not entirely constant
+static const float2 a2[2] = { { 5, 6 }, { 7, 8 } }; // entirely constant
+
+float4 main() : SV_Target0
+{
+ return bar;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gs-hs-mix.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gs-hs-mix.tesc
new file mode 100644
index 00000000000..451969611ec
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.gs-hs-mix.tesc
@@ -0,0 +1,119 @@
+cbuffer UniformBlock0 : register(b0)
+{
+ float4x4 model_view_matrix;
+ float4x4 proj_matrix;
+ float4x4 model_view_proj_matrix;
+ float3x3 normal_matrix;
+ float3 color;
+ float3 view_dir;
+ float3 tess_factor;
+};
+
+// =============================================================================
+// Hull Shader
+// =============================================================================
+struct HSInput {
+ float3 PositionWS : POSITION;
+ float3 NormalWS : NORMAL;
+};
+
+struct HSOutput {
+ float3 PositionWS : POSITION;
+};
+
+struct HSTrianglePatchConstant {
+ float EdgeTessFactor[3] : SV_TessFactor;
+ float InsideTessFactor : SV_InsideTessFactor;
+ float3 NormalWS[3] : NORMAL;
+};
+
+HSTrianglePatchConstant HSPatchConstant(InputPatch<HSInput, 3> patch)
+{
+ float3 roundedEdgeTessFactor = tess_factor;
+ float roundedInsideTessFactor = 3;
+ float insideTessFactor = 1;
+
+ HSTrianglePatchConstant result;
+
+ // Edge and inside tessellation factors
+ result.EdgeTessFactor[0] = roundedEdgeTessFactor.x;
+ result.EdgeTessFactor[1] = roundedEdgeTessFactor.y;
+ result.EdgeTessFactor[2] = roundedEdgeTessFactor.z;
+ result.InsideTessFactor = roundedInsideTessFactor;
+
+ // Constant data
+ result.NormalWS[0] = patch[0].NormalWS;
+ result.NormalWS[1] = patch[1].NormalWS;
+ result.NormalWS[2] = patch[2].NormalWS;
+
+ return result;
+}
+
+[domain("tri")]
+[partitioning("fractional_odd")]
+[outputtopology("triangle_ccw")]
+[outputcontrolpoints(3)]
+[patchconstantfunc("HSPatchConstant")]
+HSOutput HSMain(
+ InputPatch<HSInput, 3> patch,
+ uint id : SV_OutputControlPointID
+)
+{
+ HSOutput output;
+ output.PositionWS = patch[id].PositionWS;
+ return output;
+}
+
+// =============================================================================
+// Geometry Shader
+// =============================================================================
+struct GSVertexInput {
+ float3 PositionWS : POSITION;
+ float3 NormalWS : NORMAL;
+};
+
+struct GSVertexOutput {
+ float4 PositionCS : SV_POSITION;
+};
+
+[maxvertexcount(6)]
+void GSMain(
+ triangle GSVertexInput input[3],
+ inout LineStream<GSVertexOutput> output
+)
+{
+
+ float3 P0 = input[0].PositionWS.xyz;
+ float3 P1 = input[1].PositionWS.xyz;
+ float3 P2 = input[2].PositionWS.xyz;
+
+ GSVertexOutput vertex;
+ // Totally hacky...
+ P0.z += 0.001;
+ P1.z += 0.001;
+ P2.z += 0.001;
+ float4 Q0 = mul(proj_matrix, float4(P0, 1.0));
+ float4 Q1 = mul(proj_matrix, float4(P1, 1.0));
+ float4 Q2 = mul(proj_matrix, float4(P2, 1.0));
+
+ // Edge 0
+ vertex.PositionCS = Q0;
+ output.Append(vertex);
+ vertex.PositionCS = Q1;
+ output.Append(vertex);
+ output.RestartStrip();
+
+ // Edge 1
+ vertex.PositionCS = Q1;
+ output.Append(vertex);
+ vertex.PositionCS = Q2;
+ output.Append(vertex);
+ output.RestartStrip();
+
+ // Edge 2
+ vertex.PositionCS = Q2;
+ output.Append(vertex);
+ vertex.PositionCS = Q0;
+ output.Append(vertex);
+ output.RestartStrip();
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hlslOffset.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hlslOffset.vert
new file mode 100644
index 00000000000..aa95f6a344e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hlslOffset.vert
@@ -0,0 +1,20 @@
+cbuffer b {
+ float m0;
+ float3 m4;
+ //////
+ float m16;
+ float3 m20 : packoffset(c1.y);
+ /////
+ float3 m36 : packoffset(c2.y);
+ /////
+ float2 m56 : packoffset(c3.z);
+ /////
+ float m64;
+ float2 m68;
+ float m76;
+ //////
+ float m80;
+ float2 m96[1];
+};
+
+void main() {}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.3.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.3.tesc
new file mode 100644
index 00000000000..8509dca1e3a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.3.tesc
@@ -0,0 +1,39 @@
+// ***
+// invocation ID coming from synthesized variable
+// ***
+
+struct VS_OUT
+{
+ float3 cpoint : CPOINT;
+};
+
+struct HS_CONSTANT_OUT
+{
+ float edges[2] : SV_TessFactor;
+};
+
+struct HS_OUT
+{
+ float3 cpoint : CPOINT;
+};
+
+[domain("tri")]
+[partitioning("integer")]
+[outputtopology("point")]
+[outputcontrolpoints(4)]
+[patchconstantfunc("PCF")]
+HS_OUT main(InputPatch<VS_OUT, 4> ip)
+{
+ HS_OUT output;
+ output.cpoint = ip[0].cpoint;
+ return output;
+}
+
+HS_CONSTANT_OUT PCF(uint pid : SV_PrimitiveId, float4 pos : SV_Position)
+{
+ HS_CONSTANT_OUT output;
+
+ output.edges[0] = 2.0f;
+ output.edges[1] = 8.0f;
+ return output;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.4.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.4.tesc
new file mode 100644
index 00000000000..cd2b094436e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.4.tesc
@@ -0,0 +1,43 @@
+
+// Test mixed InputPatch structure: user and builtin members. Hull shaders involve extra
+// logic in this case due to patch constant function call synthesis.
+
+// This example tests the main EP and the PCF EP both having an input patch.
+
+struct HS_Main_Output
+{
+ float4 m_Position : SV_POSITION ;
+};
+
+struct HS_Output
+{
+ float fTessFactor [ 3 ] : SV_TessFactor ;
+ float fInsideTessFactor : SV_InsideTessFactor ;
+};
+
+struct HS_Input
+{
+ float4 m_Position : SV_POSITION;
+ float4 m_Normal : TEXCOORD2;
+};
+
+HS_Output HS_ConstFunc ( InputPatch < HS_Input , 3 > I )
+{
+ HS_Output O = (HS_Output)0;
+
+ O.fInsideTessFactor = I [ 0 ].m_Position.w + I [ 0 ].m_Normal.w;
+
+ return O;
+}
+
+[ domain ( "tri" ) ]
+[ partitioning ( "fractional_odd" ) ]
+[ outputtopology ( "triangle_cw" ) ]
+[ patchconstantfunc ( "HS_ConstFunc" ) ]
+[ outputcontrolpoints ( 3 ) ]
+HS_Main_Output main( InputPatch < HS_Input , 3 > I , uint cpid : SV_OutputControlPointID )
+{
+ HS_Main_Output output = ( HS_Main_Output ) 0 ;
+ output.m_Position = 0;
+ return output ;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.5.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.5.tesc
new file mode 100644
index 00000000000..c9e511ebf42
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.5.tesc
@@ -0,0 +1,43 @@
+
+// Test mixed InputPatch structure: user and builtin members. Hull shaders involve extra
+// logic in this case due to patch constant function call synthesis.
+
+// This example tests the PCF EP having an InputPatch, but the main EP does not.
+
+struct HS_Main_Output
+{
+ float4 m_Position : SV_POSITION ;
+};
+
+struct HS_Output
+{
+ float fTessFactor [ 3 ] : SV_TessFactor ;
+ float fInsideTessFactor : SV_InsideTessFactor ;
+};
+
+struct HS_Input
+{
+ float4 m_Position : SV_POSITION;
+ float4 m_Normal : TEXCOORD2;
+};
+
+HS_Output HS_ConstFunc ( InputPatch < HS_Input , 3 > I )
+{
+ HS_Output O = (HS_Output)0;
+
+ O.fInsideTessFactor = I [ 0 ].m_Position.w + I [ 0 ].m_Normal.w;
+
+ return O;
+}
+
+[ domain ( "tri" ) ]
+[ partitioning ( "fractional_odd" ) ]
+[ outputtopology ( "triangle_cw" ) ]
+[ patchconstantfunc ( "HS_ConstFunc" ) ]
+[ outputcontrolpoints ( 3 ) ]
+HS_Main_Output main( uint cpid : SV_OutputControlPointID )
+{
+ HS_Main_Output output = ( HS_Main_Output ) 0 ;
+ output.m_Position = 0;
+ return output ;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.ctrlpt-1.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.ctrlpt-1.tesc
new file mode 100644
index 00000000000..3e329f253bd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.ctrlpt-1.tesc
@@ -0,0 +1,43 @@
+// ***
+// per-control-point invocation of PCF from entry point return value
+// ***
+
+struct hs_in_t
+{
+ float3 val : TEXCOORD0;
+};
+
+struct hs_pcf_t
+{
+ float tfactor[3] : SV_TessFactor; // must turn into a size 4 array in SPIR-V
+ float flInFactor : SV_InsideTessFactor; // must turn into a size 2 array in SPIR-V
+};
+
+struct hs_out_t
+{
+ float3 val : TEXCOORD0;
+};
+
+[ domain ("tri") ]
+[ partitioning ("fractional_odd") ]
+[ outputtopology ("triangle_cw") ]
+[ outputcontrolpoints (3) ]
+[ patchconstantfunc ( "PCF" ) ]
+hs_out_t main (InputPatch <hs_in_t, 3> i , uint cpid : SV_OutputControlPointID)
+{
+ hs_out_t o;
+ o.val = cpid;
+ return o;
+}
+
+hs_pcf_t PCF( const OutputPatch <hs_out_t, 3> pcf_out)
+{
+ hs_pcf_t o;
+
+ o.tfactor[0] = pcf_out[0].val.x;
+ o.tfactor[1] = pcf_out[1].val.x;
+ o.tfactor[2] = pcf_out[2].val.x;
+ o.flInFactor = 4;
+
+ return o;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.ctrlpt-2.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.ctrlpt-2.tesc
new file mode 100644
index 00000000000..1f65ce4b1e5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.ctrlpt-2.tesc
@@ -0,0 +1,47 @@
+// ***
+// per-control-point invocation of PCF from entry point return value with
+// both OutputPatch and InputPatch given to PCF.
+// ***
+
+struct hs_in_t
+{
+ float3 val : TEXCOORD0;
+};
+
+struct hs_pcf_t
+{
+ float tfactor[3] : SV_TessFactor; // must turn into a size 4 array in SPIR-V
+ float flInFactor : SV_InsideTessFactor; // must turn into a size 2 array in SPIR-V
+};
+
+struct hs_out_t
+{
+ float3 val : TEXCOORD0;
+};
+
+[ domain ("tri") ]
+[ partitioning ("fractional_odd") ]
+[ outputtopology ("triangle_cw") ]
+[ outputcontrolpoints (3) ]
+[ patchconstantfunc ( "PCF" ) ]
+hs_out_t main (InputPatch <hs_in_t, 3> i , uint cpid : SV_OutputControlPointID)
+{
+ i[0].val;
+
+ hs_out_t o;
+ o.val = cpid;
+ return o;
+}
+
+hs_pcf_t PCF( const OutputPatch <hs_out_t, 3> pcf_out,
+ const InputPatch <hs_in_t, 3> pcf_in)
+{
+ hs_pcf_t o;
+
+ o.tfactor[0] = pcf_out[0].val.x;
+ o.tfactor[1] = pcf_out[1].val.x;
+ o.tfactor[2] = pcf_out[2].val.x;
+ o.flInFactor = 4;
+
+ return o;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.void.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.void.tesc
index 971d613bf78..c96ecb4312f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.void.tesc
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.hull.void.tesc
@@ -19,7 +19,7 @@ struct HS_OUT
[domain("tri")]
[partitioning("fractional_even")]
-[outputtopology("line")]
+[outputtopology("triangle_ccw")]
[outputcontrolpoints(3)]
[patchconstantfunc("PCF")]
HS_OUT main(InputPatch<VS_OUT, 3> ip)
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.implicitBool.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.implicitBool.frag
new file mode 100644
index 00000000000..c6aea9d1eaa
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.implicitBool.frag
@@ -0,0 +1,32 @@
+float condf;
+int condi;
+float1 condf1;
+int1 condi1;
+
+float4 main() : SV_Target0
+{
+ float4 a = float4(2.0, 2.0, 2.0, 2.0);
+ if (condi)
+ return a + 1.0;
+ if (condf)
+ return a + 2.0;
+ if (condf1)
+ return a + 3.0;
+ if (condi1)
+ return a + 4.0;
+ if (condi && condf || condf1)
+ return a + 5.0;
+
+ float f = condf;
+ while (f) { --f; }
+
+ int i = condi;
+ do { --i; } while (i);
+
+ for (; i; ) { --i; }
+
+ float g = condf ? 7.0 : 8.0;
+ a += g;
+
+ return a - 1.0;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.include.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.include.vert
new file mode 100644
index 00000000000..683398e5272
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.include.vert
@@ -0,0 +1,8 @@
+#include "bar.h"
+#include "./inc1/bar.h"
+#include "inc2\bar.h"
+
+float4 main() : SV_Position
+{
+ return i1 + i2 + i3 + i4 + i5 + i6;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.includeNegative.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.includeNegative.vert
new file mode 100644
index 00000000000..64d31fab996
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.includeNegative.vert
@@ -0,0 +1,8 @@
+#include "foo.h"
+#include "inc2/../foo.h"
+#include "inc1/badInc.h"
+
+float4 main() : SV_Position
+{
+#error in main
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.inf.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.inf.vert
new file mode 100644
index 00000000000..d57b83793b2
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.inf.vert
@@ -0,0 +1,11 @@
+float4 main() : SV_Position
+{
+ float f1 = -1.#INF;
+ float f2 = 1.#INF;
+ float f3 = +1.#INF;
+ float f4 = f2 * 1.#INF + 1.#INF;
+ const float f5 = -1.#INF;
+ const float f6 = f5 * 0.0f;
+
+ return (float4)(f1 + f2 + f3 + f4 + f5 + f6);
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.inoutquals.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.inoutquals.frag
index 9328dfbe7e0..6a124f8dd06 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.inoutquals.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.inoutquals.frag
@@ -4,11 +4,12 @@ struct PS_OUTPUT
float Depth : SV_Depth;
};
-inline void MyFunc(in float x, out float y, inout float z)
+inline void MyFunc(in float x, out float y, inout float z, in out float w)
{
y = x;
z = y;
x = -1; // no effect since x = in param
+ w *= 1;
}
PS_OUTPUT main(noperspective in float4 inpos : SV_Position, out int sampleMask : SV_Coverage)
@@ -16,7 +17,7 @@ PS_OUTPUT main(noperspective in float4 inpos : SV_Position, out int sampleMask :
PS_OUTPUT psout;
float x = 7, y, z = 3;
- MyFunc(x, y, z);
+ MyFunc(x, y, z, inpos.w);
psout.Color = float4(x, y, z, 1);
psout.Depth = inpos.w;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsic.frexp.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsic.frexp.frag
new file mode 100644
index 00000000000..fde87c9daa3
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsic.frexp.frag
@@ -0,0 +1,37 @@
+
+float PixelShaderFunctionS(float inF0, float inF1)
+{
+ float r000 = frexp(inF0, inF1);
+ return 0.0;
+}
+
+float2 PixelShaderFunction2(float2 inF0, float2 inF1)
+{
+ float2 r000 = frexp(inF0, inF1);
+ return float2(1,2);
+}
+
+float3 PixelShaderFunction3(float3 inF0, float3 inF1)
+{
+ float3 r000 = frexp(inF0, inF1);
+ return float3(1,2,3);
+}
+
+float4 PixelShaderFunction(float4 inF0, float4 inF1)
+{
+ float4 r000 = frexp(inF0, inF1);
+ return float4(1,2,3,4);
+}
+
+// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
+#define MATFNS(MT) \
+ MT r000 = frexp(inF0, inF1);
+
+struct PS_OUTPUT { float4 color : SV_Target0; };
+
+PS_OUTPUT main()
+{
+ PS_OUTPUT ps_output;
+ ps_output.color = 1.0;
+ return ps_output;
+};
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsic.frexp.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsic.frexp.vert
new file mode 100644
index 00000000000..f0fd5e00151
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsic.frexp.vert
@@ -0,0 +1,28 @@
+float VertexShaderFunctionS(float inF0, float inF1)
+{
+ frexp(inF0, inF1);
+ return 0.0;
+}
+
+float2 VertexShaderFunction2(float2 inF0, float2 inF1)
+{
+ frexp(inF0, inF1);
+ return float2(1,2);
+}
+
+float3 VertexShaderFunction3(float3 inF0, float3 inF1)
+{
+ frexp(inF0, inF1);
+ return float3(1,2,3);
+}
+
+float4 VertexShaderFunction4(float4 inF0, float4 inF1)
+{
+ frexp(inF0, inF1);
+ return float4(1,2,3,4);
+}
+
+// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
+#define MATFNS() \
+ frexp(inF0, inF1);
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsics.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsics.frag
index 15db6376ca1..9343f6d8cfe 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsics.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsics.frag
@@ -31,6 +31,7 @@ float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint i
float r011 = ceil(inF0);
float r012 = clamp(inF0, inF1, inF2);
clip(inF0);
+ clip(r005);
float r014 = cos(inF0);
float r015 = cosh(inF0);
int r016 = countbits(7);
@@ -52,7 +53,6 @@ float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint i
// TODO: fma(inD0, inD1, inD2);
float r033 = fmod(inF0, inF1);
float r034 = frac(inF0);
- float r035 = frexp(inF0, inF1);
float r036 = fwidth(inF0);
bool r037 = isinf(inF0);
bool r038 = isnan(inF0);
@@ -109,6 +109,7 @@ float2 PixelShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, u
float2 r011 = ceil(inF0);
float2 r012 = clamp(inF0, inF1, inF2);
clip(inF0);
+ clip(inU0);
float2 r013 = cos(inF0);
float2 r015 = cosh(inF0);
int2 r016 = countbits(int2(7,3));
@@ -136,7 +137,6 @@ float2 PixelShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, u
// TODO: fma(inD0, inD1, inD2);
float2 r035 = fmod(inF0, inF1);
float2 r036 = frac(inF0);
- float2 r037 = frexp(inF0, inF1);
float2 r038 = fwidth(inF0);
bool2 r039 = isinf(inF0);
bool2 r040 = isnan(inF0);
@@ -192,6 +192,7 @@ float3 PixelShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, u
float3 r011 = ceil(inF0);
float3 r012 = clamp(inF0, inF1, inF2);
clip(inF0);
+ clip(inU0);
float3 r013 = cos(inF0);
float3 r014 = cosh(inF0);
uint3 r015 = countbits(uint3(7,3,5));
@@ -217,7 +218,6 @@ float3 PixelShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, u
// TODO: fma(inD0, inD1, inD2);
float3 r036 = fmod(inF0, inF1);
float3 r037 = frac(inF0);
- float3 r038 = frexp(inF0, inF1);
float3 r039 = fwidth(inF0);
bool3 r040 = isinf(inF0);
bool3 r041 = isnan(inF0);
@@ -274,6 +274,7 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, ui
float4 r011 = ceil(inF0);
float4 r012 = clamp(inF0, inF1, inF2);
clip(inF0);
+ clip(inU0);
float4 r013 = cos(inF0);
float4 r014 = cosh(inF0);
uint4 r015 = countbits(uint4(7,3,5,2));
@@ -299,7 +300,6 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, ui
// TODO: fma(inD0, inD1, inD2);
float4 r036 = fmod(inF0, inF1);
float4 r037 = frac(inF0);
- float4 r038 = frexp(inF0, inF1);
float4 r039 = fwidth(inF0);
bool4 r040 = isinf(inF0);
bool4 r041 = isnan(inF0);
@@ -369,7 +369,6 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, ui
MT r021 = floor(inF0); \
MT r022 = fmod(inF0, inF1); \
MT r023 = frac(inF0); \
- MT r024 = frexp(inF0, inF1); \
MT r025 = fwidth(inF0); \
MT r026 = ldexp(inF0, inF1); \
MT r026a = lerp(inF0, inF1, inF2); \
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsics.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsics.vert
index de9476cbd09..c442f16a500 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsics.vert
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.intrinsics.vert
@@ -28,7 +28,6 @@ float VertexShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
- frexp(inF0, inF1);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
@@ -99,7 +98,6 @@ float2 VertexShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0,
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
- frexp(inF0, inF1);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
@@ -170,7 +168,6 @@ float3 VertexShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0,
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
- frexp(inF0, inF1);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
@@ -241,7 +238,6 @@ float4 VertexShaderFunction4(float4 inF0, float4 inF1, float4 inF2, uint4 inU0,
// TODO: fma(inD0, inD1, inD2);
fmod(inF0, inF1);
frac(inF0);
- frexp(inF0, inF1);
isinf(inF0);
isnan(inF0);
ldexp(inF0, inF1);
@@ -305,7 +301,6 @@ float4 VertexShaderFunction4(float4 inF0, float4 inF1, float4 inF2, uint4 inU0,
floor(inF0); \
fmod(inF0, inF1); \
frac(inF0); \
- frexp(inF0, inF1); \
ldexp(inF0, inF1); \
lerp(inF0, inF1, inF2); \
log(inF0); \
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.isfinite.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.isfinite.frag
new file mode 100644
index 00000000000..6e40f6a8e3d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.isfinite.frag
@@ -0,0 +1,18 @@
+
+uniform float f;
+uniform float2 f2;
+uniform float3 f3;
+
+bool test1(float v)
+{
+ return !isnan(v) && isfinite(v);
+}
+
+float4 main() : SV_Target0
+{
+ isfinite(f);
+ isfinite(f2);
+ isfinite(f3);
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.localStructuredBuffer.comp b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.localStructuredBuffer.comp
new file mode 100644
index 00000000000..34e06e001e1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.localStructuredBuffer.comp
@@ -0,0 +1,4 @@
+RWStructuredBuffer<uint> srt0;
+void main() {
+ RWStructuredBuffer<uint> srt0Local = srt0;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.logicalConvert.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.logicalConvert.frag
new file mode 100644
index 00000000000..b353eb1eed6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.logicalConvert.frag
@@ -0,0 +1,23 @@
+float4 main() : SV_TARGET
+{
+ if (!(0) && (0) || (!1))
+ return 0.0.xxxx;
+ if (0)
+ return 0.0.xxxx;
+ if (!(bool)0)
+ return 0.0.xxxx;
+ if (!0)
+ return 0.0.xxxx;
+ if (!(bool)1)
+ return 0.0.xxxx;
+ if (!1)
+ return 0.0.xxxx;
+ if (0 || 1)
+ return 0.0.xxxx;
+ if (1 && 0)
+ return 0.0.xxxx;
+ if (1 || false)
+ return 0.0.xxxx;
+ if (true && 1)
+ return 0.0.xxxx;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.loopattr.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.loopattr.frag
new file mode 100644
index 00000000000..5b4d374f5f1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.loopattr.frag
@@ -0,0 +1,14 @@
+
+float4 main() : SV_Target0
+{
+ // Unroll hint
+ [unroll(5) ] for (int x=0; x<5; ++x);
+
+ // Don't unroll hint
+ [loop] for (int y=0; y<5; ++y);
+
+ // No hint
+ for (int z=0; z<5; ++z);
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.matpack-1.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.matpack-1.frag
new file mode 100644
index 00000000000..5d02a3e4645
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.matpack-1.frag
@@ -0,0 +1,27 @@
+struct MyBuffer1
+{
+ column_major float4x4 mat1;
+ row_major float4x4 mat2;
+ float4 vec1;
+ float foo;
+};
+
+struct MyBuffer2
+{
+ row_major float4x4 mat1;
+ float4 vec1;
+};
+
+cbuffer Example
+{
+ MyBuffer1 g_MyBuffer1;
+ MyBuffer2 g_MyBuffer2;
+ column_major float4x4 mat1a;
+};
+
+float4 main() : SV_Target0
+{
+ return mul(g_MyBuffer1.mat1, g_MyBuffer1.vec1) +
+ mul(g_MyBuffer2.mat1, g_MyBuffer2.vec1);
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.matpack-pragma.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.matpack-pragma.frag
new file mode 100644
index 00000000000..a9a283354f6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.matpack-pragma.frag
@@ -0,0 +1,33 @@
+#pragma pack_matrix(row_major)
+
+struct MyBuffer1
+{
+ column_major float4x4 mat1;
+ row_major float4x4 mat2;
+ /*floating*/ float4x4 mat3;
+};
+
+#pragma pack_matrix(column_major)
+
+struct MyBuffer2
+{
+ column_major float4x4 mat1;
+ row_major float4x4 mat2;
+ /*floating*/ float4x4 mat3;
+};
+
+#pragma pack_matrix(random_string_foo)
+
+cbuffer Example
+{
+ MyBuffer1 g_MyBuffer1;
+ MyBuffer2 g_MyBuffer2;
+ column_major float4x4 mat1a;
+};
+
+float4 main() : SV_Target0
+{
+ return
+ g_MyBuffer1.mat1[0] + g_MyBuffer1.mat2[0] + g_MyBuffer1.mat3[0] +
+ g_MyBuffer2.mat1[0] + g_MyBuffer2.mat2[0] + g_MyBuffer2.mat3[0];
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.memberFunCall.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.memberFunCall.frag
new file mode 100644
index 00000000000..27d3f6e0177
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.memberFunCall.frag
@@ -0,0 +1,16 @@
+float method3(float a) { return 1.0; }
+
+struct myContext {
+ float method1() { return method2(); }
+ float method2() { return method3(1.0); }
+ float method3(float a) { return method4(a, a); }
+ float method4(float a, float b) { return a + b + f; }
+ float f;
+};
+
+float4 main() : SV_TARGET0
+{
+ myContext context;
+ context.f = 3.0;
+ return (float4)context.method1();
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.negative.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.negative.frag
new file mode 100644
index 00000000000..900d385063a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.negative.frag
@@ -0,0 +1,9 @@
+Texture2D g_tTex2df4;
+
+float4 main() : SV_Target0
+{
+ g_tTex2df4.mips.mips[2][uint2(3, 4)]; // error to chain like this
+
+ return 0;
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.negative2.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.negative2.frag
new file mode 100644
index 00000000000..c07179eb28d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.negative2.frag
@@ -0,0 +1,9 @@
+Texture2D g_tTex2df4;
+
+float4 main() : SV_Target0
+{
+ g_tTex2df4.r[2][uint2(3, 4)]; // '.r' not valid on texture object
+
+ return 0;
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.operator.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.operator.frag
new file mode 100644
index 00000000000..af4f150136e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.mip.operator.frag
@@ -0,0 +1,14 @@
+Texture2DArray g_tTex2df4a;
+Texture2D g_tTex2df4;
+
+float4 main() : SV_Target0
+{
+ return g_tTex2df4.mips[2][uint2(3, 4)] +
+
+ // test float->uint cast on the mip arg
+ g_tTex2df4a.mips[5.2][uint3(6, 7, 8)] +
+
+ // Test nesting involving .mips operators:
+ // ....outer operator mip level...... .....outer operator coordinate....
+ g_tTex2df4.mips[ g_tTex2df4.mips[9][uint2(10,11)][0] ][ g_tTex2df4.mips[13][uint2(14,15)].xy ];
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.multiDescriptorSet.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.multiDescriptorSet.frag
new file mode 100644
index 00000000000..6c4be21ef3a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.multiDescriptorSet.frag
@@ -0,0 +1,45 @@
+Texture2D txDiffuseA : register( t0 );
+Texture2D txDiffuseB : register( t1 );
+
+SamplerState samLinearA : register( s0 );
+SamplerState samLinearB : register( s1 );
+
+cbuffer cbNeverChanges : register( b0 )
+{
+ matrix View;
+};
+
+cbuffer cbChangeOnResize : register( b1 )
+{
+ matrix Projection;
+};
+
+cbuffer cbChangesEveryFrame : register( b2 )
+{
+ matrix World;
+ float4 vMeshColor;
+};
+
+
+struct VS_INPUT
+{
+ float4 Pos : POSITION;
+ float2 Tex : TEXCOORD0;
+};
+
+struct PS_INPUT
+{
+ float4 Pos : SV_POSITION;
+ float2 Tex : TEXCOORD0;
+};
+
+
+float4 main( PS_INPUT input) : SV_Target
+{
+ PS_INPUT output = (PS_INPUT)0;
+ output.Pos = mul( input.Pos, World );
+ output.Pos = mul( output.Pos, View );
+ output.Pos = mul( output.Pos, Projection );
+ output.Tex = input.Tex;
+ return txDiffuseA.Sample( samLinearA, output.Tex ) * vMeshColor;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.namespace.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.namespace.frag
new file mode 100644
index 00000000000..76c3062d6a1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.namespace.frag
@@ -0,0 +1,23 @@
+static float4 v1;
+static float4 v2;
+
+namespace N1 {
+ float4 getVec() { return v1; }
+}
+
+namespace N2 {
+ static float gf;
+ float4 getVec() { return v2; }
+ namespace N3 {
+ float4 getVec() { return v2; }
+
+ class C1 {
+ float4 getVec() { return v2; }
+ };
+ }
+}
+
+float4 main() : SV_Target0
+{
+ return N1::getVec() + N2::getVec() + N2::N3::getVec() + N2::N3::C1::getVec() * N2::gf;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.nonint-index.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.nonint-index.frag
new file mode 100644
index 00000000000..c7a751e306a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.nonint-index.frag
@@ -0,0 +1,9 @@
+static const float array[3] = { 1, 2, 3 };
+
+float main(float input : IN) : SV_Target0
+{
+ // non-integer indexes get converted to uints:
+ // uint(input) 3.0 2.0 1.0
+ return array[input] + array[2.0] + array[true] + array[false];
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.opaque-type-bug.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.opaque-type-bug.frag
new file mode 100644
index 00000000000..f4ccaea2907
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.opaque-type-bug.frag
@@ -0,0 +1,16 @@
+
+Texture2D MyTexture : register(t0);
+
+//----------------------------------------------------------------------------------------
+void TexFunc(in const Texture2D t2D, out float3 RGB)
+{
+ RGB = 0;
+}
+
+//-----------------------------------------------------------------------------------
+void main()
+{
+ float3 final_RGB;
+
+ TexFunc(MyTexture, final_RGB);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.partialFlattenLocal.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.partialFlattenLocal.vert
new file mode 100644
index 00000000000..9d6cdc900c8
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.partialFlattenLocal.vert
@@ -0,0 +1,27 @@
+Texture2D tex;
+
+struct Packed {
+ Texture2D tex;
+ float3 pos[3];
+ float2 uv[2];
+ float x;
+ int n;
+};
+
+float4 main(float4 pos : POSITION) : SV_POSITION
+{
+ Packed packed;
+ packed.tex = tex;
+ packed.pos[0] = float3(0, 0, 0);
+ packed.uv[0] = float2(0, 1);
+ packed.x = 1.0;
+ packed.n = 3;
+
+ for (int i = 0; i < 1; ++i) {
+ packed.pos[i].xy += packed.uv[i];
+ }
+
+ Packed packed2 = packed;
+
+ return pos + float4(packed2.pos[0], 0);
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.partialFlattenMixed.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.partialFlattenMixed.vert
new file mode 100644
index 00000000000..3fc9d68e23d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.partialFlattenMixed.vert
@@ -0,0 +1,16 @@
+Texture2D tex[2];
+
+struct Packed {
+ int a;
+ Texture2D membTex[2];
+ int b;
+};
+
+float4 main(float4 pos : POSITION) : SV_POSITION
+{
+ Packed packed;
+
+ packed.membTex = tex;
+
+ return pos;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.pp.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.pp.vert
new file mode 100644
index 00000000000..4b0a451239b
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.pp.vert
@@ -0,0 +1,17 @@
+#define A defined(B)
+
+#if A
+int badGlobal1;
+#else
+int goodGlobal1;
+#endif
+
+#define B
+
+#if A
+int goodGlobal2;
+#else
+int badGlobal2;
+#endif
+
+void main() {}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.preprocessor.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.preprocessor.frag
new file mode 100644
index 00000000000..dba341efdd5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.preprocessor.frag
@@ -0,0 +1,13 @@
+#define DEFINE_TEXTURE(name) Texture2D name; SamplerState name##_ss;
+#define SAMPLE_TEXTURE(name, uv) name.Sample(name##_ss, (uv).xy)
+
+#define test_texture2 test_texture
+
+DEFINE_TEXTURE(test_texture)
+
+float4 main(float4 input : TEXCOORD0) : SV_TARGET
+{
+ float4 tex = SAMPLE_TEXTURE(test_texture2, input.xy);
+ return tex;
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.reflection.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.reflection.vert
index 21cc81092e9..06207c74f89 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.reflection.vert
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.reflection.vert
@@ -19,27 +19,10 @@ cbuffer c_nameless {
float4 c_anonMember3;
};
-cbuffer named {
- float3 deadMember1;
- int scalar;
- float4 member2;
- float4 member3;
- float2 memfloat2;
- float memf1;
- bool memf2;
- int memf3;
- float2 memfloat2a;
- float2x2 m22[7];
-} ablock;
-
cbuffer namelessdead {
int a;
};
-cbuffer namedDead {
- int b;
-} bblock;
-
struct N1 {
float a;
};
@@ -57,7 +40,7 @@ struct N3 {
cbuffer nested {
N3 foo;
-} nest;
+}
struct TS {
int a;
@@ -89,16 +72,12 @@ struct deep3 {
int3 v3;
};
-
-
-
uniform deep3 deepA[2], deepB[2], deepC[3], deepD[2];
const bool control = true;
void deadFunction()
{
- float3 v3 = ablock.deadMember1;
float4 v = anonDeadMember2;
float f = ufDead4;
}
@@ -110,12 +89,12 @@ void liveFunction2()
}
tbuffer abl {
- float foo;
-} arrBl;
+ float foo1;
+}
tbuffer abl2 {
- float foo;
-} arrBl2;
+ float foo2;
+}
void flizv(in float attributeFloat, in float2 attributeFloat2, in float3 attributeFloat3, in float4 attributeFloat4, in float4x4 attributeMat4)
{
@@ -130,22 +109,16 @@ void flizv(in float attributeFloat, in float2 attributeFloat2, in float3 attribu
liveFunction2();
f = anonMember3.z;
f = s.a;
- f = ablock.scalar;
f = m23[1].y + scalarAfterm23;
f = c_m23[1].y + c_scalarAfterm23;
f += scalarBeforeArray;
f += floatArray[2];
f += floatArray[4];
f += scalarAfterArray;
- f += ablock.memfloat2.x;
- f += ablock.memf1;
- f += float(ablock.memf2);
- f += ablock.memf3;
- f += ablock.memfloat2a.y;
- f += ablock.m22[i][1][0];
+ f += m22[i][1][0];
f += dm22[3][0][1];
f += m22[2][1].y;
- f += nest.foo.n1.a + nest.foo.n2.b + nest.foo.n2.c + nest.foo.n2.d;
+ f += foo.n1.a + foo.n2.b + foo.n2.c + foo.n2.d;
f += deepA[i].d2.d1[2].va[1].x;
f += deepB[1].d2.d1[i].va[1].x;
f += deepB[i].d2.d1[i].va[1].x;
@@ -154,8 +127,8 @@ void flizv(in float attributeFloat, in float2 attributeFloat2, in float3 attribu
} else
f = ufDead3;
- f += arrBl.foo + arrBl.foo;
- f += arrBl2.foo;
+ f += foo1 + foo2;
+ f += foo2;
f += attributeFloat;
f += attributeFloat2.x;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.dualmode.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.dualmode.frag
new file mode 100644
index 00000000000..5b600f3b6e6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.dualmode.frag
@@ -0,0 +1,14 @@
+SamplerState g_sSamp : register(s0);
+SamplerComparisonState g_sSampCmp : register(s1);
+
+uniform Texture1D <float4> g_tTex : register(t3);
+
+float4 main() : SV_Target0
+{
+ // This texture is used with both shadow modes. It will need post-compilation
+ // legalization.
+ g_tTex.SampleCmp(g_sSampCmp, 0.1, 0.75);
+ g_tTex.Sample(g_sSamp, 0.1);
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.negative.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.negative.frag
new file mode 100644
index 00000000000..8851982129b
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.negative.frag
@@ -0,0 +1,13 @@
+
+Texture2D g_nonShadowTex;
+Texture2D g_shadowTex;
+SamplerState g_shadowSampler;
+SamplerComparisonState g_shadowSamplerComp;
+
+float4 main() : SV_Target0
+{
+ g_shadowTex.SampleCmp(g_shadowSamplerComp, float2(0,0), 0); // OK
+ g_nonShadowTex.SampleCmp(g_shadowSampler, float2(0,0), 0); // ERROR (should be comparison sampler)
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.negative2.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.negative2.frag
new file mode 100644
index 00000000000..33a2133ab0e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.samplecmp.negative2.frag
@@ -0,0 +1,10 @@
+
+Texture2D g_shadowTex;
+SamplerState g_shadowSampler;
+
+float4 main() : SV_Target0
+{
+ g_shadowTex.GatherCmpRed(g_shadowSampler, float2(0,0), 0, int2(0,0)); // ERROR (should be comparison sampler)
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalar-length.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalar-length.frag
new file mode 100644
index 00000000000..2b7ebdb92d1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalar-length.frag
@@ -0,0 +1,6 @@
+float4 main() : SV_Target0
+{
+ float4 test = { 0, 1, 2, 3 };
+
+ return length(test.a);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalar2matrix.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalar2matrix.frag
new file mode 100644
index 00000000000..406887574bd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalar2matrix.frag
@@ -0,0 +1,28 @@
+
+void Fn1(float4x4 p) { }
+
+float4 main() : SV_TARGET
+{
+ const float4x4 mat1c = 0.20;
+ const float4x4 mat2c = {2, 2.1, 2.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ const float4x4 mat3c = (float4x4)float1(0.1);
+
+ float4x4 mat1 = 0.25;
+ float4x4 mat2 = {3, 3.1, 3.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ float4x4 mat3 = (float4x4)0.375;
+ // float4x4 mat5 = (float4x4)Fn2(); // TODO: enable when compex rvalue handling is in place
+
+ float4x4 mat4;
+ mat4 = 0.75;
+ mat4 = float4x4(4, 4.1, 4.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ mat4 = (float4x4)0.5;
+
+ mat4 *= 0.75;
+ mat4 += 0.75;
+ mat4 -= 0.5;
+ mat4 /= 2.0;
+
+ Fn1(5.0); // test calling fn accepting matrix with scalar type
+
+ return mat1c[0] + mat3c[0] + mat1[1] + mat4[2];
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalarCast.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalarCast.vert
new file mode 100644
index 00000000000..83bfd6eb20b
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.scalarCast.vert
@@ -0,0 +1,37 @@
+struct VertexOut {
+ float4 position : SV_Position;
+ float2 texCoord : TEXCOORD;
+};
+VertexOut r0() {
+ const float f = 2.0;
+ return (VertexOut)f;
+}
+VertexOut r1() {
+ const float f = 2.0;
+ return (VertexOut)(f + 1.0);
+}
+VertexOut r2() {
+ const float f = 2.0;
+ return (VertexOut)(sin(f));
+}
+VertexOut r3() {
+ float f = 2.0;
+ return (VertexOut)f;
+}
+VertexOut r4() {
+ float f = 2.0;
+ return (VertexOut)(f + 1.0);
+}
+VertexOut r5() {
+ float f = 2.0;
+ return (VertexOut)(sin(f));
+}
+VertexOut main() {
+ VertexOut v0 = r0();
+ VertexOut v1 = r1();
+ VertexOut v2 = r2();
+ VertexOut v3 = r3();
+ VertexOut v4 = r4();
+ VertexOut v5 = r5();
+ return (VertexOut)1;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic-1.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic-1.vert
new file mode 100644
index 00000000000..ec92428caf6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic-1.vert
@@ -0,0 +1,24 @@
+#define DLAYER 3
+
+#define DMACRO1 TEXCOORD1
+#define DMACRO(num) TEXCOORD##num
+
+struct S {
+ float4 pos : POSITION;
+ float2 UV0 : TEXCOORD0;
+ float2 UV1 : DMACRO1;
+ float2 UV2 : DMACRO(2);
+ float2 UV3 : DMACRO(DLAYER);
+};
+
+
+S main(float4 v : POSITION)
+{
+ S s;
+ s.pos = v;
+ s.UV0 = float2(v.x,v.x);
+ s.UV1 = float2(v.y,v.y);
+ s.UV2 = float2(v.z,v.z);
+ s.UV3 = float2(v.w,v.w);
+ return s;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic.geom b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic.geom
index c4d7abad7e7..fc6a53ab4ca 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic.geom
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic.geom
@@ -1,4 +1,5 @@
struct S {
+ float clip0 : SV_Position;
float clip0 : SV_ClipDistance0;
float cull0 : SV_CullDistance0;
uint vpai : SV_ViewportArrayIndex;
@@ -7,9 +8,9 @@ struct S {
};
[maxvertexcount(4)]
-S main(triangle in uint VertexID[3] : VertexID,
+void main(triangle in uint VertexID[3] : VertexID,
inout LineStream<S> OutputStream)
{
S s;
- return s;
+ OutputStream.Append(s);
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic.vert
index 16bba37f9a0..1845dc3c728 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic.vert
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.semantic.vert
@@ -1,10 +1,8 @@
struct S {
- float clip : SV_ClipDistance;
float clip0 : SV_ClipDistance0;
- float clip7 : SV_ClipDistance7;
- float cull : SV_CullDistance;
- float cull2 : SV_CullDistance2;
- float cull5 : SV_CullDistance5;
+ float clip1 : SV_ClipDistance1;
+ float cull0 : SV_CullDistance0;
+ float cull1 : SV_CullDistance1;
int ii : SV_InstanceID;
};
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.shapeConv.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.shapeConv.frag
index adb170eab35..bc09d80a350 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.shapeConv.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.shapeConv.frag
@@ -28,5 +28,22 @@ float4 PixelShaderFunction(float4 input, float f) : COLOR0
f1.x;
f1.xxx;
- return input;
+ const float4 f4 = 3.0;
+
+ uint ui;
+ uint3 ui3;
+
+ ui >> ui3;
+ ui3 >> ui;
+
+ v *= f1;
+ f1 *= v;
+
+ float3 mixed = u * v;
+ f = u;
+ f1 = u;
+ float sf = v;
+ float1 sf1 = v;
+
+ return input * f4;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.shift.per-set.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.shift.per-set.frag
new file mode 100644
index 00000000000..9c29f9d96cc
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.shift.per-set.frag
@@ -0,0 +1,59 @@
+// Test register class offsets for different resource types
+
+SamplerState s1 : register(s1, space1);
+SamplerComparisonState s2 : register(s2, space2);
+
+Texture1D <float4> t1 : register(t1, space1);
+Texture2D <float4> t2 : register(t2, space1);
+Texture3D <float4> t3 : register(t1, space2);
+
+StructuredBuffer<float4> t4 : register(t1, space3);
+
+ByteAddressBuffer t5 : register(t2, space3);
+Buffer<float4> t6 : register(t3, space3);
+
+RWTexture1D <float4> u1 : register(u1, space1);
+RWTexture2D <float4> u2 : register(u2, space2);
+RWTexture3D <float4> u3 : register(u3, space2);
+
+RWBuffer <float> u4 : register(u4, space1);
+RWByteAddressBuffer u5 : register(u4, space2);
+RWStructuredBuffer<float> u6 : register(u4, space3);
+AppendStructuredBuffer<float> u7 : register(u4, space4);
+ConsumeStructuredBuffer<float> u8 : register(u4, space5);
+
+cbuffer cb : register(b1, space6) {
+ int cb1;
+};
+
+tbuffer tb : register(t7) {
+ int tb1;
+};
+
+float4 main() : SV_Target0
+{
+ t1;
+ t2;
+ t3;
+ t4[0];
+ t5.Load(0);
+ t6;
+
+ s1;
+ s2;
+
+ u1;
+ u2;
+ u3;
+
+ u4[0];
+ u5.Load(0);
+ u6[0];
+ u7;
+ u8;
+
+ cb1;
+ tb1;
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.snorm.uav.comp b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.snorm.uav.comp
new file mode 100644
index 00000000000..c6cafebeb97
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.snorm.uav.comp
@@ -0,0 +1,15 @@
+
+unorm float4 uf4;
+
+Texture3D<unorm float4> ResultInU: register(t0);
+RWTexture3D<unorm float4> ResultOutU: register(u0);
+
+Texture3D<snorm float4> ResultInS: register(t1);
+RWTexture3D<snorm float4> ResultOutS: register(u1);
+
+[numthreads(16, 16, 1)]
+void main(uint3 tid: SV_DispatchThreadID)
+{
+ ResultOutS[tid] = ResultInS[tid] + uf4;
+ ResultOutU[tid] = ResultInU[tid];
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.struct.split.assign.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.struct.split.assign.frag
index e7fe028870c..d9921f30e6e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.struct.split.assign.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.struct.split.assign.frag
@@ -8,5 +8,5 @@ float4 main(int i, S input[3]) : COLOR0
S a[3];
input = a;
- return float3(1.0);
+ return a[1].pos;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.struct.split.nested.geom b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.struct.split.nested.geom
index 03bf38f3e28..8bcc5b994ab 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.struct.split.nested.geom
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.struct.split.nested.geom
@@ -1,8 +1,8 @@
struct STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO
{
- float m0_array[2];
- int m1;
+ float m0_array[2] : mysemA;
+ int m1 : mysemB;
};
struct PS_IN
@@ -26,6 +26,9 @@ void main(triangle PS_IN tin[3], inout TriangleStream <GS_OUT> ts )
o.psIn.pos = float4(1,2,3,4);
o.psIn.tc = float2(5,6);
+ o.contains_no_builtin_io.m0_array[0] = 2.3;
+ o.contains_no_builtin_io.m0_array[1] = 2.3;
+ o.contains_no_builtin_io.m1 = 2;
ts.Append(o);
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.append.fn.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.append.fn.frag
new file mode 100644
index 00000000000..668bc1e8eaa
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.append.fn.frag
@@ -0,0 +1,23 @@
+
+// float4 Fn1(ConsumeStructuredBuffer<float4> arg_c)
+// {
+// return arg_c.Consume();
+// }
+
+float4 Fn2(AppendStructuredBuffer<float4> arg_a, ConsumeStructuredBuffer<float4> arg_c)
+{
+ arg_a.Append(float4(1,2,3,4));
+ return arg_c.Consume();
+}
+
+AppendStructuredBuffer<float4> sbuf_a;
+ConsumeStructuredBuffer<float4> sbuf_c;
+
+AppendStructuredBuffer<float4> sbuf_unused;
+
+float4 main(uint pos : FOO) : SV_Target0
+{
+ // Fn1(sbuf_c);
+
+ return Fn2(sbuf_a, sbuf_c);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.append.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.append.frag
new file mode 100644
index 00000000000..4c4bc3fc56d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.append.frag
@@ -0,0 +1,11 @@
+AppendStructuredBuffer<float4> sbuf_a;
+ConsumeStructuredBuffer<float4> sbuf_c;
+
+AppendStructuredBuffer<float4> sbuf_unused;
+
+float4 main(uint pos : FOO) : SV_Target0
+{
+ sbuf_a.Append(float4(1,2,3,4));
+
+ return sbuf_c.Consume();
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.floatidx.comp b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.floatidx.comp
new file mode 100644
index 00000000000..0ddf0c21c4c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.floatidx.comp
@@ -0,0 +1,19 @@
+struct sb_t
+{
+ float4 color;
+ uint2 threadId;
+};
+
+RWTexture2D<float4> outtx;
+ConsumeStructuredBuffer<sb_t> csb : register(u1);
+RWStructuredBuffer<float4> rwsb;
+
+[numthreads(1, 1, 1)]
+void main(uint3 nThreadId : SV_DispatchThreadID)
+{
+ sb_t data = csb.Consume();
+ float2 coord = float2(data.threadId.xy);
+ outtx[coord] = data.color;
+
+ rwsb[coord.x] = rwsb.Load(coord.y);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.fn2.comp b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.fn2.comp
new file mode 100644
index 00000000000..e651e91939a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.fn2.comp
@@ -0,0 +1,15 @@
+ByteAddressBuffer g_input: register(t0);
+RWBuffer<uint2> g_output : register(u1);
+
+uint2 testLoad(uint loc, ByteAddressBuffer buffer)
+{
+ uint2 result = buffer.Load2(loc);
+ return result;
+}
+
+[numthreads(256, 1, 1)]
+void main(uint dispatchId : SV_DispatchThreadID)
+{
+ uint2 result = testLoad(dispatchId, g_input);
+ g_output[dispatchId] = result;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.incdec.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.incdec.frag
new file mode 100644
index 00000000000..108dcb61030
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structbuffer.incdec.frag
@@ -0,0 +1,19 @@
+RWStructuredBuffer<uint4> sbuf_rw_i;
+RWStructuredBuffer<uint4> sbuf_rw_d;
+
+RWStructuredBuffer<uint4> sbuf_rw_nocounter; // doesn't use inc or dec
+
+float4 main(uint pos : FOO) : SV_Target0
+{
+ uint4 result = 0;
+
+ sbuf_rw_i[7];
+ sbuf_rw_d[7];
+
+ sbuf_rw_nocounter[5] = 2;
+
+ uint c1 = sbuf_rw_i.IncrementCounter();
+ uint c2 = sbuf_rw_d.DecrementCounter();
+
+ return float4(result.x, result.y, c1, c2);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structin.vert b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structin.vert
index 43d0cfd0bbd..20a26dd9eb9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structin.vert
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.structin.vert
@@ -1,14 +1,17 @@
struct VI {
- float4 m[2];
- uint2 coord;
- linear float4 b;
+ float4 m[2] : mysemA;
+ float4 coord : SV_POSITION;
+ linear float4 b : mysemB;
};
-VI main(float4 d, VI vi, float4 e) : SV_POSITION
+VI main(float4 d : mysem, VI vi, float4 e : mysem)
{
VI local;
- local.b = vi.m[1] + vi.m[0] + float4(vi.coord.x) + d + e;
+ local.b = vi.m[1] + vi.m[0] + (float4)vi.coord.x + d + e;
+ local.coord = (float4)1;
+ local.m[0] = (float4)2;
+ local.m[1] = (float4)3;
return local;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.subpass.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.subpass.frag
new file mode 100644
index 00000000000..20a717f8fc4
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.subpass.frag
@@ -0,0 +1,113 @@
+
+layout(input_attachment_index = 1) SubpassInput<float4> subpass_f4 : register(t1);
+layout(input_attachment_index = 2) SubpassInput<int4> subpass_i4;
+layout(input_attachment_index = 3) SubpassInput<uint4> subpass_u4;
+
+layout(input_attachment_index = 4) SubpassInputMS<float4> subpass_ms_f4;
+layout(input_attachment_index = 5) SubpassInputMS<int4> subpass_ms_i4;
+layout(input_attachment_index = 6) SubpassInputMS<uint4> subpass_ms_u4;
+
+layout(input_attachment_index = 1) SubpassInput<float3> subpass_f3;
+layout(input_attachment_index = 2) SubpassInput<int3> subpass_i3;
+layout(input_attachment_index = 3) SubpassInput<uint3> subpass_u3;
+
+layout(input_attachment_index = 4) SubpassInputMS<float3> subpass_ms_f3;
+layout(input_attachment_index = 5) SubpassInputMS<int3> subpass_ms_i3;
+layout(input_attachment_index = 6) SubpassInputMS<uint3> subpass_ms_u3;
+
+layout(input_attachment_index = 1) SubpassInput<float2> subpass_f2;
+layout(input_attachment_index = 2) SubpassInput<int2> subpass_i2;
+layout(input_attachment_index = 3) SubpassInput<uint2> subpass_u2;
+
+layout(input_attachment_index = 4) SubpassInputMS<float2> subpass_ms_f2;
+layout(input_attachment_index = 5) SubpassInputMS<int2> subpass_ms_i2;
+layout(input_attachment_index = 6) SubpassInputMS<uint2> subpass_ms_u2;
+
+layout(input_attachment_index = 1) SubpassInput<float> subpass_f;
+layout(input_attachment_index = 2) SubpassInput<int> subpass_i;
+layout(input_attachment_index = 3) SubpassInput<uint> subpass_u;
+
+layout(input_attachment_index = 4) SubpassInputMS<float> subpass_ms_f;
+layout(input_attachment_index = 5) SubpassInputMS<int> subpass_ms_i;
+layout(input_attachment_index = 6) SubpassInputMS<uint> subpass_ms_u;
+
+[[vk::input_attachment_index(7)]] SubpassInput subpass_2;
+
+struct mystruct_f_t
+{
+ float c0;
+ float2 c1;
+ float c2;
+};
+
+struct mystruct_i_t
+{
+ int c0;
+ int2 c1;
+ int c2;
+};
+
+struct mystruct_u_t
+{
+ uint c0;
+ uint2 c1;
+ uint c2;
+};
+
+// TODO: ...
+// layout(input_attachment_index = 7) SubpassInput<mystruct_f_t> subpass_fs;
+// layout(input_attachment_index = 8) SubpassInputMS<mystruct_f_t> subpass_ms_fs;
+
+// layout(input_attachment_index = 7) SubpassInput<mystruct_i_t> subpass_is;
+// layout(input_attachment_index = 8) SubpassInputMS<mystruct_i_t> subpass_ms_is;
+
+// layout(input_attachment_index = 7) SubpassInput<mystruct_u_t> subpass_us;
+// layout(input_attachment_index = 8) SubpassInputMS<mystruct_u_t> subpass_ms_us;
+
+float4 main() : SV_Target0
+{
+ float4 result00 = subpass_f4.SubpassLoad();
+ int4 result01 = subpass_i4.SubpassLoad();
+ uint4 result02 = subpass_u4.SubpassLoad();
+
+ float4 result10 = subpass_ms_f4.SubpassLoad(3);
+ int4 result11 = subpass_ms_i4.SubpassLoad(3);
+ uint4 result12 = subpass_ms_u4.SubpassLoad(3);
+
+ float3 result20 = subpass_f3.SubpassLoad();
+ int3 result21 = subpass_i3.SubpassLoad();
+ uint3 result22 = subpass_u3.SubpassLoad();
+
+ float3 result30 = subpass_ms_f3.SubpassLoad(3);
+ int3 result31 = subpass_ms_i3.SubpassLoad(3);
+ uint3 result32 = subpass_ms_u3.SubpassLoad(3);
+
+ float2 result40 = subpass_f2.SubpassLoad();
+ int2 result41 = subpass_i2.SubpassLoad();
+ uint2 result42 = subpass_u2.SubpassLoad();
+
+ float2 result50 = subpass_ms_f2.SubpassLoad(2);
+ int2 result51 = subpass_ms_i2.SubpassLoad(2);
+ uint2 result52 = subpass_ms_u2.SubpassLoad(2);
+
+ float result60 = subpass_f.SubpassLoad();
+ int result61 = subpass_i.SubpassLoad();
+ uint result62 = subpass_u.SubpassLoad();
+
+ float result70 = subpass_ms_f.SubpassLoad(2);
+ int result71 = subpass_ms_i.SubpassLoad(2);
+ uint result72 = subpass_ms_u.SubpassLoad(2);
+
+ float4 result73 = subpass_2.SubpassLoad();
+
+ // TODO:
+ // mystruct_f_t result80 = subpass_fs.SubpassLoad();
+ // mystruct_i_t result81 = subpass_is.SubpassLoad();
+ // mystruct_u_t result82 = subpass_us.SubpassLoad();
+
+ // mystruct_f_t result90 = subpass_ms_sf.SubpassLoad(2);
+ // mystruct_i_t result91 = subpass_ms_if.SubpassLoad(2);
+ // mystruct_u_t result92 = subpass_ms_uf.SubpassLoad(2);
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.switch.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.switch.frag
index 88239c2bec9..78ebfef343d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.switch.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.switch.frag
@@ -18,7 +18,7 @@ float4 PixelShaderFunction(float4 input, int c, int d) : COLOR0
break;
}
- switch (c) {
+ [branch] switch (c) {
case 1:
++input;
break;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.synthesizeInput.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.synthesizeInput.frag
new file mode 100644
index 00000000000..c4b2fa4c82b
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.synthesizeInput.frag
@@ -0,0 +1,9 @@
+struct PSInput {
+ float interp;
+ uint no_interp;
+};
+
+float4 main(PSInput input : INPUT) : SV_TARGET
+{
+ return float4(float(input.no_interp), input.interp, 0, 1);
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.target.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.target.frag
new file mode 100644
index 00000000000..5317236a04c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.target.frag
@@ -0,0 +1,10 @@
+struct PSInput {
+ float interp;
+ uint no_interp;
+};
+
+void main(PSInput input : INPUT, out float4 out1 : SV_TARGET1, out float4 out2 : SV_TARGET3)
+{
+ out1 = 1;
+ out2 = 0;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.targetStruct1.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.targetStruct1.frag
new file mode 100644
index 00000000000..7fcc0827d30
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.targetStruct1.frag
@@ -0,0 +1,19 @@
+struct PSInput {
+ float interp;
+ uint no_interp;
+};
+
+struct PSOutput {
+ float4 o1 : SV_TARGET2;
+ float4 o2 : SV_TARGET1;
+};
+
+PSOutput main(PSInput input : INPUT, out float4 po : SV_TARGET0)
+{
+ PSOutput pso;
+ pso.o1 = float4(float(input.no_interp), input.interp, 0, 1);
+ pso.o2 = 1;
+ po = 0;
+
+ return pso;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.targetStruct2.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.targetStruct2.frag
new file mode 100644
index 00000000000..e62ba0f6e2d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.targetStruct2.frag
@@ -0,0 +1,19 @@
+struct PSInput {
+ float interp;
+ uint no_interp;
+};
+
+struct PSOutput {
+ float4 o1 : SV_TARGET1;
+ float4 o2 : SV_TARGET0;
+};
+
+PSOutput main(PSInput input : INPUT, out float4 po : SV_TARGET0) : SV_TARGET2
+{
+ PSOutput pso;
+ pso.o1 = float4(float(input.no_interp), input.interp, 0, 1);
+ pso.o2 = 1;
+ po = 0;
+
+ return pso;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texture.struct.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texture.struct.frag
new file mode 100644
index 00000000000..461469cd484
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texture.struct.frag
@@ -0,0 +1,55 @@
+struct s1_t {
+ float c0;
+ float2 c1;
+ float c2;
+};
+
+struct s2_t {
+ float c0;
+ float3 c1;
+};
+
+struct s3_t {
+ float2 c0;
+ float1 c1;
+};
+
+struct s4_t {
+ int c0;
+ int2 c1;
+ int c2;
+};
+
+struct s5_t {
+ uint c0;
+ uint c1;
+};
+
+SamplerState g_sSamp;
+Texture2D <s1_t> g_tTex2s1;
+Texture2D <s2_t> g_tTex2s2;
+Texture2D <s3_t> g_tTex2s3;
+Texture2D <s4_t> g_tTex2s4;
+Texture2D <s5_t> g_tTex2s5;
+
+Texture2D <s1_t> g_tTex2s1a; // same type as g_tTex2s1, to test fn signature matching.
+
+// function overloading to test name mangling with textures templatized on structs
+s1_t fn1(Texture2D <s1_t> t1) { return t1 . Sample(g_sSamp, float2(0.6, 0.61)); }
+s2_t fn1(Texture2D <s2_t> t2) { return t2 . Sample(g_sSamp, float2(0.6, 0.61)); }
+
+float4 main() : SV_Target0
+{
+ s1_t s1 = g_tTex2s1 . Sample(g_sSamp, float2(0.1, 0.11));
+ s2_t s2 = g_tTex2s2 . Sample(g_sSamp, float2(0.2, 0.21));
+ s3_t s3 = g_tTex2s3 . Sample(g_sSamp, float2(0.3, 0.31));
+ s4_t s4 = g_tTex2s4 . Sample(g_sSamp, float2(0.4, 0.41));
+ s5_t s5 = g_tTex2s5 . Sample(g_sSamp, float2(0.5, 0.51));
+
+ s1_t r0 = fn1(g_tTex2s1);
+ s2_t r1 = fn1(g_tTex2s2);
+ s1_t r2 = fn1(g_tTex2s1a);
+
+ return 0;
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texture.subvec4.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texture.subvec4.frag
new file mode 100644
index 00000000000..56fd4106ce9
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texture.subvec4.frag
@@ -0,0 +1,41 @@
+
+Texture2DMS <float> g_tTex2dmsf1;
+Texture2DMS <float2> g_tTex2dmsf2;
+Texture2DMS <float3> g_tTex2dmsf3;
+Texture2DMS <float4> g_tTex2dmsf4;
+
+Texture2D <float> g_tTex2df1;
+Texture2D <float2> g_tTex2df2;
+Texture2D <float3> g_tTex2df3;
+Texture2D <float4> g_tTex2df4;
+
+SamplerState g_sSamp;
+
+float4 main() : SV_Target0
+{
+ uint MipLevel;
+ uint WidthU;
+ uint HeightU;
+ uint ElementsU;
+ uint DepthU;
+ uint NumberOfLevelsU;
+ uint NumberOfSamplesU;
+
+ g_tTex2dmsf1 . GetDimensions(WidthU, HeightU, NumberOfSamplesU);
+ g_tTex2dmsf2 . GetDimensions(WidthU, HeightU, NumberOfSamplesU);
+ g_tTex2dmsf3 . GetDimensions(WidthU, HeightU, NumberOfSamplesU);
+ g_tTex2dmsf4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU);
+
+ g_tTex2dmsf1 . Load(int2(1,2), 3);
+ g_tTex2dmsf2 . Load(int2(1,2), 3);
+ g_tTex2dmsf3 . Load(int2(1,2), 3);
+ g_tTex2dmsf4 . Load(int2(1,2), 3);
+
+ g_tTex2df1 . Sample(g_sSamp, float2(.1, .2));
+ g_tTex2df2 . Sample(g_sSamp, float2(.1, .2));
+ g_tTex2df3 . Sample(g_sSamp, float2(.1, .2));
+ g_tTex2df4 . Sample(g_sSamp, float2(.1, .2));
+
+ return 0;
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texturebuffer.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texturebuffer.frag
new file mode 100644
index 00000000000..d06974656c7
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.texturebuffer.frag
@@ -0,0 +1,17 @@
+
+struct Data {
+ float4 f;
+ int4 i;
+};
+
+TextureBuffer<Data> TextureBuffer_var : register(t0);
+
+tbuffer tbuf2 {
+ float4 f2;
+ int4 i2;
+};
+
+float4 main(float4 pos : SV_POSITION) : SV_TARGET
+{
+ return TextureBuffer_var.f + f2;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.tx.overload.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.tx.overload.frag
new file mode 100644
index 00000000000..8b83ddfc99d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.tx.overload.frag
@@ -0,0 +1,17 @@
+
+Texture2D<float> tf1;
+Texture2D<float4> tf4;
+
+RWTexture2D<float> twf1;
+RWTexture2D<float4> twf4;
+
+float Func(Texture2D<float> DummyTex) { return 1.0f; }
+float4 Func(Texture2D<float4> DummyTex) { return float4(0,0,0,0); }
+
+float Func(RWTexture2D<float> DummyTex) { return 1.0f; }
+float4 Func(RWTexture2D<float4> DummyTex) { return float4(0,0,0,0); }
+
+float4 main() : SV_TARGET
+{
+ return Func(tf1) + Func(tf4) + Func(twf1) + Func(twf4);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.type.half.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.type.half.frag
index f082039d296..a78afabf95d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.type.half.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.type.half.frag
@@ -7,5 +7,22 @@ float4 main() : SV_Target0
half3 h3 = 3;
half4 h4 = 4;
- return 0.0;
+ half1x1 h11;
+ half1x2 h12;
+ half1x3 h13;
+ half1x4 h14;
+ half2x1 h21;
+ half2x2 h22 = half2x2(1,2,3,4);
+ half2x3 h23 = (half2x3)4.9;
+ half2x4 h24;
+ half3x1 h31;
+ half3x2 h32;
+ half3x3 h33;
+ half3x4 h34;
+ half4x1 h41;
+ half4x2 h42;
+ half4x3 h43;
+ half4x4 h44;
+
+ return h23._11 + h4.y + h0;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.type.identifier.frag b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.type.identifier.frag
index 25ba45739f6..4e53a82ff15 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.type.identifier.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/hlsl.type.identifier.frag
@@ -24,5 +24,8 @@ float4 main() : SV_Target0
float = float + int + uint + min16float + min10float + (bool[0] ? int : float) + fn(float);
- return float;
+ half2x3 half2x3;
+ half2x3._11 = (float) * float;
+
+ return float + half2x3._11;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/implicitInnerAtomicUint.frag b/3rdparty/bgfx/3rdparty/glslang/Test/implicitInnerAtomicUint.frag
new file mode 100644
index 00000000000..bb76516fd60
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/implicitInnerAtomicUint.frag
@@ -0,0 +1,2 @@
+#version 460
+layout(binding = 0) uniform atomic_uint c[1][]; \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc1/badInc.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/badInc.h
new file mode 100644
index 00000000000..a77135538c5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/badInc.h
@@ -0,0 +1 @@
+#include "parentBad"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc1/bar.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/bar.h
new file mode 100644
index 00000000000..1a650fb6ad1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/bar.h
@@ -0,0 +1,3 @@
+float4 i2;
+
+#include "foo.h"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc1/foo.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/foo.h
new file mode 100644
index 00000000000..1819034d558
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/foo.h
@@ -0,0 +1,3 @@
+#include "parent.h"
+
+float4 i3;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/bar.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/bar.h
new file mode 100644
index 00000000000..46141dd1bc3
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/bar.h
@@ -0,0 +1 @@
+float4 i9991;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/local.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/local.h
new file mode 100644
index 00000000000..b3aac8e3af6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/local.h
@@ -0,0 +1 @@
+float4 p2;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/notHere.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/notHere.h
new file mode 100644
index 00000000000..2e7d56a67b9
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path1/notHere.h
@@ -0,0 +1,4 @@
+float4 p1;
+
+#include "local.h"
+#include "remote.h"
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/bar.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/bar.h
new file mode 100644
index 00000000000..46141dd1bc3
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/bar.h
@@ -0,0 +1 @@
+float4 i9991;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/notHere.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/notHere.h
new file mode 100644
index 00000000000..63f4ca47c8d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/notHere.h
@@ -0,0 +1 @@
+float4 paoeu1;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/remote.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/remote.h
new file mode 100644
index 00000000000..c925d27adcd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc1/path2/remote.h
@@ -0,0 +1 @@
+float4 p3;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc2/bar.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc2/bar.h
new file mode 100644
index 00000000000..901c058e7b9
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc2/bar.h
@@ -0,0 +1,2 @@
+#include "foo.h"
+float4 i5;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/inc2/foo.h b/3rdparty/bgfx/3rdparty/glslang/Test/inc2/foo.h
new file mode 100644
index 00000000000..fd09e808c4e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/inc2/foo.h
@@ -0,0 +1 @@
+float4 i6; \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/include.vert b/3rdparty/bgfx/3rdparty/glslang/Test/include.vert
new file mode 100644
index 00000000000..192a4891a4c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/include.vert
@@ -0,0 +1,16 @@
+#version 450
+
+#extension GL_GOOGLE_include_directive : enable
+
+#define float4 vec4
+
+#include "bar.h"
+#include "./inc1/bar.h"
+#include "inc2\bar.h"
+
+out vec4 color;
+
+void main()
+{
+ color = i1 + i2 + i3 + i4 + i5 + i6;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/invalidSwizzle.vert b/3rdparty/bgfx/3rdparty/glslang/Test/invalidSwizzle.vert
new file mode 100644
index 00000000000..799ff872d5c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/invalidSwizzle.vert
@@ -0,0 +1,10 @@
+#version 420
+
+void f();
+uniform sampler2D s;
+
+void main() {
+ vec2 v = s.rr; // Swizzles do not apply to samplers
+ f().xx; // Scalar swizzle does not apply to void
+ f().xy; // Vector swizzle does not apply either
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/numeral.frag b/3rdparty/bgfx/3rdparty/glslang/Test/numeral.frag
index cc0862ccd10..39814f4eddf 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/numeral.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/numeral.frag
@@ -101,3 +101,6 @@ uint g3 = 4294967294u;
int g4 = 4294967296; // ERROR, too big
int g5 = 4294967295;
int g6 = 4294967294;
+float inf1 = -1.#INF;
+float inf2 = 1.#INF;
+float inf3 = +1.#INF;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/overlongLiteral.frag b/3rdparty/bgfx/3rdparty/glslang/Test/overlongLiteral.frag
new file mode 100644
index 00000000000..c351ed6b8b0
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/overlongLiteral.frag
@@ -0,0 +1 @@
+0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/parent.h b/3rdparty/bgfx/3rdparty/glslang/Test/parent.h
new file mode 100644
index 00000000000..9ef68e0b844
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/parent.h
@@ -0,0 +1 @@
+float4 i4;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/parentBad b/3rdparty/bgfx/3rdparty/glslang/Test/parentBad
new file mode 100644
index 00000000000..e54c10d0599
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/parentBad
@@ -0,0 +1,3 @@
+int a;
+
+#error bad parent
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/reflection.vert b/3rdparty/bgfx/3rdparty/glslang/Test/reflection.vert
index be49822523c..7549f0816d7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/reflection.vert
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/reflection.vert
@@ -133,6 +133,26 @@ uniform abl2 {
float foo;
} arrBl2[4];
+buffer buf1 {
+ float scalar;
+ float runtimeArray[];
+} buf1i;
+
+buffer buf2 {
+ float scalar;
+ N2 runtimeArray[];
+} buf2i;
+
+buffer buf3 {
+ float scalar;
+ float runtimeArray[];
+} buf3i;
+
+buffer buf4 {
+ float scalar;
+ N2 runtimeArray[];
+} buf4i;
+
void main()
{
liveFunction1(image_ui2D, sampler_2D, sampler_2DMSArray);
@@ -179,4 +199,8 @@ void main()
f += attributeFloat3.x;
f += attributeFloat4.x;
f += attributeMat4[0][1];
+ f += buf1i.runtimeArray[3];
+ f += buf2i.runtimeArray[3].c;
+ f += buf3i.runtimeArray[gl_InstanceID];
+ f += buf4i.runtimeArray[gl_InstanceID].c;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/remap.invalid-spirv-1.spv b/3rdparty/bgfx/3rdparty/glslang/Test/remap.invalid-spirv-1.spv
new file mode 100644
index 00000000000..e5d59d4fbf8
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/remap.invalid-spirv-1.spv
Binary files differ
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/remap.invalid-spirv-2.spv b/3rdparty/bgfx/3rdparty/glslang/Test/remap.invalid-spirv-2.spv
new file mode 100644
index 00000000000..df8c96d8aa1
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/remap.invalid-spirv-2.spv
Binary files differ
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/remap.specconst.comp b/3rdparty/bgfx/3rdparty/glslang/Test/remap.specconst.comp
new file mode 100644
index 00000000000..52ac07aa054
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/remap.specconst.comp
@@ -0,0 +1,7 @@
+#version 450
+
+layout (local_size_x_id = 0, local_size_y_id = 1, local_size_z_id = 2) in;
+
+shared int foo[gl_WorkGroupSize.x + gl_WorkGroupSize.y * gl_WorkGroupSize.z];
+
+void main () {}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/runtests b/3rdparty/bgfx/3rdparty/glslang/Test/runtests
index 86ffef345cc..814210ba4a7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/runtests
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/runtests
@@ -3,6 +3,7 @@
TARGETDIR=localResults
BASEDIR=baseResults
EXE=../build/install/bin/glslangValidator
+REMAPEXE=../build/install/bin/spirv-remap
HASERROR=0
mkdir -p localResults
@@ -31,11 +32,12 @@ diff -b $BASEDIR/badMacroArgs.frag.out $TARGETDIR/badMacroArgs.frag.out || HASER
echo Running reflection...
$EXE -l -q -C reflection.vert > $TARGETDIR/reflection.vert.out
diff -b $BASEDIR/reflection.vert.out $TARGETDIR/reflection.vert.out || HASERROR=1
-$EXE -D -e flizv -l -q -C -V hlsl.reflection.vert > $TARGETDIR/hlsl.reflection.vert.out
+$EXE -D -e flizv -l -q -C -V -Od hlsl.reflection.vert > $TARGETDIR/hlsl.reflection.vert.out
diff -b $BASEDIR/hlsl.reflection.vert.out $TARGETDIR/hlsl.reflection.vert.out || HASERROR=1
-$EXE -D -e main -l -q -C -V hlsl.reflection.binding.frag > $TARGETDIR/hlsl.reflection.binding.frag.out
+$EXE -D -e main -l -q -C -V -Od hlsl.reflection.binding.frag > $TARGETDIR/hlsl.reflection.binding.frag.out
diff -b $BASEDIR/hlsl.reflection.binding.frag.out $TARGETDIR/hlsl.reflection.binding.frag.out || HASERROR=1
-
+$EXE -D -e main -l -q --hlsl-iomap --auto-map-bindings --stb 10 --sbb 20 --ssb 30 --suavb 40 --scb 50 -D -V -e main -Od hlsl.automap.frag > $TARGETDIR/hlsl.automap.frag.out
+diff -b $BASEDIR/hlsl.automap.frag.out $TARGETDIR/hlsl.automap.frag.out || HASERROR=1
#
# multi-threaded test
@@ -44,19 +46,24 @@ echo Comparing single thread to multithread for all tests in current directory..
$EXE -i -C *.vert *.geom *.frag *.tes* *.comp > singleThread.out
$EXE -i -C *.vert *.geom *.frag *.tes* *.comp -t > multiThread.out
diff singleThread.out multiThread.out || HASERROR=1
+if [ $HASERROR -eq 0 ]
+then
+ rm singleThread.out
+ rm multiThread.out
+fi
#
# entry point renaming tests
#
echo Running entry-point renaming tests
-$EXE -i -H -V -D -e main_in_spv --ku --source-entrypoint main hlsl.entry.rename.frag > $TARGETDIR/hlsl.entry.rename.frag.out
+$EXE -i -H -V -D -e main_in_spv --ku --source-entrypoint main -Od hlsl.entry.rename.frag > $TARGETDIR/hlsl.entry.rename.frag.out
diff -b $BASEDIR/hlsl.entry.rename.frag.out $TARGETDIR/hlsl.entry.rename.frag.out || HASERROR=1
#
# Testing ill-defined uncalled function
#
echo Running ill-defined uncalled function
-$EXE -D -e main -H hlsl.deadFunctionMissingBody.vert > $TARGETDIR/hlsl.deadFunctionMissingBody.vert.out
+$EXE -D -e main -H -Od hlsl.deadFunctionMissingBody.vert > $TARGETDIR/hlsl.deadFunctionMissingBody.vert.out
diff -b $BASEDIR/hlsl.deadFunctionMissingBody.vert.out $TARGETDIR/hlsl.deadFunctionMissingBody.vert.out || HASERROR=1
if [ $HASERROR -eq 0 ]
@@ -73,6 +80,115 @@ echo Running explicit stage test
$EXE -i -S vert nosuffix > $TARGETDIR/nosuffix.out
diff -b $BASEDIR/nosuffix.out $TARGETDIR/nosuffix.out || HASERROR=1
+#
+# Testing --hlsl-offsets
+#
+echo Running hlsl offsets
+$EXE -i --hlsl-offsets -H spv.hlslOffsets.vert > $TARGETDIR/spv.hlslOffsets.vert.out
+diff -b $BASEDIR/spv.hlslOffsets.vert.out $TARGETDIR/spv.hlslOffsets.vert.out || HASERROR=1
+
+echo Running hlsl offsets
+$EXE -i --hlsl-offsets -D -e main -H -Od hlsl.hlslOffset.vert > $TARGETDIR/hlsl.hlslOffset.vert.out
+diff -b $BASEDIR/hlsl.hlslOffset.vert.out $TARGETDIR/hlsl.hlslOffset.vert.out || HASERROR=1
+
+#
+# Testing --resource-set-binding
+#
+echo Configuring HLSL descriptor set and binding number manually
+$EXE -V -D -e main -H -Od hlsl.multiDescriptorSet.frag --rsb frag t0 0 0 t1 1 0 s0 0 1 s1 1 1 b0 2 0 b1 2 1 b2 2 2 > $TARGETDIR/hlsl.multiDescriptorSet.frag.out
+diff -b $BASEDIR/hlsl.multiDescriptorSet.frag.out $TARGETDIR/hlsl.multiDescriptorSet.frag.out || HASERROR=1
+
+$EXE -V -D -e main -H -Od hlsl.explicitDescriptorSet.frag --hlsl-iomap --amb --ssb 10 --stb 20 --rsb 4 > $TARGETDIR/hlsl.explicitDescriptorSet.frag.out
+diff -b $BASEDIR/hlsl.explicitDescriptorSet.frag.out $TARGETDIR/hlsl.explicitDescriptorSet.frag.out || HASERROR=1
+
+$EXE -V -D -e main -H -Od hlsl.explicitDescriptorSet.frag --hlsl-iomap --amb --ssb 10 --stb 20 --rsb frag 3 > $TARGETDIR/hlsl.explicitDescriptorSet-2.frag.out
+diff -b $BASEDIR/hlsl.explicitDescriptorSet-2.frag.out $TARGETDIR/hlsl.explicitDescriptorSet-2.frag.out || HASERROR=1
+
+#
+# Testing per-descriptor-set IO map shift
+#
+echo 'Testing per-descriptor-set IO map shift'
+$EXE -e main --hlsl-iomap --ssb 10 1 15 2 --stb 20 --stb 25 2 --suavb 30 --suavb 40 2 --sub 50 6 -i -q -D -V hlsl.shift.per-set.frag > $TARGETDIR/hlsl.shift.per-set.frag.out || HASERROR=1
+diff -b $BASEDIR/hlsl.shift.per-set.frag.out $TARGETDIR/hlsl.shift.per-set.frag.out || HASERROR=1
+
+#
+# Testing location error
+#
+echo Testing SPV no location
+$EXE -V -C spv.noLocation.vert > $TARGETDIR/spv.noLocation.vert.out
+diff -b $BASEDIR/spv.noLocation.vert.out $TARGETDIR/spv.noLocation.vert.out || HASERROR=1
+$EXE -G -H --aml spv.noBuiltInLoc.vert > $TARGETDIR/spv.noBuiltInLoc.vert.out
+diff -b $BASEDIR/spv.noBuiltInLoc.vert.out $TARGETDIR/spv.noBuiltInLoc.vert.out || HASERROR=1
+$EXE -G spv.looseUniformNoLoc.vert > $TARGETDIR/spv.looseUniformNoLoc.vert.out
+diff -b $BASEDIR/spv.looseUniformNoLoc.vert.out $TARGETDIR/spv.looseUniformNoLoc.vert.out || HASERROR=1
+
+#
+# Testing debug information
+#
+echo Testing SPV Debug Information
+$EXE -g --relaxed-errors --suppress-warnings --aml --hlsl-offsets --nsf \
+ -G -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.frag.out
+diff -b $BASEDIR/spv.debugInfo.frag.out $TARGETDIR/spv.debugInfo.frag.out || HASERROR=1
+$EXE -g -D -e newMain -g --amb --aml --fua --hlsl-iomap --nsf --sib 1 --ssb 2 --sbb 3 --stb 4 --suavb 5 --sub 6 \
+ --sep origMain -H -Od spv.hlslDebugInfo.vert --rsb vert t0 0 0 > $TARGETDIR/spv.hlslDebugInfo.frag.out
+diff -b $BASEDIR/spv.hlslDebugInfo.frag.out $TARGETDIR/spv.hlslDebugInfo.frag.out || HASERROR=1
+
+#
+# Testing Includer
+#
+echo Testing Includer
+$EXE -D -e main -H -Od ../Test/hlsl.include.vert > $TARGETDIR/hlsl.include.vert.out
+diff -b $BASEDIR/hlsl.include.vert.out $TARGETDIR/hlsl.include.vert.out || HASERROR=1
+$EXE -D -e main -H -Od hlsl.includeNegative.vert > $TARGETDIR/hlsl.includeNegative.vert.out
+diff -b $BASEDIR/hlsl.includeNegative.vert.out $TARGETDIR/hlsl.includeNegative.vert.out || HASERROR=1
+$EXE -l -i include.vert > $TARGETDIR/include.vert.out
+diff -b $BASEDIR/include.vert.out $TARGETDIR/include.vert.out || HASERROR=1
+$EXE -D -e main -H -Od -Iinc1/path1 -Iinc1/path2 hlsl.dashI.vert > $TARGETDIR/hlsl.dashI.vert.out
+diff -b $BASEDIR/hlsl.dashI.vert.out $TARGETDIR/hlsl.dashI.vert.out || HASERROR=1
+
+#
+# Testing -D and -U
+#
+echo "Testing -D and -U"
+$EXE -DUNDEFED -UIN_SHADER -DFOO=200 -i -l -UUNDEFED -DMUL=FOO*2 glsl.-D-U.frag > $TARGETDIR/glsl.-D-U.frag.out
+diff -b $BASEDIR/glsl.-D-U.frag.out $TARGETDIR/glsl.-D-U.frag.out || HASERROR=1
+$EXE -D -e main -V -i -DUNDEFED -UIN_SHADER -DFOO=200 -UUNDEFED -Od hlsl.-D-U.frag > $TARGETDIR/hlsl.-D-U.frag.out
+diff -b $BASEDIR/hlsl.-D-U.frag.out $TARGETDIR/hlsl.-D-U.frag.out || HASERROR=1
+
+#
+# Test --client and --target-env
+#
+echo "Testing --client and --target-env"
+$EXE --client vulkan100 spv.targetVulkan.vert || HASERROR=1
+$EXE --client opengl100 spv.targetOpenGL.vert || HASERROR=1
+$EXE --target-env vulkan1.0 spv.targetVulkan.vert || HASERROR=1
+$EXE --target-env opengl spv.targetOpenGL.vert || HASERROR=1
+$EXE -V100 spv.targetVulkan.vert || HASERROR=1
+$EXE -G100 spv.targetOpenGL.vert || HASERROR=1
+
+#
+# Testing GLSL entry point rename
+#
+echo "Testing GLSL entry point rename"
+$EXE -H -e foo --source-entrypoint main glsl.entryPointRename.vert > $TARGETDIR/glsl.entryPointRename.vert.out
+diff -b $BASEDIR/glsl.entryPointRename.vert.out $TARGETDIR/glsl.entryPointRename.vert.out || HASERROR=1
+$EXE -H -e foo --source-entrypoint bar glsl.entryPointRename.vert > $TARGETDIR/glsl.entryPointRename.vert.bad.out
+diff -b $BASEDIR/glsl.entryPointRename.vert.bad.out $TARGETDIR/glsl.entryPointRename.vert.bad.out || HASERROR=1
+$EXE -H -e foo --source-entrypoint main glsl.entryPointRename2.vert > $TARGETDIR/glsl.entryPointRename2.vert.out
+diff -b $BASEDIR/glsl.entryPointRename2.vert.out $TARGETDIR/glsl.entryPointRename2.vert.out || HASERROR=1
+
+#
+# Testing remapper error handling
+#
+echo "Testing remapper error handling"
+$REMAPEXE --do-everything -i remap.invalid-spirv-1.spv -o $TARGETDIR > $TARGETDIR/remap.invalid-spirv-1.out && HASERROR=1
+diff -b $BASEDIR/remap.invalid-spirv-1.out $TARGETDIR/remap.invalid-spirv-1.out || HASERROR=1
+$REMAPEXE --do-everything -i remap.invalid-spirv-2.spv -o $TARGETDIR > $TARGETDIR/remap.invalid-spirv-2.out && HASERROR=1
+diff -b $BASEDIR/remap.invalid-spirv-2.out $TARGETDIR/remap.invalid-spirv-2.out || HASERROR=1
+
+#
+# Final checking
+#
if [ $HASERROR -eq 0 ]
then
echo Tests Succeeded.
@@ -80,4 +196,6 @@ else
echo Tests Failed.
fi
+rm -f comp.spv frag.spv geom.spv tesc.spv tese.spv vert.spv
+
exit $HASERROR
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.450.geom b/3rdparty/bgfx/3rdparty/glslang/Test/spv.450.geom
index 8aefe507665..3489a888146 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/spv.450.geom
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.450.geom
@@ -9,4 +9,6 @@ layout(invocations = 4) in;
void main()
{
gl_PointSize = gl_in[1].gl_PointSize;
+ gl_Layer = 2;
+ gl_ViewportIndex = 3;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.450.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/spv.450.tesc
index c3719f96d17..47b9a40876e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/spv.450.tesc
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.450.tesc
@@ -2,7 +2,7 @@
layout(vertices = 4) out;
-patch out vec4 patchOut;
+layout(location=1) patch out vec4 patchOut;
struct S {
float sMem1; // should not see a patch decoration
@@ -17,6 +17,7 @@ layout(location = 12) patch out TheBlock {
void main()
{
+ gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
}
layout(location = 2) patch out SingleBlock {
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.460.comp b/3rdparty/bgfx/3rdparty/glslang/Test/spv.460.comp
new file mode 100644
index 00000000000..eb671a38b3d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.460.comp
@@ -0,0 +1,9 @@
+#version 460
+
+void main()
+{
+ bool b1;
+ b1 = anyInvocation(b1);
+ b1 = allInvocations(b1);
+ b1 = allInvocationsEqual(b1);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.460.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.460.frag
new file mode 100644
index 00000000000..9eb8bf46f73
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.460.frag
@@ -0,0 +1,17 @@
+#version 460 core
+
+layout(binding = 0) uniform atomic_uint aui;
+uint ui;
+
+void main()
+{
+ atomicCounterAdd(aui, ui);
+ atomicCounterSubtract(aui, ui);
+ atomicCounterMin(aui, ui);
+ atomicCounterMax(aui, ui);
+ atomicCounterAnd(aui, ui);
+ atomicCounterOr(aui, ui);
+ atomicCounterXor(aui, ui);
+ atomicCounterExchange(aui, ui);
+ atomicCounterCompSwap(aui, ui, ui);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.460.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.460.vert
new file mode 100644
index 00000000000..72d4e775f4a
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.460.vert
@@ -0,0 +1,6 @@
+#version 460
+
+void main()
+{
+ int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.OVR_multiview.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.OVR_multiview.vert
new file mode 100644
index 00000000000..c81a4d996cd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.OVR_multiview.vert
@@ -0,0 +1,9 @@
+#version 330
+
+#extension GL_OVR_multiview : enable
+
+layout(num_views = 2) in;
+
+void main() {
+ gl_Position = vec4(gl_ViewID_OVR, 0, 0, 0);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.arbPostDepthCoverage.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.arbPostDepthCoverage.frag
new file mode 100644
index 00000000000..03b61cb5ea4
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.arbPostDepthCoverage.frag
@@ -0,0 +1,13 @@
+#version 450
+
+#extension GL_ARB_post_depth_coverage : enable
+#extension GL_EXT_post_depth_coverage : enable //according to ARB_post_depth_coverage,
+ //if both enabled, this one should be ignored
+precision highp int;
+layout(post_depth_coverage) in;
+
+layout (location = 0) out int readSampleMaskIn;
+
+void main () {
+ readSampleMaskIn = gl_SampleMaskIn[0];
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.arbPostDepthCoverage_Error.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.arbPostDepthCoverage_Error.frag
new file mode 100644
index 00000000000..652933b8121
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.arbPostDepthCoverage_Error.frag
@@ -0,0 +1,12 @@
+#version 310 es
+
+#extension GL_ARB_post_depth_coverage : enable
+
+precision highp float;
+
+layout(post_depth_coverage, location = 0) in float a; // should fail since post_depth_coverage may only
+ // be declared on in only (not with variable declarations)
+
+void main () {
+
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.atomicInt64.comp b/3rdparty/bgfx/3rdparty/glslang/Test/spv.atomicInt64.comp
new file mode 100644
index 00000000000..a56c7ec0300
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.atomicInt64.comp
@@ -0,0 +1,79 @@
+#version 450 core
+
+#extension GL_ARB_gpu_shader_int64: enable
+#extension GL_NV_shader_atomic_int64: enable
+
+layout(local_size_x = 16, local_size_y = 16) in;
+
+layout(binding = 0) buffer Buffer
+{
+ int64_t i64;
+ uint64_t u64;
+} buf;
+
+struct Struct
+{
+ int64_t i64;
+ uint64_t u64;
+};
+
+shared Struct s;
+
+void main()
+{
+ const int64_t i64c = -24;
+ const uint64_t u64c = 0xF00000000F;
+
+ // Test shader storage block
+ int64_t i64 = 0;
+ uint64_t u64 = 0;
+
+ i64 += atomicMin(buf.i64, i64c);
+ u64 += atomicMin(buf.u64, u64c);
+
+ i64 += atomicMax(buf.i64, i64c);
+ u64 += atomicMax(buf.u64, u64c);
+
+ i64 += atomicAnd(buf.i64, i64c);
+ u64 += atomicAnd(buf.u64, u64c);
+
+ i64 += atomicOr(buf.i64, i64c);
+ u64 += atomicOr(buf.u64, u64c);
+
+ i64 += atomicXor(buf.i64, i64c);
+ u64 += atomicXor(buf.u64, u64c);
+
+ i64 += atomicAdd(buf.i64, i64c);
+ i64 += atomicExchange(buf.i64, i64c);
+ i64 += atomicCompSwap(buf.i64, i64c, i64);
+
+ buf.i64 = i64;
+ buf.u64 = u64;
+
+ // Test shared variable
+ i64 = 0;
+ u64 = 0;
+
+ i64 += atomicMin(s.i64, i64c);
+ u64 += atomicMin(s.u64, u64c);
+
+ i64 += atomicMax(s.i64, i64c);
+ u64 += atomicMax(s.u64, u64c);
+
+ i64 += atomicAnd(s.i64, i64c);
+ u64 += atomicAnd(s.u64, u64c);
+
+ i64 += atomicOr(s.i64, i64c);
+ u64 += atomicOr(s.u64, u64c);
+
+ i64 += atomicXor(s.i64, i64c);
+ u64 += atomicXor(s.u64, u64c);
+
+ i64 += atomicAdd(s.i64, i64c);
+ i64 += atomicExchange(s.i64, i64c);
+ i64 += atomicCompSwap(s.i64, i64c, i64);
+
+ s.i64 = i64;
+ s.u64 = u64;
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.debugInfo.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.debugInfo.frag
new file mode 100644
index 00000000000..3b6cd27fead
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.debugInfo.frag
@@ -0,0 +1,52 @@
+#version 450
+
+struct S {
+ int a;
+};
+
+uniform ubuf {
+ S s;
+};
+
+uniform sampler2D s2d;
+
+layout(location = 0) in vec4 inv;
+layout(location = 0) out vec4 outv;
+
+vec4 foo(S s)
+{
+ vec4 r = s.a * inv;
+ ++r;
+ if (r.x > 3.0)
+ --r;
+ else
+ r *= 2;
+
+ return r;
+}
+
+void main()
+{
+ outv = foo(s);
+ outv += texture(s2d, vec2(0.5));
+
+ switch (s.a) {
+ case 10:
+ ++outv;
+ break;
+ case 20:
+ outv = 2 * outv;
+ ++outv;
+ break;
+ default:
+ --outv;
+ break;
+ }
+
+ for (int i = 0; i < 10; ++i)
+ outv *= 3.0;
+
+ outv.x < 10.0 ?
+ outv = sin(outv) :
+ outv = cos(outv);
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.extPostDepthCoverage.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.extPostDepthCoverage.frag
new file mode 100644
index 00000000000..20aebc395db
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.extPostDepthCoverage.frag
@@ -0,0 +1,9 @@
+#version 310 es
+
+#extension GL_EXT_post_depth_coverage : enable
+
+layout(post_depth_coverage) in;
+layout(early_fragment_tests) in;
+
+void main () {
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.extPostDepthCoverage_Error.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.extPostDepthCoverage_Error.frag
new file mode 100644
index 00000000000..25ce2e2e6c9
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.extPostDepthCoverage_Error.frag
@@ -0,0 +1,9 @@
+#version 450
+
+#extension GL_EXT_post_depth_coverage : enable
+
+layout(post_depth_coverage) in; // should fail since for GL_EXT_post_depth_coverage
+ // explicit declaration of early_fragment_tests is required
+
+void main () {
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.hlslDebugInfo.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.hlslDebugInfo.vert
new file mode 100644
index 00000000000..b2bc1877837
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.hlslDebugInfo.vert
@@ -0,0 +1,4 @@
+float4 origMain() : SV_Position
+{
+ return (float4)0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.hlslOffsets.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.hlslOffsets.vert
new file mode 100644
index 00000000000..87e32a729c2
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.hlslOffsets.vert
@@ -0,0 +1,27 @@
+#version 450
+
+buffer block {
+ float m0;
+ vec3 m4;
+ //////
+ float m16;
+ layout(offset=20) vec3 m20;
+ /////
+ vec3 m32;
+ /////
+ vec2 m48;
+ vec2 m56;
+ ////
+ float m64;
+ vec2 m68;
+ float m76;
+ //////
+ float m80;
+ layout(offset=88) vec2 m88;
+ //////
+ vec2 m96;
+ ///////
+ dvec2 m112;
+};
+
+void main() {} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.imageLoadStoreLod.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.imageLoadStoreLod.frag
new file mode 100644
index 00000000000..0da1da125dd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.imageLoadStoreLod.frag
@@ -0,0 +1,36 @@
+#version 450 core
+
+#extension GL_AMD_shader_image_load_store_lod: enable
+
+layout(rgba32f, binding = 0) uniform image1D i1D;
+layout(rgba32f, binding = 1) uniform image2D i2D;
+layout(rgba32f, binding = 2) uniform image3D i3D;
+layout(rgba32i, binding = 3) uniform iimageCube iiCube;
+layout(rgba32i, binding = 4) uniform iimage1DArray ii1DArray;
+layout(rgba32ui, binding = 5) uniform uimage2DArray ui2DArray;
+layout(rgba32ui, binding = 6) uniform uimageCubeArray uiCubeArray;
+
+layout(location = 0) out vec4 fragColor;
+
+void main()
+{
+ const int c1 = 1;
+ const ivec2 c2 = ivec2(2, 3);
+ const ivec3 c3 = ivec3(4, 5, 6);
+
+ const int lod = 3;
+
+ vec4 f4 = vec4(0.0);
+ f4 += imageLoadLodAMD(i1D, c1, lod);
+ f4 += imageLoadLodAMD(i2D, c2, lod);
+ f4 += imageLoadLodAMD(i3D, c3, lod);
+
+ imageStoreLodAMD(iiCube, c3, lod, ivec4(f4));
+ imageStoreLodAMD(ii1DArray, c2, lod, ivec4(f4));
+
+ uvec4 u4;
+ sparseImageLoadLodAMD(ui2DArray, c3, lod, u4);
+ sparseImageLoadLodAMD(uiCubeArray, c3, lod, u4);
+
+ fragColor = f4 + vec4(u4);
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.int16.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.int16.frag
new file mode 100644
index 00000000000..9dd9090c855
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.int16.frag
@@ -0,0 +1,314 @@
+#version 450 core
+
+#extension GL_ARB_gpu_shader_int64: enable
+#extension GL_AMD_gpu_shader_half_float: enable
+#extension GL_AMD_gpu_shader_int16: enable
+
+layout(binding = 0) uniform Uniforms
+{
+ uint i;
+};
+
+// int16/uint16 in block
+layout(std140, binding = 1) uniform Block
+{
+ i16vec3 i16v;
+ uint16_t u16;
+} block;
+
+// int16/uint16 for input
+layout(location = 0) in flat u16vec3 iu16v;
+layout(location = 1) in flat int16_t ii16;
+
+void literal()
+{
+ const int16_t i16c[3] =
+ {
+ 0x111S, // Hex
+ -2s, // Dec
+ 0400s, // Oct
+ };
+
+ const uint16_t u16c[] =
+ {
+ 0xFFFFus, // Hex
+ 65535US, // Dec
+ 0177777us, // Oct
+ };
+
+ uint16_t u16 = i16c[i] + u16c[i];
+}
+
+void operators()
+{
+ u16vec3 u16v;
+ int16_t i16;
+ uint16_t u16;
+ int i;
+ uint u;
+ bool b;
+
+ // Unary
+ u16v++;
+ i16--;
+ ++i16;
+ --u16v;
+
+ u16v = ~u16v;
+
+ i16 = +i16;
+ u16v = -u16v;
+
+ // Arithmetic
+ u16 += i16;
+ u16v -= u16v;
+ i16 *= i16;
+ u16v /= u16v;
+ u16v %= i16;
+
+ u16v = u16v + u16v;
+ u16 = i16 - u16;
+ u16v = u16v * i16;
+ i16 = i16 * i16;
+ i16 = i16 % i16;
+
+ // Shift
+ u16v <<= i;
+ i16 >>= u16v.y;
+
+ i16 = i16 << u16v.z;
+ u16v = u16v << i16;
+
+ // Relational
+ b = (u16v.x != i16);
+ b = (i16 == u16v.x);
+ b = (u16v.x > u16v.y);
+ b = (i16 < u);
+ b = (u16v.y >= u16v.x);
+ b = (i16 <= i);
+
+ // Bitwise
+ u16v |= i16;
+ u16 = i16 | u16;
+ i16 &= i16;
+ u16v = u16v & u16v;
+ u16v ^= i16;
+ u16v = u16v ^ i16;
+}
+
+void typeCast()
+{
+ bvec2 bv;
+ ivec2 iv;
+ uvec2 uv;
+ vec2 fv;
+ dvec2 dv;
+
+ f16vec2 f16v;
+ i64vec2 i64v;
+ u64vec2 u64v;
+ i16vec2 i16v;
+ u16vec2 u16v;
+
+ i16v = i16vec2(bv); // bool -> int16
+ u16v = u16vec2(bv); // bool -> uint16
+ bv = bvec2(i16v); // int16 -> bool
+ bv = bvec2(u16v); // uint16 -> bool
+
+ i16v = i16vec2(iv); // int -> int16
+ u16v = u16vec2(iv); // int -> uint16
+ iv = i16v; // int16 -> int
+ iv = ivec2(u16v); // uint16 -> int
+
+ i16v = i16vec2(uv); // uint -> int16
+ u16v = u16vec2(uv); // uint -> uint16
+ uv = i16v; // int16 -> uint
+ uv = u16v; // uint16 -> uint
+
+ i16v = i16vec2(fv); // float -> int16
+ u16v = u16vec2(fv); // float -> uint16
+ fv = i16v; // int16 -> float
+ fv = u16v; // uint16 -> float
+
+ i16v = i16vec2(dv); // double -> int16
+ u16v = u16vec2(dv); // double -> uint16
+ dv = i16v; // int16 -> double
+ dv = u16v; // uint16 -> double
+
+ i16v = i16vec2(f16v); // float16 -> int16
+ u16v = u16vec2(f16v); // float16 -> uint16
+ f16v = i16v; // int16 -> float16
+ f16v = u16v; // uint16 -> float16
+
+ i16v = i16vec2(i64v); // int64 -> int16
+ u16v = u16vec2(i64v); // int64 -> uint16
+ i64v = i16v; // int16 -> int64
+ i64v = i64vec2(u16v); // uint16 -> int64
+
+ i16v = i16vec2(u64v); // uint64 -> int16
+ u16v = u16vec2(u64v); // uint64 -> uint16
+ u64v = i16v; // int16 -> uint64
+ u64v = u16v; // uint16 -> uint64
+
+ i16v = i16vec2(u16v); // uint16 -> int16
+ u16v = i16v; // int16 -> uint16
+}
+
+void builtinFuncs()
+{
+ i16vec2 i16v;
+ u16vec3 u16v;
+ f16vec3 f16v;
+ bvec3 bv;
+
+ int16_t i16;
+ uint16_t u16;
+
+ // abs()
+ i16v = abs(i16v);
+
+ // sign()
+ i16v = sign(i16v);
+
+ // min()
+ i16v = min(i16v, i16);
+ i16v = min(i16v, i16vec2(-1s));
+ u16v = min(u16v, u16);
+ u16v = min(u16v, u16vec3(0us));
+
+ // max()
+ i16v = max(i16v, i16);
+ i16v = max(i16v, i16vec2(-1s));
+ u16v = max(u16v, u16);
+ u16v = max(u16v, u16vec3(0us));
+
+ // clamp()
+ i16v = clamp(i16v, -i16, i16);
+ i16v = clamp(i16v, -i16v, i16v);
+ u16v = clamp(u16v, -u16, u16);
+ u16v = clamp(u16v, -u16v, u16v);
+
+ // mix()
+ i16 = mix(i16v.x, i16v.y, true);
+ i16v = mix(i16vec2(i16), i16vec2(-i16), bvec2(false));
+ u16 = mix(u16v.x, u16v.y, true);
+ u16v = mix(u16vec3(u16), u16vec3(-u16), bvec3(false));
+
+ // frexp()
+ i16vec3 exp;
+ f16v = frexp(f16v, exp);
+
+ // ldexp()
+ f16v = ldexp(f16v, exp);
+
+ // float16BitsToInt16()
+ i16v = float16BitsToInt16(f16v.xy);
+
+ // float16BitsToUint16()
+ u16v.x = float16BitsToUint16(f16v.z);
+
+ // int16BitsToFloat16()
+ f16v.xy = int16BitsToFloat16(i16v);
+
+ // uint16BitsToFloat16()
+ f16v = uint16BitsToFloat16(u16v);
+
+ // packInt2x16()
+ int packi = packInt2x16(i16v);
+
+ // unpackInt2x16()
+ i16v = unpackInt2x16(packi);
+
+ // packUint2x16()
+ uint packu = packUint2x16(u16v.xy);
+
+ // unpackUint2x16()
+ u16v.xy = unpackUint2x16(packu);
+
+ // packInt4x16()
+ int64_t packi64 = packInt4x16(i16vec4(i16));
+
+ // unpackInt4x16()
+ i16v = unpackInt4x16(packi64).xy;
+
+ // packUint4x16()
+ uint64_t packu64 = packUint4x16(u16vec4(u16));
+
+ // unpackUint4x16()
+ u16v = unpackUint4x16(packu64).xyz;
+
+ // lessThan()
+ bv = lessThan(u16v, u16vec3(u16));
+ bv.xy = lessThan(i16v, i16vec2(i16));
+
+ // lessThanEqual()
+ bv = lessThanEqual(u16v, u16vec3(u16));
+ bv.xy = lessThanEqual(i16v, i16vec2(i16));
+
+ // greaterThan()
+ bv = greaterThan(u16v, u16vec3(u16));
+ bv.xy = greaterThan(i16v, i16vec2(i16));
+
+ // greaterThanEqual()
+ bv = greaterThanEqual(u16v, u16vec3(u16));
+ bv.xy = greaterThanEqual(i16v, i16vec2(i16));
+
+ // equal()
+ bv = equal(u16v, u16vec3(u16));
+ bv.xy = equal(i16v, i16vec2(i16));
+
+ // notEqual()
+ bv = notEqual(u16v, u16vec3(u16));
+ bv.xy = notEqual(i16v, i16vec2(i16));
+}
+
+// Type conversion for specialization constant
+layout(constant_id = 100) const int64_t si64 = -10L;
+layout(constant_id = 101) const uint64_t su64 = 20UL;
+layout(constant_id = 102) const int si = -5;
+layout(constant_id = 103) const uint su = 4;
+layout(constant_id = 104) const bool sb = true;
+layout(constant_id = 105) const int16_t si16 = -5S;
+layout(constant_id = 106) const uint16_t su16 = 4US;
+
+// bool <-> int16/uint16
+const bool i16_to_b = bool(si16);
+const bool u16_to_b = bool(su16);
+const int16_t b_to_i16 = int16_t(sb);
+const uint16_t b_to_u16 = uint16_t(sb);
+
+// int <-> int16/uint16
+const int i16_to_i = int(si16);
+const int u16_to_i = int(su16);
+const int16_t i_to_i16 = int16_t(si);
+const uint16_t i_to_u16 = uint16_t(si);
+
+// uint <-> int16/uint16
+const uint i16_to_u = uint(si16);
+const uint u16_to_u = uint(su16);
+const int16_t u_to_i16 = int16_t(su);
+const uint16_t u_to_u16 = uint16_t(su);
+
+// int64 <-> int16/uint16
+const int64_t i16_to_i64 = int64_t(si16);
+const int64_t u16_to_i64 = int64_t(su16);
+const int16_t i64_to_i16 = int16_t(si64);
+const uint16_t i64_to_u16 = uint16_t(si64);
+
+// uint64 <-> int16/uint16
+const uint64_t i16_to_u64 = uint64_t(si16);
+const uint64_t u16_to_u64 = uint64_t(su16);
+const int16_t u64_to_i16 = int16_t(su64);
+const uint16_t u64_to_u16 = uint16_t(su64);
+
+// int16 <-> uint16
+const uint16_t i16_to_u16 = uint16_t(si16);
+const int16_t u16_to_i16 = int16_t(su16);
+
+void main()
+{
+ literal();
+ operators();
+ typeCast();
+ builtinFuncs();
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.looseUniformNoLoc.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.looseUniformNoLoc.vert
new file mode 100644
index 00000000000..e8873594495
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.looseUniformNoLoc.vert
@@ -0,0 +1,15 @@
+#version 450 core
+
+layout(location = 0)
+in vec4 foo;
+
+layout(location = 0)
+out vec4 bar;
+
+uniform vec4 uv;
+
+void main()
+{
+ bar = foo;
+ gl_Position = foo;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.noBuiltInLoc.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.noBuiltInLoc.vert
new file mode 100644
index 00000000000..5fbe25219e3
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.noBuiltInLoc.vert
@@ -0,0 +1,17 @@
+#version 450 core
+
+layout(location = 0)
+in vec4 foo;
+
+layout(location = 0)
+out vec4 bar;
+
+uniform vec4 uv1;
+uniform float uv2;
+uniform vec3 uv3;
+
+void main()
+{
+ bar = foo;
+ gl_Position = foo;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.noLocation.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.noLocation.vert
new file mode 100644
index 00000000000..43998525ea6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.noLocation.vert
@@ -0,0 +1,39 @@
+#version 450
+
+layout(location = 1) in vec4 in1;
+in vec4 in2; // ERROR
+layout(location = 3) in vec4 in3;
+
+layout(location = 1) out vec4 out1;
+out vec4 out2; // ERROR
+layout(location = 3) out vec4 out3;
+
+layout(location = 10) out inb1 {
+ vec4 a;
+ vec4 b;
+} inbi1;
+out inb2 {
+ layout(location = 12) vec4 a;
+ layout(location = 13) vec4 b;
+} inbi2;
+out inb3 { // ERROR
+ vec4 a;
+ vec4 b;
+} inbi3;
+
+layout(location = 14) out struct S1 { vec4 a; } s1;
+out struct S2 { vec4 a; } s2; // ERROR
+
+struct SS { int a; };
+out layout(location = 15) SS ss1;
+out SS ss2; // ERROR
+
+out gl_PerVertex {
+ vec4 gl_Position;
+ float gl_ClipDistance[2];
+};
+
+void main()
+{
+ gl_ClipDistance[0] = 1.0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.paramMemory.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.paramMemory.frag
new file mode 100644
index 00000000000..79d2fe579de
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.paramMemory.frag
@@ -0,0 +1,30 @@
+#version 310 es
+
+readonly coherent uniform layout(set = 0, binding = 0, rgba32f) highp image2D image1;
+readonly uniform layout(set = 0, binding = 2, rgba16f) highp image2D image2;
+writeonly coherent uniform layout(set = 0, binding = 1, rgba32f) highp image2D image3;
+writeonly uniform layout(set = 0, binding = 3, rgba16f) highp image2D image4;
+
+flat in layout(location = 0) highp ivec2 in_coords;
+out layout(location = 0) highp vec4 out_color;
+
+highp vec4 image_load(readonly coherent highp image2D image, highp ivec2 coords)
+{
+ return imageLoad(image, in_coords);
+}
+
+void image_store(writeonly coherent highp image2D image, highp ivec2 coords, highp vec4 data)
+{
+ imageStore(image, in_coords, data);
+}
+
+void main()
+{
+ highp vec4 read1 = image_load(image1, in_coords);
+ highp vec4 read2 = image_load(image2, in_coords);
+
+ image_store(image3, in_coords, read1*0.5);
+ image_store(image4, in_coords, read2*2.0);
+
+ out_color = vec4(0.0);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.precisionNonESSamp.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.precisionNonESSamp.frag
new file mode 100644
index 00000000000..8abf839eb9b
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.precisionNonESSamp.frag
@@ -0,0 +1,24 @@
+#version 450
+
+precision lowp sampler2D;
+precision lowp int;
+precision lowp float;
+
+uniform lowp sampler2D s;
+uniform highp sampler3D t;
+layout(rgba32f) uniform lowp image2D i1;
+layout(rgba32f) uniform highp image2D i2;
+
+layout(location = 0) in lowp vec2 v2;
+layout(location = 1) in lowp vec3 v3;
+layout(location = 3) flat in lowp ivec2 iv2;
+
+layout(location = 0) out lowp vec4 color;
+
+void main()
+{
+ color = texture(s, v2);
+ color = texture(t, v3);
+ lowp vec4 vi1 = imageLoad(i1, iv2);
+ lowp vec4 vi2 = imageLoad(i2, iv2);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.register.subpass.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.register.subpass.frag
new file mode 100644
index 00000000000..281c2f7043d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.register.subpass.frag
@@ -0,0 +1,15 @@
+
+// Test binding autoassignment and offset for SubpassInput objects
+
+layout(input_attachment_index = 1) SubpassInput<float4> subpass_f4 : register(t1);
+layout(input_attachment_index = 4) SubpassInputMS<float4> subpass_ms_f4;
+[[vk::input_attachment_index(7)]] SubpassInput subpass_2;
+
+float4 main() : SV_Target0
+{
+ float4 result00 = subpass_f4.SubpassLoad();
+ float4 result10 = subpass_ms_f4.SubpassLoad(3);
+ float4 result73 = subpass_2.SubpassLoad();
+
+ return 0;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.sample.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.sample.frag
new file mode 100644
index 00000000000..b62afe27980
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.sample.frag
@@ -0,0 +1,9 @@
+#version 450
+
+layout(location = 0) in sample vec4 samp;
+layout(location = 0) out vec4 color;
+
+void main()
+{
+ color = samp;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.sampleId.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.sampleId.frag
new file mode 100644
index 00000000000..d5473f79a18
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.sampleId.frag
@@ -0,0 +1,12 @@
+#version 450
+
+layout(location = 0) in vec4 samp;
+layout(location = 0) out vec4 color;
+
+void main()
+{
+ if (gl_SampleID < 3)
+ color = samp;
+ else
+ color = 2 * samp;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.samplePosition.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.samplePosition.frag
new file mode 100644
index 00000000000..b73dd61fa58
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.samplePosition.frag
@@ -0,0 +1,12 @@
+#version 450
+
+layout(location = 0) in vec4 samp;
+layout(location = 0) out vec4 color;
+
+void main()
+{
+ if (gl_SamplePosition.y < 0.5)
+ color = samp;
+ else
+ color = 2 * samp;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.shaderFragMaskAMD.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.shaderFragMaskAMD.frag
new file mode 100644
index 00000000000..b9e8ab05961
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.shaderFragMaskAMD.frag
@@ -0,0 +1,29 @@
+#version 450 core
+
+#extension GL_AMD_shader_fragment_mask: enable
+
+layout(binding = 0) uniform sampler2DMS s2DMS;
+layout(binding = 1) uniform isampler2DMSArray is2DMSArray;
+
+layout(binding = 2, input_attachment_index = 0) uniform usubpassInputMS usubpassMS;
+
+layout(location = 0) out vec4 fragColor;
+
+void main()
+{
+ vec4 f4 = vec4(0.0);
+
+ uint fragMask = fragmentMaskFetchAMD(s2DMS, ivec2(2, 3));
+ uint fragIndex = (fragMask & 0xF0) >> 4;
+ f4 += fragmentFetchAMD(s2DMS, ivec2(2, 3), 1);
+
+ fragMask = fragmentMaskFetchAMD(is2DMSArray, ivec3(2, 3, 1));
+ fragIndex = (fragMask & 0xF0) >> 4;
+ f4 += fragmentFetchAMD(is2DMSArray, ivec3(2, 3, 1), fragIndex);
+
+ fragMask = fragmentMaskFetchAMD(usubpassMS);
+ fragIndex = (fragMask & 0xF0) >> 4;
+ f4 += fragmentFetchAMD(usubpassMS, fragIndex);
+
+ fragColor = f4;
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.shaderStencilExport.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.shaderStencilExport.frag
new file mode 100644
index 00000000000..62e0f573ab5
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.shaderStencilExport.frag
@@ -0,0 +1,8 @@
+#version 450 core
+
+#extension GL_ARB_shader_stencil_export: enable
+
+void main()
+{
+ gl_FragStencilRefARB = 100;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.ssboAlias.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.ssboAlias.frag
new file mode 100644
index 00000000000..ed3d3e793bd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.ssboAlias.frag
@@ -0,0 +1,10 @@
+AppendStructuredBuffer<uint> Buf1 : register(u1);
+AppendStructuredBuffer<uint> Buf2 : register(u2);
+AppendStructuredBuffer<uint> Buf3 : register(u1);
+
+float4 main() : SV_Target
+{
+ Buf1.Append(10u);
+ Buf2.Append(20u);
+ return float4(1.0, 3.0, 5.0, 1.0);
+} \ No newline at end of file
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.stereoViewRendering.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/spv.stereoViewRendering.tesc
index 62fc956be5d..e8cfe003420 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/spv.stereoViewRendering.tesc
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.stereoViewRendering.tesc
@@ -8,9 +8,10 @@ layout(vertices = 4) out;
out gl_PerVertex {
int gl_SecondaryViewportMaskNV[2];
vec4 gl_SecondaryPositionNV;
- layout (viewport_relative, secondary_view_offset = 1) out highp int gl_Layer;
} gl_out[4];
+layout (viewport_relative, secondary_view_offset = 1) out highp int gl_Layer;
+
void main()
{
gl_out[gl_InvocationID].gl_SecondaryViewportMaskNV[0] = 1;
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.storageBuffer.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.storageBuffer.vert
new file mode 100644
index 00000000000..6dd629e8135
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.storageBuffer.vert
@@ -0,0 +1,16 @@
+#version 450
+
+#pragma use_storage_buffer
+
+uniform ub {
+ vec4 a;
+} ubi;
+
+buffer bb {
+ vec4 b;
+} bbi;
+
+void main()
+{
+ gl_Position = ubi.a + bbi.b;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.targetOpenGL.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.targetOpenGL.vert
new file mode 100644
index 00000000000..6d68a339121
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.targetOpenGL.vert
@@ -0,0 +1,10 @@
+#version 450
+
+layout(constant_id = 3) const int a = 2;
+layout(location = 2) uniform float f;
+layout(location = 4) uniform sampler2D s1;
+uniform sampler2D s2;
+
+void main()
+{
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.targetVulkan.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.targetVulkan.vert
new file mode 100644
index 00000000000..d879122b08e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.targetVulkan.vert
@@ -0,0 +1,9 @@
+#version 450
+
+layout(constant_id = 3) const int a = 2;
+
+layout(push_constant) uniform pc { float f; };
+
+void main()
+{
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.texture.sampler.transform.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.texture.sampler.transform.frag
new file mode 100644
index 00000000000..872d9b04d26
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.texture.sampler.transform.frag
@@ -0,0 +1,13 @@
+#version 440
+
+uniform sampler smp;
+uniform texture2D tex;
+
+in vec2 coord;
+
+out vec4 color;
+
+void main()
+{
+ color = texture(sampler2D(tex, smp), coord);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.textureBuffer.vert b/3rdparty/bgfx/3rdparty/glslang/Test/spv.textureBuffer.vert
new file mode 100644
index 00000000000..fc6fa3acaa6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.textureBuffer.vert
@@ -0,0 +1,17 @@
+#version 450
+
+uniform textureBuffer tBuf;
+uniform sampler s;
+uniform samplerBuffer sBuf;
+
+uniform utextureBuffer utBuf;
+uniform itextureBuffer itBuf;
+
+void main()
+{
+ texelFetch(samplerBuffer(tBuf, s), 13);
+ texelFetch(sBuf, 13);
+ texelFetch(tBuf, 13);
+ texelFetch(utBuf, 13);
+ texelFetch(itBuf, 13);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.textureGatherBiasLod.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.textureGatherBiasLod.frag
new file mode 100644
index 00000000000..35bd035aadf
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.textureGatherBiasLod.frag
@@ -0,0 +1,88 @@
+#version 450 core
+
+#extension GL_ARB_sparse_texture2: enable
+#extension GL_AMD_texture_gather_bias_lod: enable
+
+uniform sampler2D s2D;
+uniform sampler2DArray s2DArray;
+uniform samplerCube sCube;
+uniform samplerCubeArray sCubeArray;
+
+in vec2 c2;
+in vec3 c3;
+in vec4 c4;
+
+in float lod;
+in float bias;
+
+out vec4 fragColor;
+
+void main()
+{
+ vec4 texel = vec4(0.0);
+ vec4 result = vec4(0.0);
+
+ const ivec2 offsets[4] = { ivec2(0, 0), ivec2(0, 1), ivec2(1, 0), ivec2(1, 1) };
+
+ texel += textureGather(s2D, c2, 0, bias);
+ texel += textureGather(s2DArray, c3, 1, bias);
+ texel += textureGather(sCube, c3, 2, bias);
+ texel += textureGather(sCubeArray, c4, 3, bias);
+
+ texel += textureGatherOffset(s2D, c2, offsets[0], 0, bias);
+ texel += textureGatherOffset(s2DArray, c3, offsets[1], 1, bias);
+
+ texel += textureGatherOffsets(s2D, c2, offsets, 0, bias);
+ texel += textureGatherOffsets(s2DArray, c3, offsets, 1, bias);
+
+ sparseTextureGatherARB(s2D, c2, result, 0, bias);
+ texel += result;
+ sparseTextureGatherARB(s2DArray, c3, result, 1, bias);
+ texel += result;
+ sparseTextureGatherARB(sCube, c3, result, 2, bias);
+ texel += result;
+ sparseTextureGatherARB(sCubeArray, c4, result, 2, bias);
+ texel += result;
+
+ sparseTextureGatherOffsetARB(s2D, c2, offsets[0], result, 0, bias);
+ texel += result;
+ sparseTextureGatherOffsetARB(s2DArray, c3, offsets[1], result, 1, bias);
+ texel += result;
+
+ sparseTextureGatherOffsetsARB(s2D, c2, offsets, result, 0, bias);
+ texel += result;
+ sparseTextureGatherOffsetsARB(s2DArray, c3, offsets, result, 1, bias);
+ texel += result;
+
+ texel += textureGatherLodAMD(s2D, c2, lod);
+ texel += textureGatherLodAMD(s2DArray, c3, lod, 1);
+ texel += textureGatherLodAMD(sCube, c3, lod, 2);
+ texel += textureGatherLodAMD(sCubeArray, c4, lod, 3);
+
+ texel += textureGatherLodOffsetAMD(s2D, c2, lod, offsets[0]);
+ texel += textureGatherLodOffsetAMD(s2DArray, c3, lod, offsets[1], 1);
+
+ texel += textureGatherLodOffsetsAMD(s2D, c2, lod, offsets);
+ texel += textureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, 1);
+
+ sparseTextureGatherLodAMD(s2D, c2, lod, result);
+ texel += result;
+ sparseTextureGatherLodAMD(s2DArray, c3, lod, result, 1);
+ texel += result;
+ sparseTextureGatherLodAMD(sCube, c3, lod, result, 2);
+ texel += result;
+ sparseTextureGatherLodAMD(sCubeArray, c4, lod, result, 2);
+ texel += result;
+
+ sparseTextureGatherLodOffsetAMD(s2D, c2, lod, offsets[0], result);
+ texel += result;
+ sparseTextureGatherLodOffsetAMD(s2DArray, c3, lod, offsets[1], result, 1);
+ texel += result;
+
+ sparseTextureGatherLodOffsetsAMD(s2D, c2, lod, offsets, result);
+ texel += result;
+ sparseTextureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, result, 1);
+ texel += result;
+
+ fragColor = texel;
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.viewportArray2.tesc b/3rdparty/bgfx/3rdparty/glslang/Test/spv.viewportArray2.tesc
index f629b438ca1..7fc208a45ef 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/spv.viewportArray2.tesc
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.viewportArray2.tesc
@@ -5,12 +5,12 @@ layout(vertices = 4) out;
out gl_PerVertex {
int gl_ViewportMask[2];
- int gl_ViewportIndex;
- layout (viewport_relative) out highp int gl_Layer;
} gl_out[4];
+layout (viewport_relative) out highp int gl_Layer;
+
void main()
{
- gl_out[gl_InvocationID].gl_ViewportMask[0] = 1;
- gl_out[gl_InvocationID].gl_ViewportIndex = 2;
+ gl_out[gl_InvocationID].gl_ViewportMask[0] = 1;
+ gl_ViewportIndex = 2;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/tokenPaste.vert b/3rdparty/bgfx/3rdparty/glslang/Test/tokenPaste.vert
index 7aa113a2924..40de6f92199 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/tokenPaste.vert
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/tokenPaste.vert
@@ -79,4 +79,8 @@ uniform M_OUTER(argPaste);
uniform M_OUTER2(argPaste);
#define rec(x)##
-rec(rec()) \ No newline at end of file
+rec(rec())
+
+#define bax(bay)
+#define baz bax(/##)
+baz
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/validate-shaders.sh b/3rdparty/bgfx/3rdparty/glslang/Test/validate-shaders.sh
new file mode 100644
index 00000000000..9211106225e
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/validate-shaders.sh
@@ -0,0 +1,269 @@
+#!/bin/bash
+
+# This script validates shaders (if successfully compiled) using spirv-val.
+# It is not meant to preclude the possible addition of the validator to
+# glslang.
+
+declare -r EXE='../build/install/bin/glslangValidator'
+
+# search common locations for spirv-tools: keep first one
+for toolsdir in '../External/spirv-tools/build/tools' '../../SPIRV-Tools/build/tools' '/usr/local/bin'; do
+ [[ -z "$VAL" && -x "${toolsdir}/spirv-val" ]] && declare -r VAL="${toolsdir}/spirv-val"
+ [[ -z "$DIS" && -x "${toolsdir}/spirv-dis" ]] && declare -r DIS="${toolsdir}/spirv-dis"
+done
+
+declare -r gtests='../gtests/Hlsl.FromFile.cpp ../gtests/Spv.FromFile.cpp'
+
+declare -r targetenv='vulkan1.0'
+
+function fatal() { echo "ERROR: $@"; exit 5; }
+
+function usage
+{
+ echo
+ echo "Usage: $(basename $0) [options...] shaders..."
+ echo
+ echo " Validates shaders (if successfully compiled) through spirv-val."
+ echo
+ echo "General options:"
+ echo " --help prints this text"
+ echo " --no-color disables output colorization"
+ echo " --dump-asm dumps all successfully compiled shader assemblies"
+ echo " --dump-val dumps all validation results"
+ echo " --dump-comp dumps all compilation logs"
+ echo "Spam reduction options:"
+ echo " --no-summary disables result summaries"
+ echo " --skip-ok do not print successful validations"
+ echo " --skip-comperr do not print compilation errors"
+ echo " --skip-valerr do not print validation errors"
+ echo " --quiet synonym for --skip-ok --skip-comperr --skip-valerr --no-summary"
+ echo " --terse print terse single line progress summary"
+ echo "Disassembly options:"
+ echo " --raw-id uses raw ids for disassembly"
+ echo
+ echo "Usage examples. Note most non-hlsl tests fail to compile for expected reasons."
+ echo " Exercise all hlsl.* files:"
+ echo " $(basename $0) hlsl.*"
+ echo " Exercise all hlsl.* files, tersely:"
+ echo " $(basename $0) --terse hlsl.*"
+ echo " Print validator output for myfile.frag:"
+ echo " $(basename $0) --quiet --dump-val myfile.frag"
+ echo " Exercise hlsl.* files, only printing validation errors:"
+ echo " $(basename $0) --skip-ok --skip-comperr hlsl.*"
+
+ exit 5
+}
+
+function status()
+{
+ printf "%-40s: %b\n" "$1" "$2"
+}
+
+# make sure we can find glslang
+[[ -x "$EXE" ]] || fatal "Unable to locate $(basename "$EXE") executable"
+[[ -x "$VAL" ]] || fatal "Unable to locate spirv-val executable"
+[[ -x "$DIS" ]] || fatal "Unable to locate spirv-dis executable"
+
+for gtest in $gtests; do
+ [[ -r "$gtest" ]] || fatal "Unable to locate source file: $(basename $gtest)"
+done
+
+# temp files
+declare -r spvfile='out.spv' \
+ complog='comp.out' \
+ vallog='val.out' \
+ dislog='dis.out' \
+
+# options
+declare opt_vallog=false \
+ opt_complog=false \
+ opt_dislog=false \
+ opt_summary=true \
+ opt_stat_comperr=true \
+ opt_stat_ok=true \
+ opt_stat_valerr=true \
+ opt_color=true \
+ opt_raw_id=false \
+ opt_quiet=false \
+ opt_terse=false
+
+# clean up on exit
+trap "rm -f ${spvfile} ${complog} ${vallog} ${dislog}" EXIT
+
+# Language guesser: there is no fixed mapping from filenames to language,
+# so this examines the file and return one of:
+# hlsl
+# glsl
+# bin
+# unknown
+# This is easier WRT future expansion than a big explicit list.
+function FindLanguage()
+{
+ local test="$1"
+
+ # If it starts with hlsl, assume it's hlsl.
+ if [[ "$test" == *hlsl.* ]]; then
+ echo hlsl
+ return
+ fi
+
+ if [[ "$test" == *.spv ]]; then
+ echo bin
+ return;
+ fi
+
+ # If it doesn't start with spv., assume it's GLSL.
+ if [[ ! "$test" == spv.* && ! "$test" == remap.* ]]; then
+ echo glsl
+ return
+ fi
+
+ # Otherwise, attempt to guess from shader contents, since there's no
+ # fixed mapping of filenames to languages.
+ local contents="$(cat "$test")"
+
+ if [[ "$contents" == *#version* ]]; then
+ echo glsl
+ return
+ fi
+
+ if [[ "$contents" == *SamplerState* ||
+ "$contents" == *cbuffer* ||
+ "$contents" == *SV_* ]]; then
+ echo hlsl
+ return
+ fi
+
+ echo unknown
+}
+
+# Attempt to discover entry point
+function FindEntryPoint()
+{
+ local test="$1"
+
+ # if it's not hlsl, always use main
+ if [[ "$language" != 'hlsl' ]]; then
+ echo 'main'
+ return
+ fi
+
+ # Try to find it in test sources
+ awk -F '[ (){",]+' -e "\$2 == \"${test}\" { print \$3; found=1; } END { if (found==0) print \"main\"; } " $gtests
+}
+
+# command line options
+while [ $# -gt 0 ]
+do
+ case "$1" in
+ # -c) glslang="$2"; shift 2;;
+ --help|-?) usage;;
+ --no-color) opt_color=false; shift;;
+ --no-summary) opt_summary=false; shift;;
+ --skip-ok) opt_stat_ok=false; shift;;
+ --skip-comperr) opt_stat_comperr=false; shift;;
+ --skip-valerr) opt_stat_valerr=false; shift;;
+ --dump-asm) opt_dislog=true; shift;;
+ --dump-val) opt_vallog=true; shift;;
+ --dump-comp) opt_complog=true; shift;;
+ --raw-id) opt_raw_id=true; shift;;
+ --quiet) opt_quiet=true; shift;;
+ --terse) opt_quiet=true
+ opt_terse=true
+ shift;;
+ --*) fatal "Unknown command line option: $1";;
+ *) break;;
+ esac
+done
+
+# this is what quiet means
+if $opt_quiet; then
+ opt_stat_ok=false
+ opt_stat_comperr=false
+ opt_stat_valerr=false
+ $opt_terse || opt_summary=false
+fi
+
+if $opt_color; then
+ declare -r white="\e[1;37m" cyan="\e[1;36m" red="\e[0;31m" no_color="\e[0m"
+else
+ declare -r white="" cyan="" red="" no_color=""
+fi
+
+# stats
+declare -i count_ok=0 count_err=0 count_nocomp=0 count_total=0
+
+declare -r dashsep='------------------------------------------------------------------------'
+
+testfiles=(${@})
+# if no shaders given, look for everything in current directory
+[[ ${#testfiles[*]} == 0 ]] && testfiles=(*.frag *.vert *.tesc *.tese *.geom *.comp)
+
+$opt_summary && printf "\nValidating: ${#testfiles[*]} shaders\n\n"
+
+# Loop through the shaders we were given, compiling them if we can.
+for test in ${testfiles[*]}
+do
+ if [[ ! -r "$test" ]]; then
+ $opt_quiet || status "$test" "${red}FILE NOT FOUND${no_color}"
+ continue
+ fi
+
+ ((++count_total))
+
+ $opt_terse && printf "\r[%-3d/%-3d : ${white}comperr=%-3d ${red}valerr=%-3d ${cyan}ok=%-3d${no_color}]" \
+ ${count_total} ${#testfiles[*]} ${count_nocomp} ${count_err} ${count_ok}
+
+ language="$(FindLanguage $test)"
+ entry="$(FindEntryPoint $test)"
+ langops=''
+
+ case "$language" in
+ hlsl) langops='-D --hlsl-iomap --hlsl-offsets';;
+ glsl) ;;
+ bin) continue;; # skip binaries
+ *) $opt_quiet || status "$test" "${red}UNKNOWN LANGUAGE${no_color}"; continue;;
+ esac
+
+ # compile the test file
+ if compout=$("$EXE" -e "$entry" $langops -V -o "$spvfile" "$test" 2>&1)
+ then
+ # successful compilation: validate
+ if valout=$("$VAL" --target-env ${targetenv} "$spvfile" 2>&1)
+ then
+ # validated OK
+ $opt_stat_ok && status "$test" "${cyan}OK${no_color}"
+ ((++count_ok))
+ else
+ # validation failure
+ $opt_stat_valerr && status "$test" "${red}VAL ERROR${no_color}"
+ printf "%s\n%s:\n%s\n" "$dashsep" "$test" "$valout" >> "$vallog"
+ ((++count_err))
+ fi
+
+ if $opt_dislog; then
+ printf "%s\n%s:\n" "$dashsep" "$test" >> "$dislog"
+ $opt_raw_id && id_opt=--raw-id
+ "$DIS" ${id_opt} "$spvfile" >> "$dislog"
+ fi
+ else
+ # compile failure
+ $opt_stat_comperr && status "$test" "${white}COMP ERROR${no_color}"
+ printf "%s\n%s\n" "$dashsep" "$compout" >> "$complog"
+ ((++count_nocomp))
+ fi
+done
+
+$opt_terse && echo
+
+# summarize
+$opt_summary && printf "\nSummary: ${white}${count_nocomp} compile errors${no_color}, ${red}${count_err} validation errors${no_color}, ${cyan}${count_ok} successes${no_color}\n"
+
+# dump logs
+$opt_vallog && [[ -r $vallog ]] && cat "$vallog"
+$opt_complog && [[ -r $complog ]] && cat "$complog"
+$opt_dislog && [[ -r $dislog ]] && cat "$dislog"
+
+# exit code
+[[ ${count_err} -gt 0 ]] && exit 1
+exit 0
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/vulkan.frag b/3rdparty/bgfx/3rdparty/glslang/Test/vulkan.frag
index 2b686eb2a7e..14c0c30168d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/vulkan.frag
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/vulkan.frag
@@ -43,7 +43,7 @@ layout(push_constant) buffer pcb { // ERROR, not on a buffer
layout(push_constant) uniform float pcfloat; // ERROR 2X: not on a non-block, and non-opaque outside block
layout(push_constant) uniform; // ERROR, needs an object
-
+layout(std430, push_constant) uniform pcb1 { int a; } pcb1inst;
layout(push_constant) uniform pcb2 {
int a;
}; // Okay now to have no instance name
@@ -95,3 +95,11 @@ void callUserTexture()
gl_NumSamples; // ERROR, not for Vulkan
}
+
+void noise()
+{
+ noise1(dv4);
+ noise2(4.0);
+ noise3(vec2(3));
+ noise4(dv4);
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/vulkan.vert b/3rdparty/bgfx/3rdparty/glslang/Test/vulkan.vert
index b234c75bb43..e670e958d0e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/Test/vulkan.vert
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/vulkan.vert
@@ -45,3 +45,19 @@ layout(set = 1, push_constant) uniform badpc { int a; } badpcI; // ERROR, no de
#if VULKAN != 100
#error VULKAN should be 100
#endif
+
+float AofA0[2][arraySize]; // ERROR, only outer dimension
+float AofA1[arraySize][arraySize]; // ERROR, only outer dimension
+float AofA2[arraySize][2 + arraySize]; // ERROR, only outer dimension
+float AofA3[arraySize][2];
+
+out ban1 { // ERROR, only outer dimension
+ float f;
+} bai1[2][arraySize];
+
+out ban2 {
+ float f;
+} bai2[arraySize][2];
+
+layout(binding = 3000) uniform sampler2D s3000;
+layout(binding = 3001) uniform b3001 { int a; };
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/CMakeLists.txt b/3rdparty/bgfx/3rdparty/glslang/glslang/CMakeLists.txt
index dac8cb89210..ac3973373ae 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/CMakeLists.txt
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/CMakeLists.txt
@@ -31,9 +31,7 @@ set(SOURCES
MachineIndependent/preprocessor/Pp.cpp
MachineIndependent/preprocessor/PpAtom.cpp
MachineIndependent/preprocessor/PpContext.cpp
- MachineIndependent/preprocessor/PpMemory.cpp
MachineIndependent/preprocessor/PpScanner.cpp
- MachineIndependent/preprocessor/PpSymbols.cpp
MachineIndependent/preprocessor/PpTokens.cpp
MachineIndependent/propagateNoContraction.cpp
GenericCodeGen/CodeGen.cpp
@@ -82,9 +80,10 @@ set(HEADERS
add_library(glslang STATIC ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})
set_property(TARGET glslang PROPERTY FOLDER glslang)
+set_property(TARGET glslang PROPERTY POSITION_INDEPENDENT_CODE ON)
target_link_libraries(glslang OGLCompiler OSDependent)
if(ENABLE_HLSL)
- target_link_libraries(glslang HLSL)
+ target_link_libraries(glslang HLSL)
endif()
if(WIN32)
@@ -95,10 +94,14 @@ if(WIN32)
source_group("MachineIndependent\\Preprocessor" REGULAR_EXPRESSION "MachineIndependent/preprocessor/*")
endif(WIN32)
-install(TARGETS glslang
- ARCHIVE DESTINATION lib)
+if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS glslang
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+endif(ENABLE_GLSLANG_INSTALL)
-foreach(file ${HEADERS})
- get_filename_component(dir ${file} DIRECTORY)
- install(FILES ${file} DESTINATION include/glslang/${dir})
-endforeach()
+if(ENABLE_GLSLANG_INSTALL)
+ foreach(file ${HEADERS})
+ get_filename_component(dir ${file} DIRECTORY)
+ install(FILES ${file} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/${dir})
+ endforeach()
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/BaseTypes.h b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/BaseTypes.h
index 230a6b9cb06..0a46a7c0f06 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/BaseTypes.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/BaseTypes.h
@@ -53,6 +53,10 @@ enum TBasicType {
EbtUint,
EbtInt64,
EbtUint64,
+#ifdef AMD_EXTENSIONS
+ EbtInt16,
+ EbtUint16,
+#endif
EbtBool,
EbtAtomicUint,
EbtSampler,
@@ -189,10 +193,12 @@ enum TBuiltInVariable {
EbvFragColor,
EbvFragData,
EbvFragDepth,
+ EbvFragStencilRef,
EbvSampleId,
EbvSamplePosition,
EbvSampleMask,
EbvHelperInvocation,
+
#ifdef AMD_EXTENSIONS
EbvBaryCoordNoPersp,
EbvBaryCoordNoPerspCentroid,
@@ -218,7 +224,16 @@ enum TBuiltInVariable {
// to one of the above.
EbvFragDepthGreater,
EbvFragDepthLesser,
- EbvStencilRef,
+ EbvGsOutputStream,
+ EbvOutputPatch,
+ EbvInputPatch,
+
+ // structbuffer types
+ EbvAppendConsume, // no need to differentiate append and consume
+ EbvRWStructuredBuffer,
+ EbvStructuredBuffer,
+ EbvByteAddressBuffer,
+ EbvRWByteAddressBuffer,
EbvLast
};
@@ -315,10 +330,12 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v)
case EbvFragColor: return "FragColor";
case EbvFragData: return "FragData";
case EbvFragDepth: return "FragDepth";
+ case EbvFragStencilRef: return "FragStencilRef";
case EbvSampleId: return "SampleId";
case EbvSamplePosition: return "SamplePosition";
case EbvSampleMask: return "SampleMaskIn";
case EbvHelperInvocation: return "HelperInvocation";
+
#ifdef AMD_EXTENSIONS
case EbvBaryCoordNoPersp: return "BaryCoordNoPersp";
case EbvBaryCoordNoPerspCentroid: return "BaryCoordNoPerspCentroid";
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/Common.h b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/Common.h
index 17c2bd984fc..c3814f0bf97 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/Common.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/Common.h
@@ -63,7 +63,7 @@ std::string to_string(const T& val) {
}
#endif
-#if defined(_MSC_VER) && _MSC_VER < 1700
+#if defined(_MSC_VER) && _MSC_VER < 1800
inline long long int strtoll (const char* str, char** endptr, int base)
{
return _strtoi64(str, endptr, base);
@@ -78,6 +78,10 @@ inline long long int atoll (const char* str)
}
#endif
+#if defined(_MSC_VER)
+#define strdup _strdup
+#endif
+
/* windows only pragma */
#ifdef _MSC_VER
#pragma warning(disable : 4786) // Don't warn about too long identifiers
@@ -222,6 +226,7 @@ inline const TString String(const int i, const int /*base*/ = 10)
struct TSourceLoc {
void init() { name = nullptr; string = 0; line = 0; column = 0; }
+ void init(int stringNum) { init(); string = stringNum; }
// Returns the name if it exists. Otherwise, returns the string number.
std::string getStringNameOrNum(bool quoteStringName = true) const
{
@@ -235,7 +240,10 @@ struct TSourceLoc {
int column;
};
-typedef TMap<TString, TString> TPragmaTable;
+class TPragmaTable : public TMap<TString, TString> {
+public:
+ POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
+};
const int MaxTokenLength = 1024;
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/InitializeGlobals.h b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/InitializeGlobals.h
index 4cf2dca7c40..95d0a40e99a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/InitializeGlobals.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/InitializeGlobals.h
@@ -37,10 +37,7 @@
namespace glslang {
-void InitializeMemoryPools();
-void FreeGlobalPools();
bool InitializePoolIndex();
-void FreePoolIndex();
} // end namespace glslang
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/PoolAlloc.h b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/PoolAlloc.h
index 69bacb156f8..0e237a6a2c0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/PoolAlloc.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/PoolAlloc.h
@@ -250,15 +250,8 @@ private:
// different times. But a simple use is to have a global pop
// with everyone using the same global allocator.
//
-typedef TPoolAllocator* PoolAllocatorPointer;
extern TPoolAllocator& GetThreadPoolAllocator();
-
-struct TThreadMemoryPools
-{
- TPoolAllocator* threadPoolAllocator;
-};
-
-void SetThreadPoolAllocator(TPoolAllocator& poolAllocator);
+void SetThreadPoolAllocator(TPoolAllocator* poolAllocator);
//
// This STL compatible allocator is intended to be used as the allocator
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/ShHandle.h b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/ShHandle.h
index 64ba6d636c0..df07bd8edad 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/ShHandle.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/ShHandle.h
@@ -56,11 +56,14 @@ class TUniformMap;
//
class TShHandleBase {
public:
- TShHandleBase() { }
- virtual ~TShHandleBase() { }
+ TShHandleBase() { pool = new glslang::TPoolAllocator; }
+ virtual ~TShHandleBase() { delete pool; }
virtual TCompiler* getAsCompiler() { return 0; }
virtual TLinker* getAsLinker() { return 0; }
virtual TUniformMap* getAsUniformMap() { return 0; }
+ virtual glslang::TPoolAllocator* getPool() const { return pool; }
+private:
+ glslang::TPoolAllocator* pool;
};
//
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/Types.h b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/Types.h
index 2207d0b3f95..b5b91f527ea 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/Types.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/Types.h
@@ -43,6 +43,8 @@
#include "../Public/ShaderLang.h"
#include "arrays.h"
+#include <algorithm>
+
namespace glslang {
const int GlslangMaxTypeLength = 200; // TODO: need to print block/struct one member per line, so this can stay bounded
@@ -78,7 +80,19 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler
bool sampler : 1; // true means a pure sampler, other fields should be clear()
bool external : 1; // GL_OES_EGL_image_external
- unsigned int vectorSize : 3; // return vector size. TODO: support arbitrary types.
+ unsigned int vectorSize : 3; // vector return type size.
+
+ // Some languages support structures as sample results. Storing the whole structure in the
+ // TSampler is too large, so there is an index to a separate table.
+ static const unsigned structReturnIndexBits = 4; // number of index bits to use.
+ static const unsigned structReturnSlots = (1<<structReturnIndexBits)-1; // number of valid values
+ static const unsigned noReturnStruct = structReturnSlots; // value if no return struct type.
+
+ // Index into a language specific table of texture return structures.
+ unsigned int structReturnIndex : structReturnIndexBits;
+
+ // Encapsulate getting members' vector sizes packed into the vectorSize bitfield.
+ unsigned int getVectorSize() const { return vectorSize; }
bool isImage() const { return image && dim != EsdSubpass; }
bool isSubpass() const { return dim == EsdSubpass; }
@@ -88,6 +102,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
bool isShadow() const { return shadow; }
bool isArrayed() const { return arrayed; }
bool isMultiSample() const { return ms; }
+ bool hasReturnStruct() const { return structReturnIndex != noReturnStruct; }
void clear()
{
@@ -100,6 +115,9 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
combined = false;
sampler = false;
external = false;
+ structReturnIndex = noReturnStruct;
+
+ // by default, returns a single vec4;
vectorSize = 4;
}
@@ -158,16 +176,17 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
bool operator==(const TSampler& right) const
{
- return type == right.type &&
- dim == right.dim &&
- arrayed == right.arrayed &&
- shadow == right.shadow &&
- ms == right.ms &&
- image == right.image &&
- combined == right.combined &&
- sampler == right.sampler &&
- external == right.external &&
- vectorSize == right.vectorSize;
+ return type == right.type &&
+ dim == right.dim &&
+ arrayed == right.arrayed &&
+ shadow == right.shadow &&
+ ms == right.ms &&
+ image == right.image &&
+ combined == right.combined &&
+ sampler == right.sampler &&
+ external == right.external &&
+ vectorSize == right.vectorSize &&
+ structReturnIndex == right.structReturnIndex;
}
bool operator!=(const TSampler& right) const
@@ -188,8 +207,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
case EbtFloat: break;
case EbtInt: s.append("i"); break;
case EbtUint: s.append("u"); break;
- case EbtInt64: s.append("i64"); break;
- case EbtUint64: s.append("u64"); break;
default: break; // some compilers want this
}
if (image) {
@@ -398,6 +415,7 @@ public:
invariant = false;
noContraction = false;
makeTemporary();
+ declaredBuiltIn = EbvNone;
}
// drop qualifiers that don't belong in a temporary variable
@@ -455,6 +473,7 @@ public:
const char* semanticName;
TStorageQualifier storage : 6;
TBuiltInVariable builtIn : 8;
+ TBuiltInVariable declaredBuiltIn : 8;
TPrecisionQualifier precision : 3;
bool invariant : 1; // require canonical treatment for cross-shader invariance
bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects
@@ -966,8 +985,10 @@ struct TShaderQualifiers {
int localSize[3]; // compute shader
int localSizeSpecId[3]; // compute shader specialization id for gl_WorkGroupSize
bool earlyFragmentTests; // fragment input
+ bool postDepthCoverage; // fragment input
TLayoutDepth layoutDepth;
bool blendEquation; // true if any blend equation was specified
+ int numViews; // multiview extenstions
#ifdef NV_EXTENSIONS
bool layoutOverrideCoverage; // true if layout override_coverage set
@@ -990,8 +1011,10 @@ struct TShaderQualifiers {
localSizeSpecId[1] = TQualifier::layoutNotSet;
localSizeSpecId[2] = TQualifier::layoutNotSet;
earlyFragmentTests = false;
+ postDepthCoverage = false;
layoutDepth = EldNone;
blendEquation = false;
+ numViews = TQualifier::layoutNotSet;
#ifdef NV_EXTENSIONS
layoutOverrideCoverage = false;
#endif
@@ -1027,10 +1050,14 @@ struct TShaderQualifiers {
}
if (src.earlyFragmentTests)
earlyFragmentTests = true;
+ if (src.postDepthCoverage)
+ postDepthCoverage = true;
if (src.layoutDepth)
layoutDepth = src.layoutDepth;
if (src.blendEquation)
blendEquation = src.blendEquation;
+ if (src.numViews != TQualifier::layoutNotSet)
+ numViews = src.numViews;
#ifdef NV_EXTENSIONS
if (src.layoutOverrideCoverage)
layoutOverrideCoverage = src.layoutOverrideCoverage;
@@ -1306,6 +1333,7 @@ public:
virtual TBasicType getBasicType() const { return basicType; }
virtual const TSampler& getSampler() const { return sampler; }
+ virtual TSampler& getSampler() { return sampler; }
virtual TQualifier& getQualifier() { return qualifier; }
virtual const TQualifier& getQualifier() const { return qualifier; }
@@ -1335,174 +1363,109 @@ public:
#else
virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble; }
#endif
-
+ virtual bool isIntegerDomain() const
+ {
+ switch (basicType) {
+ case EbtInt:
+ case EbtUint:
+ case EbtInt64:
+ case EbtUint64:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ case EbtUint16:
+#endif
+ case EbtAtomicUint:
+ return true;
+ default:
+ break;
+ }
+ return false;
+ }
virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint; }
+ virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; }
// "Image" is a superset of "Subpass"
virtual bool isImage() const { return basicType == EbtSampler && getSampler().isImage(); }
virtual bool isSubpass() const { return basicType == EbtSampler && getSampler().isSubpass(); }
- virtual bool isBuiltInInterstageIO(EShLanguage language) const
- {
- return isPerVertexAndBuiltIn(language) || isLooseAndBuiltIn(language);
- }
-
- // Return true if this is an interstage IO builtin
- virtual bool isPerVertexAndBuiltIn(EShLanguage language) const
+ // return true if this type contains any subtype which satisfies the given predicate.
+ template <typename P>
+ bool contains(P predicate) const
{
- if (language == EShLangFragment)
- return false;
-
- // Any non-fragment stage
- switch (getQualifier().builtIn) {
- case EbvPosition:
- case EbvPointSize:
- case EbvClipDistance:
- case EbvCullDistance:
-#ifdef NV_EXTENSIONS
- case EbvLayer:
- case EbvViewportMaskNV:
- case EbvSecondaryPositionNV:
- case EbvSecondaryViewportMaskNV:
- case EbvPositionPerViewNV:
- case EbvViewportMaskPerViewNV:
-#endif
+ if (predicate(this))
return true;
- default:
- return false;
- }
- }
- // Return true if this is a loose builtin
- virtual bool isLooseAndBuiltIn(EShLanguage language) const
- {
- if (getQualifier().builtIn == EbvNone)
- return false;
+ const auto hasa = [predicate](const TTypeLoc& tl) { return tl.type->contains(predicate); };
- return !isPerVertexAndBuiltIn(language);
+ return structure && std::any_of(structure->begin(), structure->end(), hasa);
}
-
+
// Recursively checks if the type contains the given basic type
virtual bool containsBasicType(TBasicType checkType) const
{
- if (basicType == checkType)
- return true;
- if (! structure)
- return false;
- for (unsigned int i = 0; i < structure->size(); ++i) {
- if ((*structure)[i].type->containsBasicType(checkType))
- return true;
- }
- return false;
+ return contains([checkType](const TType* t) { return t->basicType == checkType; } );
}
// Recursively check the structure for any arrays, needed for some error checks
virtual bool containsArray() const
{
- if (isArray())
- return true;
- if (structure == nullptr)
- return false;
- for (unsigned int i = 0; i < structure->size(); ++i) {
- if ((*structure)[i].type->containsArray())
- return true;
- }
- return false;
+ return contains([](const TType* t) { return t->isArray(); } );
}
// Check the structure for any structures, needed for some error checks
virtual bool containsStructure() const
{
- if (structure == nullptr)
- return false;
- for (unsigned int i = 0; i < structure->size(); ++i) {
- if ((*structure)[i].type->structure)
- return true;
- }
- return false;
+ return contains([this](const TType* t) { return t != this && t->isStruct(); } );
}
// Recursively check the structure for any implicitly-sized arrays, needed for triggering a copyUp().
virtual bool containsImplicitlySizedArray() const
{
- if (isImplicitlySizedArray())
- return true;
- if (structure == nullptr)
- return false;
- for (unsigned int i = 0; i < structure->size(); ++i) {
- if ((*structure)[i].type->containsImplicitlySizedArray())
- return true;
- }
- return false;
+ return contains([](const TType* t) { return t->isImplicitlySizedArray(); } );
}
virtual bool containsOpaque() const
{
- if (isOpaque())
- return true;
- if (! structure)
- return false;
- for (unsigned int i = 0; i < structure->size(); ++i) {
- if ((*structure)[i].type->containsOpaque())
- return true;
- }
- return false;
+ return contains([](const TType* t) { return t->isOpaque(); } );
}
- // Recursively checks if the type contains an interstage IO builtin
- virtual bool containsBuiltInInterstageIO(EShLanguage language) const
+ // Recursively checks if the type contains a built-in variable
+ virtual bool containsBuiltIn() const
{
- if (isBuiltInInterstageIO(language))
- return true;
-
- if (! structure)
- return false;
- for (unsigned int i = 0; i < structure->size(); ++i) {
- if ((*structure)[i].type->containsBuiltInInterstageIO(language))
- return true;
- }
- return false;
+ return contains([](const TType* t) { return t->isBuiltIn(); } );
}
virtual bool containsNonOpaque() const
{
- // list all non-opaque types
- switch (basicType) {
- case EbtVoid:
- case EbtFloat:
- case EbtDouble:
+ const auto nonOpaque = [](const TType* t) {
+ switch (t->basicType) {
+ case EbtVoid:
+ case EbtFloat:
+ case EbtDouble:
#ifdef AMD_EXTENSIONS
- case EbtFloat16:
+ case EbtFloat16:
#endif
- case EbtInt:
- case EbtUint:
- case EbtInt64:
- case EbtUint64:
- case EbtBool:
- return true;
- default:
- break;
- }
- if (! structure)
- return false;
- for (unsigned int i = 0; i < structure->size(); ++i) {
- if ((*structure)[i].type->containsNonOpaque())
+ case EbtInt:
+ case EbtUint:
+ case EbtInt64:
+ case EbtUint64:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ case EbtUint16:
+#endif
+ case EbtBool:
return true;
- }
- return false;
+ default:
+ return false;
+ }
+ };
+
+ return contains(nonOpaque);
}
virtual bool containsSpecializationSize() const
{
- if (isArray() && arraySizes->containsNode())
- return true;
- if (! structure)
- return false;
- for (unsigned int i = 0; i < structure->size(); ++i) {
- if ((*structure)[i].type->containsSpecializationSize())
- return true;
- }
- return false;
+ return contains([](const TType* t) { return t->isArray() && t->arraySizes->isOuterSpecialization(); } );
}
// Array editing methods. Array descriptors can be shared across
@@ -1573,6 +1536,10 @@ public:
case EbtUint: return "uint";
case EbtInt64: return "int64_t";
case EbtUint64: return "uint64_t";
+#ifdef AMD_EXTENSIONS
+ case EbtInt16: return "int16_t";
+ case EbtUint16: return "uint16_t";
+#endif
case EbtBool: return "bool";
case EbtAtomicUint: return "atomic_uint";
case EbtSampler: return "sampler/image";
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/arrays.h b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/arrays.h
index b6b5e479d74..1660a99f9c2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/arrays.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/arrays.h
@@ -264,6 +264,29 @@ struct TArraySizes {
return false;
}
+ bool clearInnerImplicit()
+ {
+ for (int d = 1; d < sizes.size(); ++d) {
+ if (sizes.getDimSize(d) == (unsigned)UnsizedArraySize)
+ setDimSize(d, 1);
+ }
+
+ return false;
+ }
+ bool isInnerSpecialization() const
+ {
+ for (int d = 1; d < sizes.size(); ++d) {
+ if (sizes.getDimNode(d) != nullptr)
+ return true;
+ }
+
+ return false;
+ }
+ bool isOuterSpecialization()
+ {
+ return sizes.getDimNode(0) != nullptr;
+ }
+
bool isImplicit() const { return getOuterSize() == UnsizedArraySize || isInnerImplicit(); }
void addOuterSizes(const TArraySizes& s) { sizes.push_front(s.sizes); }
void dereference() { sizes.pop_front(); }
@@ -288,18 +311,6 @@ struct TArraySizes {
return true;
}
- // Returns true if any of the dimensions of the array is sized with a node
- // instead of a front-end compile-time constant.
- bool containsNode()
- {
- for (int d = 0; d < sizes.size(); ++d) {
- if (sizes.getDimNode(d) != nullptr)
- return true;
- }
-
- return false;
- }
-
bool operator==(const TArraySizes& rhs) { return sizes == rhs.sizes; }
bool operator!=(const TArraySizes& rhs) { return sizes != rhs.sizes; }
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/intermediate.h b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/intermediate.h
index 934994d9aa4..4a28e35672d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/intermediate.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/intermediate.h
@@ -141,6 +141,42 @@ enum TOperator {
EOpConvFloat16ToDouble,
EOpConvFloat16ToInt64,
EOpConvFloat16ToUint64,
+
+ EOpConvBoolToInt16,
+ EOpConvIntToInt16,
+ EOpConvUintToInt16,
+ EOpConvFloatToInt16,
+ EOpConvDoubleToInt16,
+ EOpConvFloat16ToInt16,
+ EOpConvInt64ToInt16,
+ EOpConvUint64ToInt16,
+ EOpConvUint16ToInt16,
+ EOpConvInt16ToBool,
+ EOpConvInt16ToInt,
+ EOpConvInt16ToUint,
+ EOpConvInt16ToFloat,
+ EOpConvInt16ToDouble,
+ EOpConvInt16ToFloat16,
+ EOpConvInt16ToInt64,
+ EOpConvInt16ToUint64,
+
+ EOpConvBoolToUint16,
+ EOpConvIntToUint16,
+ EOpConvUintToUint16,
+ EOpConvFloatToUint16,
+ EOpConvDoubleToUint16,
+ EOpConvFloat16ToUint16,
+ EOpConvInt64ToUint16,
+ EOpConvUint64ToUint16,
+ EOpConvInt16ToUint16,
+ EOpConvUint16ToBool,
+ EOpConvUint16ToInt,
+ EOpConvUint16ToUint,
+ EOpConvUint16ToFloat,
+ EOpConvUint16ToDouble,
+ EOpConvUint16ToFloat16,
+ EOpConvUint16ToInt64,
+ EOpConvUint16ToUint64,
#endif
//
@@ -244,6 +280,12 @@ enum TOperator {
EOpDoubleBitsToUint64,
EOpInt64BitsToDouble,
EOpUint64BitsToDouble,
+#ifdef AMD_EXTENSIONS
+ EOpFloat16BitsToInt16,
+ EOpFloat16BitsToUint16,
+ EOpInt16BitsToFloat16,
+ EOpUint16BitsToFloat16,
+#endif
EOpPackSnorm2x16,
EOpUnpackSnorm2x16,
EOpPackUnorm2x16,
@@ -263,6 +305,14 @@ enum TOperator {
#ifdef AMD_EXTENSIONS
EOpPackFloat2x16,
EOpUnpackFloat2x16,
+ EOpPackInt2x16,
+ EOpUnpackInt2x16,
+ EOpPackUint2x16,
+ EOpUnpackUint2x16,
+ EOpPackInt4x16,
+ EOpUnpackInt4x16,
+ EOpPackUint4x16,
+ EOpUnpackUint4x16,
#endif
EOpLength,
@@ -367,9 +417,18 @@ enum TOperator {
EOpAtomicExchange,
EOpAtomicCompSwap,
- EOpAtomicCounterIncrement,
- EOpAtomicCounterDecrement,
+ EOpAtomicCounterIncrement, // results in pre-increment value
+ EOpAtomicCounterDecrement, // results in post-decrement value
EOpAtomicCounter,
+ EOpAtomicCounterAdd,
+ EOpAtomicCounterSubtract,
+ EOpAtomicCounterMin,
+ EOpAtomicCounterMax,
+ EOpAtomicCounterAnd,
+ EOpAtomicCounterOr,
+ EOpAtomicCounterXor,
+ EOpAtomicCounterExchange,
+ EOpAtomicCounterCompSwap,
EOpAny,
EOpAll,
@@ -394,15 +453,27 @@ enum TOperator {
EOpConstructUint,
EOpConstructInt64,
EOpConstructUint64,
+#ifdef AMD_EXTENSIONS
+ EOpConstructInt16,
+ EOpConstructUint16,
+#endif
EOpConstructBool,
EOpConstructFloat,
EOpConstructDouble,
+#ifdef AMD_EXTENSIONS
+ EOpConstructFloat16,
+#endif
EOpConstructVec2,
EOpConstructVec3,
EOpConstructVec4,
EOpConstructDVec2,
EOpConstructDVec3,
EOpConstructDVec4,
+#ifdef AMD_EXTENSIONS
+ EOpConstructF16Vec2,
+ EOpConstructF16Vec3,
+ EOpConstructF16Vec4,
+#endif
EOpConstructBVec2,
EOpConstructBVec3,
EOpConstructBVec4,
@@ -418,6 +489,14 @@ enum TOperator {
EOpConstructU64Vec2,
EOpConstructU64Vec3,
EOpConstructU64Vec4,
+#ifdef AMD_EXTENSIONS
+ EOpConstructI16Vec2,
+ EOpConstructI16Vec3,
+ EOpConstructI16Vec4,
+ EOpConstructU16Vec2,
+ EOpConstructU16Vec3,
+ EOpConstructU16Vec4,
+#endif
EOpConstructMat2x2,
EOpConstructMat2x3,
EOpConstructMat2x4,
@@ -436,11 +515,34 @@ enum TOperator {
EOpConstructDMat4x2,
EOpConstructDMat4x3,
EOpConstructDMat4x4,
+ EOpConstructIMat2x2,
+ EOpConstructIMat2x3,
+ EOpConstructIMat2x4,
+ EOpConstructIMat3x2,
+ EOpConstructIMat3x3,
+ EOpConstructIMat3x4,
+ EOpConstructIMat4x2,
+ EOpConstructIMat4x3,
+ EOpConstructIMat4x4,
+ EOpConstructUMat2x2,
+ EOpConstructUMat2x3,
+ EOpConstructUMat2x4,
+ EOpConstructUMat3x2,
+ EOpConstructUMat3x3,
+ EOpConstructUMat3x4,
+ EOpConstructUMat4x2,
+ EOpConstructUMat4x3,
+ EOpConstructUMat4x4,
+ EOpConstructBMat2x2,
+ EOpConstructBMat2x3,
+ EOpConstructBMat2x4,
+ EOpConstructBMat3x2,
+ EOpConstructBMat3x3,
+ EOpConstructBMat3x4,
+ EOpConstructBMat4x2,
+ EOpConstructBMat4x3,
+ EOpConstructBMat4x4,
#ifdef AMD_EXTENSIONS
- EOpConstructFloat16,
- EOpConstructF16Vec2,
- EOpConstructF16Vec3,
- EOpConstructF16Vec4,
EOpConstructF16Mat2x2,
EOpConstructF16Mat2x3,
EOpConstructF16Mat2x4,
@@ -491,6 +593,10 @@ enum TOperator {
EOpImageQuerySamples,
EOpImageLoad,
EOpImageStore,
+#ifdef AMD_EXTENSIONS
+ EOpImageLoadLod,
+ EOpImageStoreLod,
+#endif
EOpImageAtomicAdd,
EOpImageAtomicMin,
EOpImageAtomicMax,
@@ -503,6 +609,9 @@ enum TOperator {
EOpSubpassLoad,
EOpSubpassLoadMS,
EOpSparseImageLoad,
+#ifdef AMD_EXTENSIONS
+ EOpSparseImageLoadLod,
+#endif
EOpImageGuardEnd,
@@ -540,6 +649,13 @@ enum TOperator {
EOpTextureOffsetClamp,
EOpTextureGradClamp,
EOpTextureGradOffsetClamp,
+#ifdef AMD_EXTENSIONS
+ EOpTextureGatherLod,
+ EOpTextureGatherLodOffset,
+ EOpTextureGatherLodOffsets,
+ EOpFragmentMaskFetch,
+ EOpFragmentFetch,
+#endif
EOpSparseTextureGuardBegin,
@@ -559,6 +675,11 @@ enum TOperator {
EOpSparseTextureOffsetClamp,
EOpSparseTextureGradClamp,
EOpSparseTextureGradOffsetClamp,
+#ifdef AMD_EXTENSIONS
+ EOpSparseTextureGatherLod,
+ EOpSparseTextureGatherLodOffset,
+ EOpSparseTextureGatherLodOffsets,
+#endif
EOpSparseTextureGuardEnd,
EOpSamplingGuardEnd,
@@ -633,6 +754,10 @@ enum TOperator {
EOpMethodStore2, // ...
EOpMethodStore3, // ...
EOpMethodStore4, // ...
+ EOpMethodIncrementCounter, // ...
+ EOpMethodDecrementCounter, // ...
+ // EOpMethodAppend is defined for geo shaders below
+ EOpMethodConsume,
// SM5 texture methods
EOpMethodGatherRed, // These are covered under the above EOpMethodSample comment about
@@ -665,6 +790,7 @@ class TIntermBranch;
class TIntermTyped;
class TIntermMethod;
class TIntermSymbol;
+class TIntermLoop;
} // end namespace glslang
@@ -692,6 +818,7 @@ public:
virtual glslang::TIntermMethod* getAsMethodNode() { return 0; }
virtual glslang::TIntermSymbol* getAsSymbolNode() { return 0; }
virtual glslang::TIntermBranch* getAsBranchNode() { return 0; }
+ virtual glslang::TIntermLoop* getAsLoopNode() { return 0; }
virtual const glslang::TIntermTyped* getAsTyped() const { return 0; }
virtual const glslang::TIntermOperator* getAsOperator() const { return 0; }
@@ -704,6 +831,7 @@ public:
virtual const glslang::TIntermMethod* getAsMethodNode() const { return 0; }
virtual const glslang::TIntermSymbol* getAsSymbolNode() const { return 0; }
virtual const glslang::TIntermBranch* getAsBranchNode() const { return 0; }
+ virtual const glslang::TIntermLoop* getAsLoopNode() const { return 0; }
virtual ~TIntermNode() { }
protected:
@@ -747,6 +875,8 @@ public:
virtual bool isVector() const { return type.isVector(); }
virtual bool isScalar() const { return type.isScalar(); }
virtual bool isStruct() const { return type.isStruct(); }
+ virtual bool isFloatingDomain() const { return type.isFloatingDomain(); }
+ virtual bool isIntegerDomain() const { return type.isIntegerDomain(); }
TString getCompleteString() const { return type.getCompleteString(); }
protected:
@@ -755,6 +885,24 @@ protected:
};
//
+// Selection control hints
+//
+enum TSelectionControl {
+ ESelectionControlNone,
+ ESelectionControlFlatten,
+ ESelectionControlDontFlatten,
+};
+
+//
+// Loop control hints
+//
+enum TLoopControl {
+ ELoopControlNone,
+ ELoopControlUnroll,
+ ELoopControlDontUnroll,
+};
+
+//
// Handle for, do-while, and while loops.
//
class TIntermLoop : public TIntermNode {
@@ -763,17 +911,27 @@ public:
body(aBody),
test(aTest),
terminal(aTerminal),
- first(testFirst) { }
+ first(testFirst),
+ control(ELoopControlNone)
+ { }
+
+ virtual TIntermLoop* getAsLoopNode() { return this; }
+ virtual const TIntermLoop* getAsLoopNode() const { return this; }
virtual void traverse(TIntermTraverser*);
TIntermNode* getBody() const { return body; }
TIntermTyped* getTest() const { return test; }
TIntermTyped* getTerminal() const { return terminal; }
bool testFirst() const { return first; }
+
+ void setLoopControl(TLoopControl c) { control = c; }
+ TLoopControl getLoopControl() const { return control; }
+
protected:
TIntermNode* body; // code to loop over
TIntermTyped* test; // exit condition associated with loop, could be 0 for 'for' loops
TIntermTyped* terminal; // exists for for-loops
bool first; // true for while and for, not for do-while
+ TLoopControl control; // loop control hint
};
//
@@ -821,7 +979,11 @@ public:
// per process threadPoolAllocator, then it causes increased memory usage per compile
// it is essential to use "symbol = sym" to assign to symbol
TIntermSymbol(int i, const TString& n, const TType& t)
- : TIntermTyped(t), id(i), constSubtree(nullptr)
+ : TIntermTyped(t), id(i),
+#ifdef ENABLE_HLSL
+ flattenSubset(-1),
+#endif
+ constSubtree(nullptr)
{ name = n; }
virtual int getId() const { return id; }
virtual const TString& getName() const { return name; }
@@ -832,9 +994,20 @@ public:
const TConstUnionArray& getConstArray() const { return constArray; }
void setConstSubtree(TIntermTyped* subtree) { constSubtree = subtree; }
TIntermTyped* getConstSubtree() const { return constSubtree; }
+#ifdef ENABLE_HLSL
+ void setFlattenSubset(int subset) { flattenSubset = subset; }
+ int getFlattenSubset() const { return flattenSubset; } // -1 means full object
+#endif
+
+ // This is meant for cases where a node has already been constructed, and
+ // later on, it becomes necessary to switch to a different symbol.
+ virtual void switchId(int newId) { id = newId; }
protected:
int id; // the unique id of the symbol this node represents
+#ifdef ENABLE_HLSL
+ int flattenSubset; // how deeply the flattened object rooted at id has been dereferenced
+#endif
TString name; // the name of the symbol this node represents
TConstUnionArray constArray; // if the symbol is a front-end compile-time constant, this is its value
TIntermTyped* constSubtree;
@@ -872,6 +1045,9 @@ struct TCrackedTextureOp {
bool grad;
bool subpass;
bool lodClamp;
+#ifdef AMD_EXTENSIONS
+ bool fragMask;
+#endif
};
//
@@ -919,6 +1095,9 @@ public:
cracked.grad = false;
cracked.subpass = false;
cracked.lodClamp = false;
+#ifdef AMD_EXTENSIONS
+ cracked.fragMask = false;
+#endif
switch (op) {
case EOpImageQuerySize:
@@ -1027,6 +1206,38 @@ public:
cracked.gather = true;
cracked.offsets = true;
break;
+#ifdef AMD_EXTENSIONS
+ case EOpTextureGatherLod:
+ case EOpSparseTextureGatherLod:
+ cracked.gather = true;
+ cracked.lod = true;
+ break;
+ case EOpTextureGatherLodOffset:
+ case EOpSparseTextureGatherLodOffset:
+ cracked.gather = true;
+ cracked.offset = true;
+ cracked.lod = true;
+ break;
+ case EOpTextureGatherLodOffsets:
+ case EOpSparseTextureGatherLodOffsets:
+ cracked.gather = true;
+ cracked.offsets = true;
+ cracked.lod = true;
+ break;
+ case EOpImageLoadLod:
+ case EOpImageStoreLod:
+ case EOpSparseImageLoadLod:
+ cracked.lod = true;
+ break;
+ case EOpFragmentMaskFetch:
+ cracked.subpass = sampler.dim == EsdSubpass;
+ cracked.fragMask = true;
+ break;
+ case EOpFragmentFetch:
+ cracked.subpass = sampler.dim == EsdSubpass;
+ cracked.fragMask = true;
+ break;
+#endif
case EOpSubpassLoad:
case EOpSubpassLoadMS:
cracked.subpass = true;
@@ -1086,14 +1297,14 @@ protected:
};
typedef TVector<TIntermNode*> TIntermSequence;
-typedef TVector<int> TQualifierList;
+typedef TVector<TStorageQualifier> TQualifierList;
//
// Nodes that operate on an arbitrary sized set of children.
//
class TIntermAggregate : public TIntermOperator {
public:
- TIntermAggregate() : TIntermOperator(EOpNull), userDefined(false), pragmaTable(0) { }
- TIntermAggregate(TOperator o) : TIntermOperator(o), pragmaTable(0) { }
+ TIntermAggregate() : TIntermOperator(EOpNull), userDefined(false), pragmaTable(nullptr) { }
+ TIntermAggregate(TOperator o) : TIntermOperator(o), pragmaTable(nullptr) { }
~TIntermAggregate() { delete pragmaTable; }
virtual TIntermAggregate* getAsAggregate() { return this; }
virtual const TIntermAggregate* getAsAggregate() const { return this; }
@@ -1111,7 +1322,7 @@ public:
void setDebug(bool d) { debug = d; }
bool getOptimize() const { return optimize; }
bool getDebug() const { return debug; }
- void addToPragmaTable(const TPragmaTable& pTable);
+ void setPragmaTable(const TPragmaTable& pTable);
const TPragmaTable& getPragmaTable() const { return *pragmaTable; }
protected:
TIntermAggregate(const TIntermAggregate&); // disallow copy constructor
@@ -1131,19 +1342,22 @@ protected:
class TIntermSelection : public TIntermTyped {
public:
TIntermSelection(TIntermTyped* cond, TIntermNode* trueB, TIntermNode* falseB) :
- TIntermTyped(EbtVoid), condition(cond), trueBlock(trueB), falseBlock(falseB) {}
+ TIntermTyped(EbtVoid), condition(cond), trueBlock(trueB), falseBlock(falseB), control(ESelectionControlNone) {}
TIntermSelection(TIntermTyped* cond, TIntermNode* trueB, TIntermNode* falseB, const TType& type) :
- TIntermTyped(type), condition(cond), trueBlock(trueB), falseBlock(falseB) {}
+ TIntermTyped(type), condition(cond), trueBlock(trueB), falseBlock(falseB), control(ESelectionControlNone) {}
virtual void traverse(TIntermTraverser*);
virtual TIntermTyped* getCondition() const { return condition; }
virtual TIntermNode* getTrueBlock() const { return trueBlock; }
virtual TIntermNode* getFalseBlock() const { return falseBlock; }
virtual TIntermSelection* getAsSelectionNode() { return this; }
virtual const TIntermSelection* getAsSelectionNode() const { return this; }
+ void setSelectionControl(TSelectionControl c) { control = c; }
+ TSelectionControl getSelectionControl() const { return control; }
protected:
TIntermTyped* condition;
TIntermNode* trueBlock;
TIntermNode* falseBlock;
+ TSelectionControl control; // selection control hint
};
//
@@ -1154,15 +1368,18 @@ protected:
//
class TIntermSwitch : public TIntermNode {
public:
- TIntermSwitch(TIntermTyped* cond, TIntermAggregate* b) : condition(cond), body(b) { }
+ TIntermSwitch(TIntermTyped* cond, TIntermAggregate* b) : condition(cond), body(b), control(ESelectionControlNone) { }
virtual void traverse(TIntermTraverser*);
virtual TIntermNode* getCondition() const { return condition; }
virtual TIntermAggregate* getBody() const { return body; }
virtual TIntermSwitch* getAsSwitchNode() { return this; }
virtual const TIntermSwitch* getAsSwitchNode() const { return this; }
+ void setSelectionControl(TSelectionControl c) { control = c; }
+ TSelectionControl getSelectionControl() const { return control; }
protected:
TIntermTyped* condition;
TIntermAggregate* body;
+ TSelectionControl control; // selection control hint
};
enum TVisit
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/revision.h b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/revision.h
index d4429094d4b..218f8b67f51 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/Include/revision.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/Include/revision.h
@@ -2,5 +2,5 @@
// For the version, it uses the latest git tag followed by the number of commits.
// For the date, it uses the current date (when then script is run).
-#define GLSLANG_REVISION "Overload400-PrecQual.1937"
-#define GLSLANG_DATE "24-Mar-2017"
+#define GLSLANG_REVISION "Overload400-PrecQual.2000"
+#define GLSLANG_DATE "12-Apr-2017"
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp
index fff8fd26da0..1b73d969f17 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp
@@ -38,6 +38,7 @@
#include <cmath>
#include <cfloat>
#include <cstdlib>
+#include <climits>
namespace {
@@ -193,7 +194,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right
case EbtUint:
if (rightUnionArray[i] == 0) {
- newConstArray[i].setUConst(0xFFFFFFFF);
+ newConstArray[i].setUConst(0xFFFFFFFFu);
} else
newConstArray[i].setUConst(leftUnionArray[i].getUConst() / rightUnionArray[i].getUConst());
break;
@@ -213,6 +214,23 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right
} else
newConstArray[i].setU64Const(leftUnionArray[i].getU64Const() / rightUnionArray[i].getU64Const());
break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ if (rightUnionArray[i] == 0)
+ newConstArray[i].setIConst(0x7FFF);
+ else if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == (int)0x8000)
+ newConstArray[i].setIConst(0x8000);
+ else
+ newConstArray[i].setIConst(leftUnionArray[i].getIConst() / rightUnionArray[i].getIConst());
+ break;
+
+ case EbtUint16:
+ if (rightUnionArray[i] == 0) {
+ newConstArray[i].setUConst(0xFFFFu);
+ } else
+ newConstArray[i].setUConst(leftUnionArray[i].getUConst() / rightUnionArray[i].getUConst());
+ break;
+#endif
default:
return 0;
}
@@ -246,8 +264,31 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right
for (int i = 0; i < newComps; i++) {
if (rightUnionArray[i] == 0)
newConstArray[i] = leftUnionArray[i];
- else
- newConstArray[i] = leftUnionArray[i] % rightUnionArray[i];
+ else {
+ switch (getType().getBasicType()) {
+ case EbtInt:
+ if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == INT_MIN) {
+ newConstArray[i].setIConst(0);
+ break;
+ } else goto modulo_default;
+
+ case EbtInt64:
+ if (rightUnionArray[i].getI64Const() == -1 && leftUnionArray[i].getI64Const() == LLONG_MIN) {
+ newConstArray[i].setI64Const(0);
+ break;
+ } else goto modulo_default;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == SHRT_MIN) {
+ newConstArray[i].setIConst(0);
+ break;
+ } else goto modulo_default;
+#endif
+ default:
+ modulo_default:
+ newConstArray[i] = leftUnionArray[i] % rightUnionArray[i];
+ }
+ }
}
break;
@@ -457,10 +498,16 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
case EbtFloat16:
#endif
case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+#endif
case EbtInt: newConstArray[i].setIConst(-unionArray[i].getIConst()); break;
+#ifdef AMD_EXTENSIONS
+ case EbtUint16:
+#endif
case EbtUint: newConstArray[i].setUConst(static_cast<unsigned int>(-static_cast<int>(unionArray[i].getUConst()))); break;
case EbtInt64: newConstArray[i].setI64Const(-unionArray[i].getI64Const()); break;
- case EbtUint64: newConstArray[i].setU64Const(static_cast<unsigned int>(-static_cast<int>(unionArray[i].getU64Const()))); break;
+ case EbtUint64: newConstArray[i].setU64Const(static_cast<unsigned long long>(-static_cast<long long>(unionArray[i].getU64Const()))); break;
default:
return 0;
}
@@ -610,6 +657,14 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
case EOpUintBitsToFloat:
case EOpDoubleBitsToInt64:
case EOpDoubleBitsToUint64:
+ case EOpInt64BitsToDouble:
+ case EOpUint64BitsToDouble:
+#ifdef AMD_EXTENSIONS
+ case EOpFloat16BitsToInt16:
+ case EOpFloat16BitsToUint16:
+ case EOpInt16BitsToFloat16:
+ case EOpUint16BitsToFloat16:
+#endif
default:
return 0;
@@ -702,6 +757,9 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode)
#endif
children[0]->getAsTyped()->getBasicType() == EbtDouble;
bool isSigned = children[0]->getAsTyped()->getBasicType() == EbtInt ||
+#ifdef AMD_EXTENSIONS
+ children[0]->getAsTyped()->getBasicType() == EbtInt16 ||
+#endif
children[0]->getAsTyped()->getBasicType() == EbtInt64;
bool isInt64 = children[0]->getAsTyped()->getBasicType() == EbtInt64 ||
children[0]->getAsTyped()->getBasicType() == EbtUint64;
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp
index 2c46e4f3cc8..40f46b3532b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp
@@ -1,7 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2016 LunarG, Inc.
-// Copyright (C) 2015-2016 Google, Inc.
+// Copyright (C) 2015-2017 Google, Inc.
//
// All rights reserved.
//
@@ -85,8 +85,6 @@ TBuiltIns::TBuiltIns()
prefixes[EbtFloat] = "";
prefixes[EbtInt] = "i";
prefixes[EbtUint] = "u";
- prefixes[EbtInt64] = "i64";
- prefixes[EbtUint64] = "u64";
postfixes[2] = "2";
postfixes[3] = "3";
postfixes[4] = "4";
@@ -925,6 +923,32 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
+#ifdef NV_EXTENSIONS
+ if (profile != EEsProfile && version >= 440) {
+ commonBuiltins.append(
+ "uint64_t atomicMin(coherent volatile inout uint64_t, uint64_t);"
+ " int64_t atomicMin(coherent volatile inout int64_t, int64_t);"
+
+ "uint64_t atomicMax(coherent volatile inout uint64_t, uint64_t);"
+ " int64_t atomicMax(coherent volatile inout int64_t, int64_t);"
+
+ "uint64_t atomicAnd(coherent volatile inout uint64_t, uint64_t);"
+ " int64_t atomicAnd(coherent volatile inout int64_t, int64_t);"
+
+ "uint64_t atomicOr (coherent volatile inout uint64_t, uint64_t);"
+ " int64_t atomicOr (coherent volatile inout int64_t, int64_t);"
+
+ "uint64_t atomicXor(coherent volatile inout uint64_t, uint64_t);"
+ " int64_t atomicXor(coherent volatile inout int64_t, int64_t);"
+
+ " int64_t atomicAdd(coherent volatile inout int64_t, int64_t);"
+ " int64_t atomicExchange(coherent volatile inout int64_t, int64_t);"
+ " int64_t atomicCompSwap(coherent volatile inout int64_t, int64_t, int64_t);"
+
+ "\n");
+ }
+#endif
+
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 450)) {
commonBuiltins.append(
@@ -1326,15 +1350,33 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
if (profile == EEsProfile) {
if (spvVersion.spv == 0) {
+ if (version < 300) {
+ commonBuiltins.append(
+ "vec4 texture2D(samplerExternalOES, vec2 coord);" // GL_OES_EGL_image_external
+ "vec4 texture2DProj(samplerExternalOES, vec3);" // GL_OES_EGL_image_external
+ "vec4 texture2DProj(samplerExternalOES, vec4);" // GL_OES_EGL_image_external
+ "\n");
+ } else {
+ commonBuiltins.append(
+ "highp ivec2 textureSize(samplerExternalOES, int lod);" // GL_OES_EGL_image_external_essl3
+ "vec4 texture(samplerExternalOES, vec2);" // GL_OES_EGL_image_external_essl3
+ "vec4 texture(samplerExternalOES, vec2, float bias);" // GL_OES_EGL_image_external_essl3
+ "vec4 textureProj(samplerExternalOES, vec3);" // GL_OES_EGL_image_external_essl3
+ "vec4 textureProj(samplerExternalOES, vec3, float bias);" // GL_OES_EGL_image_external_essl3
+ "vec4 textureProj(samplerExternalOES, vec4);" // GL_OES_EGL_image_external_essl3
+ "vec4 textureProj(samplerExternalOES, vec4, float bias);" // GL_OES_EGL_image_external_essl3
+ "vec4 texelFetch(samplerExternalOES, ivec2, int lod);" // GL_OES_EGL_image_external_essl3
+ "\n");
+ }
commonBuiltins.append(
- "vec4 texture2D(samplerExternalOES, vec2 coord);" // GL_OES_EGL_image_external, caught by keyword check
- "vec4 texture2DProj(samplerExternalOES, vec3);" // GL_OES_EGL_image_external, caught by keyword check
- "vec4 texture2DProj(samplerExternalOES, vec4);" // GL_OES_EGL_image_external, caught by keyword check
"vec4 texture2DGradEXT(sampler2D, vec2, vec2, vec2);" // GL_EXT_shader_texture_lod
"vec4 texture2DProjGradEXT(sampler2D, vec3, vec2, vec2);" // GL_EXT_shader_texture_lod
"vec4 texture2DProjGradEXT(sampler2D, vec4, vec2, vec2);" // GL_EXT_shader_texture_lod
"vec4 textureCubeGradEXT(samplerCube, vec3, vec3, vec3);" // GL_EXT_shader_texture_lod
+ "float shadow2DEXT(sampler2DShadow, vec3);" // GL_EXT_shadow_samplers
+ "float shadow2DProjEXT(sampler2DShadow, vec4);" // GL_EXT_shadow_samplers
+
"\n");
}
}
@@ -1342,7 +1384,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
//
// Noise functions.
//
- if (profile != EEsProfile) {
+ if (spvVersion.spv == 0 && profile != EEsProfile) {
commonBuiltins.append(
"float noise1(float x);"
"float noise1(vec2 x);"
@@ -1374,9 +1416,23 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
if ((profile != EEsProfile && version >= 300) ||
(profile == EEsProfile && version >= 310)) {
commonBuiltins.append(
- "uint atomicCounterIncrement(atomic_uint x);"
- "uint atomicCounterDecrement(atomic_uint x);"
- "uint atomicCounter(atomic_uint x);"
+ "uint atomicCounterIncrement(atomic_uint);"
+ "uint atomicCounterDecrement(atomic_uint);"
+ "uint atomicCounter(atomic_uint);"
+
+ "\n");
+ }
+ if (profile != EEsProfile && version >= 460) {
+ commonBuiltins.append(
+ "uint atomicCounterAdd(atomic_uint, uint);"
+ "uint atomicCounterSubtract(atomic_uint, uint);"
+ "uint atomicCounterMin(atomic_uint, uint);"
+ "uint atomicCounterMax(atomic_uint, uint);"
+ "uint atomicCounterAnd(atomic_uint, uint);"
+ "uint atomicCounterOr(atomic_uint, uint);"
+ "uint atomicCounterXor(atomic_uint, uint);"
+ "uint atomicCounterExchange(atomic_uint, uint);"
+ "uint atomicCounterCompSwap(atomic_uint, uint, uint);"
"\n");
}
@@ -1561,7 +1617,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
- // GL_ARB_shader_group_vote
+ // GL_ARB_shader_group_vote
if (profile != EEsProfile && version >= 430) {
commonBuiltins.append(
"bool anyInvocationARB(bool);"
@@ -1571,6 +1627,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
+ if (profile != EEsProfile && version >= 460) {
+ commonBuiltins.append(
+ "bool anyInvocation(bool);"
+ "bool allInvocations(bool);"
+ "bool allInvocationsEqual(bool);"
+
+ "\n");
+ }
+
#ifdef AMD_EXTENSIONS
// GL_AMD_shader_ballot
if (profile != EEsProfile && version >= 450) {
@@ -2259,7 +2324,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
if (profile != EEsProfile && version >= 450) {
commonBuiltins.append(
"float cubeFaceIndexAMD(vec3);"
- "vec2 cubeFaceCoordAMD(vec3);"
+ "vec2 cubeFaceCoordAMD(vec3);"
"uint64_t timeAMD();"
"\n");
@@ -2612,6 +2677,180 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
+
+ // GL_AMD_gpu_shader_int16
+ if (profile != EEsProfile && version >= 450) {
+ commonBuiltins.append(
+ "int16_t abs(int16_t);"
+ "i16vec2 abs(i16vec2);"
+ "i16vec3 abs(i16vec3);"
+ "i16vec4 abs(i16vec4);"
+
+ "int16_t sign(int16_t);"
+ "i16vec2 sign(i16vec2);"
+ "i16vec3 sign(i16vec3);"
+ "i16vec4 sign(i16vec4);"
+
+ "int16_t min(int16_t, int16_t);"
+ "i16vec2 min(i16vec2, int16_t);"
+ "i16vec3 min(i16vec3, int16_t);"
+ "i16vec4 min(i16vec4, int16_t);"
+ "i16vec2 min(i16vec2, i16vec2);"
+ "i16vec3 min(i16vec3, i16vec3);"
+ "i16vec4 min(i16vec4, i16vec4);"
+ "uint16_t min(uint16_t, uint16_t);"
+ "u16vec2 min(u16vec2, uint16_t);"
+ "u16vec3 min(u16vec3, uint16_t);"
+ "u16vec4 min(u16vec4, uint16_t);"
+ "u16vec2 min(u16vec2, u16vec2);"
+ "u16vec3 min(u16vec3, u16vec3);"
+ "u16vec4 min(u16vec4, u16vec4);"
+
+ "int16_t max(int16_t, int16_t);"
+ "i16vec2 max(i16vec2, int16_t);"
+ "i16vec3 max(i16vec3, int16_t);"
+ "i16vec4 max(i16vec4, int16_t);"
+ "i16vec2 max(i16vec2, i16vec2);"
+ "i16vec3 max(i16vec3, i16vec3);"
+ "i16vec4 max(i16vec4, i16vec4);"
+ "uint16_t max(uint16_t, uint16_t);"
+ "u16vec2 max(u16vec2, uint16_t);"
+ "u16vec3 max(u16vec3, uint16_t);"
+ "u16vec4 max(u16vec4, uint16_t);"
+ "u16vec2 max(u16vec2, u16vec2);"
+ "u16vec3 max(u16vec3, u16vec3);"
+ "u16vec4 max(u16vec4, u16vec4);"
+
+ "int16_t clamp(int16_t, int16_t, int16_t);"
+ "i16vec2 clamp(i16vec2, int16_t, int16_t);"
+ "i16vec3 clamp(i16vec3, int16_t, int16_t);"
+ "i16vec4 clamp(i16vec4, int16_t, int16_t);"
+ "i16vec2 clamp(i16vec2, i16vec2, i16vec2);"
+ "i16vec3 clamp(i16vec3, i16vec3, i16vec3);"
+ "i16vec4 clamp(i16vec4, i16vec4, i16vec4);"
+ "uint16_t clamp(uint16_t, uint16_t, uint16_t);"
+ "u16vec2 clamp(u16vec2, uint16_t, uint16_t);"
+ "u16vec3 clamp(u16vec3, uint16_t, uint16_t);"
+ "u16vec4 clamp(u16vec4, uint16_t, uint16_t);"
+ "u16vec2 clamp(u16vec2, u16vec2, u16vec2);"
+ "u16vec3 clamp(u16vec3, u16vec3, u16vec3);"
+ "u16vec4 clamp(u16vec4, u16vec4, u16vec4);"
+
+ "int16_t mix(int16_t, int16_t, bool);"
+ "i16vec2 mix(i16vec2, i16vec2, bvec2);"
+ "i16vec3 mix(i16vec3, i16vec3, bvec3);"
+ "i16vec4 mix(i16vec4, i16vec4, bvec4);"
+ "uint16_t mix(uint16_t, uint16_t, bool);"
+ "u16vec2 mix(u16vec2, u16vec2, bvec2);"
+ "u16vec3 mix(u16vec3, u16vec3, bvec3);"
+ "u16vec4 mix(u16vec4, u16vec4, bvec4);"
+
+ "float16_t frexp(float16_t, out int16_t);"
+ "f16vec2 frexp(f16vec2, out i16vec2);"
+ "f16vec3 frexp(f16vec3, out i16vec3);"
+ "f16vec4 frexp(f16vec4, out i16vec4);"
+
+ "float16_t ldexp(float16_t, int16_t);"
+ "f16vec2 ldexp(f16vec2, i16vec2);"
+ "f16vec3 ldexp(f16vec3, i16vec3);"
+ "f16vec4 ldexp(f16vec4, i16vec4);"
+
+ "int16_t float16BitsToInt16(float16_t);"
+ "i16vec2 float16BitsToInt16(f16vec2);"
+ "i16vec3 float16BitsToInt16(f16vec3);"
+ "i16vec4 float16BitsToInt16(f16vec4);"
+
+ "uint16_t float16BitsToUint16(float16_t);"
+ "u16vec2 float16BitsToUint16(f16vec2);"
+ "u16vec3 float16BitsToUint16(f16vec3);"
+ "u16vec4 float16BitsToUint16(f16vec4);"
+
+ "float16_t int16BitsToFloat16(int16_t);"
+ "f16vec2 int16BitsToFloat16(i16vec2);"
+ "f16vec3 int16BitsToFloat16(i16vec3);"
+ "f16vec4 int16BitsToFloat16(i16vec4);"
+
+ "float16_t uint16BitsToFloat16(uint16_t);"
+ "f16vec2 uint16BitsToFloat16(u16vec2);"
+ "f16vec3 uint16BitsToFloat16(u16vec3);"
+ "f16vec4 uint16BitsToFloat16(u16vec4);"
+
+ "int packInt2x16(i16vec2);"
+ "uint packUint2x16(u16vec2);"
+ "int64_t packInt4x16(i16vec4);"
+ "uint64_t packUint4x16(u16vec4);"
+ "i16vec2 unpackInt2x16(int);"
+ "u16vec2 unpackUint2x16(uint);"
+ "i16vec4 unpackInt4x16(int64_t);"
+ "u16vec4 unpackUint4x16(uint64_t);"
+
+ "bvec2 lessThan(i16vec2, i16vec2);"
+ "bvec3 lessThan(i16vec3, i16vec3);"
+ "bvec4 lessThan(i16vec4, i16vec4);"
+ "bvec2 lessThan(u16vec2, u16vec2);"
+ "bvec3 lessThan(u16vec3, u16vec3);"
+ "bvec4 lessThan(u16vec4, u16vec4);"
+
+ "bvec2 lessThanEqual(i16vec2, i16vec2);"
+ "bvec3 lessThanEqual(i16vec3, i16vec3);"
+ "bvec4 lessThanEqual(i16vec4, i16vec4);"
+ "bvec2 lessThanEqual(u16vec2, u16vec2);"
+ "bvec3 lessThanEqual(u16vec3, u16vec3);"
+ "bvec4 lessThanEqual(u16vec4, u16vec4);"
+
+ "bvec2 greaterThan(i16vec2, i16vec2);"
+ "bvec3 greaterThan(i16vec3, i16vec3);"
+ "bvec4 greaterThan(i16vec4, i16vec4);"
+ "bvec2 greaterThan(u16vec2, u16vec2);"
+ "bvec3 greaterThan(u16vec3, u16vec3);"
+ "bvec4 greaterThan(u16vec4, u16vec4);"
+
+ "bvec2 greaterThanEqual(i16vec2, i16vec2);"
+ "bvec3 greaterThanEqual(i16vec3, i16vec3);"
+ "bvec4 greaterThanEqual(i16vec4, i16vec4);"
+ "bvec2 greaterThanEqual(u16vec2, u16vec2);"
+ "bvec3 greaterThanEqual(u16vec3, u16vec3);"
+ "bvec4 greaterThanEqual(u16vec4, u16vec4);"
+
+ "bvec2 equal(i16vec2, i16vec2);"
+ "bvec3 equal(i16vec3, i16vec3);"
+ "bvec4 equal(i16vec4, i16vec4);"
+ "bvec2 equal(u16vec2, u16vec2);"
+ "bvec3 equal(u16vec3, u16vec3);"
+ "bvec4 equal(u16vec4, u16vec4);"
+
+ "bvec2 notEqual(i16vec2, i16vec2);"
+ "bvec3 notEqual(i16vec3, i16vec3);"
+ "bvec4 notEqual(i16vec4, i16vec4);"
+ "bvec2 notEqual(u16vec2, u16vec2);"
+ "bvec3 notEqual(u16vec3, u16vec3);"
+ "bvec4 notEqual(u16vec4, u16vec4);"
+
+ "\n");
+ }
+
+ // GL_AMD_shader_fragment_mask
+ if (profile != EEsProfile && version >= 450) {
+ commonBuiltins.append(
+ "uint fragmentMaskFetchAMD(sampler2DMS, ivec2);"
+ "uint fragmentMaskFetchAMD(isampler2DMS, ivec2);"
+ "uint fragmentMaskFetchAMD(usampler2DMS, ivec2);"
+
+ "uint fragmentMaskFetchAMD(sampler2DMSArray, ivec3);"
+ "uint fragmentMaskFetchAMD(isampler2DMSArray, ivec3);"
+ "uint fragmentMaskFetchAMD(usampler2DMSArray, ivec3);"
+
+ "vec4 fragmentFetchAMD(sampler2DMS, ivec2, uint);"
+ "ivec4 fragmentFetchAMD(isampler2DMS, ivec2, uint);"
+ "uvec4 fragmentFetchAMD(usampler2DMS, ivec2, uint);"
+
+ "vec4 fragmentFetchAMD(sampler2DMSArray, ivec3, uint);"
+ "ivec4 fragmentFetchAMD(isampler2DMSArray, ivec3, uint);"
+ "uvec4 fragmentFetchAMD(usampler2DMSArray, ivec3, uint);"
+
+ "\n");
+ }
+
#endif
//============================================================================
@@ -2951,6 +3190,20 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
+
+ // GL_AMD_shader_fragment_mask
+ if (profile != EEsProfile && version >= 450 && spvVersion.vulkan >= 100) {
+ stageBuiltins[EShLangFragment].append(
+ "uint fragmentMaskFetchAMD(subpassInputMS);"
+ "uint fragmentMaskFetchAMD(isubpassInputMS);"
+ "uint fragmentMaskFetchAMD(usubpassInputMS);"
+
+ "vec4 fragmentFetchAMD(subpassInputMS, uint);"
+ "ivec4 fragmentFetchAMD(isubpassInputMS, uint);"
+ "uvec4 fragmentFetchAMD(usubpassInputMS, uint);"
+
+ "\n");
+ }
#endif
//============================================================================
@@ -3250,12 +3503,23 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"in int gl_DrawIDARB;"
);
}
+ if (version >= 410) {
+ stageBuiltins[EShLangVertex].append(
+ "out int gl_ViewportIndex;"
+ "out int gl_Layer;"
+ );
+ }
+ if (version >= 460) {
+ stageBuiltins[EShLangVertex].append(
+ "in int gl_BaseVertex;"
+ "in int gl_BaseInstance;"
+ "in int gl_DrawID;"
+ );
+ }
#ifdef NV_EXTENSIONS
if (version >= 450)
stageBuiltins[EShLangVertex].append(
- "out int gl_ViewportIndex;"
- "out int gl_Layer;"
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
"out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
"out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
@@ -3305,6 +3569,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
+ if (version >= 300 /* both ES and non-ES */) {
+ stageBuiltins[EShLangVertex].append(
+ "in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2
+ "\n");
+ }
+
//============================================================================
//
@@ -3366,6 +3636,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"out int gl_PrimitiveID;"
"out int gl_Layer;");
+ if (version >= 150)
+ stageBuiltins[EShLangGeometry].append(
+ "out int gl_ViewportIndex;"
+ );
+
if (profile == ECompatibilityProfile && version < 400)
stageBuiltins[EShLangGeometry].append(
"out vec4 gl_ClipVertex;"
@@ -3375,11 +3650,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
stageBuiltins[EShLangGeometry].append(
"in int gl_InvocationID;"
);
- // GL_ARB_viewport_array
- if (version >= 150)
- stageBuiltins[EShLangGeometry].append(
- "out int gl_ViewportIndex;"
- );
#ifdef NV_EXTENSIONS
if (version >= 450)
@@ -3456,8 +3726,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
stageBuiltins[EShLangTessControl].append(
"float gl_CullDistance[];"
#ifdef NV_EXTENSIONS
- "int gl_ViewportIndex;"
- "int gl_Layer;"
"int gl_ViewportMask[];" // GL_NV_viewport_array2
"vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
"int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
@@ -3471,6 +3739,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"patch out float gl_TessLevelOuter[4];"
"patch out float gl_TessLevelInner[2];"
"\n");
+
+ if (version >= 410)
+ stageBuiltins[EShLangTessControl].append(
+ "out int gl_ViewportIndex;"
+ "out int gl_Layer;"
+ "\n");
+
} else {
// Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below,
// as it depends on the resource sizing of gl_MaxPatchVertices.
@@ -3542,11 +3817,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"};"
"\n");
+ if (version >= 410)
+ stageBuiltins[EShLangTessEvaluation].append(
+ "out int gl_ViewportIndex;"
+ "out int gl_Layer;"
+ "\n");
+
#ifdef NV_EXTENSIONS
if (version >= 450)
stageBuiltins[EShLangTessEvaluation].append(
- "out int gl_ViewportIndex;"
- "out int gl_Layer;"
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
"out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
"out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
@@ -3601,6 +3880,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
stageBuiltins[EShLangFragment].append(
"vec2 gl_PointCoord;" // needs qualifier fixed later
);
+ if (version >= 140)
+ stageBuiltins[EShLangFragment].append(
+ "out int gl_FragStencilRefARB;"
+ );
if (IncludeLegacy(version, profile, spvVersion) || (! ForwardCompatibility && version < 420))
stageBuiltins[EShLangFragment].append(
"vec4 gl_FragColor;" // needs qualifier fixed later
@@ -3749,6 +4032,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
+ if (version >= 300 /* both ES and non-ES */) {
+ stageBuiltins[EShLangFragment].append(
+ "flat in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2
+ "\n");
+ }
+
// printf("%s\n", commonBuiltins.c_str());
// printf("%s\n", stageBuiltins[EShLangFragment].c_str());
}
@@ -3844,6 +4133,17 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
else {
addSamplingFunctions(sampler, typeName, version, profile);
addGatherFunctions(sampler, typeName, version, profile);
+
+ if (spvVersion.vulkan > 0 && sampler.dim == EsdBuffer && sampler.isCombined()) {
+ // Vulkan wants a textureBuffer to allow texelFetch() --
+ // a sampled image with no sampler.
+ // So, add sampling functions for both the
+ // samplerBuffer and textureBuffer types.
+ sampler.setTexture(sampler.type, sampler.dim, sampler.arrayed, sampler.shadow,
+ sampler.ms);
+ TString textureTypeName = sampler.getString();
+ addSamplingFunctions(sampler, textureTypeName, version, profile);
+ }
}
}
}
@@ -3867,7 +4167,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
//
// Add all the query functions for the given type.
//
-void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, int version, EProfile profile)
+void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile)
{
if (sampler.image && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 430)))
return;
@@ -3944,7 +4244,7 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, int versi
//
// Add all the image access functions for the given type.
//
-void TBuiltIns::addImageFunctions(TSampler sampler, TString& typeName, int version, EProfile profile)
+void TBuiltIns::addImageFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile)
{
int dims = dimMap[sampler.dim];
// most things with an array add a dimension, except for cubemaps
@@ -4029,6 +4329,43 @@ void TBuiltIns::addImageFunctions(TSampler sampler, TString& typeName, int versi
}
}
}
+
+#ifdef AMD_EXTENSIONS
+ if (sampler.dim == EsdRect || sampler.dim == EsdBuffer || sampler.shadow || sampler.ms)
+ return;
+
+ if (profile == EEsProfile || version < 450)
+ return;
+
+ TString imageLodParams = typeName;
+ if (dims == 1)
+ imageLodParams.append(", int");
+ else {
+ imageLodParams.append(", ivec");
+ imageLodParams.append(postfixes[dims]);
+ }
+ imageLodParams.append(", int");
+
+ commonBuiltins.append(prefixes[sampler.type]);
+ commonBuiltins.append("vec4 imageLoadLodAMD(readonly volatile coherent ");
+ commonBuiltins.append(imageLodParams);
+ commonBuiltins.append(");\n");
+
+ commonBuiltins.append("void imageStoreLodAMD(writeonly volatile coherent ");
+ commonBuiltins.append(imageLodParams);
+ commonBuiltins.append(", ");
+ commonBuiltins.append(prefixes[sampler.type]);
+ commonBuiltins.append("vec4);\n");
+
+ if (sampler.dim != Esd1D) {
+ commonBuiltins.append("int sparseImageLoadLodAMD(readonly volatile coherent ");
+ commonBuiltins.append(imageLodParams);
+ commonBuiltins.append(", out ");
+ commonBuiltins.append(prefixes[sampler.type]);
+ commonBuiltins.append("vec4");
+ commonBuiltins.append(");\n");
+ }
+#endif
}
//
@@ -4037,7 +4374,7 @@ void TBuiltIns::addImageFunctions(TSampler sampler, TString& typeName, int versi
//
// Add all the subpass access functions for the given type.
//
-void TBuiltIns::addSubpassSampling(TSampler sampler, TString& typeName, int /*version*/, EProfile /*profile*/)
+void TBuiltIns::addSubpassSampling(TSampler sampler, const TString& typeName, int /*version*/, EProfile /*profile*/)
{
stageBuiltins[EShLangFragment].append(prefixes[sampler.type]);
stageBuiltins[EShLangFragment].append("vec4 subpassLoad");
@@ -4054,7 +4391,7 @@ void TBuiltIns::addSubpassSampling(TSampler sampler, TString& typeName, int /*ve
//
// Add all the texture lookup functions for the given type.
//
-void TBuiltIns::addSamplingFunctions(TSampler sampler, TString& typeName, int version, EProfile profile)
+void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile)
{
//
// texturing
@@ -4284,7 +4621,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, TString& typeName, int ve
//
// Add all the texture gather functions for the given type.
//
-void TBuiltIns::addGatherFunctions(TSampler sampler, TString& typeName, int version, EProfile profile)
+void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile)
{
switch (sampler.dim) {
case Esd2D:
@@ -4339,6 +4676,7 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, TString& typeName, int vers
default:
break;
}
+
if (sparse)
s.append("ARB");
s.append("(");
@@ -4378,6 +4716,116 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, TString& typeName, int vers
}
}
}
+
+#ifdef AMD_EXTENSIONS
+ if (sampler.dim == EsdRect || sampler.shadow)
+ return;
+
+ if (profile == EEsProfile || version < 450)
+ return;
+
+ for (int bias = 0; bias < 2; ++bias) { // loop over presence of bias argument
+
+ for (int lod = 0; lod < 2; ++lod) { // loop over presence of lod argument
+
+ if ((lod && bias) || (lod == 0 && bias == 0))
+ continue;
+
+ for (int offset = 0; offset < 3; ++offset) { // loop over three forms of offset in the call name: none, Offset, and Offsets
+
+ for (int comp = 0; comp < 2; ++comp) { // loop over presence of comp argument
+
+ if (comp == 0 && bias)
+ continue;
+
+ if (offset > 0 && sampler.dim == EsdCube)
+ continue;
+
+ for (int sparse = 0; sparse <= 1; ++sparse) { // loop over "bool" sparse or not
+ if (sparse && (profile == EEsProfile || version < 450))
+ continue;
+
+ TString s;
+
+ // return type
+ if (sparse)
+ s.append("int ");
+ else {
+ s.append(prefixes[sampler.type]);
+ s.append("vec4 ");
+ }
+
+ // name
+ if (sparse)
+ s.append("sparseTextureGather");
+ else
+ s.append("textureGather");
+
+ if (lod)
+ s.append("Lod");
+
+ switch (offset) {
+ case 1:
+ s.append("Offset");
+ break;
+ case 2:
+ s.append("Offsets");
+ default:
+ break;
+ }
+
+ if (lod)
+ s.append("AMD");
+ else if (sparse)
+ s.append("ARB");
+
+ s.append("(");
+
+ // sampler type argument
+ s.append(typeName);
+
+ // P coordinate argument
+ s.append(",vec");
+ int totalDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0);
+ s.append(postfixes[totalDims]);
+
+ // lod argument
+ if (lod)
+ s.append(",float");
+
+ // offset argument
+ if (offset > 0) {
+ s.append(",ivec2");
+ if (offset == 2)
+ s.append("[4]");
+ }
+
+ // texel out (for sparse texture)
+ if (sparse) {
+ s.append(",out ");
+ s.append(prefixes[sampler.type]);
+ s.append("vec4 ");
+ }
+
+ // comp argument
+ if (comp)
+ s.append(",int");
+
+ // bias argument
+ if (bias)
+ s.append(",float");
+
+ s.append(");\n");
+ if (bias)
+ stageBuiltins[EShLangFragment].append(s);
+ else
+ commonBuiltins.append(s);
+ }
+ }
+ }
+ }
+ }
+#endif
}
//
@@ -4926,16 +5374,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
switch(language) {
case EShLangVertex:
if (profile != EEsProfile) {
- symbolTable.setVariableExtensions("gl_BaseVertexARB", 1, &E_GL_ARB_shader_draw_parameters);
- symbolTable.setVariableExtensions("gl_BaseInstanceARB", 1, &E_GL_ARB_shader_draw_parameters);
- symbolTable.setVariableExtensions("gl_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters);
-
- BuiltInVariable("gl_BaseVertexARB", EbvBaseVertex, symbolTable);
- BuiltInVariable("gl_BaseInstanceARB", EbvBaseInstance, symbolTable);
- BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable);
- }
-
- if (profile != EEsProfile) {
+ if (version >= 440) {
+ symbolTable.setVariableExtensions("gl_BaseVertexARB", 1, &E_GL_ARB_shader_draw_parameters);
+ symbolTable.setVariableExtensions("gl_BaseInstanceARB", 1, &E_GL_ARB_shader_draw_parameters);
+ symbolTable.setVariableExtensions("gl_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters);
+ BuiltInVariable("gl_BaseVertexARB", EbvBaseVertex, symbolTable);
+ BuiltInVariable("gl_BaseInstanceARB", EbvBaseInstance, symbolTable);
+ BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable);
+ }
+ if (version >= 460) {
+ BuiltInVariable("gl_BaseVertex", EbvBaseVertex, symbolTable);
+ BuiltInVariable("gl_BaseInstance", EbvBaseInstance, symbolTable);
+ BuiltInVariable("gl_DrawID", EbvDrawId, symbolTable);
+ }
symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot);
symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot);
symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot);
@@ -4959,9 +5410,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
// Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan
SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable);
- symbolTable.setFunctionExtensions("anyInvocationARB", 1, &E_GL_ARB_shader_group_vote);
- symbolTable.setFunctionExtensions("allInvocationsARB", 1, &E_GL_ARB_shader_group_vote);
- symbolTable.setFunctionExtensions("allInvocationsEqualARB", 1, &E_GL_ARB_shader_group_vote);
+ if (version >= 430) {
+ symbolTable.setFunctionExtensions("anyInvocationARB", 1, &E_GL_ARB_shader_group_vote);
+ symbolTable.setFunctionExtensions("allInvocationsARB", 1, &E_GL_ARB_shader_group_vote);
+ symbolTable.setFunctionExtensions("allInvocationsEqualARB", 1, &E_GL_ARB_shader_group_vote);
+ }
}
#ifdef AMD_EXTENSIONS
@@ -5002,6 +5455,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setFunctionExtensions("cubeFaceCoordAMD", 1, &E_GL_AMD_gcn_shader);
symbolTable.setFunctionExtensions("timeAMD", 1, &E_GL_AMD_gcn_shader);
}
+
+ if (profile != EEsProfile) {
+ symbolTable.setFunctionExtensions("fragmentMaskFetchAMD", 1, &E_GL_AMD_shader_fragment_mask);
+ symbolTable.setFunctionExtensions("fragmentFetchAMD", 1, &E_GL_AMD_shader_fragment_mask);
+ }
#endif
// Compatibility variables, vertex only
@@ -5026,13 +5484,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setFunctionExtensions("texture2DGradEXT", 1, &E_GL_EXT_shader_texture_lod);
symbolTable.setFunctionExtensions("texture2DProjGradEXT", 1, &E_GL_EXT_shader_texture_lod);
symbolTable.setFunctionExtensions("textureCubeGradEXT", 1, &E_GL_EXT_shader_texture_lod);
- symbolTable.setFunctionExtensions("textureGatherOffsets", Num_AEP_gpu_shader5, AEP_gpu_shader5);
+ if (version == 310)
+ symbolTable.setFunctionExtensions("textureGatherOffsets", Num_AEP_gpu_shader5, AEP_gpu_shader5);
}
- if (version >= 310)
+ if (version == 310)
symbolTable.setFunctionExtensions("fma", Num_AEP_gpu_shader5, AEP_gpu_shader5);
}
- if (profile == EEsProfile) {
+ if (profile == EEsProfile && version < 320) {
symbolTable.setFunctionExtensions("imageAtomicAdd", 1, &E_GL_OES_shader_image_atomic);
symbolTable.setFunctionExtensions("imageAtomicMin", 1, &E_GL_OES_shader_image_atomic);
symbolTable.setFunctionExtensions("imageAtomicMax", 1, &E_GL_OES_shader_image_atomic);
@@ -5053,12 +5512,24 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
BuiltInVariable("gl_InstanceIndex", EbvInstanceIndex, symbolTable);
}
+ if (version >= 300 /* both ES and non-ES */) {
+ symbolTable.setVariableExtensions("gl_ViewID_OVR", Num_OVR_multiview_EXTs, OVR_multiview_EXTs);
+ BuiltInVariable("gl_ViewID_OVR", EbvViewIndex, symbolTable);
+ }
+
+ if (profile == EEsProfile) {
+ symbolTable.setFunctionExtensions("shadow2DEXT", 1, &E_GL_EXT_shadow_samplers);
+ symbolTable.setFunctionExtensions("shadow2DProjEXT", 1, &E_GL_EXT_shadow_samplers);
+ }
+
// Fall through
case EShLangTessControl:
if (profile == EEsProfile && version >= 310) {
- symbolTable.setVariableExtensions("gl_BoundingBoxOES", Num_AEP_primitive_bounding_box, AEP_primitive_bounding_box);
BuiltInVariable("gl_BoundingBoxOES", EbvBoundingBox, symbolTable);
+ if (version < 320)
+ symbolTable.setVariableExtensions("gl_BoundingBoxOES", Num_AEP_primitive_bounding_box,
+ AEP_primitive_bounding_box);
}
// Fall through
@@ -5092,6 +5563,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setVariableExtensions("gl_Layer", Num_viewportEXTs, viewportEXTs);
symbolTable.setVariableExtensions("gl_ViewportIndex", Num_viewportEXTs, viewportEXTs);
}
+#else
+ if (language != EShLangGeometry && version >= 410) {
+ symbolTable.setVariableExtensions("gl_Layer", 1, &E_GL_ARB_shader_viewport_layer_array);
+ symbolTable.setVariableExtensions("gl_ViewportIndex", 1, &E_GL_ARB_shader_viewport_layer_array);
+ }
+#endif
+
+#ifdef NV_EXTENSIONS
symbolTable.setVariableExtensions("gl_ViewportMask", 1, &E_GL_NV_viewport_array2);
symbolTable.setVariableExtensions("gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering);
symbolTable.setVariableExtensions("gl_SecondaryViewportMaskNV", 1, &E_GL_NV_stereo_view_rendering);
@@ -5108,8 +5587,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
BuiltInVariable("gl_in", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable);
BuiltInVariable("gl_in", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable);
}
- BuiltInVariable("gl_out", "gl_Layer", EbvLayer, symbolTable);
- BuiltInVariable("gl_out", "gl_ViewportIndex", EbvViewportIndex, symbolTable);
BuiltInVariable("gl_out", "gl_ViewportMask", EbvViewportMaskNV, symbolTable);
BuiltInVariable("gl_out", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable);
BuiltInVariable("gl_out", "gl_SecondaryViewportMaskNV", EbvSecondaryViewportMaskNV, symbolTable);
@@ -5177,7 +5654,15 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
SpecialQualifier("gl_FrontFacing", EvqFace, EbvFace, symbolTable);
SpecialQualifier("gl_FragCoord", EvqFragCoord, EbvFragCoord, symbolTable);
SpecialQualifier("gl_PointCoord", EvqPointCoord, EbvPointCoord, symbolTable);
- SpecialQualifier("gl_FragColor", EvqFragColor, EbvFragColor, symbolTable);
+ if (spvVersion.spv == 0)
+ SpecialQualifier("gl_FragColor", EvqFragColor, EbvFragColor, symbolTable);
+ else {
+ TSymbol* symbol = symbolTable.find("gl_FragColor");
+ if (symbol) {
+ symbol->getWritableType().getQualifier().storage = EvqVaryingOut;
+ symbol->getWritableType().getQualifier().layoutLocation = 0;
+ }
+ }
SpecialQualifier("gl_FragDepth", EvqFragDepth, EbvFragDepth, symbolTable);
SpecialQualifier("gl_FragDepthEXT", EvqFragDepth, EbvFragDepth, symbolTable);
SpecialQualifier("gl_HelperInvocation", EvqVaryingIn, EbvHelperInvocation, symbolTable);
@@ -5186,13 +5671,18 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
BuiltInVariable("gl_CullDistance", EbvCullDistance, symbolTable);
BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable);
+ if (profile != EEsProfile && version >= 140) {
+ symbolTable.setVariableExtensions("gl_FragStencilRefARB", 1, &E_GL_ARB_shader_stencil_export);
+ BuiltInVariable("gl_FragStencilRefARB", EbvFragStencilRef, symbolTable);
+ }
+
if ((profile != EEsProfile && version >= 400) ||
(profile == EEsProfile && version >= 310)) {
BuiltInVariable("gl_SampleID", EbvSampleId, symbolTable);
BuiltInVariable("gl_SamplePosition", EbvSamplePosition, symbolTable);
BuiltInVariable("gl_SampleMaskIn", EbvSampleMask, symbolTable);
BuiltInVariable("gl_SampleMask", EbvSampleMask, symbolTable);
- if (profile == EEsProfile) {
+ if (profile == EEsProfile && version < 320) {
symbolTable.setVariableExtensions("gl_SampleID", 1, &E_GL_OES_sample_variables);
symbolTable.setVariableExtensions("gl_SamplePosition", 1, &E_GL_OES_sample_variables);
symbolTable.setVariableExtensions("gl_SampleMaskIn", 1, &E_GL_OES_sample_variables);
@@ -5226,14 +5716,15 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setFunctionExtensions("texture2DGradEXT", 1, &E_GL_EXT_shader_texture_lod);
symbolTable.setFunctionExtensions("texture2DProjGradEXT", 1, &E_GL_EXT_shader_texture_lod);
symbolTable.setFunctionExtensions("textureCubeGradEXT", 1, &E_GL_EXT_shader_texture_lod);
- symbolTable.setFunctionExtensions("textureGatherOffsets", Num_AEP_gpu_shader5, AEP_gpu_shader5);
+ if (version < 320)
+ symbolTable.setFunctionExtensions("textureGatherOffsets", Num_AEP_gpu_shader5, AEP_gpu_shader5);
}
if (version == 100) {
symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_OES_standard_derivatives);
symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_OES_standard_derivatives);
symbolTable.setFunctionExtensions("fwidth", 1, &E_GL_OES_standard_derivatives);
}
- if (version >= 310) {
+ if (version == 310) {
symbolTable.setFunctionExtensions("fma", Num_AEP_gpu_shader5, AEP_gpu_shader5);
symbolTable.setFunctionExtensions("interpolateAtCentroid", 1, &E_GL_OES_shader_multisample_interpolation);
symbolTable.setFunctionExtensions("interpolateAtSample", 1, &E_GL_OES_shader_multisample_interpolation);
@@ -5348,16 +5839,33 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
BuiltInVariable("gl_BaryCoordSmoothSampleAMD", EbvBaryCoordSmoothSample, symbolTable);
BuiltInVariable("gl_BaryCoordPullModelAMD", EbvBaryCoordPullModel, symbolTable);
}
+
+ // E_GL_AMD_texture_gather_bias_lod
+ if (profile != EEsProfile) {
+ symbolTable.setFunctionExtensions("textureGatherLodAMD", 1, &E_GL_AMD_texture_gather_bias_lod);
+ symbolTable.setFunctionExtensions("textureGatherLodOffsetAMD", 1, &E_GL_AMD_texture_gather_bias_lod);
+ symbolTable.setFunctionExtensions("textureGatherLodOffsetsAMD", 1, &E_GL_AMD_texture_gather_bias_lod);
+ symbolTable.setFunctionExtensions("sparseTextureGatherLodAMD", 1, &E_GL_AMD_texture_gather_bias_lod);
+ symbolTable.setFunctionExtensions("sparseTextureGatherLodOffsetAMD", 1, &E_GL_AMD_texture_gather_bias_lod);
+ symbolTable.setFunctionExtensions("sparseTextureGatherLodOffsetsAMD", 1, &E_GL_AMD_texture_gather_bias_lod);
+ }
+
+ // E_GL_AMD_shader_image_load_store_lod
+ if (profile != EEsProfile) {
+ symbolTable.setFunctionExtensions("imageLoadLodAMD", 1, &E_GL_AMD_shader_image_load_store_lod);
+ symbolTable.setFunctionExtensions("imageStoreLodAMD", 1, &E_GL_AMD_shader_image_load_store_lod);
+ symbolTable.setFunctionExtensions("sparseImageLoadLodAMD", 1, &E_GL_AMD_shader_image_load_store_lod);
+ }
#endif
symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth);
- if (profile == EEsProfile) {
+ if (profile == EEsProfile && version < 320) {
symbolTable.setVariableExtensions("gl_PrimitiveID", Num_AEP_geometry_shader, AEP_geometry_shader);
symbolTable.setVariableExtensions("gl_Layer", Num_AEP_geometry_shader, AEP_geometry_shader);
}
- if (profile == EEsProfile) {
+ if (profile == EEsProfile && version < 320) {
symbolTable.setFunctionExtensions("imageAtomicAdd", 1, &E_GL_OES_shader_image_atomic);
symbolTable.setFunctionExtensions("imageAtomicMin", 1, &E_GL_OES_shader_image_atomic);
symbolTable.setFunctionExtensions("imageAtomicMax", 1, &E_GL_OES_shader_image_atomic);
@@ -5372,6 +5880,15 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview);
BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable);
+ if (version >= 300 /* both ES and non-ES */) {
+ symbolTable.setVariableExtensions("gl_ViewID_OVR", Num_OVR_multiview_EXTs, OVR_multiview_EXTs);
+ BuiltInVariable("gl_ViewID_OVR", EbvViewIndex, symbolTable);
+ }
+
+ if (profile == EEsProfile) {
+ symbolTable.setFunctionExtensions("shadow2DEXT", 1, &E_GL_EXT_shadow_samplers);
+ symbolTable.setFunctionExtensions("shadow2DProjEXT", 1, &E_GL_EXT_shadow_samplers);
+ }
break;
case EShLangCompute:
@@ -5499,6 +6016,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.relateToOperator("doubleBitsToUint64", EOpDoubleBitsToUint64);
symbolTable.relateToOperator("int64BitsToDouble", EOpInt64BitsToDouble);
symbolTable.relateToOperator("uint64BitsToDouble", EOpUint64BitsToDouble);
+#ifdef AMD_EXTENSIONS
+ symbolTable.relateToOperator("float16BitsToInt16", EOpFloat16BitsToInt16);
+ symbolTable.relateToOperator("float16BitsToUint16", EOpFloat16BitsToUint16);
+ symbolTable.relateToOperator("int16BitsToFloat16", EOpInt16BitsToFloat16);
+ symbolTable.relateToOperator("uint16BitsToFloat16", EOpUint16BitsToFloat16);
+#endif
symbolTable.relateToOperator("packSnorm2x16", EOpPackSnorm2x16);
symbolTable.relateToOperator("unpackSnorm2x16", EOpUnpackSnorm2x16);
@@ -5522,6 +6045,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32);
#ifdef AMD_EXTENSIONS
+ symbolTable.relateToOperator("packInt2x16", EOpPackInt2x16);
+ symbolTable.relateToOperator("unpackInt2x16", EOpUnpackInt2x16);
+ symbolTable.relateToOperator("packUint2x16", EOpPackUint2x16);
+ symbolTable.relateToOperator("unpackUint2x16", EOpUnpackUint2x16);
+
+ symbolTable.relateToOperator("packInt4x16", EOpPackInt4x16);
+ symbolTable.relateToOperator("unpackInt4x16", EOpUnpackInt4x16);
+ symbolTable.relateToOperator("packUint4x16", EOpPackUint4x16);
+ symbolTable.relateToOperator("unpackUint4x16", EOpUnpackUint4x16);
+
symbolTable.relateToOperator("packFloat2x16", EOpPackFloat2x16);
symbolTable.relateToOperator("unpackFloat2x16", EOpUnpackFloat2x16);
#endif
@@ -5557,6 +6090,18 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.relateToOperator("atomicCounterDecrement", EOpAtomicCounterDecrement);
symbolTable.relateToOperator("atomicCounter", EOpAtomicCounter);
+ if (profile != EEsProfile && version >= 460) {
+ symbolTable.relateToOperator("atomicCounterAdd", EOpAtomicCounterAdd);
+ symbolTable.relateToOperator("atomicCounterSubtract", EOpAtomicCounterSubtract);
+ symbolTable.relateToOperator("atomicCounterMin", EOpAtomicCounterMin);
+ symbolTable.relateToOperator("atomicCounterMax", EOpAtomicCounterMax);
+ symbolTable.relateToOperator("atomicCounterAnd", EOpAtomicCounterAnd);
+ symbolTable.relateToOperator("atomicCounterOr", EOpAtomicCounterOr);
+ symbolTable.relateToOperator("atomicCounterXor", EOpAtomicCounterXor);
+ symbolTable.relateToOperator("atomicCounterExchange", EOpAtomicCounterExchange);
+ symbolTable.relateToOperator("atomicCounterCompSwap", EOpAtomicCounterCompSwap);
+ }
+
symbolTable.relateToOperator("fma", EOpFma);
symbolTable.relateToOperator("frexp", EOpFrexp);
symbolTable.relateToOperator("ldexp", EOpLdexp);
@@ -5699,10 +6244,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.relateToOperator("readInvocationARB", EOpReadInvocation);
symbolTable.relateToOperator("readFirstInvocationARB", EOpReadFirstInvocation);
- symbolTable.relateToOperator("anyInvocationARB", EOpAnyInvocation);
- symbolTable.relateToOperator("allInvocationsARB", EOpAllInvocations);
- symbolTable.relateToOperator("allInvocationsEqualARB", EOpAllInvocationsEqual);
-
+ if (version >= 430) {
+ symbolTable.relateToOperator("anyInvocationARB", EOpAnyInvocation);
+ symbolTable.relateToOperator("allInvocationsARB", EOpAllInvocations);
+ symbolTable.relateToOperator("allInvocationsEqualARB", EOpAllInvocationsEqual);
+ }
+ if (version >= 460) {
+ symbolTable.relateToOperator("anyInvocation", EOpAnyInvocation);
+ symbolTable.relateToOperator("allInvocations", EOpAllInvocations);
+ symbolTable.relateToOperator("allInvocationsEqual", EOpAllInvocationsEqual);
+ }
#ifdef AMD_EXTENSIONS
symbolTable.relateToOperator("minInvocationsAMD", EOpMinInvocations);
symbolTable.relateToOperator("maxInvocationsAMD", EOpMaxInvocations);
@@ -5734,8 +6285,26 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.relateToOperator("cubeFaceIndexAMD", EOpCubeFaceIndex);
symbolTable.relateToOperator("cubeFaceCoordAMD", EOpCubeFaceCoord);
symbolTable.relateToOperator("timeAMD", EOpTime);
+
+ symbolTable.relateToOperator("textureGatherLodAMD", EOpTextureGatherLod);
+ symbolTable.relateToOperator("textureGatherLodOffsetAMD", EOpTextureGatherLodOffset);
+ symbolTable.relateToOperator("textureGatherLodOffsetsAMD", EOpTextureGatherLodOffsets);
+ symbolTable.relateToOperator("sparseTextureGatherLodAMD", EOpSparseTextureGatherLod);
+ symbolTable.relateToOperator("sparseTextureGatherLodOffsetAMD", EOpSparseTextureGatherLodOffset);
+ symbolTable.relateToOperator("sparseTextureGatherLodOffsetsAMD", EOpSparseTextureGatherLodOffsets);
+
+ symbolTable.relateToOperator("imageLoadLodAMD", EOpImageLoadLod);
+ symbolTable.relateToOperator("imageStoreLodAMD", EOpImageStoreLod);
+ symbolTable.relateToOperator("sparseImageLoadLodAMD", EOpSparseImageLoadLod);
+
+ symbolTable.relateToOperator("fragmentMaskFetchAMD", EOpFragmentMaskFetch);
+ symbolTable.relateToOperator("fragmentFetchAMD", EOpFragmentFetch);
#endif
}
+ if (profile == EEsProfile) {
+ symbolTable.relateToOperator("shadow2DEXT", EOpTexture);
+ symbolTable.relateToOperator("shadow2DProjEXT", EOpTextureProj);
+ }
}
switch(language) {
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Initialize.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Initialize.h
index 45b439562f2..6b54c4da623 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Initialize.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Initialize.h
@@ -94,11 +94,11 @@ public:
protected:
void add2ndGenerationSamplingImaging(int version, EProfile profile, const SpvVersion& spvVersion);
- void addSubpassSampling(TSampler, TString& typeName, int version, EProfile profile);
- void addQueryFunctions(TSampler, TString& typeName, int version, EProfile profile);
- void addImageFunctions(TSampler, TString& typeName, int version, EProfile profile);
- void addSamplingFunctions(TSampler, TString& typeName, int version, EProfile profile);
- void addGatherFunctions(TSampler, TString& typeName, int version, EProfile profile);
+ void addSubpassSampling(TSampler, const TString& typeName, int version, EProfile profile);
+ void addQueryFunctions(TSampler, const TString& typeName, int version, EProfile profile);
+ void addImageFunctions(TSampler, const TString& typeName, int version, EProfile profile);
+ void addSamplingFunctions(TSampler, const TString& typeName, int version, EProfile profile);
+ void addGatherFunctions(TSampler, const TString& typeName, int version, EProfile profile);
// Helpers for making textual representations of the permutations
// of texturing/imaging functions.
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp
index 8abd9e397a8..2fa0d8a85e4 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp
@@ -130,8 +130,9 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn
}
// Convert the children's type shape to be compatible.
- right = addShapeConversion(op, left->getType(), right);
- left = addShapeConversion(op, right->getType(), left);
+ addBiShapeConversion(op, left, right);
+ if (left == nullptr || right == nullptr)
+ return nullptr;
//
// Need a new node holding things together. Make
@@ -147,8 +148,8 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn
// If they are both (non-specialization) constants, they must be folded.
// (Unless it's the sequence (comma) operator, but that's handled in addComma().)
//
- TIntermConstantUnion *leftTempConstant = left->getAsConstantUnion();
- TIntermConstantUnion *rightTempConstant = right->getAsConstantUnion();
+ TIntermConstantUnion *leftTempConstant = node->getLeft()->getAsConstantUnion();
+ TIntermConstantUnion *rightTempConstant = node->getRight()->getAsConstantUnion();
if (leftTempConstant && rightTempConstant) {
TIntermTyped* folded = leftTempConstant->fold(node->getOp(), rightTempConstant);
if (folded)
@@ -157,7 +158,7 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn
// If can propagate spec-constantness and if the operation is an allowed
// specialization-constant operation, make a spec-constant.
- if (specConstantPropagates(*left, *right) && isSpecializationOperation(*node))
+ if (specConstantPropagates(*node->getLeft(), *node->getRight()) && isSpecializationOperation(*node))
node->getWritableType().getQualifier().makeSpecConstant();
return node;
@@ -238,7 +239,7 @@ TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TInterm
return nullptr;
// convert shape
- right = addShapeConversion(op, left->getType(), right);
+ right = addUniShapeConversion(op, left->getType(), right);
// build the node
TIntermBinary* node = addBinaryNode(op, left, right, loc);
@@ -307,6 +308,10 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo
case EOpConstructUint: newType = EbtUint; break;
case EOpConstructInt64: newType = EbtInt64; break;
case EOpConstructUint64: newType = EbtUint64; break;
+#ifdef AMD_EXTENSIONS
+ case EOpConstructInt16: newType = EbtInt16; break;
+ case EOpConstructUint16: newType = EbtUint16; break;
+#endif
case EOpConstructBool: newType = EbtBool; break;
case EOpConstructFloat: newType = EbtFloat; break;
case EOpConstructDouble: newType = EbtDouble; break;
@@ -335,6 +340,10 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo
case EOpConstructUint:
case EOpConstructInt64:
case EOpConstructUint64:
+#ifdef AMD_EXTENSIONS
+ case EOpConstructInt16:
+ case EOpConstructUint16:
+#endif
case EOpConstructBool:
case EOpConstructFloat:
case EOpConstructDouble:
@@ -356,12 +365,12 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo
node->updatePrecision();
// If it's a (non-specialization) constant, it must be folded.
- if (child->getAsConstantUnion())
- return child->getAsConstantUnion()->fold(op, node->getType());
+ if (node->getOperand()->getAsConstantUnion())
+ return node->getOperand()->getAsConstantUnion()->fold(op, node->getType());
// If it's a specialization constant, the result is too,
// if the operation is allowed for specialization constants.
- if (child->getType().getQualifier().isSpecConstant() && isSpecializationOperation(*node))
+ if (node->getOperand()->getType().getQualifier().isSpecConstant() && isSpecializationOperation(*node))
node->getWritableType().getQualifier().makeSpecConstant();
return node;
@@ -527,6 +536,14 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EOpConstructUint64:
promoteTo = EbtUint64;
break;
+#ifdef AMD_EXTENSIONS
+ case EOpConstructInt16:
+ promoteTo = EbtInt16;
+ break;
+ case EOpConstructUint16:
+ promoteTo = EbtUint16;
+ break;
+#endif
//
// List all the binary ops that can implicitly convert one operand to the other's type;
@@ -615,15 +632,26 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EOpRightShiftAssign:
if ((type.getBasicType() == EbtInt ||
type.getBasicType() == EbtUint ||
+#ifdef AMD_EXTENSIONS
+ type.getBasicType() == EbtInt16 ||
+ type.getBasicType() == EbtUint16 ||
+#endif
type.getBasicType() == EbtInt64 ||
type.getBasicType() == EbtUint64) &&
(node->getType().getBasicType() == EbtInt ||
node->getType().getBasicType() == EbtUint ||
+#ifdef AMD_EXTENSIONS
+ node->getType().getBasicType() == EbtInt16 ||
+ node->getType().getBasicType() == EbtUint16 ||
+#endif
node->getType().getBasicType() == EbtInt64 ||
node->getType().getBasicType() == EbtUint64))
return node;
- else
+ else if (source == EShSourceHlsl && node->getType().getBasicType() == EbtBool) {
+ promoteTo = type.getBasicType();
+ break;
+ } else
return nullptr;
default:
@@ -659,6 +687,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
#endif
case EbtInt64: newOp = EOpConvInt64ToDouble; break;
case EbtUint64: newOp = EOpConvUint64ToDouble; break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16: newOp = EOpConvInt16ToDouble; break;
+ case EbtUint16: newOp = EOpConvUint16ToDouble; break;
+#endif
default:
return nullptr;
}
@@ -674,6 +706,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
#endif
case EbtInt64: newOp = EOpConvInt64ToFloat; break;
case EbtUint64: newOp = EOpConvUint64ToFloat; break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16: newOp = EOpConvInt16ToFloat; break;
+ case EbtUint16: newOp = EOpConvUint16ToFloat; break;
+#endif
default:
return nullptr;
}
@@ -688,6 +724,8 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EbtDouble: newOp = EOpConvDoubleToFloat16; break;
case EbtInt64: newOp = EOpConvInt64ToFloat16; break;
case EbtUint64: newOp = EOpConvUint64ToFloat16; break;
+ case EbtInt16: newOp = EOpConvInt16ToFloat16; break;
+ case EbtUint16: newOp = EOpConvUint16ToFloat16; break;
default:
return nullptr;
}
@@ -704,6 +742,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
#endif
case EbtInt64: newOp = EOpConvInt64ToBool; break;
case EbtUint64: newOp = EOpConvUint64ToBool; break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16: newOp = EOpConvInt16ToBool; break;
+ case EbtUint16: newOp = EOpConvUint16ToBool; break;
+#endif
default:
return nullptr;
}
@@ -719,6 +761,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
#endif
case EbtInt64: newOp = EOpConvInt64ToInt; break;
case EbtUint64: newOp = EOpConvUint64ToInt; break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16: newOp = EOpConvInt16ToInt; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt; break;
+#endif
default:
return nullptr;
}
@@ -734,6 +780,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
#endif
case EbtInt64: newOp = EOpConvInt64ToUint; break;
case EbtUint64: newOp = EOpConvUint64ToUint; break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16: newOp = EOpConvInt16ToUint; break;
+ case EbtUint16: newOp = EOpConvUint16ToUint; break;
+#endif
default:
return nullptr;
}
@@ -749,6 +799,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EbtFloat16: newOp = EOpConvFloat16ToInt64; break;
#endif
case EbtUint64: newOp = EOpConvUint64ToInt64; break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16: newOp = EOpConvInt16ToInt64; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt64; break;
+#endif
default:
return nullptr;
}
@@ -764,10 +818,46 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EbtFloat16: newOp = EOpConvFloat16ToUint64; break;
#endif
case EbtInt64: newOp = EOpConvInt64ToUint64; break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16: newOp = EOpConvInt16ToUint64; break;
+ case EbtUint16: newOp = EOpConvUint16ToUint64; break;
+#endif
+ default:
+ return nullptr;
+ }
+ break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ switch (node->getBasicType()) {
+ case EbtInt: newOp = EOpConvIntToInt16; break;
+ case EbtUint: newOp = EOpConvUintToInt16; break;
+ case EbtBool: newOp = EOpConvBoolToInt16; break;
+ case EbtFloat: newOp = EOpConvFloatToInt16; break;
+ case EbtDouble: newOp = EOpConvDoubleToInt16; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToInt16; break;
+ case EbtInt64: newOp = EOpConvInt64ToInt16; break;
+ case EbtUint64: newOp = EOpConvUint64ToInt16; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt16; break;
+ default:
+ return nullptr;
+ }
+ break;
+ case EbtUint16:
+ switch (node->getBasicType()) {
+ case EbtInt: newOp = EOpConvIntToUint16; break;
+ case EbtUint: newOp = EOpConvUintToUint16; break;
+ case EbtBool: newOp = EOpConvBoolToUint16; break;
+ case EbtFloat: newOp = EOpConvFloatToUint16; break;
+ case EbtDouble: newOp = EOpConvDoubleToUint16; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToUint16; break;
+ case EbtInt64: newOp = EOpConvInt64ToUint16; break;
+ case EbtUint64: newOp = EOpConvUint64ToUint16; break;
+ case EbtInt16: newOp = EOpConvInt16ToUint16; break;
default:
return nullptr;
}
break;
+#endif
default:
return nullptr;
}
@@ -785,7 +875,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
}
// Convert the node's shape of type for the given type, as allowed by the
-// operation involved: 'op'.
+// operation involved: 'op'. This is for situations where there is only one
+// direction to consider doing the shape conversion.
+//
+// This implements policy, it call addShapeConversion() for the mechanism.
//
// Generally, the AST represents allowed GLSL shapes, so this isn't needed
// for GLSL. Bad shapes are caught in conversion or promotion.
@@ -793,7 +886,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
// Return 'node' if no conversion was done. Promotion handles final shape
// checking.
//
-TIntermTyped* TIntermediate::addShapeConversion(TOperator op, const TType& type, TIntermTyped* node)
+TIntermTyped* TIntermediate::addUniShapeConversion(TOperator op, const TType& type, TIntermTyped* node)
{
// some source languages don't do this
switch (source) {
@@ -806,23 +899,142 @@ TIntermTyped* TIntermediate::addShapeConversion(TOperator op, const TType& type,
// some operations don't do this
switch (op) {
+ case EOpFunctionCall:
+ case EOpReturn:
+ break;
+
+ case EOpMulAssign:
+ // want to support vector *= scalar native ops in AST and lower, not smear, similarly for
+ // matrix *= scalar, etc.
+
+ case EOpAddAssign:
+ case EOpSubAssign:
+ case EOpDivAssign:
+ case EOpAndAssign:
+ case EOpInclusiveOrAssign:
+ case EOpExclusiveOrAssign:
+ case EOpRightShiftAssign:
+ case EOpLeftShiftAssign:
+ if (node->getVectorSize() == 1)
+ return node;
+ break;
+
+ case EOpAssign:
+ break;
+
+ case EOpMix:
+ break;
+
+ default:
+ return node;
+ }
+
+ return addShapeConversion(type, node);
+}
+
+// Convert the nodes' shapes to be compatible for the operation 'op'.
+//
+// This implements policy, it call addShapeConversion() for the mechanism.
+//
+// Generally, the AST represents allowed GLSL shapes, so this isn't needed
+// for GLSL. Bad shapes are caught in conversion or promotion.
+//
+void TIntermediate::addBiShapeConversion(TOperator op, TIntermTyped*& lhsNode, TIntermTyped*& rhsNode)
+{
+ // some source languages don't do this
+ switch (source) {
+ case EShSourceHlsl:
+ break;
+ case EShSourceGlsl:
+ default:
+ return;
+ }
+
+ // some operations don't do this
+ // 'break' will mean attempt bidirectional conversion
+ switch (op) {
+ case EOpMulAssign:
case EOpAssign:
+ case EOpAddAssign:
+ case EOpSubAssign:
+ case EOpDivAssign:
+ case EOpAndAssign:
+ case EOpInclusiveOrAssign:
+ case EOpExclusiveOrAssign:
+ case EOpRightShiftAssign:
+ case EOpLeftShiftAssign:
+ // switch to unidirectional conversion (the lhs can't change)
+ rhsNode = addUniShapeConversion(op, lhsNode->getType(), rhsNode);
+ return;
+
+ case EOpAdd:
+ case EOpSub:
+ case EOpMul:
+ case EOpDiv:
+ // want to support vector * scalar native ops in AST and lower, not smear, similarly for
+ // matrix * vector, etc.
+ if (lhsNode->getVectorSize() == 1 || rhsNode->getVectorSize() == 1)
+ return;
+ break;
+
+ case EOpRightShift:
+ case EOpLeftShift:
+ // can natively support the right operand being a scalar and the left a vector,
+ // but not the reverse
+ if (rhsNode->getVectorSize() == 1)
+ return;
+ break;
+
case EOpLessThan:
case EOpGreaterThan:
case EOpLessThanEqual:
case EOpGreaterThanEqual:
+
case EOpEqual:
case EOpNotEqual:
- case EOpFunctionCall:
- case EOpReturn:
+
case EOpLogicalAnd:
case EOpLogicalOr:
case EOpLogicalXor:
+
+ case EOpAnd:
+ case EOpInclusiveOr:
+ case EOpExclusiveOr:
+
+ case EOpMix:
break;
+
default:
- return node;
+ return;
}
+ // Do bidirectional conversions
+ if (lhsNode->getType().isScalarOrVec1() || rhsNode->getType().isScalarOrVec1()) {
+ if (lhsNode->getType().isScalarOrVec1())
+ lhsNode = addShapeConversion(rhsNode->getType(), lhsNode);
+ else
+ rhsNode = addShapeConversion(lhsNode->getType(), rhsNode);
+ }
+ lhsNode = addShapeConversion(rhsNode->getType(), lhsNode);
+ rhsNode = addShapeConversion(lhsNode->getType(), rhsNode);
+}
+
+// Convert the node's shape of type for the given type. It's not necessarily
+// an error if they are different and not converted, as some operations accept
+// mixed types. Promotion will do final shape checking.
+//
+// If there is a chance of two nodes, with conversions possible in each direction,
+// the policy for what to ask for must be in the caller; this will do what is asked.
+//
+// Return 'node' if no conversion was done. Promotion handles final shape
+// checking.
+//
+TIntermTyped* TIntermediate::addShapeConversion(const TType& type, TIntermTyped* node)
+{
+ // no conversion needed
+ if (node->getType() == type)
+ return node;
+
// structures and arrays don't change shape, either to or from
if (node->getType().isStruct() || node->getType().isArray() ||
type.isStruct() || type.isArray())
@@ -831,12 +1043,38 @@ TIntermTyped* TIntermediate::addShapeConversion(TOperator op, const TType& type,
// The new node that handles the conversion
TOperator constructorOp = mapTypeToConstructorOp(type);
- // scalar -> smeared -> vector, or
- // vec1 -> scalar, or
- // bigger vector -> smaller vector or scalar
- if ((type.isVector() && node->getType().isScalar()) ||
- (node->getType().isVector() && node->getVectorSize() == 1 && type.isScalar()) ||
- (node->getVectorSize() > type.getVectorSize() && type.isVector()))
+ // HLSL has custom semantics for scalar->mat shape conversions.
+ if (source == EShSourceHlsl) {
+ if (node->getType().isScalarOrVec1() && type.isMatrix()) {
+
+ // HLSL semantics: the scalar (or vec1) is replicated to every component of the matrix. Left to its
+ // own devices, the constructor from a scalar would populate the diagonal. This forces replication
+ // to every matrix element.
+
+ // Note that if the node is complex (e.g, a function call), we don't want to duplicate it here
+ // repeatedly, so we copy it to a temp, then use the temp.
+ const int matSize = type.getMatrixRows() * type.getMatrixCols();
+ TIntermAggregate* rhsAggregate = new TIntermAggregate();
+
+ const bool isSimple = (node->getAsSymbolNode() != nullptr) || (node->getAsConstantUnion() != nullptr);
+
+ if (!isSimple) {
+ assert(0); // TODO: use node replicator service when available.
+ }
+
+ for (int x=0; x<matSize; ++x)
+ rhsAggregate->getSequence().push_back(node);
+
+ return setAggregateOperator(rhsAggregate, constructorOp, type, node->getLoc());
+ }
+ }
+
+ // scalar -> vector or vec1 -> vector or
+ // vector -> scalar or
+ // bigger vector -> smaller vector
+ if ((node->getType().isScalarOrVec1() && type.isVector()) ||
+ (node->getType().isVector() && type.isScalar()) ||
+ (node->isVector() && type.isVector() && node->getVectorSize() > type.getVectorSize()))
return setAggregateOperator(makeAggregate(node), constructorOp, type, node->getLoc());
return node;
@@ -894,6 +1132,10 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
case EbtUint:
case EbtInt64:
case EbtUint64:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ case EbtUint16:
+#endif
case EbtFloat:
case EbtDouble:
#ifdef AMD_EXTENSIONS
@@ -907,6 +1149,10 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
switch (from) {
case EbtInt:
case EbtUint:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ case EbtUint16:
+#endif
case EbtFloat:
#ifdef AMD_EXTENSIONS
case EbtFloat16:
@@ -920,8 +1166,12 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
case EbtUint:
switch (from) {
case EbtInt:
- return version >= 400;
+ return version >= 400 || (source == EShSourceHlsl);
case EbtUint:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ case EbtUint16:
+#endif
return true;
case EbtBool:
return (source == EShSourceHlsl);
@@ -931,6 +1181,9 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
case EbtInt:
switch (from) {
case EbtInt:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+#endif
return true;
case EbtBool:
return (source == EShSourceHlsl);
@@ -943,6 +1196,10 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
case EbtUint:
case EbtInt64:
case EbtUint64:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ case EbtUint16:
+#endif
return true;
default:
return false;
@@ -951,10 +1208,32 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
switch (from) {
case EbtInt:
case EbtInt64:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+#endif
+ return true;
+ default:
+ return false;
+ }
+#ifdef AMD_EXTENSIONS
+ case EbtFloat16:
+ switch (from) {
+ case EbtInt16:
+ case EbtUint16:
+ case EbtFloat16:
+ return true;
+ default:
+ return false;
+ }
+ case EbtUint16:
+ switch (from) {
+ case EbtInt16:
+ case EbtUint16:
return true;
default:
return false;
}
+#endif
default:
return false;
}
@@ -1094,21 +1373,79 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const
break;
#endif
case EbtInt:
- switch(type.getVectorSize()) {
- case 1: op = EOpConstructInt; break;
- case 2: op = EOpConstructIVec2; break;
- case 3: op = EOpConstructIVec3; break;
- case 4: op = EOpConstructIVec4; break;
- default: break; // some compilers want this
+ if (type.getMatrixCols()) {
+ switch (type.getMatrixCols()) {
+ case 2:
+ switch (type.getMatrixRows()) {
+ case 2: op = EOpConstructIMat2x2; break;
+ case 3: op = EOpConstructIMat2x3; break;
+ case 4: op = EOpConstructIMat2x4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ case 3:
+ switch (type.getMatrixRows()) {
+ case 2: op = EOpConstructIMat3x2; break;
+ case 3: op = EOpConstructIMat3x3; break;
+ case 4: op = EOpConstructIMat3x4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ case 4:
+ switch (type.getMatrixRows()) {
+ case 2: op = EOpConstructIMat4x2; break;
+ case 3: op = EOpConstructIMat4x3; break;
+ case 4: op = EOpConstructIMat4x4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ }
+ } else {
+ switch(type.getVectorSize()) {
+ case 1: op = EOpConstructInt; break;
+ case 2: op = EOpConstructIVec2; break;
+ case 3: op = EOpConstructIVec3; break;
+ case 4: op = EOpConstructIVec4; break;
+ default: break; // some compilers want this
+ }
}
break;
case EbtUint:
- switch(type.getVectorSize()) {
- case 1: op = EOpConstructUint; break;
- case 2: op = EOpConstructUVec2; break;
- case 3: op = EOpConstructUVec3; break;
- case 4: op = EOpConstructUVec4; break;
- default: break; // some compilers want this
+ if (type.getMatrixCols()) {
+ switch (type.getMatrixCols()) {
+ case 2:
+ switch (type.getMatrixRows()) {
+ case 2: op = EOpConstructUMat2x2; break;
+ case 3: op = EOpConstructUMat2x3; break;
+ case 4: op = EOpConstructUMat2x4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ case 3:
+ switch (type.getMatrixRows()) {
+ case 2: op = EOpConstructUMat3x2; break;
+ case 3: op = EOpConstructUMat3x3; break;
+ case 4: op = EOpConstructUMat3x4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ case 4:
+ switch (type.getMatrixRows()) {
+ case 2: op = EOpConstructUMat4x2; break;
+ case 3: op = EOpConstructUMat4x3; break;
+ case 4: op = EOpConstructUMat4x4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ }
+ } else {
+ switch(type.getVectorSize()) {
+ case 1: op = EOpConstructUint; break;
+ case 2: op = EOpConstructUVec2; break;
+ case 3: op = EOpConstructUVec3; break;
+ case 4: op = EOpConstructUVec4; break;
+ default: break; // some compilers want this
+ }
}
break;
case EbtInt64:
@@ -1129,15 +1466,64 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const
default: break; // some compilers want this
}
break;
- case EbtBool:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ switch(type.getVectorSize()) {
+ case 1: op = EOpConstructInt16; break;
+ case 2: op = EOpConstructI16Vec2; break;
+ case 3: op = EOpConstructI16Vec3; break;
+ case 4: op = EOpConstructI16Vec4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ case EbtUint16:
switch(type.getVectorSize()) {
- case 1: op = EOpConstructBool; break;
- case 2: op = EOpConstructBVec2; break;
- case 3: op = EOpConstructBVec3; break;
- case 4: op = EOpConstructBVec4; break;
+ case 1: op = EOpConstructUint16; break;
+ case 2: op = EOpConstructU16Vec2; break;
+ case 3: op = EOpConstructU16Vec3; break;
+ case 4: op = EOpConstructU16Vec4; break;
default: break; // some compilers want this
}
break;
+#endif
+ case EbtBool:
+ if (type.getMatrixCols()) {
+ switch (type.getMatrixCols()) {
+ case 2:
+ switch (type.getMatrixRows()) {
+ case 2: op = EOpConstructBMat2x2; break;
+ case 3: op = EOpConstructBMat2x3; break;
+ case 4: op = EOpConstructBMat2x4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ case 3:
+ switch (type.getMatrixRows()) {
+ case 2: op = EOpConstructBMat3x2; break;
+ case 3: op = EOpConstructBMat3x3; break;
+ case 4: op = EOpConstructBMat3x4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ case 4:
+ switch (type.getMatrixRows()) {
+ case 2: op = EOpConstructBMat4x2; break;
+ case 3: op = EOpConstructBMat4x3; break;
+ case 4: op = EOpConstructBMat4x4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ }
+ } else {
+ switch(type.getVectorSize()) {
+ case 1: op = EOpConstructBool; break;
+ case 2: op = EOpConstructBVec2; break;
+ case 3: op = EOpConstructBVec3; break;
+ case 4: op = EOpConstructBVec4; break;
+ default: break; // some compilers want this
+ }
+ }
+ break;
default:
break;
}
@@ -1228,7 +1614,7 @@ TIntermAggregate* TIntermediate::makeAggregate(const TSourceLoc& loc)
//
// Returns the selection node created.
//
-TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermNodePair nodePair, const TSourceLoc& loc)
+TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermNodePair nodePair, const TSourceLoc& loc, TSelectionControl control)
{
//
// Don't prune the false path for compile-time constants; it's needed
@@ -1237,6 +1623,7 @@ TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermNodePair no
TIntermSelection* node = new TIntermSelection(cond, nodePair.node1, nodePair.node2);
node->setLoc(loc);
+ node->setSelectionControl(control);
return node;
}
@@ -1271,19 +1658,20 @@ TIntermTyped* TIntermediate::addMethod(TIntermTyped* object, const TType& type,
//
// For "?:" test nodes. There are three children; a condition,
// a true path, and a false path. The two paths are specified
-// as separate parameters.
+// as separate parameters. For vector 'cond', the true and false
+// are not paths, but vectors to mix.
//
// Specialization constant operations include
// - The ternary operator ( ? : )
//
// Returns the selection node created, or nullptr if one could not be.
//
-TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc& loc)
+TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc& loc, TSelectionControl control)
{
// If it's void, go to the if-then-else selection()
if (trueBlock->getBasicType() == EbtVoid && falseBlock->getBasicType() == EbtVoid) {
TIntermNodePair pair = { trueBlock, falseBlock };
- return addSelection(cond, pair, loc);
+ return addSelection(cond, pair, loc, control);
}
//
@@ -1300,14 +1688,39 @@ TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* true
return nullptr;
}
+ // Handle a vector condition as a mix
+ if (!cond->getType().isScalarOrVec1()) {
+ TType targetVectorType(trueBlock->getType().getBasicType(), EvqTemporary,
+ cond->getType().getVectorSize());
+ // smear true/false operands as needed
+ trueBlock = addUniShapeConversion(EOpMix, targetVectorType, trueBlock);
+ falseBlock = addUniShapeConversion(EOpMix, targetVectorType, falseBlock);
+
+ // After conversion, types have to match.
+ if (falseBlock->getType() != trueBlock->getType())
+ return nullptr;
+
+ // make the mix operation
+ TIntermAggregate* mix = makeAggregate(loc);
+ mix = growAggregate(mix, falseBlock);
+ mix = growAggregate(mix, trueBlock);
+ mix = growAggregate(mix, cond);
+ mix->setType(targetVectorType);
+ mix->setOp(EOpMix);
+
+ return mix;
+ }
+
+ // Now have a scalar condition...
+
+ // Convert true and false expressions to matching types
+ addBiShapeConversion(EOpMix, trueBlock, falseBlock);
+
// After conversion, types have to match.
if (falseBlock->getType() != trueBlock->getType())
return nullptr;
- //
- // See if all the operands are constant, then fold it otherwise not.
- //
-
+ // Eliminate the selection when the condition is a scalar and all operands are constant.
if (cond->getAsConstantUnion() && trueBlock->getAsConstantUnion() && falseBlock->getAsConstantUnion()) {
if (cond->getAsConstantUnion()->getConstArray()[0].getBConst())
return trueBlock;
@@ -1381,6 +1794,24 @@ TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned long long u64, co
return addConstantUnion(unionArray, TType(EbtUint64, EvqConst), loc, literal);
}
+#ifdef AMD_EXTENSIONS
+TIntermConstantUnion* TIntermediate::addConstantUnion(short i16, const TSourceLoc& loc, bool literal) const
+{
+ TConstUnionArray unionArray(1);
+ unionArray[0].setIConst(i16);
+
+ return addConstantUnion(unionArray, TType(EbtInt16, EvqConst), loc, literal);
+}
+
+TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned short u16, const TSourceLoc& loc, bool literal) const
+{
+ TConstUnionArray unionArray(1);
+ unionArray[0].setUConst(u16);
+
+ return addConstantUnion(unionArray, TType(EbtUint16, EvqConst), loc, literal);
+}
+#endif
+
TIntermConstantUnion* TIntermediate::addConstantUnion(bool b, const TSourceLoc& loc, bool literal) const
{
TConstUnionArray unionArray(1);
@@ -1478,10 +1909,11 @@ const TIntermTyped* TIntermediate::findLValueBase(const TIntermTyped* node, bool
//
// Create while and do-while loop nodes.
//
-TIntermLoop* TIntermediate::addLoop(TIntermNode* body, TIntermTyped* test, TIntermTyped* terminal, bool testFirst, const TSourceLoc& loc)
+TIntermLoop* TIntermediate::addLoop(TIntermNode* body, TIntermTyped* test, TIntermTyped* terminal, bool testFirst, const TSourceLoc& loc, TLoopControl control)
{
TIntermLoop* node = new TIntermLoop(body, test, terminal, testFirst);
node->setLoc(loc);
+ node->setLoopControl(control);
return node;
}
@@ -1489,13 +1921,19 @@ TIntermLoop* TIntermediate::addLoop(TIntermNode* body, TIntermTyped* test, TInte
//
// Create a for-loop sequence.
//
-TIntermAggregate* TIntermediate::addForLoop(TIntermNode* body, TIntermNode* initializer, TIntermTyped* test, TIntermTyped* terminal, bool testFirst, const TSourceLoc& loc)
+TIntermAggregate* TIntermediate::addForLoop(TIntermNode* body, TIntermNode* initializer, TIntermTyped* test, TIntermTyped* terminal, bool testFirst, const TSourceLoc& loc, TLoopControl control)
{
TIntermLoop* node = new TIntermLoop(body, test, terminal, testFirst);
node->setLoc(loc);
-
- // make a sequence of the initializer and statement
- TIntermAggregate* loopSequence = makeAggregate(initializer, loc);
+ node->setLoopControl(control);
+
+ // make a sequence of the initializer and statement, but try to reuse the
+ // aggregate already created for whatever is in the initializer, if there is one
+ TIntermAggregate* loopSequence = (initializer == nullptr ||
+ initializer->getAsAggregate() == nullptr) ? makeAggregate(initializer, loc)
+ : initializer->getAsAggregate();
+ if (loopSequence != nullptr && loopSequence->getOp() == EOpSequence)
+ loopSequence->setOp(EOpNull);
loopSequence = growAggregate(loopSequence, node);
loopSequence->setOperator(EOpSequence);
@@ -1535,6 +1973,14 @@ bool TIntermediate::postProcess(TIntermNode* root, EShLanguage /*language*/)
// Propagate 'noContraction' label in backward from 'precise' variables.
glslang::PropagateNoContraction(*this);
+ switch (textureSamplerTransformMode) {
+ case EShTexSampTransKeep:
+ break;
+ case EShTexSampTransUpgradeTextureRemoveSampler:
+ performTextureUpgradeAndSamplerRemovalTransformation(root);
+ break;
+ }
+
return true;
}
@@ -1725,6 +2171,30 @@ bool TIntermediate::isSpecializationOperation(const TIntermOperator& node) const
case EOpConvUintToInt64:
case EOpConvUint64ToInt:
case EOpConvIntToUint64:
+#ifdef AMD_EXTENSIONS
+ case EOpConvInt16ToBool:
+ case EOpConvBoolToInt16:
+ case EOpConvInt16ToInt:
+ case EOpConvIntToInt16:
+ case EOpConvInt16ToUint:
+ case EOpConvUintToInt16:
+ case EOpConvInt16ToInt64:
+ case EOpConvInt64ToInt16:
+ case EOpConvInt16ToUint64:
+ case EOpConvUint64ToInt16:
+ case EOpConvUint16ToBool:
+ case EOpConvBoolToUint16:
+ case EOpConvUint16ToInt:
+ case EOpConvIntToUint16:
+ case EOpConvUint16ToUint:
+ case EOpConvUintToUint16:
+ case EOpConvUint16ToInt64:
+ case EOpConvInt64ToUint16:
+ case EOpConvUint16ToUint64:
+ case EOpConvUint64ToUint16:
+ case EOpConvInt16ToUint16:
+ case EOpConvUint16ToInt16:
+#endif
// unary operations
case EOpNegative:
@@ -1853,6 +2323,10 @@ bool TIntermediate::promoteUnary(TIntermUnary& node)
case EOpBitwiseNot:
if (operand->getBasicType() != EbtInt &&
operand->getBasicType() != EbtUint &&
+#ifdef AMD_EXTENSIONS
+ operand->getBasicType() != EbtInt16 &&
+ operand->getBasicType() != EbtUint16 &&
+#endif
operand->getBasicType() != EbtInt64 &&
operand->getBasicType() != EbtUint64)
@@ -1867,6 +2341,10 @@ bool TIntermediate::promoteUnary(TIntermUnary& node)
operand->getBasicType() != EbtUint &&
operand->getBasicType() != EbtInt64 &&
operand->getBasicType() != EbtUint64 &&
+#ifdef AMD_EXTENSIONS
+ operand->getBasicType() != EbtInt16 &&
+ operand->getBasicType() != EbtUint16 &&
+#endif
operand->getBasicType() != EbtFloat &&
#ifdef AMD_EXTENSIONS
operand->getBasicType() != EbtFloat16 &&
@@ -1967,6 +2445,42 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
// We now have only scalars, vectors, and matrices to worry about.
//
+ // HLSL implicitly promotes bool -> int for numeric operations.
+ // (Implicit conversions to make the operands match each other's types were already done.)
+ if (getSource() == EShSourceHlsl &&
+ (left->getBasicType() == EbtBool || right->getBasicType() == EbtBool)) {
+ switch (op) {
+ case EOpLessThan:
+ case EOpGreaterThan:
+ case EOpLessThanEqual:
+ case EOpGreaterThanEqual:
+
+ case EOpRightShift:
+ case EOpLeftShift:
+
+ case EOpMod:
+
+ case EOpAnd:
+ case EOpInclusiveOr:
+ case EOpExclusiveOr:
+
+ case EOpAdd:
+ case EOpSub:
+ case EOpDiv:
+ case EOpMul:
+ left = addConversion(op, TType(EbtInt, EvqTemporary, left->getVectorSize()), left);
+ right = addConversion(op, TType(EbtInt, EvqTemporary, right->getVectorSize()), right);
+ if (left == nullptr || right == nullptr)
+ return false;
+ node.setLeft(left);
+ node.setRight(right);
+ break;
+
+ default:
+ break;
+ }
+ }
+
// Do general type checks against individual operands (comparing left and right is coming up, checking mixed shapes after that)
switch (op) {
case EOpLessThan:
@@ -2037,8 +2551,14 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
// Check for integer-only operands.
if ((left->getBasicType() != EbtInt && left->getBasicType() != EbtUint &&
- left->getBasicType() != EbtInt64 && left->getBasicType() != EbtUint64) ||
+#ifdef AMD_EXTENSIONS
+ left->getBasicType() != EbtInt16 && left->getBasicType() != EbtUint16 &&
+#endif
+ left->getBasicType() != EbtInt64 && left->getBasicType() != EbtUint64) ||
(right->getBasicType() != EbtInt && right->getBasicType() != EbtUint &&
+#ifdef AMD_EXTENSIONS
+ right->getBasicType() != EbtInt16 && right->getBasicType() != EbtUint16 &&
+#endif
right->getBasicType() != EbtInt64 && right->getBasicType() != EbtUint64))
return false;
if (left->isMatrix() || right->isMatrix())
@@ -2079,8 +2599,6 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
case EOpLogicalXor:
return left->getType() == right->getType();
- // no shifts: they can mix types (scalar int can shift a vector uint, etc.)
-
case EOpMod:
case EOpModAssign:
@@ -2094,6 +2612,7 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
case EOpAdd:
case EOpSub:
case EOpDiv:
+
case EOpAddAssign:
case EOpSubAssign:
case EOpDivAssign:
@@ -2118,7 +2637,7 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
return true;
// Finish handling the case, for all ops, where there are two vectors of different sizes
- if (left->isVector() && right->isVector() && left->getVectorSize() != right->getVectorSize())
+ if (left->isVector() && right->isVector() && left->getVectorSize() != right->getVectorSize() && right->getVectorSize() > 1)
return false;
//
@@ -2651,10 +3170,10 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
node->getLoc());
}
-void TIntermAggregate::addToPragmaTable(const TPragmaTable& pTable)
+void TIntermAggregate::setPragmaTable(const TPragmaTable& pTable)
{
- assert(!pragmaTable);
- pragmaTable = new TPragmaTable();
+ assert(pragmaTable == nullptr);
+ pragmaTable = new TPragmaTable;
*pragmaTable = pTable;
}
@@ -2667,4 +3186,56 @@ bool TIntermediate::specConstantPropagates(const TIntermTyped& node1, const TInt
(node2.getType().getQualifier().isSpecConstant() && node1.getType().getQualifier().isConstant());
}
+struct TextureUpgradeAndSamplerRemovalTransform : public TIntermTraverser {
+ void visitSymbol(TIntermSymbol* symbol) override {
+ if (symbol->getBasicType() == EbtSampler && symbol->getType().getSampler().isTexture()) {
+ symbol->getWritableType().getSampler().combined = true;
+ }
+ }
+ bool visitAggregate(TVisit, TIntermAggregate* ag) override {
+ using namespace std;
+ TIntermSequence& seq = ag->getSequence();
+ // remove pure sampler variables
+ TIntermSequence::iterator newEnd = remove_if(seq.begin(), seq.end(), [](TIntermNode* node) {
+ TIntermSymbol* symbol = node->getAsSymbolNode();
+ if (!symbol)
+ return false;
+
+ return (symbol->getBasicType() == EbtSampler && symbol->getType().getSampler().isPureSampler());
+ });
+ seq.erase(newEnd, seq.end());
+ // replace constructors with sampler/textures
+ for_each(seq.begin(), seq.end(), [](TIntermNode*& node) {
+ TIntermAggregate *constructor = node->getAsAggregate();
+ if (constructor && constructor->getOp() == EOpConstructTextureSampler) {
+ if (!constructor->getSequence().empty())
+ node = constructor->getSequence()[0];
+ }
+ });
+ return true;
+ }
+};
+
+void TIntermediate::performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root)
+{
+ TextureUpgradeAndSamplerRemovalTransform transform;
+ root->traverse(&transform);
+}
+
+const char* TIntermediate::getResourceName(TResourceType res)
+{
+ switch (res) {
+ case EResSampler: return "shift-sampler-binding";
+ case EResTexture: return "shift-texture-binding";
+ case EResImage: return "shift-image-binding";
+ case EResUbo: return "shift-UBO-binding";
+ case EResSsbo: return "shift-ssbo-binding";
+ case EResUav: return "shift-uav-binding";
+ default:
+ assert(0); // internal error: should only be called with valid resource types.
+ return nullptr;
+ }
+}
+
+
} // end namespace glslang
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/LiveTraverser.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/LiveTraverser.h
index 029c24a822b..7333bc964e4 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/LiveTraverser.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/LiveTraverser.h
@@ -33,6 +33,8 @@
// POSSIBILITY OF SUCH DAMAGE.
//
+#pragma once
+
#include "../Include/Common.h"
#include "reflection.h"
#include "localintermediate.h"
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp
index d2b6b260f2a..bbc3cac085f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp
@@ -234,6 +234,31 @@ void TParseContextBase::trackLinkage(TSymbol& symbol)
linkageSymbols.push_back(&symbol);
}
+// Ensure index is in bounds, correct if necessary.
+// Give an error if not.
+void TParseContextBase::checkIndex(const TSourceLoc& loc, const TType& type, int& index)
+{
+ if (index < 0) {
+ error(loc, "", "[", "index out of range '%d'", index);
+ index = 0;
+ } else if (type.isArray()) {
+ if (type.isExplicitlySizedArray() && index >= type.getOuterArraySize()) {
+ error(loc, "", "[", "array index out of range '%d'", index);
+ index = type.getOuterArraySize() - 1;
+ }
+ } else if (type.isVector()) {
+ if (index >= type.getVectorSize()) {
+ error(loc, "", "[", "vector index out of range '%d'", index);
+ index = type.getVectorSize() - 1;
+ }
+ } else if (type.isMatrix()) {
+ if (index >= type.getMatrixCols()) {
+ error(loc, "", "[", "matrix index out of range '%d'", index);
+ index = type.getMatrixCols() - 1;
+ }
+ }
+}
+
// Make a shared symbol have a non-shared version that can be edited by the current
// compile, such that editing its type will not change the shared version and will
// effect all nodes already sharing it (non-shallow type),
@@ -531,7 +556,7 @@ void TParseContextBase::parseSwizzleSelector(const TSourceLoc& loc, const TStrin
// Make the passed-in variable information become a member of the
// global uniform block. If this doesn't exist yet, make it.
//
-void TParseContextBase::growGlobalUniformBlock(TSourceLoc& loc, TType& memberType, TString& memberName, TTypeList* typeList)
+void TParseContextBase::growGlobalUniformBlock(const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList)
{
// Make the global block, if not yet made.
if (globalUniformBlock == nullptr) {
@@ -544,6 +569,10 @@ void TParseContextBase::growGlobalUniformBlock(TSourceLoc& loc, TType& memberTyp
firstNewMember = 0;
}
+ // Update with binding and set
+ globalUniformBlock->getWritableType().getQualifier().layoutBinding = globalUniformBinding;
+ globalUniformBlock->getWritableType().getQualifier().layoutSet = globalUniformSet;
+
// Add the requested member as a member to the global block.
TType* type = new TType;
type->shallowCopy(memberType);
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp
index 78f459a9240..733b74dab1b 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp
@@ -49,10 +49,12 @@ namespace glslang {
TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins,
int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language,
- TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) :
- TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, forwardCompatible, messages),
- contextPragma(true, false), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), statementNestingLevel(0),
- inMain(false), postMainReturn(false), currentFunctionType(nullptr), blockName(nullptr),
+ TInfoSink& infoSink, bool forwardCompatible, EShMessages messages,
+ const TString* entryPoint) :
+ TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language,
+ infoSink, forwardCompatible, messages, entryPoint),
+ inMain(false),
+ blockName(nullptr),
limits(resources.limits),
atomicUintOffsets(nullptr), anyIndexLimits(false)
{
@@ -87,6 +89,9 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b
if (language == EShLangGeometry)
globalOutputDefaults.layoutStream = 0;
+
+ if (entryPoint != nullptr && entryPoint->size() > 0 && *entryPoint != "main")
+ infoSink.info.message(EPrefixError, "Source entry point must be \"main\"");
}
TParseContext::~TParseContext()
@@ -121,11 +126,6 @@ void TParseContext::setPrecisionDefaults()
sampler.set(EbtFloat, Esd2D);
sampler.external = true;
defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow;
- } else {
- // Non-ES profile
- // All default to highp.
- for (int type = 0; type < maxSamplerIndex; ++type)
- defaultSamplerPrecision[type] = EpqHigh;
}
// If we are parsing built-in computational variables/functions, it is meaningful to record
@@ -141,6 +141,13 @@ void TParseContext::setPrecisionDefaults()
defaultPrecision[EbtUint] = EpqHigh;
defaultPrecision[EbtFloat] = EpqHigh;
}
+
+ if (profile != EEsProfile) {
+ // Non-ES profile
+ // All sampler precisions default to highp.
+ for (int type = 0; type < maxSamplerIndex; ++type)
+ defaultSamplerPrecision[type] = EpqHigh;
+ }
}
defaultPrecision[EbtSampler] = EpqLow;
@@ -255,6 +262,10 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector<TString>&
error(loc, "\")\" expected to end 'debug' pragma", "#pragma", "");
return;
}
+ } else if (spvVersion.spv > 0 && tokens[0].compare("use_storage_buffer") == 0) {
+ if (tokens.size() != 1)
+ error(loc, "extra tokens", "#pragma", "");
+ intermediate.setUseStorageBuffer();
}
}
@@ -342,10 +353,8 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
TIntermTyped* result = nullptr;
int indexValue = 0;
- if (index->getQualifier().isFrontEndConstant()) {
+ if (index->getQualifier().isFrontEndConstant())
indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst();
- checkIndex(loc, base->getType(), indexValue);
- }
variableCheck(base);
if (! base->isArray() && ! base->isMatrix() && ! base->isVector()) {
@@ -353,10 +362,12 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
error(loc, " left of '[' is not of type array, matrix, or vector ", base->getAsSymbolNode()->getName().c_str(), "");
else
error(loc, " left of '[' is not of type array, matrix, or vector ", "expression", "");
- } else if (base->getType().getQualifier().isFrontEndConstant() && index->getQualifier().isFrontEndConstant())
+ } else if (base->getType().getQualifier().isFrontEndConstant() && index->getQualifier().isFrontEndConstant()) {
+ // both base and index are front-end constants
+ checkIndex(loc, base->getType(), indexValue);
return intermediate.foldDereference(base, indexValue, loc);
- else {
- // at least one of base and index is variable...
+ } else {
+ // at least one of base and index is not a front-end constant variable...
if (base->getAsSymbolNode() && isIoResizeArray(base->getType()))
handleIoResizeArrayAccess(loc, base);
@@ -364,6 +375,8 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
if (index->getQualifier().isFrontEndConstant()) {
if (base->getType().isImplicitlySizedArray())
updateImplicitArraySize(loc, base, indexValue);
+ else
+ checkIndex(loc, base->getType(), indexValue);
result = intermediate.addIndex(EOpIndexDirect, base, index, loc);
} else {
if (base->getType().isImplicitlySizedArray()) {
@@ -376,7 +389,8 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
if (base->getQualifier().storage == EvqBuffer)
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array");
else if (base->getQualifier().storage == EvqUniform)
- profileRequires(base->getLoc(), EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, "variable indexing uniform block array");
+ profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5,
+ "variable indexing uniform block array");
else {
// input/output blocks either don't exist or can be variable indexed
}
@@ -385,7 +399,7 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
else if (base->getBasicType() == EbtSampler && version >= 130) {
const char* explanation = "variable indexing sampler array";
requireProfile(base->getLoc(), EEsProfile | ECoreProfile | ECompatibilityProfile, explanation);
- profileRequires(base->getLoc(), EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, explanation);
+ profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, explanation);
profileRequires(base->getLoc(), ECoreProfile | ECompatibilityProfile, 400, nullptr, explanation);
}
@@ -417,29 +431,6 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
return result;
}
-void TParseContext::checkIndex(const TSourceLoc& loc, const TType& type, int& index)
-{
- if (index < 0) {
- error(loc, "", "[", "index out of range '%d'", index);
- index = 0;
- } else if (type.isArray()) {
- if (type.isExplicitlySizedArray() && index >= type.getOuterArraySize()) {
- error(loc, "", "[", "array index out of range '%d'", index);
- index = type.getOuterArraySize() - 1;
- }
- } else if (type.isVector()) {
- if (index >= type.getVectorSize()) {
- error(loc, "", "[", "vector index out of range '%d'", index);
- index = type.getVectorSize() - 1;
- }
- } else if (type.isMatrix()) {
- if (index >= type.getMatrixCols()) {
- error(loc, "", "[", "matrix index out of range '%d'", index);
- index = type.getMatrixCols() - 1;
- }
- }
-}
-
// for ES 2.0 (version 100) limitations for almost all index operations except vertex-shader uniforms
void TParseContext::handleIndexLimits(const TSourceLoc& /*loc*/, TIntermTyped* base, TIntermTyped* index)
{
@@ -674,7 +665,8 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm
// leaving swizzles and struct/block dereferences.
TIntermTyped* result = base;
- if (base->isVector() || base->isScalar()) {
+ if ((base->isVector() || base->isScalar()) &&
+ (base->isFloatingDomain() || base->isIntegerDomain() || base->getBasicType() == EbtBool)) {
if (base->isScalar()) {
const char* dotFeature = "scalar swizzle";
requireProfile(loc, ~EEsProfile, dotFeature);
@@ -906,7 +898,7 @@ TIntermAggregate* TParseContext::handleFunctionDefinition(const TSourceLoc& loc,
loopNestingLevel = 0;
statementNestingLevel = 0;
controlFlowNestingLevel = 0;
- postMainReturn = false;
+ postEntryPointReturn = false;
return paramNodes;
}
@@ -1136,7 +1128,13 @@ void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction
operationPrecision = std::max(operationPrecision, function[arg].type->getQualifier().precision);
}
// compute the result precision
+#ifdef AMD_EXTENSIONS
+ if (agg->isSampling() ||
+ agg->getOp() == EOpImageLoad || agg->getOp() == EOpImageStore ||
+ agg->getOp() == EOpImageLoadLod || agg->getOp() == EOpImageStoreLod)
+#else
if (agg->isSampling() || agg->getOp() == EOpImageLoad || agg->getOp() == EOpImageStore)
+#endif
resultPrecision = sequence[0]->getAsTyped()->getQualifier().precision;
else if (function.getType().getBasicType() != EbtBool)
resultPrecision = function.getType().getQualifier().precision == EpqNone ?
@@ -1187,7 +1185,7 @@ void TParseContext::checkLocation(const TSourceLoc& loc, TOperator op)
error(loc, "tessellation control barrier() cannot be placed within flow control", "", "");
if (! inMain)
error(loc, "tessellation control barrier() must be in main()", "", "");
- else if (postMainReturn)
+ else if (postEntryPointReturn)
error(loc, "tessellation control barrier() cannot be placed after a return from main()", "", "");
}
break;
@@ -1379,7 +1377,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
unaryArg = callNode.getAsUnaryNode()->getOperand();
arg0 = unaryArg;
}
- const TIntermSequence& aggArgs = *argp; // only valid when unaryArg is nullptr
switch (callNode.getOp()) {
case EOpTextureGather:
@@ -1410,8 +1407,9 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
profileRequires(loc, ~EEsProfile, 400, E_GL_ARB_texture_gather, feature);
else
profileRequires(loc, ~EEsProfile, 400, E_GL_ARB_gpu_shader5, feature);
- if (! aggArgs[fnCandidate[0].type->getSampler().shadow ? 3 : 2]->getAsConstantUnion())
- profileRequires(loc, EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, "non-constant offset argument");
+ if (! (*argp)[fnCandidate[0].type->getSampler().shadow ? 3 : 2]->getAsConstantUnion())
+ profileRequires(loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5,
+ "non-constant offset argument");
if (! fnCandidate[0].type->getSampler().shadow)
compArg = 3;
break;
@@ -1420,7 +1418,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
if (! fnCandidate[0].type->getSampler().shadow)
compArg = 3;
// check for constant offsets
- if (! aggArgs[fnCandidate[0].type->getSampler().shadow ? 3 : 2]->getAsConstantUnion())
+ if (! (*argp)[fnCandidate[0].type->getSampler().shadow ? 3 : 2]->getAsConstantUnion())
error(loc, "must be a compile-time constant:", feature, "offsets argument");
break;
default:
@@ -1428,16 +1426,63 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
}
if (compArg > 0 && compArg < fnCandidate.getParamCount()) {
- if (aggArgs[compArg]->getAsConstantUnion()) {
- int value = aggArgs[compArg]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ if ((*argp)[compArg]->getAsConstantUnion()) {
+ int value = (*argp)[compArg]->getAsConstantUnion()->getConstArray()[0].getIConst();
if (value < 0 || value > 3)
error(loc, "must be 0, 1, 2, or 3:", feature, "component argument");
} else
error(loc, "must be a compile-time constant:", feature, "component argument");
}
+#ifdef AMD_EXTENSIONS
+ bool bias = false;
+ if (callNode.getOp() == EOpTextureGather)
+ bias = fnCandidate.getParamCount() > 3;
+ else if (callNode.getOp() == EOpTextureGatherOffset ||
+ callNode.getOp() == EOpTextureGatherOffsets)
+ bias = fnCandidate.getParamCount() > 4;
+
+ if (bias) {
+ TString biasFeatureString = fnCandidate.getName() + "with bias argument";
+ const char* feature = biasFeatureString.c_str();
+ profileRequires(loc, ~EEsProfile, 450, nullptr, feature);
+ requireExtensions(loc, 1, &E_GL_AMD_texture_gather_bias_lod, feature);
+ }
+#endif
+
+ break;
+ }
+
+#ifdef AMD_EXTENSIONS
+ case EOpSparseTextureGather:
+ case EOpSparseTextureGatherOffset:
+ case EOpSparseTextureGatherOffsets:
+ {
+ bool bias = false;
+ if (callNode.getOp() == EOpSparseTextureGather)
+ bias = fnCandidate.getParamCount() > 4;
+ else if (callNode.getOp() == EOpSparseTextureGatherOffset ||
+ callNode.getOp() == EOpSparseTextureGatherOffsets)
+ bias = fnCandidate.getParamCount() > 5;
+
+ if (bias) {
+ TString featureString = fnCandidate.getName() + "with bias argument";
+ const char* feature = featureString.c_str();
+ profileRequires(loc, ~EEsProfile, 450, nullptr, feature);
+ requireExtensions(loc, 1, &E_GL_AMD_texture_gather_bias_lod, feature);
+ }
+
+ break;
+ }
+
+ case EOpSparseTextureGatherLod:
+ case EOpSparseTextureGatherLodOffset:
+ case EOpSparseTextureGatherLodOffsets:
+ {
+ requireExtensions(loc, 1, &E_GL_ARB_sparse_texture2, fnCandidate.getName().c_str());
break;
}
+#endif
case EOpTextureOffset:
case EOpTextureFetchOffset:
@@ -1464,12 +1509,12 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
}
if (arg > 0) {
- if (! aggArgs[arg]->getAsConstantUnion())
+ if (! (*argp)[arg]->getAsConstantUnion())
error(loc, "argument must be compile-time constant", "texel offset", "");
else {
- const TType& type = aggArgs[arg]->getAsTyped()->getType();
+ const TType& type = (*argp)[arg]->getAsTyped()->getType();
for (int c = 0; c < type.getVectorSize(); ++c) {
- int offset = aggArgs[arg]->getAsConstantUnion()->getConstArray()[c].getIConst();
+ int offset = (*argp)[arg]->getAsConstantUnion()->getConstArray()[c].getIConst();
if (offset > resources.maxProgramTexelOffset || offset < resources.minProgramTexelOffset)
error(loc, "value is out of range:", "texel offset", "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]");
}
@@ -1509,6 +1554,23 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
break;
}
+#ifdef NV_EXTENSIONS
+ case EOpAtomicAdd:
+ case EOpAtomicMin:
+ case EOpAtomicMax:
+ case EOpAtomicAnd:
+ case EOpAtomicOr:
+ case EOpAtomicXor:
+ case EOpAtomicExchange:
+ case EOpAtomicCompSwap:
+ {
+ if (arg0->getType().getBasicType() == EbtInt64 || arg0->getType().getBasicType() == EbtUint64)
+ requireExtensions(loc, 1, &E_GL_NV_shader_atomic_int64, fnCandidate.getName().c_str());
+
+ break;
+ }
+#endif
+
case EOpInterpolateAtCentroid:
case EOpInterpolateAtSample:
case EOpInterpolateAtOffset:
@@ -1578,7 +1640,8 @@ void TParseContext::nonOpBuiltInCheck(const TSourceLoc& loc, const TFunction& fn
profileRequires(loc, ~EEsProfile, 400, E_GL_ARB_gpu_shader5, feature);
int offsetArg = fnCandidate[0].type->getSampler().shadow ? 3 : 2;
if (! callNode.getSequence()[offsetArg]->getAsConstantUnion())
- profileRequires(loc, EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, "non-constant offset argument");
+ profileRequires(loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5,
+ "non-constant offset argument");
if (! fnCandidate[0].type->getSampler().shadow)
compArg = 3;
} else if (fnCandidate.getName().compare("textureGatherOffsets") == 0) {
@@ -2096,6 +2159,17 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
case EOpConstructDMat4x2:
case EOpConstructDMat4x3:
case EOpConstructDMat4x4:
+#ifdef AMD_EXTENSIONS
+ case EOpConstructF16Mat2x2:
+ case EOpConstructF16Mat2x3:
+ case EOpConstructF16Mat2x4:
+ case EOpConstructF16Mat3x2:
+ case EOpConstructF16Mat3x3:
+ case EOpConstructF16Mat3x4:
+ case EOpConstructF16Mat4x2:
+ case EOpConstructF16Mat4x3:
+ case EOpConstructF16Mat4x4:
+#endif
constructingMatrix = true;
break;
default:
@@ -2156,6 +2230,10 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
case EOpConstructUint:
case EOpConstructInt64:
case EOpConstructUint64:
+#ifdef AMD_EXTENSIONS
+ case EOpConstructInt16:
+ case EOpConstructUint16:
+#endif
case EOpConstructBool:
case EOpConstructBVec2:
case EOpConstructBVec3:
@@ -2172,6 +2250,14 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
case EOpConstructU64Vec2:
case EOpConstructU64Vec3:
case EOpConstructU64Vec4:
+#ifdef AMD_EXTENSIONS
+ case EOpConstructI16Vec2:
+ case EOpConstructI16Vec3:
+ case EOpConstructI16Vec4:
+ case EOpConstructU16Vec2:
+ case EOpConstructU16Vec3:
+ case EOpConstructU16Vec4:
+#endif
// This was the list of valid ones, if they aren't converting from float
// and aren't making an array.
makeSpecConst = ! floatArgument && ! type.isArray();
@@ -2372,6 +2458,16 @@ void TParseContext::boolCheck(const TSourceLoc& loc, const TPublicType& pType)
void TParseContext::samplerCheck(const TSourceLoc& loc, const TType& type, const TString& identifier, TIntermTyped* /*initializer*/)
{
+ // Check that the appropriate extension is enabled if external sampler is used.
+ // There are two extensions. The correct one must be used based on GLSL version.
+ if (type.getBasicType() == EbtSampler && type.getSampler().external) {
+ if (version < 300) {
+ requireExtensions(loc, 1, &E_GL_OES_EGL_image_external, "samplerExternalOES");
+ } else {
+ requireExtensions(loc, 1, &E_GL_OES_EGL_image_external_essl3, "samplerExternalOES");
+ }
+ }
+
if (type.getQualifier().storage == EvqUniform)
return;
@@ -2396,16 +2492,22 @@ void TParseContext::atomicUintCheck(const TSourceLoc& loc, const TType& type, co
error(loc, "atomic_uints can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str());
}
-void TParseContext::transparentCheck(const TSourceLoc& loc, const TType& type, const TString& /*identifier*/)
+void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& type, const TString& identifier)
{
if (parsingBuiltins)
return;
- // Vulkan doesn't allow transparent uniforms outside of blocks
- if (spvVersion.vulkan == 0 || type.getQualifier().storage != EvqUniform)
+ if (type.getQualifier().storage != EvqUniform)
return;
- if (type.containsNonOpaque())
- vulkanRemoved(loc, "non-opaque uniforms outside a block");
+
+ if (type.containsNonOpaque()) {
+ // Vulkan doesn't allow transparent uniforms outside of blocks
+ if (spvVersion.vulkan > 0)
+ vulkanRemoved(loc, "non-opaque uniforms outside a block");
+ // OpenGL wants locations on these (unless they are getting automapped)
+ if (spvVersion.openGl > 0 && !type.getQualifier().hasLocation() && !intermediate.getAutoMapLocations())
+ error(loc, "non-opaque uniform variables need a layout(location=L)", identifier.c_str(), "");
+ }
}
//
@@ -2464,6 +2566,9 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali
}
if (publicType.basicType == EbtInt || publicType.basicType == EbtUint ||
+#ifdef AMD_EXTENSIONS
+ publicType.basicType == EbtInt16 || publicType.basicType == EbtUint16 ||
+#endif
publicType.basicType == EbtInt64 || publicType.basicType == EbtUint64 ||
publicType.basicType == EbtDouble)
profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output");
@@ -2474,6 +2579,9 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali
if (!qualifier.flat) {
#endif
if (publicType.basicType == EbtInt || publicType.basicType == EbtUint ||
+#ifdef AMD_EXTENSIONS
+ publicType.basicType == EbtInt16 || publicType.basicType == EbtUint16 ||
+#endif
publicType.basicType == EbtInt64 || publicType.basicType == EbtUint64 ||
publicType.basicType == EbtDouble ||
(publicType.userDef && (publicType.userDef->containsBasicType(EbtInt) ||
@@ -2894,7 +3002,7 @@ void TParseContext::structArrayCheck(const TSourceLoc& /*loc*/, const TType& typ
}
}
-void TParseContext::arrayUnsizedCheck(const TSourceLoc& loc, const TQualifier& qualifier, const TArraySizes* arraySizes, bool initializer, bool lastMember)
+void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qualifier, TArraySizes* arraySizes, bool initializer, bool lastMember)
{
assert(arraySizes);
@@ -2906,9 +3014,14 @@ void TParseContext::arrayUnsizedCheck(const TSourceLoc& loc, const TQualifier& q
if (initializer)
return;
- // No environment lets any non-outer-dimension that's to be implicitly sized
- if (arraySizes->isInnerImplicit())
+ // No environment allows any non-outer-dimension to be implicitly sized
+ if (arraySizes->isInnerImplicit()) {
error(loc, "only outermost dimension of an array of arrays can be implicitly sized", "[]", "");
+ arraySizes->clearInnerImplicit();
+ }
+
+ if (arraySizes->isInnerSpecialization())
+ error(loc, "only outermost dimension of an array of arrays can be a specialization constant", "[]", "");
// desktop always allows outer-dimension-unsized variable arrays,
if (profile != EEsProfile)
@@ -2925,19 +3038,22 @@ void TParseContext::arrayUnsizedCheck(const TSourceLoc& loc, const TQualifier& q
switch (language) {
case EShLangGeometry:
if (qualifier.storage == EvqVaryingIn)
- if (extensionsTurnedOn(Num_AEP_geometry_shader, AEP_geometry_shader))
+ if ((profile == EEsProfile && version >= 320) ||
+ extensionsTurnedOn(Num_AEP_geometry_shader, AEP_geometry_shader))
return;
break;
case EShLangTessControl:
if ( qualifier.storage == EvqVaryingIn ||
(qualifier.storage == EvqVaryingOut && ! qualifier.patch))
- if (extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader))
+ if ((profile == EEsProfile && version >= 320) ||
+ extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader))
return;
break;
case EShLangTessEvaluation:
if ((qualifier.storage == EvqVaryingIn && ! qualifier.patch) ||
qualifier.storage == EvqVaryingOut)
- if (extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader))
+ if ((profile == EEsProfile && version >= 320) ||
+ extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader))
return;
break;
default:
@@ -2990,7 +3106,7 @@ void TParseContext::arrayDimMerge(TType& type, const TArraySizes* sizes)
// Do all the semantic checking for declaring or redeclaring an array, with and
// without a size, and make the right changes to the symbol table.
//
-void TParseContext::declareArray(const TSourceLoc& loc, TString& identifier, const TType& type, TSymbol*& symbol)
+void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifier, const TType& type, TSymbol*& symbol)
{
if (symbol == nullptr) {
bool currentScope;
@@ -3176,7 +3292,8 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS
return nullptr;
bool nonEsRedecls = (profile != EEsProfile && (version >= 130 || identifier == "gl_TexCoord"));
- bool esRedecls = (profile == EEsProfile && extensionsTurnedOn(Num_AEP_shader_io_blocks, AEP_shader_io_blocks));
+ bool esRedecls = (profile == EEsProfile &&
+ (version >= 320 || extensionsTurnedOn(Num_AEP_shader_io_blocks, AEP_shader_io_blocks)));
if (! esRedecls && ! nonEsRedecls)
return nullptr;
@@ -3315,7 +3432,7 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS
void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newTypeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes)
{
const char* feature = "built-in block redeclaration";
- profileRequires(loc, EEsProfile, 0, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature);
+ profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature);
profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature);
if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment") {
@@ -3424,14 +3541,6 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT
oldType.getQualifier().flat = newType.getQualifier().flat;
oldType.getQualifier().nopersp = newType.getQualifier().nopersp;
-#ifdef NV_EXTENSIONS
- if (member->type->getFieldName() == "gl_Layer") {
- if (!newType.getQualifier().layoutViewportRelative && newType.getQualifier().layoutSecondaryViewportRelativeOffset == -2048)
- error(loc, "redeclaration only allowed for viewport_relative or secondary_view_offset layout", "redeclaration", member->type->getFieldName().c_str());
- oldType.getQualifier().layoutViewportRelative = newType.getQualifier().layoutViewportRelative;
- oldType.getQualifier().layoutSecondaryViewportRelativeOffset = newType.getQualifier().layoutSecondaryViewportRelativeOffset;
- }
-#endif
if (oldType.isImplicitlySizedArray() && newType.isExplicitlySizedArray())
oldType.changeOuterArraySize(newType.getOuterArraySize());
@@ -3929,6 +4038,14 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
publicType.shaderQualifiers.earlyFragmentTests = true;
return;
}
+ if (id == "post_depth_coverage") {
+ requireExtensions(loc, Num_post_depth_coverageEXTs, post_depth_coverageEXTs, "post depth coverage");
+ if (extensionTurnedOn(E_GL_ARB_post_depth_coverage)) {
+ publicType.shaderQualifiers.earlyFragmentTests = true;
+ }
+ publicType.shaderQualifiers.postDepthCoverage = true;
+ return;
+ }
for (TLayoutDepth depth = (TLayoutDepth)(EldNone + 1); depth < EldCount; depth = (TLayoutDepth)(depth+1)) {
if (id == TQualifier::getLayoutDepthString(depth)) {
requireProfile(loc, ECoreProfile | ECompatibilityProfile, "depth layout qualifier");
@@ -3941,7 +4058,8 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
bool found = false;
for (TBlendEquationShift be = (TBlendEquationShift)0; be < EBlendCount; be = (TBlendEquationShift)(be + 1)) {
if (id == TQualifier::getBlendEquationString(be)) {
- requireExtensions(loc, 1, &E_GL_KHR_blend_equation_advanced, "blend equation");
+ profileRequires(loc, EEsProfile, 320, E_GL_KHR_blend_equation_advanced, "blend equation");
+ profileRequires(loc, ~EEsProfile, 0, E_GL_KHR_blend_equation_advanced, "blend equation");
intermediate.addBlendEquation(be);
publicType.shaderQualifiers.blendEquation = true;
found = true;
@@ -4120,6 +4238,11 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
}
return;
}
+ if (id == "num_views") {
+ requireExtensions(loc, Num_OVR_multiview_EXTs, OVR_multiview_EXTs, "num_views");
+ publicType.shaderQualifiers.numViews = value;
+ return;
+ }
#if NV_EXTENSIONS
if (language == EShLangVertex ||
@@ -4196,6 +4319,10 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
if (id.compare(0, 11, "local_size_") == 0) {
profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize");
profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize");
+ if (id.size() == 12 && value == 0) {
+ error(loc, "must be at least 1", id.c_str(), "");
+ return;
+ }
if (id == "local_size_x") {
publicType.shaderQualifiers.localSize[0] = value;
return;
@@ -4246,7 +4373,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
// This is also true for overriding layout-qualifier-names, where one
// overrides the other (e.g., row_major vs. column_major); only the last
// occurrence has any effect."
-//
void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifier& src, bool inheritOnly)
{
if (src.hasMatrix())
@@ -4328,6 +4454,25 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb
}
}
+ // user-variable location check, which are required for SPIR-V in/out:
+ // - variables have it directly,
+ // - blocks have it on each member (already enforced), so check first one
+ if (spvVersion.spv > 0 && !parsingBuiltins && qualifier.builtIn == EbvNone &&
+ !qualifier.hasLocation() && !intermediate.getAutoMapLocations()) {
+
+ switch (qualifier.storage) {
+ case EvqVaryingIn:
+ case EvqVaryingOut:
+ if (type.getBasicType() != EbtBlock ||
+ (!(*type.getStruct())[0].type->getQualifier().hasLocation() &&
+ (*type.getStruct())[0].type->getQualifier().builtIn == EbvNone))
+ error(loc, "SPIR-V requires location for user input/output", "location", "");
+ break;
+ default:
+ break;
+ }
+ }
+
// Check packing and matrix
if (qualifier.hasUniformLayout()) {
switch (qualifier.storage) {
@@ -4355,6 +4500,22 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb
}
}
+// "For some blocks declared as arrays, the location can only be applied at the block level:
+// When a block is declared as an array where additional locations are needed for each member
+// for each block array element, it is a compile-time error to specify locations on the block
+// members. That is, when locations would be under specified by applying them on block members,
+// they are not allowed on block members. For arrayed interfaces (those generally having an
+// extra level of arrayness due to interface expansion), the outer array is stripped before
+// applying this rule."
+void TParseContext::layoutMemberLocationArrayCheck(const TSourceLoc& loc, bool memberWithLocation, TArraySizes* arraySizes)
+{
+ if (memberWithLocation && arraySizes != nullptr) {
+ if (arraySizes->getNumDims() > (currentBlockQualifier.isArrayedIo(language) ? 1 : 0))
+ error(loc, "cannot use in a block array where new locations are needed for each block element",
+ "location", "");
+ }
+}
+
// Do layout error checking with respect to a type.
void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
{
@@ -4455,7 +4616,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
} else
lastBinding += type.getCumulativeArraySize();
}
- if (lastBinding >= resources.maxCombinedTextureImageUnits)
+ if (spvVersion.vulkan == 0 && lastBinding >= resources.maxCombinedTextureImageUnits)
error(loc, "sampler binding not less than gl_MaxCombinedTextureImageUnits", "binding", type.isArray() ? "(using array)" : "");
}
if (type.getBasicType() == EbtAtomicUint) {
@@ -4500,7 +4661,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
}
}
} else if (type.isImage() && ! qualifier.writeonly) {
- const char *explanation = "image variables declared 'writeonly' without a format layout qualifier";
+ const char *explanation = "image variables not declared 'writeonly' and without a format layout qualifier";
requireProfile(loc, ECoreProfile | ECompatibilityProfile, explanation);
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation);
}
@@ -4529,6 +4690,10 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
case EbtUint:
case EbtInt64:
case EbtUint64:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ case EbtUint16:
+#endif
case EbtBool:
case EbtFloat:
case EbtDouble:
@@ -4650,8 +4815,24 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua
if (shaderQualifiers.geometry != ElgNone)
error(loc, message, TQualifier::getGeometryString(shaderQualifiers.geometry), "");
+ if (shaderQualifiers.spacing != EvsNone)
+ error(loc, message, TQualifier::getVertexSpacingString(shaderQualifiers.spacing), "");
+ if (shaderQualifiers.order != EvoNone)
+ error(loc, message, TQualifier::getVertexOrderString(shaderQualifiers.order), "");
+ if (shaderQualifiers.pointMode)
+ error(loc, message, "point_mode", "");
if (shaderQualifiers.invocations != TQualifier::layoutNotSet)
error(loc, message, "invocations", "");
+ if (shaderQualifiers.earlyFragmentTests)
+ error(loc, message, "early_fragment_tests", "");
+ if (shaderQualifiers.postDepthCoverage)
+ error(loc, message, "post_depth_coverage", "");
+ for (int i = 0; i < 3; ++i) {
+ if (shaderQualifiers.localSize[i] > 1)
+ error(loc, message, "local_size", "");
+ if (shaderQualifiers.localSizeSpecId[i] != TQualifier::layoutNotSet)
+ error(loc, message, "local_size id", "");
+ }
if (shaderQualifiers.vertices != TQualifier::layoutNotSet) {
if (language == EShLangGeometry)
error(loc, message, "max_vertices", "");
@@ -4660,15 +4841,10 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua
else
assert(0);
}
- for (int i = 0; i < 3; ++i) {
- if (shaderQualifiers.localSize[i] > 1)
- error(loc, message, "local_size", "");
- if (shaderQualifiers.localSizeSpecId[i] != TQualifier::layoutNotSet)
- error(loc, message, "local_size id", "");
- }
if (shaderQualifiers.blendEquation)
error(loc, message, "blend equation", "");
- // TBD: correctness: are any of these missing? pixelCenterInteger, originUpperLeft, spacing, order, pointmode, earlyfragment, depth
+ if (shaderQualifiers.numViews != TQualifier::layoutNotSet)
+ error(loc, message, "num_views", "");
}
// Correct and/or advance an object's offset layout qualifier.
@@ -4689,15 +4865,11 @@ void TParseContext::fixOffset(const TSourceLoc& loc, TSymbol& symbol)
// Check for overlap
int numOffsets = 4;
if (symbol.getType().isArray()) {
- if (symbol.getType().isExplicitlySizedArray())
+ if (symbol.getType().isExplicitlySizedArray() && ! symbol.getType().getArraySizes()->isInnerImplicit())
numOffsets *= symbol.getType().getCumulativeArraySize();
else {
- // TODO: functionality: implicitly-sized atomic_uint arrays.
- // We don't know the full size until later. This might
- // be a specification problem, will report to Khronos. For the
- // cases that is not true, the rest of the checking would need
- // to be done at link time instead of compile time.
- warn(loc, "implicitly sized atomic_uint array treated as having one element for tracking the default offset", "atomic_uint", "");
+ // "It is a compile-time error to declare an unsized array of atomic_uint."
+ error(loc, "array must be explicitly sized", "atomic_uint", "");
}
}
int repeated = intermediate.addUsedOffsets(qualifier.layoutBinding, offset, numOffsets);
@@ -4960,7 +5132,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden
samplerCheck(loc, type, identifier, initializer);
atomicUintCheck(loc, type, identifier);
- transparentCheck(loc, type, identifier);
+ transparentOpaqueCheck(loc, type, identifier);
if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger))
error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", "");
@@ -4983,7 +5155,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden
arrayDimMerge(type, arraySizes);
// Check that implicit sizing is only where allowed.
- arrayUnsizedCheck(loc, type.getQualifier(), &type.getArraySizes(), initializer != nullptr, false);
+ arraySizesCheck(loc, type.getQualifier(), &type.getArraySizes(), initializer != nullptr, false);
if (! arrayQualifierError(loc, type.getQualifier()) && ! arrayError(loc, type))
declareArray(loc, identifier, type, symbol);
@@ -5016,6 +5188,8 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden
// look for errors in layout qualifier use
layoutObjectCheck(loc, *symbol);
+
+ // fix up
fixOffset(loc, *symbol);
return initNode;
@@ -5053,7 +5227,7 @@ TVariable* TParseContext::makeInternalVariable(const char* name, const TType& ty
//
// Return the successfully declared variable.
//
-TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, TString& identifier, TType& type)
+TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, const TString& identifier, const TType& type)
{
// make a new variable
TVariable* variable = new TVariable(&identifier, type);
@@ -5300,6 +5474,9 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const
// Test for the correctness of the parameters passed to various constructor functions
// and also convert them to the right data type, if allowed and required.
//
+// 'node' is what to construct from.
+// 'type' is what type to construct.
+//
// Returns nullptr for an error or the constructed node (aggregate or typed) for no error.
//
TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* node, const TType& type)
@@ -5329,7 +5506,7 @@ TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode*
bool singleArg;
if (aggrNode) {
- if (aggrNode->getOp() != EOpNull || aggrNode->getSequence().size() == 1)
+ if (aggrNode->getOp() != EOpNull)
singleArg = true;
else
singleArg = false;
@@ -5477,6 +5654,22 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
basicOp = EOpConstructUint64;
break;
+#ifdef AMD_EXTENSIONS
+ case EOpConstructI16Vec2:
+ case EOpConstructI16Vec3:
+ case EOpConstructI16Vec4:
+ case EOpConstructInt16:
+ basicOp = EOpConstructInt16;
+ break;
+
+ case EOpConstructU16Vec2:
+ case EOpConstructU16Vec3:
+ case EOpConstructU16Vec4:
+ case EOpConstructUint16:
+ basicOp = EOpConstructUint16;
+ break;
+#endif
+
case EOpConstructBVec2:
case EOpConstructBVec3:
case EOpConstructBVec4:
@@ -5533,7 +5726,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
blockStageIoCheck(loc, currentBlockQualifier);
blockQualifierCheck(loc, currentBlockQualifier, instanceName != nullptr);
if (arraySizes) {
- arrayUnsizedCheck(loc, currentBlockQualifier, arraySizes, false, false);
+ arraySizesCheck(loc, currentBlockQualifier, arraySizes, false, false);
arrayDimCheck(loc, arraySizes, 0);
if (arraySizes->getNumDims() > 1)
requireProfile(loc, ~EEsProfile, "array-of-array of block");
@@ -5551,7 +5744,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
if ((currentBlockQualifier.storage == EvqUniform || currentBlockQualifier.storage == EvqBuffer) && (memberQualifier.isInterpolation() || memberQualifier.isAuxiliary()))
error(memberLoc, "member of uniform or buffer block cannot have an auxiliary or interpolation qualifier", memberType.getFieldName().c_str(), "");
if (memberType.isArray())
- arrayUnsizedCheck(memberLoc, currentBlockQualifier, &memberType.getArraySizes(), false, member == typeList.size() - 1);
+ arraySizesCheck(memberLoc, currentBlockQualifier, &memberType.getArraySizes(), false, member == typeList.size() - 1);
if (memberQualifier.hasOffset()) {
if (spvVersion.spv == 0) {
requireProfile(memberLoc, ~EEsProfile, "offset on block member");
@@ -5633,7 +5826,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
case EvqVaryingOut:
requireProfile(memberLoc, ECoreProfile | ECompatibilityProfile | EEsProfile, feature);
profileRequires(memberLoc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, feature);
- profileRequires(memberLoc, EEsProfile, 0, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature);
+ profileRequires(memberLoc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature);
memberWithLocation = true;
break;
default:
@@ -5655,6 +5848,8 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
memberQualifier = newMemberQualification;
}
+ layoutMemberLocationArrayCheck(loc, memberWithLocation, arraySizes);
+
// Process the members
fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation);
fixBlockXfbOffsets(currentBlockQualifier, typeList);
@@ -5722,6 +5917,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
// Check for general layout qualifier errors
layoutObjectCheck(loc, variable);
+ // fix up
if (isIoResizeArray(blockType)) {
ioArraySymbolResizeList.push_back(&variable);
checkIoArraysConsistency(loc, true);
@@ -5754,14 +5950,14 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q
// "Compute shaders do not permit user-defined input variables..."
requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask|EShLangFragmentMask), "input block");
if (language == EShLangFragment)
- profileRequires(loc, EEsProfile, 0, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "fragment input block");
+ profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "fragment input block");
break;
case EvqVaryingOut:
profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "output block");
requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask), "output block");
// ES 310 can have a block before shader_io is turned on, so skip this test for built-ins
if (language == EShLangVertex && ! parsingBuiltins)
- profileRequires(loc, EEsProfile, 0, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "vertex output block");
+ profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "vertex output block");
break;
default:
error(loc, "only uniform, buffer, in, or out blocks are supported", blockName->c_str(), "");
@@ -5770,7 +5966,7 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q
}
// Do all block-declaration checking regarding its qualifiers.
-void TParseContext::blockQualifierCheck(const TSourceLoc& loc, const TQualifier& qualifier, bool instanceName)
+void TParseContext::blockQualifierCheck(const TSourceLoc& loc, const TQualifier& qualifier, bool /*instanceName*/)
{
// The 4.5 specification says:
//
@@ -5836,7 +6032,7 @@ void TParseContext::fixBlockLocations(const TSourceLoc& loc, TQualifier& qualifi
if (nextLocation >= (int)TQualifier::layoutLocationEnd)
error(memberLoc, "location is too large", "location", "");
memberQualifier.layoutLocation = nextLocation;
- memberQualifier.layoutComponent = 0;
+ memberQualifier.layoutComponent = TQualifier::layoutComponentEnd;
}
nextLocation = memberQualifier.layoutLocation + intermediate.computeTypeLocationSize(*typeList[member].type);
}
@@ -6127,6 +6323,12 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
else
error(loc, "can only apply to 'in'", "early_fragment_tests", "");
}
+ if (publicType.shaderQualifiers.postDepthCoverage) {
+ if (publicType.qualifier.storage == EvqVaryingIn)
+ intermediate.setPostDepthCoverage();
+ else
+ error(loc, "can only apply to 'in'", "post_coverage_coverage", "");
+ }
if (publicType.shaderQualifiers.blendEquation) {
if (publicType.qualifier.storage != EvqVaryingOut)
error(loc, "can only apply to 'out'", "blend equation", "");
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h
index 61db6fe64f4..0d929789345 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h
@@ -74,12 +74,23 @@ class TParseContextBase : public TParseVersions {
public:
TParseContextBase(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins, int version,
EProfile profile, const SpvVersion& spvVersion, EShLanguage language,
- TInfoSink& infoSink, bool forwardCompatible, EShMessages messages)
+ TInfoSink& infoSink, bool forwardCompatible, EShMessages messages,
+ const TString* entryPoint = nullptr)
: TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages),
+ scopeMangler("::"),
symbolTable(symbolTable),
+ statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0),
+ postEntryPointReturn(false),
+ contextPragma(true, false),
parsingBuiltins(parsingBuiltins), scanContext(nullptr), ppContext(nullptr),
- globalUniformBlock(nullptr)
- { }
+ limits(resources.limits),
+ globalUniformBlock(nullptr),
+ globalUniformBinding(TQualifier::layoutBindingEnd),
+ globalUniformSet(TQualifier::layoutSetEnd)
+ {
+ if (entryPoint != nullptr)
+ sourceEntryPointName = *entryPoint;
+ }
virtual ~TParseContextBase() { }
virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken,
@@ -93,6 +104,8 @@ public:
virtual void setLimits(const TBuiltInResource&) = 0;
+ void checkIndex(const TSourceLoc&, const TType&, int& index);
+
EShLanguage getLanguage() const { return language; }
void setScanContext(TScanContext* c) { scanContext = c; }
TScanContext* getScanContext() const { return scanContext; }
@@ -133,15 +146,39 @@ public:
extensionCallback(line, extension, behavior);
}
- TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile
-
// Manage the global uniform block (default uniforms in GLSL, $Global in HLSL)
- virtual void growGlobalUniformBlock(TSourceLoc&, TType&, TString& memberName, TTypeList* typeList = nullptr);
+ virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr);
+
+ // Potentially rename shader entry point function
+ void renameShaderFunction(TString*& name) const
+ {
+ // Replace the entry point name given in the shader with the real entry point name,
+ // if there is a substitution.
+ if (name != nullptr && *name == sourceEntryPointName && intermediate.getEntryPointName().size() > 0)
+ name = NewPoolTString(intermediate.getEntryPointName().c_str());
+ }
virtual bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*);
virtual void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*);
- const char* const scopeMangler = "::";
+ const char* const scopeMangler;
+
+ // Basic parsing state, easily accessible to the grammar
+
+ TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile
+ int statementNestingLevel; // 0 if outside all flow control or compound statements
+ int loopNestingLevel; // 0 if outside all loops
+ int structNestingLevel; // 0 if outside blocks and structures
+ int controlFlowNestingLevel; // 0 if outside all flow control
+ const TType* currentFunctionType; // the return type of the function that's currently being parsed
+ bool functionReturnsValue; // true if a non-void function has a return
+ // if inside a function, true if the function is the entry point and this is after a return statement
+ bool postEntryPointReturn;
+ // case, node, case, case, node, ...; ensure only one node between cases; stack of them for nesting
+ TList<TIntermSequence*> switchSequenceStack;
+ // the statementNestingLevel the current switch statement is at, which must match the level of its case statements
+ TList<int> switchLevel;
+ struct TPragma contextPragma;
protected:
TParseContextBase(TParseContextBase&);
@@ -151,6 +188,9 @@ protected:
TVector<TSymbol*> linkageSymbols; // these need to be transferred to 'linkage', after all editing is done
TScanContext* scanContext;
TPpContext* ppContext;
+ TBuiltInResource resources;
+ TLimits& limits;
+ TString sourceEntryPointName;
// These, if set, will be called when a line, pragma ... is preprocessed.
// They will be called with any parameters to the original directive.
@@ -170,11 +210,13 @@ protected:
TSwizzleSelectors<TVectorSelector>&);
// Manage the global uniform block (default uniforms in GLSL, $Global in HLSL)
- TVariable* globalUniformBlock; // the actual block, inserted into the symbol table
- int firstNewMember; // the index of the first member not yet inserted into the symbol table
+ TVariable* globalUniformBlock; // the actual block, inserted into the symbol table
+ unsigned int globalUniformBinding; // the block's binding number
+ unsigned int globalUniformSet; // the block's set number
+ int firstNewMember; // the index of the first member not yet inserted into the symbol table
// override this to set the language-specific name
virtual const char* getGlobalUniformBlockName() const { return ""; }
- virtual void setUniformBlockDefaults(TType& block) const { }
+ virtual void setUniformBlockDefaults(TType&) const { }
virtual void finalizeGlobalUniformBlockLayout(TVariable&) { }
virtual void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken,
const char* szExtraInfoFormat, TPrefixType prefix,
@@ -227,7 +269,8 @@ protected:
class TParseContext : public TParseContextBase {
public:
TParseContext(TSymbolTable&, TIntermediate&, bool parsingBuiltins, int version, EProfile, const SpvVersion& spvVersion, EShLanguage, TInfoSink&,
- bool forwardCompatible = false, EShMessages messages = EShMsgDefault);
+ bool forwardCompatible = false, EShMessages messages = EShMsgDefault,
+ const TString* entryPoint = nullptr);
virtual ~TParseContext();
bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); };
@@ -246,7 +289,6 @@ public:
void handlePragma(const TSourceLoc&, const TVector<TString>&) override;
TIntermTyped* handleVariable(const TSourceLoc&, TSymbol* symbol, const TString* string);
TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index);
- void checkIndex(const TSourceLoc&, const TType&, int& index);
void handleIndexLimits(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index);
void makeEditable(TSymbol*&) override;
@@ -296,7 +338,7 @@ public:
bool arrayError(const TSourceLoc&, const TType&);
void arraySizeRequiredCheck(const TSourceLoc&, const TArraySizes&);
void structArrayCheck(const TSourceLoc&, const TType& structure);
- void arrayUnsizedCheck(const TSourceLoc&, const TQualifier&, const TArraySizes*, bool initializer, bool lastMember);
+ void arraySizesCheck(const TSourceLoc&, const TQualifier&, TArraySizes*, bool initializer, bool lastMember);
void arrayOfArrayVersionCheck(const TSourceLoc&);
void arrayDimCheck(const TSourceLoc&, const TArraySizes* sizes1, const TArraySizes* sizes2);
void arrayDimCheck(const TSourceLoc&, const TType*, const TArraySizes*);
@@ -306,7 +348,7 @@ public:
void boolCheck(const TSourceLoc&, const TPublicType&);
void samplerCheck(const TSourceLoc&, const TType&, const TString& identifier, TIntermTyped* initializer);
void atomicUintCheck(const TSourceLoc&, const TType&, const TString& identifier);
- void transparentCheck(const TSourceLoc&, const TType&, const TString& identifier);
+ void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier);
void globalQualifierFixCheck(const TSourceLoc&, TQualifier&);
void globalQualifierTypeCheck(const TSourceLoc&, const TQualifier&, const TPublicType&);
bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType);
@@ -338,6 +380,7 @@ public:
void setLayoutQualifier(const TSourceLoc&, TPublicType&, TString&, const TIntermTyped*);
void mergeObjectLayoutQualifiers(TQualifier& dest, const TQualifier& src, bool inheritOnly);
void layoutObjectCheck(const TSourceLoc&, const TSymbol&);
+ void layoutMemberLocationArrayCheck(const TSourceLoc&, bool memberWithLocation, TArraySizes* arraySizes);
void layoutTypeCheck(const TSourceLoc&, const TType&);
void layoutQualifierCheck(const TSourceLoc&, const TQualifier&);
void checkNoShaderLayouts(const TSourceLoc&, const TShaderQualifiers&);
@@ -371,8 +414,8 @@ protected:
void nonInitConstCheck(const TSourceLoc&, TString& identifier, TType& type);
void inheritGlobalDefaults(TQualifier& dst) const;
TVariable* makeInternalVariable(const char* name, const TType&) const;
- TVariable* declareNonArray(const TSourceLoc&, TString& identifier, TType&);
- void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&);
+ TVariable* declareNonArray(const TSourceLoc&, const TString& identifier, const TType&);
+ void declareArray(const TSourceLoc&, const TString& identifier, const TType&, TSymbol*&);
TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable);
TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer);
void finish() override;
@@ -383,17 +426,7 @@ public:
//
// Current state of parsing
- struct TPragma contextPragma;
- int loopNestingLevel; // 0 if outside all loops
- int structNestingLevel; // 0 if outside blocks and structures
- int controlFlowNestingLevel; // 0 if outside all flow control
- int statementNestingLevel; // 0 if outside all flow control or compound statements
- TList<TIntermSequence*> switchSequenceStack; // case, node, case, case, node, ...; ensure only one node between cases; stack of them for nesting
- TList<int> switchLevel; // the statementNestingLevel the current switch statement is at, which must match the level of its case statements
bool inMain; // if inside a function, true if the function is main
- bool postMainReturn; // if inside a function, true if the function is main and this is after a return statement
- const TType* currentFunctionType; // the return type of the function that's currently being parsed
- bool functionReturnsValue; // true if a non-void function has a return
const TString* blockName;
TQualifier currentBlockQualifier;
TPrecisionQualifier defaultPrecision[EbtNumTypes];
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/PoolAlloc.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/PoolAlloc.cpp
index 4007c386153..84c40f4e795 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/PoolAlloc.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/PoolAlloc.cpp
@@ -40,35 +40,22 @@
namespace glslang {
+// Process-wide TLS index
OS_TLSIndex PoolIndex;
-void InitializeMemoryPools()
+// Return the thread-specific current pool.
+TPoolAllocator& GetThreadPoolAllocator()
{
- TThreadMemoryPools* pools = static_cast<TThreadMemoryPools*>(OS_GetTLSValue(PoolIndex));
- if (pools)
- return;
-
- TPoolAllocator *threadPoolAllocator = new TPoolAllocator();
-
- TThreadMemoryPools* threadData = new TThreadMemoryPools();
-
- threadData->threadPoolAllocator = threadPoolAllocator;
-
- OS_SetTLSValue(PoolIndex, threadData);
+ return *static_cast<TPoolAllocator*>(OS_GetTLSValue(PoolIndex));
}
-void FreeGlobalPools()
+// Set the thread-specific current pool.
+void SetThreadPoolAllocator(TPoolAllocator* poolAllocator)
{
- // Release the allocated memory for this thread.
- TThreadMemoryPools* globalPools = static_cast<TThreadMemoryPools*>(OS_GetTLSValue(PoolIndex));
- if (! globalPools)
- return;
-
- GetThreadPoolAllocator().popAll();
- delete &GetThreadPoolAllocator();
- delete globalPools;
+ OS_SetTLSValue(PoolIndex, poolAllocator);
}
+// Process-wide set up of the TLS pool storage.
bool InitializePoolIndex()
{
// Allocate a TLS index.
@@ -78,26 +65,6 @@ bool InitializePoolIndex()
return true;
}
-void FreePoolIndex()
-{
- // Release the TLS index.
- OS_FreeTLSIndex(PoolIndex);
-}
-
-TPoolAllocator& GetThreadPoolAllocator()
-{
- TThreadMemoryPools* threadData = static_cast<TThreadMemoryPools*>(OS_GetTLSValue(PoolIndex));
-
- return *threadData->threadPoolAllocator;
-}
-
-void SetThreadPoolAllocator(TPoolAllocator& poolAllocator)
-{
- TThreadMemoryPools* threadData = static_cast<TThreadMemoryPools*>(OS_GetTLSValue(PoolIndex));
-
- threadData->threadPoolAllocator = &poolAllocator;
-}
-
//
// Implement the functionality of the TPoolAllocator class, which
// is documented in PoolAlloc.h.
@@ -234,13 +201,16 @@ void TPoolAllocator::pop()
currentPageOffset = stack.back().offset;
while (inUseList != page) {
- // invoke destructor to free allocation list
- inUseList->~tHeader();
-
tHeader* nextInUse = inUseList->nextPage;
- if (inUseList->pageCount > 1)
+ size_t pageCount = inUseList->pageCount;
+
+ // This technically ends the lifetime of the header as C++ object,
+ // but we will still control the memory and reuse it.
+ inUseList->~tHeader(); // currently, just a debug allocation checker
+
+ if (pageCount > 1) {
delete [] reinterpret_cast<char*>(inUseList);
- else {
+ } else {
inUseList->nextPage = freeList;
freeList = inUseList;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/RemoveTree.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/RemoveTree.h
index 507307e44b3..1ed015626b8 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/RemoveTree.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/RemoveTree.h
@@ -32,6 +32,8 @@
// POSSIBILITY OF SUCH DAMAGE.
//
+#pragma once
+
namespace glslang {
void RemoveAllTreeNodes(TIntermNode*);
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp
index 8b3a30636f9..68d1500b4ad 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp
@@ -175,7 +175,7 @@ bool TInputScanner::scanVersion(int& version, EProfile& profile, bool& notFirstT
bool versionNotFirst = false; // means not first WRT comments and white space, nothing more
notFirstToken = false; // means not first WRT to real tokens
- version = 0; // means not found
+ version = 0; // means not found
profile = ENoProfile;
bool foundNonSpaceTab = false;
@@ -464,6 +464,15 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["u64vec4"] = U64VEC4;
#ifdef AMD_EXTENSIONS
+ (*KeywordMap)["int16_t"] = INT16_T;
+ (*KeywordMap)["uint16_t"] = UINT16_T;
+ (*KeywordMap)["i16vec2"] = I16VEC2;
+ (*KeywordMap)["i16vec3"] = I16VEC3;
+ (*KeywordMap)["i16vec4"] = I16VEC4;
+ (*KeywordMap)["u16vec2"] = U16VEC2;
+ (*KeywordMap)["u16vec3"] = U16VEC3;
+ (*KeywordMap)["u16vec4"] = U16VEC4;
+
(*KeywordMap)["float16_t"] = FLOAT16_T;
(*KeywordMap)["f16vec2"] = F16VEC2;
(*KeywordMap)["f16vec3"] = F16VEC3;
@@ -709,6 +718,10 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT;
case PpAtomConstInt64: parserToken->sType.lex.i64 = ppToken.i64val; return INT64CONSTANT;
case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT;
+#ifdef AMD_EXTENSIONS
+ case PpAtomConstInt16: parserToken->sType.lex.i = ppToken.ival; return INT16CONSTANT;
+ case PpAtomConstUint16: parserToken->sType.lex.i = ppToken.ival; return UINT16CONSTANT;
+#endif
case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT;
case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT;
#ifdef AMD_EXTENSIONS
@@ -851,14 +864,17 @@ int TScanContext::tokenizeIdentifier()
case PATCH:
if (parseContext.symbolTable.atBuiltInLevel() ||
- (parseContext.profile == EEsProfile && parseContext.extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) ||
+ (parseContext.profile == EEsProfile &&
+ (parseContext.version >= 320 ||
+ parseContext.extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader))) ||
(parseContext.profile != EEsProfile && parseContext.extensionTurnedOn(E_GL_ARB_tessellation_shader)))
return keyword;
return es30ReservedFromGLSL(400);
case SAMPLE:
- if (parseContext.extensionsTurnedOn(1, &E_GL_OES_shader_multisample_interpolation))
+ if ((parseContext.profile == EEsProfile && parseContext.version >= 320) ||
+ parseContext.extensionsTurnedOn(1, &E_GL_OES_shader_multisample_interpolation))
return keyword;
return es30ReservedFromGLSL(400);
@@ -912,7 +928,8 @@ int TScanContext::tokenizeIdentifier()
case IIMAGEBUFFER:
case UIMAGEBUFFER:
afterType = true;
- if (parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer))
+ if ((parseContext.profile == EEsProfile && parseContext.version >= 320) ||
+ parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer))
return keyword;
return firstGenerationImage(false);
@@ -935,7 +952,8 @@ int TScanContext::tokenizeIdentifier()
case IIMAGECUBEARRAY:
case UIMAGECUBEARRAY:
afterType = true;
- if (parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array))
+ if ((parseContext.profile == EEsProfile && parseContext.version >= 320) ||
+ parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array))
return keyword;
return secondGenerationImage();
@@ -973,6 +991,21 @@ int TScanContext::tokenizeIdentifier()
return identifierOrType();
#ifdef AMD_EXTENSIONS
+ case INT16_T:
+ case UINT16_T:
+ case I16VEC2:
+ case I16VEC3:
+ case I16VEC4:
+ case U16VEC2:
+ case U16VEC3:
+ case U16VEC4:
+ afterType = true;
+ if (parseContext.symbolTable.atBuiltInLevel() ||
+ (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) &&
+ parseContext.profile != EEsProfile && parseContext.version >= 450))
+ return keyword;
+ return identifierOrType();
+
case FLOAT16_T:
case F16VEC2:
case F16VEC3:
@@ -1002,7 +1035,8 @@ int TScanContext::tokenizeIdentifier()
case ISAMPLERCUBEARRAY:
case USAMPLERCUBEARRAY:
afterType = true;
- if (parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array))
+ if ((parseContext.profile == EEsProfile && parseContext.version >= 320) ||
+ parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array))
return keyword;
if (parseContext.profile == EEsProfile || (parseContext.version < 400 && ! parseContext.extensionTurnedOn(E_GL_ARB_texture_cube_map_array)))
reservedWord();
@@ -1041,14 +1075,16 @@ int TScanContext::tokenizeIdentifier()
case SAMPLERBUFFER:
afterType = true;
- if (parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer))
+ if ((parseContext.profile == EEsProfile && parseContext.version >= 320) ||
+ parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer))
return keyword;
return es30ReservedFromGLSL(130);
case ISAMPLERBUFFER:
case USAMPLERBUFFER:
afterType = true;
- if (parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer))
+ if ((parseContext.profile == EEsProfile && parseContext.version >= 320) ||
+ parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer))
return keyword;
return es30ReservedFromGLSL(140);
@@ -1064,7 +1100,8 @@ int TScanContext::tokenizeIdentifier()
case ISAMPLER2DMSARRAY:
case USAMPLER2DMSARRAY:
afterType = true;
- if (parseContext.extensionsTurnedOn(1, &E_GL_OES_texture_storage_multisample_2d_array))
+ if ((parseContext.profile == EEsProfile && parseContext.version >= 320) ||
+ parseContext.extensionsTurnedOn(1, &E_GL_OES_texture_storage_multisample_2d_array))
return keyword;
return es30ReservedFromGLSL(150);
@@ -1085,8 +1122,10 @@ int TScanContext::tokenizeIdentifier()
case SAMPLER2DSHADOW:
afterType = true;
- if (parseContext.profile == EEsProfile && parseContext.version < 300)
- reservedWord();
+ if (parseContext.profile == EEsProfile && parseContext.version < 300) {
+ if (!parseContext.extensionTurnedOn(E_GL_EXT_shadow_samplers))
+ reservedWord();
+ }
return keyword;
case SAMPLER2DRECT:
@@ -1113,7 +1152,9 @@ int TScanContext::tokenizeIdentifier()
case SAMPLEREXTERNALOES:
afterType = true;
- if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_OES_EGL_image_external))
+ if (parseContext.symbolTable.atBuiltInLevel() ||
+ parseContext.extensionTurnedOn(E_GL_OES_EGL_image_external) ||
+ parseContext.extensionTurnedOn(E_GL_OES_EGL_image_external_essl3))
return keyword;
return identifierOrType();
@@ -1198,7 +1239,8 @@ int TScanContext::tokenizeIdentifier()
return keyword;
case PRECISE:
- if ((parseContext.profile == EEsProfile && parseContext.extensionsTurnedOn(Num_AEP_gpu_shader5, AEP_gpu_shader5)) ||
+ if ((parseContext.profile == EEsProfile &&
+ (parseContext.version >= 320 || parseContext.extensionsTurnedOn(Num_AEP_gpu_shader5, AEP_gpu_shader5))) ||
(parseContext.profile != EEsProfile && parseContext.version >= 400))
return keyword;
if (parseContext.profile == EEsProfile && parseContext.version == 310) {
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Scan.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Scan.h
index 9b8f2d4517c..2c26c2efd41 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Scan.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Scan.h
@@ -51,25 +51,24 @@ const int EndOfInput = -1;
//
class TInputScanner {
public:
- TInputScanner(int n, const char* const s[], size_t L[], const char* const* names = nullptr, int b = 0, int f = 0, bool single = false) :
+ TInputScanner(int n, const char* const s[], size_t L[], const char* const* names = nullptr,
+ int b = 0, int f = 0, bool single = false) :
numSources(n),
- sources(reinterpret_cast<const unsigned char* const *>(s)), // up to this point, common usage is "char*", but now we need positive 8-bit characters
- lengths(L), currentSource(0), currentChar(0), stringBias(b), finale(f), singleLogical(single), endOfFileReached(false)
+ // up to this point, common usage is "char*", but now we need positive 8-bit characters
+ sources(reinterpret_cast<const unsigned char* const *>(s)),
+ lengths(L), currentSource(0), currentChar(0), stringBias(b), finale(f), singleLogical(single),
+ endOfFileReached(false)
{
loc = new TSourceLoc[numSources];
for (int i = 0; i < numSources; ++i) {
- loc[i].init();
+ loc[i].init(i - stringBias);
}
if (names != nullptr) {
for (int i = 0; i < numSources; ++i)
loc[i].name = names[i];
}
- loc[currentSource].string = -stringBias;
loc[currentSource].line = 1;
- loc[currentSource].column = 0;
- logicalSourceLoc.string = 0;
- logicalSourceLoc.line = 1;
- logicalSourceLoc.column = 0;
+ logicalSourceLoc.init(1);
logicalSourceLoc.name = loc[0].name;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ScanContext.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ScanContext.h
index 1d86348eb38..608ae067e07 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ScanContext.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ScanContext.h
@@ -38,6 +38,8 @@
// sits between the preprocessor scanner and parser.
//
+#pragma once
+
#include "ParseHelper.h"
namespace glslang {
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp
index 5a8f679d10b..62e079e5567 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp
@@ -1,7 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2013-2016 LunarG, Inc.
-// Copyright (C) 2015-2016 Google, Inc.
+// Copyright (C) 2015-2017 Google, Inc.
//
// All rights reserved.
//
@@ -69,6 +69,10 @@
namespace { // anonymous namespace for file-local functions and symbols
+// Total number of successful initializers of glslang: a refcount
+// Shared global; access should be protected by a global mutex/critical section.
+int NumberOfClients = 0;
+
using namespace glslang;
// Create a language specific version of parseables.
@@ -91,18 +95,16 @@ TParseContextBase* CreateParseContext(TSymbolTable& symbolTable, TIntermediate&
int version, EProfile profile, EShSource source,
EShLanguage language, TInfoSink& infoSink,
SpvVersion spvVersion, bool forwardCompatible, EShMessages messages,
- bool parsingBuiltIns, const std::string sourceEntryPointName = "")
+ bool parsingBuiltIns, std::string sourceEntryPointName = "")
{
-#ifndef ENABLE_HLSL
- (void)sourceEntryPointName; // Unused argument.
-#endif
-
switch (source) {
- case EShSourceGlsl:
- intermediate.setEntryPointName("main");
+ case EShSourceGlsl: {
+ if (sourceEntryPointName.size() == 0)
+ intermediate.setEntryPointName("main");
+ TString entryPoint = sourceEntryPointName.c_str();
return new TParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion,
- language, infoSink, forwardCompatible, messages);
-
+ language, infoSink, forwardCompatible, messages, &entryPoint);
+ }
#ifdef ENABLE_HLSL
case EShSourceHlsl:
return new HlslParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion,
@@ -116,7 +118,7 @@ TParseContextBase* CreateParseContext(TSymbolTable& symbolTable, TIntermediate&
// Local mapping functions for making arrays of symbol tables....
-const int VersionCount = 15; // index range in MapVersionToIndex
+const int VersionCount = 17; // index range in MapVersionToIndex
int MapVersionToIndex(int version)
{
@@ -138,7 +140,10 @@ int MapVersionToIndex(int version)
case 440: index = 12; break;
case 310: index = 13; break;
case 450: index = 14; break;
- default: break;
+ case 500: index = 0; break; // HLSL
+ case 320: index = 15; break;
+ case 460: index = 16; break;
+ default: assert(0); break;
}
assert(index < VersionCount);
@@ -216,7 +221,7 @@ enum EPrecisionClass {
TSymbolTable* CommonSymbolTable[VersionCount][SpvVersionCount][ProfileCount][SourceCount][EPcCount] = {};
TSymbolTable* SharedSymbolTables[VersionCount][SpvVersionCount][ProfileCount][SourceCount][EShLangCount] = {};
-TPoolAllocator* PerProcessGPA = 0;
+TPoolAllocator* PerProcessGPA = nullptr;
//
// Parse and add to the given symbol table the content of the given shader string.
@@ -360,7 +365,7 @@ bool AddContextSpecificSymbols(const TBuiltInResource* resources, TInfoSink& inf
// pool allocator intact, so:
// - Switch to a new pool for parsing the built-ins
// - Do the parsing, which builds the symbol table, using the new pool
-// - Switch to the process-global pool to save a copy the resulting symbol table
+// - Switch to the process-global pool to save a copy of the resulting symbol table
// - Free up the new pool used to parse the built-ins
// - Switch back to the original thread's pool
//
@@ -387,8 +392,8 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp
// Switch to a new pool
TPoolAllocator& previousAllocator = GetThreadPoolAllocator();
- TPoolAllocator* builtInPoolAllocator = new TPoolAllocator();
- SetThreadPoolAllocator(*builtInPoolAllocator);
+ TPoolAllocator* builtInPoolAllocator = new TPoolAllocator;
+ SetThreadPoolAllocator(builtInPoolAllocator);
// Dynamically allocate the local symbol tables so we can control when they are deallocated WRT when the pool is popped.
TSymbolTable* commonTable[EPcCount];
@@ -402,7 +407,7 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp
InitializeSymbolTables(infoSink, commonTable, stageTables, version, profile, spvVersion, source);
// Switch to the process-global pool
- SetThreadPoolAllocator(*PerProcessGPA);
+ SetThreadPoolAllocator(PerProcessGPA);
// Copy the local symbol tables from the new pool to the global tables using the process-global pool
for (int precClass = 0; precClass < EPcCount; ++precClass) {
@@ -429,7 +434,7 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp
delete stageTables[stage];
delete builtInPoolAllocator;
- SetThreadPoolAllocator(previousAllocator);
+ SetThreadPoolAllocator(&previousAllocator);
glslang::ReleaseGlobalLock();
}
@@ -442,12 +447,12 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo
bool correct = true;
if (source == EShSourceHlsl) {
- version = 450; // TODO: GLSL parser is still used for builtins.
+ version = 500; // shader model; currently a characteristic of glslang, not the input
profile = ECoreProfile; // allow doubles in prototype parsing
return correct;
}
- // Get a good version...
+ // Get a version...
if (version == 0) {
version = defaultVersion;
// infoSink.info.message(EPrefixWarning, "#version: statement missing; use #version on first line of shader");
@@ -455,9 +460,9 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo
// Get a good profile...
if (profile == ENoProfile) {
- if (version == 300 || version == 310) {
+ if (version == 300 || version == 310 || version == 320) {
correct = false;
- infoSink.info.message(EPrefixError, "#version: versions 300 and 310 require specifying the 'es' profile");
+ infoSink.info.message(EPrefixError, "#version: versions 300, 310, and 320 require specifying the 'es' profile");
profile = EEsProfile;
} else if (version == 100)
profile = EEsProfile;
@@ -474,16 +479,16 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo
profile = EEsProfile;
else
profile = ENoProfile;
- } else if (version == 300 || version == 310) {
+ } else if (version == 300 || version == 310 || version == 320) {
if (profile != EEsProfile) {
correct = false;
- infoSink.info.message(EPrefixError, "#version: versions 300 and 310 support only the es profile");
+ infoSink.info.message(EPrefixError, "#version: versions 300, 310, and 320 support only the es profile");
}
profile = EEsProfile;
} else {
if (profile == EEsProfile) {
correct = false;
- infoSink.info.message(EPrefixError, "#version: only version 300 and 310 support the es profile");
+ infoSink.info.message(EPrefixError, "#version: only version 300, 310, and 320 support the es profile");
if (version >= FirstProfileVersion)
profile = ECoreProfile;
else
@@ -493,6 +498,42 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo
}
}
+ // Fix version...
+ switch (version) {
+ // ES versions
+ case 100: break;
+ case 300: break;
+ case 310: break;
+ case 320: break;
+
+ // desktop versions
+ case 110: break;
+ case 120: break;
+ case 130: break;
+ case 140: break;
+ case 150: break;
+ case 330: break;
+ case 400: break;
+ case 410: break;
+ case 420: break;
+ case 430: break;
+ case 440: break;
+ case 450: break;
+ case 460: break;
+
+ // unknown version
+ default:
+ correct = false;
+ infoSink.info.message(EPrefixError, "version not supported");
+ if (profile == EEsProfile)
+ version = 310;
+ else {
+ version = 450;
+ profile = ECoreProfile;
+ }
+ break;
+ }
+
// Correct for stage type...
switch (stage) {
case EShLangGeometry:
@@ -566,42 +607,90 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo
}
}
- // A meta check on the condition of the compiler itself...
- switch (version) {
-
- // ES versions
- case 100:
- case 300:
- // versions are complete
- break;
-
- // Desktop versions
- case 110:
- case 120:
- case 130:
- case 140:
- case 150:
- case 330:
- // versions are complete
- break;
+ return correct;
+}
- case 310:
- case 400:
- case 410:
- case 420:
- case 430:
- case 440:
- case 450:
- infoSink.info << "Warning, version " << version << " is not yet complete; most version-specific features are present, but some are missing.\n";
- break;
+// There are multiple paths in for setting environment stuff.
+// TEnvironment takes precedence, for what it sets, so sort all this out.
+// Ideally, the internal code could be made to use TEnvironment, but for
+// now, translate it to the historically used parameters.
+void TranslateEnvironment(const TEnvironment* environment, EShMessages& messages, EShSource& source,
+ EShLanguage& stage, SpvVersion& spvVersion)
+{
+ // Set up environmental defaults, first ignoring 'environment'.
+ if (messages & EShMsgSpvRules)
+ spvVersion.spv = 0x00010000;
+ if (messages & EShMsgVulkanRules) {
+ spvVersion.vulkan = 100;
+ spvVersion.vulkanGlsl = 100;
+ } else if (spvVersion.spv != 0)
+ spvVersion.openGl = 100;
+
+ // Now, override, based on any content set in 'environment'.
+ // 'environment' must be cleared to ESh*None settings when items
+ // are not being set.
+ if (environment != nullptr) {
+ // input language
+ if (environment->input.languageFamily != EShSourceNone) {
+ stage = environment->input.stage;
+ switch (environment->input.dialect) {
+ case EShClientNone:
+ break;
+ case EShClientVulkan:
+ spvVersion.vulkanGlsl = environment->input.dialectVersion;
+ break;
+ case EShClientOpenGL:
+ spvVersion.openGl = environment->input.dialectVersion;
+ break;
+ }
+ switch (environment->input.languageFamily) {
+ case EShSourceNone:
+ break;
+ case EShSourceGlsl:
+ source = EShSourceGlsl;
+ messages = static_cast<EShMessages>(messages & ~EShMsgReadHlsl);
+ break;
+ case EShSourceHlsl:
+ source = EShSourceHlsl;
+ messages = static_cast<EShMessages>(messages | EShMsgReadHlsl);
+ break;
+ }
+ }
- default:
- infoSink.info << "Warning, version " << version << " is unknown.\n";
- break;
+ // client
+ switch (environment->client.client) {
+ case EShClientVulkan:
+ spvVersion.vulkan = environment->client.version;
+ break;
+ default:
+ break;
+ }
+ // generated code
+ switch (environment->target.language) {
+ case EshTargetSpv:
+ spvVersion.spv = environment->target.version;
+ break;
+ default:
+ break;
+ }
}
+}
- return correct;
+// Most processes are recorded when set in the intermediate representation,
+// These are the few that are not.
+void RecordProcesses(TIntermediate& intermediate, EShMessages messages, const std::string& sourceEntryPointName)
+{
+ if ((messages & EShMsgRelaxedErrors) != 0)
+ intermediate.addProcess("relaxed-errors");
+ if ((messages & EShMsgSuppressWarnings) != 0)
+ intermediate.addProcess("suppress-warnings");
+ if ((messages & EShMsgKeepUncalled) != 0)
+ intermediate.addProcess("keep-uncalled");
+ if (sourceEntryPointName.size() > 0) {
+ intermediate.addProcess("source-entrypoint");
+ intermediate.addProcessArgument(sourceEntryPointName);
+ }
}
// This is the common setup and cleanup code for PreprocessDeferred and
@@ -623,7 +712,7 @@ bool ProcessDeferred(
const char* customPreamble,
const EShOptimizationLevel optLevel,
const TBuiltInResource* resources,
- int defaultVersion, // use 100 for ES environment, 110 for desktop; this is the GLSL version, not SPIR-V or Vulkan
+ int defaultVersion, // use 100 for ES environment, 110 for desktop; this is the GLSL version, not SPIR-V or Vulkan
EProfile defaultProfile,
// set version/profile to defaultVersion/defaultProfile regardless of the #version
// directive in the source code
@@ -634,12 +723,9 @@ bool ProcessDeferred(
ProcessingContext& processingContext,
bool requireNonempty,
TShader::Includer& includer,
- const std::string sourceEntryPointName = ""
- )
+ const std::string sourceEntryPointName = "",
+ const TEnvironment* environment = nullptr) // optional way of fully setting all versions, overriding the above
{
- if (! InitThread())
- return false;
-
// This must be undone (.pop()) by the caller, after it finishes consuming the created tree.
GetThreadPoolAllocator().push();
@@ -663,7 +749,7 @@ bool ProcessDeferred(
const char** names = new const char*[numTotal];
for (int s = 0; s < numStrings; ++s) {
strings[s + numPre] = shaderStrings[s];
- if (inputLengths == 0 || inputLengths[s] < 0)
+ if (inputLengths == nullptr || inputLengths[s] < 0)
lengths[s + numPre] = strlen(shaderStrings[s]);
else
lengths[s + numPre] = inputLengths[s];
@@ -676,16 +762,25 @@ bool ProcessDeferred(
names[s + numPre] = nullptr;
}
+ // Get all the stages, languages, clients, and other environment
+ // stuff sorted out.
+ EShSource source = (messages & EShMsgReadHlsl) != 0 ? EShSourceHlsl : EShSourceGlsl;
+ SpvVersion spvVersion;
+ EShLanguage stage = compiler->getLanguage();
+ TranslateEnvironment(environment, messages, source, stage, spvVersion);
+
// First, without using the preprocessor or parser, find the #version, so we know what
// symbol tables, processing rules, etc. to set up. This does not need the extra strings
- // outlined above, just the user shader.
- int version;
- EProfile profile;
- glslang::TInputScanner userInput(numStrings, &strings[numPre], &lengths[numPre]); // no preamble
- bool versionNotFirstToken;
- bool versionNotFirst = userInput.scanVersion(version, profile, versionNotFirstToken);
+ // outlined above, just the user shader, after the system and user preambles.
+ glslang::TInputScanner userInput(numStrings, &strings[numPre], &lengths[numPre]);
+ int version = 0;
+ EProfile profile = ENoProfile;
+ bool versionNotFirstToken = false;
+ bool versionNotFirst = (source == EShSourceHlsl)
+ ? true
+ : userInput.scanVersion(version, profile, versionNotFirstToken);
bool versionNotFound = version == 0;
- if (forceDefaultVersionAndProfile) {
+ if (forceDefaultVersionAndProfile && source == EShSourceGlsl) {
if (! (messages & EShMsgSuppressWarnings) && ! versionNotFound &&
(version != defaultVersion || profile != defaultProfile)) {
compiler->infoSink.info << "Warning, (version, profile) forced to be ("
@@ -702,15 +797,9 @@ bool ProcessDeferred(
version = defaultVersion;
profile = defaultProfile;
}
- SpvVersion spvVersion;
- if (messages & EShMsgSpvRules)
- spvVersion.spv = 0x00010000; // TODO: eventually have this come from the outside
- EShSource source = (messages & EShMsgReadHlsl) ? EShSourceHlsl : EShSourceGlsl;
- if (messages & EShMsgVulkanRules)
- spvVersion.vulkan = 100; // TODO: eventually have this come from the outside
- else if (spvVersion.spv != 0)
- spvVersion.openGl = 100; // TODO: eventually have this come from the outside
- bool goodVersion = DeduceVersionProfile(compiler->infoSink, compiler->getLanguage(), versionNotFirst, defaultVersion, source, version, profile, spvVersion);
+
+ bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage,
+ versionNotFirst, defaultVersion, source, version, profile, spvVersion);
bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst));
bool warnVersionNotFirst = false;
if (! versionWillBeError && versionNotFirstToken) {
@@ -724,15 +813,23 @@ bool ProcessDeferred(
intermediate.setVersion(version);
intermediate.setProfile(profile);
intermediate.setSpv(spvVersion);
+ RecordProcesses(intermediate, messages, sourceEntryPointName);
if (spvVersion.vulkan >= 100)
intermediate.setOriginUpperLeft();
+ if ((messages & EShMsgHlslOffsets) || source == EShSourceHlsl)
+ intermediate.setHlslOffsets();
+ if (messages & EShMsgDebugInfo) {
+ intermediate.setSourceFile(names[numPre]);
+ for (int s = 0; s < numStrings; ++s)
+ intermediate.addSourceText(strings[numPre + s]);
+ }
SetupBuiltinSymbolTable(version, profile, spvVersion, source);
TSymbolTable* cachedTable = SharedSymbolTables[MapVersionToIndex(version)]
[MapSpvVersionToIndex(spvVersion)]
[MapProfileToIndex(profile)]
[MapSourceToIndex(source)]
- [compiler->getLanguage()];
+ [stage];
// Dynamically allocate the symbol table so we can control when it is deallocated WRT the pool.
TSymbolTable* symbolTableMemory = new TSymbolTable;
@@ -743,7 +840,7 @@ bool ProcessDeferred(
// Add built-in symbols that are potentially context dependent;
// they get popped again further down.
if (! AddContextSpecificSymbols(resources, compiler->infoSink, symbolTable, version, profile, spvVersion,
- compiler->getLanguage(), source))
+ stage, source))
return false;
//
@@ -751,14 +848,14 @@ bool ProcessDeferred(
//
TParseContextBase* parseContext = CreateParseContext(symbolTable, intermediate, version, profile, source,
- compiler->getLanguage(), compiler->infoSink,
+ stage, compiler->infoSink,
spvVersion, forwardCompatible, messages, false, sourceEntryPointName);
- TPpContext ppContext(*parseContext, names[numPre]? names[numPre]: "", includer);
+ TPpContext ppContext(*parseContext, names[numPre] ? names[numPre] : "", includer);
// only GLSL (bison triggered, really) needs an externally set scan context
glslang::TScanContext scanContext(*parseContext);
- if ((messages & EShMsgReadHlsl) == 0)
+ if (source == EShSourceGlsl)
parseContext->setScanContext(&scanContext);
parseContext->setPpContext(&ppContext);
@@ -1077,14 +1174,15 @@ bool CompileDeferred(
EShMessages messages, // warnings/errors/AST; things to print out
TIntermediate& intermediate,// returned tree, etc.
TShader::Includer& includer,
- const std::string sourceEntryPointName = "")
+ const std::string sourceEntryPointName = "",
+ TEnvironment* environment = nullptr)
{
DoFullParse parser;
return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames,
preamble, optLevel, resources, defaultVersion,
defaultProfile, forceDefaultVersionAndProfile,
forwardCompatible, messages, intermediate, parser,
- true, includer, sourceEntryPointName);
+ true, includer, sourceEntryPointName, environment);
}
} // end anonymous namespace for local functions
@@ -1099,7 +1197,11 @@ int ShInitialize()
if (! InitProcess())
return 0;
- if (! PerProcessGPA)
+ glslang::GetGlobalLock();
+ ++NumberOfClients;
+ glslang::ReleaseGlobalLock();
+
+ if (PerProcessGPA == nullptr)
PerProcessGPA = new TPoolAllocator();
glslang::TScanContext::fillInKeywordMap();
@@ -1165,6 +1267,14 @@ void ShDestruct(ShHandle handle)
//
int __fastcall ShFinalize()
{
+ glslang::GetGlobalLock();
+ --NumberOfClients;
+ assert(NumberOfClients >= 0);
+ bool finalize = NumberOfClients == 0;
+ glslang::ReleaseGlobalLock();
+ if (! finalize)
+ return 1;
+
for (int version = 0; version < VersionCount; ++version) {
for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) {
for (int p = 0; p < ProfileCount; ++p) {
@@ -1191,10 +1301,9 @@ int __fastcall ShFinalize()
}
}
- if (PerProcessGPA) {
- PerProcessGPA->popAll();
+ if (PerProcessGPA != nullptr) {
delete PerProcessGPA;
- PerProcessGPA = 0;
+ PerProcessGPA = nullptr;
}
glslang::TScanContext::deleteKeywordMap();
@@ -1235,6 +1344,8 @@ int ShCompile(
if (compiler == 0)
return 0;
+ SetThreadPoolAllocator(compiler->getPool());
+
compiler->infoSink.info.erase();
compiler->infoSink.debug.erase();
@@ -1292,6 +1403,8 @@ int ShLinkExt(
TShHandleBase* base = reinterpret_cast<TShHandleBase*>(linkHandle);
TLinker* linker = static_cast<TLinker*>(base->getAsLinker());
+ SetThreadPoolAllocator(linker->getPool());
+
if (linker == 0)
return 0;
@@ -1326,9 +1439,6 @@ void ShSetEncryptionMethod(ShHandle handle)
//
const char* ShGetInfoLog(const ShHandle handle)
{
- if (!InitThread())
- return 0;
-
if (handle == 0)
return 0;
@@ -1352,9 +1462,6 @@ const char* ShGetInfoLog(const ShHandle handle)
//
const void* ShGetExecutable(const ShHandle handle)
{
- if (!InitThread())
- return 0;
-
if (handle == 0)
return 0;
@@ -1377,9 +1484,6 @@ const void* ShGetExecutable(const ShHandle handle)
//
int ShSetVirtualAttributeBindings(const ShHandle handle, const ShBindingTable* table)
{
- if (!InitThread())
- return 0;
-
if (handle == 0)
return 0;
@@ -1399,9 +1503,6 @@ int ShSetVirtualAttributeBindings(const ShHandle handle, const ShBindingTable* t
//
int ShSetFixedAttributeBindings(const ShHandle handle, const ShBindingTable* table)
{
- if (!InitThread())
- return 0;
-
if (handle == 0)
return 0;
@@ -1420,9 +1521,6 @@ int ShSetFixedAttributeBindings(const ShHandle handle, const ShBindingTable* tab
//
int ShExcludeAttributes(const ShHandle handle, int *attributes, int count)
{
- if (!InitThread())
- return 0;
-
if (handle == 0)
return 0;
@@ -1444,9 +1542,6 @@ int ShExcludeAttributes(const ShHandle handle, int *attributes, int count)
//
int ShGetUniformLocation(const ShHandle handle, const char* name)
{
- if (!InitThread())
- return 0;
-
if (handle == 0)
return -1;
@@ -1475,12 +1570,12 @@ namespace glslang {
const char* GetEsslVersionString()
{
- return "OpenGL ES GLSL 3.00 glslang LunarG Khronos." GLSLANG_REVISION " " GLSLANG_DATE;
+ return "OpenGL ES GLSL 3.20 glslang Khronos." GLSLANG_REVISION " " GLSLANG_DATE;
}
const char* GetGlslVersionString()
{
- return "4.20 glslang LunarG Khronos." GLSLANG_REVISION " " GLSLANG_DATE;
+ return "4.60 glslang Khronos." GLSLANG_REVISION " " GLSLANG_DATE;
}
int GetKhronosToolId()
@@ -1505,11 +1600,18 @@ public:
};
TShader::TShader(EShLanguage s)
- : pool(0), stage(s), lengths(nullptr), stringNames(nullptr), preamble("")
+ : stage(s), lengths(nullptr), stringNames(nullptr), preamble("")
{
+ pool = new TPoolAllocator;
infoSink = new TInfoSink;
compiler = new TDeferredCompiler(stage, *infoSink);
intermediate = new TIntermediate(s);
+
+ // clear environment (avoid constructors in them for use in a C interface)
+ environment.input.languageFamily = EShSourceNone;
+ environment.input.dialect = EShClientNone;
+ environment.client.client = EShClientNone;
+ environment.target.language = EShTargetNone;
}
TShader::~TShader()
@@ -1553,14 +1655,45 @@ void TShader::setSourceEntryPoint(const char* name)
sourceEntryPointName = name;
}
-void TShader::setShiftSamplerBinding(unsigned int base) { intermediate->setShiftSamplerBinding(base); }
-void TShader::setShiftTextureBinding(unsigned int base) { intermediate->setShiftTextureBinding(base); }
-void TShader::setShiftImageBinding(unsigned int base) { intermediate->setShiftImageBinding(base); }
-void TShader::setShiftUboBinding(unsigned int base) { intermediate->setShiftUboBinding(base); }
-void TShader::setShiftSsboBinding(unsigned int base) { intermediate->setShiftSsboBinding(base); }
+void TShader::addProcesses(const std::vector<std::string>& p)
+{
+ intermediate->addProcesses(p);
+}
+
+// Set binding base for given resource type
+void TShader::setShiftBinding(TResourceType res, unsigned int base) {
+ intermediate->setShiftBinding(res, base);
+}
+
+// Set binding base for given resource type for a given binding set.
+void TShader::setShiftBindingForSet(TResourceType res, unsigned int base, unsigned int set) {
+ intermediate->setShiftBindingForSet(res, base, set);
+}
+
+// Set binding base for sampler types
+void TShader::setShiftSamplerBinding(unsigned int base) { setShiftBinding(EResSampler, base); }
+// Set binding base for texture types (SRV)
+void TShader::setShiftTextureBinding(unsigned int base) { setShiftBinding(EResTexture, base); }
+// Set binding base for image types
+void TShader::setShiftImageBinding(unsigned int base) { setShiftBinding(EResImage, base); }
+// Set binding base for uniform buffer objects (CBV)
+void TShader::setShiftUboBinding(unsigned int base) { setShiftBinding(EResUbo, base); }
+// Synonym for setShiftUboBinding, to match HLSL language.
+void TShader::setShiftCbufferBinding(unsigned int base) { setShiftBinding(EResUbo, base); }
+// Set binding base for UAV (unordered access view)
+void TShader::setShiftUavBinding(unsigned int base) { setShiftBinding(EResUav, base); }
+// Set binding base for SSBOs
+void TShader::setShiftSsboBinding(unsigned int base) { setShiftBinding(EResSsbo, base); }
+// Enables binding automapping using TIoMapper
void TShader::setAutoMapBindings(bool map) { intermediate->setAutoMapBindings(map); }
+// Fragile: currently within one stage: simple auto-assignment of location
+void TShader::setAutoMapLocations(bool map) { intermediate->setAutoMapLocations(map); }
+// See comment above TDefaultHlslIoMapper in iomapper.cpp:
+void TShader::setHlslIoMapping(bool hlslIoMap) { intermediate->setHlslIoMapping(hlslIoMap); }
void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlattenUniformArrays(flatten); }
void TShader::setNoStorageFormat(bool useUnknownFormat) { intermediate->setNoStorageFormat(useUnknownFormat); }
+void TShader::setResourceSetBinding(const std::vector<std::string>& base) { intermediate->setResourceSetBinding(base); }
+void TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { intermediate->setTextureSamplerTransformMode(mode); }
//
// Turn the shader strings into a parse tree in the TIntermediate.
@@ -1572,21 +1705,16 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion
{
if (! InitThread())
return false;
+ SetThreadPoolAllocator(pool);
- pool = new TPoolAllocator();
- SetThreadPoolAllocator(*pool);
if (! preamble)
preamble = "";
return CompileDeferred(compiler, strings, numStrings, lengths, stringNames,
preamble, EShOptNone, builtInResources, defaultVersion,
defaultProfile, forceDefaultVersionAndProfile,
- forwardCompatible, messages, *intermediate, includer, sourceEntryPointName);
-}
-
-bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion, bool forwardCompatible, EShMessages messages)
-{
- return parse(builtInResources, defaultVersion, ENoProfile, false, forwardCompatible, messages);
+ forwardCompatible, messages, *intermediate, includer, sourceEntryPointName,
+ &environment);
}
// Fill in a string with the result of preprocessing ShaderStrings
@@ -1600,9 +1728,8 @@ bool TShader::preprocess(const TBuiltInResource* builtInResources,
{
if (! InitThread())
return false;
+ SetThreadPoolAllocator(pool);
- pool = new TPoolAllocator();
- SetThreadPoolAllocator(*pool);
if (! preamble)
preamble = "";
@@ -1622,8 +1749,9 @@ const char* TShader::getInfoDebugLog()
return infoSink->debug.c_str();
}
-TProgram::TProgram() : pool(0), reflection(0), ioMapper(nullptr), linked(false)
+TProgram::TProgram() : reflection(0), ioMapper(nullptr), linked(false)
{
+ pool = new TPoolAllocator;
infoSink = new TInfoSink;
for (int s = 0; s < EShLangCount; ++s) {
intermediate[s] = 0;
@@ -1658,8 +1786,7 @@ bool TProgram::link(EShMessages messages)
bool error = false;
- pool = new TPoolAllocator();
- SetThreadPoolAllocator(*pool);
+ SetThreadPoolAllocator(pool);
for (int s = 0; s < EShLangCount; ++s) {
if (! linkStage((EShLanguage)s, messages))
@@ -1775,7 +1902,9 @@ const char* TProgram::getUniformName(int index) const { return reflection
const char* TProgram::getUniformBlockName(int index) const { return reflection->getUniformBlock(index).name.c_str(); }
int TProgram::getUniformBlockSize(int index) const { return reflection->getUniformBlock(index).size; }
int TProgram::getUniformIndex(const char* name) const { return reflection->getIndex(name); }
+int TProgram::getUniformBinding(int index) const { return reflection->getUniform(index).getBinding(); }
int TProgram::getUniformBlockIndex(int index) const { return reflection->getUniform(index).index; }
+int TProgram::getUniformBlockCounterIndex(int index) const { return reflection->getUniformBlock(index).counterIndex; }
int TProgram::getUniformType(int index) const { return reflection->getUniform(index).glDefineType; }
int TProgram::getUniformBufferOffset(int index) const { return reflection->getUniform(index).offset; }
int TProgram::getUniformArraySize(int index) const { return reflection->getUniform(index).size; }
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp
index 790b76b15e8..233033e7846 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp
@@ -67,6 +67,10 @@ void TType::buildMangledName(TString& mangledName) const
case EbtUint: mangledName += 'u'; break;
case EbtInt64: mangledName += "i64"; break;
case EbtUint64: mangledName += "u64"; break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16: mangledName += "i16"; break;
+ case EbtUint16: mangledName += "u16"; break;
+#endif
case EbtBool: mangledName += 'b'; break;
case EbtAtomicUint: mangledName += "au"; break;
case EbtSampler:
@@ -99,6 +103,23 @@ void TType::buildMangledName(TString& mangledName) const
case EsdSubpass: mangledName += "P"; break;
default: break; // some compilers want this
}
+
+ if (sampler.hasReturnStruct()) {
+ // Name mangle for sampler return struct uses struct table index.
+ mangledName += "-tx-struct";
+
+ char text[16]; // plenty enough space for the small integers.
+ snprintf(text, sizeof(text), "%d-", sampler.structReturnIndex);
+ mangledName += text;
+ } else {
+ switch (sampler.getVectorSize()) {
+ case 1: mangledName += "1"; break;
+ case 2: mangledName += "2"; break;
+ case 3: mangledName += "3"; break;
+ case 4: break; // default to prior name mangle behavior
+ }
+ }
+
if (sampler.ms)
mangledName += "M";
break;
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h
index 8dc154cdc55..f928b7aedfc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h
@@ -198,7 +198,6 @@ struct TParameter {
TString *name;
TType* type;
TIntermTyped* defaultValue;
- TBuiltInVariable declaredBuiltIn;
void copyParam(const TParameter& param)
{
if (param.name)
@@ -207,8 +206,8 @@ struct TParameter {
name = 0;
type = param.type->clone();
defaultValue = param.defaultValue;
- declaredBuiltIn = param.declaredBuiltIn;
}
+ TBuiltInVariable getDeclaredBuiltIn() const { return type->getQualifier().declaredBuiltIn; }
};
//
@@ -241,7 +240,6 @@ public:
virtual void addParameter(TParameter& p)
{
assert(writable);
- p.declaredBuiltIn = p.type->getQualifier().builtIn;
parameters.push_back(p);
p.type->appendMangledName(mangledName);
@@ -264,6 +262,12 @@ public:
mangledName.insert(0, prefix);
}
+ virtual void removePrefix(const TString& prefix)
+ {
+ assert(mangledName.compare(0, prefix.size(), prefix) == 0);
+ mangledName.erase(0, prefix.size());
+ }
+
virtual const TString& getMangledName() const override { return mangledName; }
virtual const TType& getType() const override { return returnType; }
virtual TBuiltInVariable getDeclaredBuiltInType() const { return declaredBuiltIn; }
@@ -688,19 +692,27 @@ public:
// Normal find of a symbol, that can optionally say whether the symbol was found
// at a built-in level or the current top-scope level.
- TSymbol* find(const TString& name, bool* builtIn = 0, bool *currentScope = 0)
+ TSymbol* find(const TString& name, bool* builtIn = 0, bool* currentScope = 0, int* thisDepthP = 0)
{
int level = currentLevel();
TSymbol* symbol;
+ int thisDepth = 0;
do {
+ if (table[level]->isThisLevel())
+ ++thisDepth;
symbol = table[level]->find(name);
--level;
- } while (symbol == 0 && level >= 0);
+ } while (symbol == nullptr && level >= 0);
level++;
if (builtIn)
*builtIn = isBuiltInLevel(level);
if (currentScope)
*currentScope = isGlobalLevel(currentLevel()) || level == currentLevel(); // consider shared levels as "current scope" WRT user globals
+ if (thisDepthP != nullptr) {
+ if (! table[level]->isThisLevel())
+ thisDepth = 0;
+ *thisDepthP = thisDepth;
+ }
return symbol;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp
index 528333f4679..b1893b37ea0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp
@@ -154,8 +154,9 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior[E_GL_OES_standard_derivatives] = EBhDisable;
extensionBehavior[E_GL_EXT_frag_depth] = EBhDisable;
extensionBehavior[E_GL_OES_EGL_image_external] = EBhDisable;
+ extensionBehavior[E_GL_OES_EGL_image_external_essl3] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_texture_lod] = EBhDisable;
-
+ extensionBehavior[E_GL_EXT_shadow_samplers] = EBhDisable;
extensionBehavior[E_GL_ARB_texture_rectangle] = EBhDisable;
extensionBehavior[E_GL_3DL_array_objects] = EBhDisable;
extensionBehavior[E_GL_ARB_shading_language_420pack] = EBhDisable;
@@ -179,10 +180,14 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior[E_GL_ARB_shader_ballot] = EBhDisable;
extensionBehavior[E_GL_ARB_sparse_texture2] = EBhDisable;
extensionBehavior[E_GL_ARB_sparse_texture_clamp] = EBhDisable;
+ extensionBehavior[E_GL_ARB_shader_stencil_export] = EBhDisable;
// extensionBehavior[E_GL_ARB_cull_distance] = EBhDisable; // present for 4.5, but need extension control over block members
+ extensionBehavior[E_GL_ARB_post_depth_coverage] = EBhDisable;
+ extensionBehavior[E_GL_ARB_shader_viewport_layer_array] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_non_constant_global_initializers] = EBhDisable;
- extensionBehavior[E_GL_EXT_shader_image_load_formatted] = EBhDisable;
+ extensionBehavior[E_GL_EXT_shader_image_load_formatted] = EBhDisable;
+ extensionBehavior[E_GL_EXT_post_depth_coverage] = EBhDisable;
// #line and #include
extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable;
@@ -194,15 +199,19 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior[E_GL_AMD_shader_explicit_vertex_parameter] = EBhDisable;
extensionBehavior[E_GL_AMD_gcn_shader] = EBhDisable;
extensionBehavior[E_GL_AMD_gpu_shader_half_float] = EBhDisable;
+ extensionBehavior[E_GL_AMD_texture_gather_bias_lod] = EBhDisable;
+ extensionBehavior[E_GL_AMD_gpu_shader_int16] = EBhDisable;
+ extensionBehavior[E_GL_AMD_shader_image_load_store_lod] = EBhDisable;
+ extensionBehavior[E_GL_AMD_shader_fragment_mask] = EBhDisable;
#endif
#ifdef NV_EXTENSIONS
extensionBehavior[E_GL_NV_sample_mask_override_coverage] = EBhDisable;
extensionBehavior[E_SPV_NV_geometry_shader_passthrough] = EBhDisable;
- extensionBehavior[E_GL_ARB_shader_viewport_layer_array] = EBhDisable;
extensionBehavior[E_GL_NV_viewport_array2] = EBhDisable;
extensionBehavior[E_GL_NV_stereo_view_rendering] = EBhDisable;
extensionBehavior[E_GL_NVX_multiview_per_view_attributes] = EBhDisable;
+ extensionBehavior[E_GL_NV_shader_atomic_int64] = EBhDisable;
#endif
// AEP
@@ -236,6 +245,10 @@ void TParseVersions::initializeExtensionBehavior()
// EXT extensions
extensionBehavior[E_GL_EXT_device_group] = EBhDisable;
extensionBehavior[E_GL_EXT_multiview] = EBhDisable;
+
+ // OVR extensions
+ extensionBehavior[E_GL_OVR_multiview] = EBhDisable;
+ extensionBehavior[E_GL_OVR_multiview2] = EBhDisable;
}
// Get code that is not part of a shared symbol table, is specific to this shader,
@@ -250,7 +263,9 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_OES_standard_derivatives 1\n"
"#define GL_EXT_frag_depth 1\n"
"#define GL_OES_EGL_image_external 1\n"
+ "#define GL_OES_EGL_image_external_essl3 1\n"
"#define GL_EXT_shader_texture_lod 1\n"
+ "#define GL_EXT_shadow_samplers 1\n"
// AEP
"#define GL_ANDROID_extension_pack_es31a 1\n"
@@ -306,9 +321,12 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_ARB_shader_ballot 1\n"
"#define GL_ARB_sparse_texture2 1\n"
"#define GL_ARB_sparse_texture_clamp 1\n"
+ "#define GL_ARB_shader_stencil_export 1\n"
// "#define GL_ARB_cull_distance 1\n" // present for 4.5, but need extension control over block members
+ "#define GL_ARB_post_depth_coverage 1\n"
"#define GL_EXT_shader_non_constant_global_initializers 1\n"
"#define GL_EXT_shader_image_load_formatted 1\n"
+ "#define GL_EXT_post_depth_coverage 1\n"
#ifdef AMD_EXTENSIONS
"#define GL_AMD_shader_ballot 1\n"
@@ -316,12 +334,17 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_AMD_shader_explicit_vertex_parameter 1\n"
"#define GL_AMD_gcn_shader 1\n"
"#define GL_AMD_gpu_shader_half_float 1\n"
+ "#define GL_AMD_texture_gather_bias_lod 1\n"
+ "#define GL_AMD_gpu_shader_int16 1\n"
+ "#define GL_AMD_shader_image_load_store_lod 1\n"
+ "#define GL_AMD_shader_fragment_mask 1\n"
#endif
#ifdef NV_EXTENSIONS
"#define GL_NV_sample_mask_override_coverage 1\n"
"#define GL_NV_geometry_shader_passthrough 1\n"
"#define GL_NV_viewport_array2 1\n"
+ "#define GL_NV_shader_atomic_int64 1\n"
#endif
;
@@ -336,12 +359,19 @@ void TParseVersions::getPreamble(std::string& preamble)
if ((profile != EEsProfile && version >= 140) ||
(profile == EEsProfile && version >= 310)) {
- preamble +=
+ preamble +=
"#define GL_EXT_device_group 1\n"
"#define GL_EXT_multiview 1\n"
;
}
+ if (version >= 300 /* both ES and non-ES */) {
+ preamble +=
+ "#define GL_OVR_multiview 1\n"
+ "#define GL_OVR_multiview2 1\n"
+ ;
+ }
+
// #line and #include
preamble +=
"#define GL_GOOGLE_cpp_style_line_directive 1\n"
@@ -351,9 +381,9 @@ void TParseVersions::getPreamble(std::string& preamble)
// #define VULKAN XXXX
const int numberBufSize = 12;
char numberBuf[numberBufSize];
- if (spvVersion.vulkan > 0) {
+ if (spvVersion.vulkanGlsl > 0) {
preamble += "#define VULKAN ";
- snprintf(numberBuf, numberBufSize, "%d", spvVersion.vulkan);
+ snprintf(numberBuf, numberBufSize, "%d", spvVersion.vulkanGlsl);
preamble += numberBuf;
preamble += "\n";
}
@@ -498,6 +528,11 @@ void TParseVersions::requireNotRemoved(const TSourceLoc& loc, int profileMask, i
}
}
+void TParseVersions::unimplemented(const TSourceLoc& loc, const char* featureDesc)
+{
+ error(loc, "feature not yet implemented", featureDesc, "");
+}
+
// Returns true if at least one of the extensions in the extensions parameter is requested. Otherwise, returns false.
// Warns appropriately if the requested behavior of an extension is "warn".
bool TParseVersions::checkExtensionsRequested(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc)
@@ -703,10 +738,21 @@ void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op)
}
#ifdef AMD_EXTENSIONS
-// Call for any operation needing float16 data-type support.
+// Call for any operation needing GLSL 16-bit integer data-type support.
+void TParseVersions::int16Check(const TSourceLoc& loc, const char* op, bool builtIn)
+{
+ if (! builtIn) {
+ requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_int16, "shader int16");
+ requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
+ profileRequires(loc, ECoreProfile, 450, nullptr, op);
+ profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
+ }
+}
+
+// Call for any operation needing GLSL float16 data-type support.
void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool builtIn)
{
- if (!builtIn) {
+ if (! builtIn) {
requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_half_float, "shader half float");
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
profileRequires(loc, ECoreProfile, 450, nullptr, op);
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Versions.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Versions.h
index 7f5d33d5ef3..bd57103afea 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Versions.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/Versions.h
@@ -72,14 +72,19 @@ inline const char* ProfileName(EProfile profile)
}
//
-// SPIR-V has versions for multiple things; tie them together.
-// 0 means a target or rule set is not enabled.
+// What source rules, validation rules, target language, etc. are needed
+// desired for SPIR-V?
+//
+// 0 means a target or rule set is not enabled (ignore rules from that entity).
+// Non-0 means to apply semantic rules arising from that version of its rule set.
+// The union of all requested rule sets will be applied.
//
struct SpvVersion {
- SpvVersion() : spv(0), vulkan(0), openGl(0) {}
- unsigned int spv; // the version of the targeted SPIR-V, as defined by SPIR-V in word 1 of the SPIR-V binary header
- int vulkan; // the version of semantics for Vulkan; e.g., for GLSL from KHR_vulkan_glsl "#define VULKAN"
- int openGl; // the version of semantics for OpenGL; e.g., for GLSL from KHR_vulkan_glsl "#define GL_SPIRV"
+ SpvVersion() : spv(0), vulkanGlsl(0), vulkan(0), openGl(0) {}
+ unsigned int spv; // the version of SPIR-V to target, as defined by "word 1" of the SPIR-V binary header
+ int vulkanGlsl; // the version of GLSL semantics for Vulkan, from GL_KHR_vulkan_glsl, for "#define VULKAN XXX"
+ int vulkan; // the version of Vulkan, for which SPIR-V execution environment rules to use (100 means 1.0)
+ int openGl; // the version of GLSL semantics for OpenGL, from GL_ARB_gl_spirv, for "#define GL_SPIRV XXX"
};
//
@@ -102,7 +107,9 @@ const char* const E_GL_OES_texture_3D = "GL_OES_texture_3D";
const char* const E_GL_OES_standard_derivatives = "GL_OES_standard_derivatives";
const char* const E_GL_EXT_frag_depth = "GL_EXT_frag_depth";
const char* const E_GL_OES_EGL_image_external = "GL_OES_EGL_image_external";
+const char* const E_GL_OES_EGL_image_external_essl3 = "GL_OES_EGL_image_external_essl3";
const char* const E_GL_EXT_shader_texture_lod = "GL_EXT_shader_texture_lod";
+const char* const E_GL_EXT_shadow_samplers = "GL_EXT_shadow_samplers";
const char* const E_GL_ARB_texture_rectangle = "GL_ARB_texture_rectangle";
const char* const E_GL_3DL_array_objects = "GL_3DL_array_objects";
@@ -127,7 +134,10 @@ const char* const E_GL_ARB_gpu_shader_int64 = "GL_ARB_gpu_shader_int
const char* const E_GL_ARB_shader_ballot = "GL_ARB_shader_ballot";
const char* const E_GL_ARB_sparse_texture2 = "GL_ARB_sparse_texture2";
const char* const E_GL_ARB_sparse_texture_clamp = "GL_ARB_sparse_texture_clamp";
+const char* const E_GL_ARB_shader_stencil_export = "GL_ARB_shader_stencil_export";
// const char* const E_GL_ARB_cull_distance = "GL_ARB_cull_distance"; // present for 4.5, but need extension control over block members
+const char* const E_GL_ARB_post_depth_coverage = "GL_ARB_post_depth_coverage";
+const char* const E_GL_ARB_shader_viewport_layer_array = "GL_ARB_shader_viewport_layer_array";
const char* const E_GL_EXT_shader_non_constant_global_initializers = "GL_EXT_shader_non_constant_global_initializers";
const char* const E_GL_EXT_shader_image_load_formatted = "GL_EXT_shader_image_load_formatted";
@@ -135,6 +145,19 @@ const char* const E_GL_EXT_shader_image_load_formatted = "GL_EXT_shader_image_lo
// EXT extensions
const char* const E_GL_EXT_device_group = "GL_EXT_device_group";
const char* const E_GL_EXT_multiview = "GL_EXT_multiview";
+const char* const E_GL_EXT_post_depth_coverage = "GL_EXT_post_depth_coverage";
+
+// Arrays of extensions for the above viewportEXTs duplications
+
+const char* const post_depth_coverageEXTs[] = { E_GL_ARB_post_depth_coverage, E_GL_EXT_post_depth_coverage };
+const int Num_post_depth_coverageEXTs = sizeof(post_depth_coverageEXTs) / sizeof(post_depth_coverageEXTs[0]);
+
+// OVR extensions
+const char* const E_GL_OVR_multiview = "GL_OVR_multiview";
+const char* const E_GL_OVR_multiview2 = "GL_OVR_multiview2";
+
+const char* const OVR_multiview_EXTs[] = { E_GL_OVR_multiview, E_GL_OVR_multiview2 };
+const int Num_OVR_multiview_EXTs = sizeof(OVR_multiview_EXTs) / sizeof(OVR_multiview_EXTs[0]);
// #line and #include
const char* const E_GL_GOOGLE_cpp_style_line_directive = "GL_GOOGLE_cpp_style_line_directive";
@@ -146,15 +169,20 @@ const char* const E_GL_AMD_shader_trinary_minmax = "GL_AMD_shader
const char* const E_GL_AMD_shader_explicit_vertex_parameter = "GL_AMD_shader_explicit_vertex_parameter";
const char* const E_GL_AMD_gcn_shader = "GL_AMD_gcn_shader";
const char* const E_GL_AMD_gpu_shader_half_float = "GL_AMD_gpu_shader_half_float";
+const char* const E_GL_AMD_texture_gather_bias_lod = "GL_AMD_texture_gather_bias_lod";
+const char* const E_GL_AMD_gpu_shader_int16 = "GL_AMD_gpu_shader_int16";
+const char* const E_GL_AMD_shader_image_load_store_lod = "GL_AMD_shader_image_load_store_lod";
+const char* const E_GL_AMD_shader_fragment_mask = "GL_AMD_shader_fragment_mask";
#endif
+
#ifdef NV_EXTENSIONS
const char* const E_GL_NV_sample_mask_override_coverage = "GL_NV_sample_mask_override_coverage";
const char* const E_SPV_NV_geometry_shader_passthrough = "GL_NV_geometry_shader_passthrough";
-const char* const E_GL_ARB_shader_viewport_layer_array = "GL_ARB_shader_viewport_layer_array";
const char* const E_GL_NV_viewport_array2 = "GL_NV_viewport_array2";
const char* const E_GL_NV_stereo_view_rendering = "GL_NV_stereo_view_rendering";
const char* const E_GL_NVX_multiview_per_view_attributes = "GL_NVX_multiview_per_view_attributes";
+const char* const E_GL_NV_shader_atomic_int64 = "GL_NV_shader_atomic_int64";
// Arrays of extensions for the above viewportEXTs duplications
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/gl_types.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/gl_types.h
index d7cb31fe38a..ae00ae57ecf 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/gl_types.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/gl_types.h
@@ -21,6 +21,8 @@
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
+#pragma once
+
#define GL_FLOAT 0x1406
#define GL_FLOAT_VEC2 0x8B50
#define GL_FLOAT_VEC3 0x8B51
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang.y b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang.y
index f2512b82801..52358c7d209 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang.y
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang.y
@@ -63,6 +63,8 @@ using namespace glslang;
%}
+%define parse.error verbose
+
%union {
struct {
glslang::TSourceLoc loc;
@@ -119,7 +121,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
%expect 1 // One shift reduce conflict because of if | else
%token <lex> ATTRIBUTE VARYING
-%token <lex> CONST BOOL FLOAT DOUBLE INT UINT INT64_T UINT64_T FLOAT16_T
+%token <lex> CONST BOOL FLOAT DOUBLE INT UINT INT64_T UINT64_T INT16_T UINT16_T FLOAT16_T
%token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT SUBROUTINE
%token <lex> BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 I64VEC2 I64VEC3 I64VEC4 UVEC2 UVEC3 UVEC4 U64VEC2 U64VEC3 U64VEC4 VEC2 VEC3 VEC4
%token <lex> MAT2 MAT3 MAT4 CENTROID IN OUT INOUT
@@ -127,6 +129,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
%token <lex> COHERENT VOLATILE RESTRICT READONLY WRITEONLY
%token <lex> DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4
%token <lex> F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4
+%token <lex> I16VEC2 I16VEC3 I16VEC4 U16VEC2 U16VEC3 U16VEC4
%token <lex> NOPERSPECTIVE FLAT SMOOTH LAYOUT __EXPLICITINTERPAMD
%token <lex> MAT2X2 MAT2X3 MAT2X4
@@ -186,7 +189,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
%token <lex> STRUCT VOID WHILE
%token <lex> IDENTIFIER TYPE_NAME
-%token <lex> FLOATCONSTANT DOUBLECONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT BOOLCONSTANT FLOAT16CONSTANT
+%token <lex> FLOATCONSTANT DOUBLECONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT INT16CONSTANT UINT16CONSTANT BOOLCONSTANT FLOAT16CONSTANT
%token <lex> LEFT_OP RIGHT_OP
%token <lex> INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP
%token <lex> AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN
@@ -271,6 +274,18 @@ primary_expression
parseContext.int64Check($1.loc, "64-bit unsigned integer literal");
$$ = parseContext.intermediate.addConstantUnion($1.u64, $1.loc, true);
}
+ | INT16CONSTANT {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check($1.loc, "16-bit integer literal");
+ $$ = parseContext.intermediate.addConstantUnion((short)$1.i, $1.loc, true);
+#endif
+ }
+ | UINT16CONSTANT {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check($1.loc, "16-bit unsigned integer literal");
+ $$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true);
+#endif
+ }
| FLOATCONSTANT {
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true);
}
@@ -845,6 +860,11 @@ function_header
// Add the function as a prototype after parsing it (we do not support recursion)
TFunction *function;
TType type($1);
+
+ // Potentially rename shader entry point function. No-op most of the time.
+ parseContext.renameShaderFunction($2.string);
+
+ // Make the function
function = new TFunction($2.string, type);
$$ = function;
}
@@ -1229,6 +1249,7 @@ storage_qualifier
$$.qualifier.storage = EvqBuffer;
}
| SHARED {
+ parseContext.globalCheck($1.loc, "shared");
parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared");
parseContext.requireStage($1.loc, EShLangCompute, "shared");
@@ -1258,25 +1279,25 @@ storage_qualifier
| SUBROUTINE {
parseContext.spvRemoved($1.loc, "subroutine");
parseContext.globalCheck($1.loc, "subroutine");
+ parseContext.unimplemented($1.loc, "subroutine");
$$.init($1.loc);
- $$.qualifier.storage = EvqUniform;
}
| SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN {
parseContext.spvRemoved($1.loc, "subroutine");
parseContext.globalCheck($1.loc, "subroutine");
+ parseContext.unimplemented($1.loc, "subroutine");
$$.init($1.loc);
- $$.qualifier.storage = EvqUniform;
- // TODO: 4.0 semantics: subroutines
- // 1) make sure each identifier is a type declared earlier with SUBROUTINE
- // 2) save all of the identifiers for future comparison with the declared function
}
;
type_name_list
- : TYPE_NAME {
- // TODO: 4.0 functionality: subroutine type to list
+ : IDENTIFIER {
+ // TODO
}
- | type_name_list COMMA TYPE_NAME {
+ | type_name_list COMMA IDENTIFIER {
+ // TODO: 4.0 semantics: subroutines
+ // 1) make sure each identifier is a type declared earlier with SUBROUTINE
+ // 2) save all of the identifiers for future comparison with the declared function
}
;
@@ -1360,6 +1381,20 @@ type_specifier_nonarray
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint64;
}
+ | INT16_T {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check($1.loc, "16-bit integer", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt16;
+#endif
+ }
+ | UINT16_T {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint16;
+#endif
+ }
| BOOL {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtBool;
@@ -1469,6 +1504,30 @@ type_specifier_nonarray
$$.basicType = EbtInt64;
$$.setVector(4);
}
+ | I16VEC2 {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check($1.loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt16;
+ $$.setVector(2);
+#endif
+ }
+ | I16VEC3 {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check($1.loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt16;
+ $$.setVector(3);
+#endif
+ }
+ | I16VEC4 {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check($1.loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt16;
+ $$.setVector(4);
+#endif
+ }
| UVEC2 {
parseContext.fullIntegerCheck($1.loc, "unsigned integer vector");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -1505,6 +1564,30 @@ type_specifier_nonarray
$$.basicType = EbtUint64;
$$.setVector(4);
}
+ | U16VEC2 {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint16;
+ $$.setVector(2);
+#endif
+ }
+ | U16VEC3 {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint16;
+ $$.setVector(3);
+#endif
+ }
+ | U16VEC4 {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint16;
+ $$.setVector(4);
+#endif
+ }
| MAT2 {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
@@ -2775,7 +2858,7 @@ jump_statement
if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
parseContext.error($1.loc, "non-void function must return a value", "return", "");
if (parseContext.inMain)
- parseContext.postMainReturn = true;
+ parseContext.postEntryPointReturn = true;
}
| RETURN expression SEMICOLON {
$$ = parseContext.handleReturnValue($1.loc, $2);
@@ -2794,8 +2877,10 @@ translation_unit
parseContext.intermediate.setTreeRoot($$);
}
| translation_unit external_declaration {
- $$ = parseContext.intermediate.growAggregate($1, $2);
- parseContext.intermediate.setTreeRoot($$);
+ if ($2 != nullptr) {
+ $$ = parseContext.intermediate.growAggregate($1, $2);
+ parseContext.intermediate.setTreeRoot($$);
+ }
}
;
@@ -2806,6 +2891,11 @@ external_declaration
| declaration {
$$ = $1;
}
+ | SEMICOLON {
+ parseContext.requireProfile($1.loc, ~EEsProfile, "extraneous semicolon");
+ parseContext.profileRequires($1.loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
+ $$ = nullptr;
+ }
;
function_definition
@@ -2826,7 +2916,7 @@ function_definition
// information. This information can be queried from the parse tree
$$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
$$->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
- $$->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable);
+ $$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
}
;
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp
index 3507c04e625..72415681bd2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 2.7. */
+/* A Bison parser, made by GNU Bison 3.0. */
/* Bison implementation for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
-
+
+ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
@@ -26,7 +26,7 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.7"
+#define YYBISON_VERSION "3.0"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -62,8 +62,7 @@
/* Copy the first part of user declarations. */
-/* Line 371 of yacc.c */
-#line 41 "glslang.y"
+#line 41 "MachineIndependent/glslang.y" /* yacc.c:339 */
/* Based on:
@@ -88,8 +87,7 @@ Jutta Degener, 1995
using namespace glslang;
-/* Line 371 of yacc.c */
-#line 93 "glslang_tab.cpp"
+#line 91 "MachineIndependent/glslang_tab.cpp" /* yacc.c:339 */
# ifndef YY_NULL
# if defined __cplusplus && 201103L <= __cplusplus
@@ -104,14 +102,14 @@ using namespace glslang;
# undef YYERROR_VERBOSE
# define YYERROR_VERBOSE 1
#else
-# define YYERROR_VERBOSE 0
+# define YYERROR_VERBOSE 1
#endif
/* In a future release of Bison, this section will be replaced
by #include "glslang_tab.cpp.h". */
-#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
-# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
-/* Enabling traces. */
+#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
+# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
+/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 1
#endif
@@ -119,306 +117,315 @@ using namespace glslang;
extern int yydebug;
#endif
-/* Tokens. */
+/* Token type. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- ATTRIBUTE = 258,
- VARYING = 259,
- CONST = 260,
- BOOL = 261,
- FLOAT = 262,
- DOUBLE = 263,
- INT = 264,
- UINT = 265,
- INT64_T = 266,
- UINT64_T = 267,
- FLOAT16_T = 268,
- BREAK = 269,
- CONTINUE = 270,
- DO = 271,
- ELSE = 272,
- FOR = 273,
- IF = 274,
- DISCARD = 275,
- RETURN = 276,
- SWITCH = 277,
- CASE = 278,
- DEFAULT = 279,
- SUBROUTINE = 280,
- BVEC2 = 281,
- BVEC3 = 282,
- BVEC4 = 283,
- IVEC2 = 284,
- IVEC3 = 285,
- IVEC4 = 286,
- I64VEC2 = 287,
- I64VEC3 = 288,
- I64VEC4 = 289,
- UVEC2 = 290,
- UVEC3 = 291,
- UVEC4 = 292,
- U64VEC2 = 293,
- U64VEC3 = 294,
- U64VEC4 = 295,
- VEC2 = 296,
- VEC3 = 297,
- VEC4 = 298,
- MAT2 = 299,
- MAT3 = 300,
- MAT4 = 301,
- CENTROID = 302,
- IN = 303,
- OUT = 304,
- INOUT = 305,
- UNIFORM = 306,
- PATCH = 307,
- SAMPLE = 308,
- BUFFER = 309,
- SHARED = 310,
- COHERENT = 311,
- VOLATILE = 312,
- RESTRICT = 313,
- READONLY = 314,
- WRITEONLY = 315,
- DVEC2 = 316,
- DVEC3 = 317,
- DVEC4 = 318,
- DMAT2 = 319,
- DMAT3 = 320,
- DMAT4 = 321,
- F16VEC2 = 322,
- F16VEC3 = 323,
- F16VEC4 = 324,
- F16MAT2 = 325,
- F16MAT3 = 326,
- F16MAT4 = 327,
- NOPERSPECTIVE = 328,
- FLAT = 329,
- SMOOTH = 330,
- LAYOUT = 331,
- __EXPLICITINTERPAMD = 332,
- MAT2X2 = 333,
- MAT2X3 = 334,
- MAT2X4 = 335,
- MAT3X2 = 336,
- MAT3X3 = 337,
- MAT3X4 = 338,
- MAT4X2 = 339,
- MAT4X3 = 340,
- MAT4X4 = 341,
- DMAT2X2 = 342,
- DMAT2X3 = 343,
- DMAT2X4 = 344,
- DMAT3X2 = 345,
- DMAT3X3 = 346,
- DMAT3X4 = 347,
- DMAT4X2 = 348,
- DMAT4X3 = 349,
- DMAT4X4 = 350,
- F16MAT2X2 = 351,
- F16MAT2X3 = 352,
- F16MAT2X4 = 353,
- F16MAT3X2 = 354,
- F16MAT3X3 = 355,
- F16MAT3X4 = 356,
- F16MAT4X2 = 357,
- F16MAT4X3 = 358,
- F16MAT4X4 = 359,
- ATOMIC_UINT = 360,
- SAMPLER1D = 361,
- SAMPLER2D = 362,
- SAMPLER3D = 363,
- SAMPLERCUBE = 364,
- SAMPLER1DSHADOW = 365,
- SAMPLER2DSHADOW = 366,
- SAMPLERCUBESHADOW = 367,
- SAMPLER1DARRAY = 368,
- SAMPLER2DARRAY = 369,
- SAMPLER1DARRAYSHADOW = 370,
- SAMPLER2DARRAYSHADOW = 371,
- ISAMPLER1D = 372,
- ISAMPLER2D = 373,
- ISAMPLER3D = 374,
- ISAMPLERCUBE = 375,
- ISAMPLER1DARRAY = 376,
- ISAMPLER2DARRAY = 377,
- USAMPLER1D = 378,
- USAMPLER2D = 379,
- USAMPLER3D = 380,
- USAMPLERCUBE = 381,
- USAMPLER1DARRAY = 382,
- USAMPLER2DARRAY = 383,
- SAMPLER2DRECT = 384,
- SAMPLER2DRECTSHADOW = 385,
- ISAMPLER2DRECT = 386,
- USAMPLER2DRECT = 387,
- SAMPLERBUFFER = 388,
- ISAMPLERBUFFER = 389,
- USAMPLERBUFFER = 390,
- SAMPLERCUBEARRAY = 391,
- SAMPLERCUBEARRAYSHADOW = 392,
- ISAMPLERCUBEARRAY = 393,
- USAMPLERCUBEARRAY = 394,
- SAMPLER2DMS = 395,
- ISAMPLER2DMS = 396,
- USAMPLER2DMS = 397,
- SAMPLER2DMSARRAY = 398,
- ISAMPLER2DMSARRAY = 399,
- USAMPLER2DMSARRAY = 400,
- SAMPLEREXTERNALOES = 401,
- SAMPLER = 402,
- SAMPLERSHADOW = 403,
- TEXTURE1D = 404,
- TEXTURE2D = 405,
- TEXTURE3D = 406,
- TEXTURECUBE = 407,
- TEXTURE1DARRAY = 408,
- TEXTURE2DARRAY = 409,
- ITEXTURE1D = 410,
- ITEXTURE2D = 411,
- ITEXTURE3D = 412,
- ITEXTURECUBE = 413,
- ITEXTURE1DARRAY = 414,
- ITEXTURE2DARRAY = 415,
- UTEXTURE1D = 416,
- UTEXTURE2D = 417,
- UTEXTURE3D = 418,
- UTEXTURECUBE = 419,
- UTEXTURE1DARRAY = 420,
- UTEXTURE2DARRAY = 421,
- TEXTURE2DRECT = 422,
- ITEXTURE2DRECT = 423,
- UTEXTURE2DRECT = 424,
- TEXTUREBUFFER = 425,
- ITEXTUREBUFFER = 426,
- UTEXTUREBUFFER = 427,
- TEXTURECUBEARRAY = 428,
- ITEXTURECUBEARRAY = 429,
- UTEXTURECUBEARRAY = 430,
- TEXTURE2DMS = 431,
- ITEXTURE2DMS = 432,
- UTEXTURE2DMS = 433,
- TEXTURE2DMSARRAY = 434,
- ITEXTURE2DMSARRAY = 435,
- UTEXTURE2DMSARRAY = 436,
- SUBPASSINPUT = 437,
- SUBPASSINPUTMS = 438,
- ISUBPASSINPUT = 439,
- ISUBPASSINPUTMS = 440,
- USUBPASSINPUT = 441,
- USUBPASSINPUTMS = 442,
- IMAGE1D = 443,
- IIMAGE1D = 444,
- UIMAGE1D = 445,
- IMAGE2D = 446,
- IIMAGE2D = 447,
- UIMAGE2D = 448,
- IMAGE3D = 449,
- IIMAGE3D = 450,
- UIMAGE3D = 451,
- IMAGE2DRECT = 452,
- IIMAGE2DRECT = 453,
- UIMAGE2DRECT = 454,
- IMAGECUBE = 455,
- IIMAGECUBE = 456,
- UIMAGECUBE = 457,
- IMAGEBUFFER = 458,
- IIMAGEBUFFER = 459,
- UIMAGEBUFFER = 460,
- IMAGE1DARRAY = 461,
- IIMAGE1DARRAY = 462,
- UIMAGE1DARRAY = 463,
- IMAGE2DARRAY = 464,
- IIMAGE2DARRAY = 465,
- UIMAGE2DARRAY = 466,
- IMAGECUBEARRAY = 467,
- IIMAGECUBEARRAY = 468,
- UIMAGECUBEARRAY = 469,
- IMAGE2DMS = 470,
- IIMAGE2DMS = 471,
- UIMAGE2DMS = 472,
- IMAGE2DMSARRAY = 473,
- IIMAGE2DMSARRAY = 474,
- UIMAGE2DMSARRAY = 475,
- STRUCT = 476,
- VOID = 477,
- WHILE = 478,
- IDENTIFIER = 479,
- TYPE_NAME = 480,
- FLOATCONSTANT = 481,
- DOUBLECONSTANT = 482,
- INTCONSTANT = 483,
- UINTCONSTANT = 484,
- INT64CONSTANT = 485,
- UINT64CONSTANT = 486,
- BOOLCONSTANT = 487,
- FLOAT16CONSTANT = 488,
- LEFT_OP = 489,
- RIGHT_OP = 490,
- INC_OP = 491,
- DEC_OP = 492,
- LE_OP = 493,
- GE_OP = 494,
- EQ_OP = 495,
- NE_OP = 496,
- AND_OP = 497,
- OR_OP = 498,
- XOR_OP = 499,
- MUL_ASSIGN = 500,
- DIV_ASSIGN = 501,
- ADD_ASSIGN = 502,
- MOD_ASSIGN = 503,
- LEFT_ASSIGN = 504,
- RIGHT_ASSIGN = 505,
- AND_ASSIGN = 506,
- XOR_ASSIGN = 507,
- OR_ASSIGN = 508,
- SUB_ASSIGN = 509,
- LEFT_PAREN = 510,
- RIGHT_PAREN = 511,
- LEFT_BRACKET = 512,
- RIGHT_BRACKET = 513,
- LEFT_BRACE = 514,
- RIGHT_BRACE = 515,
- DOT = 516,
- COMMA = 517,
- COLON = 518,
- EQUAL = 519,
- SEMICOLON = 520,
- BANG = 521,
- DASH = 522,
- TILDE = 523,
- PLUS = 524,
- STAR = 525,
- SLASH = 526,
- PERCENT = 527,
- LEFT_ANGLE = 528,
- RIGHT_ANGLE = 529,
- VERTICAL_BAR = 530,
- CARET = 531,
- AMPERSAND = 532,
- QUESTION = 533,
- INVARIANT = 534,
- PRECISE = 535,
- HIGH_PRECISION = 536,
- MEDIUM_PRECISION = 537,
- LOW_PRECISION = 538,
- PRECISION = 539,
- PACKED = 540,
- RESOURCE = 541,
- SUPERP = 542
- };
+ enum yytokentype
+ {
+ ATTRIBUTE = 258,
+ VARYING = 259,
+ CONST = 260,
+ BOOL = 261,
+ FLOAT = 262,
+ DOUBLE = 263,
+ INT = 264,
+ UINT = 265,
+ INT64_T = 266,
+ UINT64_T = 267,
+ INT16_T = 268,
+ UINT16_T = 269,
+ FLOAT16_T = 270,
+ BREAK = 271,
+ CONTINUE = 272,
+ DO = 273,
+ ELSE = 274,
+ FOR = 275,
+ IF = 276,
+ DISCARD = 277,
+ RETURN = 278,
+ SWITCH = 279,
+ CASE = 280,
+ DEFAULT = 281,
+ SUBROUTINE = 282,
+ BVEC2 = 283,
+ BVEC3 = 284,
+ BVEC4 = 285,
+ IVEC2 = 286,
+ IVEC3 = 287,
+ IVEC4 = 288,
+ I64VEC2 = 289,
+ I64VEC3 = 290,
+ I64VEC4 = 291,
+ UVEC2 = 292,
+ UVEC3 = 293,
+ UVEC4 = 294,
+ U64VEC2 = 295,
+ U64VEC3 = 296,
+ U64VEC4 = 297,
+ VEC2 = 298,
+ VEC3 = 299,
+ VEC4 = 300,
+ MAT2 = 301,
+ MAT3 = 302,
+ MAT4 = 303,
+ CENTROID = 304,
+ IN = 305,
+ OUT = 306,
+ INOUT = 307,
+ UNIFORM = 308,
+ PATCH = 309,
+ SAMPLE = 310,
+ BUFFER = 311,
+ SHARED = 312,
+ COHERENT = 313,
+ VOLATILE = 314,
+ RESTRICT = 315,
+ READONLY = 316,
+ WRITEONLY = 317,
+ DVEC2 = 318,
+ DVEC3 = 319,
+ DVEC4 = 320,
+ DMAT2 = 321,
+ DMAT3 = 322,
+ DMAT4 = 323,
+ F16VEC2 = 324,
+ F16VEC3 = 325,
+ F16VEC4 = 326,
+ F16MAT2 = 327,
+ F16MAT3 = 328,
+ F16MAT4 = 329,
+ I16VEC2 = 330,
+ I16VEC3 = 331,
+ I16VEC4 = 332,
+ U16VEC2 = 333,
+ U16VEC3 = 334,
+ U16VEC4 = 335,
+ NOPERSPECTIVE = 336,
+ FLAT = 337,
+ SMOOTH = 338,
+ LAYOUT = 339,
+ __EXPLICITINTERPAMD = 340,
+ MAT2X2 = 341,
+ MAT2X3 = 342,
+ MAT2X4 = 343,
+ MAT3X2 = 344,
+ MAT3X3 = 345,
+ MAT3X4 = 346,
+ MAT4X2 = 347,
+ MAT4X3 = 348,
+ MAT4X4 = 349,
+ DMAT2X2 = 350,
+ DMAT2X3 = 351,
+ DMAT2X4 = 352,
+ DMAT3X2 = 353,
+ DMAT3X3 = 354,
+ DMAT3X4 = 355,
+ DMAT4X2 = 356,
+ DMAT4X3 = 357,
+ DMAT4X4 = 358,
+ F16MAT2X2 = 359,
+ F16MAT2X3 = 360,
+ F16MAT2X4 = 361,
+ F16MAT3X2 = 362,
+ F16MAT3X3 = 363,
+ F16MAT3X4 = 364,
+ F16MAT4X2 = 365,
+ F16MAT4X3 = 366,
+ F16MAT4X4 = 367,
+ ATOMIC_UINT = 368,
+ SAMPLER1D = 369,
+ SAMPLER2D = 370,
+ SAMPLER3D = 371,
+ SAMPLERCUBE = 372,
+ SAMPLER1DSHADOW = 373,
+ SAMPLER2DSHADOW = 374,
+ SAMPLERCUBESHADOW = 375,
+ SAMPLER1DARRAY = 376,
+ SAMPLER2DARRAY = 377,
+ SAMPLER1DARRAYSHADOW = 378,
+ SAMPLER2DARRAYSHADOW = 379,
+ ISAMPLER1D = 380,
+ ISAMPLER2D = 381,
+ ISAMPLER3D = 382,
+ ISAMPLERCUBE = 383,
+ ISAMPLER1DARRAY = 384,
+ ISAMPLER2DARRAY = 385,
+ USAMPLER1D = 386,
+ USAMPLER2D = 387,
+ USAMPLER3D = 388,
+ USAMPLERCUBE = 389,
+ USAMPLER1DARRAY = 390,
+ USAMPLER2DARRAY = 391,
+ SAMPLER2DRECT = 392,
+ SAMPLER2DRECTSHADOW = 393,
+ ISAMPLER2DRECT = 394,
+ USAMPLER2DRECT = 395,
+ SAMPLERBUFFER = 396,
+ ISAMPLERBUFFER = 397,
+ USAMPLERBUFFER = 398,
+ SAMPLERCUBEARRAY = 399,
+ SAMPLERCUBEARRAYSHADOW = 400,
+ ISAMPLERCUBEARRAY = 401,
+ USAMPLERCUBEARRAY = 402,
+ SAMPLER2DMS = 403,
+ ISAMPLER2DMS = 404,
+ USAMPLER2DMS = 405,
+ SAMPLER2DMSARRAY = 406,
+ ISAMPLER2DMSARRAY = 407,
+ USAMPLER2DMSARRAY = 408,
+ SAMPLEREXTERNALOES = 409,
+ SAMPLER = 410,
+ SAMPLERSHADOW = 411,
+ TEXTURE1D = 412,
+ TEXTURE2D = 413,
+ TEXTURE3D = 414,
+ TEXTURECUBE = 415,
+ TEXTURE1DARRAY = 416,
+ TEXTURE2DARRAY = 417,
+ ITEXTURE1D = 418,
+ ITEXTURE2D = 419,
+ ITEXTURE3D = 420,
+ ITEXTURECUBE = 421,
+ ITEXTURE1DARRAY = 422,
+ ITEXTURE2DARRAY = 423,
+ UTEXTURE1D = 424,
+ UTEXTURE2D = 425,
+ UTEXTURE3D = 426,
+ UTEXTURECUBE = 427,
+ UTEXTURE1DARRAY = 428,
+ UTEXTURE2DARRAY = 429,
+ TEXTURE2DRECT = 430,
+ ITEXTURE2DRECT = 431,
+ UTEXTURE2DRECT = 432,
+ TEXTUREBUFFER = 433,
+ ITEXTUREBUFFER = 434,
+ UTEXTUREBUFFER = 435,
+ TEXTURECUBEARRAY = 436,
+ ITEXTURECUBEARRAY = 437,
+ UTEXTURECUBEARRAY = 438,
+ TEXTURE2DMS = 439,
+ ITEXTURE2DMS = 440,
+ UTEXTURE2DMS = 441,
+ TEXTURE2DMSARRAY = 442,
+ ITEXTURE2DMSARRAY = 443,
+ UTEXTURE2DMSARRAY = 444,
+ SUBPASSINPUT = 445,
+ SUBPASSINPUTMS = 446,
+ ISUBPASSINPUT = 447,
+ ISUBPASSINPUTMS = 448,
+ USUBPASSINPUT = 449,
+ USUBPASSINPUTMS = 450,
+ IMAGE1D = 451,
+ IIMAGE1D = 452,
+ UIMAGE1D = 453,
+ IMAGE2D = 454,
+ IIMAGE2D = 455,
+ UIMAGE2D = 456,
+ IMAGE3D = 457,
+ IIMAGE3D = 458,
+ UIMAGE3D = 459,
+ IMAGE2DRECT = 460,
+ IIMAGE2DRECT = 461,
+ UIMAGE2DRECT = 462,
+ IMAGECUBE = 463,
+ IIMAGECUBE = 464,
+ UIMAGECUBE = 465,
+ IMAGEBUFFER = 466,
+ IIMAGEBUFFER = 467,
+ UIMAGEBUFFER = 468,
+ IMAGE1DARRAY = 469,
+ IIMAGE1DARRAY = 470,
+ UIMAGE1DARRAY = 471,
+ IMAGE2DARRAY = 472,
+ IIMAGE2DARRAY = 473,
+ UIMAGE2DARRAY = 474,
+ IMAGECUBEARRAY = 475,
+ IIMAGECUBEARRAY = 476,
+ UIMAGECUBEARRAY = 477,
+ IMAGE2DMS = 478,
+ IIMAGE2DMS = 479,
+ UIMAGE2DMS = 480,
+ IMAGE2DMSARRAY = 481,
+ IIMAGE2DMSARRAY = 482,
+ UIMAGE2DMSARRAY = 483,
+ STRUCT = 484,
+ VOID = 485,
+ WHILE = 486,
+ IDENTIFIER = 487,
+ TYPE_NAME = 488,
+ FLOATCONSTANT = 489,
+ DOUBLECONSTANT = 490,
+ INTCONSTANT = 491,
+ UINTCONSTANT = 492,
+ INT64CONSTANT = 493,
+ UINT64CONSTANT = 494,
+ INT16CONSTANT = 495,
+ UINT16CONSTANT = 496,
+ BOOLCONSTANT = 497,
+ FLOAT16CONSTANT = 498,
+ LEFT_OP = 499,
+ RIGHT_OP = 500,
+ INC_OP = 501,
+ DEC_OP = 502,
+ LE_OP = 503,
+ GE_OP = 504,
+ EQ_OP = 505,
+ NE_OP = 506,
+ AND_OP = 507,
+ OR_OP = 508,
+ XOR_OP = 509,
+ MUL_ASSIGN = 510,
+ DIV_ASSIGN = 511,
+ ADD_ASSIGN = 512,
+ MOD_ASSIGN = 513,
+ LEFT_ASSIGN = 514,
+ RIGHT_ASSIGN = 515,
+ AND_ASSIGN = 516,
+ XOR_ASSIGN = 517,
+ OR_ASSIGN = 518,
+ SUB_ASSIGN = 519,
+ LEFT_PAREN = 520,
+ RIGHT_PAREN = 521,
+ LEFT_BRACKET = 522,
+ RIGHT_BRACKET = 523,
+ LEFT_BRACE = 524,
+ RIGHT_BRACE = 525,
+ DOT = 526,
+ COMMA = 527,
+ COLON = 528,
+ EQUAL = 529,
+ SEMICOLON = 530,
+ BANG = 531,
+ DASH = 532,
+ TILDE = 533,
+ PLUS = 534,
+ STAR = 535,
+ SLASH = 536,
+ PERCENT = 537,
+ LEFT_ANGLE = 538,
+ RIGHT_ANGLE = 539,
+ VERTICAL_BAR = 540,
+ CARET = 541,
+ AMPERSAND = 542,
+ QUESTION = 543,
+ INVARIANT = 544,
+ PRECISE = 545,
+ HIGH_PRECISION = 546,
+ MEDIUM_PRECISION = 547,
+ LOW_PRECISION = 548,
+ PRECISION = 549,
+ PACKED = 550,
+ RESOURCE = 551,
+ SUPERP = 552
+ };
#endif
-
+/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+typedef union YYSTYPE YYSTYPE;
+union YYSTYPE
{
-/* Line 387 of yacc.c */
-#line 66 "glslang.y"
+#line 68 "MachineIndependent/glslang.y" /* yacc.c:355 */
struct {
glslang::TSourceLoc loc;
@@ -452,35 +459,20 @@ typedef union YYSTYPE
};
} interm;
-
-/* Line 387 of yacc.c */
-#line 458 "glslang_tab.cpp"
-} YYSTYPE;
+#line 463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */
+};
# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
+
int yyparse (glslang::TParseContext* pParseContext);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */
+#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */
/* Copy the second part of user declarations. */
-/* Line 390 of yacc.c */
-#line 100 "glslang.y"
+#line 102 "MachineIndependent/glslang.y" /* yacc.c:358 */
/* windows only pragma */
@@ -496,8 +488,7 @@ int yyparse ();
extern int yylex(YYSTYPE*, TParseContext&);
-/* Line 390 of yacc.c */
-#line 501 "glslang_tab.cpp"
+#line 492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */
#ifdef short
# undef short
@@ -511,11 +502,8 @@ typedef unsigned char yytype_uint8;
#ifdef YYTYPE_INT8
typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
#else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
#endif
#ifdef YYTYPE_UINT16
@@ -535,8 +523,7 @@ typedef short int yytype_int16;
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# elif ! defined YYSIZE_T
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
@@ -558,6 +545,14 @@ typedef short int yytype_int16;
# endif
#endif
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later. */
+# if (! defined __GNUC__ || __GNUC__ < 2 \
+ || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
+# define __attribute__(Spec) /* empty */
+# endif
+#endif
+
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
# define YYUSE(E) ((void) (E))
@@ -565,24 +560,26 @@ typedef short int yytype_int16;
# define YYUSE(E) /* empty */
#endif
-/* Identity function, used to suppress warnings about constant conditions. */
-#ifndef lint
-# define YYID(N) (N)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized. */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+ _Pragma ("GCC diagnostic pop")
#else
-static int
-YYID (yyi)
- int yyi;
+# define YY_INITIAL_VALUE(Value) Value
#endif
-{
- return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
+
#if ! defined yyoverflow || YYERROR_VERBOSE
/* The parser invokes alloca or malloc; define the necessary symbols. */
@@ -600,8 +597,7 @@ YYID (yyi)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
/* Use EXIT_SUCCESS as a witness for stdlib.h. */
# ifndef EXIT_SUCCESS
@@ -613,8 +609,8 @@ YYID (yyi)
# endif
# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+ /* Pacify GCC's 'empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
# ifndef YYSTACK_ALLOC_MAXIMUM
/* The OS might guarantee only one guard page at the bottom of the stack,
and a page size can be as small as 4096 bytes. So we cannot safely
@@ -630,7 +626,7 @@ YYID (yyi)
# endif
# if (defined __cplusplus && ! defined EXIT_SUCCESS \
&& ! ((defined YYMALLOC || defined malloc) \
- && (defined YYFREE || defined free)))
+ && (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
# ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
@@ -638,15 +634,13 @@ YYID (yyi)
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if ! defined malloc && ! defined EXIT_SUCCESS
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if ! defined free && ! defined EXIT_SUCCESS
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
@@ -656,7 +650,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
#if (! defined yyoverflow \
&& (! defined __cplusplus \
- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
@@ -681,16 +675,16 @@ union yyalloc
elements in the stack, and YYPTR gives the new location of the
stack. Advance YYPTR to a properly aligned location for the next
stack. */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
- Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
#endif
@@ -709,33 +703,35 @@ union yyalloc
for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \
} \
- while (YYID (0))
+ while (0)
# endif
# endif
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 265
+#define YYFINAL 274
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 6373
+#define YYLAST 6614
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 288
+#define YYNTOKENS 298
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 100
/* YYNRULES -- Number of rules. */
-#define YYNRULES 439
-/* YYNRULES -- Number of states. */
-#define YYNSTATES 571
+#define YYNRULES 450
+/* YYNSTATES -- Number of states. */
+#define YYNSTATES 582
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+ by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 542
+#define YYMAXUTOK 552
-#define YYTRANSLATE(YYX) \
+#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, without out-of-bounds checking. */
static const yytype_uint16 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -792,259 +788,98 @@ static const yytype_uint16 yytranslate[] =
255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297
};
#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
- YYRHS. */
-static const yytype_uint16 yyprhs[] =
-{
- 0, 0, 3, 5, 7, 9, 11, 13, 15, 17,
- 19, 21, 23, 27, 29, 34, 36, 40, 43, 46,
- 48, 50, 52, 55, 58, 61, 63, 66, 70, 73,
- 75, 77, 79, 82, 85, 88, 90, 92, 94, 96,
- 98, 102, 106, 110, 112, 116, 120, 122, 126, 130,
- 132, 136, 140, 144, 148, 150, 154, 158, 160, 164,
- 166, 170, 172, 176, 178, 182, 184, 188, 190, 194,
- 196, 197, 204, 206, 210, 212, 214, 216, 218, 220,
- 222, 224, 226, 228, 230, 232, 234, 238, 240, 243,
- 246, 251, 254, 258, 263, 266, 270, 275, 276, 283,
- 286, 290, 293, 295, 297, 300, 304, 308, 311, 315,
- 318, 320, 323, 325, 327, 329, 333, 338, 345, 351,
- 353, 356, 360, 366, 371, 373, 376, 378, 380, 382,
- 384, 386, 391, 393, 397, 399, 403, 405, 407, 409,
- 412, 414, 416, 418, 420, 422, 424, 426, 428, 430,
- 432, 434, 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 458, 460, 465, 467, 471, 473, 476,
- 479, 483, 487, 492, 494, 496, 498, 500, 502, 504,
- 506, 508, 510, 512, 514, 516, 518, 520, 522, 524,
- 526, 528, 530, 532, 534, 536, 538, 540, 542, 544,
- 546, 548, 550, 552, 554, 556, 558, 560, 562, 564,
- 566, 568, 570, 572, 574, 576, 578, 580, 582, 584,
- 586, 588, 590, 592, 594, 596, 598, 600, 602, 604,
- 606, 608, 610, 612, 614, 616, 618, 620, 622, 624,
- 626, 628, 630, 632, 634, 636, 638, 640, 642, 644,
- 646, 648, 650, 652, 654, 656, 658, 660, 662, 664,
- 666, 668, 670, 672, 674, 676, 678, 680, 682, 684,
- 686, 688, 690, 692, 694, 696, 698, 700, 702, 704,
- 706, 708, 710, 712, 714, 716, 718, 720, 722, 724,
- 726, 728, 730, 732, 734, 736, 738, 740, 742, 744,
- 746, 748, 750, 752, 754, 756, 758, 760, 762, 764,
- 766, 768, 770, 772, 774, 776, 778, 780, 782, 784,
- 786, 788, 790, 792, 794, 796, 798, 800, 802, 804,
- 806, 808, 810, 812, 814, 816, 818, 820, 822, 824,
- 826, 828, 830, 832, 834, 836, 838, 840, 842, 844,
- 846, 848, 850, 852, 854, 856, 858, 860, 862, 864,
- 866, 868, 870, 872, 873, 880, 881, 887, 889, 892,
- 896, 901, 903, 907, 909, 912, 914, 918, 923, 925,
- 929, 931, 933, 935, 937, 939, 941, 943, 945, 947,
- 949, 952, 953, 954, 960, 962, 964, 965, 968, 969,
- 972, 975, 979, 981, 984, 986, 989, 995, 999, 1001,
- 1003, 1008, 1009, 1018, 1019, 1021, 1025, 1028, 1029, 1036,
- 1037, 1046, 1047, 1055, 1057, 1059, 1061, 1062, 1065, 1069,
- 1072, 1075, 1078, 1082, 1085, 1087, 1090, 1092, 1094, 1095
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const yytype_int16 yyrhs[] =
-{
- 384, 0, -1, 224, -1, 289, -1, 228, -1, 229,
- -1, 230, -1, 231, -1, 226, -1, 227, -1, 233,
- -1, 232, -1, 255, 317, 256, -1, 290, -1, 291,
- 257, 292, 258, -1, 293, -1, 291, 261, 224, -1,
- 291, 236, -1, 291, 237, -1, 317, -1, 294, -1,
- 295, -1, 297, 256, -1, 296, 256, -1, 298, 222,
- -1, 298, -1, 298, 315, -1, 297, 262, 315, -1,
- 299, 255, -1, 343, -1, 291, -1, 291, -1, 236,
- 300, -1, 237, 300, -1, 301, 300, -1, 269, -1,
- 267, -1, 266, -1, 268, -1, 300, -1, 302, 270,
- 300, -1, 302, 271, 300, -1, 302, 272, 300, -1,
- 302, -1, 303, 269, 302, -1, 303, 267, 302, -1,
- 303, -1, 304, 234, 303, -1, 304, 235, 303, -1,
- 304, -1, 305, 273, 304, -1, 305, 274, 304, -1,
- 305, 238, 304, -1, 305, 239, 304, -1, 305, -1,
- 306, 240, 305, -1, 306, 241, 305, -1, 306, -1,
- 307, 277, 306, -1, 307, -1, 308, 276, 307, -1,
- 308, -1, 309, 275, 308, -1, 309, -1, 310, 242,
- 309, -1, 310, -1, 311, 244, 310, -1, 311, -1,
- 312, 243, 311, -1, 312, -1, -1, 312, 278, 314,
- 317, 263, 315, -1, 313, -1, 300, 316, 315, -1,
- 264, -1, 245, -1, 246, -1, 248, -1, 247, -1,
- 254, -1, 249, -1, 250, -1, 251, -1, 252, -1,
- 253, -1, 315, -1, 317, 262, 315, -1, 313, -1,
- 323, 265, -1, 330, 265, -1, 284, 346, 343, 265,
- -1, 320, 265, -1, 320, 224, 265, -1, 320, 224,
- 344, 265, -1, 339, 265, -1, 339, 224, 265, -1,
- 339, 224, 322, 265, -1, -1, 339, 224, 259, 321,
- 350, 260, -1, 262, 224, -1, 322, 262, 224, -1,
- 324, 256, -1, 326, -1, 325, -1, 326, 328, -1,
- 325, 262, 328, -1, 332, 224, 255, -1, 343, 224,
- -1, 343, 224, 344, -1, 339, 327, -1, 327, -1,
- 339, 329, -1, 329, -1, 343, -1, 331, -1, 330,
- 262, 224, -1, 330, 262, 224, 344, -1, 330, 262,
- 224, 344, 264, 354, -1, 330, 262, 224, 264, 354,
- -1, 332, -1, 332, 224, -1, 332, 224, 344, -1,
- 332, 224, 344, 264, 354, -1, 332, 224, 264, 354,
- -1, 343, -1, 339, 343, -1, 279, -1, 75, -1,
- 74, -1, 73, -1, 77, -1, 76, 255, 336, 256,
- -1, 337, -1, 336, 262, 337, -1, 224, -1, 224,
- 264, 318, -1, 55, -1, 280, -1, 340, -1, 339,
- 340, -1, 341, -1, 335, -1, 346, -1, 334, -1,
- 333, -1, 338, -1, 5, -1, 3, -1, 4, -1,
- 50, -1, 48, -1, 49, -1, 47, -1, 52, -1,
- 53, -1, 51, -1, 54, -1, 55, -1, 56, -1,
- 57, -1, 58, -1, 59, -1, 60, -1, 25, -1,
- 25, 255, 342, 256, -1, 225, -1, 342, 262, 225,
- -1, 345, -1, 345, 344, -1, 257, 258, -1, 257,
- 313, 258, -1, 344, 257, 258, -1, 344, 257, 313,
- 258, -1, 222, -1, 7, -1, 8, -1, 13, -1,
- 9, -1, 10, -1, 11, -1, 12, -1, 6, -1,
- 41, -1, 42, -1, 43, -1, 61, -1, 62, -1,
- 63, -1, 67, -1, 68, -1, 69, -1, 26, -1,
- 27, -1, 28, -1, 29, -1, 30, -1, 31, -1,
- 32, -1, 33, -1, 34, -1, 35, -1, 36, -1,
- 37, -1, 38, -1, 39, -1, 40, -1, 44, -1,
- 45, -1, 46, -1, 78, -1, 79, -1, 80, -1,
- 81, -1, 82, -1, 83, -1, 84, -1, 85, -1,
- 86, -1, 64, -1, 65, -1, 66, -1, 87, -1,
- 88, -1, 89, -1, 90, -1, 91, -1, 92, -1,
- 93, -1, 94, -1, 95, -1, 70, -1, 71, -1,
- 72, -1, 96, -1, 97, -1, 98, -1, 99, -1,
- 100, -1, 101, -1, 102, -1, 103, -1, 104, -1,
- 105, -1, 106, -1, 107, -1, 108, -1, 109, -1,
- 110, -1, 111, -1, 112, -1, 113, -1, 114, -1,
- 115, -1, 116, -1, 136, -1, 137, -1, 117, -1,
- 118, -1, 119, -1, 120, -1, 121, -1, 122, -1,
- 138, -1, 123, -1, 124, -1, 125, -1, 126, -1,
- 127, -1, 128, -1, 139, -1, 129, -1, 130, -1,
- 131, -1, 132, -1, 133, -1, 134, -1, 135, -1,
- 140, -1, 141, -1, 142, -1, 143, -1, 144, -1,
- 145, -1, 147, -1, 148, -1, 149, -1, 150, -1,
- 151, -1, 152, -1, 153, -1, 154, -1, 173, -1,
- 155, -1, 156, -1, 157, -1, 158, -1, 159, -1,
- 160, -1, 174, -1, 161, -1, 162, -1, 163, -1,
- 164, -1, 165, -1, 166, -1, 175, -1, 167, -1,
- 168, -1, 169, -1, 170, -1, 171, -1, 172, -1,
- 176, -1, 177, -1, 178, -1, 179, -1, 180, -1,
- 181, -1, 188, -1, 189, -1, 190, -1, 191, -1,
- 192, -1, 193, -1, 194, -1, 195, -1, 196, -1,
- 197, -1, 198, -1, 199, -1, 200, -1, 201, -1,
- 202, -1, 203, -1, 204, -1, 205, -1, 206, -1,
- 207, -1, 208, -1, 209, -1, 210, -1, 211, -1,
- 212, -1, 213, -1, 214, -1, 215, -1, 216, -1,
- 217, -1, 218, -1, 219, -1, 220, -1, 146, -1,
- 182, -1, 183, -1, 184, -1, 185, -1, 186, -1,
- 187, -1, 347, -1, 225, -1, 281, -1, 282, -1,
- 283, -1, -1, 221, 224, 259, 348, 350, 260, -1,
- -1, 221, 259, 349, 350, 260, -1, 351, -1, 350,
- 351, -1, 343, 352, 265, -1, 339, 343, 352, 265,
- -1, 353, -1, 352, 262, 353, -1, 224, -1, 224,
- 344, -1, 315, -1, 259, 355, 260, -1, 259, 355,
- 262, 260, -1, 354, -1, 355, 262, 354, -1, 319,
- -1, 359, -1, 358, -1, 356, -1, 368, -1, 369,
- -1, 372, -1, 375, -1, 376, -1, 383, -1, 259,
- 260, -1, -1, -1, 259, 360, 367, 361, 260, -1,
- 366, -1, 358, -1, -1, 364, 359, -1, -1, 365,
- 358, -1, 259, 260, -1, 259, 367, 260, -1, 357,
- -1, 367, 357, -1, 265, -1, 317, 265, -1, 19,
- 255, 317, 256, 370, -1, 363, 17, 363, -1, 363,
- -1, 317, -1, 332, 224, 264, 354, -1, -1, 22,
- 255, 317, 256, 373, 259, 374, 260, -1, -1, 367,
- -1, 23, 317, 263, -1, 24, 263, -1, -1, 223,
- 255, 377, 371, 256, 362, -1, -1, 16, 378, 357,
- 223, 255, 317, 256, 265, -1, -1, 18, 255, 379,
- 380, 382, 256, 362, -1, 368, -1, 356, -1, 371,
- -1, -1, 381, 265, -1, 381, 265, 317, -1, 15,
- 265, -1, 14, 265, -1, 21, 265, -1, 21, 317,
- 265, -1, 20, 265, -1, 385, -1, 384, 385, -1,
- 386, -1, 319, -1, -1, 323, 387, 366, -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 250, 250, 256, 259, 262, 266, 270, 274, 277,
- 281, 287, 290, 298, 301, 304, 307, 310, 315, 323,
- 330, 337, 343, 347, 354, 357, 363, 370, 380, 388,
- 393, 423, 429, 433, 437, 457, 458, 459, 460, 466,
- 467, 472, 477, 486, 487, 492, 500, 501, 507, 516,
- 517, 522, 527, 532, 540, 541, 549, 560, 561, 570,
- 571, 580, 581, 590, 591, 599, 600, 608, 609, 617,
- 618, 618, 636, 637, 652, 656, 660, 664, 669, 673,
- 677, 681, 685, 689, 693, 700, 703, 714, 721, 726,
- 731, 739, 743, 747, 751, 756, 761, 770, 770, 781,
- 785, 792, 799, 802, 809, 817, 837, 855, 870, 893,
- 904, 914, 924, 934, 943, 946, 950, 954, 959, 967,
- 972, 977, 982, 987, 996, 1007, 1034, 1043, 1050, 1057,
- 1064, 1076, 1082, 1085, 1092, 1096, 1100, 1108, 1117, 1120,
- 1131, 1134, 1137, 1141, 1145, 1149, 1156, 1160, 1172, 1186,
- 1191, 1197, 1203, 1210, 1216, 1221, 1226, 1231, 1238, 1242,
- 1246, 1250, 1254, 1258, 1264, 1276, 1279, 1284, 1288, 1297,
- 1302, 1310, 1314, 1324, 1328, 1332, 1337, 1344, 1348, 1353,
- 1358, 1363, 1367, 1372, 1377, 1382, 1388, 1394, 1400, 1408,
- 1416, 1424, 1429, 1434, 1439, 1444, 1449, 1454, 1460, 1466,
- 1472, 1478, 1484, 1490, 1496, 1502, 1508, 1513, 1518, 1523,
- 1528, 1533, 1538, 1543, 1548, 1553, 1558, 1563, 1568, 1574,
- 1580, 1586, 1592, 1598, 1604, 1610, 1616, 1622, 1628, 1634,
- 1640, 1648, 1656, 1664, 1672, 1680, 1688, 1696, 1704, 1712,
- 1720, 1728, 1736, 1741, 1746, 1751, 1756, 1761, 1766, 1771,
- 1776, 1781, 1786, 1791, 1796, 1801, 1806, 1811, 1816, 1821,
- 1826, 1831, 1836, 1841, 1846, 1851, 1856, 1861, 1866, 1871,
- 1876, 1881, 1886, 1891, 1896, 1901, 1906, 1911, 1916, 1921,
- 1926, 1931, 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971,
- 1976, 1981, 1986, 1991, 1996, 2001, 2006, 2011, 2016, 2021,
- 2026, 2031, 2036, 2041, 2046, 2051, 2056, 2061, 2066, 2071,
- 2076, 2081, 2086, 2091, 2096, 2101, 2106, 2111, 2116, 2121,
- 2126, 2131, 2136, 2141, 2146, 2151, 2156, 2161, 2166, 2171,
- 2176, 2181, 2186, 2191, 2196, 2201, 2206, 2211, 2216, 2221,
- 2226, 2231, 2236, 2241, 2246, 2251, 2256, 2261, 2266, 2271,
- 2276, 2281, 2287, 2293, 2299, 2305, 2311, 2317, 2323, 2328,
- 2344, 2349, 2354, 2362, 2362, 2373, 2373, 2383, 2386, 2399,
- 2417, 2441, 2445, 2451, 2456, 2467, 2470, 2476, 2485, 2488,
- 2494, 2498, 2499, 2505, 2506, 2507, 2508, 2509, 2510, 2511,
- 2515, 2516, 2520, 2516, 2532, 2533, 2537, 2537, 2544, 2544,
- 2558, 2561, 2569, 2577, 2588, 2589, 2593, 2600, 2604, 2612,
- 2616, 2629, 2629, 2649, 2652, 2658, 2670, 2682, 2682, 2697,
- 2697, 2713, 2713, 2734, 2737, 2743, 2746, 2752, 2756, 2763,
- 2768, 2773, 2780, 2783, 2792, 2796, 2803, 2806, 2812, 2812
+ 0, 253, 253, 259, 262, 265, 269, 273, 277, 283,
+ 289, 292, 296, 302, 305, 313, 316, 319, 322, 325,
+ 330, 338, 345, 352, 358, 362, 369, 372, 378, 385,
+ 395, 403, 408, 438, 444, 448, 452, 472, 473, 474,
+ 475, 481, 482, 487, 492, 501, 502, 507, 515, 516,
+ 522, 531, 532, 537, 542, 547, 555, 556, 564, 575,
+ 576, 585, 586, 595, 596, 605, 606, 614, 615, 623,
+ 624, 632, 633, 633, 651, 652, 667, 671, 675, 679,
+ 684, 688, 692, 696, 700, 704, 708, 715, 718, 729,
+ 736, 741, 746, 754, 758, 762, 766, 771, 776, 785,
+ 785, 796, 800, 807, 814, 817, 824, 832, 852, 875,
+ 890, 913, 924, 934, 944, 954, 963, 966, 970, 974,
+ 979, 987, 992, 997, 1002, 1007, 1016, 1027, 1054, 1063,
+ 1070, 1077, 1084, 1096, 1102, 1105, 1112, 1116, 1120, 1128,
+ 1137, 1140, 1151, 1154, 1157, 1161, 1165, 1169, 1176, 1180,
+ 1192, 1206, 1211, 1217, 1223, 1230, 1236, 1241, 1246, 1251,
+ 1259, 1263, 1267, 1271, 1275, 1279, 1285, 1294, 1297, 1305,
+ 1309, 1318, 1323, 1331, 1335, 1345, 1349, 1353, 1358, 1365,
+ 1369, 1374, 1379, 1384, 1391, 1398, 1402, 1407, 1412, 1417,
+ 1423, 1429, 1435, 1443, 1451, 1459, 1464, 1469, 1474, 1479,
+ 1484, 1489, 1495, 1501, 1507, 1515, 1523, 1531, 1537, 1543,
+ 1549, 1555, 1561, 1567, 1575, 1583, 1591, 1596, 1601, 1606,
+ 1611, 1616, 1621, 1626, 1631, 1636, 1641, 1646, 1651, 1657,
+ 1663, 1669, 1675, 1681, 1687, 1693, 1699, 1705, 1711, 1717,
+ 1723, 1731, 1739, 1747, 1755, 1763, 1771, 1779, 1787, 1795,
+ 1803, 1811, 1819, 1824, 1829, 1834, 1839, 1844, 1849, 1854,
+ 1859, 1864, 1869, 1874, 1879, 1884, 1889, 1894, 1899, 1904,
+ 1909, 1914, 1919, 1924, 1929, 1934, 1939, 1944, 1949, 1954,
+ 1959, 1964, 1969, 1974, 1979, 1984, 1989, 1994, 1999, 2004,
+ 2009, 2014, 2019, 2024, 2029, 2034, 2039, 2044, 2049, 2054,
+ 2059, 2064, 2069, 2074, 2079, 2084, 2089, 2094, 2099, 2104,
+ 2109, 2114, 2119, 2124, 2129, 2134, 2139, 2144, 2149, 2154,
+ 2159, 2164, 2169, 2174, 2179, 2184, 2189, 2194, 2199, 2204,
+ 2209, 2214, 2219, 2224, 2229, 2234, 2239, 2244, 2249, 2254,
+ 2259, 2264, 2269, 2274, 2279, 2284, 2289, 2294, 2299, 2304,
+ 2309, 2314, 2319, 2324, 2329, 2334, 2339, 2344, 2349, 2354,
+ 2359, 2364, 2370, 2376, 2382, 2388, 2394, 2400, 2406, 2411,
+ 2427, 2432, 2437, 2445, 2445, 2456, 2456, 2466, 2469, 2482,
+ 2500, 2524, 2528, 2534, 2539, 2550, 2553, 2559, 2568, 2571,
+ 2577, 2581, 2582, 2588, 2589, 2590, 2591, 2592, 2593, 2594,
+ 2598, 2599, 2603, 2599, 2615, 2616, 2620, 2620, 2627, 2627,
+ 2641, 2644, 2652, 2660, 2671, 2672, 2676, 2683, 2687, 2695,
+ 2699, 2712, 2712, 2732, 2735, 2741, 2753, 2765, 2765, 2780,
+ 2780, 2796, 2796, 2817, 2820, 2826, 2829, 2835, 2839, 2846,
+ 2851, 2856, 2863, 2866, 2875, 2879, 2888, 2891, 2894, 2902,
+ 2902
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || 0
+#if YYDEBUG || YYERROR_VERBOSE || 1
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
"$end", "error", "$undefined", "ATTRIBUTE", "VARYING", "CONST", "BOOL",
- "FLOAT", "DOUBLE", "INT", "UINT", "INT64_T", "UINT64_T", "FLOAT16_T",
- "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN",
- "SWITCH", "CASE", "DEFAULT", "SUBROUTINE", "BVEC2", "BVEC3", "BVEC4",
- "IVEC2", "IVEC3", "IVEC4", "I64VEC2", "I64VEC3", "I64VEC4", "UVEC2",
- "UVEC3", "UVEC4", "U64VEC2", "U64VEC3", "U64VEC4", "VEC2", "VEC3",
- "VEC4", "MAT2", "MAT3", "MAT4", "CENTROID", "IN", "OUT", "INOUT",
- "UNIFORM", "PATCH", "SAMPLE", "BUFFER", "SHARED", "COHERENT", "VOLATILE",
- "RESTRICT", "READONLY", "WRITEONLY", "DVEC2", "DVEC3", "DVEC4", "DMAT2",
- "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3",
- "F16MAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT",
- "__EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3",
- "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3", "DMAT2X4",
- "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4",
- "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", "F16MAT3X3",
- "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", "ATOMIC_UINT",
- "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW",
- "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER1DARRAY",
- "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW",
- "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE",
- "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D", "USAMPLER2D",
- "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY", "USAMPLER2DARRAY",
- "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT",
- "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER",
- "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY",
- "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS",
- "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY",
- "SAMPLEREXTERNALOES", "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D",
- "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY",
+ "FLOAT", "DOUBLE", "INT", "UINT", "INT64_T", "UINT64_T", "INT16_T",
+ "UINT16_T", "FLOAT16_T", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF",
+ "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "SUBROUTINE", "BVEC2",
+ "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", "I64VEC2", "I64VEC3",
+ "I64VEC4", "UVEC2", "UVEC3", "UVEC4", "U64VEC2", "U64VEC3", "U64VEC4",
+ "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "CENTROID", "IN", "OUT",
+ "INOUT", "UNIFORM", "PATCH", "SAMPLE", "BUFFER", "SHARED", "COHERENT",
+ "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", "DVEC2", "DVEC3",
+ "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4",
+ "F16MAT2", "F16MAT3", "F16MAT4", "I16VEC2", "I16VEC3", "I16VEC4",
+ "U16VEC2", "U16VEC3", "U16VEC4", "NOPERSPECTIVE", "FLAT", "SMOOTH",
+ "LAYOUT", "__EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2",
+ "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3",
+ "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3",
+ "DMAT4X4", "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2",
+ "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4",
+ "ATOMIC_UINT", "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE",
+ "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW",
+ "SAMPLER1DARRAY", "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW",
+ "SAMPLER2DARRAYSHADOW", "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D",
+ "ISAMPLERCUBE", "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D",
+ "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY",
+ "USAMPLER2DARRAY", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW",
+ "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER",
+ "USAMPLERBUFFER", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW",
+ "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS",
+ "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY",
+ "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLER", "SAMPLERSHADOW",
+ "TEXTURE1D", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY",
"TEXTURE2DARRAY", "ITEXTURE1D", "ITEXTURE2D", "ITEXTURE3D",
"ITEXTURECUBE", "ITEXTURE1DARRAY", "ITEXTURE2DARRAY", "UTEXTURE1D",
"UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", "UTEXTURE1DARRAY",
@@ -1063,20 +898,20 @@ static const char *const yytname[] =
"UIMAGE2DMS", "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY",
"STRUCT", "VOID", "WHILE", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT",
"DOUBLECONSTANT", "INTCONSTANT", "UINTCONSTANT", "INT64CONSTANT",
- "UINT64CONSTANT", "BOOLCONSTANT", "FLOAT16CONSTANT", "LEFT_OP",
- "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP",
- "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN",
- "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN",
- "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET",
- "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON",
- "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH",
- "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET",
- "AMPERSAND", "QUESTION", "INVARIANT", "PRECISE", "HIGH_PRECISION",
- "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE",
- "SUPERP", "$accept", "variable_identifier", "primary_expression",
- "postfix_expression", "integer_expression", "function_call",
- "function_call_or_method", "function_call_generic",
- "function_call_header_no_parameters",
+ "UINT64CONSTANT", "INT16CONSTANT", "UINT16CONSTANT", "BOOLCONSTANT",
+ "FLOAT16CONSTANT", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP",
+ "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN",
+ "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN",
+ "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN",
+ "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE",
+ "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG",
+ "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", "LEFT_ANGLE",
+ "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", "QUESTION",
+ "INVARIANT", "PRECISE", "HIGH_PRECISION", "MEDIUM_PRECISION",
+ "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", "SUPERP", "$accept",
+ "variable_identifier", "primary_expression", "postfix_expression",
+ "integer_expression", "function_call", "function_call_or_method",
+ "function_call_generic", "function_call_header_no_parameters",
"function_call_header_with_parameters", "function_call_header",
"function_identifier", "unary_expression", "unary_operator",
"multiplicative_expression", "additive_expression", "shift_expression",
@@ -1111,8 +946,8 @@ static const char *const yytname[] =
#endif
# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
- token YYLEX-NUM. */
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+ (internal) symbol number NUM (which must be that of a token). */
static const yytype_uint16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
@@ -1143,585 +978,306 @@ static const yytype_uint16 yytoknum[] =
505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552
};
# endif
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint16 yyr1[] =
-{
- 0, 288, 289, 290, 290, 290, 290, 290, 290, 290,
- 290, 290, 290, 291, 291, 291, 291, 291, 291, 292,
- 293, 294, 295, 295, 296, 296, 297, 297, 298, 299,
- 299, 300, 300, 300, 300, 301, 301, 301, 301, 302,
- 302, 302, 302, 303, 303, 303, 304, 304, 304, 305,
- 305, 305, 305, 305, 306, 306, 306, 307, 307, 308,
- 308, 309, 309, 310, 310, 311, 311, 312, 312, 313,
- 314, 313, 315, 315, 316, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 316, 317, 317, 318, 319, 319,
- 319, 319, 319, 319, 319, 319, 319, 321, 320, 322,
- 322, 323, 324, 324, 325, 325, 326, 327, 327, 328,
- 328, 328, 328, 329, 330, 330, 330, 330, 330, 331,
- 331, 331, 331, 331, 332, 332, 333, 334, 334, 334,
- 334, 335, 336, 336, 337, 337, 337, 338, 339, 339,
- 340, 340, 340, 340, 340, 340, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 342, 342, 343, 343, 344,
- 344, 344, 344, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 346, 346, 346, 348, 347, 349, 347, 350, 350, 351,
- 351, 352, 352, 353, 353, 354, 354, 354, 355, 355,
- 356, 357, 357, 358, 358, 358, 358, 358, 358, 358,
- 359, 360, 361, 359, 362, 362, 364, 363, 365, 363,
- 366, 366, 367, 367, 368, 368, 369, 370, 370, 371,
- 371, 373, 372, 374, 374, 375, 375, 377, 376, 378,
- 376, 379, 376, 380, 380, 381, 381, 382, 382, 383,
- 383, 383, 383, 383, 384, 384, 385, 385, 387, 386
-};
+#define YYPACT_NINF -525
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-525)))
+
+#define YYTABLE_NINF -407
+
+#define yytable_value_is_error(Yytable_value) \
+ 0
+
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+static const yytype_int16 yypact[] =
{
- 0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 1, 4, 1, 3, 2, 2, 1,
- 1, 1, 2, 2, 2, 1, 2, 3, 2, 1,
- 1, 1, 2, 2, 2, 1, 1, 1, 1, 1,
- 3, 3, 3, 1, 3, 3, 1, 3, 3, 1,
- 3, 3, 3, 3, 1, 3, 3, 1, 3, 1,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
- 0, 6, 1, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 3, 1, 2, 2,
- 4, 2, 3, 4, 2, 3, 4, 0, 6, 2,
- 3, 2, 1, 1, 2, 3, 3, 2, 3, 2,
- 1, 2, 1, 1, 1, 3, 4, 6, 5, 1,
- 2, 3, 5, 4, 1, 2, 1, 1, 1, 1,
- 1, 4, 1, 3, 1, 3, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 4, 1, 3, 1, 2, 2,
- 3, 3, 4, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 6, 0, 5, 1, 2, 3,
- 4, 1, 3, 1, 2, 1, 3, 4, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 0, 0, 5, 1, 1, 0, 2, 0, 2,
- 2, 3, 1, 2, 1, 2, 5, 3, 1, 1,
- 4, 0, 8, 0, 1, 3, 2, 0, 6, 0,
- 8, 0, 7, 1, 1, 1, 0, 2, 3, 2,
- 2, 2, 3, 2, 1, 2, 1, 1, 0, 3
+ 2619, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -243, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -228, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -215, -525, -525, -525,
+ -525, -525, -525, -525, -525, -157, -525, -216, -218, -205,
+ -141, 4260, -165, -525, -94, -525, -525, -525, -525, 3183,
+ -525, -525, -525, -117, -525, -525, 575, -525, -525, -80,
+ -48, -114, -525, 6381, -242, -525, -525, -113, -525, 4260,
+ -525, -525, -525, 4260, -75, -74, -525, -235, -190, -525,
+ -525, -525, 4765, -108, -525, -525, -525, -186, -525, -112,
+ -178, -525, -525, 4260, -115, -525, -226, 867, -525, -525,
+ -525, -525, -117, -229, -525, 5039, -224, -525, -71, -525,
+ -158, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, 5861, 5861, 5861, -525, -525, -525, -525, -525,
+ -525, -525, -223, -525, -525, -525, -102, -177, 6121, -100,
+ -525, 5861, -204, -171, -132, -221, -199, -124, -120, -111,
+ -84, -83, -233, -98, -525, 5313, -525, -60, 5861, -525,
+ -48, 4260, 4260, -59, 3456, -525, -525, -525, -99, -97,
+ -525, -90, -88, -96, 5587, -85, 5861, -92, -79, -81,
+ -525, -525, -191, -525, -525, -153, -525, -218, -78, -525,
+ -525, -525, -525, 1159, -525, -525, -525, -525, -525, -525,
+ -108, 5039, -193, 5039, -525, -525, 5039, 4260, -525, -47,
+ -525, -525, -525, -176, -525, -525, 5861, -42, -525, -525,
+ 5861, -73, -525, -525, -525, 5861, 5861, 5861, 5861, 5861,
+ 5861, 5861, 5861, 5861, 5861, 5861, 5861, 5861, 5861, 5861,
+ 5861, 5861, 5861, 5861, -525, -525, -525, -76, -525, -525,
+ -525, -525, 3724, -59, -117, -152, -525, -525, -525, -525,
+ -525, 1451, -525, 5861, -525, -525, -143, 5861, -180, -525,
+ -525, -525, 1451, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, 5861, 5861, -525, -525, -525, -525,
+ 5039, -525, -133, -525, 3992, -525, -525, -72, -77, -525,
+ -525, -525, -525, -525, -204, -204, -171, -171, -132, -132,
+ -132, -132, -221, -221, -199, -124, -120, -111, -84, -83,
+ 5861, -525, -525, -142, -108, -59, -525, -37, 2327, -175,
+ -525, -163, -525, 2892, 1451, -525, -525, -525, -525, 4491,
+ -525, -525, -129, -525, -525, -68, -525, -525, 2892, -70,
+ -525, -77, -32, 4260, -63, -66, -525, -525, 5861, 5861,
+ -525, -69, -61, 188, -58, 2035, -525, -56, -57, 1743,
+ -525, -525, -161, 5861, 1743, -70, -525, -525, 1451, 5039,
+ -525, -525, -525, -67, -77, -525, -525, 1451, -54, -525,
+ -525, -525
};
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
- Performed when YYTABLE doesn't specify something else to do. Zero
- means the default is an error. */
+ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE does not specify something else to do. Zero
+ means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 0, 147, 148, 146, 181, 174, 175, 177, 178, 179,
- 180, 176, 163, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 182, 183,
- 184, 206, 207, 208, 152, 150, 151, 149, 155, 153,
- 154, 156, 157, 158, 159, 160, 161, 162, 185, 186,
- 187, 218, 219, 220, 188, 189, 190, 230, 231, 232,
- 129, 128, 127, 0, 130, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 256, 257, 258, 259, 260, 261,
- 263, 264, 265, 266, 267, 268, 270, 271, 272, 273,
- 274, 275, 276, 254, 255, 262, 269, 277, 278, 279,
- 280, 281, 282, 351, 283, 284, 285, 286, 287, 288,
- 289, 290, 292, 293, 294, 295, 296, 297, 299, 300,
- 301, 302, 303, 304, 306, 307, 308, 309, 310, 311,
- 291, 298, 305, 312, 313, 314, 315, 316, 317, 352,
- 353, 354, 355, 356, 357, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 0, 173,
- 359, 126, 137, 360, 361, 362, 0, 437, 0, 438,
- 0, 103, 102, 0, 114, 119, 144, 143, 141, 145,
- 0, 138, 140, 124, 167, 142, 358, 0, 434, 436,
- 0, 0, 0, 365, 0, 0, 91, 88, 0, 101,
- 0, 110, 104, 112, 0, 113, 0, 89, 120, 0,
- 94, 139, 125, 0, 168, 1, 435, 165, 0, 136,
- 134, 0, 132, 363, 0, 0, 92, 0, 0, 439,
- 105, 109, 111, 107, 115, 106, 0, 121, 97, 0,
- 95, 0, 2, 8, 9, 4, 5, 6, 7, 11,
- 10, 0, 0, 0, 169, 37, 36, 38, 35, 3,
- 13, 31, 15, 20, 21, 0, 0, 25, 0, 39,
- 0, 43, 46, 49, 54, 57, 59, 61, 63, 65,
- 67, 69, 0, 29, 0, 164, 0, 0, 131, 0,
- 0, 0, 0, 0, 367, 90, 93, 0, 0, 419,
- 0, 0, 0, 0, 0, 0, 0, 0, 391, 400,
- 404, 39, 72, 85, 0, 380, 0, 124, 383, 402,
- 382, 381, 0, 384, 385, 386, 387, 388, 389, 108,
- 0, 116, 0, 375, 123, 0, 0, 99, 0, 96,
- 32, 33, 0, 17, 18, 0, 0, 23, 22, 0,
- 173, 26, 28, 34, 0, 0, 0, 0, 0, 0,
+ 0, 149, 150, 148, 185, 176, 177, 179, 180, 181,
+ 182, 183, 184, 178, 165, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 207, 208, 209, 210, 211, 212,
+ 186, 187, 188, 216, 217, 218, 154, 152, 153, 151,
+ 157, 155, 156, 158, 159, 160, 161, 162, 163, 164,
+ 189, 190, 191, 228, 229, 230, 192, 193, 194, 240,
+ 241, 242, 204, 205, 206, 213, 214, 215, 131, 130,
+ 129, 0, 132, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 266, 267, 268, 269, 270, 271, 273, 274,
+ 275, 276, 277, 278, 280, 281, 282, 283, 284, 285,
+ 286, 264, 265, 272, 279, 287, 288, 289, 290, 291,
+ 292, 361, 293, 294, 295, 296, 297, 298, 299, 300,
+ 302, 303, 304, 305, 306, 307, 309, 310, 311, 312,
+ 313, 314, 316, 317, 318, 319, 320, 321, 301, 308,
+ 315, 322, 323, 324, 325, 326, 327, 362, 363, 364,
+ 365, 366, 367, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 0, 175, 369, 448,
+ 128, 139, 370, 371, 372, 0, 447, 0, 449, 0,
+ 105, 104, 0, 116, 121, 146, 145, 143, 147, 0,
+ 140, 142, 126, 169, 144, 368, 0, 444, 446, 0,
+ 0, 0, 375, 0, 0, 93, 90, 0, 103, 0,
+ 112, 106, 114, 0, 115, 0, 91, 122, 0, 96,
+ 141, 127, 0, 170, 1, 445, 167, 0, 138, 136,
+ 0, 134, 373, 0, 0, 94, 0, 0, 450, 107,
+ 111, 113, 109, 117, 108, 0, 123, 99, 0, 97,
+ 0, 2, 10, 11, 4, 5, 6, 7, 8, 9,
+ 13, 12, 0, 0, 0, 171, 39, 38, 40, 37,
+ 3, 15, 33, 17, 22, 23, 0, 0, 27, 0,
+ 41, 0, 45, 48, 51, 56, 59, 61, 63, 65,
+ 67, 69, 71, 0, 31, 0, 166, 0, 0, 133,
+ 0, 0, 0, 0, 0, 377, 92, 95, 0, 0,
+ 429, 0, 0, 0, 0, 0, 0, 0, 0, 401,
+ 410, 414, 41, 74, 87, 0, 390, 0, 126, 393,
+ 412, 392, 391, 0, 394, 395, 396, 397, 398, 399,
+ 110, 0, 118, 0, 385, 125, 0, 0, 101, 0,
+ 98, 34, 35, 0, 19, 20, 0, 0, 25, 24,
+ 0, 175, 28, 30, 36, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 70, 170, 171, 0, 166, 87, 135,
- 133, 0, 0, 373, 0, 371, 366, 368, 430, 429,
- 0, 421, 0, 433, 431, 0, 0, 0, 416, 417,
- 390, 0, 75, 76, 78, 77, 80, 81, 82, 83,
- 84, 79, 74, 0, 0, 405, 401, 403, 118, 0,
- 378, 0, 122, 0, 100, 12, 0, 19, 16, 27,
- 40, 41, 42, 45, 44, 47, 48, 52, 53, 50,
- 51, 55, 56, 58, 60, 62, 64, 66, 68, 0,
- 172, 364, 0, 374, 0, 369, 0, 0, 0, 432,
- 0, 415, 0, 392, 73, 86, 117, 376, 0, 98,
- 14, 0, 370, 372, 0, 424, 423, 426, 398, 411,
- 409, 0, 0, 0, 0, 377, 379, 0, 0, 425,
- 0, 0, 408, 0, 0, 406, 0, 0, 0, 393,
- 71, 0, 427, 0, 398, 397, 399, 413, 0, 395,
- 418, 394, 0, 428, 422, 407, 414, 0, 410, 420,
- 412
-};
-
-/* YYDEFGOTO[NTERM-NUM]. */
-static const yytype_int16 yydefgoto[] =
-{
- -1, 309, 310, 311, 476, 312, 313, 314, 315, 316,
- 317, 318, 361, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 362, 499, 363, 463, 364,
- 429, 365, 218, 386, 291, 366, 220, 221, 222, 251,
- 252, 253, 223, 224, 225, 226, 227, 228, 271, 272,
- 229, 230, 231, 232, 268, 333, 264, 234, 235, 236,
- 340, 274, 343, 344, 434, 435, 384, 471, 368, 369,
- 370, 371, 451, 534, 560, 542, 543, 544, 561, 372,
- 373, 374, 545, 533, 375, 546, 567, 376, 377, 512,
- 440, 507, 527, 540, 541, 378, 237, 238, 239, 248
+ 0, 0, 0, 0, 72, 172, 173, 0, 168, 89,
+ 137, 135, 0, 0, 383, 0, 381, 376, 378, 440,
+ 439, 0, 431, 0, 443, 441, 0, 0, 0, 426,
+ 427, 400, 0, 77, 78, 80, 79, 82, 83, 84,
+ 85, 86, 81, 76, 0, 0, 415, 411, 413, 120,
+ 0, 388, 0, 124, 0, 102, 14, 0, 21, 18,
+ 29, 42, 43, 44, 47, 46, 49, 50, 54, 55,
+ 52, 53, 57, 58, 60, 62, 64, 66, 68, 70,
+ 0, 174, 374, 0, 384, 0, 379, 0, 0, 0,
+ 442, 0, 425, 0, 402, 75, 88, 119, 386, 0,
+ 100, 16, 0, 380, 382, 0, 434, 433, 436, 408,
+ 421, 419, 0, 0, 0, 0, 387, 389, 0, 0,
+ 435, 0, 0, 418, 0, 0, 416, 0, 0, 0,
+ 403, 73, 0, 437, 0, 408, 407, 409, 423, 0,
+ 405, 428, 404, 0, 438, 432, 417, 424, 0, 420,
+ 430, 422
};
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
-#define YYPACT_NINF -512
-static const yytype_int16 yypact[] =
+ /* YYPGOTO[NTERM-NUM]. */
+static const yytype_int16 yypgoto[] =
{
- 2538, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -235, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -201, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, -512, -203, -512,
- -512, -512, -512, -512, -512, -512, -153, -512, -210, -220,
- -152, -189, 4119, -160, -512, -128, -512, -512, -512, -512,
- 3079, -512, -512, -512, -122, -512, -512, 564, -512, -512,
- -72, -46, -105, -512, 6148, -216, -512, -512, -102, -512,
- 4119, -512, -512, -512, 4119, -68, -66, -512, -225, -187,
- -512, -512, -512, 4606, -98, -512, -512, -512, -179, -512,
- -104, -172, -512, -512, 4119, -101, -512, -186, 846, -512,
- -512, -512, -512, -122, -233, -512, 4870, -217, -512, -63,
- -512, -151, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, 5648, 5648, 5648, -512, -512, -512, -512, -512, -512,
- -512, -209, -512, -512, -512, -94, -170, 5898, -92, -512,
- 5648, -139, -133, -109, -223, -103, -111, -108, -106, -71,
- -74, -218, -86, -512, 5134, -512, -52, 5648, -512, -46,
- 4119, 4119, -50, 3342, -512, -512, -512, -90, -89, -512,
- -78, -76, -85, 5398, -70, 5648, -80, -69, -64, -512,
- -512, -184, -512, -512, -150, -512, -220, -67, -512, -512,
- -512, -512, 1128, -512, -512, -512, -512, -512, -512, -98,
- 4870, -183, 4870, -512, -512, 4870, 4119, -512, -40, -512,
- -512, -512, -169, -512, -512, 5648, -35, -512, -512, 5648,
- -65, -512, -512, -512, 5648, 5648, 5648, 5648, 5648, 5648,
- 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648,
- 5648, 5648, 5648, -512, -512, -512, -61, -512, -512, -512,
- -512, 3601, -50, -122, -144, -512, -512, -512, -512, -512,
- 1410, -512, 5648, -512, -512, -142, 5648, -123, -512, -512,
- -512, 1410, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, 5648, 5648, -512, -512, -512, -512, 4870,
- -512, -226, -512, 3860, -512, -512, -60, -62, -512, -512,
- -512, -512, -512, -139, -139, -133, -133, -109, -109, -109,
- -109, -223, -223, -103, -111, -108, -106, -71, -74, 5648,
- -512, -512, -138, -98, -50, -512, -33, 2256, -168, -512,
- -167, -512, 2798, 1410, -512, -512, -512, -512, 4342, -512,
- -512, -121, -512, -512, -56, -512, -512, 2798, -58, -512,
- -62, -32, 4119, -49, -51, -512, -512, 5648, 5648, -512,
- -57, -45, 177, -55, 1974, -512, -47, -44, 1692, -512,
- -512, -165, 5648, 1692, -58, -512, -512, 1410, 4870, -512,
- -512, -512, -48, -62, -512, -512, 1410, -42, -512, -512,
- -512
+ -525, -525, -525, -525, -525, -525, -525, -525, -525, -525,
+ -525, -525, -103, -525, -278, -274, -297, -273, -214, -211,
+ -210, -212, -209, -208, -525, -261, -525, -292, -525, -308,
+ -525, 4, -525, -525, -525, 5, -525, -525, -525, -41,
+ -38, -39, -525, -525, -504, -525, -525, -525, -525, -123,
+ -525, -230, -237, -525, -525, 0, -246, -525, 1, -525,
+ -525, -525, -337, -342, -207, -286, -378, -525, -285, -376,
+ -524, -322, -525, -525, -330, -327, -525, -525, -22, -452,
+ -275, -525, -525, -298, -525, -525, -525, -525, -525, -525,
+ -525, -525, -525, -525, -525, -525, -525, -2, -525, -525
};
-/* YYPGOTO[NTERM-NUM]. */
-static const yytype_int16 yypgoto[] =
+ /* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
{
- -512, -512, -512, -512, -512, -512, -512, -512, -512, -512,
- -512, -512, -96, -512, -263, -262, -304, -264, -204, -199,
- -205, -197, -206, -196, -512, -252, -512, -282, -512, -296,
- -512, 3, -512, -512, -512, 6, -512, -512, -512, -29,
- -23, -26, -512, -512, -489, -512, -512, -512, -512, -118,
- -512, -221, -228, -512, -512, 0, -240, -512, 13, -512,
- -512, -512, -328, -330, -200, -271, -363, -512, -273, -364,
- -511, -308, -512, -512, -314, -309, -512, -512, -2, -441,
- -260, -512, -512, -279, -512, -512, -512, -512, -512, -512,
- -512, -512, -512, -512, -512, -512, -512, 12, -512, -512
+ -1, 320, 321, 322, 487, 323, 324, 325, 326, 327,
+ 328, 329, 372, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 373, 510, 374, 474, 375,
+ 440, 376, 227, 397, 300, 377, 229, 230, 231, 260,
+ 261, 262, 232, 233, 234, 235, 236, 237, 280, 281,
+ 238, 239, 240, 241, 277, 344, 273, 243, 244, 245,
+ 351, 283, 354, 355, 445, 446, 395, 482, 379, 380,
+ 381, 382, 462, 545, 571, 553, 554, 555, 572, 383,
+ 384, 385, 556, 544, 386, 557, 578, 387, 388, 523,
+ 451, 518, 538, 551, 552, 389, 246, 247, 248, 257
};
-/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
- positive, shift that token. If negative, reduce the rule which
- number is the opposite. If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -397
+ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule whose
+ number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 233, 254, 261, 217, 383, 277, 219, 392, 467, 269,
- 513, 332, 431, 437, 245, 411, 412, 468, 287, 470,
- 240, 242, 472, 531, 263, 422, 261, 393, 394, 254,
- 285, 380, 263, 556, 517, 401, 518, 559, 531, 286,
- 334, 263, 559, 379, 381, 247, -30, 385, 395, 276,
- 413, 414, 396, 341, 241, 246, 243, 445, 473, 447,
- 423, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 334, 288, 250, 334, 289, 506, 335, 290, 346,
- 462, 469, 426, 336, 338, 428, 398, 475, 528, 529,
- 339, 562, 399, 464, 464, 464, 258, 464, 383, 477,
- 383, 437, 256, 383, 249, 257, 516, 487, 488, 489,
- 490, 388, 464, 261, 389, 465, 566, 479, 504, 341,
- 464, 505, 341, 509, 504, 409, 410, 522, 213, 214,
- 215, 404, 405, 406, 407, 263, 408, 415, 416, 464,
- 511, 464, 537, 437, 483, 484, 508, 485, 486, 467,
- 510, 491, 492, 267, 273, 536, 283, 278, 284, 334,
- 337, 387, 397, 402, 345, 341, 417, 319, 418, 419,
- 421, 420, 424, 427, 433, 438, 439, 441, 270, 442,
- 443, 514, 515, 448, 474, 446, 449, 383, -29, 478,
- 524, -24, 547, 503, 554, 568, 450, 500, 520, 538,
- 464, -396, 467, 521, 358, 390, 391, 548, 552, 549,
- 341, 553, 557, 493, 495, 497, 530, 569, 570, 494,
- 558, 430, 255, 496, 403, 281, 498, 280, 282, 244,
- 262, 530, 502, 523, 525, 555, 383, 233, 319, 564,
- 217, 319, 551, 219, 275, 565, 279, 526, 539, 266,
- 255, 0, 341, 0, 255, 550, 563, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 342, 0, 383, 0, 367, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 532, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 261, 0, 532, 0, 480, 481,
- 482, 319, 319, 319, 319, 319, 319, 319, 319, 319,
- 319, 319, 319, 319, 319, 319, 319, 0, 0, 0,
+ 242, 263, 270, 394, 226, 228, 403, 478, 286, 278,
+ 524, 343, 448, 479, 442, 481, 254, 251, 483, 542,
+ 433, 296, 249, 404, 405, 272, 270, 422, 423, 263,
+ 294, 567, 272, 285, 542, 570, 412, 250, 272, 295,
+ 570, 345, -32, 345, 406, 391, 390, 392, 407, 357,
+ 396, 426, 427, 352, 252, 434, 456, 256, 458, 255,
+ 484, 258, 424, 425, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 345, 517, 415, 416, 417, 297,
+ 346, 480, 298, 473, 437, 299, 347, 439, 349, 409,
+ 486, 539, 475, 522, 350, 410, 475, 475, 488, 394,
+ 448, 394, 527, 540, 394, 573, 418, 265, 419, 475,
+ 266, 475, 420, 421, 399, 270, 577, 400, 490, 475,
+ 515, 352, 476, 516, 352, 498, 499, 500, 501, 475,
+ 515, 259, 520, 533, 222, 223, 224, 528, 267, 529,
+ 494, 495, 448, 475, 548, 519, 496, 497, 478, 521,
+ 272, 547, 276, 502, 503, 282, 287, 292, 293, 345,
+ 356, 398, 348, 428, 408, 413, 429, 352, 431, 330,
+ 435, 432, 438, 444, 430, 452, 449, 453, 450, 454,
+ 457, 459, 525, 526, 279, 485, 460, -31, 394, 461,
+ 489, 579, 511, -26, 535, 475, 531, 549, 514, -406,
+ 558, 478, 532, 559, 560, 564, 563, 565, 580, 401,
+ 402, 369, 352, 568, 504, 541, 581, 569, 505, 507,
+ 506, 289, 290, 508, 291, 509, 253, 441, 414, 534,
+ 541, 264, 566, 536, 575, 288, 513, 394, 576, 271,
+ 550, 562, 330, 537, 275, 330, 242, 0, 0, 0,
+ 226, 228, 0, 284, 352, 574, 561, 0, 0, 264,
+ 0, 0, 0, 264, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 394, 0, 0,
+ 0, 0, 0, 353, 0, 0, 0, 378, 0, 0,
+ 0, 0, 0, 543, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 270, 0, 543, 0,
+ 0, 0, 491, 492, 493, 330, 330, 330, 330, 330,
+ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330,
+ 330, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 342, 432, 0, 342, 0, 0, 0, 0, 0, 0,
+ 0, 353, 443, 0, 353, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 367, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 342, 0, 0, 0,
+ 0, 0, 0, 378, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 353, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 342, 0, 0, 0, 0, 0, 0, 0, 0,
- 367, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 367, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 342, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 367, 0, 0,
- 0, 0, 367, 367, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 367, 0, 0,
- 0, 0, 262, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 367, 0, 0, 0, 367, 0,
- 0, 0, 0, 367, 0, 0, 0, 367, 0, 0,
- 0, 0, 0, 0, 265, 0, 367, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 0, 0, 210,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 211, 212, 213, 214, 215, 216, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 347, 348, 349, 0, 350, 351, 352, 353, 354, 355,
- 356, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 357,
- 292, 210, 293, 294, 295, 296, 297, 298, 299, 300,
- 0, 0, 301, 302, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 303, 0, 0, 0, 358, 359, 0, 0, 0,
- 0, 360, 305, 306, 307, 308, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 211, 212, 213, 214, 215,
- 216, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 347, 348, 349, 0, 350, 351, 352, 353,
- 354, 355, 356, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 357, 292, 210, 293, 294, 295, 296, 297, 298,
- 299, 300, 0, 0, 301, 302, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 303, 0, 0, 0, 358, 466, 0,
- 0, 0, 0, 360, 305, 306, 307, 308, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 211, 212, 213,
- 214, 215, 216, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 347, 348, 349, 0, 350, 351,
- 352, 353, 354, 355, 356, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 357, 292, 210, 293, 294, 295, 296,
- 297, 298, 299, 300, 0, 0, 301, 302, 0, 0,
+ 0, 0, 353, 0, 0, 0, 0, 0, 0, 0,
+ 0, 378, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 378, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 303, 0, 0, 0, 358,
- 0, 0, 0, 0, 0, 360, 305, 306, 307, 308,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 211,
- 212, 213, 214, 215, 216, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 347, 348, 349, 0,
- 350, 351, 352, 353, 354, 355, 356, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 357, 292, 210, 293, 294,
- 295, 296, 297, 298, 299, 300, 0, 0, 301, 302,
+ 0, 0, 0, 0, 353, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 303, 0, 0,
- 0, 278, 0, 0, 0, 0, 0, 360, 305, 306,
- 307, 308, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 211, 212, 213, 214, 215, 216, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 347, 348,
- 349, 0, 350, 351, 352, 353, 354, 355, 356, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 357, 292, 210,
- 293, 294, 295, 296, 297, 298, 299, 300, 0, 0,
- 301, 302, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 303,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 360,
- 305, 306, 307, 308, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 211, 212, 213, 214, 215, 216, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 0,
- 292, 210, 293, 294, 295, 296, 297, 298, 299, 300,
- 0, 0, 301, 302, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 378, 0,
+ 0, 0, 0, 378, 378, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 378, 0,
+ 0, 0, 0, 271, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 378, 0, 0, 0, 378,
+ 0, 0, 0, 0, 378, 0, 0, 0, 378, 0,
+ 0, 0, 0, 0, 0, 274, 0, 378, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 0, 0, 218, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 303, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 360, 305, 306, 307, 308, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 211, 212, 213, 214, 215,
- 216, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 0, 0, 210, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 0, 0, 0, 0, 0, 211, 212, 213,
- 214, 215, 216, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 0, 292, 210, 293, 294, 295, 296, 297, 298,
- 299, 300, 0, 0, 301, 302, 0, 0, 0, 0,
+ 219, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 220, 221, 222, 223, 224, 225,
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 358, 359, 360, 0, 361, 362, 363,
+ 364, 365, 366, 367, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 368, 301,
+ 218, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 0, 0, 312, 313, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 303, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 305, 306, 307, 308, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 211, 212, 213,
- 214, 215, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 13, 14, 15, 16, 17,
+ 0, 0, 314, 0, 0, 0, 369, 370, 0, 0,
+ 0, 0, 371, 316, 317, 318, 319, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 220, 221, 222, 223,
+ 224, 225, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 358, 359, 360, 0, 361,
+ 362, 363, 364, 365, 366, 367, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
@@ -1741,39 +1297,16 @@ static const yytype_int16 yytable[] =
178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 0, 259, 210, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 260, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 0, 0, 211, 212,
- 213, 214, 215, 0, 0, 0, 0, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 0, 0, 210, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 368, 301, 218, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 0, 0, 312, 313, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 436, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 0, 0, 0, 0, 0,
- 0, 211, 212, 213, 214, 215, 12, 13, 14, 15,
+ 0, 0, 0, 0, 314, 0, 0, 0, 369, 477,
+ 0, 0, 0, 0, 371, 316, 317, 318, 319, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 220, 221,
+ 222, 223, 224, 225, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 358, 359, 360,
+ 0, 361, 362, 363, 364, 365, 366, 367, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
@@ -1793,39 +1326,104 @@ static const yytype_int16 yytable[] =
176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 0, 0, 210, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 501, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 0, 0, 0, 0, 0, 0,
- 211, 212, 213, 214, 215, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 0, 0, 210, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 368, 301, 218, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 0, 0, 312, 313, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 314, 0, 0, 0,
+ 369, 0, 0, 0, 0, 0, 371, 316, 317, 318,
+ 319, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 220, 221, 222, 223, 224, 225, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 358,
+ 359, 360, 0, 361, 362, 363, 364, 365, 366, 367,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 368, 301, 218, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 0, 0, 312,
+ 313, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 314, 0,
+ 0, 0, 287, 0, 0, 0, 0, 0, 371, 316,
+ 317, 318, 319, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 220, 221, 222, 223, 224, 225, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 358, 359, 360, 0, 361, 362, 363, 364, 365,
+ 366, 367, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 368, 301, 218, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 0,
+ 0, 312, 313, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 314, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 371, 316, 317, 318, 319, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 220, 221, 222, 223, 224, 225,
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 0, 301,
+ 218, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 0, 0, 312, 313, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 519, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 0, 0, 0, 0, 0, 0, 211,
- 212, 213, 214, 215, 12, 13, 14, 15, 16, 17,
+ 0, 0, 314, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 371, 316, 317, 318, 319, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 220, 221, 222, 223,
+ 224, 225, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
@@ -1845,14 +1443,19 @@ static const yytype_int16 yytable[] =
178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 0, 0, 210, 0, 0, 0, 4, 5,
- 6, 7, 8, 9, 10, 11, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 14,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 0, 0, 218, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 219, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 220, 221,
+ 222, 223, 224, 225, 0, 0, 0, 0, 0, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 211, 212,
- 213, 214, 215, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 0, 0, 0, 0, 0,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
@@ -1867,19 +1470,49 @@ static const yytype_int16 yytable[] =
175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 0, 292, 210, 293, 294,
- 295, 296, 297, 298, 299, 300, 0, 0, 301, 302,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 0, 301, 218, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 0, 0, 312, 313,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 303, 0, 0,
- 0, 382, 535, 0, 0, 0, 0, 0, 305, 306,
- 307, 308, 4, 5, 6, 7, 8, 9, 10, 11,
+ 0, 0, 0, 0, 0, 0, 0, 314, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 316, 317,
+ 318, 319, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 220, 221, 222, 223, 224, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 13, 14, 15, 16, 17, 18, 19, 20,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 0, 268, 218, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 269, 1,
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 220, 221, 222, 223, 224, 0, 0, 0,
+ 0, 0, 0, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 0,
- 0, 0, 0, 0, 65, 66, 67, 68, 69, 70,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
@@ -1893,46 +1526,20 @@ static const yytype_int16 yytable[] =
171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 0,
- 292, 210, 293, 294, 295, 296, 297, 298, 299, 300,
- 0, 0, 301, 302, 0, 0, 0, 0, 0, 0,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 0, 0, 218,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 303, 0, 0, 304, 0, 0, 0, 0, 0,
- 0, 0, 305, 306, 307, 308, 4, 5, 6, 7,
- 8, 9, 10, 11, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 0, 0, 0, 0, 0, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 0, 292, 210, 293, 294, 295, 296,
- 297, 298, 299, 300, 0, 0, 301, 302, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 303, 0, 0, 0, 382,
- 0, 0, 0, 0, 0, 0, 305, 306, 307, 308,
- 4, 5, 6, 7, 8, 9, 10, 11, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 0, 0, 0, 0, 0, 0, 447, 1, 2, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 0, 0, 0, 0, 0, 220, 221, 222, 223, 224,
+ 0, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 0, 0, 0,
- 0, 0, 65, 66, 67, 68, 69, 70, 71, 72,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
@@ -1946,183 +1553,70 @@ static const yytype_int16 yytable[] =
173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 0, 292, 210,
- 293, 294, 295, 296, 297, 298, 299, 300, 0, 0,
- 301, 302, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 303,
- 0, 0, 425, 0, 0, 0, 0, 0, 0, 0,
- 305, 306, 307, 308, 4, 5, 6, 7, 8, 9,
- 10, 11, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 0, 0, 0, 0, 0, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 0, 292, 210, 293, 294, 295, 296, 297, 298,
- 299, 300, 0, 0, 301, 302, 0, 0, 0, 0,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 0, 0, 218, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 303, 4, 5, 6, 7, 8, 9,
- 10, 11, 0, 444, 305, 306, 307, 308, 0, 0,
- 0, 0, 0, 0, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 0, 0, 0, 0, 0, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 0, 292, 210, 293, 294, 295, 296, 297, 298,
- 299, 300, 0, 0, 301, 302, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 303, 4, 5, 6, 7, 8, 9,
- 10, 11, 0, 0, 305, 306, 307, 308, 0, 0,
- 0, 0, 0, 0, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 0, 0, 0, 0, 0, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 400, 0, 292, 210, 293, 294, 295, 296, 297, 298,
- 299, 300, 0, 0, 301, 302, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 303, 4, 5, 6, 7, 8, 9,
- 10, 11, 0, 0, 305, 306, 307, 308, 0, 0,
- 0, 0, 0, 0, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 0, 0, 0, 0, 0, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 0, 0, 210
-};
-
-#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-512)))
-
-#define yytable_value_is_error(Yytable_value) \
- YYID (0)
-
-static const yytype_int16 yycheck[] =
-{
- 0, 222, 230, 0, 286, 245, 0, 303, 372, 55,
- 451, 263, 340, 343, 224, 238, 239, 380, 258, 382,
- 255, 224, 385, 512, 257, 243, 254, 236, 237, 250,
- 255, 264, 257, 544, 260, 317, 262, 548, 527, 264,
- 257, 257, 553, 283, 284, 265, 255, 264, 257, 265,
- 273, 274, 261, 274, 255, 265, 259, 353, 386, 355,
- 278, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 257, 259, 262, 257, 262, 440, 256, 265, 265,
- 264, 264, 334, 262, 256, 337, 256, 256, 256, 256,
- 262, 256, 262, 262, 262, 262, 224, 262, 380, 395,
- 382, 431, 262, 385, 256, 265, 469, 411, 412, 413,
- 414, 262, 262, 341, 265, 265, 557, 399, 262, 340,
- 262, 265, 343, 265, 262, 234, 235, 265, 281, 282,
- 283, 270, 271, 272, 267, 257, 269, 240, 241, 262,
- 263, 262, 263, 473, 407, 408, 442, 409, 410, 513,
- 446, 415, 416, 225, 259, 518, 224, 259, 224, 257,
- 264, 224, 256, 255, 265, 386, 277, 263, 276, 275,
- 244, 242, 258, 225, 224, 265, 265, 255, 224, 255,
- 265, 463, 464, 263, 224, 255, 255, 469, 255, 224,
- 223, 256, 224, 433, 17, 558, 260, 258, 258, 255,
- 262, 259, 566, 499, 259, 301, 302, 256, 265, 260,
- 431, 256, 259, 417, 419, 421, 512, 265, 260, 418,
- 264, 339, 222, 420, 320, 254, 422, 250, 254, 216,
- 230, 527, 432, 504, 507, 543, 518, 237, 334, 553,
- 237, 337, 538, 237, 244, 554, 248, 507, 527, 237,
- 250, -1, 473, -1, 254, 537, 552, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 274, -1, 558, -1, 278, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 512, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 532, -1, 527, -1, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 340, 341, -1, 343, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 372, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 386, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 431, -1, -1, -1, -1, -1, -1, -1, -1,
- 440, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 451, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 473, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 507, -1, -1,
- -1, -1, 512, 513, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 527, -1, -1,
- -1, -1, 532, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 544, -1, -1, -1, 548, -1,
- -1, -1, -1, 553, -1, -1, -1, 557, -1, -1,
- -1, -1, -1, -1, 0, -1, 566, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 25,
+ 0, 0, 0, 0, 512, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 0, 0,
+ 0, 0, 0, 220, 221, 222, 223, 224, 0, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 0, 0, 218, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 530, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 0, 0, 0, 0,
+ 0, 220, 221, 222, 223, 224, 0, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 0, 0, 218, 0, 0, 0, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
+ 221, 222, 223, 224, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 66, 67, 0, 0, 0, 0, 0, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
@@ -2137,49 +1631,20 @@ static const yytype_int16 yycheck[] =
186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, -1, -1, 225,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 279, 280, 281, 282, 283, 284, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, -1, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- -1, -1, 236, 237, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 255, -1, -1, -1, 259, 260, -1, -1, -1,
- -1, 265, 266, 267, 268, 269, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 279, 280, 281, 282, 283,
- 284, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, -1, 18, 19, 20, 21,
+ 216, 217, 0, 301, 218, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 0, 0, 312, 313, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 314, 0, 0, 0,
+ 393, 546, 0, 0, 0, 0, 0, 316, 317, 318,
+ 319, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 32, 33, 34, 35, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 62, 63, 64, 65, 66, 67, 0, 0, 0, 0,
+ 0, 73, 74, 75, 76, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
@@ -2193,49 +1658,20 @@ static const yytype_int16 yycheck[] =
182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, -1, -1, 236, 237, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 255, -1, -1, -1, 259, 260, -1,
- -1, -1, -1, 265, 266, 267, 268, 269, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 279, 280, 281,
- 282, 283, 284, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, -1, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, -1, -1, 236, 237, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 255, -1, -1, -1, 259,
- -1, -1, -1, -1, -1, 265, 266, 267, 268, 269,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
- 280, 281, 282, 283, 284, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, -1,
+ 212, 213, 214, 215, 216, 217, 0, 301, 218, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 0,
+ 0, 312, 313, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 314, 0, 0, 315, 0, 0, 0, 0, 0, 0,
+ 0, 316, 317, 318, 319, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 28, 29, 30, 31, 32, 33, 34, 35, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 0, 0, 0, 0, 0, 73, 74, 75, 76, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
@@ -2250,20 +1686,74 @@ static const yytype_int16 yycheck[] =
188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, -1, -1, 236, 237,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 255, -1, -1,
- -1, 259, -1, -1, -1, -1, -1, 265, 266, 267,
- 268, 269, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 279, 280, 281, 282, 283, 284, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, -1, 18, 19, 20, 21, 22, 23, 24, 25,
+ 0, 301, 218, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 0, 0, 312, 313, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 314, 0, 0, 0, 393, 0,
+ 0, 0, 0, 0, 0, 316, 317, 318, 319, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 0, 0, 0, 0, 0, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 0, 301, 218, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 0, 0, 312,
+ 313, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 314, 0,
+ 0, 436, 0, 0, 0, 0, 0, 0, 0, 316,
+ 317, 318, 319, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 0, 0,
+ 0, 0, 0, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 0, 301,
+ 218, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 0, 0, 312, 313, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 314, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 455, 316, 317, 318, 319, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 66, 67, 0, 0, 0, 0, 0, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
@@ -2278,98 +1768,182 @@ static const yytype_int16 yycheck[] =
186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, -1, -1,
- 236, 237, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 255,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 265,
- 266, 267, 268, 269, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 279, 280, 281, 282, 283, 284, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 216, 217, 0, 301, 218, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 0, 0, 312, 313, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 314, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 316, 317, 318,
+ 319, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 0, 0, 0, 0, 0, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 411, 0, 301, 218, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 0, 0, 312, 313, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 314, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 316, 317, 318,
+ 319, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 0, 0, 0, 0, 0, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 0, 0, 218
+};
+
+static const yytype_int16 yycheck[] =
+{
+ 0, 231, 239, 295, 0, 0, 314, 383, 254, 57,
+ 462, 272, 354, 391, 351, 393, 232, 232, 396, 523,
+ 253, 267, 265, 246, 247, 267, 263, 248, 249, 259,
+ 265, 555, 267, 275, 538, 559, 328, 265, 267, 274,
+ 564, 267, 265, 267, 267, 274, 292, 293, 271, 275,
+ 274, 250, 251, 283, 269, 288, 364, 275, 366, 275,
+ 397, 266, 283, 284, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 267, 451, 280, 281, 282, 269,
+ 266, 274, 272, 274, 345, 275, 272, 348, 266, 266,
+ 266, 266, 272, 273, 272, 272, 272, 272, 406, 391,
+ 442, 393, 480, 266, 396, 266, 277, 272, 279, 272,
+ 275, 272, 244, 245, 272, 352, 568, 275, 410, 272,
+ 272, 351, 275, 275, 354, 422, 423, 424, 425, 272,
+ 272, 272, 275, 275, 291, 292, 293, 270, 232, 272,
+ 418, 419, 484, 272, 273, 453, 420, 421, 524, 457,
+ 267, 529, 232, 426, 427, 269, 269, 232, 232, 267,
+ 275, 232, 274, 287, 266, 265, 286, 397, 252, 272,
+ 268, 254, 232, 232, 285, 265, 275, 265, 275, 275,
+ 265, 273, 474, 475, 232, 232, 265, 265, 480, 270,
+ 232, 569, 268, 266, 231, 272, 268, 265, 444, 269,
+ 232, 577, 510, 266, 270, 266, 275, 19, 275, 312,
+ 313, 269, 442, 269, 428, 523, 270, 274, 429, 431,
+ 430, 259, 263, 432, 263, 433, 225, 350, 331, 515,
+ 538, 231, 554, 518, 564, 257, 443, 529, 565, 239,
+ 538, 549, 345, 518, 246, 348, 246, -1, -1, -1,
+ 246, 246, -1, 253, 484, 563, 548, -1, -1, 259,
+ -1, -1, -1, 263, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 569, -1, -1,
+ -1, -1, -1, 283, -1, -1, -1, 287, -1, -1,
+ -1, -1, -1, 523, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 543, -1, 538, -1,
+ -1, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, -1,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- -1, -1, 236, 237, -1, -1, -1, -1, -1, -1,
+ -1, 351, 352, -1, 354, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 255, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 265, 266, 267, 268, 269, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 279, 280, 281, 282, 283,
- 284, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, -1, -1, 225, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 383, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 397, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, -1, -1, -1, -1, -1, 279, 280, 281,
- 282, 283, 284, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, -1, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, -1, -1, 236, 237, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 255, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 266, 267, 268, 269, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 279, 280, 281,
- 282, 283, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 25, 26, 27, 28, 29, 30,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 442, -1, -1, -1, -1, -1, -1, -1,
+ -1, 451, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 462, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 484, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 518, -1,
+ -1, -1, -1, 523, 524, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 538, -1,
+ -1, -1, -1, 543, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 555, -1, -1, -1, 559,
+ -1, -1, -1, -1, 564, -1, -1, -1, 568, -1,
+ -1, -1, -1, -1, -1, 0, -1, 577, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, -1, -1, 233, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 275, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 289, 290, 291, 292, 293, 294,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, -1, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, -1, -1, 246, 247, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 265, -1, -1, -1, 269, 270, -1, -1,
+ -1, -1, 275, 276, 277, 278, 279, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 289, 290, 291, 292,
+ 293, 294, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, -1, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
@@ -2389,39 +1963,16 @@ static const yytype_int16 yycheck[] =
191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, -1, 224, 225, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 265, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, -1, -1, 279, 280,
- 281, 282, 283, -1, -1, -1, -1, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, -1, -1, 225, -1, -1,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, -1, -1, 246, 247, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 260, -1, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, -1, -1, -1, -1, -1,
- -1, 279, 280, 281, 282, 283, 25, 26, 27, 28,
+ -1, -1, -1, -1, 265, -1, -1, -1, 269, 270,
+ -1, -1, -1, -1, 275, 276, 277, 278, 279, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 289, 290,
+ 291, 292, 293, 294, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ -1, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
@@ -2441,39 +1992,104 @@ static const yytype_int16 yycheck[] =
189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, -1, -1, 225, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 260, -1, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, -1, -1, -1, -1, -1, -1,
- 279, 280, 281, 282, 283, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, -1, -1, 225, -1, -1, -1, -1,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, -1, -1, 246, 247, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 265, -1, -1, -1,
+ 269, -1, -1, -1, -1, -1, 275, 276, 277, 278,
+ 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 289, 290, 291, 292, 293, 294, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, -1, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, -1, -1, 246,
+ 247, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 265, -1,
+ -1, -1, 269, -1, -1, -1, -1, -1, 275, 276,
+ 277, 278, 279, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 289, 290, 291, 292, 293, 294, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, -1, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, -1,
+ -1, 246, 247, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 265, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 275, 276, 277, 278, 279, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 289, 290, 291, 292, 293, 294,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, -1, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, -1, -1, 246, 247, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 260, -1, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, 279,
- 280, 281, 282, 283, 25, 26, 27, 28, 29, 30,
+ -1, -1, 265, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 275, 276, 277, 278, 279, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 289, 290, 291, 292,
+ 293, 294, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
@@ -2493,14 +2109,19 @@ static const yytype_int16 yycheck[] =
191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, -1, -1, 225, -1, -1, -1, 6, 7,
- 8, 9, 10, 11, 12, 13, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 26, 27,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ -1, -1, 233, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 275, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 289, 290,
+ 291, 292, 293, 294, -1, -1, -1, -1, -1, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 279, 280,
- 281, 282, 283, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, -1, -1, -1, -1, -1,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
@@ -2515,19 +2136,49 @@ static const yytype_int16 yycheck[] =
188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, -1, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, -1, -1, 236, 237,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, -1, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, -1, -1, 246, 247,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 255, -1, -1,
- -1, 259, 260, -1, -1, -1, -1, -1, 266, 267,
- 268, 269, 6, 7, 8, 9, 10, 11, 12, 13,
+ -1, -1, -1, -1, -1, -1, -1, 265, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 276, 277,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 289, 290, 291, 292, 293, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 26, 27, 28, 29, 30, 31, 32, 33,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, -1, 232, 233, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 275, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 289, 290, 291, 292, 293, -1, -1, -1,
+ -1, -1, -1, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, -1,
- -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
@@ -2541,19 +2192,73 @@ static const yytype_int16 yycheck[] =
184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, -1,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- -1, -1, 236, 237, -1, -1, -1, -1, -1, -1,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, -1, -1, 233,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 270, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ -1, -1, -1, -1, -1, 289, 290, 291, 292, 293,
+ -1, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, -1, -1, 233, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 255, -1, -1, 258, -1, -1, -1, -1, -1,
- -1, -1, 266, 267, 268, 269, 6, 7, 8, 9,
- 10, 11, 12, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 270, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, -1, -1,
+ -1, -1, -1, 289, 290, 291, 292, 293, -1, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, -1, -1, 233, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 270, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, -1, -1, -1, -1,
+ -1, 289, 290, 291, 292, 293, -1, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
@@ -2568,143 +2273,228 @@ static const yytype_int16 yycheck[] =
190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, -1, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, -1, -1, 236, 237, -1, -1,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, -1, -1, 233, -1, -1, -1, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 289,
+ 290, 291, 292, 293, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, -1, -1, -1, -1, -1, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, -1, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, -1, -1, 246, 247, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 255, -1, -1, -1, 259,
- -1, -1, -1, -1, -1, -1, 266, 267, 268, 269,
- 6, 7, 8, 9, 10, 11, 12, 13, -1, -1,
+ -1, -1, -1, -1, -1, -1, 265, -1, -1, -1,
+ 269, 270, -1, -1, -1, -1, -1, 276, 277, 278,
+ 279, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, -1, -1, -1, -1,
+ -1, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, -1, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, -1,
+ -1, 246, 247, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, -1, -1, -1,
- -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, -1, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, -1, -1,
- 236, 237, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 255,
- -1, -1, 258, -1, -1, -1, -1, -1, -1, -1,
- 266, 267, 268, 269, 6, 7, 8, 9, 10, 11,
- 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, -1, -1, -1, -1, -1, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, -1, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, -1, -1, 236, 237, -1, -1, -1, -1,
+ 265, -1, -1, 268, -1, -1, -1, -1, -1, -1,
+ -1, 276, 277, 278, 279, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 255, 6, 7, 8, 9, 10, 11,
- 12, 13, -1, 265, 266, 267, 268, 269, -1, -1,
- -1, -1, -1, -1, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, -1, -1, -1, -1, -1, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, -1, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, -1, -1, 236, 237, -1, -1, -1, -1,
+ -1, -1, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ -1, -1, -1, -1, -1, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ -1, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, -1, -1, 246, 247, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 255, 6, 7, 8, 9, 10, 11,
- 12, 13, -1, -1, 266, 267, 268, 269, -1, -1,
- -1, -1, -1, -1, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, -1, -1, -1, -1, -1, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, -1, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, -1, -1, 236, 237, -1, -1, -1, -1,
+ -1, -1, -1, -1, 265, -1, -1, -1, 269, -1,
+ -1, -1, -1, -1, -1, 276, 277, 278, 279, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 255, 6, 7, 8, 9, 10, 11,
- 12, 13, -1, -1, 266, 267, 268, 269, -1, -1,
- -1, -1, -1, -1, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, -1, -1, -1, -1, -1, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, -1, -1, 225
+ -1, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, -1, -1, -1, -1, -1, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, -1, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, -1, -1, 246,
+ 247, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 265, -1,
+ -1, 268, -1, -1, -1, -1, -1, -1, -1, 276,
+ 277, 278, 279, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
+ -1, -1, -1, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, -1, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, -1, -1, 246, 247, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 265, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 275, 276, 277, 278, 279, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, -1, -1, -1, -1, -1, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, -1, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, -1, -1, 246, 247, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 265, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 276, 277, 278,
+ 279, -1, -1, -1, -1, -1, -1, -1, -1, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, -1, -1, -1, -1, -1, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, -1, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, -1, -1, 246, 247, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 265, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 276, 277, 278,
+ 279, -1, -1, -1, -1, -1, -1, -1, -1, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, -1, -1, -1, -1, -1, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, -1, -1, 233
};
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
static const yytype_uint16 yystos[] =
{
0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 25, 26, 27, 28, 29, 30, 31, 32,
+ 12, 13, 14, 15, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
@@ -2724,69 +2514,158 @@ static const yytype_uint16 yystos[] =
193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 225, 279, 280, 281, 282, 283, 284, 319, 320, 323,
- 324, 325, 326, 330, 331, 332, 333, 334, 335, 338,
- 339, 340, 341, 343, 345, 346, 347, 384, 385, 386,
- 255, 255, 224, 259, 346, 224, 265, 265, 387, 256,
- 262, 327, 328, 329, 339, 343, 262, 265, 224, 224,
- 265, 340, 343, 257, 344, 0, 385, 225, 342, 55,
- 224, 336, 337, 259, 349, 343, 265, 344, 259, 366,
- 328, 327, 329, 224, 224, 255, 264, 344, 259, 262,
- 265, 322, 224, 226, 227, 228, 229, 230, 231, 232,
- 233, 236, 237, 255, 258, 266, 267, 268, 269, 289,
- 290, 291, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 343, 257, 256, 262, 264, 256, 262,
- 348, 339, 343, 350, 351, 265, 265, 14, 15, 16,
- 18, 19, 20, 21, 22, 23, 24, 223, 259, 260,
- 265, 300, 313, 315, 317, 319, 323, 343, 356, 357,
- 358, 359, 367, 368, 369, 372, 375, 376, 383, 344,
- 264, 344, 259, 315, 354, 264, 321, 224, 262, 265,
- 300, 300, 317, 236, 237, 257, 261, 256, 256, 262,
- 222, 315, 255, 300, 270, 271, 272, 267, 269, 234,
- 235, 238, 239, 273, 274, 240, 241, 277, 276, 275,
- 242, 244, 243, 278, 258, 258, 313, 225, 313, 318,
- 337, 350, 343, 224, 352, 353, 260, 351, 265, 265,
- 378, 255, 255, 265, 265, 317, 255, 317, 263, 255,
- 260, 360, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 264, 316, 262, 265, 260, 357, 354, 264,
- 354, 355, 354, 350, 224, 256, 292, 317, 224, 315,
- 300, 300, 300, 302, 302, 303, 303, 304, 304, 304,
- 304, 305, 305, 306, 307, 308, 309, 310, 311, 314,
- 258, 260, 352, 344, 262, 265, 357, 379, 317, 265,
- 317, 263, 377, 367, 315, 315, 354, 260, 262, 260,
- 258, 317, 265, 353, 223, 356, 368, 380, 256, 256,
- 317, 332, 339, 371, 361, 260, 354, 263, 255, 371,
- 381, 382, 363, 364, 365, 370, 373, 224, 256, 260,
- 315, 317, 265, 256, 17, 359, 358, 259, 264, 358,
- 362, 366, 256, 317, 362, 363, 367, 374, 354, 265,
- 260
+ 223, 224, 225, 226, 227, 228, 229, 230, 233, 275,
+ 289, 290, 291, 292, 293, 294, 329, 330, 333, 334,
+ 335, 336, 340, 341, 342, 343, 344, 345, 348, 349,
+ 350, 351, 353, 355, 356, 357, 394, 395, 396, 265,
+ 265, 232, 269, 356, 232, 275, 275, 397, 266, 272,
+ 337, 338, 339, 349, 353, 272, 275, 232, 232, 275,
+ 350, 353, 267, 354, 0, 395, 232, 352, 57, 232,
+ 346, 347, 269, 359, 353, 275, 354, 269, 376, 338,
+ 337, 339, 232, 232, 265, 274, 354, 269, 272, 275,
+ 332, 232, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 246, 247, 265, 268, 276, 277, 278, 279,
+ 299, 300, 301, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 353, 267, 266, 272, 274, 266,
+ 272, 358, 349, 353, 360, 361, 275, 275, 16, 17,
+ 18, 20, 21, 22, 23, 24, 25, 26, 231, 269,
+ 270, 275, 310, 323, 325, 327, 329, 333, 353, 366,
+ 367, 368, 369, 377, 378, 379, 382, 385, 386, 393,
+ 354, 274, 354, 269, 325, 364, 274, 331, 232, 272,
+ 275, 310, 310, 327, 246, 247, 267, 271, 266, 266,
+ 272, 230, 325, 265, 310, 280, 281, 282, 277, 279,
+ 244, 245, 248, 249, 283, 284, 250, 251, 287, 286,
+ 285, 252, 254, 253, 288, 268, 268, 323, 232, 323,
+ 328, 347, 360, 353, 232, 362, 363, 270, 361, 275,
+ 275, 388, 265, 265, 275, 275, 327, 265, 327, 273,
+ 265, 270, 370, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 274, 326, 272, 275, 270, 367, 364,
+ 274, 364, 365, 364, 360, 232, 266, 302, 327, 232,
+ 325, 310, 310, 310, 312, 312, 313, 313, 314, 314,
+ 314, 314, 315, 315, 316, 317, 318, 319, 320, 321,
+ 324, 268, 270, 362, 354, 272, 275, 367, 389, 327,
+ 275, 327, 273, 387, 377, 325, 325, 364, 270, 272,
+ 270, 268, 327, 275, 363, 231, 366, 378, 390, 266,
+ 266, 327, 342, 349, 381, 371, 270, 364, 273, 265,
+ 381, 391, 392, 373, 374, 375, 380, 383, 232, 266,
+ 270, 325, 327, 275, 266, 19, 369, 368, 269, 274,
+ 368, 372, 376, 266, 327, 372, 373, 377, 384, 364,
+ 275, 270
};
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
-
-
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. However,
- YYFAIL appears to be in use. Nevertheless, it is formally deprecated
- in Bison 2.4.2's NEWS entry, where a plan to phase it out is
- discussed. */
-
-#define YYFAIL goto yyerrlab
-#if defined YYFAIL
- /* This is here to suppress warnings from the GCC cpp's
- -Wunused-macros. Normally we don't worry about that warning, but
- some users do, and we want to make it easy for users to remove
- YYFAIL uses, which will produce warnings from Bison 2.5. */
-#endif
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint16 yyr1[] =
+{
+ 0, 298, 299, 300, 300, 300, 300, 300, 300, 300,
+ 300, 300, 300, 300, 300, 301, 301, 301, 301, 301,
+ 301, 302, 303, 304, 305, 305, 306, 306, 307, 307,
+ 308, 309, 309, 310, 310, 310, 310, 311, 311, 311,
+ 311, 312, 312, 312, 312, 313, 313, 313, 314, 314,
+ 314, 315, 315, 315, 315, 315, 316, 316, 316, 317,
+ 317, 318, 318, 319, 319, 320, 320, 321, 321, 322,
+ 322, 323, 324, 323, 325, 325, 326, 326, 326, 326,
+ 326, 326, 326, 326, 326, 326, 326, 327, 327, 328,
+ 329, 329, 329, 329, 329, 329, 329, 329, 329, 331,
+ 330, 332, 332, 333, 334, 334, 335, 335, 336, 337,
+ 337, 338, 338, 338, 338, 339, 340, 340, 340, 340,
+ 340, 341, 341, 341, 341, 341, 342, 342, 343, 344,
+ 344, 344, 344, 345, 346, 346, 347, 347, 347, 348,
+ 349, 349, 350, 350, 350, 350, 350, 350, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 352, 352, 353,
+ 353, 354, 354, 354, 354, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
+ 356, 356, 356, 358, 357, 359, 357, 360, 360, 361,
+ 361, 362, 362, 363, 363, 364, 364, 364, 365, 365,
+ 366, 367, 367, 368, 368, 368, 368, 368, 368, 368,
+ 369, 370, 371, 369, 372, 372, 374, 373, 375, 373,
+ 376, 376, 377, 377, 378, 378, 379, 380, 380, 381,
+ 381, 383, 382, 384, 384, 385, 385, 387, 386, 388,
+ 386, 389, 386, 390, 390, 391, 391, 392, 392, 393,
+ 393, 393, 393, 393, 394, 394, 395, 395, 395, 397,
+ 396
+};
+
+ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 1, 4, 1, 3, 2,
+ 2, 1, 1, 1, 2, 2, 2, 1, 2, 3,
+ 2, 1, 1, 1, 2, 2, 2, 1, 1, 1,
+ 1, 1, 3, 3, 3, 1, 3, 3, 1, 3,
+ 3, 1, 3, 3, 3, 3, 1, 3, 3, 1,
+ 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
+ 3, 1, 0, 6, 1, 3, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
+ 2, 2, 4, 2, 3, 4, 2, 3, 4, 0,
+ 6, 2, 3, 2, 1, 1, 2, 3, 3, 2,
+ 3, 2, 1, 2, 1, 1, 1, 3, 4, 6,
+ 5, 1, 2, 3, 5, 4, 1, 2, 1, 1,
+ 1, 1, 1, 4, 1, 3, 1, 3, 1, 1,
+ 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 4, 1, 3, 1,
+ 2, 2, 3, 3, 4, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 0, 6, 0, 5, 1, 2, 3,
+ 4, 1, 3, 1, 2, 1, 3, 4, 1, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 0, 0, 5, 1, 1, 0, 2, 0, 2,
+ 2, 3, 1, 2, 1, 2, 5, 3, 1, 1,
+ 4, 0, 8, 0, 1, 3, 2, 0, 6, 0,
+ 8, 0, 7, 1, 1, 1, 0, 2, 3, 2,
+ 2, 2, 3, 2, 1, 2, 1, 1, 1, 0,
+ 3
+};
+
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
#define YYRECOVERING() (!!yyerrstatus)
@@ -2803,27 +2682,15 @@ do \
else \
{ \
yyerror (pParseContext, YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-while (YYID (0))
+ YYERROR; \
+ } \
+while (0)
/* Error token number */
-#define YYTERROR 1
-#define YYERRCODE 256
-
-
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
+#define YYTERROR 1
+#define YYERRCODE 256
-/* YYLEX -- calling `yylex' with the right arguments. */
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, YYLEX_PARAM)
-#else
-# define YYLEX yylex (&yylval, parseContext)
-#endif
/* Enable debugging if requested. */
#if YYDEBUG
@@ -2833,58 +2700,47 @@ while (YYID (0))
# define YYFPRINTF fprintf
# endif
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (YYID (0))
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, \
- Type, Value, pParseContext); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (YYID (0))
+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value, pParseContext); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT. |
+`----------------------------------------*/
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
- glslang::TParseContext* pParseContext;
-#endif
{
FILE *yyo = yyoutput;
YYUSE (yyo);
+ YYUSE (pParseContext);
if (!yyvaluep)
return;
- YYUSE (pParseContext);
# ifdef YYPRINT
if (yytype < YYNTOKENS)
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
- YYUSE (yyoutput);
# endif
- switch (yytype)
- {
- default:
- break;
- }
+ YYUSE (yytype);
}
@@ -2892,23 +2748,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext)
| Print this symbol on YYOUTPUT. |
`--------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep, pParseContext)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
- glslang::TParseContext* pParseContext;
-#endif
{
- if (yytype < YYNTOKENS)
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
- else
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+ YYFPRINTF (yyoutput, "%s %s (",
+ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext);
YYFPRINTF (yyoutput, ")");
@@ -2919,16 +2763,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, pParseContext)
| TOP (included). |
`------------------------------------------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
- yytype_int16 *yybottom;
- yytype_int16 *yytop;
-#endif
{
YYFPRINTF (stderr, "Stack now");
for (; yybottom <= yytop; yybottom++)
@@ -2939,50 +2775,42 @@ yy_stack_print (yybottom, yytop)
YYFPRINTF (stderr, "\n");
}
-# define YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (yydebug) \
- yy_stack_print ((Bottom), (Top)); \
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
/*------------------------------------------------.
| Report that the YYRULE is going to be reduced. |
`------------------------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule, pParseContext)
- YYSTYPE *yyvsp;
- int yyrule;
- glslang::TParseContext* pParseContext;
-#endif
+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext)
{
+ unsigned long int yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
int yyi;
- unsigned long int yylno = yyrline[yyrule];
YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
- yyrule - 1, yylno);
+ yyrule - 1, yylno);
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
YYFPRINTF (stderr, " $%d = ", yyi + 1);
- yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
- &(yyvsp[(yyi + 1) - (yynrhs)])
- , pParseContext);
+ yy_symbol_print (stderr,
+ yystos[yyssp[yyi + 1 - yynrhs]],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ , pParseContext);
YYFPRINTF (stderr, "\n");
}
}
-# define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
- yy_reduce_print (yyvsp, Rule, pParseContext); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyssp, yyvsp, Rule, pParseContext); \
+} while (0)
/* Nonzero means print parse trace. It is left uninitialized so that
multiple parsers can coexist. */
@@ -2996,7 +2824,7 @@ int yydebug;
/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
+#ifndef YYINITDEPTH
# define YYINITDEPTH 200
#endif
@@ -3019,15 +2847,8 @@ int yydebug;
# define yystrlen strlen
# else
/* Return the length of YYSTR. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static YYSIZE_T
yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
- const char *yystr;
-#endif
{
YYSIZE_T yylen;
for (yylen = 0; yystr[yylen]; yylen++)
@@ -3043,16 +2864,8 @@ yystrlen (yystr)
# else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
YYDEST. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static char *
yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-#endif
{
char *yyd = yydest;
const char *yys = yysrc;
@@ -3082,27 +2895,27 @@ yytnamerr (char *yyres, const char *yystr)
char const *yyp = yystr;
for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
do_not_strip_quotes: ;
}
@@ -3137,10 +2950,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
int yycount = 0;
/* There are many possibilities here to consider:
- - Assume YYFAIL is not used. It's too flawed to consider. See
- <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
- for details. YYERROR is fine as it does not invoke this
- function.
- If this state is a consistent state with a default action, then
the only way this function was invoked is if the default action
is an error action. In that case, don't check for expected
@@ -3257,33 +3066,18 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep, pParseContext)
- const char *yymsg;
- int yytype;
- YYSTYPE *yyvaluep;
- glslang::TParseContext* pParseContext;
-#endif
{
YYUSE (yyvaluep);
YYUSE (pParseContext);
-
if (!yymsg)
yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
- switch (yytype)
- {
-
- default:
- break;
- }
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
}
@@ -3293,56 +3087,18 @@ yydestruct (yymsg, yytype, yyvaluep, pParseContext)
| yyparse. |
`----------*/
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
- void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
int
yyparse (glslang::TParseContext* pParseContext)
-#else
-int
-yyparse (pParseContext)
- glslang::TParseContext* pParseContext;
-#endif
-#endif
{
/* The lookahead symbol. */
int yychar;
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized. */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
- _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
- _Pragma ("GCC diagnostic pop")
-#else
+/* The semantic value of the lookahead symbol. */
/* Default value used for initialization, for pacifying older GCCs
or non-GCC compilers. */
-static YYSTYPE yyval_default;
-# define YY_INITIAL_VALUE(Value) = Value
-#endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
-/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
+YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
+YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
/* Number of syntax errors so far. */
int yynerrs;
@@ -3352,8 +3108,8 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
int yyerrstatus;
/* The stacks and their tools:
- `yyss': related to states.
- `yyvs': related to semantic values.
+ 'yyss': related to states.
+ 'yyvs': related to semantic values.
Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
@@ -3421,23 +3177,23 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
#ifdef yyoverflow
{
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. This used to be a
- conditional around just the two extra args, but that might
- be undefined if yyoverflow is a macro. */
- yyoverflow (YY_("memory exhausted"),
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yystacksize);
-
- yyss = yyss1;
- yyvs = yyvs1;
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
}
#else /* no yyoverflow */
# ifndef YYSTACK_RELOCATE
@@ -3445,22 +3201,22 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
# else
/* Extend the stack our own way. */
if (YYMAXDEPTH <= yystacksize)
- goto yyexhaustedlab;
+ goto yyexhaustedlab;
yystacksize *= 2;
if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
+ yystacksize = YYMAXDEPTH;
{
- yytype_int16 *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss_alloc, yyss);
- YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
}
# endif
#endif /* no yyoverflow */
@@ -3469,10 +3225,10 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
yyvsp = yyvs + yysize - 1;
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
+ (unsigned long int) yystacksize));
if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
+ YYABORT;
}
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
@@ -3501,7 +3257,7 @@ yybackup:
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
+ yychar = yylex (&yylval, parseContext);
}
if (yychar <= YYEOF)
@@ -3566,7 +3322,7 @@ yyreduce:
yylen = yyr2[yyn];
/* If YYLEN is nonzero, implement the default value of the action:
- `$$ = $1'.
+ '$$ = $1'.
Otherwise, the following line sets YYVAL to garbage.
This behavior is undocumented and Bison
@@ -3580,259 +3336,280 @@ yyreduce:
switch (yyn)
{
case 2:
-/* Line 1792 of yacc.c */
-#line 250 "glslang.y"
+#line 253 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[(1) - (1)].lex).loc, (yyvsp[(1) - (1)].lex).symbol, (yyvsp[(1) - (1)].lex).string);
+ (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
}
+#line 3344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 3:
-/* Line 1792 of yacc.c */
-#line 256 "glslang.y"
+#line 259 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
+#line 3352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 4:
-/* Line 1792 of yacc.c */
-#line 259 "glslang.y"
+#line 262 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i, (yyvsp[(1) - (1)].lex).loc, true);
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
+#line 3360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 5:
-/* Line 1792 of yacc.c */
-#line 262 "glslang.y"
+#line 265 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned literal");
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u, (yyvsp[(1) - (1)].lex).loc, true);
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
+#line 3369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 6:
-/* Line 1792 of yacc.c */
-#line 266 "glslang.y"
+#line 269 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer literal");
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i64, (yyvsp[(1) - (1)].lex).loc, true);
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true);
}
+#line 3378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 7:
-/* Line 1792 of yacc.c */
-#line 270 "glslang.y"
+#line 273 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer literal");
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u64, (yyvsp[(1) - (1)].lex).loc, true);
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true);
}
+#line 3387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 8:
-/* Line 1792 of yacc.c */
-#line 274 "glslang.y"
+#line 277 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat, (yyvsp[(1) - (1)].lex).loc, true);
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
+#endif
}
+#line 3398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 9:
-/* Line 1792 of yacc.c */
-#line 277 "glslang.y"
+#line 283 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double literal");
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtDouble, (yyvsp[(1) - (1)].lex).loc, true);
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
+#endif
}
+#line 3409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 10:
-/* Line 1792 of yacc.c */
-#line 281 "glslang.y"
+#line 289 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float literal");
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat16, (yyvsp[(1) - (1)].lex).loc, true);
-#endif
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
+#line 3417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 11:
-/* Line 1792 of yacc.c */
-#line 287 "glslang.y"
+#line 292 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).b, (yyvsp[(1) - (1)].lex).loc, true);
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
}
+#line 3426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 12:
-/* Line 1792 of yacc.c */
-#line 290 "glslang.y"
+#line 296 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode);
- if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
- (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
+#ifdef AMD_EXTENSIONS
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true);
+#endif
}
+#line 3437 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 13:
-/* Line 1792 of yacc.c */
-#line 298 "glslang.y"
+#line 302 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
+#line 3445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 14:
-/* Line 1792 of yacc.c */
-#line 301 "glslang.y"
+#line 305 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.intermTypedNode), (yyvsp[(3) - (4)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
+ if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
+ (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
+#line 3455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 15:
-/* Line 1792 of yacc.c */
-#line 304 "glslang.y"
+#line 313 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
+#line 3463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 16:
-/* Line 1792 of yacc.c */
-#line 307 "glslang.y"
+#line 316 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[(3) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode), *(yyvsp[(3) - (3)].lex).string);
+ (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
}
+#line 3471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 17:
-/* Line 1792 of yacc.c */
-#line 310 "glslang.y"
+#line 319 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode));
- parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "++", (yyvsp[(1) - (2)].interm.intermTypedNode));
- (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "++", EOpPostIncrement, (yyvsp[(1) - (2)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
+#line 3479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 18:
-/* Line 1792 of yacc.c */
-#line 315 "glslang.y"
+#line 322 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode));
- parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "--", (yyvsp[(1) - (2)].interm.intermTypedNode));
- (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "--", EOpPostDecrement, (yyvsp[(1) - (2)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
}
+#line 3487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 19:
-/* Line 1792 of yacc.c */
-#line 323 "glslang.y"
+#line 325 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.integerCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "[]");
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+ parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
+ parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
}
+#line 3497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 20:
-/* Line 1792 of yacc.c */
-#line 330 "glslang.y"
+#line 330 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[(1) - (1)].interm).loc, (yyvsp[(1) - (1)].interm).function, (yyvsp[(1) - (1)].interm).intermNode);
- delete (yyvsp[(1) - (1)].interm).function;
+ parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
+ parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
}
+#line 3507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 21:
-/* Line 1792 of yacc.c */
-#line 337 "glslang.y"
+#line 338 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (1)].interm);
+ parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
+#line 3516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 22:
-/* Line 1792 of yacc.c */
-#line 343 "glslang.y"
+#line 345 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (2)].interm);
- (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
+ (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
+ delete (yyvsp[0].interm).function;
}
+#line 3525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 23:
-/* Line 1792 of yacc.c */
-#line 347 "glslang.y"
+#line 352 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (2)].interm);
- (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
+ (yyval.interm) = (yyvsp[0].interm);
}
+#line 3533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 24:
-/* Line 1792 of yacc.c */
-#line 354 "glslang.y"
+#line 358 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (2)].interm);
+ (yyval.interm) = (yyvsp[-1].interm);
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
}
+#line 3542 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 25:
-/* Line 1792 of yacc.c */
-#line 357 "glslang.y"
+#line 362 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (1)].interm);
+ (yyval.interm) = (yyvsp[-1].interm);
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
}
+#line 3551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 26:
-/* Line 1792 of yacc.c */
-#line 363 "glslang.y"
+#line 369 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- TParameter param = { 0, new TType };
- param.type->shallowCopy((yyvsp[(2) - (2)].interm.intermTypedNode)->getType());
- (yyvsp[(1) - (2)].interm).function->addParameter(param);
- (yyval.interm).function = (yyvsp[(1) - (2)].interm).function;
- (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode);
+ (yyval.interm) = (yyvsp[-1].interm);
}
+#line 3559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 27:
-/* Line 1792 of yacc.c */
-#line 370 "glslang.y"
+#line 372 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- TParameter param = { 0, new TType };
- param.type->shallowCopy((yyvsp[(3) - (3)].interm.intermTypedNode)->getType());
- (yyvsp[(1) - (3)].interm).function->addParameter(param);
- (yyval.interm).function = (yyvsp[(1) - (3)].interm).function;
- (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc);
+ (yyval.interm) = (yyvsp[0].interm);
}
+#line 3567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 28:
-/* Line 1792 of yacc.c */
-#line 380 "glslang.y"
+#line 378 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (2)].interm);
+ TParameter param = { 0, new TType };
+ param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
+ (yyvsp[-1].interm).function->addParameter(param);
+ (yyval.interm).function = (yyvsp[-1].interm).function;
+ (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
}
+#line 3579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 29:
-/* Line 1792 of yacc.c */
-#line 388 "glslang.y"
+#line 385 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ TParameter param = { 0, new TType };
+ param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
+ (yyvsp[-2].interm).function->addParameter(param);
+ (yyval.interm).function = (yyvsp[-2].interm).function;
+ (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
+ }
+#line 3591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 30:
+#line 395 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm) = (yyvsp[-1].interm);
+ }
+#line 3599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 31:
+#line 403 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// Constructor
(yyval.interm).intermNode = 0;
- (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type));
+ (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
+#line 3609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 30:
-/* Line 1792 of yacc.c */
-#line 393 "glslang.y"
+ case 32:
+#line 408 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
//
// Should be a method or subroutine call, but we haven't recognized the arguments yet.
@@ -3840,18 +3617,18 @@ yyreduce:
(yyval.interm).function = 0;
(yyval.interm).intermNode = 0;
- TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode();
+ TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode();
if (method) {
(yyval.interm).function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength);
(yyval.interm).intermNode = method->getObject();
} else {
- TIntermSymbol* symbol = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsSymbolNode();
+ TIntermSymbol* symbol = (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode();
if (symbol) {
parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName());
TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid));
(yyval.interm).function = function;
} else
- parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", "");
+ parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", "");
}
if ((yyval.interm).function == 0) {
@@ -3860,3916 +3637,4024 @@ yyreduce:
(yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull);
}
}
+#line 3641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 31:
-/* Line 1792 of yacc.c */
-#line 423 "glslang.y"
+ case 33:
+#line 438 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.variableCheck((yyvsp[(1) - (1)].interm.intermTypedNode));
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
- if (TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode())
- parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
+ parseContext.variableCheck((yyvsp[0].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+ if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
+ parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
}
+#line 3652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 32:
-/* Line 1792 of yacc.c */
-#line 429 "glslang.y"
+ case 34:
+#line 444 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "++", (yyvsp[(2) - (2)].interm.intermTypedNode));
- (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "++", EOpPreIncrement, (yyvsp[(2) - (2)].interm.intermTypedNode));
+ parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
}
+#line 3661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 33:
-/* Line 1792 of yacc.c */
-#line 433 "glslang.y"
+ case 35:
+#line 448 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "--", (yyvsp[(2) - (2)].interm.intermTypedNode));
- (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "--", EOpPreDecrement, (yyvsp[(2) - (2)].interm.intermTypedNode));
+ parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
}
+#line 3670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 34:
-/* Line 1792 of yacc.c */
-#line 437 "glslang.y"
+ case 36:
+#line 452 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (2)].interm).op != EOpNull) {
+ if ((yyvsp[-1].interm).op != EOpNull) {
char errorOp[2] = {0, 0};
- switch((yyvsp[(1) - (2)].interm).op) {
+ switch((yyvsp[-1].interm).op) {
case EOpNegative: errorOp[0] = '-'; break;
case EOpLogicalNot: errorOp[0] = '!'; break;
case EOpBitwiseNot: errorOp[0] = '~'; break;
default: break; // some compilers want this
}
- (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].interm).loc, errorOp, (yyvsp[(1) - (2)].interm).op, (yyvsp[(2) - (2)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].interm).loc, errorOp, (yyvsp[-1].interm).op, (yyvsp[0].interm.intermTypedNode));
} else {
- (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
}
- break;
-
- case 35:
-/* Line 1792 of yacc.c */
-#line 457 "glslang.y"
- { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNull; }
- break;
-
- case 36:
-/* Line 1792 of yacc.c */
-#line 458 "glslang.y"
- { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNegative; }
+#line 3691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 37:
-/* Line 1792 of yacc.c */
-#line 459 "glslang.y"
- { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLogicalNot; }
+#line 472 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
+#line 3697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 38:
-/* Line 1792 of yacc.c */
-#line 460 "glslang.y"
- { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpBitwiseNot;
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise not"); }
+#line 473 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
+#line 3703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 39:
-/* Line 1792 of yacc.c */
-#line 466 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 474 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
+#line 3709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 40:
-/* Line 1792 of yacc.c */
-#line 467 "glslang.y"
- {
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "*", EOpMul, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
- if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
- }
+#line 475 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
+#line 3716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 41:
-/* Line 1792 of yacc.c */
-#line 472 "glslang.y"
- {
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "/", EOpDiv, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
- if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
- }
+#line 481 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 42:
-/* Line 1792 of yacc.c */
-#line 477 "glslang.y"
+#line 482 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "%");
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "%", EOpMod, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
+#line 3732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 43:
-/* Line 1792 of yacc.c */
-#line 486 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 487 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ if ((yyval.interm.intermTypedNode) == 0)
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+ }
+#line 3742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 44:
-/* Line 1792 of yacc.c */
-#line 487 "glslang.y"
+#line 492 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "+", EOpAdd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%");
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
+#line 3753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 45:
-/* Line 1792 of yacc.c */
-#line 492 "glslang.y"
- {
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "-", EOpSub, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
- if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
- }
+#line 501 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 46:
-/* Line 1792 of yacc.c */
-#line 500 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 502 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ if ((yyval.interm.intermTypedNode) == 0)
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+ }
+#line 3769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 47:
-/* Line 1792 of yacc.c */
-#line 501 "glslang.y"
+#line 507 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift left");
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<<", EOpLeftShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
+#line 3779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 48:
-/* Line 1792 of yacc.c */
-#line 507 "glslang.y"
- {
- parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift right");
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">>", EOpRightShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
- if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
- }
+#line 515 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 49:
-/* Line 1792 of yacc.c */
-#line 516 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 516 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left");
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ if ((yyval.interm.intermTypedNode) == 0)
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+ }
+#line 3796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 50:
-/* Line 1792 of yacc.c */
-#line 517 "glslang.y"
+#line 522 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<", EOpLessThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right");
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
+#line 3807 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 51:
-/* Line 1792 of yacc.c */
-#line 522 "glslang.y"
- {
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">", EOpGreaterThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
- if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
- }
+#line 531 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 52:
-/* Line 1792 of yacc.c */
-#line 527 "glslang.y"
+#line 532 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<=", EOpLessThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
+#line 3823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 53:
-/* Line 1792 of yacc.c */
-#line 532 "glslang.y"
+#line 537 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
+#line 3833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 54:
-/* Line 1792 of yacc.c */
-#line 540 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 542 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ if ((yyval.interm.intermTypedNode) == 0)
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+ }
+#line 3843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 55:
-/* Line 1792 of yacc.c */
-#line 541 "glslang.y"
+#line 547 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison");
- parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "==");
- parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "==");
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "==", EOpEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
+#line 3853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 56:
-/* Line 1792 of yacc.c */
-#line 549 "glslang.y"
- {
- parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison");
- parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!=");
- parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!=");
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "!=", EOpNotEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
- if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
- }
+#line 555 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 57:
-/* Line 1792 of yacc.c */
-#line 560 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 556 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
+ parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
+ parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "==", EOpEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ if ((yyval.interm.intermTypedNode) == 0)
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+ }
+#line 3872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 58:
-/* Line 1792 of yacc.c */
-#line 561 "glslang.y"
+#line 564 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise and");
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&", EOpAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
+ parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
+ parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "!=", EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
+#line 3885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 59:
-/* Line 1792 of yacc.c */
-#line 570 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 575 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 60:
-/* Line 1792 of yacc.c */
-#line 571 "glslang.y"
+#line 576 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise exclusive or");
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^", EOpExclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and");
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
+#line 3902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 61:
-/* Line 1792 of yacc.c */
-#line 580 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 585 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 62:
-/* Line 1792 of yacc.c */
-#line 581 "glslang.y"
+#line 586 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise inclusive or");
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "|", EOpInclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or");
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
+#line 3919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 63:
-/* Line 1792 of yacc.c */
-#line 590 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 595 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 64:
-/* Line 1792 of yacc.c */
-#line 591 "glslang.y"
+#line 596 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&&", EOpLogicalAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or");
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
+#line 3936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 65:
-/* Line 1792 of yacc.c */
-#line 599 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 605 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 66:
-/* Line 1792 of yacc.c */
-#line 600 "glslang.y"
+#line 606 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^^", EOpLogicalXor, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
+#line 3952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 67:
-/* Line 1792 of yacc.c */
-#line 608 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 614 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 68:
-/* Line 1792 of yacc.c */
-#line 609 "glslang.y"
+#line 615 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "||", EOpLogicalOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
+#line 3968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 69:
-/* Line 1792 of yacc.c */
-#line 617 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 623 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 70:
-/* Line 1792 of yacc.c */
-#line 618 "glslang.y"
+#line 624 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- ++parseContext.controlFlowNestingLevel;
+ (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ if ((yyval.interm.intermTypedNode) == 0)
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
+#line 3984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 71:
-/* Line 1792 of yacc.c */
-#line 621 "glslang.y"
- {
- --parseContext.controlFlowNestingLevel;
- parseContext.boolCheck((yyvsp[(2) - (6)].lex).loc, (yyvsp[(1) - (6)].interm.intermTypedNode));
- parseContext.rValueErrorCheck((yyvsp[(2) - (6)].lex).loc, "?", (yyvsp[(1) - (6)].interm.intermTypedNode));
- parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode));
- parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(6) - (6)].interm.intermTypedNode));
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[(1) - (6)].interm.intermTypedNode), (yyvsp[(4) - (6)].interm.intermTypedNode), (yyvsp[(6) - (6)].interm.intermTypedNode), (yyvsp[(2) - (6)].lex).loc);
- if ((yyval.interm.intermTypedNode) == 0) {
- parseContext.binaryOpError((yyvsp[(2) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(6) - (6)].interm.intermTypedNode)->getCompleteString());
- (yyval.interm.intermTypedNode) = (yyvsp[(6) - (6)].interm.intermTypedNode);
- }
- }
+#line 632 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 3990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 72:
-/* Line 1792 of yacc.c */
-#line 636 "glslang.y"
- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+#line 633 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ ++parseContext.controlFlowNestingLevel;
+ }
+#line 3998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 73:
-/* Line 1792 of yacc.c */
-#line 637 "glslang.y"
- {
- parseContext.arrayObjectCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array assignment");
- parseContext.opaqueCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=");
- parseContext.specializationCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=");
- parseContext.lValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode));
- parseContext.rValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(3) - (3)].interm.intermTypedNode));
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[(2) - (3)].interm).op, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].interm).loc);
+#line 636 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ --parseContext.controlFlowNestingLevel;
+ parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode));
+ parseContext.rValueErrorCheck((yyvsp[-4].lex).loc, "?", (yyvsp[-5].interm.intermTypedNode));
+ parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode));
+ parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc);
if ((yyval.interm.intermTypedNode) == 0) {
- parseContext.assignError((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString());
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
+ parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
+#line 4015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 74:
-/* Line 1792 of yacc.c */
-#line 652 "glslang.y"
- {
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
- (yyval.interm).op = EOpAssign;
- }
+#line 651 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 75:
-/* Line 1792 of yacc.c */
-#line 656 "glslang.y"
- {
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
- (yyval.interm).op = EOpMulAssign;
+#line 652 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment");
+ parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
+ parseContext.specializationCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
+ parseContext.lValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode));
+ parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].interm).loc);
+ if ((yyval.interm.intermTypedNode) == 0) {
+ parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+ }
}
+#line 4038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 76:
-/* Line 1792 of yacc.c */
-#line 660 "glslang.y"
+#line 667 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
- (yyval.interm).op = EOpDivAssign;
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
+ (yyval.interm).op = EOpAssign;
}
+#line 4047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 77:
-/* Line 1792 of yacc.c */
-#line 664 "glslang.y"
+#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "%=");
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
- (yyval.interm).op = EOpModAssign;
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
+ (yyval.interm).op = EOpMulAssign;
}
+#line 4056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 78:
-/* Line 1792 of yacc.c */
-#line 669 "glslang.y"
+#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
- (yyval.interm).op = EOpAddAssign;
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
+ (yyval.interm).op = EOpDivAssign;
}
+#line 4065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 79:
-/* Line 1792 of yacc.c */
-#line 673 "glslang.y"
+#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
- (yyval.interm).op = EOpSubAssign;
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%=");
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
+ (yyval.interm).op = EOpModAssign;
}
+#line 4075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 80:
-/* Line 1792 of yacc.c */
-#line 677 "glslang.y"
+#line 684 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift left assign");
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
+ (yyval.interm).op = EOpAddAssign;
}
+#line 4084 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 81:
-/* Line 1792 of yacc.c */
-#line 681 "glslang.y"
+#line 688 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift right assign");
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
+ (yyval.interm).op = EOpSubAssign;
}
+#line 4093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 82:
-/* Line 1792 of yacc.c */
-#line 685 "glslang.y"
+#line 692 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-and assign");
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpAndAssign;
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
+ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
}
+#line 4102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 83:
-/* Line 1792 of yacc.c */
-#line 689 "glslang.y"
+#line 696 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-xor assign");
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
+ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
}
+#line 4111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 84:
-/* Line 1792 of yacc.c */
-#line 693 "glslang.y"
+#line 700 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-or assign");
- (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
+ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
}
+#line 4120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 85:
-/* Line 1792 of yacc.c */
-#line 700 "glslang.y"
+#line 704 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
+ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
}
+#line 4129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 86:
-/* Line 1792 of yacc.c */
-#line 703 "glslang.y"
+#line 708 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.samplerConstructorLocationCheck((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(3) - (3)].interm.intermTypedNode));
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc);
- if ((yyval.interm.intermTypedNode) == 0) {
- parseContext.binaryOpError((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString());
- (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode);
- }
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
+ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
}
+#line 4138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 87:
-/* Line 1792 of yacc.c */
-#line 714 "glslang.y"
+#line 715 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.constantValueCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "");
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
+#line 4146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 88:
-/* Line 1792 of yacc.c */
-#line 721 "glslang.y"
+#line 718 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.handleFunctionDeclarator((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).function, true /* prototype */);
- (yyval.interm.intermNode) = 0;
- // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
+ parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
+ if ((yyval.interm.intermTypedNode) == 0) {
+ parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+ }
}
+#line 4159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 89:
-/* Line 1792 of yacc.c */
-#line 726 "glslang.y"
+#line 729 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (2)].interm).intermNode && (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate())
- (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
- (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermNode;
+ parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
+#line 4168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 90:
-/* Line 1792 of yacc.c */
-#line 731 "glslang.y"
+#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ENoProfile, 130, 0, "precision statement");
-
- // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope
- parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]);
- parseContext.setDefaultPrecision((yyvsp[(1) - (4)].lex).loc, (yyvsp[(3) - (4)].interm.type), (yyvsp[(2) - (4)].interm.type).qualifier.precision);
+ parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */);
(yyval.interm.intermNode) = 0;
+ // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
}
+#line 4178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 91:
-/* Line 1792 of yacc.c */
-#line 739 "glslang.y"
+#line 741 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.declareBlock((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).typeList);
- (yyval.interm.intermNode) = 0;
+ if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate())
+ (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
+ (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
}
+#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 92:
-/* Line 1792 of yacc.c */
-#line 743 "glslang.y"
+#line 746 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.declareBlock((yyvsp[(1) - (3)].interm).loc, *(yyvsp[(1) - (3)].interm).typeList, (yyvsp[(2) - (3)].lex).string);
+ parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement");
+
+ // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope
+ parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]);
+ parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
(yyval.interm.intermNode) = 0;
}
+#line 4201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 93:
-/* Line 1792 of yacc.c */
-#line 747 "glslang.y"
+#line 754 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.declareBlock((yyvsp[(1) - (4)].interm).loc, *(yyvsp[(1) - (4)].interm).typeList, (yyvsp[(2) - (4)].lex).string, (yyvsp[(3) - (4)].interm).arraySizes);
+ parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
(yyval.interm.intermNode) = 0;
}
+#line 4210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 94:
-/* Line 1792 of yacc.c */
-#line 751 "glslang.y"
+#line 758 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier);
- parseContext.updateStandaloneQualifierDefaults((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type));
+ parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
+#line 4219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 95:
-/* Line 1792 of yacc.c */
-#line 756 "glslang.y"
+#line 762 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.checkNoShaderLayouts((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).shaderQualifiers);
- parseContext.addQualifierToExisting((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).qualifier, *(yyvsp[(2) - (3)].lex).string);
+ parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
(yyval.interm.intermNode) = 0;
}
+#line 4228 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 96:
-/* Line 1792 of yacc.c */
-#line 761 "glslang.y"
+#line 766 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers);
- (yyvsp[(3) - (4)].interm.identifierList)->push_back((yyvsp[(2) - (4)].lex).string);
- parseContext.addQualifierToExisting((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier, *(yyvsp[(3) - (4)].interm.identifierList));
+ parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
+ parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
(yyval.interm.intermNode) = 0;
}
+#line 4238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 97:
-/* Line 1792 of yacc.c */
-#line 770 "glslang.y"
- { parseContext.nestedBlockCheck((yyvsp[(1) - (3)].interm.type).loc); }
+#line 771 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers);
+ parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
+ (yyval.interm.intermNode) = 0;
+ }
+#line 4248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 98:
-/* Line 1792 of yacc.c */
-#line 770 "glslang.y"
+#line 776 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- --parseContext.structNestingLevel;
- parseContext.blockName = (yyvsp[(2) - (6)].lex).string;
- parseContext.globalQualifierFixCheck((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).qualifier);
- parseContext.checkNoShaderLayouts((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).shaderQualifiers);
- parseContext.currentBlockQualifier = (yyvsp[(1) - (6)].interm.type).qualifier;
- (yyval.interm).loc = (yyvsp[(1) - (6)].interm.type).loc;
- (yyval.interm).typeList = (yyvsp[(5) - (6)].interm.typeList);
+ parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
+ (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string);
+ parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
+ (yyval.interm.intermNode) = 0;
}
+#line 4259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 99:
-/* Line 1792 of yacc.c */
-#line 781 "glslang.y"
- {
- (yyval.interm.identifierList) = new TIdentifierList;
- (yyval.interm.identifierList)->push_back((yyvsp[(2) - (2)].lex).string);
- }
+#line 785 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
+#line 4265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 100:
-/* Line 1792 of yacc.c */
-#line 785 "glslang.y"
+#line 785 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.identifierList) = (yyvsp[(1) - (3)].interm.identifierList);
- (yyval.interm.identifierList)->push_back((yyvsp[(3) - (3)].lex).string);
+ --parseContext.structNestingLevel;
+ parseContext.blockName = (yyvsp[-4].lex).string;
+ parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier);
+ parseContext.checkNoShaderLayouts((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).shaderQualifiers);
+ parseContext.currentBlockQualifier = (yyvsp[-5].interm.type).qualifier;
+ (yyval.interm).loc = (yyvsp[-5].interm.type).loc;
+ (yyval.interm).typeList = (yyvsp[-1].interm.typeList);
}
+#line 4279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 101:
-/* Line 1792 of yacc.c */
-#line 792 "glslang.y"
+#line 796 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).function = (yyvsp[(1) - (2)].interm.function);
- (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
+ (yyval.interm.identifierList) = new TIdentifierList;
+ (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
+#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 102:
-/* Line 1792 of yacc.c */
-#line 799 "glslang.y"
+#line 800 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
+ (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
+ (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
+#line 4297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 103:
-/* Line 1792 of yacc.c */
-#line 802 "glslang.y"
+#line 807 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
+ (yyval.interm).function = (yyvsp[-1].interm.function);
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
}
+#line 4306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 104:
-/* Line 1792 of yacc.c */
-#line 809 "glslang.y"
+#line 814 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.function) = (yyvsp[0].interm.function);
+ }
+#line 4314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 105:
+#line 817 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.function) = (yyvsp[0].interm.function);
+ }
+#line 4322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 106:
+#line 824 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// Add the parameter
- (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function);
- if ((yyvsp[(2) - (2)].interm).param.type->getBasicType() != EbtVoid)
- (yyvsp[(1) - (2)].interm.function)->addParameter((yyvsp[(2) - (2)].interm).param);
+ (yyval.interm.function) = (yyvsp[-1].interm.function);
+ if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid)
+ (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param);
else
- delete (yyvsp[(2) - (2)].interm).param.type;
+ delete (yyvsp[0].interm).param.type;
}
+#line 4335 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 105:
-/* Line 1792 of yacc.c */
-#line 817 "glslang.y"
+ case 107:
+#line 832 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
//
// Only first parameter of one-parameter functions can be void
// The check for named parameters not being void is done in parameter_declarator
//
- if ((yyvsp[(3) - (3)].interm).param.type->getBasicType() == EbtVoid) {
+ if ((yyvsp[0].interm).param.type->getBasicType() == EbtVoid) {
//
// This parameter > first is void
//
- parseContext.error((yyvsp[(2) - (3)].lex).loc, "cannot be an argument type except for '(void)'", "void", "");
- delete (yyvsp[(3) - (3)].interm).param.type;
+ parseContext.error((yyvsp[-1].lex).loc, "cannot be an argument type except for '(void)'", "void", "");
+ delete (yyvsp[0].interm).param.type;
} else {
// Add the parameter
- (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function);
- (yyvsp[(1) - (3)].interm.function)->addParameter((yyvsp[(3) - (3)].interm).param);
+ (yyval.interm.function) = (yyvsp[-2].interm.function);
+ (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
}
}
+#line 4357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 106:
-/* Line 1792 of yacc.c */
-#line 837 "glslang.y"
+ case 108:
+#line 852 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqGlobal && (yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqTemporary) {
- parseContext.error((yyvsp[(2) - (3)].lex).loc, "no qualifiers allowed for function return",
- GetStorageQualifierString((yyvsp[(1) - (3)].interm.type).qualifier.storage), "");
+ if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) {
+ parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return",
+ GetStorageQualifierString((yyvsp[-2].interm.type).qualifier.storage), "");
}
- if ((yyvsp[(1) - (3)].interm.type).arraySizes)
- parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes);
+ if ((yyvsp[-2].interm.type).arraySizes)
+ parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
// Add the function as a prototype after parsing it (we do not support recursion)
TFunction *function;
- TType type((yyvsp[(1) - (3)].interm.type));
- function = new TFunction((yyvsp[(2) - (3)].lex).string, type);
+ TType type((yyvsp[-2].interm.type));
+
+ // Potentially rename shader entry point function. No-op most of the time.
+ parseContext.renameShaderFunction((yyvsp[-1].lex).string);
+
+ // Make the function
+ function = new TFunction((yyvsp[-1].lex).string, type);
(yyval.interm.function) = function;
}
+#line 4381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 107:
-/* Line 1792 of yacc.c */
-#line 855 "glslang.y"
+ case 109:
+#line 875 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (2)].interm.type).arraySizes) {
- parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
- parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
- parseContext.arraySizeRequiredCheck((yyvsp[(1) - (2)].interm.type).loc, *(yyvsp[(1) - (2)].interm.type).arraySizes);
+ if ((yyvsp[-1].interm.type).arraySizes) {
+ parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+ parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+ parseContext.arraySizeRequiredCheck((yyvsp[-1].interm.type).loc, *(yyvsp[-1].interm.type).arraySizes);
}
- if ((yyvsp[(1) - (2)].interm.type).basicType == EbtVoid) {
- parseContext.error((yyvsp[(2) - (2)].lex).loc, "illegal use of type 'void'", (yyvsp[(2) - (2)].lex).string->c_str(), "");
+ if ((yyvsp[-1].interm.type).basicType == EbtVoid) {
+ parseContext.error((yyvsp[0].lex).loc, "illegal use of type 'void'", (yyvsp[0].lex).string->c_str(), "");
}
- parseContext.reservedErrorCheck((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string);
+ parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string);
- TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))};
- (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
+ TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type))};
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).param = param;
}
+#line 4401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 108:
-/* Line 1792 of yacc.c */
-#line 870 "glslang.y"
+ case 110:
+#line 890 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (3)].interm.type).arraySizes) {
- parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
- parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
- parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes);
+ if ((yyvsp[-2].interm.type).arraySizes) {
+ parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+ parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+ parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
}
- parseContext.arrayDimCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.type).arraySizes, (yyvsp[(3) - (3)].interm).arraySizes);
+ parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.type).arraySizes, (yyvsp[0].interm).arraySizes);
- parseContext.arraySizeRequiredCheck((yyvsp[(3) - (3)].interm).loc, *(yyvsp[(3) - (3)].interm).arraySizes);
- parseContext.reservedErrorCheck((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string);
+ parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes);
+ parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string);
- (yyvsp[(1) - (3)].interm.type).arraySizes = (yyvsp[(3) - (3)].interm).arraySizes;
+ (yyvsp[-2].interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
- TParameter param = { (yyvsp[(2) - (3)].lex).string, new TType((yyvsp[(1) - (3)].interm.type))};
- (yyval.interm).loc = (yyvsp[(2) - (3)].lex).loc;
+ TParameter param = { (yyvsp[-1].lex).string, new TType((yyvsp[-2].interm.type))};
+ (yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).param = param;
}
+#line 4423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 109:
-/* Line 1792 of yacc.c */
-#line 893 "glslang.y"
+ case 111:
+#line 913 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(2) - (2)].interm);
- if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone)
- (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision;
+ (yyval.interm) = (yyvsp[0].interm);
+ if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
+ (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision;
parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
- parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers);
- parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type);
- parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type);
+ parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
+ parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
+ parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
+#line 4439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 110:
-/* Line 1792 of yacc.c */
-#line 904 "glslang.y"
+ case 112:
+#line 924 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (1)].interm);
+ (yyval.interm) = (yyvsp[0].interm);
- parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type);
- parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type);
+ parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type);
+ parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
}
+#line 4451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 111:
-/* Line 1792 of yacc.c */
-#line 914 "glslang.y"
+ case 113:
+#line 934 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(2) - (2)].interm);
- if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone)
- (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision;
- parseContext.precisionQualifierCheck((yyvsp[(1) - (2)].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
+ (yyval.interm) = (yyvsp[0].interm);
+ if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
+ (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision;
+ parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
- parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers);
- parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type);
- parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type);
+ parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
+ parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
+ parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
+#line 4466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 112:
-/* Line 1792 of yacc.c */
-#line 924 "glslang.y"
+ case 114:
+#line 944 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (1)].interm);
+ (yyval.interm) = (yyvsp[0].interm);
- parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type);
- parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type);
+ parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type);
+ parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
}
+#line 4478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 113:
-/* Line 1792 of yacc.c */
-#line 934 "glslang.y"
+ case 115:
+#line 954 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) };
+ TParameter param = { 0, new TType((yyvsp[0].interm.type)) };
(yyval.interm).param = param;
- if ((yyvsp[(1) - (1)].interm.type).arraySizes)
- parseContext.arraySizeRequiredCheck((yyvsp[(1) - (1)].interm.type).loc, *(yyvsp[(1) - (1)].interm.type).arraySizes);
+ if ((yyvsp[0].interm.type).arraySizes)
+ parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
}
+#line 4489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 114:
-/* Line 1792 of yacc.c */
-#line 943 "glslang.y"
+ case 116:
+#line 963 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (1)].interm);
+ (yyval.interm) = (yyvsp[0].interm);
}
+#line 4497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 115:
-/* Line 1792 of yacc.c */
-#line 946 "glslang.y"
+ case 117:
+#line 966 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (3)].interm);
- parseContext.declareVariable((yyvsp[(3) - (3)].lex).loc, *(yyvsp[(3) - (3)].lex).string, (yyvsp[(1) - (3)].interm).type);
+ (yyval.interm) = (yyvsp[-2].interm);
+ parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
}
+#line 4506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 116:
-/* Line 1792 of yacc.c */
-#line 950 "glslang.y"
+ case 118:
+#line 970 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (4)].interm);
- parseContext.declareVariable((yyvsp[(3) - (4)].lex).loc, *(yyvsp[(3) - (4)].lex).string, (yyvsp[(1) - (4)].interm).type, (yyvsp[(4) - (4)].interm).arraySizes);
+ (yyval.interm) = (yyvsp[-3].interm);
+ parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
}
+#line 4515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 117:
-/* Line 1792 of yacc.c */
-#line 954 "glslang.y"
+ case 119:
+#line 974 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).type = (yyvsp[(1) - (6)].interm).type;
- TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (6)].lex).loc, *(yyvsp[(3) - (6)].lex).string, (yyvsp[(1) - (6)].interm).type, (yyvsp[(4) - (6)].interm).arraySizes, (yyvsp[(6) - (6)].interm.intermTypedNode));
- (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, initNode, (yyvsp[(5) - (6)].lex).loc);
+ (yyval.interm).type = (yyvsp[-5].interm).type;
+ TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
+ (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
}
+#line 4525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 118:
-/* Line 1792 of yacc.c */
-#line 959 "glslang.y"
+ case 120:
+#line 979 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).type = (yyvsp[(1) - (5)].interm).type;
- TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (5)].lex).loc, *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, 0, (yyvsp[(5) - (5)].interm.intermTypedNode));
- (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (5)].interm).intermNode, initNode, (yyvsp[(4) - (5)].lex).loc);
+ (yyval.interm).type = (yyvsp[-4].interm).type;
+ TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode));
+ (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
}
+#line 4535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 119:
-/* Line 1792 of yacc.c */
-#line 967 "glslang.y"
+ case 121:
+#line 987 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).type = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm).type = (yyvsp[0].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
}
+#line 4545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 120:
-/* Line 1792 of yacc.c */
-#line 972 "glslang.y"
+ case 122:
+#line 992 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).type = (yyvsp[(1) - (2)].interm.type);
+ (yyval.interm).type = (yyvsp[-1].interm.type);
(yyval.interm).intermNode = 0;
- parseContext.declareVariable((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string, (yyvsp[(1) - (2)].interm.type));
+ parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
}
+#line 4555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 121:
-/* Line 1792 of yacc.c */
-#line 977 "glslang.y"
+ case 123:
+#line 997 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).type = (yyvsp[(1) - (3)].interm.type);
+ (yyval.interm).type = (yyvsp[-2].interm.type);
(yyval.interm).intermNode = 0;
- parseContext.declareVariable((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string, (yyvsp[(1) - (3)].interm.type), (yyvsp[(3) - (3)].interm).arraySizes);
+ parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
}
+#line 4565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 122:
-/* Line 1792 of yacc.c */
-#line 982 "glslang.y"
+ case 124:
+#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).type = (yyvsp[(1) - (5)].interm.type);
- TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (5)].lex).loc, *(yyvsp[(2) - (5)].lex).string, (yyvsp[(1) - (5)].interm.type), (yyvsp[(3) - (5)].interm).arraySizes, (yyvsp[(5) - (5)].interm.intermTypedNode));
- (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(4) - (5)].lex).loc);
+ (yyval.interm).type = (yyvsp[-4].interm.type);
+ TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
+ (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
}
+#line 4575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 123:
-/* Line 1792 of yacc.c */
-#line 987 "glslang.y"
+ case 125:
+#line 1007 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).type = (yyvsp[(1) - (4)].interm.type);
- TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode));
- (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(3) - (4)].lex).loc);
+ (yyval.interm).type = (yyvsp[-3].interm.type);
+ TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
+ (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
}
+#line 4585 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 124:
-/* Line 1792 of yacc.c */
-#line 996 "glslang.y"
+ case 126:
+#line 1016 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
- parseContext.globalQualifierTypeCheck((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier, (yyval.interm.type));
- if ((yyvsp[(1) - (1)].interm.type).arraySizes) {
- parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
- parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+ parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type));
+ if ((yyvsp[0].interm.type).arraySizes) {
+ parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+ parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
}
parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
}
+#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 125:
-/* Line 1792 of yacc.c */
-#line 1007 "glslang.y"
+ case 127:
+#line 1027 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier);
- parseContext.globalQualifierTypeCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, (yyvsp[(2) - (2)].interm.type));
+ parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
+ parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type));
- if ((yyvsp[(2) - (2)].interm.type).arraySizes) {
- parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
- parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+ if ((yyvsp[0].interm.type).arraySizes) {
+ parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+ parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
}
- if ((yyvsp[(2) - (2)].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier))
- (yyvsp[(2) - (2)].interm.type).arraySizes = 0;
+ if ((yyvsp[0].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).qualifier))
+ (yyvsp[0].interm.type).arraySizes = 0;
- parseContext.checkNoShaderLayouts((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers);
- (yyvsp[(2) - (2)].interm.type).shaderQualifiers.merge((yyvsp[(1) - (2)].interm.type).shaderQualifiers);
- parseContext.mergeQualifiers((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).qualifier, (yyvsp[(1) - (2)].interm.type).qualifier, true);
- parseContext.precisionQualifierCheck((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).basicType, (yyvsp[(2) - (2)].interm.type).qualifier);
+ parseContext.checkNoShaderLayouts((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
+ (yyvsp[0].interm.type).shaderQualifiers.merge((yyvsp[-1].interm.type).shaderQualifiers);
+ parseContext.mergeQualifiers((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyvsp[-1].interm.type).qualifier, true);
+ parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier);
- (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
if (! (yyval.interm.type).qualifier.isInterpolation() &&
((parseContext.language == EShLangVertex && (yyval.interm.type).qualifier.storage == EvqVaryingOut) ||
(parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
(yyval.interm.type).qualifier.smooth = true;
}
+#line 4630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 126:
-/* Line 1792 of yacc.c */
-#line 1034 "glslang.y"
+ case 128:
+#line 1054 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "invariant");
+ parseContext.globalCheck((yyvsp[0].lex).loc, "invariant");
parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.invariant = true;
}
+#line 4641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 127:
-/* Line 1792 of yacc.c */
-#line 1043 "glslang.y"
+ case 129:
+#line 1063 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "smooth");
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "smooth");
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "smooth");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "smooth");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth");
+ parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.smooth = true;
}
+#line 4653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 128:
-/* Line 1792 of yacc.c */
-#line 1050 "glslang.y"
+ case 130:
+#line 1070 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "flat");
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "flat");
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "flat");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "flat");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat");
+ parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.flat = true;
}
+#line 4665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 129:
-/* Line 1792 of yacc.c */
-#line 1057 "glslang.y"
+ case 131:
+#line 1077 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "noperspective");
- parseContext.requireProfile((yyvsp[(1) - (1)].lex).loc, ~EEsProfile, "noperspective");
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "noperspective");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective");
+ parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "noperspective");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nopersp = true;
}
+#line 4677 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 130:
-/* Line 1792 of yacc.c */
-#line 1064 "glslang.y"
+ case 132:
+#line 1084 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "__explicitInterpAMD");
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.explicitInterp = true;
#endif
}
+#line 4691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 131:
-/* Line 1792 of yacc.c */
-#line 1076 "glslang.y"
+ case 133:
+#line 1096 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[(3) - (4)].interm.type);
+ (yyval.interm.type) = (yyvsp[-1].interm.type);
}
+#line 4699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 132:
-/* Line 1792 of yacc.c */
-#line 1082 "glslang.y"
+ case 134:
+#line 1102 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
}
+#line 4707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 133:
-/* Line 1792 of yacc.c */
-#line 1085 "glslang.y"
+ case 135:
+#line 1105 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[(1) - (3)].interm.type);
- (yyval.interm.type).shaderQualifiers.merge((yyvsp[(3) - (3)].interm.type).shaderQualifiers);
- parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[(3) - (3)].interm.type).qualifier, false);
+ (yyval.interm.type) = (yyvsp[-2].interm.type);
+ (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
+ parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
}
+#line 4717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 134:
-/* Line 1792 of yacc.c */
-#line 1092 "glslang.y"
+ case 136:
+#line 1112 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
- parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (1)].lex).string);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
+ parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
}
+#line 4726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 135:
-/* Line 1792 of yacc.c */
-#line 1096 "glslang.y"
+ case 137:
+#line 1116 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (3)].lex).loc);
- parseContext.setLayoutQualifier((yyvsp[(1) - (3)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (3)].lex).string, (yyvsp[(3) - (3)].interm.intermTypedNode));
+ (yyval.interm.type).init((yyvsp[-2].lex).loc);
+ parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode));
}
+#line 4735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 136:
-/* Line 1792 of yacc.c */
-#line 1100 "glslang.y"
+ case 138:
+#line 1120 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ // because "shared" is both an identifier and a keyword
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
TString strShared("shared");
- parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), strShared);
+ parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared);
}
+#line 4745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 137:
-/* Line 1792 of yacc.c */
-#line 1108 "glslang.y"
+ case 139:
+#line 1128 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise");
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.noContraction = true;
}
+#line 4756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 138:
-/* Line 1792 of yacc.c */
-#line 1117 "glslang.y"
+ case 140:
+#line 1137 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
}
+#line 4764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 139:
-/* Line 1792 of yacc.c */
-#line 1120 "glslang.y"
+ case 141:
+#line 1140 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type);
+ (yyval.interm.type) = (yyvsp[-1].interm.type);
if ((yyval.interm.type).basicType == EbtVoid)
- (yyval.interm.type).basicType = (yyvsp[(2) - (2)].interm.type).basicType;
+ (yyval.interm.type).basicType = (yyvsp[0].interm.type).basicType;
- (yyval.interm.type).shaderQualifiers.merge((yyvsp[(2) - (2)].interm.type).shaderQualifiers);
- parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[(2) - (2)].interm.type).qualifier, false);
+ (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
+ parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
}
+#line 4777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 140:
-/* Line 1792 of yacc.c */
-#line 1131 "glslang.y"
+ case 142:
+#line 1151 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
}
+#line 4785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 141:
-/* Line 1792 of yacc.c */
-#line 1134 "glslang.y"
+ case 143:
+#line 1154 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
}
+#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 142:
-/* Line 1792 of yacc.c */
-#line 1137 "glslang.y"
+ case 144:
+#line 1157 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.checkPrecisionQualifier((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier.precision);
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
}
+#line 4802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 143:
-/* Line 1792 of yacc.c */
-#line 1141 "glslang.y"
+ case 145:
+#line 1161 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// allow inheritance of storage qualifier from block declaration
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
}
+#line 4811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 144:
-/* Line 1792 of yacc.c */
-#line 1145 "glslang.y"
+ case 146:
+#line 1165 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// allow inheritance of storage qualifier from block declaration
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
}
+#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 145:
-/* Line 1792 of yacc.c */
-#line 1149 "glslang.y"
+ case 147:
+#line 1169 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// allow inheritance of storage qualifier from block declaration
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
}
+#line 4829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 146:
-/* Line 1792 of yacc.c */
-#line 1156 "glslang.y"
+ case 148:
+#line 1176 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant
}
+#line 4838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 147:
-/* Line 1792 of yacc.c */
-#line 1160 "glslang.y"
+ case 149:
+#line 1180 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangVertex, "attribute");
- parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "attribute");
- parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "attribute");
- parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "attribute");
- parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "attribute");
+ parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
+ parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
+ parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute");
+ parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "attribute");
+ parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "attribute");
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "attribute");
+ parseContext.globalCheck((yyvsp[0].lex).loc, "attribute");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
+#line 4855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 148:
-/* Line 1792 of yacc.c */
-#line 1172 "glslang.y"
+ case 150:
+#line 1192 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "varying");
- parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "varying");
- parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "varying");
- parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "varying");
+ parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
+ parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
+ parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying");
+ parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "varying");
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "varying");
+ parseContext.globalCheck((yyvsp[0].lex).loc, "varying");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
if (parseContext.language == EShLangVertex)
(yyval.interm.type).qualifier.storage = EvqVaryingOut;
else
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
+#line 4874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 149:
-/* Line 1792 of yacc.c */
-#line 1186 "glslang.y"
+ case 151:
+#line 1206 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "inout");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqInOut;
}
+#line 4884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 150:
-/* Line 1792 of yacc.c */
-#line 1191 "glslang.y"
+ case 152:
+#line 1211 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "in");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "in");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqIn;
}
+#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 151:
-/* Line 1792 of yacc.c */
-#line 1197 "glslang.y"
+ case 153:
+#line 1217 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "out");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "out");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqOut;
}
+#line 4906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 152:
-/* Line 1792 of yacc.c */
-#line 1203 "glslang.y"
+ case 154:
+#line 1223 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 120, 0, "centroid");
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "centroid");
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "centroid");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
+ parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
+ parseContext.globalCheck((yyvsp[0].lex).loc, "centroid");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.centroid = true;
}
+#line 4918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 153:
-/* Line 1792 of yacc.c */
-#line 1210 "glslang.y"
+ case 155:
+#line 1230 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "patch");
- parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "patch");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.patch = true;
}
+#line 4929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 154:
-/* Line 1792 of yacc.c */
-#line 1216 "glslang.y"
+ case 156:
+#line 1236 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "sample");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.sample = true;
}
+#line 4939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 155:
-/* Line 1792 of yacc.c */
-#line 1221 "glslang.y"
+ case 157:
+#line 1241 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "uniform");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqUniform;
}
+#line 4949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 156:
-/* Line 1792 of yacc.c */
-#line 1226 "glslang.y"
+ case 158:
+#line 1246 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "buffer");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqBuffer;
}
+#line 4959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 157:
-/* Line 1792 of yacc.c */
-#line 1231 "glslang.y"
+ case 159:
+#line 1251 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 310, 0, "shared");
- parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangCompute, "shared");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
+ parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared");
+ parseContext.requireStage((yyvsp[0].lex).loc, EShLangCompute, "shared");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqShared;
}
+#line 4972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 158:
-/* Line 1792 of yacc.c */
-#line 1238 "glslang.y"
+ case 160:
+#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.coherent = true;
}
+#line 4981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 159:
-/* Line 1792 of yacc.c */
-#line 1242 "glslang.y"
+ case 161:
+#line 1263 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.volatil = true;
}
+#line 4990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 160:
-/* Line 1792 of yacc.c */
-#line 1246 "glslang.y"
+ case 162:
+#line 1267 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.restrict = true;
}
+#line 4999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 161:
-/* Line 1792 of yacc.c */
-#line 1250 "glslang.y"
+ case 163:
+#line 1271 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.readonly = true;
}
+#line 5008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 162:
-/* Line 1792 of yacc.c */
-#line 1254 "glslang.y"
+ case 164:
+#line 1275 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.writeonly = true;
}
+#line 5017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 163:
-/* Line 1792 of yacc.c */
-#line 1258 "glslang.y"
+ case 165:
+#line 1279 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.spvRemoved((yyvsp[(1) - (1)].lex).loc, "subroutine");
- parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "subroutine");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
- (yyval.interm.type).qualifier.storage = EvqUniform;
+ parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
+ parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
+ parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
}
+#line 5028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 164:
-/* Line 1792 of yacc.c */
-#line 1264 "glslang.y"
+ case 166:
+#line 1285 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.spvRemoved((yyvsp[(1) - (4)].lex).loc, "subroutine");
- parseContext.globalCheck((yyvsp[(1) - (4)].lex).loc, "subroutine");
- (yyval.interm.type).init((yyvsp[(1) - (4)].lex).loc);
- (yyval.interm.type).qualifier.storage = EvqUniform;
- // TODO: 4.0 semantics: subroutines
- // 1) make sure each identifier is a type declared earlier with SUBROUTINE
- // 2) save all of the identifiers for future comparison with the declared function
+ parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
+ parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
+ parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine");
+ (yyval.interm.type).init((yyvsp[-3].lex).loc);
}
+#line 5039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 165:
-/* Line 1792 of yacc.c */
-#line 1276 "glslang.y"
+ case 167:
+#line 1294 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- // TODO: 4.0 functionality: subroutine type to list
+ // TODO
}
+#line 5047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 166:
-/* Line 1792 of yacc.c */
-#line 1279 "glslang.y"
+ case 168:
+#line 1297 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+ // TODO: 4.0 semantics: subroutines
+ // 1) make sure each identifier is a type declared earlier with SUBROUTINE
+ // 2) save all of the identifiers for future comparison with the declared function
}
+#line 5057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 167:
-/* Line 1792 of yacc.c */
-#line 1284 "glslang.y"
+ case 169:
+#line 1305 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
(yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
}
+#line 5066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 168:
-/* Line 1792 of yacc.c */
-#line 1288 "glslang.y"
+ case 170:
+#line 1309 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.arrayDimCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0);
- (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type);
+ parseContext.arrayDimCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes, 0);
+ (yyval.interm.type) = (yyvsp[-1].interm.type);
(yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
- (yyval.interm.type).arraySizes = (yyvsp[(2) - (2)].interm).arraySizes;
+ (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
}
+#line 5077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 169:
-/* Line 1792 of yacc.c */
-#line 1297 "glslang.y"
+ case 171:
+#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).loc = (yyvsp[(1) - (2)].lex).loc;
+ (yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
(yyval.interm).arraySizes->addInnerSize();
}
+#line 5087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 170:
-/* Line 1792 of yacc.c */
-#line 1302 "glslang.y"
+ case 172:
+#line 1323 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm).loc = (yyvsp[(1) - (3)].lex).loc;
+ (yyval.interm).loc = (yyvsp[-2].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
TArraySize size;
- parseContext.arraySizeCheck((yyvsp[(2) - (3)].interm.intermTypedNode)->getLoc(), (yyvsp[(2) - (3)].interm.intermTypedNode), size);
+ parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
(yyval.interm).arraySizes->addInnerSize(size);
}
+#line 5100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 171:
-/* Line 1792 of yacc.c */
-#line 1310 "glslang.y"
+ case 173:
+#line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (3)].interm);
+ (yyval.interm) = (yyvsp[-2].interm);
(yyval.interm).arraySizes->addInnerSize();
}
+#line 5109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 172:
-/* Line 1792 of yacc.c */
-#line 1314 "glslang.y"
+ case 174:
+#line 1335 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[(1) - (4)].interm);
+ (yyval.interm) = (yyvsp[-3].interm);
TArraySize size;
- parseContext.arraySizeCheck((yyvsp[(3) - (4)].interm.intermTypedNode)->getLoc(), (yyvsp[(3) - (4)].interm.intermTypedNode), size);
+ parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
(yyval.interm).arraySizes->addInnerSize(size);
}
+#line 5121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 173:
-/* Line 1792 of yacc.c */
-#line 1324 "glslang.y"
+ case 175:
+#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtVoid;
}
+#line 5130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 174:
-/* Line 1792 of yacc.c */
-#line 1328 "glslang.y"
+ case 176:
+#line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
+#line 5139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 175:
-/* Line 1792 of yacc.c */
-#line 1332 "glslang.y"
+ case 177:
+#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
+#line 5149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 176:
-/* Line 1792 of yacc.c */
-#line 1337 "glslang.y"
+ case 178:
+#line 1358 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
#endif
}
+#line 5161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 177:
-/* Line 1792 of yacc.c */
-#line 1344 "glslang.y"
+ case 179:
+#line 1365 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
+#line 5170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 178:
-/* Line 1792 of yacc.c */
-#line 1348 "glslang.y"
+ case 180:
+#line 1369 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
}
+#line 5180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 179:
-/* Line 1792 of yacc.c */
-#line 1353 "glslang.y"
+ case 181:
+#line 1374 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
}
+#line 5190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 180:
-/* Line 1792 of yacc.c */
-#line 1358 "glslang.y"
+ case 182:
+#line 1379 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
}
+#line 5200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 181:
-/* Line 1792 of yacc.c */
-#line 1363 "glslang.y"
+ case 183:
+#line 1384 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt16;
+#endif
+ }
+#line 5212 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 184:
+#line 1391 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+#endif
+ }
+#line 5224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 185:
+#line 1398 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
}
+#line 5233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 182:
-/* Line 1792 of yacc.c */
-#line 1367 "glslang.y"
+ case 186:
+#line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(2);
}
+#line 5243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 183:
-/* Line 1792 of yacc.c */
-#line 1372 "glslang.y"
+ case 187:
+#line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(3);
}
+#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 184:
-/* Line 1792 of yacc.c */
-#line 1377 "glslang.y"
+ case 188:
+#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(4);
}
+#line 5263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 185:
-/* Line 1792 of yacc.c */
-#line 1382 "glslang.y"
+ case 189:
+#line 1417 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(2);
}
+#line 5274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 186:
-/* Line 1792 of yacc.c */
-#line 1388 "glslang.y"
+ case 190:
+#line 1423 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(3);
}
+#line 5285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 187:
-/* Line 1792 of yacc.c */
-#line 1394 "glslang.y"
+ case 191:
+#line 1429 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(4);
}
+#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 188:
-/* Line 1792 of yacc.c */
-#line 1400 "glslang.y"
+ case 192:
+#line 1435 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setVector(2);
#endif
}
+#line 5309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 189:
-/* Line 1792 of yacc.c */
-#line 1408 "glslang.y"
+ case 193:
+#line 1443 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setVector(3);
#endif
}
+#line 5322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 190:
-/* Line 1792 of yacc.c */
-#line 1416 "glslang.y"
+ case 194:
+#line 1451 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setVector(4);
#endif
}
+#line 5335 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 191:
-/* Line 1792 of yacc.c */
-#line 1424 "glslang.y"
+ case 195:
+#line 1459 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(2);
}
+#line 5345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 192:
-/* Line 1792 of yacc.c */
-#line 1429 "glslang.y"
+ case 196:
+#line 1464 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(3);
}
+#line 5355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 193:
-/* Line 1792 of yacc.c */
-#line 1434 "glslang.y"
+ case 197:
+#line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(4);
}
+#line 5365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 194:
-/* Line 1792 of yacc.c */
-#line 1439 "glslang.y"
+ case 198:
+#line 1474 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(2);
}
+#line 5375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 195:
-/* Line 1792 of yacc.c */
-#line 1444 "glslang.y"
+ case 199:
+#line 1479 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(3);
}
+#line 5385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 196:
-/* Line 1792 of yacc.c */
-#line 1449 "glslang.y"
+ case 200:
+#line 1484 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(4);
}
+#line 5395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 197:
-/* Line 1792 of yacc.c */
-#line 1454 "glslang.y"
+ case 201:
+#line 1489 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(2);
}
+#line 5406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 198:
-/* Line 1792 of yacc.c */
-#line 1460 "glslang.y"
+ case 202:
+#line 1495 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(3);
}
+#line 5417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 199:
-/* Line 1792 of yacc.c */
-#line 1466 "glslang.y"
+ case 203:
+#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(4);
}
+#line 5428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 200:
-/* Line 1792 of yacc.c */
-#line 1472 "glslang.y"
+ case 204:
+#line 1507 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt16;
+ (yyval.interm.type).setVector(2);
+#endif
+ }
+#line 5441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 205:
+#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt16;
+ (yyval.interm.type).setVector(3);
+#endif
+ }
+#line 5454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 206:
+#line 1523 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt16;
+ (yyval.interm.type).setVector(4);
+#endif
+ }
+#line 5467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 207:
+#line 1531 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(2);
}
+#line 5478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 201:
-/* Line 1792 of yacc.c */
-#line 1478 "glslang.y"
+ case 208:
+#line 1537 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(3);
}
+#line 5489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 202:
-/* Line 1792 of yacc.c */
-#line 1484 "glslang.y"
+ case 209:
+#line 1543 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(4);
}
+#line 5500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 203:
-/* Line 1792 of yacc.c */
-#line 1490 "glslang.y"
+ case 210:
+#line 1549 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(2);
}
+#line 5511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 204:
-/* Line 1792 of yacc.c */
-#line 1496 "glslang.y"
+ case 211:
+#line 1555 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(3);
}
+#line 5522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 205:
-/* Line 1792 of yacc.c */
-#line 1502 "glslang.y"
+ case 212:
+#line 1561 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(4);
}
+#line 5533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 206:
-/* Line 1792 of yacc.c */
-#line 1508 "glslang.y"
+ case 213:
+#line 1567 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+ (yyval.interm.type).setVector(2);
+#endif
+ }
+#line 5546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 214:
+#line 1575 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+ (yyval.interm.type).setVector(3);
+#endif
+ }
+#line 5559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 215:
+#line 1583 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifdef AMD_EXTENSIONS
+ parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+ (yyval.interm.type).setVector(4);
+#endif
+ }
+#line 5572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 216:
+#line 1591 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
+#line 5582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 207:
-/* Line 1792 of yacc.c */
-#line 1513 "glslang.y"
+ case 217:
+#line 1596 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
+#line 5592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 208:
-/* Line 1792 of yacc.c */
-#line 1518 "glslang.y"
+ case 218:
+#line 1601 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
+#line 5602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 209:
-/* Line 1792 of yacc.c */
-#line 1523 "glslang.y"
+ case 219:
+#line 1606 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
+#line 5612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 210:
-/* Line 1792 of yacc.c */
-#line 1528 "glslang.y"
+ case 220:
+#line 1611 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 3);
}
+#line 5622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 211:
-/* Line 1792 of yacc.c */
-#line 1533 "glslang.y"
+ case 221:
+#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 4);
}
+#line 5632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 212:
-/* Line 1792 of yacc.c */
-#line 1538 "glslang.y"
+ case 222:
+#line 1621 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 2);
}
+#line 5642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 213:
-/* Line 1792 of yacc.c */
-#line 1543 "glslang.y"
+ case 223:
+#line 1626 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
+#line 5652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 214:
-/* Line 1792 of yacc.c */
-#line 1548 "glslang.y"
+ case 224:
+#line 1631 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 4);
}
+#line 5662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 215:
-/* Line 1792 of yacc.c */
-#line 1553 "glslang.y"
+ case 225:
+#line 1636 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 2);
}
+#line 5672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 216:
-/* Line 1792 of yacc.c */
-#line 1558 "glslang.y"
+ case 226:
+#line 1641 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 3);
}
+#line 5682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 217:
-/* Line 1792 of yacc.c */
-#line 1563 "glslang.y"
+ case 227:
+#line 1646 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
+#line 5692 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 218:
-/* Line 1792 of yacc.c */
-#line 1568 "glslang.y"
+ case 228:
+#line 1651 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
+#line 5703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 219:
-/* Line 1792 of yacc.c */
-#line 1574 "glslang.y"
+ case 229:
+#line 1657 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
+#line 5714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 220:
-/* Line 1792 of yacc.c */
-#line 1580 "glslang.y"
+ case 230:
+#line 1663 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
+#line 5725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 221:
-/* Line 1792 of yacc.c */
-#line 1586 "glslang.y"
+ case 231:
+#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
+#line 5736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 222:
-/* Line 1792 of yacc.c */
-#line 1592 "glslang.y"
+ case 232:
+#line 1675 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 3);
}
+#line 5747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 223:
-/* Line 1792 of yacc.c */
-#line 1598 "glslang.y"
+ case 233:
+#line 1681 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 4);
}
+#line 5758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 224:
-/* Line 1792 of yacc.c */
-#line 1604 "glslang.y"
+ case 234:
+#line 1687 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 2);
}
+#line 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 225:
-/* Line 1792 of yacc.c */
-#line 1610 "glslang.y"
+ case 235:
+#line 1693 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
+#line 5780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 226:
-/* Line 1792 of yacc.c */
-#line 1616 "glslang.y"
+ case 236:
+#line 1699 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 4);
}
+#line 5791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 227:
-/* Line 1792 of yacc.c */
-#line 1622 "glslang.y"
+ case 237:
+#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 2);
}
+#line 5802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 228:
-/* Line 1792 of yacc.c */
-#line 1628 "glslang.y"
+ case 238:
+#line 1711 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 3);
}
+#line 5813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 229:
-/* Line 1792 of yacc.c */
-#line 1634 "glslang.y"
+ case 239:
+#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
+#line 5824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 230:
-/* Line 1792 of yacc.c */
-#line 1640 "glslang.y"
+ case 240:
+#line 1723 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 2);
#endif
}
+#line 5837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 231:
-/* Line 1792 of yacc.c */
-#line 1648 "glslang.y"
+ case 241:
+#line 1731 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 3);
#endif
}
+#line 5850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 232:
-/* Line 1792 of yacc.c */
-#line 1656 "glslang.y"
+ case 242:
+#line 1739 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 4);
#endif
}
+#line 5863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 233:
-/* Line 1792 of yacc.c */
-#line 1664 "glslang.y"
+ case 243:
+#line 1747 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 2);
#endif
}
+#line 5876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 234:
-/* Line 1792 of yacc.c */
-#line 1672 "glslang.y"
+ case 244:
+#line 1755 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 3);
#endif
}
+#line 5889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 235:
-/* Line 1792 of yacc.c */
-#line 1680 "glslang.y"
+ case 245:
+#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 4);
#endif
}
+#line 5902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 236:
-/* Line 1792 of yacc.c */
-#line 1688 "glslang.y"
+ case 246:
+#line 1771 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 2);
#endif
}
+#line 5915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 237:
-/* Line 1792 of yacc.c */
-#line 1696 "glslang.y"
+ case 247:
+#line 1779 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 3);
#endif
}
+#line 5928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 238:
-/* Line 1792 of yacc.c */
-#line 1704 "glslang.y"
+ case 248:
+#line 1787 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 4);
#endif
}
+#line 5941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 239:
-/* Line 1792 of yacc.c */
-#line 1712 "glslang.y"
+ case 249:
+#line 1795 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 2);
#endif
}
+#line 5954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 240:
-/* Line 1792 of yacc.c */
-#line 1720 "glslang.y"
+ case 250:
+#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 3);
#endif
}
+#line 5967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 241:
-/* Line 1792 of yacc.c */
-#line 1728 "glslang.y"
+ case 251:
+#line 1811 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 4);
#endif
}
+#line 5980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 242:
-/* Line 1792 of yacc.c */
-#line 1736 "glslang.y"
+ case 252:
+#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.vulkanRemoved((yyvsp[(1) - (1)].lex).loc, "atomic counter types");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAtomicUint;
}
+#line 5990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 243:
-/* Line 1792 of yacc.c */
-#line 1741 "glslang.y"
+ case 253:
+#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D);
}
+#line 6000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 244:
-/* Line 1792 of yacc.c */
-#line 1746 "glslang.y"
+ case 254:
+#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
}
+#line 6010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 245:
-/* Line 1792 of yacc.c */
-#line 1751 "glslang.y"
+ case 255:
+#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd3D);
}
+#line 6020 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 246:
-/* Line 1792 of yacc.c */
-#line 1756 "glslang.y"
+ case 256:
+#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube);
}
+#line 6030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 247:
-/* Line 1792 of yacc.c */
-#line 1761 "glslang.y"
+ case 257:
+#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
}
+#line 6040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 248:
-/* Line 1792 of yacc.c */
-#line 1766 "glslang.y"
+ case 258:
+#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
}
+#line 6050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 249:
-/* Line 1792 of yacc.c */
-#line 1771 "glslang.y"
+ case 259:
+#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
}
+#line 6060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 250:
-/* Line 1792 of yacc.c */
-#line 1776 "glslang.y"
+ case 260:
+#line 1859 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
}
+#line 6070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 251:
-/* Line 1792 of yacc.c */
-#line 1781 "glslang.y"
+ case 261:
+#line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
}
+#line 6080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 252:
-/* Line 1792 of yacc.c */
-#line 1786 "glslang.y"
+ case 262:
+#line 1869 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
}
+#line 6090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 253:
-/* Line 1792 of yacc.c */
-#line 1791 "glslang.y"
+ case 263:
+#line 1874 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
}
+#line 6100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 254:
-/* Line 1792 of yacc.c */
-#line 1796 "glslang.y"
+ case 264:
+#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
}
+#line 6110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 255:
-/* Line 1792 of yacc.c */
-#line 1801 "glslang.y"
+ case 265:
+#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
}
+#line 6120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 256:
-/* Line 1792 of yacc.c */
-#line 1806 "glslang.y"
+ case 266:
+#line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D);
}
+#line 6130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 257:
-/* Line 1792 of yacc.c */
-#line 1811 "glslang.y"
+ case 267:
+#line 1894 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D);
}
+#line 6140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 258:
-/* Line 1792 of yacc.c */
-#line 1816 "glslang.y"
+ case 268:
+#line 1899 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd3D);
}
+#line 6150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 259:
-/* Line 1792 of yacc.c */
-#line 1821 "glslang.y"
+ case 269:
+#line 1904 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube);
}
+#line 6160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 260:
-/* Line 1792 of yacc.c */
-#line 1826 "glslang.y"
+ case 270:
+#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
}
+#line 6170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 261:
-/* Line 1792 of yacc.c */
-#line 1831 "glslang.y"
+ case 271:
+#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
}
+#line 6180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 262:
-/* Line 1792 of yacc.c */
-#line 1836 "glslang.y"
+ case 272:
+#line 1919 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
}
+#line 6190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 263:
-/* Line 1792 of yacc.c */
-#line 1841 "glslang.y"
+ case 273:
+#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D);
}
+#line 6200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 264:
-/* Line 1792 of yacc.c */
-#line 1846 "glslang.y"
+ case 274:
+#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D);
}
+#line 6210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 265:
-/* Line 1792 of yacc.c */
-#line 1851 "glslang.y"
+ case 275:
+#line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd3D);
}
+#line 6220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 266:
-/* Line 1792 of yacc.c */
-#line 1856 "glslang.y"
+ case 276:
+#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube);
}
+#line 6230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 267:
-/* Line 1792 of yacc.c */
-#line 1861 "glslang.y"
+ case 277:
+#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
}
+#line 6240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 268:
-/* Line 1792 of yacc.c */
-#line 1866 "glslang.y"
+ case 278:
+#line 1949 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
}
+#line 6250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 269:
-/* Line 1792 of yacc.c */
-#line 1871 "glslang.y"
+ case 279:
+#line 1954 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
}
+#line 6260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 270:
-/* Line 1792 of yacc.c */
-#line 1876 "glslang.y"
+ case 280:
+#line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect);
}
+#line 6270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 271:
-/* Line 1792 of yacc.c */
-#line 1881 "glslang.y"
+ case 281:
+#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
}
+#line 6280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 272:
-/* Line 1792 of yacc.c */
-#line 1886 "glslang.y"
+ case 282:
+#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdRect);
}
+#line 6290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 273:
-/* Line 1792 of yacc.c */
-#line 1891 "glslang.y"
+ case 283:
+#line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdRect);
}
+#line 6300 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 274:
-/* Line 1792 of yacc.c */
-#line 1896 "glslang.y"
+ case 284:
+#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
}
+#line 6310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 275:
-/* Line 1792 of yacc.c */
-#line 1901 "glslang.y"
+ case 285:
+#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
}
+#line 6320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 276:
-/* Line 1792 of yacc.c */
-#line 1906 "glslang.y"
+ case 286:
+#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
}
+#line 6330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 277:
-/* Line 1792 of yacc.c */
-#line 1911 "glslang.y"
+ case 287:
+#line 1994 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
}
+#line 6340 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 278:
-/* Line 1792 of yacc.c */
-#line 1916 "glslang.y"
+ case 288:
+#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
}
+#line 6350 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 279:
-/* Line 1792 of yacc.c */
-#line 1921 "glslang.y"
+ case 289:
+#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
}
+#line 6360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 280:
-/* Line 1792 of yacc.c */
-#line 1926 "glslang.y"
+ case 290:
+#line 2009 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
}
+#line 6370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 281:
-/* Line 1792 of yacc.c */
-#line 1931 "glslang.y"
+ case 291:
+#line 2014 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
}
+#line 6380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 282:
-/* Line 1792 of yacc.c */
-#line 1936 "glslang.y"
+ case 292:
+#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
}
+#line 6390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 283:
-/* Line 1792 of yacc.c */
-#line 1941 "glslang.y"
+ case 293:
+#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(false);
}
+#line 6400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 284:
-/* Line 1792 of yacc.c */
-#line 1946 "glslang.y"
+ case 294:
+#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(true);
}
+#line 6410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 285:
-/* Line 1792 of yacc.c */
-#line 1951 "glslang.y"
+ case 295:
+#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
}
+#line 6420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 286:
-/* Line 1792 of yacc.c */
-#line 1956 "glslang.y"
+ case 296:
+#line 2039 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
}
+#line 6430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 287:
-/* Line 1792 of yacc.c */
-#line 1961 "glslang.y"
+ case 297:
+#line 2044 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
}
+#line 6440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 288:
-/* Line 1792 of yacc.c */
-#line 1966 "glslang.y"
+ case 298:
+#line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
}
+#line 6450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 289:
-/* Line 1792 of yacc.c */
-#line 1971 "glslang.y"
+ case 299:
+#line 2054 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
}
+#line 6460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 290:
-/* Line 1792 of yacc.c */
-#line 1976 "glslang.y"
+ case 300:
+#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
}
+#line 6470 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 291:
-/* Line 1792 of yacc.c */
-#line 1981 "glslang.y"
+ case 301:
+#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
}
+#line 6480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 292:
-/* Line 1792 of yacc.c */
-#line 1986 "glslang.y"
+ case 302:
+#line 2069 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
}
+#line 6490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 293:
-/* Line 1792 of yacc.c */
-#line 1991 "glslang.y"
+ case 303:
+#line 2074 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
}
+#line 6500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 294:
-/* Line 1792 of yacc.c */
-#line 1996 "glslang.y"
+ case 304:
+#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
}
+#line 6510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 295:
-/* Line 1792 of yacc.c */
-#line 2001 "glslang.y"
+ case 305:
+#line 2084 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
}
+#line 6520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 296:
-/* Line 1792 of yacc.c */
-#line 2006 "glslang.y"
+ case 306:
+#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
}
+#line 6530 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 297:
-/* Line 1792 of yacc.c */
-#line 2011 "glslang.y"
+ case 307:
+#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
}
+#line 6540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 298:
-/* Line 1792 of yacc.c */
-#line 2016 "glslang.y"
+ case 308:
+#line 2099 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
}
+#line 6550 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 299:
-/* Line 1792 of yacc.c */
-#line 2021 "glslang.y"
+ case 309:
+#line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
}
+#line 6560 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 300:
-/* Line 1792 of yacc.c */
-#line 2026 "glslang.y"
+ case 310:
+#line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
}
+#line 6570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 301:
-/* Line 1792 of yacc.c */
-#line 2031 "glslang.y"
+ case 311:
+#line 2114 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
}
+#line 6580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 302:
-/* Line 1792 of yacc.c */
-#line 2036 "glslang.y"
+ case 312:
+#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
}
+#line 6590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 303:
-/* Line 1792 of yacc.c */
-#line 2041 "glslang.y"
+ case 313:
+#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
}
+#line 6600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 304:
-/* Line 1792 of yacc.c */
-#line 2046 "glslang.y"
+ case 314:
+#line 2129 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
}
+#line 6610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 305:
-/* Line 1792 of yacc.c */
-#line 2051 "glslang.y"
+ case 315:
+#line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
}
+#line 6620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 306:
-/* Line 1792 of yacc.c */
-#line 2056 "glslang.y"
+ case 316:
+#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
}
+#line 6630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 307:
-/* Line 1792 of yacc.c */
-#line 2061 "glslang.y"
+ case 317:
+#line 2144 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
}
+#line 6640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 308:
-/* Line 1792 of yacc.c */
-#line 2066 "glslang.y"
+ case 318:
+#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
}
+#line 6650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 309:
-/* Line 1792 of yacc.c */
-#line 2071 "glslang.y"
+ case 319:
+#line 2154 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
}
+#line 6660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 310:
-/* Line 1792 of yacc.c */
-#line 2076 "glslang.y"
+ case 320:
+#line 2159 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
}
+#line 6670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 311:
-/* Line 1792 of yacc.c */
-#line 2081 "glslang.y"
+ case 321:
+#line 2164 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
}
+#line 6680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 312:
-/* Line 1792 of yacc.c */
-#line 2086 "glslang.y"
+ case 322:
+#line 2169 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
}
+#line 6690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 313:
-/* Line 1792 of yacc.c */
-#line 2091 "glslang.y"
+ case 323:
+#line 2174 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
}
+#line 6700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 314:
-/* Line 1792 of yacc.c */
-#line 2096 "glslang.y"
+ case 324:
+#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
}
+#line 6710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 315:
-/* Line 1792 of yacc.c */
-#line 2101 "glslang.y"
+ case 325:
+#line 2184 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
}
+#line 6720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 316:
-/* Line 1792 of yacc.c */
-#line 2106 "glslang.y"
+ case 326:
+#line 2189 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
}
+#line 6730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 317:
-/* Line 1792 of yacc.c */
-#line 2111 "glslang.y"
+ case 327:
+#line 2194 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
}
+#line 6740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 318:
-/* Line 1792 of yacc.c */
-#line 2116 "glslang.y"
+ case 328:
+#line 2199 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
}
+#line 6750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 319:
-/* Line 1792 of yacc.c */
-#line 2121 "glslang.y"
+ case 329:
+#line 2204 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
}
+#line 6760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 320:
-/* Line 1792 of yacc.c */
-#line 2126 "glslang.y"
+ case 330:
+#line 2209 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
}
+#line 6770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 321:
-/* Line 1792 of yacc.c */
-#line 2131 "glslang.y"
+ case 331:
+#line 2214 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
}
+#line 6780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 322:
-/* Line 1792 of yacc.c */
-#line 2136 "glslang.y"
+ case 332:
+#line 2219 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
}
+#line 6790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 323:
-/* Line 1792 of yacc.c */
-#line 2141 "glslang.y"
+ case 333:
+#line 2224 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
}
+#line 6800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 324:
-/* Line 1792 of yacc.c */
-#line 2146 "glslang.y"
+ case 334:
+#line 2229 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
}
+#line 6810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 325:
-/* Line 1792 of yacc.c */
-#line 2151 "glslang.y"
+ case 335:
+#line 2234 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
}
+#line 6820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 326:
-/* Line 1792 of yacc.c */
-#line 2156 "glslang.y"
+ case 336:
+#line 2239 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
}
+#line 6830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 327:
-/* Line 1792 of yacc.c */
-#line 2161 "glslang.y"
+ case 337:
+#line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
}
+#line 6840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 328:
-/* Line 1792 of yacc.c */
-#line 2166 "glslang.y"
+ case 338:
+#line 2249 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
}
+#line 6850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 329:
-/* Line 1792 of yacc.c */
-#line 2171 "glslang.y"
+ case 339:
+#line 2254 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
}
+#line 6860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 330:
-/* Line 1792 of yacc.c */
-#line 2176 "glslang.y"
+ case 340:
+#line 2259 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
}
+#line 6870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 331:
-/* Line 1792 of yacc.c */
-#line 2181 "glslang.y"
+ case 341:
+#line 2264 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
}
+#line 6880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 332:
-/* Line 1792 of yacc.c */
-#line 2186 "glslang.y"
+ case 342:
+#line 2269 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
}
+#line 6890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 333:
-/* Line 1792 of yacc.c */
-#line 2191 "glslang.y"
+ case 343:
+#line 2274 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
}
+#line 6900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 334:
-/* Line 1792 of yacc.c */
-#line 2196 "glslang.y"
+ case 344:
+#line 2279 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
}
+#line 6910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 335:
-/* Line 1792 of yacc.c */
-#line 2201 "glslang.y"
+ case 345:
+#line 2284 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
}
+#line 6920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 336:
-/* Line 1792 of yacc.c */
-#line 2206 "glslang.y"
+ case 346:
+#line 2289 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
}
+#line 6930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 337:
-/* Line 1792 of yacc.c */
-#line 2211 "glslang.y"
+ case 347:
+#line 2294 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
}
+#line 6940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 338:
-/* Line 1792 of yacc.c */
-#line 2216 "glslang.y"
+ case 348:
+#line 2299 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
}
+#line 6950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 339:
-/* Line 1792 of yacc.c */
-#line 2221 "glslang.y"
+ case 349:
+#line 2304 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
}
+#line 6960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 340:
-/* Line 1792 of yacc.c */
-#line 2226 "glslang.y"
+ case 350:
+#line 2309 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
}
+#line 6970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 341:
-/* Line 1792 of yacc.c */
-#line 2231 "glslang.y"
+ case 351:
+#line 2314 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
}
+#line 6980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 342:
-/* Line 1792 of yacc.c */
-#line 2236 "glslang.y"
+ case 352:
+#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
}
+#line 6990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 343:
-/* Line 1792 of yacc.c */
-#line 2241 "glslang.y"
+ case 353:
+#line 2324 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
}
+#line 7000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 344:
-/* Line 1792 of yacc.c */
-#line 2246 "glslang.y"
+ case 354:
+#line 2329 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
}
+#line 7010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 345:
-/* Line 1792 of yacc.c */
-#line 2251 "glslang.y"
+ case 355:
+#line 2334 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
}
+#line 7020 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 346:
-/* Line 1792 of yacc.c */
-#line 2256 "glslang.y"
+ case 356:
+#line 2339 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
}
+#line 7030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 347:
-/* Line 1792 of yacc.c */
-#line 2261 "glslang.y"
+ case 357:
+#line 2344 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
}
+#line 7040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 348:
-/* Line 1792 of yacc.c */
-#line 2266 "glslang.y"
+ case 358:
+#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
}
+#line 7050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 349:
-/* Line 1792 of yacc.c */
-#line 2271 "glslang.y"
+ case 359:
+#line 2354 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
}
+#line 7060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 350:
-/* Line 1792 of yacc.c */
-#line 2276 "glslang.y"
+ case 360:
+#line 2359 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
}
+#line 7070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 351:
-/* Line 1792 of yacc.c */
-#line 2281 "glslang.y"
+ case 361:
+#line 2364 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ // GL_OES_EGL_image_external
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
(yyval.interm.type).sampler.external = true;
}
+#line 7081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 352:
-/* Line 1792 of yacc.c */
-#line 2287 "glslang.y"
+ case 362:
+#line 2370 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat);
}
+#line 7092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 353:
-/* Line 1792 of yacc.c */
-#line 2293 "glslang.y"
+ case 363:
+#line 2376 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat, true);
}
+#line 7103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 354:
-/* Line 1792 of yacc.c */
-#line 2299 "glslang.y"
+ case 364:
+#line 2382 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt);
}
+#line 7114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 355:
-/* Line 1792 of yacc.c */
-#line 2305 "glslang.y"
+ case 365:
+#line 2388 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt, true);
}
+#line 7125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 356:
-/* Line 1792 of yacc.c */
-#line 2311 "glslang.y"
+ case 366:
+#line 2394 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint);
}
+#line 7136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 357:
-/* Line 1792 of yacc.c */
-#line 2317 "glslang.y"
+ case 367:
+#line 2400 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint, true);
}
+#line 7147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 358:
-/* Line 1792 of yacc.c */
-#line 2323 "glslang.y"
+ case 368:
+#line 2406 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+ (yyval.interm.type) = (yyvsp[0].interm.type);
(yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
}
+#line 7157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 359:
-/* Line 1792 of yacc.c */
-#line 2328 "glslang.y"
+ case 369:
+#line 2411 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
//
// This is for user defined type names. The lexical phase looked up the
// type.
//
- if (const TVariable* variable = ((yyvsp[(1) - (1)].lex).symbol)->getAsVariable()) {
+ if (const TVariable* variable = ((yyvsp[0].lex).symbol)->getAsVariable()) {
const TType& structure = variable->getType();
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtStruct;
(yyval.interm.type).userDef = &structure;
} else
- parseContext.error((yyvsp[(1) - (1)].lex).loc, "expected type name", (yyvsp[(1) - (1)].lex).string->c_str(), "");
+ parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
}
+#line 7175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 360:
-/* Line 1792 of yacc.c */
-#line 2344 "glslang.y"
+ case 370:
+#line 2427 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
- parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
+ parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
}
+#line 7185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 361:
-/* Line 1792 of yacc.c */
-#line 2349 "glslang.y"
+ case 371:
+#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
- parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
+ parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
}
+#line 7195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 362:
-/* Line 1792 of yacc.c */
-#line 2354 "glslang.y"
+ case 372:
+#line 2437 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
- (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
- parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqLow);
+ parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
}
+#line 7205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 363:
-/* Line 1792 of yacc.c */
-#line 2362 "glslang.y"
- { parseContext.nestedStructCheck((yyvsp[(1) - (3)].lex).loc); }
+ case 373:
+#line 2445 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
+#line 7211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 364:
-/* Line 1792 of yacc.c */
-#line 2362 "glslang.y"
+ case 374:
+#line 2445 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- TType* structure = new TType((yyvsp[(5) - (6)].interm.typeList), *(yyvsp[(2) - (6)].lex).string);
- parseContext.structArrayCheck((yyvsp[(2) - (6)].lex).loc, *structure);
- TVariable* userTypeDef = new TVariable((yyvsp[(2) - (6)].lex).string, *structure, true);
+ TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
+ parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
+ TVariable* userTypeDef = new TVariable((yyvsp[-4].lex).string, *structure, true);
if (! parseContext.symbolTable.insert(*userTypeDef))
- parseContext.error((yyvsp[(2) - (6)].lex).loc, "redefinition", (yyvsp[(2) - (6)].lex).string->c_str(), "struct");
- (yyval.interm.type).init((yyvsp[(1) - (6)].lex).loc);
+ parseContext.error((yyvsp[-4].lex).loc, "redefinition", (yyvsp[-4].lex).string->c_str(), "struct");
+ (yyval.interm.type).init((yyvsp[-5].lex).loc);
(yyval.interm.type).basicType = EbtStruct;
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
+#line 7227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 365:
-/* Line 1792 of yacc.c */
-#line 2373 "glslang.y"
- { parseContext.nestedStructCheck((yyvsp[(1) - (2)].lex).loc); }
+ case 375:
+#line 2456 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
+#line 7233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 366:
-/* Line 1792 of yacc.c */
-#line 2373 "glslang.y"
+ case 376:
+#line 2456 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), TString(""));
- (yyval.interm.type).init((yyvsp[(1) - (5)].lex).loc);
+ TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
+ (yyval.interm.type).init((yyvsp[-4].lex).loc);
(yyval.interm.type).basicType = EbtStruct;
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
+#line 7245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 367:
-/* Line 1792 of yacc.c */
-#line 2383 "glslang.y"
+ case 377:
+#line 2466 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList);
+ (yyval.interm.typeList) = (yyvsp[0].interm.typeList);
}
+#line 7253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 368:
-/* Line 1792 of yacc.c */
-#line 2386 "glslang.y"
+ case 378:
+#line 2469 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList);
- for (unsigned int i = 0; i < (yyvsp[(2) - (2)].interm.typeList)->size(); ++i) {
+ (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
+ for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) {
- if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName())
- parseContext.error((*(yyvsp[(2) - (2)].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName().c_str());
+ if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[0].interm.typeList))[i].type->getFieldName())
+ parseContext.error((*(yyvsp[0].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[0].interm.typeList))[i].type->getFieldName().c_str());
}
- (yyval.interm.typeList)->push_back((*(yyvsp[(2) - (2)].interm.typeList))[i]);
+ (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
}
}
+#line 7268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 369:
-/* Line 1792 of yacc.c */
-#line 2399 "glslang.y"
+ case 379:
+#line 2482 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- if ((yyvsp[(1) - (3)].interm.type).arraySizes) {
- parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
- parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+ if ((yyvsp[-2].interm.type).arraySizes) {
+ parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+ parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
if (parseContext.profile == EEsProfile)
- parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes);
+ parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
}
- (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList);
+ (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
- parseContext.voidErrorCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyvsp[(2) - (3)].interm.typeList))[0].type->getFieldName(), (yyvsp[(1) - (3)].interm.type).basicType);
- parseContext.precisionQualifierCheck((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).basicType, (yyvsp[(1) - (3)].interm.type).qualifier);
+ parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType);
+ parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier);
for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) {
- parseContext.arrayDimCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(1) - (3)].interm.type).arraySizes);
- (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(1) - (3)].interm.type));
+ parseContext.arrayDimCheck((yyvsp[-2].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[-2].interm.type).arraySizes);
+ (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
}
}
+#line 7291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 370:
-/* Line 1792 of yacc.c */
-#line 2417 "glslang.y"
+ case 380:
+#line 2500 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.globalQualifierFixCheck((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier);
- if ((yyvsp[(2) - (4)].interm.type).arraySizes) {
- parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
- parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+ parseContext.globalQualifierFixCheck((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier);
+ if ((yyvsp[-2].interm.type).arraySizes) {
+ parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+ parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
if (parseContext.profile == EEsProfile)
- parseContext.arraySizeRequiredCheck((yyvsp[(2) - (4)].interm.type).loc, *(yyvsp[(2) - (4)].interm.type).arraySizes);
+ parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
}
- (yyval.interm.typeList) = (yyvsp[(3) - (4)].interm.typeList);
+ (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
- parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers);
- parseContext.voidErrorCheck((yyvsp[(2) - (4)].interm.type).loc, (*(yyvsp[(3) - (4)].interm.typeList))[0].type->getFieldName(), (yyvsp[(2) - (4)].interm.type).basicType);
- parseContext.mergeQualifiers((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).qualifier, (yyvsp[(1) - (4)].interm.type).qualifier, true);
- parseContext.precisionQualifierCheck((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).basicType, (yyvsp[(2) - (4)].interm.type).qualifier);
+ parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
+ parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType);
+ parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true);
+ parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier);
for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) {
- parseContext.arrayDimCheck((yyvsp[(1) - (4)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(2) - (4)].interm.type).arraySizes);
- (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(2) - (4)].interm.type));
+ parseContext.arrayDimCheck((yyvsp[-3].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[-2].interm.type).arraySizes);
+ (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
}
}
+#line 7317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 371:
-/* Line 1792 of yacc.c */
-#line 2441 "glslang.y"
+ case 381:
+#line 2524 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = new TTypeList;
- (yyval.interm.typeList)->push_back((yyvsp[(1) - (1)].interm.typeLine));
+ (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
+#line 7326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 372:
-/* Line 1792 of yacc.c */
-#line 2445 "glslang.y"
+ case 382:
+#line 2528 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine));
+ (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
+#line 7334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 373:
-/* Line 1792 of yacc.c */
-#line 2451 "glslang.y"
+ case 383:
+#line 2534 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeLine).type = new TType(EbtVoid);
- (yyval.interm.typeLine).loc = (yyvsp[(1) - (1)].lex).loc;
- (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (1)].lex).string);
+ (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
+ (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
}
+#line 7344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 374:
-/* Line 1792 of yacc.c */
-#line 2456 "glslang.y"
+ case 384:
+#line 2539 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.arrayDimCheck((yyvsp[(1) - (2)].lex).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0);
+ parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0);
(yyval.interm.typeLine).type = new TType(EbtVoid);
- (yyval.interm.typeLine).loc = (yyvsp[(1) - (2)].lex).loc;
- (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (2)].lex).string);
- (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[(2) - (2)].interm).arraySizes);
+ (yyval.interm.typeLine).loc = (yyvsp[-1].lex).loc;
+ (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
+ (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes);
}
+#line 7357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 375:
-/* Line 1792 of yacc.c */
-#line 2467 "glslang.y"
+ case 385:
+#line 2550 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
+#line 7365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 376:
-/* Line 1792 of yacc.c */
-#line 2470 "glslang.y"
+ case 386:
+#line 2553 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
const char* initFeature = "{ } style initializers";
- parseContext.requireProfile((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, initFeature);
- parseContext.profileRequires((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
- (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode);
+ parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
+ parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
+ (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
}
+#line 7376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 377:
-/* Line 1792 of yacc.c */
-#line 2476 "glslang.y"
+ case 387:
+#line 2559 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
const char* initFeature = "{ } style initializers";
- parseContext.requireProfile((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, initFeature);
- parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
- (yyval.interm.intermTypedNode) = (yyvsp[(2) - (4)].interm.intermTypedNode);
+ parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
+ parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
+ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
+#line 7387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 378:
-/* Line 1792 of yacc.c */
-#line 2485 "glslang.y"
+ case 388:
+#line 2568 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[(1) - (1)].interm.intermTypedNode), (yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc());
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
}
+#line 7395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 379:
-/* Line 1792 of yacc.c */
-#line 2488 "glslang.y"
+ case 389:
+#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
}
+#line 7403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 380:
-/* Line 1792 of yacc.c */
-#line 2494 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 390:
+#line 2577 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 381:
-/* Line 1792 of yacc.c */
-#line 2498 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 391:
+#line 2581 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7415 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 382:
-/* Line 1792 of yacc.c */
-#line 2499 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 392:
+#line 2582 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 383:
-/* Line 1792 of yacc.c */
-#line 2505 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 393:
+#line 2588 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7427 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 384:
-/* Line 1792 of yacc.c */
-#line 2506 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 394:
+#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 385:
-/* Line 1792 of yacc.c */
-#line 2507 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 395:
+#line 2590 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 386:
-/* Line 1792 of yacc.c */
-#line 2508 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 396:
+#line 2591 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 387:
-/* Line 1792 of yacc.c */
-#line 2509 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 397:
+#line 2592 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 388:
-/* Line 1792 of yacc.c */
-#line 2510 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 398:
+#line 2593 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 389:
-/* Line 1792 of yacc.c */
-#line 2511 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 399:
+#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 390:
-/* Line 1792 of yacc.c */
-#line 2515 "glslang.y"
+ case 400:
+#line 2598 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; }
+#line 7469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 391:
-/* Line 1792 of yacc.c */
-#line 2516 "glslang.y"
+ case 401:
+#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
}
+#line 7478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 392:
-/* Line 1792 of yacc.c */
-#line 2520 "glslang.y"
+ case 402:
+#line 2603 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
}
+#line 7487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 393:
-/* Line 1792 of yacc.c */
-#line 2524 "glslang.y"
+ case 403:
+#line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- if ((yyvsp[(3) - (5)].interm.intermNode) && (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate())
- (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
- (yyval.interm.intermNode) = (yyvsp[(3) - (5)].interm.intermNode);
+ if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
+ (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
+ (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
}
+#line 7497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 394:
-/* Line 1792 of yacc.c */
-#line 2532 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 404:
+#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 395:
-/* Line 1792 of yacc.c */
-#line 2533 "glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+ case 405:
+#line 2616 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 7509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 396:
-/* Line 1792 of yacc.c */
-#line 2537 "glslang.y"
+ case 406:
+#line 2620 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
++parseContext.controlFlowNestingLevel;
}
+#line 7517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 397:
-/* Line 1792 of yacc.c */
-#line 2540 "glslang.y"
+ case 407:
+#line 2623 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
--parseContext.controlFlowNestingLevel;
- (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
+#line 7526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 398:
-/* Line 1792 of yacc.c */
-#line 2544 "glslang.y"
+ case 408:
+#line 2627 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
+#line 7536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 399:
-/* Line 1792 of yacc.c */
-#line 2549 "glslang.y"
+ case 409:
+#line 2632 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
- (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
+#line 7547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 400:
-/* Line 1792 of yacc.c */
-#line 2558 "glslang.y"
+ case 410:
+#line 2641 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
}
+#line 7555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 401:
-/* Line 1792 of yacc.c */
-#line 2561 "glslang.y"
+ case 411:
+#line 2644 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- if ((yyvsp[(2) - (3)].interm.intermNode) && (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate())
- (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
- (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermNode);
+ if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
+ (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
+ (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
}
+#line 7565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 402:
-/* Line 1792 of yacc.c */
-#line 2569 "glslang.y"
+ case 412:
+#line 2652 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode));
- if ((yyvsp[(1) - (1)].interm.intermNode) && (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
- (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
- parseContext.wrapupSwitchSubsequence(0, (yyvsp[(1) - (1)].interm.intermNode));
+ (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
+ if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
+ (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
+ parseContext.wrapupSwitchSubsequence(0, (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case
}
}
+#line 7578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 403:
-/* Line 1792 of yacc.c */
-#line 2577 "glslang.y"
+ case 413:
+#line 2660 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- if ((yyvsp[(2) - (2)].interm.intermNode) && (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
- (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
- parseContext.wrapupSwitchSubsequence((yyvsp[(1) - (2)].interm.intermNode) ? (yyvsp[(1) - (2)].interm.intermNode)->getAsAggregate() : 0, (yyvsp[(2) - (2)].interm.intermNode));
+ if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
+ (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
+ parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case
} else
- (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode));
+ (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
}
+#line 7591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 404:
-/* Line 1792 of yacc.c */
-#line 2588 "glslang.y"
+ case 414:
+#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; }
+#line 7597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 405:
-/* Line 1792 of yacc.c */
-#line 2589 "glslang.y"
- { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); }
+ case 415:
+#line 2672 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
+#line 7603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 406:
-/* Line 1792 of yacc.c */
-#line 2593 "glslang.y"
+ case 416:
+#line 2676 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.boolCheck((yyvsp[(1) - (5)].lex).loc, (yyvsp[(3) - (5)].interm.intermTypedNode));
- (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yyvsp[(1) - (5)].lex).loc);
+ parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
+ (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
}
+#line 7612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 407:
-/* Line 1792 of yacc.c */
-#line 2600 "glslang.y"
+ case 417:
+#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode);
- (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode);
+ (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
+ (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
}
+#line 7621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 408:
-/* Line 1792 of yacc.c */
-#line 2604 "glslang.y"
+ case 418:
+#line 2687 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode);
+ (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
(yyval.interm.nodePair).node2 = 0;
}
+#line 7630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 409:
-/* Line 1792 of yacc.c */
-#line 2612 "glslang.y"
+ case 419:
+#line 2695 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
- parseContext.boolCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), (yyvsp[(1) - (1)].interm.intermTypedNode));
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+ parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
}
+#line 7639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 410:
-/* Line 1792 of yacc.c */
-#line 2616 "glslang.y"
+ case 420:
+#line 2699 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.boolCheck((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.type));
+ parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
- TType type((yyvsp[(1) - (4)].interm.type));
- TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode));
+ TType type((yyvsp[-3].interm.type));
+ TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
if (initNode)
(yyval.interm.intermTypedNode) = initNode->getAsTyped();
else
(yyval.interm.intermTypedNode) = 0;
}
+#line 7654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 411:
-/* Line 1792 of yacc.c */
-#line 2629 "glslang.y"
+ case 421:
+#line 2712 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// start new switch sequence on the switch stack
++parseContext.controlFlowNestingLevel;
@@ -7778,13 +7663,13 @@ yyreduce:
parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
parseContext.symbolTable.push();
}
+#line 7667 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 412:
-/* Line 1792 of yacc.c */
-#line 2637 "glslang.y"
+ case 422:
+#line 2720 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[(1) - (8)].lex).loc, (yyvsp[(3) - (8)].interm.intermTypedNode), (yyvsp[(7) - (8)].interm.intermNode) ? (yyvsp[(7) - (8)].interm.intermNode)->getAsAggregate() : 0);
+ (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
delete parseContext.switchSequenceStack.back();
parseContext.switchSequenceStack.pop_back();
parseContext.switchLevel.pop_back();
@@ -7792,299 +7677,311 @@ yyreduce:
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
+#line 7681 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 413:
-/* Line 1792 of yacc.c */
-#line 2649 "glslang.y"
+ case 423:
+#line 2732 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
}
+#line 7689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 414:
-/* Line 1792 of yacc.c */
-#line 2652 "glslang.y"
+ case 424:
+#line 2735 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
+#line 7697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 415:
-/* Line 1792 of yacc.c */
-#line 2658 "glslang.y"
+ case 425:
+#line 2741 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
- parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot appear outside switch statement", "case", "");
+ parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", "");
else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel)
- parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot be nested inside control flow", "case", "");
+ parseContext.error((yyvsp[-2].lex).loc, "cannot be nested inside control flow", "case", "");
else {
- parseContext.constantValueCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case");
- parseContext.integerCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case");
- (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc);
+ parseContext.constantValueCheck((yyvsp[-1].interm.intermTypedNode), "case");
+ parseContext.integerCheck((yyvsp[-1].interm.intermTypedNode), "case");
+ (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
}
}
+#line 7714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 416:
-/* Line 1792 of yacc.c */
-#line 2670 "glslang.y"
+ case 426:
+#line 2753 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
- parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot appear outside switch statement", "default", "");
+ parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", "");
else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel)
- parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot be nested inside control flow", "default", "");
+ parseContext.error((yyvsp[-1].lex).loc, "cannot be nested inside control flow", "default", "");
else
- (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[(1) - (2)].lex).loc);
+ (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
}
+#line 7728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 417:
-/* Line 1792 of yacc.c */
-#line 2682 "glslang.y"
+ case 427:
+#line 2765 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (! parseContext.limits.whileLoops)
- parseContext.error((yyvsp[(1) - (2)].lex).loc, "while loops not available", "limitation", "");
+ parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
+#line 7741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 418:
-/* Line 1792 of yacc.c */
-#line 2690 "glslang.y"
+ case 428:
+#line 2773 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
- (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(6) - (6)].interm.intermNode), (yyvsp[(4) - (6)].interm.intermTypedNode), 0, true, (yyvsp[(1) - (6)].lex).loc);
+ (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
--parseContext.loopNestingLevel;
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
+#line 7753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 419:
-/* Line 1792 of yacc.c */
-#line 2697 "glslang.y"
+ case 429:
+#line 2780 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
+#line 7763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 420:
-/* Line 1792 of yacc.c */
-#line 2702 "glslang.y"
+ case 430:
+#line 2785 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (! parseContext.limits.whileLoops)
- parseContext.error((yyvsp[(1) - (8)].lex).loc, "do-while loops not available", "limitation", "");
+ parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
- parseContext.boolCheck((yyvsp[(8) - (8)].lex).loc, (yyvsp[(6) - (8)].interm.intermTypedNode));
+ parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode));
- (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(3) - (8)].interm.intermNode), (yyvsp[(6) - (8)].interm.intermTypedNode), 0, false, (yyvsp[(4) - (8)].lex).loc);
+ (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc);
--parseContext.loopNestingLevel;
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
+#line 7779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 421:
-/* Line 1792 of yacc.c */
-#line 2713 "glslang.y"
+ case 431:
+#line 2796 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
+#line 7790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 422:
-/* Line 1792 of yacc.c */
-#line 2719 "glslang.y"
+ case 432:
+#line 2802 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
- (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(4) - (7)].interm.intermNode), (yyvsp[(2) - (7)].lex).loc);
- TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[(7) - (7)].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node2), true, (yyvsp[(1) - (7)].lex).loc);
+ (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
+ TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node2), true, (yyvsp[-6].lex).loc);
if (! parseContext.limits.nonInductiveForLoops)
- parseContext.inductiveLoopCheck((yyvsp[(1) - (7)].lex).loc, (yyvsp[(4) - (7)].interm.intermNode), forLoop);
- (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[(1) - (7)].lex).loc);
+ parseContext.inductiveLoopCheck((yyvsp[-6].lex).loc, (yyvsp[-3].interm.intermNode), forLoop);
+ (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[-6].lex).loc);
(yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
--parseContext.loopNestingLevel;
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
+#line 7807 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 423:
-/* Line 1792 of yacc.c */
-#line 2734 "glslang.y"
+ case 433:
+#line 2817 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
+#line 7815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 424:
-/* Line 1792 of yacc.c */
-#line 2737 "glslang.y"
+ case 434:
+#line 2820 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
+#line 7823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 425:
-/* Line 1792 of yacc.c */
-#line 2743 "glslang.y"
+ case 435:
+#line 2826 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
+#line 7831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 426:
-/* Line 1792 of yacc.c */
-#line 2746 "glslang.y"
+ case 436:
+#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = 0;
}
+#line 7839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 427:
-/* Line 1792 of yacc.c */
-#line 2752 "glslang.y"
+ case 437:
+#line 2835 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode);
+ (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = 0;
}
+#line 7848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 428:
-/* Line 1792 of yacc.c */
-#line 2756 "glslang.y"
+ case 438:
+#line 2839 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode);
- (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode);
+ (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
+ (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
}
+#line 7857 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 429:
-/* Line 1792 of yacc.c */
-#line 2763 "glslang.y"
+ case 439:
+#line 2846 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (parseContext.loopNestingLevel <= 0)
- parseContext.error((yyvsp[(1) - (2)].lex).loc, "continue statement only allowed in loops", "", "");
- (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[(1) - (2)].lex).loc);
+ parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
+ (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
}
+#line 7867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 430:
-/* Line 1792 of yacc.c */
-#line 2768 "glslang.y"
+ case 440:
+#line 2851 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
- parseContext.error((yyvsp[(1) - (2)].lex).loc, "break statement only allowed in switch and loops", "", "");
- (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[(1) - (2)].lex).loc);
+ parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
+ (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
}
+#line 7877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 431:
-/* Line 1792 of yacc.c */
-#line 2773 "glslang.y"
+ case 441:
+#line 2856 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).loc);
+ (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
- parseContext.error((yyvsp[(1) - (2)].lex).loc, "non-void function must return a value", "return", "");
+ parseContext.error((yyvsp[-1].lex).loc, "non-void function must return a value", "return", "");
if (parseContext.inMain)
- parseContext.postMainReturn = true;
+ parseContext.postEntryPointReturn = true;
}
+#line 7889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 432:
-/* Line 1792 of yacc.c */
-#line 2780 "glslang.y"
+ case 442:
+#line 2863 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[(1) - (3)].lex).loc, (yyvsp[(2) - (3)].interm.intermTypedNode));
+ (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
}
+#line 7897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 433:
-/* Line 1792 of yacc.c */
-#line 2783 "glslang.y"
+ case 443:
+#line 2866 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.requireStage((yyvsp[(1) - (2)].lex).loc, EShLangFragment, "discard");
- (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[(1) - (2)].lex).loc);
+ parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
+ (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
}
+#line 7906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 434:
-/* Line 1792 of yacc.c */
-#line 2792 "glslang.y"
+ case 444:
+#line 2875 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
+#line 7915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 435:
-/* Line 1792 of yacc.c */
-#line 2796 "glslang.y"
+ case 445:
+#line 2879 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode));
- parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
+ if ((yyvsp[0].interm.intermNode) != nullptr) {
+ (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
+ parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
+ }
}
+#line 7926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 436:
-/* Line 1792 of yacc.c */
-#line 2803 "glslang.y"
+ case 446:
+#line 2888 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
+#line 7934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 437:
-/* Line 1792 of yacc.c */
-#line 2806 "glslang.y"
+ case 447:
+#line 2891 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
+#line 7942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 438:
-/* Line 1792 of yacc.c */
-#line 2812 "glslang.y"
+ case 448:
+#line 2894 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyvsp[(1) - (1)].interm).function = parseContext.handleFunctionDeclarator((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function, false /* not prototype */);
- (yyvsp[(1) - (1)].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function);
+ parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
+ (yyval.interm.intermNode) = nullptr;
}
+#line 7952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 439:
-/* Line 1792 of yacc.c */
-#line 2816 "glslang.y"
+ case 449:
+#line 2902 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
+ (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
+ }
+#line 7961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 450:
+#line 2906 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// May be best done as post process phase on intermediate code
if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
- parseContext.error((yyvsp[(1) - (3)].interm).loc, "function does not return a value:", "", (yyvsp[(1) - (3)].interm).function->getName().c_str());
+ parseContext.error((yyvsp[-2].interm).loc, "function does not return a value:", "", (yyvsp[-2].interm).function->getName().c_str());
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
- (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermNode));
- parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[(1) - (3)].interm).function->getType(), (yyvsp[(1) - (3)].interm).loc);
- (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[(1) - (3)].interm).function->getMangledName().c_str());
+ (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermNode));
+ parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[-2].interm).function->getType(), (yyvsp[-2].interm).loc);
+ (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[-2].interm).function->getMangledName().c_str());
// store the pragma information for debug and optimize and other vendor specific
// information. This information can be queried from the parse tree
(yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
(yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
- (yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable);
+ (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
}
+#line 7981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
-/* Line 1792 of yacc.c */
-#line 8088 "glslang_tab.cpp"
+#line 7985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -8106,7 +8003,7 @@ yyreduce:
*++yyvsp = yyval;
- /* Now `shift' the result of the reduction. Determine what state
+ /* Now 'shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
number reduced by. */
@@ -8121,9 +8018,9 @@ yyreduce:
goto yynewstate;
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error. |
+`--------------------------------------*/
yyerrlab:
/* Make sure we have latest lookahead translation. See comments at
user semantic actions for why this is necessary. */
@@ -8174,20 +8071,20 @@ yyerrlab:
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
- error, discard it. */
+ error, discard it. */
if (yychar <= YYEOF)
- {
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
- YYABORT;
- }
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
else
- {
- yydestruct ("Error: discarding",
- yytoken, &yylval, pParseContext);
- yychar = YYEMPTY;
- }
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, pParseContext);
+ yychar = YYEMPTY;
+ }
}
/* Else will try to reuse lookahead token after shifting the error
@@ -8206,7 +8103,7 @@ yyerrorlab:
if (/*CONSTCOND*/ 0)
goto yyerrorlab;
- /* Do not reclaim the symbols of the rule which action triggered
+ /* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
YYPOPSTACK (yylen);
yylen = 0;
@@ -8219,29 +8116,29 @@ yyerrorlab:
| yyerrlab1 -- common code for both syntax error and YYERROR. |
`-------------------------------------------------------------*/
yyerrlab1:
- yyerrstatus = 3; /* Each real token shifted decrements this. */
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
for (;;)
{
yyn = yypact[yystate];
if (!yypact_value_is_default (yyn))
- {
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
- {
- yyn = yytable[yyn];
- if (0 < yyn)
- break;
- }
- }
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
/* Pop the current state because it cannot handle the error token. */
if (yyssp == yyss)
- YYABORT;
+ YYABORT;
yydestruct ("Error: popping",
- yystos[yystate], yyvsp, pParseContext);
+ yystos[yystate], yyvsp, pParseContext);
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
@@ -8292,14 +8189,14 @@ yyreturn:
yydestruct ("Cleanup: discarding lookahead",
yytoken, &yylval, pParseContext);
}
- /* Do not reclaim the symbols of the rule which action triggered
+ /* Do not reclaim the symbols of the rule whose action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
YY_STACK_PRINT (yyss, yyssp);
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp, pParseContext);
+ yystos[*yyssp], yyvsp, pParseContext);
YYPOPSTACK (1);
}
#ifndef yyoverflow
@@ -8310,11 +8207,7 @@ yyreturn:
if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg);
#endif
- /* Make sure YYID is used. */
- return YYID (yyresult);
+ return yyresult;
}
-
-
-/* Line 2055 of yacc.c */
-#line 2833 "glslang.y"
+#line 2923 "MachineIndependent/glslang.y" /* yacc.c:1906 */
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h
index b6d27993c96..b2e00632d9a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 2.7. */
+/* A Bison parser, made by GNU Bison 3.0. */
/* Bison interface for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
-
+
+ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
@@ -26,13 +26,13 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
-#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
-# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
-/* Enabling traces. */
+#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
+# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
+/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 1
#endif
@@ -40,306 +40,315 @@
extern int yydebug;
#endif
-/* Tokens. */
+/* Token type. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- ATTRIBUTE = 258,
- VARYING = 259,
- CONST = 260,
- BOOL = 261,
- FLOAT = 262,
- DOUBLE = 263,
- INT = 264,
- UINT = 265,
- INT64_T = 266,
- UINT64_T = 267,
- FLOAT16_T = 268,
- BREAK = 269,
- CONTINUE = 270,
- DO = 271,
- ELSE = 272,
- FOR = 273,
- IF = 274,
- DISCARD = 275,
- RETURN = 276,
- SWITCH = 277,
- CASE = 278,
- DEFAULT = 279,
- SUBROUTINE = 280,
- BVEC2 = 281,
- BVEC3 = 282,
- BVEC4 = 283,
- IVEC2 = 284,
- IVEC3 = 285,
- IVEC4 = 286,
- I64VEC2 = 287,
- I64VEC3 = 288,
- I64VEC4 = 289,
- UVEC2 = 290,
- UVEC3 = 291,
- UVEC4 = 292,
- U64VEC2 = 293,
- U64VEC3 = 294,
- U64VEC4 = 295,
- VEC2 = 296,
- VEC3 = 297,
- VEC4 = 298,
- MAT2 = 299,
- MAT3 = 300,
- MAT4 = 301,
- CENTROID = 302,
- IN = 303,
- OUT = 304,
- INOUT = 305,
- UNIFORM = 306,
- PATCH = 307,
- SAMPLE = 308,
- BUFFER = 309,
- SHARED = 310,
- COHERENT = 311,
- VOLATILE = 312,
- RESTRICT = 313,
- READONLY = 314,
- WRITEONLY = 315,
- DVEC2 = 316,
- DVEC3 = 317,
- DVEC4 = 318,
- DMAT2 = 319,
- DMAT3 = 320,
- DMAT4 = 321,
- F16VEC2 = 322,
- F16VEC3 = 323,
- F16VEC4 = 324,
- F16MAT2 = 325,
- F16MAT3 = 326,
- F16MAT4 = 327,
- NOPERSPECTIVE = 328,
- FLAT = 329,
- SMOOTH = 330,
- LAYOUT = 331,
- __EXPLICITINTERPAMD = 332,
- MAT2X2 = 333,
- MAT2X3 = 334,
- MAT2X4 = 335,
- MAT3X2 = 336,
- MAT3X3 = 337,
- MAT3X4 = 338,
- MAT4X2 = 339,
- MAT4X3 = 340,
- MAT4X4 = 341,
- DMAT2X2 = 342,
- DMAT2X3 = 343,
- DMAT2X4 = 344,
- DMAT3X2 = 345,
- DMAT3X3 = 346,
- DMAT3X4 = 347,
- DMAT4X2 = 348,
- DMAT4X3 = 349,
- DMAT4X4 = 350,
- F16MAT2X2 = 351,
- F16MAT2X3 = 352,
- F16MAT2X4 = 353,
- F16MAT3X2 = 354,
- F16MAT3X3 = 355,
- F16MAT3X4 = 356,
- F16MAT4X2 = 357,
- F16MAT4X3 = 358,
- F16MAT4X4 = 359,
- ATOMIC_UINT = 360,
- SAMPLER1D = 361,
- SAMPLER2D = 362,
- SAMPLER3D = 363,
- SAMPLERCUBE = 364,
- SAMPLER1DSHADOW = 365,
- SAMPLER2DSHADOW = 366,
- SAMPLERCUBESHADOW = 367,
- SAMPLER1DARRAY = 368,
- SAMPLER2DARRAY = 369,
- SAMPLER1DARRAYSHADOW = 370,
- SAMPLER2DARRAYSHADOW = 371,
- ISAMPLER1D = 372,
- ISAMPLER2D = 373,
- ISAMPLER3D = 374,
- ISAMPLERCUBE = 375,
- ISAMPLER1DARRAY = 376,
- ISAMPLER2DARRAY = 377,
- USAMPLER1D = 378,
- USAMPLER2D = 379,
- USAMPLER3D = 380,
- USAMPLERCUBE = 381,
- USAMPLER1DARRAY = 382,
- USAMPLER2DARRAY = 383,
- SAMPLER2DRECT = 384,
- SAMPLER2DRECTSHADOW = 385,
- ISAMPLER2DRECT = 386,
- USAMPLER2DRECT = 387,
- SAMPLERBUFFER = 388,
- ISAMPLERBUFFER = 389,
- USAMPLERBUFFER = 390,
- SAMPLERCUBEARRAY = 391,
- SAMPLERCUBEARRAYSHADOW = 392,
- ISAMPLERCUBEARRAY = 393,
- USAMPLERCUBEARRAY = 394,
- SAMPLER2DMS = 395,
- ISAMPLER2DMS = 396,
- USAMPLER2DMS = 397,
- SAMPLER2DMSARRAY = 398,
- ISAMPLER2DMSARRAY = 399,
- USAMPLER2DMSARRAY = 400,
- SAMPLEREXTERNALOES = 401,
- SAMPLER = 402,
- SAMPLERSHADOW = 403,
- TEXTURE1D = 404,
- TEXTURE2D = 405,
- TEXTURE3D = 406,
- TEXTURECUBE = 407,
- TEXTURE1DARRAY = 408,
- TEXTURE2DARRAY = 409,
- ITEXTURE1D = 410,
- ITEXTURE2D = 411,
- ITEXTURE3D = 412,
- ITEXTURECUBE = 413,
- ITEXTURE1DARRAY = 414,
- ITEXTURE2DARRAY = 415,
- UTEXTURE1D = 416,
- UTEXTURE2D = 417,
- UTEXTURE3D = 418,
- UTEXTURECUBE = 419,
- UTEXTURE1DARRAY = 420,
- UTEXTURE2DARRAY = 421,
- TEXTURE2DRECT = 422,
- ITEXTURE2DRECT = 423,
- UTEXTURE2DRECT = 424,
- TEXTUREBUFFER = 425,
- ITEXTUREBUFFER = 426,
- UTEXTUREBUFFER = 427,
- TEXTURECUBEARRAY = 428,
- ITEXTURECUBEARRAY = 429,
- UTEXTURECUBEARRAY = 430,
- TEXTURE2DMS = 431,
- ITEXTURE2DMS = 432,
- UTEXTURE2DMS = 433,
- TEXTURE2DMSARRAY = 434,
- ITEXTURE2DMSARRAY = 435,
- UTEXTURE2DMSARRAY = 436,
- SUBPASSINPUT = 437,
- SUBPASSINPUTMS = 438,
- ISUBPASSINPUT = 439,
- ISUBPASSINPUTMS = 440,
- USUBPASSINPUT = 441,
- USUBPASSINPUTMS = 442,
- IMAGE1D = 443,
- IIMAGE1D = 444,
- UIMAGE1D = 445,
- IMAGE2D = 446,
- IIMAGE2D = 447,
- UIMAGE2D = 448,
- IMAGE3D = 449,
- IIMAGE3D = 450,
- UIMAGE3D = 451,
- IMAGE2DRECT = 452,
- IIMAGE2DRECT = 453,
- UIMAGE2DRECT = 454,
- IMAGECUBE = 455,
- IIMAGECUBE = 456,
- UIMAGECUBE = 457,
- IMAGEBUFFER = 458,
- IIMAGEBUFFER = 459,
- UIMAGEBUFFER = 460,
- IMAGE1DARRAY = 461,
- IIMAGE1DARRAY = 462,
- UIMAGE1DARRAY = 463,
- IMAGE2DARRAY = 464,
- IIMAGE2DARRAY = 465,
- UIMAGE2DARRAY = 466,
- IMAGECUBEARRAY = 467,
- IIMAGECUBEARRAY = 468,
- UIMAGECUBEARRAY = 469,
- IMAGE2DMS = 470,
- IIMAGE2DMS = 471,
- UIMAGE2DMS = 472,
- IMAGE2DMSARRAY = 473,
- IIMAGE2DMSARRAY = 474,
- UIMAGE2DMSARRAY = 475,
- STRUCT = 476,
- VOID = 477,
- WHILE = 478,
- IDENTIFIER = 479,
- TYPE_NAME = 480,
- FLOATCONSTANT = 481,
- DOUBLECONSTANT = 482,
- INTCONSTANT = 483,
- UINTCONSTANT = 484,
- INT64CONSTANT = 485,
- UINT64CONSTANT = 486,
- BOOLCONSTANT = 487,
- FLOAT16CONSTANT = 488,
- LEFT_OP = 489,
- RIGHT_OP = 490,
- INC_OP = 491,
- DEC_OP = 492,
- LE_OP = 493,
- GE_OP = 494,
- EQ_OP = 495,
- NE_OP = 496,
- AND_OP = 497,
- OR_OP = 498,
- XOR_OP = 499,
- MUL_ASSIGN = 500,
- DIV_ASSIGN = 501,
- ADD_ASSIGN = 502,
- MOD_ASSIGN = 503,
- LEFT_ASSIGN = 504,
- RIGHT_ASSIGN = 505,
- AND_ASSIGN = 506,
- XOR_ASSIGN = 507,
- OR_ASSIGN = 508,
- SUB_ASSIGN = 509,
- LEFT_PAREN = 510,
- RIGHT_PAREN = 511,
- LEFT_BRACKET = 512,
- RIGHT_BRACKET = 513,
- LEFT_BRACE = 514,
- RIGHT_BRACE = 515,
- DOT = 516,
- COMMA = 517,
- COLON = 518,
- EQUAL = 519,
- SEMICOLON = 520,
- BANG = 521,
- DASH = 522,
- TILDE = 523,
- PLUS = 524,
- STAR = 525,
- SLASH = 526,
- PERCENT = 527,
- LEFT_ANGLE = 528,
- RIGHT_ANGLE = 529,
- VERTICAL_BAR = 530,
- CARET = 531,
- AMPERSAND = 532,
- QUESTION = 533,
- INVARIANT = 534,
- PRECISE = 535,
- HIGH_PRECISION = 536,
- MEDIUM_PRECISION = 537,
- LOW_PRECISION = 538,
- PRECISION = 539,
- PACKED = 540,
- RESOURCE = 541,
- SUPERP = 542
- };
+ enum yytokentype
+ {
+ ATTRIBUTE = 258,
+ VARYING = 259,
+ CONST = 260,
+ BOOL = 261,
+ FLOAT = 262,
+ DOUBLE = 263,
+ INT = 264,
+ UINT = 265,
+ INT64_T = 266,
+ UINT64_T = 267,
+ INT16_T = 268,
+ UINT16_T = 269,
+ FLOAT16_T = 270,
+ BREAK = 271,
+ CONTINUE = 272,
+ DO = 273,
+ ELSE = 274,
+ FOR = 275,
+ IF = 276,
+ DISCARD = 277,
+ RETURN = 278,
+ SWITCH = 279,
+ CASE = 280,
+ DEFAULT = 281,
+ SUBROUTINE = 282,
+ BVEC2 = 283,
+ BVEC3 = 284,
+ BVEC4 = 285,
+ IVEC2 = 286,
+ IVEC3 = 287,
+ IVEC4 = 288,
+ I64VEC2 = 289,
+ I64VEC3 = 290,
+ I64VEC4 = 291,
+ UVEC2 = 292,
+ UVEC3 = 293,
+ UVEC4 = 294,
+ U64VEC2 = 295,
+ U64VEC3 = 296,
+ U64VEC4 = 297,
+ VEC2 = 298,
+ VEC3 = 299,
+ VEC4 = 300,
+ MAT2 = 301,
+ MAT3 = 302,
+ MAT4 = 303,
+ CENTROID = 304,
+ IN = 305,
+ OUT = 306,
+ INOUT = 307,
+ UNIFORM = 308,
+ PATCH = 309,
+ SAMPLE = 310,
+ BUFFER = 311,
+ SHARED = 312,
+ COHERENT = 313,
+ VOLATILE = 314,
+ RESTRICT = 315,
+ READONLY = 316,
+ WRITEONLY = 317,
+ DVEC2 = 318,
+ DVEC3 = 319,
+ DVEC4 = 320,
+ DMAT2 = 321,
+ DMAT3 = 322,
+ DMAT4 = 323,
+ F16VEC2 = 324,
+ F16VEC3 = 325,
+ F16VEC4 = 326,
+ F16MAT2 = 327,
+ F16MAT3 = 328,
+ F16MAT4 = 329,
+ I16VEC2 = 330,
+ I16VEC3 = 331,
+ I16VEC4 = 332,
+ U16VEC2 = 333,
+ U16VEC3 = 334,
+ U16VEC4 = 335,
+ NOPERSPECTIVE = 336,
+ FLAT = 337,
+ SMOOTH = 338,
+ LAYOUT = 339,
+ __EXPLICITINTERPAMD = 340,
+ MAT2X2 = 341,
+ MAT2X3 = 342,
+ MAT2X4 = 343,
+ MAT3X2 = 344,
+ MAT3X3 = 345,
+ MAT3X4 = 346,
+ MAT4X2 = 347,
+ MAT4X3 = 348,
+ MAT4X4 = 349,
+ DMAT2X2 = 350,
+ DMAT2X3 = 351,
+ DMAT2X4 = 352,
+ DMAT3X2 = 353,
+ DMAT3X3 = 354,
+ DMAT3X4 = 355,
+ DMAT4X2 = 356,
+ DMAT4X3 = 357,
+ DMAT4X4 = 358,
+ F16MAT2X2 = 359,
+ F16MAT2X3 = 360,
+ F16MAT2X4 = 361,
+ F16MAT3X2 = 362,
+ F16MAT3X3 = 363,
+ F16MAT3X4 = 364,
+ F16MAT4X2 = 365,
+ F16MAT4X3 = 366,
+ F16MAT4X4 = 367,
+ ATOMIC_UINT = 368,
+ SAMPLER1D = 369,
+ SAMPLER2D = 370,
+ SAMPLER3D = 371,
+ SAMPLERCUBE = 372,
+ SAMPLER1DSHADOW = 373,
+ SAMPLER2DSHADOW = 374,
+ SAMPLERCUBESHADOW = 375,
+ SAMPLER1DARRAY = 376,
+ SAMPLER2DARRAY = 377,
+ SAMPLER1DARRAYSHADOW = 378,
+ SAMPLER2DARRAYSHADOW = 379,
+ ISAMPLER1D = 380,
+ ISAMPLER2D = 381,
+ ISAMPLER3D = 382,
+ ISAMPLERCUBE = 383,
+ ISAMPLER1DARRAY = 384,
+ ISAMPLER2DARRAY = 385,
+ USAMPLER1D = 386,
+ USAMPLER2D = 387,
+ USAMPLER3D = 388,
+ USAMPLERCUBE = 389,
+ USAMPLER1DARRAY = 390,
+ USAMPLER2DARRAY = 391,
+ SAMPLER2DRECT = 392,
+ SAMPLER2DRECTSHADOW = 393,
+ ISAMPLER2DRECT = 394,
+ USAMPLER2DRECT = 395,
+ SAMPLERBUFFER = 396,
+ ISAMPLERBUFFER = 397,
+ USAMPLERBUFFER = 398,
+ SAMPLERCUBEARRAY = 399,
+ SAMPLERCUBEARRAYSHADOW = 400,
+ ISAMPLERCUBEARRAY = 401,
+ USAMPLERCUBEARRAY = 402,
+ SAMPLER2DMS = 403,
+ ISAMPLER2DMS = 404,
+ USAMPLER2DMS = 405,
+ SAMPLER2DMSARRAY = 406,
+ ISAMPLER2DMSARRAY = 407,
+ USAMPLER2DMSARRAY = 408,
+ SAMPLEREXTERNALOES = 409,
+ SAMPLER = 410,
+ SAMPLERSHADOW = 411,
+ TEXTURE1D = 412,
+ TEXTURE2D = 413,
+ TEXTURE3D = 414,
+ TEXTURECUBE = 415,
+ TEXTURE1DARRAY = 416,
+ TEXTURE2DARRAY = 417,
+ ITEXTURE1D = 418,
+ ITEXTURE2D = 419,
+ ITEXTURE3D = 420,
+ ITEXTURECUBE = 421,
+ ITEXTURE1DARRAY = 422,
+ ITEXTURE2DARRAY = 423,
+ UTEXTURE1D = 424,
+ UTEXTURE2D = 425,
+ UTEXTURE3D = 426,
+ UTEXTURECUBE = 427,
+ UTEXTURE1DARRAY = 428,
+ UTEXTURE2DARRAY = 429,
+ TEXTURE2DRECT = 430,
+ ITEXTURE2DRECT = 431,
+ UTEXTURE2DRECT = 432,
+ TEXTUREBUFFER = 433,
+ ITEXTUREBUFFER = 434,
+ UTEXTUREBUFFER = 435,
+ TEXTURECUBEARRAY = 436,
+ ITEXTURECUBEARRAY = 437,
+ UTEXTURECUBEARRAY = 438,
+ TEXTURE2DMS = 439,
+ ITEXTURE2DMS = 440,
+ UTEXTURE2DMS = 441,
+ TEXTURE2DMSARRAY = 442,
+ ITEXTURE2DMSARRAY = 443,
+ UTEXTURE2DMSARRAY = 444,
+ SUBPASSINPUT = 445,
+ SUBPASSINPUTMS = 446,
+ ISUBPASSINPUT = 447,
+ ISUBPASSINPUTMS = 448,
+ USUBPASSINPUT = 449,
+ USUBPASSINPUTMS = 450,
+ IMAGE1D = 451,
+ IIMAGE1D = 452,
+ UIMAGE1D = 453,
+ IMAGE2D = 454,
+ IIMAGE2D = 455,
+ UIMAGE2D = 456,
+ IMAGE3D = 457,
+ IIMAGE3D = 458,
+ UIMAGE3D = 459,
+ IMAGE2DRECT = 460,
+ IIMAGE2DRECT = 461,
+ UIMAGE2DRECT = 462,
+ IMAGECUBE = 463,
+ IIMAGECUBE = 464,
+ UIMAGECUBE = 465,
+ IMAGEBUFFER = 466,
+ IIMAGEBUFFER = 467,
+ UIMAGEBUFFER = 468,
+ IMAGE1DARRAY = 469,
+ IIMAGE1DARRAY = 470,
+ UIMAGE1DARRAY = 471,
+ IMAGE2DARRAY = 472,
+ IIMAGE2DARRAY = 473,
+ UIMAGE2DARRAY = 474,
+ IMAGECUBEARRAY = 475,
+ IIMAGECUBEARRAY = 476,
+ UIMAGECUBEARRAY = 477,
+ IMAGE2DMS = 478,
+ IIMAGE2DMS = 479,
+ UIMAGE2DMS = 480,
+ IMAGE2DMSARRAY = 481,
+ IIMAGE2DMSARRAY = 482,
+ UIMAGE2DMSARRAY = 483,
+ STRUCT = 484,
+ VOID = 485,
+ WHILE = 486,
+ IDENTIFIER = 487,
+ TYPE_NAME = 488,
+ FLOATCONSTANT = 489,
+ DOUBLECONSTANT = 490,
+ INTCONSTANT = 491,
+ UINTCONSTANT = 492,
+ INT64CONSTANT = 493,
+ UINT64CONSTANT = 494,
+ INT16CONSTANT = 495,
+ UINT16CONSTANT = 496,
+ BOOLCONSTANT = 497,
+ FLOAT16CONSTANT = 498,
+ LEFT_OP = 499,
+ RIGHT_OP = 500,
+ INC_OP = 501,
+ DEC_OP = 502,
+ LE_OP = 503,
+ GE_OP = 504,
+ EQ_OP = 505,
+ NE_OP = 506,
+ AND_OP = 507,
+ OR_OP = 508,
+ XOR_OP = 509,
+ MUL_ASSIGN = 510,
+ DIV_ASSIGN = 511,
+ ADD_ASSIGN = 512,
+ MOD_ASSIGN = 513,
+ LEFT_ASSIGN = 514,
+ RIGHT_ASSIGN = 515,
+ AND_ASSIGN = 516,
+ XOR_ASSIGN = 517,
+ OR_ASSIGN = 518,
+ SUB_ASSIGN = 519,
+ LEFT_PAREN = 520,
+ RIGHT_PAREN = 521,
+ LEFT_BRACKET = 522,
+ RIGHT_BRACKET = 523,
+ LEFT_BRACE = 524,
+ RIGHT_BRACE = 525,
+ DOT = 526,
+ COMMA = 527,
+ COLON = 528,
+ EQUAL = 529,
+ SEMICOLON = 530,
+ BANG = 531,
+ DASH = 532,
+ TILDE = 533,
+ PLUS = 534,
+ STAR = 535,
+ SLASH = 536,
+ PERCENT = 537,
+ LEFT_ANGLE = 538,
+ RIGHT_ANGLE = 539,
+ VERTICAL_BAR = 540,
+ CARET = 541,
+ AMPERSAND = 542,
+ QUESTION = 543,
+ INVARIANT = 544,
+ PRECISE = 545,
+ HIGH_PRECISION = 546,
+ MEDIUM_PRECISION = 547,
+ LOW_PRECISION = 548,
+ PRECISION = 549,
+ PACKED = 550,
+ RESOURCE = 551,
+ SUPERP = 552
+ };
#endif
-
+/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+typedef union YYSTYPE YYSTYPE;
+union YYSTYPE
{
-/* Line 2058 of yacc.c */
-#line 66 "glslang.y"
+#line 68 "MachineIndependent/glslang.y" /* yacc.c:1909 */
struct {
glslang::TSourceLoc loc;
@@ -373,28 +382,14 @@ typedef union YYSTYPE
};
} interm;
-
-/* Line 2058 of yacc.c */
-#line 379 "glslang_tab.cpp.h"
-} YYSTYPE;
+#line 386 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */
+};
# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
+
int yyparse (glslang::TParseContext* pParseContext);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */
+#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp
index b8a6969d1b6..7e15392da68 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp
@@ -45,11 +45,31 @@
namespace {
-bool is_positive_infinity(double x) {
+bool IsInfinity(double x) {
#ifdef _MSC_VER
- return _fpclass(x) == _FPCLASS_PINF;
+ switch (_fpclass(x)) {
+ case _FPCLASS_NINF:
+ case _FPCLASS_PINF:
+ return true;
+ default:
+ return false;
+ }
#else
- return std::isinf(x) && (x >= 0);
+ return std::isinf(x);
+#endif
+}
+
+bool IsNan(double x) {
+#ifdef _MSC_VER
+ switch (_fpclass(x)) {
+ case _FPCLASS_SNAN:
+ case _FPCLASS_QNAN:
+ return true;
+ default:
+ return false;
+ }
+#else
+ return std::isnan(x);
#endif
}
@@ -176,6 +196,7 @@ bool TOutputTraverser::visitBinary(TVisit /* visit */, TIntermBinary* node)
case EOpLogicalOr: out.debug << "logical-or"; break;
case EOpLogicalXor: out.debug << "logical-xor"; break;
case EOpLogicalAnd: out.debug << "logical-and"; break;
+
default: out.debug << "<unknown op>";
}
@@ -288,6 +309,13 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
case EOpDoubleBitsToUint64: out.debug << "doubleBitsToUint64"; break;
case EOpInt64BitsToDouble: out.debug << "int64BitsToDouble"; break;
case EOpUint64BitsToDouble: out.debug << "uint64BitsToDouble"; break;
+#ifdef AMD_EXTENSIONS
+ case EOpFloat16BitsToInt16: out.debug << "float16BitsToInt16"; break;
+ case EOpFloat16BitsToUint16: out.debug << "float16BitsToUint16"; break;
+ case EOpInt16BitsToFloat16: out.debug << "int16BitsToFloat16"; break;
+ case EOpUint16BitsToFloat16: out.debug << "uint16BitsToFloat16"; break;
+#endif
+
case EOpPackSnorm2x16: out.debug << "packSnorm2x16"; break;
case EOpUnpackSnorm2x16:out.debug << "unpackSnorm2x16"; break;
case EOpPackUnorm2x16: out.debug << "packUnorm2x16"; break;
@@ -308,6 +336,16 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
case EOpUnpackUint2x32: out.debug << "unpackUint2x32"; break;
#ifdef AMD_EXTENSIONS
+ case EOpPackInt2x16: out.debug << "packInt2x16"; break;
+ case EOpUnpackInt2x16: out.debug << "unpackInt2x16"; break;
+ case EOpPackUint2x16: out.debug << "packUint2x16"; break;
+ case EOpUnpackUint2x16: out.debug << "unpackUint2x16"; break;
+
+ case EOpPackInt4x16: out.debug << "packInt4x16"; break;
+ case EOpUnpackInt4x16: out.debug << "unpackInt4x16"; break;
+ case EOpPackUint4x16: out.debug << "packUint4x16"; break;
+ case EOpUnpackUint4x16: out.debug << "unpackUint4x16"; break;
+
case EOpPackFloat2x16: out.debug << "packFloat2x16"; break;
case EOpUnpackFloat2x16: out.debug << "unpackFloat2x16"; break;
#endif
@@ -370,6 +408,8 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
case EOpRcp: out.debug << "rcp"; break;
case EOpSaturate: out.debug << "saturate"; break;
+ case EOpSparseTexelsResident: out.debug << "sparseTexelsResident"; break;
+
#ifdef AMD_EXTENSIONS
case EOpMinInvocations: out.debug << "minInvocations"; break;
case EOpMaxInvocations: out.debug << "maxInvocations"; break;
@@ -392,10 +432,13 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
case EOpMaxInvocationsExclusiveScanNonUniform: out.debug << "maxInvocationsExclusiveScanNonUniform"; break;
case EOpAddInvocationsExclusiveScanNonUniform: out.debug << "addInvocationsExclusiveScanNonUniform"; break;
- case EOpMbcnt: out.debug << "mbcnt"; break;
+ case EOpMbcnt: out.debug << "mbcnt"; break;
+
+ case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break;
+ case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break;
- case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break;
- case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break;
+ case EOpFragmentMaskFetch: out.debug << "fragmentMaskFetchAMD"; break;
+ case EOpFragmentFetch: out.debug << "fragmentFetchAMD"; break;
case EOpConvBoolToFloat16: out.debug << "Convert bool to float16"; break;
case EOpConvIntToFloat16: out.debug << "Convert int to float16"; break;
@@ -411,8 +454,47 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
case EOpConvFloat16ToDouble: out.debug << "Convert float16 to double"; break;
case EOpConvFloat16ToInt64: out.debug << "Convert float16 to int64"; break;
case EOpConvFloat16ToUint64: out.debug << "Convert float16 to uint64"; break;
+
+ case EOpConvBoolToInt16: out.debug << "Convert bool to int16"; break;
+ case EOpConvIntToInt16: out.debug << "Convert int to int16"; break;
+ case EOpConvUintToInt16: out.debug << "Convert uint to int16"; break;
+ case EOpConvFloatToInt16: out.debug << "Convert float to int16"; break;
+ case EOpConvDoubleToInt16: out.debug << "Convert double to int16"; break;
+ case EOpConvFloat16ToInt16: out.debug << "Convert float16 to int16"; break;
+ case EOpConvInt64ToInt16: out.debug << "Convert int64 to int16"; break;
+ case EOpConvUint64ToInt16: out.debug << "Convert uint64 to int16"; break;
+ case EOpConvUint16ToInt16: out.debug << "Convert uint16 to int16"; break;
+ case EOpConvInt16ToBool: out.debug << "Convert int16 to bool"; break;
+ case EOpConvInt16ToInt: out.debug << "Convert int16 to int"; break;
+ case EOpConvInt16ToUint: out.debug << "Convert int16 to uint"; break;
+ case EOpConvInt16ToFloat: out.debug << "Convert int16 to float"; break;
+ case EOpConvInt16ToDouble: out.debug << "Convert int16 to double"; break;
+ case EOpConvInt16ToFloat16: out.debug << "Convert int16 to float16"; break;
+ case EOpConvInt16ToInt64: out.debug << "Convert int16 to int64"; break;
+ case EOpConvInt16ToUint64: out.debug << "Convert int16 to uint64"; break;
+
+ case EOpConvBoolToUint16: out.debug << "Convert bool to uint16"; break;
+ case EOpConvIntToUint16: out.debug << "Convert int to uint16"; break;
+ case EOpConvUintToUint16: out.debug << "Convert uint to uint16"; break;
+ case EOpConvFloatToUint16: out.debug << "Convert float to uint16"; break;
+ case EOpConvDoubleToUint16: out.debug << "Convert double to uint16"; break;
+ case EOpConvFloat16ToUint16: out.debug << "Convert float16 to uint16"; break;
+ case EOpConvInt64ToUint16: out.debug << "Convert int64 to uint16"; break;
+ case EOpConvUint64ToUint16: out.debug << "Convert uint64 to uint16"; break;
+ case EOpConvInt16ToUint16: out.debug << "Convert int16 to uint16"; break;
+ case EOpConvUint16ToBool: out.debug << "Convert uint16 to bool"; break;
+ case EOpConvUint16ToInt: out.debug << "Convert uint16 to int"; break;
+ case EOpConvUint16ToUint: out.debug << "Convert uint16 to uint"; break;
+ case EOpConvUint16ToFloat: out.debug << "Convert uint16 to float"; break;
+ case EOpConvUint16ToDouble: out.debug << "Convert uint16 to double"; break;
+ case EOpConvUint16ToFloat16: out.debug << "Convert uint16 to float16"; break;
+ case EOpConvUint16ToInt64: out.debug << "Convert uint16 to int64"; break;
+ case EOpConvUint16ToUint64: out.debug << "Convert uint16 to uint64"; break;
#endif
+ case EOpSubpassLoad: out.debug << "subpassLoad"; break;
+ case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break;
+
default: out.debug.message(EPrefixError, "Bad unary op");
}
@@ -444,9 +526,13 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpConstructFloat: out.debug << "Construct float"; break;
case EOpConstructDouble:out.debug << "Construct double"; break;
+
case EOpConstructVec2: out.debug << "Construct vec2"; break;
case EOpConstructVec3: out.debug << "Construct vec3"; break;
case EOpConstructVec4: out.debug << "Construct vec4"; break;
+ case EOpConstructDVec2: out.debug << "Construct dvec2"; break;
+ case EOpConstructDVec3: out.debug << "Construct dvec3"; break;
+ case EOpConstructDVec4: out.debug << "Construct dvec4"; break;
case EOpConstructBool: out.debug << "Construct bool"; break;
case EOpConstructBVec2: out.debug << "Construct bvec2"; break;
case EOpConstructBVec3: out.debug << "Construct bvec3"; break;
@@ -467,6 +553,16 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpConstructU64Vec2: out.debug << "Construct u64vec2"; break;
case EOpConstructU64Vec3: out.debug << "Construct u64vec3"; break;
case EOpConstructU64Vec4: out.debug << "Construct u64vec4"; break;
+#ifdef AMD_EXTENSIONS
+ case EOpConstructInt16: out.debug << "Construct int16_t"; break;
+ case EOpConstructI16Vec2: out.debug << "Construct i16vec2"; break;
+ case EOpConstructI16Vec3: out.debug << "Construct i16vec3"; break;
+ case EOpConstructI16Vec4: out.debug << "Construct i16vec4"; break;
+ case EOpConstructUint16: out.debug << "Construct uint16_t"; break;
+ case EOpConstructU16Vec2: out.debug << "Construct u16vec2"; break;
+ case EOpConstructU16Vec3: out.debug << "Construct u16vec3"; break;
+ case EOpConstructU16Vec4: out.debug << "Construct u16vec4"; break;
+#endif
case EOpConstructMat2x2: out.debug << "Construct mat2"; break;
case EOpConstructMat2x3: out.debug << "Construct mat2x3"; break;
case EOpConstructMat2x4: out.debug << "Construct mat2x4"; break;
@@ -485,6 +581,33 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpConstructDMat4x2: out.debug << "Construct dmat4x2"; break;
case EOpConstructDMat4x3: out.debug << "Construct dmat4x3"; break;
case EOpConstructDMat4x4: out.debug << "Construct dmat4"; break;
+ case EOpConstructIMat2x2: out.debug << "Construct imat2"; break;
+ case EOpConstructIMat2x3: out.debug << "Construct imat2x3"; break;
+ case EOpConstructIMat2x4: out.debug << "Construct imat2x4"; break;
+ case EOpConstructIMat3x2: out.debug << "Construct imat3x2"; break;
+ case EOpConstructIMat3x3: out.debug << "Construct imat3"; break;
+ case EOpConstructIMat3x4: out.debug << "Construct imat3x4"; break;
+ case EOpConstructIMat4x2: out.debug << "Construct imat4x2"; break;
+ case EOpConstructIMat4x3: out.debug << "Construct imat4x3"; break;
+ case EOpConstructIMat4x4: out.debug << "Construct imat4"; break;
+ case EOpConstructUMat2x2: out.debug << "Construct umat2"; break;
+ case EOpConstructUMat2x3: out.debug << "Construct umat2x3"; break;
+ case EOpConstructUMat2x4: out.debug << "Construct umat2x4"; break;
+ case EOpConstructUMat3x2: out.debug << "Construct umat3x2"; break;
+ case EOpConstructUMat3x3: out.debug << "Construct umat3"; break;
+ case EOpConstructUMat3x4: out.debug << "Construct umat3x4"; break;
+ case EOpConstructUMat4x2: out.debug << "Construct umat4x2"; break;
+ case EOpConstructUMat4x3: out.debug << "Construct umat4x3"; break;
+ case EOpConstructUMat4x4: out.debug << "Construct umat4"; break;
+ case EOpConstructBMat2x2: out.debug << "Construct bmat2"; break;
+ case EOpConstructBMat2x3: out.debug << "Construct bmat2x3"; break;
+ case EOpConstructBMat2x4: out.debug << "Construct bmat2x4"; break;
+ case EOpConstructBMat3x2: out.debug << "Construct bmat3x2"; break;
+ case EOpConstructBMat3x3: out.debug << "Construct bmat3"; break;
+ case EOpConstructBMat3x4: out.debug << "Construct bmat3x4"; break;
+ case EOpConstructBMat4x2: out.debug << "Construct bmat4x2"; break;
+ case EOpConstructBMat4x3: out.debug << "Construct bmat4x3"; break;
+ case EOpConstructBMat4x4: out.debug << "Construct bmat4"; break;
#ifdef AMD_EXTENSIONS
case EOpConstructFloat16: out.debug << "Construct float16_t"; break;
case EOpConstructF16Vec2: out.debug << "Construct f16vec2"; break;
@@ -566,6 +689,16 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpAtomicExchange: out.debug << "AtomicExchange"; break;
case EOpAtomicCompSwap: out.debug << "AtomicCompSwap"; break;
+ case EOpAtomicCounterAdd: out.debug << "AtomicCounterAdd"; break;
+ case EOpAtomicCounterSubtract: out.debug << "AtomicCounterSubtract"; break;
+ case EOpAtomicCounterMin: out.debug << "AtomicCounterMin"; break;
+ case EOpAtomicCounterMax: out.debug << "AtomicCounterMax"; break;
+ case EOpAtomicCounterAnd: out.debug << "AtomicCounterAnd"; break;
+ case EOpAtomicCounterOr: out.debug << "AtomicCounterOr"; break;
+ case EOpAtomicCounterXor: out.debug << "AtomicCounterXor"; break;
+ case EOpAtomicCounterExchange: out.debug << "AtomicCounterExchange"; break;
+ case EOpAtomicCounterCompSwap: out.debug << "AtomicCounterCompSwap"; break;
+
case EOpImageQuerySize: out.debug << "imageQuerySize"; break;
case EOpImageQuerySamples: out.debug << "imageQuerySamples"; break;
case EOpImageLoad: out.debug << "imageLoad"; break;
@@ -578,6 +711,10 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpImageAtomicXor: out.debug << "imageAtomicXor"; break;
case EOpImageAtomicExchange: out.debug << "imageAtomicExchange"; break;
case EOpImageAtomicCompSwap: out.debug << "imageAtomicCompSwap"; break;
+#ifdef AMD_EXTENSIONS
+ case EOpImageLoadLod: out.debug << "imageLoadLod"; break;
+ case EOpImageStoreLod: out.debug << "imageStoreLod"; break;
+#endif
case EOpTextureQuerySize: out.debug << "textureSize"; break;
case EOpTextureQueryLod: out.debug << "textureQueryLod"; break;
@@ -600,6 +737,38 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpTextureGather: out.debug << "textureGather"; break;
case EOpTextureGatherOffset: out.debug << "textureGatherOffset"; break;
case EOpTextureGatherOffsets: out.debug << "textureGatherOffsets"; break;
+ case EOpTextureClamp: out.debug << "textureClamp"; break;
+ case EOpTextureOffsetClamp: out.debug << "textureOffsetClamp"; break;
+ case EOpTextureGradClamp: out.debug << "textureGradClamp"; break;
+ case EOpTextureGradOffsetClamp: out.debug << "textureGradOffsetClamp"; break;
+#ifdef AMD_EXTENSIONS
+ case EOpTextureGatherLod: out.debug << "textureGatherLod"; break;
+ case EOpTextureGatherLodOffset: out.debug << "textureGatherLodOffset"; break;
+ case EOpTextureGatherLodOffsets: out.debug << "textureGatherLodOffsets"; break;
+#endif
+
+ case EOpSparseTexture: out.debug << "sparseTexture"; break;
+ case EOpSparseTextureOffset: out.debug << "sparseTextureOffset"; break;
+ case EOpSparseTextureLod: out.debug << "sparseTextureLod"; break;
+ case EOpSparseTextureLodOffset: out.debug << "sparseTextureLodOffset"; break;
+ case EOpSparseTextureFetch: out.debug << "sparseTexelFetch"; break;
+ case EOpSparseTextureFetchOffset: out.debug << "sparseTexelFetchOffset"; break;
+ case EOpSparseTextureGrad: out.debug << "sparseTextureGrad"; break;
+ case EOpSparseTextureGradOffset: out.debug << "sparseTextureGradOffset"; break;
+ case EOpSparseTextureGather: out.debug << "sparseTextureGather"; break;
+ case EOpSparseTextureGatherOffset: out.debug << "sparseTextureGatherOffset"; break;
+ case EOpSparseTextureGatherOffsets: out.debug << "sparseTextureGatherOffsets"; break;
+ case EOpSparseImageLoad: out.debug << "sparseImageLoad"; break;
+ case EOpSparseTextureClamp: out.debug << "sparseTextureClamp"; break;
+ case EOpSparseTextureOffsetClamp: out.debug << "sparseTextureOffsetClamp"; break;
+ case EOpSparseTextureGradClamp: out.debug << "sparseTextureGradClamp"; break;
+ case EOpSparseTextureGradOffsetClamp: out.debug << "sparseTextureGradOffsetClam"; break;
+#ifdef AMD_EXTENSIONS
+ case EOpSparseTextureGatherLod: out.debug << "sparseTextureGatherLod"; break;
+ case EOpSparseTextureGatherLodOffset: out.debug << "sparseTextureGatherLodOffset"; break;
+ case EOpSparseTextureGatherLodOffsets: out.debug << "sparseTextureGatherLodOffsets"; break;
+ case EOpSparseImageLoadLod: out.debug << "sparseImageLoadLod"; break;
+#endif
case EOpAddCarry: out.debug << "addCarry"; break;
case EOpSubBorrow: out.debug << "subBorrow"; break;
@@ -626,6 +795,9 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpWorkgroupMemoryBarrier: out.debug << "WorkgroupMemoryBarrier"; break;
case EOpWorkgroupMemoryBarrierWithGroupSync: out.debug << "WorkgroupMemoryBarrierWithGroupSync"; break;
+ case EOpSubpassLoad: out.debug << "subpassLoad"; break;
+ case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break;
+
default: out.debug.message(EPrefixError, "Bad aggregation op");
}
@@ -694,11 +866,14 @@ static void OutputConstantUnion(TInfoSink& out, const TIntermTyped* node, const
#endif
{
const double value = constUnion[i].getDConst();
- // Print infinity in a portable way, for test stability.
- // Other cases may be needed in the future: negative infinity,
- // and NaNs.
- if (is_positive_infinity(value))
- out.debug << "inf\n";
+ // Print infinities and NaNs in a portable way.
+ if (IsInfinity(value)) {
+ if (value < 0)
+ out.debug << "-1.#INF\n";
+ else
+ out.debug << "+1.#INF\n";
+ } else if (IsNan(value))
+ out.debug << "1.#IND\n";
else {
const int maxSize = 300;
char buf[maxSize];
@@ -744,6 +919,26 @@ static void OutputConstantUnion(TInfoSink& out, const TIntermTyped* node, const
out.debug << buf << "\n";
}
break;
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ {
+ const int maxSize = 300;
+ char buf[maxSize];
+ snprintf(buf, maxSize, "%d (%s)", constUnion[i].getIConst(), "const int16_t");
+
+ out.debug << buf << "\n";
+ }
+ break;
+ case EbtUint16:
+ {
+ const int maxSize = 300;
+ char buf[maxSize];
+ snprintf(buf, maxSize, "%u (%s)", constUnion[i].getUConst(), "const uint16_t");
+
+ out.debug << buf << "\n";
+ }
+ break;
+#endif
default:
out.info.message(EPrefixInternalError, "Unknown constant", node->getLoc());
break;
@@ -884,6 +1079,13 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree)
case EShLangTessControl:
infoSink.debug << "vertices = " << vertices << "\n";
+
+ if (inputPrimitive != ElgNone)
+ infoSink.debug << "input primitive = " << TQualifier::getGeometryString(inputPrimitive) << "\n";
+ if (vertexSpacing != EvsNone)
+ infoSink.debug << "vertex spacing = " << TQualifier::getVertexSpacingString(vertexSpacing) << "\n";
+ if (vertexOrder != EvoNone)
+ infoSink.debug << "triangle order = " << TQualifier::getVertexOrderString(vertexOrder) << "\n";
break;
case EShLangTessEvaluation:
@@ -908,6 +1110,8 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree)
infoSink.debug << "gl_FragCoord origin is upper left\n";
if (earlyFragmentTests)
infoSink.debug << "using early_fragment_tests\n";
+ if (postDepthCoverage)
+ infoSink.debug << "using post_depth_coverage\n";
if (depthLayout != EldNone)
infoSink.debug << "using " << TQualifier::getLayoutDepthString(depthLayout) << "\n";
if (blendEquations != 0) {
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp
index bebf775d918..a7d9d91d19c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp
@@ -1,5 +1,5 @@
//
-// Copyright (C) 2016 LunarG, Inc.
+// Copyright (C) 2016-2017 LunarG, Inc.
//
// All rights reserved.
//
@@ -201,11 +201,45 @@ public:
const TVarLiveMap& uniformList;
};
+struct TNotifyUniformAdaptor
+{
+ EShLanguage stage;
+ TIoMapResolver& resolver;
+ inline TNotifyUniformAdaptor(EShLanguage s, TIoMapResolver& r)
+ : stage(s)
+ , resolver(r)
+ {
+ }
+ inline void operator()(TVarEntryInfo& ent)
+ {
+ resolver.notifyBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live);
+ }
+private:
+ TNotifyUniformAdaptor& operator=(TNotifyUniformAdaptor&);
+};
+
+struct TNotifyInOutAdaptor
+{
+ EShLanguage stage;
+ TIoMapResolver& resolver;
+ inline TNotifyInOutAdaptor(EShLanguage s, TIoMapResolver& r)
+ : stage(s)
+ , resolver(r)
+ {
+ }
+ inline void operator()(TVarEntryInfo& ent)
+ {
+ resolver.notifyInOut(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live);
+ }
+private:
+ TNotifyInOutAdaptor& operator=(TNotifyInOutAdaptor&);
+};
+
struct TResolverUniformAdaptor
{
TResolverUniformAdaptor(EShLanguage s, TIoMapResolver& r, TInfoSink& i, bool& e, TIntermediate& interm)
- : resolver(r)
- , stage(s)
+ : stage(s)
+ , resolver(r)
, infoSink(i)
, error(e)
, intermediate(interm)
@@ -219,10 +253,14 @@ struct TResolverUniformAdaptor
ent.newBinding = -1;
ent.newSet = -1;
ent.newIndex = -1;
- const bool isValid = resolver.validateBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live);
+ const bool isValid = resolver.validateBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(),
+ ent.live);
if (isValid) {
- ent.newBinding = resolver.resolveBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live);
+ ent.newBinding = resolver.resolveBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(),
+ ent.live);
ent.newSet = resolver.resolveSet(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live);
+ ent.newLocation = resolver.resolveUniformLocation(stage, ent.symbol->getName().c_str(),
+ ent.symbol->getType(), ent.live);
if (ent.newBinding != -1) {
if (ent.newBinding >= int(TQualifier::layoutBindingEnd)) {
@@ -260,8 +298,8 @@ private:
struct TResolverInOutAdaptor
{
TResolverInOutAdaptor(EShLanguage s, TIoMapResolver& r, TInfoSink& i, bool& e, TIntermediate& interm)
- : resolver(r)
- , stage(s)
+ : stage(s)
+ , resolver(r)
, infoSink(i)
, error(e)
, intermediate(interm)
@@ -310,21 +348,24 @@ private:
TResolverInOutAdaptor& operator=(TResolverInOutAdaptor&);
};
-/*
- * Basic implementation of glslang::TIoMapResolver that replaces the
- * previous offset behavior.
- * It does the same, uses the offsets for the corresponding uniform
- * types. Also respects the EOptionAutoMapBindings flag and binds
- * them if needed.
- */
-struct TDefaultIoResolver : public glslang::TIoMapResolver
+// Base class for shared TIoMapResolver services, used by several derivations.
+struct TDefaultIoResolverBase : public glslang::TIoMapResolver
{
- int baseSamplerBinding;
- int baseTextureBinding;
- int baseImageBinding;
- int baseUboBinding;
- int baseSsboBinding;
- bool doAutoMapping;
+ TDefaultIoResolverBase(const TIntermediate &intermediate) :
+ intermediate(intermediate),
+ nextUniformLocation(0)
+ { }
+
+ int getBaseBinding(TResourceType res, unsigned int set) const {
+ return selectBaseBinding(intermediate.getShiftBinding(res),
+ intermediate.getShiftBindingForSet(res, set));
+ }
+
+ const std::vector<std::string>& getResourceSetBinding() const { return intermediate.getResourceSetBinding(); }
+
+ bool doAutoBindingMapping() const { return intermediate.getAutoMapBindings(); }
+ bool doAutoLocationMapping() const { return intermediate.getAutoMapLocations(); }
+
typedef std::vector<int> TSlotSet;
typedef std::unordered_map<int, TSlotSet> TSlotSetMap;
TSlotSetMap slots;
@@ -343,7 +384,12 @@ struct TDefaultIoResolver : public glslang::TIoMapResolver
int reserveSlot(int set, int slot)
{
TSlotSet::iterator at = findSlot(set, slot);
- slots[set].insert(at, slot);
+
+ // tolerate aliasing, by not double-recording aliases
+ // (policy about appropriateness of the alias is higher up)
+ if (at == slots[set].end() || *at != slot)
+ slots[set].insert(at, slot);
+
return slot;
}
@@ -360,123 +406,312 @@ struct TDefaultIoResolver : public glslang::TIoMapResolver
return reserveSlot(set, base);
}
- bool validateBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override
- {
- if (type.getQualifier().hasBinding()) {
- int set;
- if (type.getQualifier().hasSet())
- set = type.getQualifier().layoutSet;
- else
- set = 0;
+ virtual bool validateBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override = 0;
- if (type.getBasicType() == glslang::EbtSampler) {
- const glslang::TSampler& sampler = type.getSampler();
- if (sampler.isPureSampler())
- return checkEmpty(set, baseSamplerBinding + type.getQualifier().layoutBinding);
+ virtual int resolveBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool is_live) override = 0;
- if (sampler.isTexture())
- return checkEmpty(set, baseTextureBinding + type.getQualifier().layoutBinding);
- }
+ int resolveSet(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override
+ {
+ if (type.getQualifier().hasSet())
+ return type.getQualifier().layoutSet;
- if (type.getQualifier().storage == EvqUniform)
- return checkEmpty(set, baseUboBinding + type.getQualifier().layoutBinding);
+ // If a command line or API option requested a single descriptor set, use that (if not overrided by spaceN)
+ if (getResourceSetBinding().size() == 1)
+ return atoi(getResourceSetBinding()[0].c_str());
- if (type.getQualifier().storage == EvqBuffer)
- return checkEmpty(set, baseSsboBinding + type.getQualifier().layoutBinding);
+ return 0;
+ }
+ int resolveUniformLocation(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override
+ {
+ // kick out of not doing this
+ if (!doAutoLocationMapping())
+ return -1;
+
+ // no locations added if already present, a built-in variable, a block, or an opaque
+ if (type.getQualifier().hasLocation() || type.isBuiltIn() ||
+ type.getBasicType() == EbtBlock || type.containsOpaque())
+ return -1;
+
+ // no locations on blocks of built-in variables
+ if (type.isStruct()) {
+ if (type.getStruct()->size() < 1)
+ return -1;
+ if ((*type.getStruct())[0].type->isBuiltIn())
+ return -1;
}
+
+ return nextUniformLocation++;
+ }
+ bool validateInOut(EShLanguage /*stage*/, const char* /*name*/, const TType& /*type*/, bool /*is_live*/) override
+ {
return true;
}
+ int resolveInOutLocation(EShLanguage /*stage*/, const char* /*name*/, const TType& type, bool /*is_live*/) override
+ {
+ // kick out of not doing this
+ if (!doAutoLocationMapping())
+ return -1;
+
+ // no locations added if already present, or a built-in variable
+ if (type.getQualifier().hasLocation() || type.isBuiltIn())
+ return -1;
+
+ // no locations on blocks of built-in variables
+ if (type.isStruct()) {
+ if (type.getStruct()->size() < 1)
+ return -1;
+ if ((*type.getStruct())[0].type->isBuiltIn())
+ return -1;
+ }
- int resolveBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool is_live) override
+ // Placeholder.
+ // TODO: It would be nice to flesh this out using
+ // intermediate->computeTypeLocationSize(type), or functions that call it like
+ // intermediate->addUsedLocation()
+ // These in turn would want the intermediate, which is not available here, but
+ // is available in many places, and a lot of copying from it could be saved if
+ // it were just available.
+ return 0;
+ }
+ int resolveInOutComponent(EShLanguage /*stage*/, const char* /*name*/, const TType& /*type*/, bool /*is_live*/) override
+ {
+ return -1;
+ }
+ int resolveInOutIndex(EShLanguage /*stage*/, const char* /*name*/, const TType& /*type*/, bool /*is_live*/) override
{
- int set;
+ return -1;
+ }
+
+ void notifyBinding(EShLanguage, const char* /*name*/, const TType&, bool /*is_live*/) override {}
+ void notifyInOut(EShLanguage, const char* /*name*/, const TType&, bool /*is_live*/) override {}
+ void endNotifications(EShLanguage) override {}
+ void beginNotifications(EShLanguage) override {}
+ void beginResolve(EShLanguage) override {}
+ void endResolve(EShLanguage) override {}
+
+protected:
+ const TIntermediate &intermediate;
+ int nextUniformLocation;
+
+ // Return descriptor set specific base if there is one, and the generic base otherwise.
+ int selectBaseBinding(int base, int descriptorSetBase) const {
+ return descriptorSetBase != -1 ? descriptorSetBase : base;
+ }
+
+ static int getLayoutSet(const glslang::TType& type) {
if (type.getQualifier().hasSet())
- set = type.getQualifier().layoutSet;
+ return type.getQualifier().layoutSet;
else
- set = 0;
+ return 0;
+ }
+
+ static bool isSamplerType(const glslang::TType& type) {
+ return type.getBasicType() == glslang::EbtSampler && type.getSampler().isPureSampler();
+ }
+
+ static bool isTextureType(const glslang::TType& type) {
+ return (type.getBasicType() == glslang::EbtSampler &&
+ (type.getSampler().isTexture() || type.getSampler().isSubpass()));
+ }
+
+ static bool isUboType(const glslang::TType& type) {
+ return type.getQualifier().storage == EvqUniform;
+ }
+};
+
+/*
+ * Basic implementation of glslang::TIoMapResolver that replaces the
+ * previous offset behavior.
+ * It does the same, uses the offsets for the corresponding uniform
+ * types. Also respects the EOptionAutoMapBindings flag and binds
+ * them if needed.
+ */
+/*
+ * Default resolver
+ */
+struct TDefaultIoResolver : public TDefaultIoResolverBase
+{
+ TDefaultIoResolver(const TIntermediate &intermediate) : TDefaultIoResolverBase(intermediate) { }
+
+ bool validateBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& /*type*/, bool /*is_live*/) override
+ {
+ return true;
+ }
+
+ int resolveBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool is_live) override
+ {
+ const int set = getLayoutSet(type);
if (type.getQualifier().hasBinding()) {
- if (type.getBasicType() == glslang::EbtSampler) {
- const glslang::TSampler& sampler = type.getSampler();
- if (sampler.isImage())
- return reserveSlot(set, baseImageBinding + type.getQualifier().layoutBinding);
+ if (isImageType(type))
+ return reserveSlot(set, getBaseBinding(EResImage, set) + type.getQualifier().layoutBinding);
- if (sampler.isPureSampler())
- return reserveSlot(set, baseSamplerBinding + type.getQualifier().layoutBinding);
+ if (isTextureType(type))
+ return reserveSlot(set, getBaseBinding(EResTexture, set) + type.getQualifier().layoutBinding);
- if (sampler.isTexture())
- return reserveSlot(set, baseTextureBinding + type.getQualifier().layoutBinding);
- }
+ if (isSsboType(type))
+ return reserveSlot(set, getBaseBinding(EResSsbo, set) + type.getQualifier().layoutBinding);
- if (type.getQualifier().storage == EvqUniform)
- return reserveSlot(set, baseUboBinding + type.getQualifier().layoutBinding);
+ if (isSamplerType(type))
+ return reserveSlot(set, getBaseBinding(EResSampler, set) + type.getQualifier().layoutBinding);
- if (type.getQualifier().storage == EvqBuffer)
- return reserveSlot(set, baseSsboBinding + type.getQualifier().layoutBinding);
- } else if (is_live && doAutoMapping) {
+ if (isUboType(type))
+ return reserveSlot(set, getBaseBinding(EResUbo, set) + type.getQualifier().layoutBinding);
+ } else if (is_live && doAutoBindingMapping()) {
// find free slot, the caller did make sure it passes all vars with binding
// first and now all are passed that do not have a binding and needs one
- if (type.getBasicType() == glslang::EbtSampler) {
- const glslang::TSampler& sampler = type.getSampler();
- if (sampler.isImage())
- return getFreeSlot(set, baseImageBinding);
- if (sampler.isPureSampler())
- return getFreeSlot(set, baseSamplerBinding);
+ if (isImageType(type))
+ return getFreeSlot(set, getBaseBinding(EResImage, set));
- if (sampler.isTexture())
- return getFreeSlot(set, baseTextureBinding);
- }
+ if (isTextureType(type))
+ return getFreeSlot(set, getBaseBinding(EResTexture, set));
+
+ if (isSsboType(type))
+ return getFreeSlot(set, getBaseBinding(EResSsbo, set));
- if (type.getQualifier().storage == EvqUniform)
- return getFreeSlot(set, baseUboBinding);
+ if (isSamplerType(type))
+ return getFreeSlot(set, getBaseBinding(EResSampler, set));
- if (type.getQualifier().storage == EvqBuffer)
- return getFreeSlot(set, baseSsboBinding);
+ if (isUboType(type))
+ return getFreeSlot(set, getBaseBinding(EResUbo, set));
}
return -1;
}
- int resolveSet(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override
- {
- if (type.getQualifier().hasSet())
- return type.getQualifier().layoutSet;
- return 0;
+protected:
+ static bool isImageType(const glslang::TType& type) {
+ return type.getBasicType() == glslang::EbtSampler && type.getSampler().isImage();
}
- bool validateInOut(EShLanguage stage, const char* name, const TType& type, bool is_live) override
+ static bool isSsboType(const glslang::TType& type) {
+ return type.getQualifier().storage == EvqBuffer;
+ }
+};
+
+/********************************************************************************
+The following IO resolver maps types in HLSL register space, as follows:
+
+t – for shader resource views (SRV)
+ TEXTURE1D
+ TEXTURE1DARRAY
+ TEXTURE2D
+ TEXTURE2DARRAY
+ TEXTURE3D
+ TEXTURECUBE
+ TEXTURECUBEARRAY
+ TEXTURE2DMS
+ TEXTURE2DMSARRAY
+ STRUCTUREDBUFFER
+ BYTEADDRESSBUFFER
+ BUFFER
+ TBUFFER
+
+s – for samplers
+ SAMPLER
+ SAMPLER1D
+ SAMPLER2D
+ SAMPLER3D
+ SAMPLERCUBE
+ SAMPLERSTATE
+ SAMPLERCOMPARISONSTATE
+
+u – for unordered access views (UAV)
+ RWBYTEADDRESSBUFFER
+ RWSTRUCTUREDBUFFER
+ APPENDSTRUCTUREDBUFFER
+ CONSUMESTRUCTUREDBUFFER
+ RWBUFFER
+ RWTEXTURE1D
+ RWTEXTURE1DARRAY
+ RWTEXTURE2D
+ RWTEXTURE2DARRAY
+ RWTEXTURE3D
+
+b – for constant buffer views (CBV)
+ CBUFFER
+ CONSTANTBUFFER
+ ********************************************************************************/
+struct TDefaultHlslIoResolver : public TDefaultIoResolverBase
+{
+ TDefaultHlslIoResolver(const TIntermediate &intermediate) : TDefaultIoResolverBase(intermediate) { }
+
+ bool validateBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& /*type*/, bool /*is_live*/) override
{
return true;
}
- int resolveInOutLocation(EShLanguage stage, const char* name, const TType& type, bool is_live) override
+
+ int resolveBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool is_live) override
{
+ const int set = getLayoutSet(type);
+
+ if (type.getQualifier().hasBinding()) {
+ if (isUavType(type))
+ return reserveSlot(set, getBaseBinding(EResUav, set) + type.getQualifier().layoutBinding);
+
+ if (isSrvType(type))
+ return reserveSlot(set, getBaseBinding(EResTexture, set) + type.getQualifier().layoutBinding);
+
+ if (isSamplerType(type))
+ return reserveSlot(set, getBaseBinding(EResSampler, set) + type.getQualifier().layoutBinding);
+
+ if (isUboType(type))
+ return reserveSlot(set, getBaseBinding(EResUbo, set) + type.getQualifier().layoutBinding);
+ } else if (is_live && doAutoBindingMapping()) {
+ // find free slot, the caller did make sure it passes all vars with binding
+ // first and now all are passed that do not have a binding and needs one
+
+ if (isUavType(type))
+ return getFreeSlot(set, getBaseBinding(EResUav, set));
+
+ if (isSrvType(type))
+ return getFreeSlot(set, getBaseBinding(EResTexture, set));
+
+ if (isSamplerType(type))
+ return getFreeSlot(set, getBaseBinding(EResSampler, set));
+
+ if (isUboType(type))
+ return getFreeSlot(set, getBaseBinding(EResUbo, set));
+ }
+
return -1;
}
- int resolveInOutComponent(EShLanguage stage, const char* name, const TType& type, bool is_live) override
- {
- return -1;
+
+protected:
+ // Return true if this is a SRV (shader resource view) type:
+ static bool isSrvType(const glslang::TType& type) {
+ return isTextureType(type) || type.getQualifier().storage == EvqBuffer;
}
- int resolveInOutIndex(EShLanguage stage, const char* name, const TType& type, bool is_live) override
- {
- return -1;
+
+ // Return true if this is a UAV (unordered access view) type:
+ static bool isUavType(const glslang::TType& type) {
+ if (type.getQualifier().readonly)
+ return false;
+
+ return (type.getBasicType() == glslang::EbtSampler && type.getSampler().isImage()) ||
+ (type.getQualifier().storage == EvqBuffer);
}
};
+
// Map I/O variables to provided offsets, and make bindings for
// unbound but live variables.
//
// Returns false if the input is too malformed to do this.
bool TIoMapper::addStage(EShLanguage stage, TIntermediate &intermediate, TInfoSink &infoSink, TIoMapResolver *resolver)
{
- // Trivial return if there is nothing to do.
- if (intermediate.getShiftSamplerBinding() == 0 &&
- intermediate.getShiftTextureBinding() == 0 &&
- intermediate.getShiftImageBinding() == 0 &&
- intermediate.getShiftUboBinding() == 0 &&
- intermediate.getShiftSsboBinding() == 0 &&
- intermediate.getAutoMapBindings() == false &&
- resolver == nullptr)
+ bool somethingToDo = !intermediate.getResourceSetBinding().empty() ||
+ intermediate.getAutoMapBindings() ||
+ intermediate.getAutoMapLocations();
+
+ for (int res = 0; res < EResCount; ++res) {
+ somethingToDo = somethingToDo ||
+ (intermediate.getShiftBinding(TResourceType(res)) != 0) ||
+ intermediate.hasShiftBindingForSet(TResourceType(res));
+ }
+
+ if (!somethingToDo && resolver == nullptr)
return true;
if (intermediate.getNumEntryPoints() != 1 || intermediate.isRecursive())
@@ -487,16 +722,15 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate &intermediate, TInfoSi
return false;
// if no resolver is provided, use the default resolver with the given shifts and auto map settings
- TDefaultIoResolver defaultResolver;
- if (resolver == nullptr) {
- defaultResolver.baseSamplerBinding = intermediate.getShiftSamplerBinding();
- defaultResolver.baseTextureBinding = intermediate.getShiftTextureBinding();
- defaultResolver.baseImageBinding = intermediate.getShiftImageBinding();
- defaultResolver.baseUboBinding = intermediate.getShiftUboBinding();
- defaultResolver.baseSsboBinding = intermediate.getShiftSsboBinding();
- defaultResolver.doAutoMapping = intermediate.getAutoMapBindings();
+ TDefaultIoResolver defaultResolver(intermediate);
+ TDefaultHlslIoResolver defaultHlslResolver(intermediate);
- resolver = &defaultResolver;
+ if (resolver == nullptr) {
+ // TODO: use a passed in IO mapper for this
+ if (intermediate.usingHlslIoMapping())
+ resolver = &defaultHlslResolver;
+ else
+ resolver = &defaultResolver;
}
TVarLiveMap inVarMap, outVarMap, uniformVarMap;
@@ -516,11 +750,20 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate &intermediate, TInfoSi
std::sort(uniformVarMap.begin(), uniformVarMap.end(), TVarEntryInfo::TOrderByPriority());
bool hadError = false;
+ TNotifyInOutAdaptor inOutNotify(stage, *resolver);
+ TNotifyUniformAdaptor uniformNotify(stage, *resolver);
TResolverUniformAdaptor uniformResolve(stage, *resolver, infoSink, hadError, intermediate);
TResolverInOutAdaptor inOutResolve(stage, *resolver, infoSink, hadError, intermediate);
+ resolver->beginNotifications(stage);
+ std::for_each(inVarMap.begin(), inVarMap.end(), inOutNotify);
+ std::for_each(outVarMap.begin(), outVarMap.end(), inOutNotify);
+ std::for_each(uniformVarMap.begin(), uniformVarMap.end(), uniformNotify);
+ resolver->endNotifications(stage);
+ resolver->beginResolve(stage);
std::for_each(inVarMap.begin(), inVarMap.end(), inOutResolve);
std::for_each(outVarMap.begin(), outVarMap.end(), inOutResolve);
std::for_each(uniformVarMap.begin(), uniformVarMap.end(), uniformResolve);
+ resolver->endResolve(stage);
if (!hadError) {
// sort by id again, so we can use lower bound to find entries
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp
index 761cb4164b3..9ca1557b50e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp
@@ -101,6 +101,9 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit)
if (! earlyFragmentTests)
earlyFragmentTests = unit.earlyFragmentTests;
+ if (!postDepthCoverage)
+ postDepthCoverage = unit.postDepthCoverage;
+
if (depthLayout == EldNone)
depthLayout = unit.depthLayout;
else if (depthLayout != unit.depthLayout)
@@ -459,12 +462,14 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled)
error(infoSink, "At least one shader must specify an output layout(vertices=...)");
break;
case EShLangTessEvaluation:
- if (inputPrimitive == ElgNone)
- error(infoSink, "At least one shader must specify an input layout primitive");
- if (vertexSpacing == EvsNone)
- vertexSpacing = EvsEqual;
- if (vertexOrder == EvoNone)
- vertexOrder = EvoCcw;
+ if (source == EShSourceGlsl) {
+ if (inputPrimitive == ElgNone)
+ error(infoSink, "At least one shader must specify an input layout primitive");
+ if (vertexSpacing == EvsNone)
+ vertexSpacing = EvsEqual;
+ if (vertexOrder == EvoNone)
+ vertexOrder = EvoCcw;
+ }
break;
case EShLangGeometry:
if (inputPrimitive == ElgNone)
@@ -483,6 +488,11 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled)
error(infoSink, "At least one shader must specify a layout(max_vertices = value)");
break;
case EShLangFragment:
+ // for GL_ARB_post_depth_coverage, EarlyFragmentTest is set automatically in
+ // ParseHelper.cpp. So if we reach here, this must be GL_EXT_post_depth_coverage
+ // requiring explicit early_fragment_tests
+ if (getPostDepthCoverage() && !getEarlyFragmentTests())
+ error(infoSink, "post_depth_coverage requires early_fragment_tests");
break;
case EShLangCompute:
break;
@@ -858,7 +868,7 @@ int TIntermediate::checkLocationRange(int set, const TIoRange& range, const TTyp
return -1; // no collision
}
-// Accumulate locations used for inputs, outputs, and uniforms, and check for collisions
+// Accumulate bindings and offsets, and check for collisions
// as the accumulation is done.
//
// Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value.
@@ -1045,9 +1055,9 @@ unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains
const int baseAlignmentVec4Std140 = 16;
-// Return the size and alignment of a scalar.
+// Return the size and alignment of a component of the given type.
// The size is returned in the 'size' parameter
-// Return value is the alignment of the type.
+// Return value is the alignment..
int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size)
{
switch (type.getBasicType()) {
@@ -1055,6 +1065,8 @@ int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size)
case EbtUint64:
case EbtDouble: size = 8; return 8;
#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ case EbtUint16:
case EbtFloat16: size = 2; return 2;
#endif
default: size = 4; return 4;
@@ -1217,4 +1229,14 @@ int TIntermediate::getBaseAlignment(const TType& type, int& size, int& stride, b
return baseAlignmentVec4Std140;
}
+// To aid the basic HLSL rule about crossing vec4 boundaries.
+bool TIntermediate::improperStraddle(const TType& type, int size, int offset)
+{
+ if (! type.isVector() || type.isArray())
+ return false;
+
+ return size <= 16 ? offset / 16 != (offset + size - 1) / 16
+ : offset % 16 != 0;
+}
+
} // end namespace glslang
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h
index 5460dd5f9dc..062eb1b0895 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h
@@ -42,6 +42,7 @@
#include <algorithm>
#include <set>
+#include <array>
class TInfoSink;
@@ -150,6 +151,54 @@ struct TXfbBuffer {
bool containsDouble;
};
+// Track a set of strings describing how the module was processed.
+// Using the form:
+// process arg0 arg1 arg2 ...
+// process arg0 arg1 arg2 ...
+// where everything is textual, and there can be zero or more arguments
+class TProcesses {
+public:
+ TProcesses() {}
+ ~TProcesses() {}
+
+ void addProcess(const char* process)
+ {
+ processes.push_back(process);
+ }
+ void addProcess(const std::string& process)
+ {
+ processes.push_back(process);
+ }
+ void addArgument(int arg)
+ {
+ processes.back().append(" ");
+ std::string argString = std::to_string(arg);
+ processes.back().append(argString);
+ }
+ void addArgument(const char* arg)
+ {
+ processes.back().append(" ");
+ processes.back().append(arg);
+ }
+ void addArgument(const std::string& arg)
+ {
+ processes.back().append(" ");
+ processes.back().append(arg);
+ }
+ void addIfNonZero(const char* process, int value)
+ {
+ if (value != 0) {
+ addProcess(process);
+ addArgument(value);
+ }
+ }
+
+ const std::vector<std::string>& getProcesses() const { return processes; }
+
+private:
+ std::vector<std::string> processes;
+};
+
class TSymbolTable;
class TSymbol;
class TVariable;
@@ -160,24 +209,28 @@ class TVariable;
class TIntermediate {
public:
explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) :
+ implicitThisName("@this"),
language(l), source(EShSourceNone), profile(p), version(v), treeRoot(0),
numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false),
- invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet), inputPrimitive(ElgNone), outputPrimitive(ElgNone),
+ invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet),
+ inputPrimitive(ElgNone), outputPrimitive(ElgNone),
pixelCenterInteger(false), originUpperLeft(false),
- vertexSpacing(EvsNone), vertexOrder(EvoNone), pointMode(false), earlyFragmentTests(false), depthLayout(EldNone), depthReplacing(false), blendEquations(0),
- xfbMode(false), multiStream(false),
+ vertexSpacing(EvsNone), vertexOrder(EvoNone), pointMode(false), earlyFragmentTests(false),
+ postDepthCoverage(false), depthLayout(EldNone), depthReplacing(false),
+ blendEquations(0), xfbMode(false), multiStream(false),
#ifdef NV_EXTENSIONS
layoutOverrideCoverage(false),
geoPassthroughEXT(false),
#endif
- shiftSamplerBinding(0),
- shiftTextureBinding(0),
- shiftImageBinding(0),
- shiftUboBinding(0),
- shiftSsboBinding(0),
autoMapBindings(false),
+ autoMapLocations(false),
flattenUniformArrays(false),
- useUnknownFormat(false)
+ useUnknownFormat(false),
+ hlslOffsets(false),
+ useStorageBuffer(false),
+ hlslIoMapping(false),
+ textureSamplerTransformMode(EShTexSampTransKeep),
+ needToLegalize(false)
{
localSize[0] = 1;
localSize[1] = 1;
@@ -186,6 +239,8 @@ public:
localSizeSpecId[1] = TQualifier::layoutNotSet;
localSizeSpecId[2] = TQualifier::layoutNotSet;
xfbBuffers.resize(TQualifier::layoutXfbBufferEnd);
+
+ shiftBinding.fill(0);
}
void setLimits(const TBuiltInResource& r) { resources = r; }
@@ -195,33 +250,132 @@ public:
void setSource(EShSource s) { source = s; }
EShSource getSource() const { return source; }
- void setEntryPointName(const char* ep) { entryPointName = ep; }
+ void setEntryPointName(const char* ep)
+ {
+ entryPointName = ep;
+ processes.addProcess("entry-point");
+ processes.addArgument(entryPointName);
+ }
void setEntryPointMangledName(const char* ep) { entryPointMangledName = ep; }
const std::string& getEntryPointName() const { return entryPointName; }
const std::string& getEntryPointMangledName() const { return entryPointMangledName; }
- void setShiftSamplerBinding(unsigned int shift) { shiftSamplerBinding = shift; }
- unsigned int getShiftSamplerBinding() const { return shiftSamplerBinding; }
- void setShiftTextureBinding(unsigned int shift) { shiftTextureBinding = shift; }
- unsigned int getShiftTextureBinding() const { return shiftTextureBinding; }
- void setShiftImageBinding(unsigned int shift) { shiftImageBinding = shift; }
- unsigned int getShiftImageBinding() const { return shiftImageBinding; }
- void setShiftUboBinding(unsigned int shift) { shiftUboBinding = shift; }
- unsigned int getShiftUboBinding() const { return shiftUboBinding; }
- void setShiftSsboBinding(unsigned int shift) { shiftSsboBinding = shift; }
- unsigned int getShiftSsboBinding() const { return shiftSsboBinding; }
- void setAutoMapBindings(bool map) { autoMapBindings = map; }
- bool getAutoMapBindings() const { return autoMapBindings; }
- void setFlattenUniformArrays(bool flatten) { flattenUniformArrays = flatten; }
- bool getFlattenUniformArrays() const { return flattenUniformArrays; }
- void setNoStorageFormat(bool b) { useUnknownFormat = b; }
- bool getNoStorageFormat() const { return useUnknownFormat; }
+ void setShiftBinding(TResourceType res, unsigned int shift)
+ {
+ shiftBinding[res] = shift;
+
+ const char* name = getResourceName(res);
+ if (name != nullptr)
+ processes.addIfNonZero(name, shift);
+ }
+
+ unsigned int getShiftBinding(TResourceType res) const { return shiftBinding[res]; }
+
+ void setShiftBindingForSet(TResourceType res, unsigned int shift, unsigned int set)
+ {
+ if (shift == 0) // ignore if there's no shift: it's a no-op.
+ return;
+
+ shiftBindingForSet[res][set] = shift;
+
+ const char* name = getResourceName(res);
+ if (name != nullptr) {
+ processes.addProcess(name);
+ processes.addArgument(shift);
+ processes.addArgument(set);
+ }
+ }
+
+ int getShiftBindingForSet(TResourceType res, unsigned int set) const
+ {
+ const auto shift = shiftBindingForSet[res].find(set);
+ return shift == shiftBindingForSet[res].end() ? -1 : shift->second;
+ }
+ bool hasShiftBindingForSet(TResourceType res) const { return !shiftBindingForSet[res].empty(); }
+
+ void setResourceSetBinding(const std::vector<std::string>& shift)
+ {
+ resourceSetBinding = shift;
+ if (shift.size() > 0) {
+ processes.addProcess("resource-set-binding");
+ for (int s = 0; s < (int)shift.size(); ++s)
+ processes.addArgument(shift[s]);
+ }
+ }
+ const std::vector<std::string>& getResourceSetBinding() const { return resourceSetBinding; }
+ void setAutoMapBindings(bool map)
+ {
+ autoMapBindings = map;
+ if (autoMapBindings)
+ processes.addProcess("auto-map-bindings");
+ }
+ bool getAutoMapBindings() const { return autoMapBindings; }
+ void setAutoMapLocations(bool map)
+ {
+ autoMapLocations = map;
+ if (autoMapLocations)
+ processes.addProcess("auto-map-locations");
+ }
+ bool getAutoMapLocations() const { return autoMapLocations; }
+ void setFlattenUniformArrays(bool flatten)
+ {
+ flattenUniformArrays = flatten;
+ if (flattenUniformArrays)
+ processes.addProcess("flatten-uniform-arrays");
+ }
+ bool getFlattenUniformArrays() const { return flattenUniformArrays; }
+ void setNoStorageFormat(bool b)
+ {
+ useUnknownFormat = b;
+ if (useUnknownFormat)
+ processes.addProcess("no-storage-format");
+ }
+ bool getNoStorageFormat() const { return useUnknownFormat; }
+ void setHlslOffsets()
+ {
+ hlslOffsets = true;
+ if (hlslOffsets)
+ processes.addProcess("hlsl-offsets");
+ }
+ bool usingHlslOFfsets() const { return hlslOffsets; }
+ void setUseStorageBuffer()
+ {
+ useStorageBuffer = true;
+ processes.addProcess("use-storage-buffer");
+ }
+ bool usingStorageBuffer() const { return useStorageBuffer; }
+ void setHlslIoMapping(bool b)
+ {
+ hlslIoMapping = b;
+ if (hlslIoMapping)
+ processes.addProcess("hlsl-iomap");
+ }
+ bool usingHlslIoMapping() { return hlslIoMapping; }
+
+ void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { textureSamplerTransformMode = mode; }
void setVersion(int v) { version = v; }
int getVersion() const { return version; }
void setProfile(EProfile p) { profile = p; }
EProfile getProfile() const { return profile; }
- void setSpv(const SpvVersion& s) { spvVersion = s; }
+ void setSpv(const SpvVersion& s)
+ {
+ spvVersion = s;
+
+ // client processes
+ if (spvVersion.vulkan > 0)
+ processes.addProcess("client vulkan100");
+ if (spvVersion.openGl > 0)
+ processes.addProcess("client opengl100");
+
+ // target-environment processes
+ if (spvVersion.vulkan == 100)
+ processes.addProcess("target-env vulkan1.0");
+ else if (spvVersion.vulkan > 0)
+ processes.addProcess("target-env vulkanUnknown");
+ if (spvVersion.openGl > 0)
+ processes.addProcess("target-env opengl");
+ }
const SpvVersion& getSpv() const { return spvVersion; }
EShLanguage getStage() const { return language; }
void addRequestedExtension(const char* extension) { requestedExtensions.insert(extension); }
@@ -240,7 +394,9 @@ public:
TIntermSymbol* addSymbol(const TType&, const TSourceLoc&);
TIntermSymbol* addSymbol(const TIntermSymbol&);
TIntermTyped* addConversion(TOperator, const TType&, TIntermTyped*) const;
- TIntermTyped* addShapeConversion(TOperator, const TType&, TIntermTyped*);
+ TIntermTyped* addUniShapeConversion(TOperator, const TType&, TIntermTyped*);
+ void addBiShapeConversion(TOperator, TIntermTyped*& lhsNode, TIntermTyped*& rhsNode);
+ TIntermTyped* addShapeConversion(const TType&, TIntermTyped*);
TIntermTyped* addBinaryMath(TOperator, TIntermTyped* left, TIntermTyped* right, TSourceLoc);
TIntermTyped* addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc);
TIntermTyped* addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, TSourceLoc);
@@ -255,8 +411,8 @@ public:
TIntermAggregate* makeAggregate(const TSourceLoc&);
TIntermTyped* setAggregateOperator(TIntermNode*, TOperator, const TType& type, TSourceLoc);
bool areAllChildConst(TIntermAggregate* aggrNode);
- TIntermTyped* addSelection(TIntermTyped* cond, TIntermNodePair code, const TSourceLoc&);
- TIntermTyped* addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc&);
+ TIntermTyped* addSelection(TIntermTyped* cond, TIntermNodePair code, const TSourceLoc&, TSelectionControl = ESelectionControlNone);
+ TIntermTyped* addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc&, TSelectionControl = ESelectionControlNone);
TIntermTyped* addComma(TIntermTyped* left, TIntermTyped* right, const TSourceLoc&);
TIntermTyped* addMethod(TIntermTyped*, const TType&, const TString*, const TSourceLoc&);
TIntermConstantUnion* addConstantUnion(const TConstUnionArray&, const TType&, const TSourceLoc&, bool literal = false) const;
@@ -264,13 +420,18 @@ public:
TIntermConstantUnion* addConstantUnion(unsigned int, const TSourceLoc&, bool literal = false) const;
TIntermConstantUnion* addConstantUnion(long long, const TSourceLoc&, bool literal = false) const;
TIntermConstantUnion* addConstantUnion(unsigned long long, const TSourceLoc&, bool literal = false) const;
+#ifdef AMD_EXTENSIONS
+ TIntermConstantUnion* addConstantUnion(short, const TSourceLoc&, bool literal = false) const;
+ TIntermConstantUnion* addConstantUnion(unsigned short, const TSourceLoc&, bool literal = false) const;
+
+#endif
TIntermConstantUnion* addConstantUnion(bool, const TSourceLoc&, bool literal = false) const;
TIntermConstantUnion* addConstantUnion(double, TBasicType, const TSourceLoc&, bool literal = false) const;
TIntermConstantUnion* addConstantUnion(const TString*, const TSourceLoc&, bool literal = false) const;
TIntermTyped* promoteConstantUnion(TBasicType, TIntermConstantUnion*) const;
bool parseConstTree(TIntermNode*, TConstUnionArray, TOperator, const TType&, bool singleConstantParam = false);
- TIntermLoop* addLoop(TIntermNode*, TIntermTyped*, TIntermTyped*, bool testFirst, const TSourceLoc&);
- TIntermAggregate* addForLoop(TIntermNode*, TIntermNode*, TIntermTyped*, TIntermTyped*, bool testFirst, const TSourceLoc&);
+ TIntermLoop* addLoop(TIntermNode*, TIntermTyped*, TIntermTyped*, bool testFirst, const TSourceLoc&, TLoopControl = ELoopControlNone);
+ TIntermAggregate* addForLoop(TIntermNode*, TIntermNode*, TIntermTyped*, TIntermTyped*, bool testFirst, const TSourceLoc&, TLoopControl = ELoopControlNone);
TIntermBranch* addBranch(TOperator, const TSourceLoc&);
TIntermBranch* addBranch(TOperator, TIntermTyped*, const TSourceLoc&);
template<typename selectorType> TIntermTyped* addSwizzle(TSwizzleSelectors<selectorType>&, const TSourceLoc&);
@@ -377,6 +538,8 @@ public:
bool getPixelCenterInteger() const { return pixelCenterInteger; }
void setEarlyFragmentTests() { earlyFragmentTests = true; }
bool getEarlyFragmentTests() const { return earlyFragmentTests; }
+ void setPostDepthCoverage() { postDepthCoverage = true; }
+ bool getPostDepthCoverage() const { return postDepthCoverage; }
bool setDepth(TLayoutDepth d)
{
if (depthLayout != EldNone)
@@ -413,7 +576,9 @@ public:
}
int addXfbBufferOffset(const TType&);
unsigned int computeTypeXfbSize(const TType&, bool& containsDouble) const;
+ static int getBaseAlignmentScalar(const TType&, int& size);
static int getBaseAlignment(const TType&, int& size, int& stride, bool std140, bool rowMajor);
+ static bool improperStraddle(const TType& type, int size, int offset);
bool promote(TIntermOperator*);
#ifdef NV_EXTENSIONS
@@ -428,7 +593,22 @@ public:
return semanticNameSet.insert(name).first->c_str();
}
- const char* const implicitThisName = "@this";
+ void setSourceFile(const char* file) { sourceFile = file; }
+ const std::string& getSourceFile() const { return sourceFile; }
+ void addSourceText(const char* text) { sourceText = sourceText + text; }
+ const std::string& getSourceText() const { return sourceText; }
+ void addProcesses(const std::vector<std::string>& p) {
+ for (int i = 0; i < (int)p.size(); ++i)
+ processes.addProcess(p[i]);
+ }
+ void addProcess(const std::string& process) { processes.addProcess(process); }
+ void addProcessArgument(const std::string& arg) { processes.addArgument(arg); }
+ const std::vector<std::string>& getProcesses() const { return processes.getProcesses(); }
+
+ void setNeedsLegalization() { needToLegalize = true; }
+ bool needsLegalization() const { return needToLegalize; }
+
+ const char* const implicitThisName;
protected:
TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&);
@@ -443,7 +623,6 @@ protected:
void inOutLocationCheck(TInfoSink&);
TIntermSequence& findLinkerObjects() const;
bool userOutputUsed() const;
- static int getBaseAlignmentScalar(const TType&, int& size);
bool isSpecializationOperation(const TIntermOperator&) const;
bool promoteUnary(TIntermUnary&);
bool promoteBinary(TIntermBinary&);
@@ -452,6 +631,8 @@ protected:
void pushSelector(TIntermSequence&, const TVectorSelector&, const TSourceLoc&);
void pushSelector(TIntermSequence&, const TMatrixSelector&, const TSourceLoc&);
bool specConstantPropagates(const TIntermTyped&, const TIntermTyped&);
+ void performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root);
+ static const char* getResourceName(TResourceType);
const EShLanguage language; // stage, known at construction time
EShSource source; // source language, known a bit later
@@ -480,6 +661,7 @@ protected:
int localSize[3];
int localSizeSpecId[3];
bool earlyFragmentTests;
+ bool postDepthCoverage;
TLayoutDepth depthLayout;
bool depthReplacing;
int blendEquations; // an 'or'ing of masks of shifts of TBlendEquationShift
@@ -491,14 +673,20 @@ protected:
bool geoPassthroughEXT;
#endif
- unsigned int shiftSamplerBinding;
- unsigned int shiftTextureBinding;
- unsigned int shiftImageBinding;
- unsigned int shiftUboBinding;
- unsigned int shiftSsboBinding;
+ // Base shift values
+ std::array<unsigned int, EResCount> shiftBinding;
+
+ // Per-descriptor-set shift values
+ std::array<std::map<int, int>, EResCount> shiftBindingForSet;
+
+ std::vector<std::string> resourceSetBinding;
bool autoMapBindings;
+ bool autoMapLocations;
bool flattenUniformArrays;
bool useUnknownFormat;
+ bool hlslOffsets;
+ bool useStorageBuffer;
+ bool hlslIoMapping;
typedef std::list<TCall> TGraph;
TGraph callGraph;
@@ -510,6 +698,17 @@ protected:
std::unordered_set<int> usedConstantId; // specialization constant ids used
std::set<TString> semanticNameSet;
+ EShTextureSamplerTransformMode textureSamplerTransformMode;
+
+ // source code of shader, useful as part of debug information
+ std::string sourceFile;
+ std::string sourceText;
+
+ // for OpModuleProcessed, or equivalent
+ TProcesses processes;
+
+ bool needToLegalize;
+
private:
void operator=(TIntermediate&); // prevent assignments
};
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/parseConst.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/parseConst.cpp
index 22b55516aaa..1a8e6d9987c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/parseConst.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/parseConst.cpp
@@ -76,12 +76,6 @@ bool TConstTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node)
return false;
}
- if (node->getSequence().size() == 0) {
- error = true;
-
- return false;
- }
-
bool flag = node->getSequence().size() == 1 && node->getSequence()[0]->getAsTyped()->getAsConstantUnion();
if (flag) {
singleConstantParam = true;
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h
index 0c85f8a19a7..5f26b4371d9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h
@@ -68,6 +68,7 @@ public:
virtual void requireStage(const TSourceLoc&, EShLanguage, const char* featureDesc);
virtual void checkDeprecated(const TSourceLoc&, int queryProfiles, int depVersion, const char* featureDesc);
virtual void requireNotRemoved(const TSourceLoc&, int queryProfiles, int removedVersion, const char* featureDesc);
+ virtual void unimplemented(const TSourceLoc&, const char* featureDesc);
virtual void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc);
virtual void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc);
virtual TExtensionBehavior getExtensionBehavior(const char*);
@@ -77,6 +78,7 @@ public:
virtual void fullIntegerCheck(const TSourceLoc&, const char* op);
virtual void doubleCheck(const TSourceLoc&, const char* op);
#ifdef AMD_EXTENSIONS
+ virtual void int16Check(const TSourceLoc& loc, const char* op, bool builtIn = false);
virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false);
#endif
virtual void int64Check(const TSourceLoc&, const char* op, bool builtIn = false);
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
index 590290bbd90..3ae711c86c1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
@@ -76,12 +76,15 @@ TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
+#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
+#endif
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <cctype>
+#include <climits>
#include "PpContext.h"
#include "PpTokens.h"
@@ -239,15 +242,20 @@ int TPpContext::CPPelse(int matchelse, TPpToken* ppToken)
int nextAtom = atomStrings.getAtom(ppToken->name);
if (nextAtom == PpAtomIf || nextAtom == PpAtomIfdef || nextAtom == PpAtomIfndef) {
depth++;
- ifdepth++;
- elsetracker++;
+ if (ifdepth >= maxIfNesting || elsetracker >= maxIfNesting) {
+ parseContext.ppError(ppToken->loc, "maximum nesting depth exceeded", "#if/#ifdef/#ifndef", "");
+ return EndOfInput;
+ } else {
+ ifdepth++;
+ elsetracker++;
+ }
} else if (nextAtom == PpAtomEndif) {
token = extraTokenCheck(nextAtom, ppToken, scanToken(ppToken));
elseSeen[elsetracker] = false;
--elsetracker;
if (depth == 0) {
// found the #endif we are looking for
- if (ifdepth)
+ if (ifdepth > 0)
--ifdepth;
break;
}
@@ -264,7 +272,7 @@ int TPpContext::CPPelse(int matchelse, TPpToken* ppToken)
parseContext.ppError(ppToken->loc, "#elif after #else", "#elif", "");
/* we decrement ifdepth here, because CPPif will increment
* it and we really want to leave it alone */
- if (ifdepth) {
+ if (ifdepth > 0) {
--ifdepth;
elseSeen[elsetracker] = false;
--elsetracker;
@@ -343,8 +351,8 @@ namespace {
int op_add(int a, int b) { return a + b; }
int op_sub(int a, int b) { return a - b; }
int op_mul(int a, int b) { return a * b; }
- int op_div(int a, int b) { return a / b; }
- int op_mod(int a, int b) { return a % b; }
+ int op_div(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a / b; }
+ int op_mod(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a % b; }
int op_pos(int a) { return a; }
int op_neg(int a) { return -a; }
int op_cmpl(int a) { return ~a; }
@@ -391,6 +399,14 @@ int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, boo
TSourceLoc loc = ppToken->loc; // because we sometimes read the newline before reporting the error
if (token == PpAtomIdentifier) {
if (strcmp("defined", ppToken->name) == 0) {
+ if (! parseContext.isReadingHLSL() && isMacroInput()) {
+ if (parseContext.relaxedErrors())
+ parseContext.ppWarn(ppToken->loc, "nonportable when expanded from macros for preprocessor expression",
+ "defined", "");
+ else
+ parseContext.ppError(ppToken->loc, "cannot use in preprocessor expression when expanded from macros",
+ "defined", "");
+ }
bool needclose = 0;
token = scanToken(ppToken);
if (token == '(') {
@@ -526,11 +542,12 @@ int TPpContext::evalToToken(int token, bool shortCircuit, int& res, bool& err, T
int TPpContext::CPPif(TPpToken* ppToken)
{
int token = scanToken(ppToken);
- elsetracker++;
- ifdepth++;
- if (ifdepth > maxIfNesting) {
+ if (ifdepth >= maxIfNesting || elsetracker >= maxIfNesting) {
parseContext.ppError(ppToken->loc, "maximum nesting depth exceeded", "#if", "");
- return 0;
+ return EndOfInput;
+ } else {
+ elsetracker++;
+ ifdepth++;
}
int res = 0;
bool err = false;
@@ -546,11 +563,14 @@ int TPpContext::CPPif(TPpToken* ppToken)
int TPpContext::CPPifdef(int defined, TPpToken* ppToken)
{
int token = scanToken(ppToken);
- if (++ifdepth > maxIfNesting) {
+ if (ifdepth > maxIfNesting || elsetracker > maxIfNesting) {
parseContext.ppError(ppToken->loc, "maximum nesting depth exceeded", "#ifdef", "");
- return 0;
+ return EndOfInput;
+ } else {
+ elsetracker++;
+ ifdepth++;
}
- elsetracker++;
+
if (token != PpAtomIdentifier) {
if (defined)
parseContext.ppError(ppToken->loc, "must be followed by macro name", "#ifdef", "");
@@ -611,14 +631,14 @@ int TPpContext::CPPinclude(TPpToken* ppToken)
TShader::Includer::IncludeResult* res = nullptr;
if (startWithLocalSearch)
res = includer.includeLocal(filename.c_str(), currentSourceFile.c_str(), includeStack.size() + 1);
- if (! res || res->headerName.empty()) {
+ if (res == nullptr || res->headerName.empty()) {
includer.releaseInclude(res);
res = includer.includeSystem(filename.c_str(), currentSourceFile.c_str(), includeStack.size() + 1);
}
// Process the results
- if (res && !res->headerName.empty()) {
- if (res->headerData && res->headerLength) {
+ if (res != nullptr && !res->headerName.empty()) {
+ if (res->headerData != nullptr && res->headerLength > 0) {
// path for processing one or more tokens from an included header, hand off 'res'
const bool forNextLine = parseContext.lineDirectiveShouldSetNextLine();
std::ostringstream prologue;
@@ -636,8 +656,8 @@ int TPpContext::CPPinclude(TPpToken* ppToken)
} else {
// error path, clean up
std::string message =
- res ? std::string(res->headerData, res->headerLength)
- : std::string("Could not process include directive");
+ res != nullptr ? std::string(res->headerData, res->headerLength)
+ : std::string("Could not process include directive");
parseContext.ppError(directiveLoc, message.c_str(), "#include", "for header name: %s", filename.c_str());
includer.releaseInclude(res);
}
@@ -714,6 +734,7 @@ int TPpContext::CPPerror(TPpToken* ppToken)
if (token == PpAtomConstInt || token == PpAtomConstUint ||
token == PpAtomConstInt64 || token == PpAtomConstUint64 ||
#ifdef AMD_EXTENSIONS
+ token == PpAtomConstInt16 || token == PpAtomConstUint16 ||
token == PpAtomConstFloat16 ||
#endif
token == PpAtomConstFloat || token == PpAtomConstDouble) {
@@ -748,6 +769,10 @@ int TPpContext::CPPpragma(TPpToken* ppToken)
case PpAtomConstUint:
case PpAtomConstInt64:
case PpAtomConstUint64:
+#ifdef AMD_EXTENSIONS
+ case PpAtomConstInt16:
+ case PpAtomConstUint16:
+#endif
case PpAtomConstFloat:
case PpAtomConstDouble:
#ifdef AMD_EXTENSIONS
@@ -776,8 +801,12 @@ int TPpContext::CPPversion(TPpToken* ppToken)
{
int token = scanToken(ppToken);
- if (errorOnVersion || versionSeen)
- parseContext.ppError(ppToken->loc, "must occur first in shader", "#version", "");
+ if (errorOnVersion || versionSeen) {
+ if (parseContext.isReadingHLSL())
+ parseContext.ppError(ppToken->loc, "invalid preprocessor command", "#version", "");
+ else
+ parseContext.ppError(ppToken->loc, "must occur first in shader", "#version", "");
+ }
versionSeen = true;
if (token == '\n') {
@@ -867,16 +896,16 @@ int TPpContext::readCPPline(TPpToken* ppToken)
token = CPPdefine(ppToken);
break;
case PpAtomElse:
- if (elsetracker[elseSeen])
+ if (elseSeen[elsetracker])
parseContext.ppError(ppToken->loc, "#else after #else", "#else", "");
- elsetracker[elseSeen] = true;
- if (! ifdepth)
+ elseSeen[elsetracker] = true;
+ if (ifdepth == 0)
parseContext.ppError(ppToken->loc, "mismatched statements", "#else", "");
token = extraTokenCheck(PpAtomElse, ppToken, scanToken(ppToken));
token = CPPelse(0, ppToken);
break;
case PpAtomElif:
- if (! ifdepth)
+ if (ifdepth == 0)
parseContext.ppError(ppToken->loc, "mismatched statements", "#elif", "");
if (elseSeen[elsetracker])
parseContext.ppError(ppToken->loc, "#elif after #else", "#elif", "");
@@ -887,7 +916,7 @@ int TPpContext::readCPPline(TPpToken* ppToken)
token = CPPelse(0, ppToken);
break;
case PpAtomEndif:
- if (! ifdepth)
+ if (ifdepth == 0)
parseContext.ppError(ppToken->loc, "mismatched statements", "#endif", "");
else {
elseSeen[elsetracker] = false;
@@ -1049,6 +1078,10 @@ int TPpContext::tMacroInput::scan(TPpToken* ppToken)
pasting = true;
}
+ // HLSL does expand macros before concatenation
+ if (pasting && pp->parseContext.isReadingHLSL())
+ pasting = false;
+
// TODO: preprocessor: properly handle whitespace (or lack of it) between tokens when expanding
if (token == PpAtomIdentifier) {
int i;
@@ -1124,7 +1157,6 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka
}
MacroSymbol* macro = macroAtom == 0 ? nullptr : lookupMacroDef(macroAtom);
- int token;
int depth = 0;
// no recursive expansions
@@ -1146,13 +1178,12 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka
TSourceLoc loc = ppToken->loc; // in case we go to the next line before discovering the error
in->mac = macro;
if (macro->args.size() > 0 || macro->emptyArgs) {
- token = scanToken(ppToken);
+ int token = scanToken(ppToken);
if (newLineOkay) {
while (token == '\n')
token = scanToken(ppToken);
}
if (token != '(') {
- parseContext.ppError(loc, "expected '(' following", "macro expansion", atomStrings.getString(macroAtom));
UngetToken(token, ppToken);
delete in;
return 0;
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp
index 52df3b025de..06c2333ef10 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp
@@ -76,7 +76,9 @@ TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
+#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
+#endif
#include <cassert>
#include <cstdlib>
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h
index f1c41abd38d..854bbbad206 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h
@@ -92,7 +92,7 @@ namespace glslang {
class TPpToken {
public:
- TPpToken() : space(false), ival(0), dval(0.0), i64val(0)
+ TPpToken() : space(false), i64val(0)
{
loc.init();
name[0] = 0;
@@ -108,10 +108,14 @@ public:
bool operator!=(const TPpToken& right) { return ! operator==(right); }
TSourceLoc loc;
- bool space; // true if a space (for white space or a removed comment) should also be recognized, in front of the token returned
- int ival;
- double dval;
- long long i64val;
+ bool space; // true if a space (for white space or a removed comment) should also be recognized, in front of the token returned
+
+ union {
+ int ival;
+ double dval;
+ long long i64val;
+ };
+
char name[MaxTokenLength + 1];
};
@@ -196,6 +200,7 @@ public:
virtual void ungetch() = 0;
virtual bool peekPasting() { return false; } // true when about to see ##
virtual bool endOfReplacementList() { return false; } // true when at the end of a macro replacement list (RHS of #define)
+ virtual bool isMacroInput() { return false; }
// Will be called when we start reading tokens from this instance
virtual void notifyActivated() {}
@@ -302,8 +307,9 @@ protected:
void ungetChar() { inputStack.back()->ungetch(); }
bool peekPasting() { return !inputStack.empty() && inputStack.back()->peekPasting(); }
bool endOfReplacementList() { return inputStack.empty() || inputStack.back()->endOfReplacementList(); }
+ bool isMacroInput() { return inputStack.size() > 0 && inputStack.back()->isMacroInput(); }
- static const int maxIfNesting = 64;
+ static const int maxIfNesting = 65;
int ifdepth; // current #if-#else-#endif nesting in the cpp.c file (pre-processor)
bool elseSeen[maxIfNesting]; // Keep a track of whether an else has been seen at a particular depth
@@ -325,6 +331,7 @@ protected:
virtual void ungetch() override { assert(0); }
bool peekPasting() override { return prepaste; }
bool endOfReplacementList() override { return mac->body.atEnd(); }
+ bool isMacroInput() override { return true; }
MacroSymbol *mac;
TVector<TokenStream*> args;
@@ -584,6 +591,7 @@ protected:
int ScanFromString(char* s);
void missingEndifCheck();
int lFloatConst(int len, int ch, TPpToken* ppToken);
+ int characterLiteral(TPpToken* ppToken);
void push_include(TShader::Includer::IncludeResult* result)
{
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpMemory.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpMemory.cpp
deleted file mode 100644
index e30db7f6d26..00000000000
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpMemory.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
-// Copyright (C) 2013 LunarG, Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//
-// Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//
-// Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-//
-// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-/****************************************************************************\
-Copyright (c) 2002, NVIDIA Corporation.
-
-NVIDIA Corporation("NVIDIA") supplies this software to you in
-consideration of your agreement to the following terms, and your use,
-installation, modification or redistribution of this NVIDIA software
-constitutes acceptance of these terms. If you do not agree with these
-terms, please do not use, install, modify or redistribute this NVIDIA
-software.
-
-In consideration of your agreement to abide by the following terms, and
-subject to these terms, NVIDIA grants you a personal, non-exclusive
-license, under NVIDIA's copyrights in this original NVIDIA software (the
-"NVIDIA Software"), to use, reproduce, modify and redistribute the
-NVIDIA Software, with or without modifications, in source and/or binary
-forms; provided that if you redistribute the NVIDIA Software, you must
-retain the copyright notice of NVIDIA, this notice and the following
-text and disclaimers in all such redistributions of the NVIDIA Software.
-Neither the name, trademarks, service marks nor logos of NVIDIA
-Corporation may be used to endorse or promote products derived from the
-NVIDIA Software without specific prior written permission from NVIDIA.
-Except as expressly stated in this notice, no other rights or licenses
-express or implied, are granted by NVIDIA herein, including but not
-limited to any patent rights that may be infringed by your derivative
-works or by other works in which the NVIDIA Software may be
-incorporated. No hardware is licensed hereunder.
-
-THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED,
-INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
-ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER
-PRODUCTS.
-
-IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT,
-INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY
-OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE
-NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT,
-TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
-NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-\****************************************************************************/
-
-namespace glslang {
-
-} // end namespace glslang
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
index b9e7a5b542e..b58bbeeab9d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
@@ -76,7 +76,9 @@ TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
+#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
+#endif
#include <cstdlib>
#include <cstring>
@@ -124,6 +126,35 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken)
HasDecimalOrExponent = true;
saveName(ch);
ch = getChar();
+
+ // 1.#INF or -1.#INF
+ if (parseContext.intermediate.getSource() == EShSourceHlsl && ch == '#') {
+ if ((len < 2) ||
+ (len == 2 && ppToken->name[0] != '1') ||
+ (len == 3 && ppToken->name[1] != '1' && !(ppToken->name[0] == '-' || ppToken->name[0] == '+')) ||
+ (len > 3))
+ parseContext.ppError(ppToken->loc, "unexpected use of", "#", "");
+ else {
+ // we have 1.# or -1.# or +1.#, check for 'INF'
+ if ((ch = getChar()) != 'I' ||
+ (ch = getChar()) != 'N' ||
+ (ch = getChar()) != 'F')
+ parseContext.ppError(ppToken->loc, "expected 'INF'", "#", "");
+ else {
+ // we have [+-].#INF, and we are targeting IEEE 754, so wrap it up:
+ saveName('I');
+ saveName('N');
+ saveName('F');
+ ppToken->name[len] = '\0';
+ if (ppToken->name[0] == '-')
+ ppToken->i64val = 0xfff0000000000000; // -Infinity
+ else
+ ppToken->i64val = 0x7ff0000000000000; // +Infinity
+ return PpAtomConstFloat;
+ }
+ }
+ }
+
while (ch >= '0' && ch <= '9') {
saveName(ch);
ch = getChar();
@@ -216,6 +247,82 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken)
return PpAtomConstFloat;
}
+// Recognize a character literal.
+//
+// The first ' has already been accepted, read the rest, through the closing '.
+//
+// Always returns PpAtomConstInt.
+//
+int TPpContext::characterLiteral(TPpToken* ppToken)
+{
+ ppToken->name[0] = 0;
+ ppToken->ival = 0;
+
+ if (parseContext.intermediate.getSource() != EShSourceHlsl) {
+ // illegal, except in macro definition, for which case we report the character
+ return '\'';
+ }
+
+ int ch = getChar();
+ switch (ch) {
+ case '\'':
+ // As empty sequence: ''
+ parseContext.ppError(ppToken->loc, "unexpected", "\'", "");
+ return PpAtomConstInt;
+ case '\\':
+ // As escape sequence: '\XXX'
+ switch (ch = getChar()) {
+ case 'a':
+ ppToken->ival = 7;
+ break;
+ case 'b':
+ ppToken->ival = 8;
+ break;
+ case 't':
+ ppToken->ival = 9;
+ break;
+ case 'n':
+ ppToken->ival = 10;
+ break;
+ case 'v':
+ ppToken->ival = 11;
+ break;
+ case 'f':
+ ppToken->ival = 12;
+ break;
+ case 'r':
+ ppToken->ival = 13;
+ break;
+ case 'x':
+ case '0':
+ parseContext.ppError(ppToken->loc, "octal and hex sequences not supported", "\\", "");
+ break;
+ default:
+ // This catches '\'', '\"', '\?', etc.
+ // Also, things like '\C' mean the same thing as 'C'
+ // (after the above cases are filtered out).
+ ppToken->ival = ch;
+ break;
+ }
+ break;
+ default:
+ ppToken->ival = ch;
+ break;
+ }
+ ppToken->name[0] = (char)ppToken->ival;
+ ppToken->name[1] = '\0';
+ ch = getChar();
+ if (ch != '\'') {
+ parseContext.ppError(ppToken->loc, "expected", "\'", "");
+ // Look ahead for a closing '
+ do {
+ ch = getChar();
+ } while (ch != '\'' && ch != EndOfInput && ch != '\n');
+ }
+
+ return PpAtomConstInt;
+}
+
//
// Scanner used to tokenize source stream.
//
@@ -227,6 +334,9 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
int ii = 0;
unsigned long long ival = 0;
bool enableInt64 = pp->parseContext.version >= 450 && pp->parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64);
+#ifdef AMD_EXTENSIONS
+ bool enableInt16 = pp->parseContext.version >= 450 && pp->parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16);
+#endif
bool acceptHalf = pp->parseContext.intermediate.getSource() == EShSourceHlsl;
#ifdef AMD_EXTENSIONS
if (pp->parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float))
@@ -299,6 +409,9 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
bool isUnsigned = false;
bool isInt64 = false;
+#ifdef AMD_EXTENSIONS
+ bool isInt16 = false;
+#endif
ppToken->name[len++] = (char)ch;
ch = getch();
if ((ch >= '0' && ch <= '9') ||
@@ -307,7 +420,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
ival = 0;
do {
- if (ival <= 0x0fffffff || (enableInt64 && ival <= 0x0fffffffffffffffull)) {
+ if (len < MaxTokenLength && (ival <= 0x0fffffffu || (enableInt64 && ival <= 0x0fffffffffffffffull))) {
ppToken->name[len++] = (char)ch;
if (ch >= '0' && ch <= '9') {
ii = ch - '0';
@@ -320,7 +433,10 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
ival = (ival << 4) | ii;
} else {
if (! AlreadyComplained) {
- pp->parseContext.ppError(ppToken->loc, "hexadecimal literal too big", "", "");
+ if(len < MaxTokenLength)
+ pp->parseContext.ppError(ppToken->loc, "hexadecimal literal too big", "", "");
+ else
+ pp->parseContext.ppError(ppToken->loc, "hexadecimal literal too long", "", "");
AlreadyComplained = 1;
}
ival = 0xffffffffffffffffull;
@@ -346,11 +462,28 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
} else
ungetch();
}
- }
- else if (enableInt64 && (ch == 'l' || ch == 'L')) {
+
+#ifdef AMD_EXTENSIONS
+ if (enableInt16) {
+ int nextCh = getch();
+ if ((ch == 'u' && nextCh == 's') || (ch == 'U' && nextCh == 'S')) {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)nextCh;
+ isInt16 = true;
+ } else
+ ungetch();
+ }
+#endif
+ } else if (enableInt64 && (ch == 'l' || ch == 'L')) {
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
isInt64 = true;
+#ifdef AMD_EXTENSIONS
+ } else if (enableInt16 && (ch == 's' || ch == 'S')) {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)ch;
+ isInt16 = true;
+#endif
} else
ungetch();
ppToken->name[len] = '\0';
@@ -358,6 +491,11 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
if (isInt64) {
ppToken->i64val = ival;
return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64;
+#ifdef AMD_EXTENSIONS
+ } else if (isInt16) {
+ ppToken->ival = (int)ival;
+ return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16;
+#endif
} else {
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint : PpAtomConstInt;
@@ -367,6 +505,9 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
bool isUnsigned = false;
bool isInt64 = false;
+#ifdef AMD_EXTENSIONS
+ bool isInt16 = false;
+#endif
bool octalOverflow = false;
bool nonOctal = false;
ival = 0;
@@ -379,7 +520,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
pp->parseContext.ppError(ppToken->loc, "numeric literal too long", "", "");
AlreadyComplained = 1;
}
- if (ival <= 0x1fffffff || (enableInt64 && ival <= 0x1fffffffffffffffull)) {
+ if (ival <= 0x1fffffffu || (enableInt64 && ival <= 0x1fffffffffffffffull)) {
ii = ch - '0';
ival = (ival << 3) | ii;
} else
@@ -421,11 +562,28 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
} else
ungetch();
}
- }
- else if (enableInt64 && (ch == 'l' || ch == 'L')) {
+
+#ifdef AMD_EXTENSIONS
+ if (enableInt16) {
+ int nextCh = getch();
+ if ((ch == 'u' && nextCh == 's') || (ch == 'U' && nextCh == 'S')) {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)nextCh;
+ isInt16 = true;
+ } else
+ ungetch();
+ }
+#endif
+ } else if (enableInt64 && (ch == 'l' || ch == 'L')) {
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
isInt64 = true;
+#ifdef AMD_EXTENSIONS
+ } else if (enableInt16 && (ch == 's' || ch == 'S')) {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)ch;
+ isInt16 = true;
+#endif
} else
ungetch();
ppToken->name[len] = '\0';
@@ -436,6 +594,11 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
if (isInt64) {
ppToken->i64val = ival;
return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64;
+#ifdef AMD_EXTENSIONS
+ } else if (isInt16) {
+ ppToken->ival = (int)ival;
+ return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16;
+#endif
} else {
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint : PpAtomConstInt;
@@ -462,6 +625,9 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
int numericLen = len;
bool isUnsigned = false;
bool isInt64 = false;
+#ifdef AMD_EXTENSIONS
+ bool isInt16 = false;
+#endif
if (ch == 'u' || ch == 'U') {
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
@@ -476,10 +642,28 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
} else
ungetch();
}
+
+#ifdef AMD_EXTENSIONS
+ if (enableInt16) {
+ int nextCh = getch();
+ if ((ch == 'u' && nextCh == 's') || (ch == 'U' && nextCh == 'S')) {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)nextCh;
+ isInt16 = true;
+ } else
+ ungetch();
+ }
+#endif
} else if (enableInt64 && (ch == 'l' || ch == 'L')) {
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
isInt64 = true;
+#ifdef AMD_EXTENSIONS
+ } else if (enableInt16 && (ch == 's' || ch == 'S')) {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)ch;
+ isInt16 = true;
+#endif
} else
ungetch();
@@ -489,10 +673,22 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
const unsigned remainderMaxInt = 0xFFFFFFFFu - 10 * oneTenthMaxInt;
const unsigned long long oneTenthMaxInt64 = 0xFFFFFFFFFFFFFFFFull / 10;
const unsigned long long remainderMaxInt64 = 0xFFFFFFFFFFFFFFFFull - 10 * oneTenthMaxInt64;
+#ifdef AMD_EXTENSIONS
+ const unsigned short oneTenthMaxInt16 = 0xFFFFu / 10;
+ const unsigned short remainderMaxInt16 = 0xFFFFu - 10 * oneTenthMaxInt16;
+#endif
for (int i = 0; i < numericLen; i++) {
ch = ppToken->name[i] - '0';
- if ((enableInt64 == false && ((ival > oneTenthMaxInt) || (ival == oneTenthMaxInt && (unsigned)ch > remainderMaxInt))) ||
- (enableInt64 && ((ival > oneTenthMaxInt64) || (ival == oneTenthMaxInt64 && (unsigned long long)ch > remainderMaxInt64)))) {
+ bool overflow = false;
+ if (isInt64)
+ overflow = (ival > oneTenthMaxInt64 || (ival == oneTenthMaxInt64 && (unsigned long long)ch > remainderMaxInt64));
+#ifdef AMD_EXTENSIONS
+ else if (isInt16)
+ overflow = (ival > oneTenthMaxInt16 || (ival == oneTenthMaxInt16 && (unsigned short)ch > remainderMaxInt16));
+#endif
+ else
+ overflow = (ival > oneTenthMaxInt || (ival == oneTenthMaxInt && (unsigned)ch > remainderMaxInt));
+ if (overflow) {
pp->parseContext.ppError(ppToken->loc, "numeric literal too big", "", "");
ival = 0xFFFFFFFFFFFFFFFFull;
break;
@@ -503,6 +699,11 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
if (isInt64) {
ppToken->i64val = ival;
return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64;
+#ifdef AMD_EXTENSIONS
+ } else if (isInt16) {
+ ppToken->ival = (int)ival;
+ return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16;
+#endif
} else {
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint : PpAtomConstInt;
@@ -672,6 +873,8 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
return '/';
}
break;
+ case '\'':
+ return pp->characterLiteral(ppToken);
case '"':
// TODO: If this gets enhanced to handle escape sequences, or
// anything that is different than what #include needs, then
@@ -750,6 +953,10 @@ int TPpContext::tokenize(TPpToken& ppToken)
case PpAtomConstFloat:
case PpAtomConstInt64:
case PpAtomConstUint64:
+#ifdef AMD_EXTENSIONS
+ case PpAtomConstInt16:
+ case PpAtomConstUint16:
+#endif
case PpAtomConstDouble:
#ifdef AMD_EXTENSIONS
case PpAtomConstFloat16:
@@ -799,6 +1006,7 @@ int TPpContext::tokenPaste(int token, TPpToken& ppToken)
token = scanToken(&pastedPpToken);
assert(token == PpAtomPaste);
+ // This covers end of macro expansion
if (endOfReplacementList()) {
parseContext.ppError(ppToken.loc, "unexpected location; end of replacement list", "##", "");
break;
@@ -807,6 +1015,12 @@ int TPpContext::tokenPaste(int token, TPpToken& ppToken)
// get the token after the ##
token = scanToken(&pastedPpToken);
+ // This covers end of argument expansion
+ if (token == tMarkerInput::marker) {
+ parseContext.ppError(ppToken.loc, "unexpected location; end of argument", "##", "");
+ break;
+ }
+
// get the token text
switch (resultToken) {
case PpAtomIdentifier:
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpSymbols.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpSymbols.cpp
deleted file mode 100644
index 700d82e2fe8..00000000000
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpSymbols.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
-// Copyright (C) 2013 LunarG, Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//
-// Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//
-// Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-//
-// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-/****************************************************************************\
-Copyright (c) 2002, NVIDIA Corporation.
-
-NVIDIA Corporation("NVIDIA") supplies this software to you in
-consideration of your agreement to the following terms, and your use,
-installation, modification or redistribution of this NVIDIA software
-constitutes acceptance of these terms. If you do not agree with these
-terms, please do not use, install, modify or redistribute this NVIDIA
-software.
-
-In consideration of your agreement to abide by the following terms, and
-subject to these terms, NVIDIA grants you a personal, non-exclusive
-license, under NVIDIA's copyrights in this original NVIDIA software (the
-"NVIDIA Software"), to use, reproduce, modify and redistribute the
-NVIDIA Software, with or without modifications, in source and/or binary
-forms; provided that if you redistribute the NVIDIA Software, you must
-retain the copyright notice of NVIDIA, this notice and the following
-text and disclaimers in all such redistributions of the NVIDIA Software.
-Neither the name, trademarks, service marks nor logos of NVIDIA
-Corporation may be used to endorse or promote products derived from the
-NVIDIA Software without specific prior written permission from NVIDIA.
-Except as expressly stated in this notice, no other rights or licenses
-express or implied, are granted by NVIDIA herein, including but not
-limited to any patent rights that may be infringed by your derivative
-works or by other works in which the NVIDIA Software may be
-incorporated. No hardware is licensed hereunder.
-
-THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED,
-INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
-ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER
-PRODUCTS.
-
-IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT,
-INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY
-OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE
-NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT,
-TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
-NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-\****************************************************************************/
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
index 7fa06a5a4a8..bc145e251fc 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
@@ -80,8 +80,10 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// For recording and playing back the stream of tokens in a macro definition.
//
-#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/)
+#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
+#endif
+#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/)
#define snprintf sprintf_s
#endif
@@ -139,6 +141,10 @@ void TPpContext::TokenStream::putToken(int token, TPpToken* ppToken)
case PpAtomConstUint:
case PpAtomConstInt64:
case PpAtomConstUint64:
+#ifdef AMD_EXTENSIONS
+ case PpAtomConstInt16:
+ case PpAtomConstUint16:
+#endif
case PpAtomConstFloat:
case PpAtomConstDouble:
#ifdef AMD_EXTENSIONS
@@ -188,6 +194,10 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken
case PpAtomConstUint:
case PpAtomConstInt64:
case PpAtomConstUint64:
+#ifdef AMD_EXTENSIONS
+ case PpAtomConstInt16:
+ case PpAtomConstUint16:
+#endif
len = 0;
ch = getSubtoken();
while (ch != 0 && ch != EndOfInput) {
@@ -215,6 +225,9 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken
ppToken->dval = atof(ppToken->name);
break;
case PpAtomConstInt:
+#ifdef AMD_EXTENSIONS
+ case PpAtomConstInt16:
+#endif
if (len > 0 && ppToken->name[0] == '0') {
if (len > 1 && (ppToken->name[1] == 'x' || ppToken->name[1] == 'X'))
ppToken->ival = (int)strtol(ppToken->name, 0, 16);
@@ -224,6 +237,9 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken
ppToken->ival = atoi(ppToken->name);
break;
case PpAtomConstUint:
+#ifdef AMD_EXTENSIONS
+ case PpAtomConstUint16:
+#endif
if (len > 0 && ppToken->name[0] == '0') {
if (len > 1 && (ppToken->name[1] == 'x' || ppToken->name[1] == 'X'))
ppToken->ival = (int)strtoul(ppToken->name, 0, 16);
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h
index ee442d68e75..d56df576541 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h
@@ -127,6 +127,10 @@ enum EFixedAtoms {
PpAtomConstUint,
PpAtomConstInt64,
PpAtomConstUint64,
+#ifdef AMD_EXTENSIONS
+ PpAtomConstInt16,
+ PpAtomConstUint16,
+#endif
PpAtomConstFloat,
PpAtomConstDouble,
PpAtomConstFloat16,
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/propagateNoContraction.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/propagateNoContraction.h
index 3412c85dc6c..8521ad7d6a9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/propagateNoContraction.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/propagateNoContraction.h
@@ -37,6 +37,8 @@
// propagate 'noContraction' qualifier.
//
+#pragma once
+
#include "../Include/intermediate.h"
namespace glslang {
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/reflection.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/reflection.cpp
index f3f28f026c5..50fb602789e 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/reflection.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/reflection.cpp
@@ -131,8 +131,11 @@ public:
for (int m = 0; m <= index; ++m) {
// modify just the children's view of matrix layout, if there is one for this member
TLayoutMatrix subMatrixLayout = memberList[m].type->getQualifier().layoutMatrix;
- int memberAlignment = intermediate.getBaseAlignment(*memberList[m].type, memberSize, dummyStride, type.getQualifier().layoutPacking == ElpStd140,
- subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor : type.getQualifier().layoutMatrix == ElmRowMajor);
+ int memberAlignment = intermediate.getBaseAlignment(*memberList[m].type, memberSize, dummyStride,
+ type.getQualifier().layoutPacking == ElpStd140,
+ subMatrixLayout != ElmNone
+ ? subMatrixLayout == ElmRowMajor
+ : type.getQualifier().layoutMatrix == ElmRowMajor);
RoundToPow2(offset, memberAlignment);
if (m < index)
offset += memberSize;
@@ -151,7 +154,8 @@ public:
int lastMemberSize;
int dummyStride;
- intermediate.getBaseAlignment(*memberList[lastIndex].type, lastMemberSize, dummyStride, blockType.getQualifier().layoutPacking == ElpStd140,
+ intermediate.getBaseAlignment(*memberList[lastIndex].type, lastMemberSize, dummyStride,
+ blockType.getQualifier().layoutPacking == ElpStd140,
blockType.getQualifier().layoutMatrix == ElmRowMajor);
return lastOffset + lastMemberSize;
@@ -167,7 +171,7 @@ public:
void blowUpActiveAggregate(const TType& baseType, const TString& baseName, const TList<TIntermBinary*>& derefs,
TList<TIntermBinary*>::const_iterator deref, int offset, int blockIndex, int arraySize)
{
- // process the part of the derefence chain that was explicit in the shader
+ // process the part of the dereference chain that was explicit in the shader
TString name = baseName;
const TType* terminalType = &baseType;
for (; deref != derefs.end(); ++deref) {
@@ -177,7 +181,7 @@ public:
switch (visitNode->getOp()) {
case EOpIndexIndirect:
// Visit all the indices of this array, and for each one add on the remaining dereferencing
- for (int i = 0; i < visitNode->getLeft()->getType().getOuterArraySize(); ++i) {
+ for (int i = 0; i < std::max(visitNode->getLeft()->getType().getOuterArraySize(), 1); ++i) {
TString newBaseName = name;
if (baseType.getBasicType() != EbtBlock)
newBaseName.append(TString("[") + String(i) + "]");
@@ -212,7 +216,7 @@ public:
if (terminalType->isArray()) {
// Visit all the indices of this array, and for each one,
// fully explode the remaining aggregate to dereference
- for (int i = 0; i < terminalType->getOuterArraySize(); ++i) {
+ for (int i = 0; i < std::max(terminalType->getOuterArraySize(), 1); ++i) {
TString newBaseName = name;
newBaseName.append(TString("[") + String(i) + "]");
TType derefType(*terminalType, 0);
@@ -235,7 +239,7 @@ public:
}
// Finally, add a full string to the reflection database, and update the array size if necessary.
- // If the derefenced entity to record is an array, compute the size and update the maximum size.
+ // If the dereferenced entity to record is an array, compute the size and update the maximum size.
// there might not be a final array dereference, it could have been copied as an array object
if (arraySize == 0)
@@ -244,7 +248,8 @@ public:
TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name);
if (it == reflection.nameToIndex.end()) {
reflection.nameToIndex[name] = (int)reflection.indexToUniform.size();
- reflection.indexToUniform.push_back(TObjectReflection(name, *terminalType, offset, mapToGlType(*terminalType),
+ reflection.indexToUniform.push_back(TObjectReflection(name, *terminalType, offset,
+ mapToGlType(*terminalType),
arraySize, blockIndex));
} else if (arraySize > 1) {
int& reflectedArraySize = reflection.indexToUniform[it->second].size;
@@ -417,7 +422,8 @@ public:
case Esd2D:
switch ((int)sampler.ms) {
case false: return sampler.arrayed ? GL_INT_SAMPLER_2D_ARRAY : GL_INT_SAMPLER_2D;
- case true: return sampler.arrayed ? GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_INT_SAMPLER_2D_MULTISAMPLE;
+ case true: return sampler.arrayed ? GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+ : GL_INT_SAMPLER_2D_MULTISAMPLE;
}
case Esd3D:
return GL_INT_SAMPLER_3D;
@@ -435,7 +441,8 @@ public:
case Esd2D:
switch ((int)sampler.ms) {
case false: return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_ARRAY : GL_UNSIGNED_INT_SAMPLER_2D;
- case true: return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE;
+ case true: return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+ : GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE;
}
case Esd3D:
return GL_UNSIGNED_INT_SAMPLER_3D;
@@ -495,7 +502,8 @@ public:
case Esd2D:
switch ((int)sampler.ms) {
case false: return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_ARRAY : GL_UNSIGNED_INT_IMAGE_2D;
- case true: return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY : GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE;
+ case true: return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY
+ : GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE;
}
case Esd3D:
return GL_UNSIGNED_INT_IMAGE_3D;
@@ -707,12 +715,27 @@ void TReflection::buildAttributeReflection(EShLanguage stage, const TIntermediat
}
}
+// build counter block index associations for buffers
+void TReflection::buildCounterIndices()
+{
+ // search for ones that have counters
+ for (int i = 0; i < int(indexToUniformBlock.size()); ++i) {
+ const TString counterName(indexToUniformBlock[i].name + "@count");
+ const int index = getIndex(counterName);
+
+ if (index >= 0)
+ indexToUniformBlock[i].counterIndex = index;
+ }
+}
+
// Merge live symbols from 'intermediate' into the existing reflection database.
//
// Returns false if the input is too malformed to do this.
bool TReflection::addStage(EShLanguage stage, const TIntermediate& intermediate)
{
- if (intermediate.getNumEntryPoints() != 1 || intermediate.isRecursive())
+ if (intermediate.getTreeRoot() == nullptr ||
+ intermediate.getNumEntryPoints() != 1 ||
+ intermediate.isRecursive())
return false;
buildAttributeReflection(stage, intermediate);
@@ -729,6 +752,8 @@ bool TReflection::addStage(EShLanguage stage, const TIntermediate& intermediate)
function->traverse(&it);
}
+ buildCounterIndices();
+
return true;
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/reflection.h b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/reflection.h
index c80d3ea90e7..fedfbe8d4a0 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/reflection.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/reflection.h
@@ -57,30 +57,35 @@ class TObjectReflection {
public:
TObjectReflection(const TString& pName, const TType& pType, int pOffset, int pGLDefineType, int pSize, int pIndex) :
name(pName), offset(pOffset),
- glDefineType(pGLDefineType), size(pSize), index(pIndex), type(pType.clone()) { }
+ glDefineType(pGLDefineType), size(pSize), index(pIndex), counterIndex(-1), type(pType.clone()) { }
- void dump() const {
- printf("%s: offset %d, type %x, size %d, index %d, binding %d\n",
- name.c_str(), offset, glDefineType, size, index, getBinding() );
+ const TType* const getType() const { return type; }
+ int getBinding() const
+ {
+ if (type == nullptr || !type->getQualifier().hasBinding())
+ return -1;
+ return type->getQualifier().layoutBinding;
}
+ void dump() const
+ {
+ printf("%s: offset %d, type %x, size %d, index %d, binding %d",
+ name.c_str(), offset, glDefineType, size, index, getBinding() );
- const TType* const getType() const { return type; }
+ if (counterIndex != -1)
+ printf(", counter %d", counterIndex);
+
+ printf("\n");
+ }
+ static TObjectReflection badReflection() { return TObjectReflection(); }
TString name;
int offset;
int glDefineType;
int size; // data size in bytes for a block, array size for a (non-block) object that's an array
int index;
-
- static TObjectReflection badReflection() { return TObjectReflection(); }
+ int counterIndex;
protected:
- int getBinding() const {
- if (type == nullptr || type->getQualifier().layoutBinding == TQualifier::layoutBindingEnd)
- return -1;
- return type->getQualifier().layoutBinding;
- }
-
TObjectReflection() : offset(-1), glDefineType(-1), size(-1), index(-1), type(nullptr) { }
const TType* type;
@@ -140,6 +145,9 @@ public:
return it->second;
}
+ // see getIndex(const char*)
+ int getIndex(const TString& name) const { return getIndex(name.c_str()); }
+
// Thread local size
unsigned getLocalSize(int dim) const { return dim <= 2 ? localSize[dim] : 0; }
@@ -148,6 +156,7 @@ public:
protected:
friend class glslang::TReflectionTraverser;
+ void buildCounterIndices();
void buildAttributeReflection(EShLanguage, const TIntermediate&);
// Need a TString hash: typedef std::unordered_map<TString, int> TNameToIndex;
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Unix/CMakeLists.txt b/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Unix/CMakeLists.txt
index 174cc9167e0..1bf49e1256d 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Unix/CMakeLists.txt
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Unix/CMakeLists.txt
@@ -1,5 +1,8 @@
add_library(OSDependent STATIC ossource.cpp ../osinclude.h)
set_property(TARGET OSDependent PROPERTY FOLDER glslang)
+set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON)
-install(TARGETS OSDependent
- ARCHIVE DESTINATION lib)
+if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS OSDependent
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Unix/ossource.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Unix/ossource.cpp
index 4f8098b752a..f59bbceb4a9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Unix/ossource.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Unix/ossource.cpp
@@ -43,6 +43,9 @@
#include <assert.h>
#include <errno.h>
#include <stdint.h>
+#include <cstdio>
+#include <sys/time.h>
+#include <sys/resource.h>
namespace glslang {
@@ -184,22 +187,18 @@ void ReleaseGlobalLock()
pthread_mutex_unlock(&gMutex);
}
-// TODO: non-windows: if we need these on linux, flesh them out
-void* OS_CreateThread(TThreadEntrypoint /*entry*/)
-{
- return 0;
-}
-
-void OS_WaitForAllThreads(void* /*threads*/, int /*numThreads*/)
-{
-}
-
-void OS_Sleep(int /*milliseconds*/)
-{
-}
+// #define DUMP_COUNTERS
void OS_DumpMemoryCounters()
{
+#ifdef DUMP_COUNTERS
+ struct rusage usage;
+
+ if (getrusage(RUSAGE_SELF, &usage) == 0)
+ printf("Working set size: %ld\n", usage.ru_maxrss * 1024);
+#else
+ printf("Recompile with DUMP_COUNTERS defined to see counters.\n");
+#endif
}
} // end namespace glslang
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Windows/CMakeLists.txt b/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Windows/CMakeLists.txt
index 399760c30a7..f257418abbe 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Windows/CMakeLists.txt
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Windows/CMakeLists.txt
@@ -2,16 +2,19 @@ set(SOURCES ossource.cpp ../osinclude.h)
add_library(OSDependent STATIC ${SOURCES})
set_property(TARGET OSDependent PROPERTY FOLDER glslang)
+set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON)
# MinGW GCC complains about function pointer casts to void*.
# Turn that off with -fpermissive.
if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
- target_compile_options(OSDependent PRIVATE -fpermissive)
+ target_compile_options(OSDependent PRIVATE -fpermissive)
endif()
if(WIN32)
source_group("Source" FILES ${SOURCES})
endif(WIN32)
-install(TARGETS OSDependent
- ARCHIVE DESTINATION lib)
+if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS OSDependent
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Windows/ossource.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Windows/ossource.cpp
index 73ae0ca7162..870840c56ea 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Windows/ossource.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/Windows/ossource.cpp
@@ -131,21 +131,6 @@ unsigned int __stdcall EnterGenericThread (void* entry)
return ((TThreadEntrypoint)entry)(0);
}
-void* OS_CreateThread(TThreadEntrypoint entry)
-{
- return (void*)_beginthreadex(0, 0, EnterGenericThread, (void*)entry, 0, 0);
-}
-
-void OS_WaitForAllThreads(void* threads, int numThreads)
-{
- WaitForMultipleObjects(numThreads, (HANDLE*)threads, true, INFINITE);
-}
-
-void OS_Sleep(int milliseconds)
-{
- Sleep(milliseconds);
-}
-
//#define DUMP_COUNTERS
void OS_DumpMemoryCounters()
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/osinclude.h b/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/osinclude.h
index e8325268e9b..218abe4f23f 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/osinclude.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/OSDependent/osinclude.h
@@ -53,11 +53,8 @@ void GetGlobalLock();
void ReleaseGlobalLock();
typedef unsigned int (*TThreadEntrypoint)(void*);
-void* OS_CreateThread(TThreadEntrypoint);
-void OS_WaitForAllThreads(void* threads, int numThreads);
void OS_CleanupThreadData(void);
-void OS_Sleep(int milliseconds);
void OS_DumpMemoryCounters();
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/Public/ShaderLang.h b/3rdparty/bgfx/3rdparty/glslang/glslang/Public/ShaderLang.h
index 8d8abd777bc..6e22bdd727a 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/Public/ShaderLang.h
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/Public/ShaderLang.h
@@ -40,6 +40,7 @@
#include "../MachineIndependent/Versions.h"
#include <cstring>
+#include <vector>
#ifdef _WIN32
#define C_DECL __cdecl
@@ -67,15 +68,14 @@
#endif
//
-// Driver must call this first, once, before doing any other
-// compiler/linker operations.
+// Call before doing any other compiler/linker operations.
//
// (Call once per process, not once per thread.)
//
SH_IMPORT_EXPORT int ShInitialize();
//
-// Driver should call this at process shutdown.
+// Call this at process shutdown to clean up memory.
//
SH_IMPORT_EXPORT int __fastcall ShFinalize();
@@ -109,7 +109,44 @@ typedef enum {
EShSourceNone,
EShSourceGlsl,
EShSourceHlsl,
-} EShSource; // if EShLanguage were EShStage, this could be EShLanguage instead
+} EShSource; // if EShLanguage were EShStage, this could be EShLanguage instead
+
+typedef enum {
+ EShClientNone,
+ EShClientVulkan,
+ EShClientOpenGL,
+} EShClient;
+
+typedef enum {
+ EShTargetNone,
+ EshTargetSpv,
+} EShTargetLanguage;
+
+struct TInputLanguage {
+ EShSource languageFamily; // redundant information with other input, this one overrides when not EShSourceNone
+ EShLanguage stage; // redundant information with other input, this one overrides when not EShSourceNone
+ EShClient dialect;
+ int dialectVersion; // version of client's language definition, not the client (when not EShClientNone)
+};
+
+struct TClient {
+ EShClient client;
+ int version; // version of client itself (not the client's input dialect)
+};
+
+struct TTarget {
+ EShTargetLanguage language;
+ unsigned int version; // the version to target, if SPIR-V, defined by "word 1" of the SPIR-V binary header
+};
+
+// All source/client/target versions and settings.
+// Can override previous methods of setting, when items are set here.
+// Expected to grow, as more are added, rather than growing parameter lists.
+struct TEnvironment {
+ TInputLanguage input; // definition of the input language
+ TClient client; // what client is the overall compilation being done for?
+ TTarget target; // what to generate
+};
const char* StageName(EShLanguage);
@@ -134,6 +171,14 @@ typedef enum {
} EShOptimizationLevel;
//
+// Texture and Sampler transformation mode.
+//
+typedef enum {
+ EShTexSampTransKeep, // keep textures and samplers as is (default)
+ EShTexSampTransUpgradeTextureRemoveSampler, // change texture w/o embeded sampler into sampled texture and throw away all samplers
+} EShTextureSamplerTransformMode;
+
+//
// Message choices for what errors and warnings are given.
//
enum EShMessages {
@@ -147,6 +192,8 @@ enum EShMessages {
EShMsgReadHlsl = (1 << 6), // use HLSL parsing rules and semantics
EShMsgCascadingErrors = (1 << 7), // get cascading errors; risks error-recovery issues, instead of an early exit
EShMsgKeepUncalled = (1 << 8), // for testing, don't eliminate uncalled functions
+ EShMsgHlslOffsets = (1 << 9), // allow block offsets to follow HLSL rules instead of GLSL rules
+ EShMsgDebugInfo = (1 << 10), // save debug information
};
//
@@ -242,7 +289,7 @@ SH_IMPORT_EXPORT int ShGetUniformLocation(const ShHandle uniformMap, const char*
// Deferred-Lowering C++ Interface
// -----------------------------------
//
-// Below is a new alternate C++ interface that might potentially replace the above
+// Below is a new alternate C++ interface, which deprecates the above
// opaque handle-based interface.
//
// The below is further designed to handle multiple compilation units per stage, where
@@ -276,6 +323,17 @@ bool InitializeProcess();
// Call once per process to tear down everything
void FinalizeProcess();
+// Resource type for IO resolver
+enum TResourceType {
+ EResSampler,
+ EResTexture,
+ EResImage,
+ EResUbo,
+ EResSsbo,
+ EResUav,
+ EResCount
+};
+
// Make one TShader per shader that you will link into a program. Then provide
// the shader through setStrings() or setStringsWithLengths(), then call parse(),
// then query the info logs.
@@ -298,14 +356,44 @@ public:
void setPreamble(const char* s) { preamble = s; }
void setEntryPoint(const char* entryPoint);
void setSourceEntryPoint(const char* sourceEntryPointName);
- void setShiftSamplerBinding(unsigned int base);
- void setShiftTextureBinding(unsigned int base);
- void setShiftImageBinding(unsigned int base);
- void setShiftUboBinding(unsigned int base);
- void setShiftSsboBinding(unsigned int base);
+ void addProcesses(const std::vector<std::string>&);
+
+ // IO resolver binding data: see comments in ShaderLang.cpp
+ void setShiftBinding(TResourceType res, unsigned int base);
+ void setShiftSamplerBinding(unsigned int base); // DEPRECATED: use setShiftBinding
+ void setShiftTextureBinding(unsigned int base); // DEPRECATED: use setShiftBinding
+ void setShiftImageBinding(unsigned int base); // DEPRECATED: use setShiftBinding
+ void setShiftUboBinding(unsigned int base); // DEPRECATED: use setShiftBinding
+ void setShiftUavBinding(unsigned int base); // DEPRECATED: use setShiftBinding
+ void setShiftCbufferBinding(unsigned int base); // synonym for setShiftUboBinding
+ void setShiftSsboBinding(unsigned int base); // DEPRECATED: use setShiftBinding
+ void setShiftBindingForSet(TResourceType res, unsigned int base, unsigned int set);
+ void setResourceSetBinding(const std::vector<std::string>& base);
void setAutoMapBindings(bool map);
+ void setAutoMapLocations(bool map);
+ void setHlslIoMapping(bool hlslIoMap);
void setFlattenUniformArrays(bool flatten);
void setNoStorageFormat(bool useUnknownFormat);
+ void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode);
+
+ // For setting up the environment (initialized in the constructor):
+ void setEnvInput(EShSource lang, EShLanguage envStage, EShClient client, int version)
+ {
+ environment.input.languageFamily = lang;
+ environment.input.stage = envStage;
+ environment.input.dialect = client;
+ environment.input.dialectVersion = version;
+ }
+ void setEnvClient(EShClient client, int version)
+ {
+ environment.client.client = client;
+ environment.client.version = version;
+ }
+ void setEnvTarget(EShTargetLanguage lang, unsigned int version)
+ {
+ environment.target.language = lang;
+ environment.target.version = version;
+ }
// Interface to #include handlers.
//
@@ -390,6 +478,9 @@ public:
virtual void releaseInclude(IncludeResult*) override { }
};
+ bool parse(const TBuiltInResource*, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile,
+ bool forwardCompatible, EShMessages, Includer&);
+
bool parse(const TBuiltInResource* res, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile,
bool forwardCompatible, EShMessages messages)
{
@@ -397,12 +488,18 @@ public:
return parse(res, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, forwardCompatible, messages, includer);
}
- bool parse(const TBuiltInResource*, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile,
- bool forwardCompatible, EShMessages, Includer&);
-
// Equivalent to parse() without a default profile and without forcing defaults.
- // Provided for backwards compatibility.
- bool parse(const TBuiltInResource*, int defaultVersion, bool forwardCompatible, EShMessages);
+ bool parse(const TBuiltInResource* builtInResources, int defaultVersion, bool forwardCompatible, EShMessages messages)
+ {
+ return parse(builtInResources, defaultVersion, ENoProfile, false, forwardCompatible, messages);
+ }
+
+ bool parse(const TBuiltInResource* builtInResources, int defaultVersion, bool forwardCompatible, EShMessages messages,
+ Includer& includer)
+ {
+ return parse(builtInResources, defaultVersion, ENoProfile, false, forwardCompatible, messages, includer);
+ }
+
bool preprocess(const TBuiltInResource* builtInResources,
int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile,
bool forwardCompatible, EShMessages message, std::string* outputString,
@@ -410,8 +507,8 @@ public:
const char* getInfoLog();
const char* getInfoDebugLog();
-
EShLanguage getStage() const { return stage; }
+ TIntermediate* getIntermediate() const { return intermediate; }
protected:
TPoolAllocator* pool;
@@ -437,6 +534,8 @@ protected:
// a function in the source string can be renamed FROM this TO the name given in setEntryPoint.
std::string sourceEntryPointName;
+ TEnvironment environment;
+
friend class TProgram;
private:
@@ -448,9 +547,10 @@ class TIoMapper;
// Allows to customize the binding layout after linking.
// All used uniform variables will invoke at least validateBinding.
-// If validateBinding returned true then the other resolveBinding
-// and resolveSet are invoked to resolve the binding and descriptor
-// set index respectively.
+// If validateBinding returned true then the other resolveBinding,
+// resolveSet, and resolveLocation are invoked to resolve the binding
+// and descriptor set index respectively.
+//
// Invocations happen in a particular order:
// 1) all shader inputs
// 2) all shader outputs
@@ -459,6 +559,13 @@ class TIoMapper;
// 5) all uniforms with set but no binding defined
// 6) all uniforms with no binding and no set defined
//
+// mapIO will use this resolver in two phases. The first
+// phase is a notification phase, calling the corresponging
+// notifiy callbacks, this phase ends with a call to endNotifications.
+// Phase two starts directly after the call to endNotifications
+// and calls all other callbacks to validate and to get the
+// bindings, sets, locations, component and color indices.
+//
// NOTE: that still limit checks are applied to bindings and sets
// and may result in an error.
class TIoMapResolver
@@ -466,27 +573,42 @@ class TIoMapResolver
public:
virtual ~TIoMapResolver() {}
- // Should return true if the resulting/current binding would be ok.
+ // Should return true if the resulting/current binding would be okay.
// Basic idea is to do aliasing binding checks with this.
virtual bool validateBinding(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0;
// Should return a value >= 0 if the current binding should be overridden.
// Return -1 if the current binding (including no binding) should be kept.
virtual int resolveBinding(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0;
- // Should return a value >= 0 if the current set should be overriden.
+ // Should return a value >= 0 if the current set should be overridden.
// Return -1 if the current set (including no set) should be kept.
virtual int resolveSet(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0;
- // Should return true if the resuling/current setup would be ok.
+ // Should return a value >= 0 if the current location should be overridden.
+ // Return -1 if the current location (including no location) should be kept.
+ virtual int resolveUniformLocation(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0;
+ // Should return true if the resulting/current setup would be okay.
// Basic idea is to do aliasing checks and reject invalid semantic names.
virtual bool validateInOut(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0;
- // Should return a value >= 0 if the current location should be overriden.
+ // Should return a value >= 0 if the current location should be overridden.
// Return -1 if the current location (including no location) should be kept.
virtual int resolveInOutLocation(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0;
- // Should return a value >= 0 if the current component index should be overriden.
+ // Should return a value >= 0 if the current component index should be overridden.
// Return -1 if the current component index (including no index) should be kept.
virtual int resolveInOutComponent(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0;
- // Should return a value >= 0 if the current color index should be overriden.
+ // Should return a value >= 0 if the current color index should be overridden.
// Return -1 if the current color index (including no index) should be kept.
virtual int resolveInOutIndex(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0;
+ // Notification of a uniform variable
+ virtual void notifyBinding(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0;
+ // Notification of a in or out variable
+ virtual void notifyInOut(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0;
+ // Called by mapIO when it has finished the notify pass
+ virtual void endNotifications(EShLanguage stage) = 0;
+ // Called by mapIO when it starts its notify pass for the given stage
+ virtual void beginNotifications(EShLanguage stage) = 0;
+ // Called by mipIO when it starts its resolve pass for the given stage
+ virtual void beginResolve(EShLanguage stage) = 0;
+ // Called by mapIO when it has finished the resolve pass
+ virtual void endResolve(EShLanguage stage) = 0;
};
// Make one TProgram per set of shaders that will get linked together. Add all
@@ -516,7 +638,9 @@ public:
const char* getUniformBlockName(int blockIndex) const; // can be used for glGetActiveUniformBlockName()
int getUniformBlockSize(int blockIndex) const; // can be used for glGetActiveUniformBlockiv(UNIFORM_BLOCK_DATA_SIZE)
int getUniformIndex(const char* name) const; // can be used for glGetUniformIndices()
+ int getUniformBinding(int index) const; // returns the binding number
int getUniformBlockIndex(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX)
+ int getUniformBlockCounterIndex(int index) const; // returns block index of associated counter.
int getUniformType(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_TYPE)
int getUniformBufferOffset(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_OFFSET)
int getUniformArraySize(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_SIZE)
diff --git a/3rdparty/bgfx/3rdparty/glslang/gtests/AST.FromFile.cpp b/3rdparty/bgfx/3rdparty/glslang/gtests/AST.FromFile.cpp
index d8a5ef94c92..5f6de4f6d50 100644
--- a/3rdparty/bgfx/3rdparty/glslang/gtests/AST.FromFile.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/gtests/AST.FromFile.cpp
@@ -62,6 +62,7 @@ INSTANTIATE_TEST_CASE_P(
"versionsErrors.frag",
"versionsErrors.vert",
"100.frag",
+ "100samplerExternal.frag",
"120.vert",
"120.frag",
"130.vert",
@@ -77,10 +78,13 @@ INSTANTIATE_TEST_CASE_P(
"matrixError.vert",
"cppSimple.vert",
"cppIndent.vert",
+ "cppIntMinOverNegativeOne.frag",
"cppNest.vert",
"cppBad.vert",
"cppBad2.vert",
"cppComplexExpr.vert",
+ "cppDeepNest.frag",
+ "cppPassMacroName.frag",
"badChars.frag",
"pointCoord.frag",
"array.frag",
@@ -93,6 +97,7 @@ INSTANTIATE_TEST_CASE_P(
"300layout.frag",
"300operations.frag",
"300block.frag",
+ "300samplerExternal.frag",
"310.comp",
"310.vert",
"310.geom",
@@ -101,10 +106,17 @@ INSTANTIATE_TEST_CASE_P(
"310.tese",
"310implicitSizeArrayError.vert",
"310AofA.vert",
+ "320.comp",
+ "320.vert",
+ "320.geom",
+ "320.frag",
+ "320.tesc",
+ "320.tese",
"330.frag",
"330comp.frag",
"constErrors.frag",
"constFold.frag",
+ "constFoldIntMin.frag",
"errors.frag",
"forwardRef.frag",
"uint.frag",
@@ -136,6 +148,7 @@ INSTANTIATE_TEST_CASE_P(
"430.vert",
"430.comp",
"430AofA.frag",
+ "435.vert",
"440.vert",
"440.frag",
"450.vert",
@@ -144,8 +157,11 @@ INSTANTIATE_TEST_CASE_P(
"450.tese",
"450.frag",
"450.comp",
+ "460.frag",
+ "460.vert",
"dce.frag",
"atomic_uint.frag",
+ "implicitInnerAtomicUint.frag",
"aggOps.frag",
"always-discard.frag",
"always-discard2.frag",
@@ -170,12 +186,14 @@ INSTANTIATE_TEST_CASE_P(
"matrix2.frag",
"newTexture.frag",
"Operations.frag",
+ "overlongLiteral.frag",
"prepost.frag",
"simpleFunctionCall.frag",
"structAssignment.frag",
"structDeref.frag",
"structure.frag",
"swizzle.frag",
+ "invalidSwizzle.vert",
"syntaxError.frag",
"test.frag",
"texture.frag",
diff --git a/3rdparty/bgfx/3rdparty/glslang/gtests/CMakeLists.txt b/3rdparty/bgfx/3rdparty/glslang/gtests/CMakeLists.txt
index c383ca0741e..15b73f4bde9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/gtests/CMakeLists.txt
+++ b/3rdparty/bgfx/3rdparty/glslang/gtests/CMakeLists.txt
@@ -1,55 +1,59 @@
-if (TARGET gmock)
- message(STATUS "Google Mock found - building tests")
+if(BUILD_TESTING)
+ if(TARGET gmock)
+ message(STATUS "Google Mock found - building tests")
- set(TEST_SOURCES
- # Framework related source files
- ${CMAKE_CURRENT_SOURCE_DIR}/Initializer.h
- ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/Settings.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/Settings.h
- ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.h
+ set(TEST_SOURCES
+ # Framework related source files
+ ${CMAKE_CURRENT_SOURCE_DIR}/Initializer.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Settings.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Settings.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.h
- # Test related source files
- ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp
- # -- Remapper tests
- ${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp
- )
+ # Test related source files
+ ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp
- add_executable(glslangtests ${TEST_SOURCES})
- set_property(TARGET glslangtests PROPERTY FOLDER tests)
- glslang_set_link_args(glslangtests)
- install(TARGETS glslangtests
- RUNTIME DESTINATION bin)
+ # -- Remapper tests
+ ${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp)
- set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test")
- # Supply a default test root directory, so that manual testing
- # doesn't have to specify the --test-root option in the normal
- # case that you want to use the tests from the same source tree.
- target_compile_definitions(glslangtests
- PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}")
- target_include_directories(glslangtests PRIVATE
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${PROJECT_SOURCE_DIR}
- ${gmock_SOURCE_DIR}/include
- ${gtest_SOURCE_DIR}/include)
+ add_executable(glslangtests ${TEST_SOURCES})
+ set_property(TARGET glslangtests PROPERTY FOLDER tests)
+ glslang_set_link_args(glslangtests)
+ if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS glslangtests
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ endif(ENABLE_GLSLANG_INSTALL)
- set(LIBRARIES
- SPVRemapper glslang OSDependent OGLCompiler glslang
- SPIRV glslang-default-resource-limits)
- if(ENABLE_HLSL)
- set(LIBRARIES ${LIBRARIES} HLSL)
- endif(ENABLE_HLSL)
- target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock)
+ set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test")
+ # Supply a default test root directory, so that manual testing
+ # doesn't have to specify the --test-root option in the normal
+ # case that you want to use the tests from the same source tree.
+ target_compile_definitions(glslangtests
+ PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}")
+ target_include_directories(glslangtests PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${PROJECT_SOURCE_DIR}
+ ${gmock_SOURCE_DIR}/include
+ ${gtest_SOURCE_DIR}/include)
- add_test(NAME glslang-gtests
- COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}")
+ set(LIBRARIES
+ SPVRemapper glslang OSDependent OGLCompiler glslang
+ SPIRV glslang-default-resource-limits)
+ if(ENABLE_HLSL)
+ set(LIBRARIES ${LIBRARIES} HLSL)
+ endif(ENABLE_HLSL)
+ target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock)
+
+ add_test(NAME glslang-gtests
+ COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}")
+ endif()
endif()
diff --git a/3rdparty/bgfx/3rdparty/glslang/gtests/Hlsl.FromFile.cpp b/3rdparty/bgfx/3rdparty/glslang/gtests/Hlsl.FromFile.cpp
index 0b68aeab827..2e4b146d647 100644
--- a/3rdparty/bgfx/3rdparty/glslang/gtests/Hlsl.FromFile.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/gtests/Hlsl.FromFile.cpp
@@ -59,9 +59,10 @@ std::string FileNameAsCustomTestSuffix(
using HlslCompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
+using HlslLegalizeTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
-// Compiling HLSL to SPIR-V under Vulkan semantics. Expected to successfully
-// generate both AST and SPIR-V.
+// Compiling HLSL to pre-legalized SPIR-V under Vulkan semantics. Expected
+// to successfully generate both AST and SPIR-V.
TEST_P(HlslCompileTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
@@ -76,37 +77,85 @@ TEST_P(HlslCompileAndFlattenTest, FromFile)
Target::BothASTAndSpv, GetParam().entryPoint);
}
+// Compiling HLSL to legal SPIR-V under Vulkan semantics. Expected to
+// successfully generate SPIR-V.
+TEST_P(HlslLegalizeTest, FromFile)
+{
+ loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
+ Source::HLSL, Semantics::Vulkan,
+ Target::Spv, GetParam().entryPoint,
+ "/baseLegalResults/", false);
+}
+
// clang-format off
INSTANTIATE_TEST_CASE_P(
ToSpirv, HlslCompileTest,
::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
{"hlsl.amend.frag", "f1"},
+ {"hlsl.aliasOpaque.frag", "main"},
{"hlsl.array.frag", "PixelShaderFunction"},
{"hlsl.array.implicit-size.frag", "PixelShaderFunction"},
{"hlsl.array.multidim.frag", "main"},
{"hlsl.assoc.frag", "PixelShaderFunction"},
{"hlsl.attribute.frag", "PixelShaderFunction"},
{"hlsl.attribute.expression.comp", "main"},
+ {"hlsl.attributeC11.frag", "main"},
+ {"hlsl.attributeGlobalBuffer.frag", "main"},
{"hlsl.basic.comp", "main"},
{"hlsl.basic.geom", "main"},
+ {"hlsl.boolConv.vert", "main"},
{"hlsl.buffer.frag", "PixelShaderFunction"},
{"hlsl.calculatelod.dx10.frag", "main"},
{"hlsl.calculatelodunclamped.dx10.frag", "main"},
{"hlsl.cast.frag", "PixelShaderFunction"},
+ {"hlsl.charLit.vert", "main"},
+ {"hlsl.clip.frag", "main"},
+ {"hlsl.clipdistance-1.frag", "main"},
+ {"hlsl.clipdistance-1.geom", "main"},
+ {"hlsl.clipdistance-1.vert", "main"},
+ {"hlsl.clipdistance-2.frag", "main"},
+ {"hlsl.clipdistance-2.geom", "main"},
+ {"hlsl.clipdistance-2.vert", "main"},
+ {"hlsl.clipdistance-3.frag", "main"},
+ {"hlsl.clipdistance-3.geom", "main"},
+ {"hlsl.clipdistance-3.vert", "main"},
+ {"hlsl.clipdistance-4.frag", "main"},
+ {"hlsl.clipdistance-4.geom", "main"},
+ {"hlsl.clipdistance-4.vert", "main"},
+ {"hlsl.clipdistance-5.frag", "main"},
+ {"hlsl.clipdistance-5.vert", "main"},
+ {"hlsl.clipdistance-6.frag", "main"},
+ {"hlsl.clipdistance-6.vert", "main"},
+ {"hlsl.clipdistance-7.frag", "main"},
+ {"hlsl.clipdistance-7.vert", "main"},
+ {"hlsl.clipdistance-8.frag", "main"},
+ {"hlsl.clipdistance-8.vert", "main"},
+ {"hlsl.clipdistance-9.frag", "main"},
+ {"hlsl.clipdistance-9.vert", "main"},
{"hlsl.comparison.vec.frag", "main"},
{"hlsl.conditional.frag", "PixelShaderFunction"},
+ {"hlsl.constantbuffer.frag", "main"},
+ {"hlsl.constructArray.vert", "main"},
{"hlsl.constructexpr.frag", "main"},
+ {"hlsl.constructimat.frag", "main"},
{"hlsl.depthGreater.frag", "PixelShaderFunction"},
{"hlsl.depthLess.frag", "PixelShaderFunction"},
{"hlsl.discard.frag", "PixelShaderFunction"},
{"hlsl.doLoop.frag", "PixelShaderFunction"},
{"hlsl.emptystructreturn.frag", "main"},
{"hlsl.emptystructreturn.vert", "main"},
+ {"hlsl.emptystruct.init.vert", "main"},
{"hlsl.entry-in.frag", "PixelShaderFunction"},
{"hlsl.entry-out.frag", "PixelShaderFunction"},
+ {"hlsl.fraggeom.frag", "main"},
{"hlsl.float1.frag", "PixelShaderFunction"},
{"hlsl.float4.frag", "PixelShaderFunction"},
{"hlsl.flatten.return.frag", "main"},
+ {"hlsl.flattenOpaque.frag", "main"},
+ {"hlsl.flattenOpaqueInit.vert", "main"},
+ {"hlsl.flattenOpaqueInitMix.vert", "main"},
+ {"hlsl.flattenSubset.frag", "main"},
+ {"hlsl.flattenSubset2.frag", "main"},
{"hlsl.forLoop.frag", "PixelShaderFunction"},
{"hlsl.gather.array.dx10.frag", "main"},
{"hlsl.gather.basic.dx10.frag", "main"},
@@ -122,14 +171,28 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.getdimensions.rw.dx10.frag", "main"},
{"hlsl.getdimensions.dx10.vert", "main"},
{"hlsl.getsampleposition.dx10.frag", "main"},
+ {"hlsl.global-const-init.frag", "main"},
+ {"hlsl.gs-hs-mix.tesc", "HSMain"},
+ {"hlsl.domain.1.tese", "main"},
+ {"hlsl.domain.2.tese", "main"},
+ {"hlsl.domain.3.tese", "main"},
+ {"hlsl.function.frag", "main"},
{"hlsl.hull.1.tesc", "main"},
{"hlsl.hull.2.tesc", "main"},
+ {"hlsl.hull.3.tesc", "main"},
+ {"hlsl.hull.4.tesc", "main"},
+ {"hlsl.hull.5.tesc", "main"},
{"hlsl.hull.void.tesc", "main"},
+ {"hlsl.hull.ctrlpt-1.tesc", "main"},
+ {"hlsl.hull.ctrlpt-2.tesc", "main"},
{"hlsl.identifier.sample.frag", "main"},
{"hlsl.if.frag", "PixelShaderFunction"},
+ {"hlsl.implicitBool.frag", "main"},
+ {"hlsl.inf.vert", "main"},
{"hlsl.inoutquals.frag", "main"},
{"hlsl.init.frag", "ShaderFunction"},
{"hlsl.init2.frag", "main"},
+ {"hlsl.isfinite.frag", "main"},
{"hlsl.intrinsics.barriers.comp", "ComputeShaderFunction"},
{"hlsl.intrinsics.comp", "ComputeShaderFunction"},
{"hlsl.intrinsics.evalfns.frag", "main"},
@@ -138,6 +201,7 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.intrinsics.f1632.frag", "main"},
{"hlsl.intrinsics.f3216.frag", "main"},
{"hlsl.intrinsics.frag", "main"},
+ {"hlsl.intrinsic.frexp.frag", "main"},
{"hlsl.intrinsics.lit.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"},
{"hlsl.intrinsics.negative.frag", "PixelShaderFunction"},
@@ -157,11 +221,22 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.load.rwtexture.array.dx10.frag", "main"},
{"hlsl.load.offset.dx10.frag", "main"},
{"hlsl.load.offsetarray.dx10.frag", "main"},
- {"hlsl.logical.unary.frag", "main"},
+ {"hlsl.localStructuredBuffer.comp", "main"},
{"hlsl.logical.binary.frag", "main"},
{"hlsl.logical.binary.vec.frag", "main"},
+ {"hlsl.logicalConvert.frag", "main"},
+ {"hlsl.logical.unary.frag", "main"},
+ {"hlsl.loopattr.frag", "main"},
+ {"hlsl.matpack-pragma.frag", "main"},
+ {"hlsl.mip.operator.frag", "main"},
+ {"hlsl.mip.negative.frag", "main"},
+ {"hlsl.mip.negative2.frag", "main"},
+ {"hlsl.namespace.frag", "main"},
+ {"hlsl.nonint-index.frag", "main"},
{"hlsl.matNx1.frag", "main"},
+ {"hlsl.matpack-1.frag", "main"},
{"hlsl.matrixSwizzle.vert", "ShaderFunction"},
+ {"hlsl.memberFunCall.frag", "main"},
{"hlsl.mintypes.frag", "main"},
{"hlsl.multiEntry.vert", "RealEntrypoint"},
{"hlsl.multiReturn.frag", "main"},
@@ -170,9 +245,12 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.numericsuffixes.frag", "main"},
{"hlsl.numthreads.comp", "main_aux1"},
{"hlsl.overload.frag", "PixelShaderFunction"},
+ {"hlsl.opaque-type-bug.frag", "main"},
{"hlsl.params.default.frag", "main"},
{"hlsl.params.default.negative.frag", "main"},
{"hlsl.partialInit.frag", "PixelShaderFunction"},
+ {"hlsl.partialFlattenLocal.vert", "main"},
+ {"hlsl.pp.vert", "main"},
{"hlsl.pp.line.frag", "main"},
{"hlsl.precise.frag", "main"},
{"hlsl.promote.atomic.frag", "main"},
@@ -195,8 +273,11 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.samplebias.offsetarray.dx10.frag", "main"},
{"hlsl.samplecmp.array.dx10.frag", "main"},
{"hlsl.samplecmp.basic.dx10.frag", "main"},
+ {"hlsl.samplecmp.dualmode.frag", "main"},
{"hlsl.samplecmp.offset.dx10.frag", "main"},
{"hlsl.samplecmp.offsetarray.dx10.frag", "main"},
+ {"hlsl.samplecmp.negative.frag", "main"},
+ {"hlsl.samplecmp.negative2.frag", "main"},
{"hlsl.samplecmplevelzero.array.dx10.frag", "main"},
{"hlsl.samplecmplevelzero.basic.dx10.frag", "main"},
{"hlsl.samplecmplevelzero.offset.dx10.frag", "main"},
@@ -212,9 +293,12 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.samplelevel.offset.dx10.frag", "main"},
{"hlsl.samplelevel.offsetarray.dx10.frag", "main"},
{"hlsl.sample.sub-vec4.dx10.frag", "main"},
+ {"hlsl.scalar-length.frag", "main"},
+ {"hlsl.scalarCast.vert", "main"},
{"hlsl.semicolons.frag", "main"},
{"hlsl.shapeConv.frag", "main"},
{"hlsl.shapeConvRet.frag", "main"},
+ {"hlsl.snorm.uav.comp", "main"},
{"hlsl.staticMemberFunction.frag", "main"},
{"hlsl.stringtoken.frag", "main"},
{"hlsl.string.frag", "main"},
@@ -228,38 +312,56 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.structarray.flatten.frag", "main"},
{"hlsl.structarray.flatten.geom", "main"},
{"hlsl.structbuffer.frag", "main"},
+ {"hlsl.structbuffer.append.frag", "main"},
+ {"hlsl.structbuffer.append.fn.frag", "main"},
{"hlsl.structbuffer.atomics.frag", "main"},
{"hlsl.structbuffer.byte.frag", "main"},
{"hlsl.structbuffer.coherent.frag", "main"},
+ {"hlsl.structbuffer.floatidx.comp", "main"},
+ {"hlsl.structbuffer.incdec.frag", "main"},
{"hlsl.structbuffer.fn.frag", "main"},
+ {"hlsl.structbuffer.fn2.comp", "main"},
{"hlsl.structbuffer.rw.frag", "main"},
{"hlsl.structbuffer.rwbyte.frag", "main"},
{"hlsl.structin.vert", "main"},
{"hlsl.structIoFourWay.frag", "main"},
{"hlsl.structStructName.frag", "main"},
+ {"hlsl.subpass.frag", "main"},
+ {"hlsl.synthesizeInput.frag", "main"},
+ {"hlsl.texturebuffer.frag", "main"},
+ {"hlsl.texture.struct.frag", "main"},
+ {"hlsl.texture.subvec4.frag", "main"},
{"hlsl.this.frag", "main"},
{"hlsl.intrinsics.vert", "VertexShaderFunction"},
+ {"hlsl.intrinsic.frexp.vert", "VertexShaderFunction"},
{"hlsl.matType.frag", "PixelShaderFunction"},
{"hlsl.matType.bool.frag", "main"},
{"hlsl.matType.int.frag", "main"},
{"hlsl.max.frag", "PixelShaderFunction"},
+ {"hlsl.preprocessor.frag", "main"},
{"hlsl.precedence.frag", "PixelShaderFunction"},
{"hlsl.precedence2.frag", "PixelShaderFunction"},
+ {"hlsl.scalar2matrix.frag", "main"},
{"hlsl.semantic.geom", "main"},
{"hlsl.semantic.vert", "main"},
+ {"hlsl.semantic-1.vert", "main"},
{"hlsl.scope.frag", "PixelShaderFunction"},
{"hlsl.sin.frag", "PixelShaderFunction"},
{"hlsl.struct.frag", "PixelShaderFunction"},
{"hlsl.switch.frag", "PixelShaderFunction"},
{"hlsl.swizzle.frag", "PixelShaderFunction"},
+ {"hlsl.target.frag", "main"},
+ {"hlsl.targetStruct1.frag", "main"},
+ {"hlsl.targetStruct2.frag", "main"},
{"hlsl.templatetypes.frag", "PixelShaderFunction"},
{"hlsl.tx.bracket.frag", "main"},
+ {"hlsl.tx.overload.frag", "main"},
{"hlsl.type.half.frag", "main"},
{"hlsl.type.identifier.frag", "main"},
{"hlsl.typeGraphCopy.vert", "main"},
{"hlsl.typedef.frag", "PixelShaderFunction"},
{"hlsl.whileLoop.frag", "PixelShaderFunction"},
- {"hlsl.void.frag", "PixelShaderFunction"},
+ {"hlsl.void.frag", "PixelShaderFunction"}
}),
FileNameAsCustomTestSuffix
);
@@ -270,10 +372,30 @@ INSTANTIATE_TEST_CASE_P(
ToSpirv, HlslCompileAndFlattenTest,
::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
{"hlsl.array.flatten.frag", "main"},
+ {"hlsl.partialFlattenMixed.vert", "main"},
}),
FileNameAsCustomTestSuffix
);
+// clang-format on
+#ifdef ENABLE_OPT
+// clang-format off
+INSTANTIATE_TEST_CASE_P(
+ ToSpirv, HlslLegalizeTest,
+ ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
+ {"hlsl.aliasOpaque.frag", "main"},
+ {"hlsl.flattenOpaque.frag", "main"},
+ {"hlsl.flattenOpaqueInit.vert", "main"},
+ {"hlsl.flattenOpaqueInitMix.vert", "main"},
+ {"hlsl.flattenSubset.frag", "main"},
+ {"hlsl.flattenSubset2.frag", "main"},
+ {"hlsl.partialFlattenLocal.vert", "main"},
+ {"hlsl.partialFlattenMixed.vert", "main"}
+ }),
+ FileNameAsCustomTestSuffix
+);
// clang-format on
+#endif
+
} // anonymous namespace
} // namespace glslangtest
diff --git a/3rdparty/bgfx/3rdparty/glslang/gtests/Link.FromFile.Vk.cpp b/3rdparty/bgfx/3rdparty/glslang/gtests/Link.FromFile.Vk.cpp
index 6ce1fe9f79a..6e1969a2eb3 100644
--- a/3rdparty/bgfx/3rdparty/glslang/gtests/Link.FromFile.Vk.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/gtests/Link.FromFile.Vk.cpp
@@ -60,6 +60,7 @@ TEST_P(LinkTestVulkan, FromFile)
shaders.emplace_back(
new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i]))));
auto* shader = shaders.back().get();
+ shader->setAutoMapLocations(true);
compile(shader, contents, "", controls);
result.shaderResults.push_back(
{fileNames[i], shader->getInfoLog(), shader->getInfoDebugLog()});
diff --git a/3rdparty/bgfx/3rdparty/glslang/gtests/Remap.FromFile.cpp b/3rdparty/bgfx/3rdparty/glslang/gtests/Remap.FromFile.cpp
index 9f25a6f2277..50bce8e357c 100644
--- a/3rdparty/bgfx/3rdparty/glslang/gtests/Remap.FromFile.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/gtests/Remap.FromFile.cpp
@@ -89,6 +89,7 @@ INSTANTIATE_TEST_CASE_P(
{ "remap.basic.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
{ "remap.basic.dcefunc.frag", "main", Source::GLSL, spv::spirvbin_t::DCE_FUNCS },
{ "remap.basic.strip.frag", "main", Source::GLSL, spv::spirvbin_t::STRIP },
+ { "remap.specconst.comp", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
{ "remap.switch.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
{ "remap.switch.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
{ "remap.literal64.none.spv", "main", Source::GLSL, spv::spirvbin_t::NONE },
diff --git a/3rdparty/bgfx/3rdparty/glslang/gtests/Spv.FromFile.cpp b/3rdparty/bgfx/3rdparty/glslang/gtests/Spv.FromFile.cpp
index a8d4b017e79..4a396273dd1 100644
--- a/3rdparty/bgfx/3rdparty/glslang/gtests/Spv.FromFile.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/gtests/Spv.FromFile.cpp
@@ -75,6 +75,7 @@ using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam<std::st
#ifdef NV_EXTENSIONS
using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
#endif
+using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam<std::string>>;
// Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully
// generate SPIR-V.
@@ -172,6 +173,15 @@ TEST_P(CompileVulkanToSpirvTestNV, FromFile)
}
#endif
+TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile)
+{
+ loadCompileUpgradeTextureToSampledTextureAndDropSamplersAndCheck(GlobalTestSettings.testRoot,
+ GetParam(),
+ Source::GLSL,
+ Semantics::Vulkan,
+ Target::Spv);
+}
+
// clang-format off
INSTANTIATE_TEST_CASE_P(
Glsl, CompileVulkanToSpirvTest,
@@ -216,6 +226,8 @@ INSTANTIATE_TEST_CASE_P(
"spv.aggOps.frag",
"spv.always-discard.frag",
"spv.always-discard2.frag",
+ "spv.arbPostDepthCoverage.frag",
+ "spv.arbPostDepthCoverage_Error.frag",
"spv.bitCast.frag",
"spv.bool.vert",
"spv.boolInBlock.frag",
@@ -232,6 +244,8 @@ INSTANTIATE_TEST_CASE_P(
"spv.drawParams.vert",
"spv.doWhileLoop.frag",
"spv.earlyReturnDiscard.frag",
+ "spv.extPostDepthCoverage.frag",
+ "spv.extPostDepthCoverage_Error.frag",
"spv.flowControl.frag",
"spv.forLoop.frag",
"spv.forwardFun.frag",
@@ -261,13 +275,19 @@ INSTANTIATE_TEST_CASE_P(
"spv.noWorkgroup.comp",
"spv.offsets.frag",
"spv.Operations.frag",
+ "spv.paramMemory.frag",
"spv.precision.frag",
+ "spv.precisionNonESSamp.frag",
"spv.prepost.frag",
"spv.qualifiers.vert",
+ "spv.sample.frag",
+ "spv.sampleId.frag",
+ "spv.samplePosition.frag",
"spv.sampleMaskOverrideCoverage.frag",
"spv.shaderBallot.comp",
"spv.shaderDrawParams.vert",
"spv.shaderGroupVote.comp",
+ "spv.shaderStencilExport.frag",
"spv.shiftOps.frag",
"spv.simpleFunctionCall.frag",
"spv.simpleMat.vert",
@@ -283,6 +303,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.test.vert",
"spv.texture.frag",
"spv.texture.vert",
+ "spv.textureBuffer.vert",
"spv.image.frag",
"spv.types.frag",
"spv.uint.frag",
@@ -303,6 +324,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.specConstant.comp",
"spv.specConstantComposite.vert",
"spv.specConstantOperations.vert",
+ "spv.storageBuffer.vert",
"spv.precise.tese",
"spv.precise.tesc",
})),
@@ -316,10 +338,12 @@ INSTANTIATE_TEST_CASE_P(
{ "spv.register.autoassign.frag", "main_ep", 5, 10, 0, 20, 30, true, false },
{ "spv.register.noautoassign.frag", "main_ep", 5, 10, 0, 15, 30, false, false },
{ "spv.register.autoassign-2.frag", "main", 5, 10, 0, 15, 30, true, true },
+ { "spv.register.subpass.frag", "main", 0, 20, 0, 0, 0, true, true },
{ "spv.buffer.autoassign.frag", "main", 5, 10, 0, 15, 30, true, true },
{ "spv.ssbo.autoassign.frag", "main", 5, 10, 0, 15, 30, true, true },
+ { "spv.ssboAlias.frag", "main", 0, 0, 0, 0, 83, true, false },
{ "spv.rw.autoassign.frag", "main", 5, 10, 20, 15, 30, true, true },
- { "spv.register.autoassign.rangetest.frag", "main",
+ { "spv.register.autoassign.rangetest.frag", "main",
glslang::TQualifier::layoutBindingEnd-2,
glslang::TQualifier::layoutBindingEnd+5,
20, 30, true, false },
@@ -341,9 +365,13 @@ INSTANTIATE_TEST_CASE_P(
INSTANTIATE_TEST_CASE_P(
Glsl, CompileOpenGLToSpirvTest,
::testing::ValuesIn(std::vector<std::string>({
+ "spv.460.frag",
+ "spv.460.vert",
+ "spv.460.comp",
"spv.atomic.comp",
"spv.glFragColor.frag",
"spv.specConst.vert",
+ "spv.OVR_multiview.vert",
})),
FileNameAsCustomTestSuffix
);
@@ -383,7 +411,11 @@ INSTANTIATE_TEST_CASE_P(
Glsl, CompileVulkanToSpirvTestAMD,
::testing::ValuesIn(std::vector<std::string>({
"spv.float16.frag",
- "spv.shaderBallotAMD.comp"
+ "spv.imageLoadStoreLod.frag",
+ "spv.int16.frag",
+ "spv.shaderBallotAMD.comp",
+ "spv.shaderFragMaskAMD.frag",
+ "spv.textureGatherBiasLod.frag",
})),
FileNameAsCustomTestSuffix
);
@@ -401,10 +433,19 @@ INSTANTIATE_TEST_CASE_P(
"spv.stereoViewRendering.tesc",
"spv.multiviewPerViewAttributes.vert",
"spv.multiviewPerViewAttributes.tesc",
+ "spv.atomicInt64.comp",
})),
FileNameAsCustomTestSuffix
);
#endif
+
+INSTANTIATE_TEST_CASE_P(
+ Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest,
+ ::testing::ValuesIn(std::vector<std::string>({
+ "spv.texture.sampler.transform.frag",
+ })),
+ FileNameAsCustomTestSuffix
+);
// clang-format on
} // anonymous namespace
diff --git a/3rdparty/bgfx/3rdparty/glslang/gtests/TestFixture.h b/3rdparty/bgfx/3rdparty/glslang/gtests/TestFixture.h
index 38ec54c63bc..2dac99bca24 100644
--- a/3rdparty/bgfx/3rdparty/glslang/gtests/TestFixture.h
+++ b/3rdparty/bgfx/3rdparty/glslang/gtests/TestFixture.h
@@ -197,11 +197,15 @@ public:
GlslangResult compileAndLink(
const std::string shaderName, const std::string& code,
const std::string& entryPointName, EShMessages controls,
- bool flattenUniformArrays = false)
+ bool flattenUniformArrays = false,
+ EShTextureSamplerTransformMode texSampTransMode = EShTexSampTransKeep,
+ bool disableOptimizer = true)
{
const EShLanguage kind = GetShaderStage(GetSuffix(shaderName));
glslang::TShader shader(kind);
+ shader.setAutoMapLocations(true);
+ shader.setTextureSamplerTransformMode(texSampTransMode);
shader.setFlattenUniformArrays(flattenUniformArrays);
bool success = compile(&shader, code, entryPointName, controls);
@@ -214,8 +218,10 @@ public:
if (success && (controls & EShMsgSpvRules)) {
std::vector<uint32_t> spirv_binary;
+ glslang::SpvOptions options;
+ options.disableOptimizer = disableOptimizer;
glslang::GlslangToSpv(*program.getIntermediate(kind),
- spirv_binary, &logger);
+ spirv_binary, &logger, &options);
std::ostringstream disassembly_stream;
spv::Parameterize();
@@ -254,6 +260,7 @@ public:
shader.setShiftUboBinding(baseUboBinding);
shader.setShiftSsboBinding(baseSsboBinding);
shader.setAutoMapBindings(autoMapBindings);
+ shader.setAutoMapLocations(true);
shader.setFlattenUniformArrays(flattenUniformArrays);
bool success = compile(&shader, code, entryPointName, controls);
@@ -295,6 +302,8 @@ public:
const EShLanguage kind = GetShaderStage(GetSuffix(shaderName));
glslang::TShader shader(kind);
+ shader.setAutoMapLocations(true);
+
bool success = compile(&shader, code, entryPointName, controls);
glslang::TProgram program;
@@ -375,18 +384,20 @@ public:
Source source,
Semantics semantics,
Target target,
- const std::string& entryPointName="")
+ const std::string& entryPointName="",
+ const std::string& baseDir="/baseResults/",
+ const bool disableOptimizer = true)
{
const std::string inputFname = testDir + "/" + testName;
const std::string expectedOutputFname =
- testDir + "/baseResults/" + testName + ".out";
+ testDir + baseDir + testName + ".out";
std::string input, expectedOutput;
tryLoadFile(inputFname, "input", &input);
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
const EShMessages controls = DeriveOptions(source, semantics, target);
- GlslangResult result = compileAndLink(testName, input, entryPointName, controls);
+ GlslangResult result = compileAndLink(testName, input, entryPointName, controls, false, EShTexSampTransKeep, disableOptimizer);
// Generate the hybrid output in the way of glslangValidator.
std::ostringstream stream;
@@ -566,6 +577,31 @@ public:
expectedErrorFname);
}
+ void loadCompileUpgradeTextureToSampledTextureAndDropSamplersAndCheck(const std::string& testDir,
+ const std::string& testName,
+ Source source,
+ Semantics semantics,
+ Target target,
+ const std::string& entryPointName = "")
+ {
+ const std::string inputFname = testDir + "/" + testName;
+ const std::string expectedOutputFname = testDir + "/baseResults/" + testName + ".out";
+ std::string input, expectedOutput;
+
+ tryLoadFile(inputFname, "input", &input);
+ tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
+
+ const EShMessages controls = DeriveOptions(source, semantics, target);
+ GlslangResult result = compileAndLink(testName, input, entryPointName, controls, false, EShTexSampTransUpgradeTextureRemoveSampler);
+
+ // Generate the hybrid output in the way of glslangValidator.
+ std::ostringstream stream;
+ outputResultToStream(&stream, result, controls);
+
+ checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
+ expectedOutputFname);
+ }
+
private:
const int defaultVersion;
const EProfile defaultProfile;
diff --git a/3rdparty/bgfx/3rdparty/glslang/hlsl/CMakeLists.txt b/3rdparty/bgfx/3rdparty/glslang/hlsl/CMakeLists.txt
index ec5f1a569ea..98dfad7c963 100644
--- a/3rdparty/bgfx/3rdparty/glslang/hlsl/CMakeLists.txt
+++ b/3rdparty/bgfx/3rdparty/glslang/hlsl/CMakeLists.txt
@@ -7,7 +7,7 @@ set(SOURCES
hlslGrammar.cpp
hlslParseables.cpp)
- set(HEADERS
+set(HEADERS
hlslAttributes.h
hlslParseHelper.h
hlslTokens.h
@@ -19,10 +19,13 @@ set(SOURCES
add_library(HLSL STATIC ${SOURCES} ${HEADERS})
set_property(TARGET HLSL PROPERTY FOLDER hlsl)
+set_property(TARGET HLSL PROPERTY POSITION_INDEPENDENT_CODE ON)
if(WIN32)
source_group("Source" FILES ${SOURCES} ${HEADERS})
endif(WIN32)
-install(TARGETS HLSL
- ARCHIVE DESTINATION lib)
+if(ENABLE_GLSLANG_INSTALL)
+ install(TARGETS HLSL
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslAttributes.cpp b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslAttributes.cpp
index df370468890..fccf6c18775 100644
--- a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslAttributes.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslAttributes.cpp
@@ -36,15 +36,34 @@
#include "hlslAttributes.h"
#include <cstdlib>
#include <cctype>
+#include <algorithm>
namespace glslang {
// Map the given string to an attribute enum from TAttributeType,
// or EatNone if invalid.
- TAttributeType TAttributeMap::attributeFromName(const TString& name)
+ TAttributeType TAttributeMap::attributeFromName(const TString& nameSpace, const TString& name)
{
// These are case insensitive.
TString lowername(name);
std::transform(lowername.begin(), lowername.end(), lowername.begin(), ::tolower);
+ TString lowernameSpace(nameSpace);
+ std::transform(lowernameSpace.begin(), lowernameSpace.end(), lowernameSpace.begin(), ::tolower);
+
+ // handle names within a namespace
+
+ if (lowernameSpace == "vk") {
+ if (lowername == "input_attachment_index")
+ return EatInputAttachment;
+ else if (lowername == "location")
+ return EatLocation;
+ else if (lowername == "binding")
+ return EatBinding;
+ else if (lowername == "global_cbuffer_binding")
+ return EatGlobalBinding;
+ } else if (lowernameSpace.size() > 0)
+ return EatNone;
+
+ // handle names with no namespace
if (lowername == "allow_uav_condition")
return EatAllow_uav_condition;
@@ -80,18 +99,20 @@ namespace glslang {
return EatPatchConstantFunc;
else if (lowername == "unroll")
return EatUnroll;
+ else if (lowername == "loop")
+ return EatLoop;
else
return EatNone;
}
// Look up entry, inserting if it's not there, and if name is a valid attribute name
// as known by attributeFromName.
- TAttributeType TAttributeMap::setAttribute(const TString* name, TIntermAggregate* value)
+ TAttributeType TAttributeMap::setAttribute(const TString& nameSpace, const TString* name, TIntermAggregate* value)
{
if (name == nullptr)
return EatNone;
- const TAttributeType attr = attributeFromName(*name);
+ const TAttributeType attr = attributeFromName(nameSpace, *name);
if (attr != EatNone)
attributes[attr] = value;
@@ -107,4 +128,57 @@ namespace glslang {
return (entry == attributes.end()) ? nullptr : entry->second;
}
+ // True if entry exists in map (even if value is nullptr)
+ bool TAttributeMap::contains(TAttributeType attr) const
+ {
+ return attributes.find(attr) != attributes.end();
+ }
+
+ // extract integers out of attribute arguments stored in attribute aggregate
+ bool TAttributeMap::getInt(TAttributeType attr, int& value, int argNum) const
+ {
+ const TConstUnion* intConst = getConstUnion(attr, EbtInt, argNum);
+
+ if (intConst == nullptr)
+ return false;
+
+ value = intConst->getIConst();
+ return true;
+ };
+
+ // extract strings out of attribute arguments stored in attribute aggregate.
+ // convert to lower case if converToLower is true (for case-insensitive compare convenience)
+ bool TAttributeMap::getString(TAttributeType attr, TString& value, int argNum, bool convertToLower) const
+ {
+ const TConstUnion* stringConst = getConstUnion(attr, EbtString, argNum);
+
+ if (stringConst == nullptr)
+ return false;
+
+ value = *stringConst->getSConst();
+
+ // Convenience.
+ if (convertToLower)
+ std::transform(value.begin(), value.end(), value.begin(), ::tolower);
+
+ return true;
+ };
+
+ // Helper to get attribute const union. Returns nullptr on failure.
+ const TConstUnion* TAttributeMap::getConstUnion(TAttributeType attr, TBasicType basicType, int argNum) const
+ {
+ const TIntermAggregate* attrAgg = (*this)[attr];
+ if (attrAgg == nullptr)
+ return nullptr;
+
+ if (argNum >= int(attrAgg->getSequence().size()))
+ return nullptr;
+
+ const TConstUnion* constVal = &attrAgg->getSequence()[argNum]->getAsConstantUnion()->getConstArray()[0];
+ if (constVal == nullptr || constVal->getType() != basicType)
+ return nullptr;
+
+ return constVal;
+ }
+
} // end namespace glslang
diff --git a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslAttributes.h b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslAttributes.h
index ad44d2ab199..1fdb4ba0453 100644
--- a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslAttributes.h
+++ b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslAttributes.h
@@ -62,6 +62,11 @@ namespace glslang {
EatPatchConstantFunc,
EatPatchSize,
EatUnroll,
+ EatLoop,
+ EatBinding,
+ EatGlobalBinding,
+ EatLocation,
+ EatInputAttachment
};
}
@@ -81,14 +86,26 @@ namespace glslang {
public:
// Search for and potentially add the attribute into the map. Return the
// attribute type enum for it, if found, else EatNone.
- TAttributeType setAttribute(const TString* name, TIntermAggregate* value);
+ TAttributeType setAttribute(const TString& nameSpace, const TString* name, TIntermAggregate* value);
// Const lookup: search for (but do not modify) the attribute in the map.
const TIntermAggregate* operator[](TAttributeType) const;
+ // True if entry exists in map (even if value is nullptr)
+ bool contains(TAttributeType) const;
+
+ // Obtain attribute as integer
+ bool getInt(TAttributeType attr, int& value, int argNum = 0) const;
+
+ // Obtain attribute as string, with optional to-lower transform
+ bool getString(TAttributeType attr, TString& value, int argNum = 0, bool convertToLower = true) const;
+
protected:
+ // Helper to get attribute const union
+ const TConstUnion* getConstUnion(TAttributeType attr, TBasicType, int argNum) const;
+
// Find an attribute enum given its name.
- static TAttributeType attributeFromName(const TString&);
+ static TAttributeType attributeFromName(const TString& nameSpace, const TString& name);
std::unordered_map<TAttributeType, TIntermAggregate*> attributes;
};
diff --git a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslGrammar.cpp b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslGrammar.cpp
index 4f6f8030c97..cf0bf0512c7 100644
--- a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslGrammar.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslGrammar.cpp
@@ -107,26 +107,14 @@ bool HlslGrammar::acceptIdentifier(HlslToken& idToken)
// valid identifier, nor is "linear". This code special cases the known instances of this, so
// e.g, "int sample;" or "float float;" is accepted. Other cases can be added here if needed.
- TString* idString = nullptr;
- switch (peek()) {
- case EHTokSample: idString = NewPoolTString("sample"); break;
- case EHTokHalf: idString = NewPoolTString("half"); break;
- case EHTokBool: idString = NewPoolTString("bool"); break;
- case EHTokFloat: idString = NewPoolTString("float"); break;
- case EHTokDouble: idString = NewPoolTString("double"); break;
- case EHTokInt: idString = NewPoolTString("int"); break;
- case EHTokUint: idString = NewPoolTString("uint"); break;
- case EHTokMin16float: idString = NewPoolTString("min16float"); break;
- case EHTokMin10float: idString = NewPoolTString("min10float"); break;
- case EHTokMin16int: idString = NewPoolTString("min16int"); break;
- case EHTokMin12int: idString = NewPoolTString("min12int"); break;
- default:
+ const char* idString = getTypeString(peek());
+ if (idString == nullptr)
return false;
- }
- token.string = idString;
+ token.string = NewPoolTString(idString);
token.tokenClass = EHTokIdentifier;
- idToken = token;
+ idToken = token;
+ typeIdentifiers = true;
advanceToken();
@@ -134,22 +122,17 @@ bool HlslGrammar::acceptIdentifier(HlslToken& idToken)
}
// compilationUnit
-// : list of externalDeclaration
-// | SEMICOLONS
+// : declaration_list EOF
//
bool HlslGrammar::acceptCompilationUnit()
{
TIntermNode* unitNode = nullptr;
- while (! peekTokenClass(EHTokNone)) {
- // HLSL allows semicolons between global declarations, e.g, between functions.
- if (acceptTokenClass(EHTokSemicolon))
- continue;
+ if (! acceptDeclarationList(unitNode))
+ return false;
- // externalDeclaration
- if (! acceptDeclaration(unitNode))
- return false;
- }
+ if (! peekTokenClass(EHTokNone))
+ return false;
// set root of AST
if (unitNode && !unitNode->getAsAggregate())
@@ -159,6 +142,34 @@ bool HlslGrammar::acceptCompilationUnit()
return true;
}
+// Recognize the following, but with the extra condition that it can be
+// successfully terminated by EOF or '}'.
+//
+// declaration_list
+// : list of declaration_or_semicolon followed by EOF or RIGHT_BRACE
+//
+// declaration_or_semicolon
+// : declaration
+// : SEMICOLON
+//
+bool HlslGrammar::acceptDeclarationList(TIntermNode*& nodeList)
+{
+ do {
+ // HLSL allows extra semicolons between global declarations
+ do { } while (acceptTokenClass(EHTokSemicolon));
+
+ // EOF or RIGHT_BRACE
+ if (peekTokenClass(EHTokNone) || peekTokenClass(EHTokRightBrace))
+ return true;
+
+ // declaration
+ if (! acceptDeclaration(nodeList))
+ return false;
+ } while (true);
+
+ return true;
+}
+
// sampler_state
// : LEFT_BRACE [sampler_state_assignment ... ] RIGHT_BRACE
//
@@ -284,8 +295,13 @@ bool HlslGrammar::acceptSamplerDeclarationDX9(TType& /*type*/)
}
// declaration
+// : attributes attributed_declaration
+// | NAMESPACE IDENTIFIER LEFT_BRACE declaration_list RIGHT_BRACE
+//
+// attributed_declaration
// : sampler_declaration_dx9 post_decls SEMICOLON
-// | fully_specified_type declarator_list SEMICOLON
+// | fully_specified_type // for cbuffer/tbuffer
+// | fully_specified_type declarator_list SEMICOLON // for non cbuffer/tbuffer
// | fully_specified_type identifier function_parameters post_decls compound_statement // function definition
// | fully_specified_type identifier sampler_state post_decls compound_statement // sampler definition
// | typedef declaration
@@ -314,6 +330,30 @@ bool HlslGrammar::acceptSamplerDeclarationDX9(TType& /*type*/)
//
bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
{
+ // NAMESPACE IDENTIFIER LEFT_BRACE declaration_list RIGHT_BRACE
+ if (acceptTokenClass(EHTokNamespace)) {
+ HlslToken namespaceToken;
+ if (!acceptIdentifier(namespaceToken)) {
+ expected("namespace name");
+ return false;
+ }
+ parseContext.pushNamespace(*namespaceToken.string);
+ if (!acceptTokenClass(EHTokLeftBrace)) {
+ expected("{");
+ return false;
+ }
+ if (!acceptDeclarationList(nodeList)) {
+ expected("declaration list");
+ return false;
+ }
+ if (!acceptTokenClass(EHTokRightBrace)) {
+ expected("}");
+ return false;
+ }
+ parseContext.popNamespace();
+ return true;
+ }
+
bool declarator_list = false; // true when processing comma separation
// attributes
@@ -334,23 +374,35 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
// if (acceptSamplerDeclarationDX9(declaredType))
// return true;
+ bool forbidDeclarators = (peekTokenClass(EHTokCBuffer) || peekTokenClass(EHTokTBuffer));
// fully_specified_type
if (! acceptFullySpecifiedType(declaredType, nodeList))
return false;
- // identifier
+ parseContext.transferTypeAttributes(declarator.attributes, declaredType);
+
+ // cbuffer and tbuffer end with the closing '}'.
+ // No semicolon is included.
+ if (forbidDeclarators)
+ return true;
+
+ // declarator_list
+ // : declarator
+ // : identifier
HlslToken idToken;
TIntermAggregate* initializers = nullptr;
while (acceptIdentifier(idToken)) {
+ TString *fullName = idToken.string;
+ if (parseContext.symbolTable.atGlobalLevel())
+ parseContext.getFullNamespaceName(fullName);
if (peekTokenClass(EHTokLeftParen)) {
// looks like function parameters
- TString* fnName = idToken.string;
// Potentially rename shader entry point function. No-op most of the time.
- parseContext.renameShaderFunction(fnName);
+ parseContext.renameShaderFunction(fullName);
// function_parameters
- declarator.function = new TFunction(fnName, declaredType);
+ declarator.function = new TFunction(fullName, declaredType);
if (!acceptFunctionParameters(*declarator.function)) {
expected("function parameter list");
return false;
@@ -424,30 +476,31 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
// TODO: strings are not yet handled.
if (variableType.getBasicType() != EbtString && parseContext.getAnnotationNestingLevel() == 0) {
if (typedefDecl)
- parseContext.declareTypedef(idToken.loc, *idToken.string, variableType);
- else if (variableType.getBasicType() == EbtBlock)
- parseContext.declareBlock(idToken.loc, variableType, idToken.string);
- else {
+ parseContext.declareTypedef(idToken.loc, *fullName, variableType);
+ else if (variableType.getBasicType() == EbtBlock) {
+ parseContext.declareBlock(idToken.loc, variableType, fullName,
+ variableType.isArray() ? &variableType.getArraySizes() : nullptr);
+ parseContext.declareStructBufferCounter(idToken.loc, variableType, *fullName);
+ } else {
if (variableType.getQualifier().storage == EvqUniform && ! variableType.containsOpaque()) {
// this isn't really an individual variable, but a member of the $Global buffer
- parseContext.growGlobalUniformBlock(idToken.loc, variableType, *idToken.string);
+ parseContext.growGlobalUniformBlock(idToken.loc, variableType, *fullName);
} else {
// Declare the variable and add any initializer code to the AST.
// The top-level node is always made into an aggregate, as that's
// historically how the AST has been.
initializers = intermediate.growAggregate(initializers,
- parseContext.declareVariable(idToken.loc, *idToken.string, variableType, expressionNode),
+ parseContext.declareVariable(idToken.loc, *fullName, variableType, expressionNode),
idToken.loc);
}
}
}
}
- if (acceptTokenClass(EHTokComma)) {
+ // COMMA
+ if (acceptTokenClass(EHTokComma))
declarator_list = true;
- continue;
- }
- };
+ }
// The top-level initializer node is a sequence.
if (initializers != nullptr)
@@ -465,12 +518,13 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
// was actually an assignment such as "float = 4", where "float" is an identifier.
// We put the token back to let further parsing happen for cases where that may
// happen. This errors on the side of caution, and mostly triggers the error.
-
- if (peek() == EHTokAssign || peek() == EHTokLeftBracket || peek() == EHTokDot || peek() == EHTokComma)
+ if (peek() == EHTokAssign || peek() == EHTokLeftBracket || peek() == EHTokDot || peek() == EHTokComma) {
recedeToken();
- else
+ return false;
+ } else {
expected(";");
- return false;
+ return false;
+ }
}
return true;
@@ -551,7 +605,7 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList)
// the type was a block, which set some parts of the qualifier
parseContext.mergeQualifiers(type.getQualifier(), qualifier);
// further, it can create an anonymous instance of the block
- if (peekTokenClass(EHTokSemicolon))
+ if (peek() != EHTokIdentifier)
parseContext.declareBlock(loc, type);
} else {
// Some qualifiers are set when parsing the type. Merge those with
@@ -561,16 +615,15 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList)
qualifier.layoutFormat = type.getQualifier().layoutFormat;
qualifier.precision = type.getQualifier().precision;
- // Propagate sampler readonly qualifier for buffers
- if (type.getBasicType() == EbtSampler)
- qualifier.readonly = type.getQualifier().readonly;
-
- if (type.getQualifier().storage == EvqVaryingOut ||
+ if (type.getQualifier().storage == EvqOut ||
type.getQualifier().storage == EvqBuffer) {
qualifier.storage = type.getQualifier().storage;
qualifier.readonly = type.getQualifier().readonly;
}
+ if (type.isBuiltIn())
+ qualifier.builtIn = type.getQualifier().builtIn;
+
type.getQualifier() = qualifier;
}
@@ -632,10 +685,10 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier)
qualifier.noContraction = true;
break;
case EHTokIn:
- qualifier.storage = EvqIn;
+ qualifier.storage = (qualifier.storage == EvqOut) ? EvqInOut : EvqIn;
break;
case EHTokOut:
- qualifier.storage = EvqOut;
+ qualifier.storage = (qualifier.storage == EvqIn) ? EvqInOut : EvqOut;
break;
case EHTokInOut:
qualifier.storage = EvqInOut;
@@ -914,14 +967,14 @@ bool HlslGrammar::acceptOutputPrimitiveGeometry(TLayoutGeometry& geometry)
// : INPUTPATCH
// | OUTPUTPATCH
//
-bool HlslGrammar::acceptTessellationDeclType()
+bool HlslGrammar::acceptTessellationDeclType(TBuiltInVariable& patchType)
{
// read geometry type
const EHlslTokenClass tessType = peek();
switch (tessType) {
- case EHTokInputPatch: break;
- case EHTokOutputPatch: break;
+ case EHTokInputPatch: patchType = EbvInputPatch; break;
+ case EHTokOutputPatch: patchType = EbvOutputPatch; break;
default:
return false; // not a tessellation decl
}
@@ -935,7 +988,9 @@ bool HlslGrammar::acceptTessellationDeclType()
//
bool HlslGrammar::acceptTessellationPatchTemplateType(TType& type)
{
- if (! acceptTessellationDeclType())
+ TBuiltInVariable patchType;
+
+ if (! acceptTessellationDeclType(patchType))
return false;
if (! acceptTokenClass(EHTokLeftAngle))
@@ -962,6 +1017,7 @@ bool HlslGrammar::acceptTessellationPatchTemplateType(TType& type)
TArraySizes* arraySizes = new TArraySizes;
arraySizes->addInnerSize(size->getAsConstantUnion()->getConstArray()[0].getIConst());
type.newArraySizes(*arraySizes);
+ type.getQualifier().builtIn = patchType;
if (! acceptTokenClass(EHTokRightAngle)) {
expected("right angle bracket");
@@ -989,7 +1045,8 @@ bool HlslGrammar::acceptStreamOutTemplateType(TType& type, TLayoutGeometry& geom
return false;
}
- type.getQualifier().storage = EvqVaryingOut;
+ type.getQualifier().storage = EvqOut;
+ type.getQualifier().builtIn = EbvGsOutputStream;
if (! acceptTokenClass(EHTokRightAngle)) {
expected("right angle bracket");
@@ -1031,6 +1088,69 @@ bool HlslGrammar::acceptAnnotations(TQualifier&)
return true;
}
+// subpass input type
+// : SUBPASSINPUT
+// | SUBPASSINPUT VECTOR LEFT_ANGLE template_type RIGHT_ANGLE
+// | SUBPASSINPUTMS
+// | SUBPASSINPUTMS VECTOR LEFT_ANGLE template_type RIGHT_ANGLE
+bool HlslGrammar::acceptSubpassInputType(TType& type)
+{
+ // read subpass type
+ const EHlslTokenClass subpassInputType = peek();
+
+ bool multisample;
+
+ switch (subpassInputType) {
+ case EHTokSubpassInput: multisample = false; break;
+ case EHTokSubpassInputMS: multisample = true; break;
+ default:
+ return false; // not a subpass input declaration
+ }
+
+ advanceToken(); // consume the sampler type keyword
+
+ TType subpassType(EbtFloat, EvqUniform, 4); // default type is float4
+
+ if (acceptTokenClass(EHTokLeftAngle)) {
+ if (! acceptType(subpassType)) {
+ expected("scalar or vector type");
+ return false;
+ }
+
+ const TBasicType basicRetType = subpassType.getBasicType() ;
+
+ switch (basicRetType) {
+ case EbtFloat:
+ case EbtUint:
+ case EbtInt:
+ case EbtStruct:
+ break;
+ default:
+ unimplemented("basic type in subpass input");
+ return false;
+ }
+
+ if (! acceptTokenClass(EHTokRightAngle)) {
+ expected("right angle bracket");
+ return false;
+ }
+ }
+
+ const TBasicType subpassBasicType = subpassType.isStruct() ? (*subpassType.getStruct())[0].type->getBasicType()
+ : subpassType.getBasicType();
+
+ TSampler sampler;
+ sampler.setSubpass(subpassBasicType, multisample);
+
+ // Remember the declared return type. Function returns false on error.
+ if (!parseContext.setTextureReturnType(sampler, subpassType, token.loc))
+ return false;
+
+ type.shallowCopy(TType(sampler, EvqUniform));
+
+ return true;
+}
+
// sampler_type
// : SAMPLER
// | SAMPLER1D
@@ -1099,25 +1219,25 @@ bool HlslGrammar::acceptTextureType(TType& type)
bool array = false;
bool ms = false;
bool image = false;
- bool readonly = false;
+ bool combined = true;
switch (textureType) {
- case EHTokTexture1d: dim = Esd1D; break;
- case EHTokTexture1darray: dim = Esd1D; array = true; break;
- case EHTokTexture2d: dim = Esd2D; break;
- case EHTokTexture2darray: dim = Esd2D; array = true; break;
- case EHTokTexture3d: dim = Esd3D; break;
- case EHTokTextureCube: dim = EsdCube; break;
- case EHTokTextureCubearray: dim = EsdCube; array = true; break;
- case EHTokTexture2DMS: dim = Esd2D; ms = true; break;
- case EHTokTexture2DMSarray: dim = Esd2D; array = true; ms = true; break;
- case EHTokBuffer: dim = EsdBuffer; readonly=true; image=true; break;
- case EHTokRWBuffer: dim = EsdBuffer; image=true; break;
- case EHTokRWTexture1d: dim = Esd1D; array=false; image=true; break;
- case EHTokRWTexture1darray: dim = Esd1D; array=true; image=true; break;
- case EHTokRWTexture2d: dim = Esd2D; array=false; image=true; break;
- case EHTokRWTexture2darray: dim = Esd2D; array=true; image=true; break;
- case EHTokRWTexture3d: dim = Esd3D; array=false; image=true; break;
+ case EHTokBuffer: dim = EsdBuffer; combined = false; break;
+ case EHTokTexture1d: dim = Esd1D; break;
+ case EHTokTexture1darray: dim = Esd1D; array = true; break;
+ case EHTokTexture2d: dim = Esd2D; break;
+ case EHTokTexture2darray: dim = Esd2D; array = true; break;
+ case EHTokTexture3d: dim = Esd3D; break;
+ case EHTokTextureCube: dim = EsdCube; break;
+ case EHTokTextureCubearray: dim = EsdCube; array = true; break;
+ case EHTokTexture2DMS: dim = Esd2D; ms = true; break;
+ case EHTokTexture2DMSarray: dim = Esd2D; array = true; ms = true; break;
+ case EHTokRWBuffer: dim = EsdBuffer; image=true; break;
+ case EHTokRWTexture1d: dim = Esd1D; array=false; image=true; break;
+ case EHTokRWTexture1darray: dim = Esd1D; array=true; image=true; break;
+ case EHTokRWTexture2d: dim = Esd2D; array=false; image=true; break;
+ case EHTokRWTexture2darray: dim = Esd2D; array=true; image=true; break;
+ case EHTokRWTexture3d: dim = Esd3D; array=false; image=true; break;
default:
return false; // not a texture declaration
}
@@ -1137,7 +1257,13 @@ bool HlslGrammar::acceptTextureType(TType& type)
const TBasicType basicRetType = txType.getBasicType() ;
- if (basicRetType != EbtFloat && basicRetType != EbtUint && basicRetType != EbtInt) {
+ switch (basicRetType) {
+ case EbtFloat:
+ case EbtUint:
+ case EbtInt:
+ case EbtStruct:
+ break;
+ default:
unimplemented("basic type in texture");
return false;
}
@@ -1154,8 +1280,8 @@ bool HlslGrammar::acceptTextureType(TType& type)
return false;
}
- if (!txType.isScalar() && !txType.isVector()) {
- expected("scalar or vector type");
+ if (!txType.isScalar() && !txType.isVector() && !txType.isStruct()) {
+ expected("scalar, vector, or struct type");
return false;
}
@@ -1177,7 +1303,7 @@ bool HlslGrammar::acceptTextureType(TType& type)
} else if (ms) {
expected("texture type for multisample");
return false;
- } else if (image && !readonly) {
+ } else if (image) {
expected("type for RWTexture/RWBuffer");
return false;
}
@@ -1192,25 +1318,31 @@ bool HlslGrammar::acceptTextureType(TType& type)
if (image || dim == EsdBuffer)
format = parseContext.getLayoutFromTxType(token.loc, txType);
+ const TBasicType txBasicType = txType.isStruct() ? (*txType.getStruct())[0].type->getBasicType()
+ : txType.getBasicType();
+
// Non-image Buffers are combined
if (dim == EsdBuffer && !image) {
sampler.set(txType.getBasicType(), dim, array);
} else {
// DX10 textures are separated. TODO: DX9.
if (image) {
- sampler.setImage(txType.getBasicType(), dim, array, shadow, ms);
+ sampler.setImage(txBasicType, dim, array, shadow, ms);
} else {
- sampler.setTexture(txType.getBasicType(), dim, array, shadow, ms);
+ sampler.setTexture(txBasicType, dim, array, shadow, ms);
}
}
- // Remember the declared vector size.
- sampler.vectorSize = txType.getVectorSize();
+ // Remember the declared return type. Function returns false on error.
+ if (!parseContext.setTextureReturnType(sampler, txType, token.loc))
+ return false;
- type.shallowCopy(TType(sampler, EvqUniform, arraySizes));
+ // Force uncombined, if necessary
+ if (!combined)
+ sampler.combined = false;
+ type.shallowCopy(TType(sampler, EvqUniform, arraySizes));
type.getQualifier().layoutFormat = format;
- type.getQualifier().readonly = readonly;
return true;
}
@@ -1234,6 +1366,35 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
static const TBasicType min12int_bt = EbtInt;
static const TBasicType min16uint_bt = EbtUint;
+ // Some types might have turned into identifiers. Take the hit for checking
+ // when this has happened.
+ if (typeIdentifiers) {
+ const char* identifierString = getTypeString(peek());
+ if (identifierString != nullptr) {
+ TString name = identifierString;
+ // if it's an identifier, it's not a type
+ if (parseContext.symbolTable.find(name) != nullptr)
+ return false;
+ }
+ }
+
+ bool isUnorm = false;
+ bool isSnorm = false;
+
+ // Accept snorm and unorm. Presently, this is ignored, save for an error check below.
+ switch (peek()) {
+ case EHTokUnorm:
+ isUnorm = true;
+ advanceToken(); // eat the token
+ break;
+ case EHTokSNorm:
+ isSnorm = true;
+ advanceToken(); // eat the token
+ break;
+ default:
+ break;
+ }
+
switch (peek()) {
case EHTokVector:
return acceptVectorTemplateType(type);
@@ -1276,6 +1437,11 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
return acceptSamplerType(type);
break;
+ case EHTokSubpassInput: // fall through
+ case EHTokSubpassInputMS: // ...
+ return acceptSubpassInputType(type);
+ break;
+
case EHTokBuffer: // fall through
case EHTokTexture1d: // ...
case EHTokTexture1darray: // ...
@@ -1304,6 +1470,13 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
return acceptStructBufferType(type);
break;
+ case EHTokTextureBuffer:
+ return acceptTextureBufferType(type);
+ break;
+
+ case EHTokConstantBuffer:
+ return acceptConstantBufferType(type);
+
case EHTokClass:
case EHTokStruct:
case EHTokCBuffer:
@@ -1415,20 +1588,20 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
break;
case EHTokHalf:
- new(&type) TType(half_bt, EvqTemporary, EpqMedium);
+ new(&type) TType(half_bt, EvqTemporary);
break;
case EHTokHalf1:
- new(&type) TType(half_bt, EvqTemporary, EpqMedium);
+ new(&type) TType(half_bt, EvqTemporary);
type.makeVector();
break;
case EHTokHalf2:
- new(&type) TType(half_bt, EvqTemporary, EpqMedium, 2);
+ new(&type) TType(half_bt, EvqTemporary, 2);
break;
case EHTokHalf3:
- new(&type) TType(half_bt, EvqTemporary, EpqMedium, 3);
+ new(&type) TType(half_bt, EvqTemporary, 3);
break;
case EHTokHalf4:
- new(&type) TType(half_bt, EvqTemporary, EpqMedium, 4);
+ new(&type) TType(half_bt, EvqTemporary, 4);
break;
case EHTokMin16float:
@@ -1712,6 +1885,55 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 4);
break;
+ case EHTokHalf1x1:
+ new(&type) TType(half_bt, EvqTemporary, 0, 1, 1);
+ break;
+ case EHTokHalf1x2:
+ new(&type) TType(half_bt, EvqTemporary, 0, 1, 2);
+ break;
+ case EHTokHalf1x3:
+ new(&type) TType(half_bt, EvqTemporary, 0, 1, 3);
+ break;
+ case EHTokHalf1x4:
+ new(&type) TType(half_bt, EvqTemporary, 0, 1, 4);
+ break;
+ case EHTokHalf2x1:
+ new(&type) TType(half_bt, EvqTemporary, 0, 2, 1);
+ break;
+ case EHTokHalf2x2:
+ new(&type) TType(half_bt, EvqTemporary, 0, 2, 2);
+ break;
+ case EHTokHalf2x3:
+ new(&type) TType(half_bt, EvqTemporary, 0, 2, 3);
+ break;
+ case EHTokHalf2x4:
+ new(&type) TType(half_bt, EvqTemporary, 0, 2, 4);
+ break;
+ case EHTokHalf3x1:
+ new(&type) TType(half_bt, EvqTemporary, 0, 3, 1);
+ break;
+ case EHTokHalf3x2:
+ new(&type) TType(half_bt, EvqTemporary, 0, 3, 2);
+ break;
+ case EHTokHalf3x3:
+ new(&type) TType(half_bt, EvqTemporary, 0, 3, 3);
+ break;
+ case EHTokHalf3x4:
+ new(&type) TType(half_bt, EvqTemporary, 0, 3, 4);
+ break;
+ case EHTokHalf4x1:
+ new(&type) TType(half_bt, EvqTemporary, 0, 4, 1);
+ break;
+ case EHTokHalf4x2:
+ new(&type) TType(half_bt, EvqTemporary, 0, 4, 2);
+ break;
+ case EHTokHalf4x3:
+ new(&type) TType(half_bt, EvqTemporary, 0, 4, 3);
+ break;
+ case EHTokHalf4x4:
+ new(&type) TType(half_bt, EvqTemporary, 0, 4, 4);
+ break;
+
case EHTokDouble1x1:
new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 1);
break;
@@ -1767,6 +1989,11 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
advanceToken();
+ if ((isUnorm || isSnorm) && !type.isFloatingDomain()) {
+ parseContext.error(token.loc, "unorm and snorm only valid in floating point domain", "", "");
+ return false;
+ }
+
return true;
}
@@ -1786,17 +2013,21 @@ bool HlslGrammar::acceptStruct(TType& type, TIntermNode*& nodeList)
// This storage qualifier will tell us whether it's an AST
// block type or just a generic structure type.
TStorageQualifier storageQualifier = EvqTemporary;
+ bool readonly = false;
- // CBUFFER
- if (acceptTokenClass(EHTokCBuffer))
+ if (acceptTokenClass(EHTokCBuffer)) {
+ // CBUFFER
storageQualifier = EvqUniform;
- // TBUFFER
- else if (acceptTokenClass(EHTokTBuffer))
+ } else if (acceptTokenClass(EHTokTBuffer)) {
+ // TBUFFER
storageQualifier = EvqBuffer;
- // CLASS
- // STRUCT
- else if (! acceptTokenClass(EHTokClass) && ! acceptTokenClass(EHTokStruct))
+ readonly = true;
+ } else if (! acceptTokenClass(EHTokClass) && ! acceptTokenClass(EHTokStruct)) {
+ // Neither CLASS nor STRUCT
return false;
+ }
+
+ // Now known to be one of CBUFFER, TBUFFER, CLASS, or STRUCT
// IDENTIFIER
TString structName = "";
@@ -1829,7 +2060,7 @@ bool HlslGrammar::acceptStruct(TType& type, TIntermNode*& nodeList)
TVector<TFunctionDeclarator> functionDeclarators;
parseContext.pushNamespace(structName);
- bool acceptedList = acceptStructDeclarationList(typeList, nodeList, structName, functionDeclarators);
+ bool acceptedList = acceptStructDeclarationList(typeList, nodeList, functionDeclarators);
parseContext.popNamespace();
if (! acceptedList) {
@@ -1848,6 +2079,7 @@ bool HlslGrammar::acceptStruct(TType& type, TIntermNode*& nodeList)
new(&type) TType(typeList, structName);
else {
postDeclQualifier.storage = storageQualifier;
+ postDeclQualifier.readonly = readonly;
new(&type) TType(typeList, structName, postDeclQualifier); // sets EbtBlock
}
@@ -1865,7 +2097,7 @@ bool HlslGrammar::acceptStruct(TType& type, TIntermNode*& nodeList)
// All member functions get parsed inside the class/struct namespace and with the
// class/struct members in a symbol-table level.
parseContext.pushNamespace(structName);
- parseContext.pushThisScope(type);
+ parseContext.pushThisScope(type, functionDeclarators);
bool deferredSuccess = true;
for (int b = 0; b < (int)functionDeclarators.size() && deferredSuccess; ++b) {
// parse body
@@ -1880,6 +2112,84 @@ bool HlslGrammar::acceptStruct(TType& type, TIntermNode*& nodeList)
return deferredSuccess;
}
+// constantbuffer
+// : CONSTANTBUFFER LEFT_ANGLE type RIGHT_ANGLE
+bool HlslGrammar::acceptConstantBufferType(TType& type)
+{
+ if (! acceptTokenClass(EHTokConstantBuffer))
+ return false;
+
+ if (! acceptTokenClass(EHTokLeftAngle)) {
+ expected("left angle bracket");
+ return false;
+ }
+
+ TType templateType;
+ if (! acceptType(templateType)) {
+ expected("type");
+ return false;
+ }
+
+ if (! acceptTokenClass(EHTokRightAngle)) {
+ expected("right angle bracket");
+ return false;
+ }
+
+ TQualifier postDeclQualifier;
+ postDeclQualifier.clear();
+ postDeclQualifier.storage = EvqUniform;
+
+ if (templateType.isStruct()) {
+ // Make a block from the type parsed as the template argument
+ TTypeList* typeList = templateType.getWritableStruct();
+ new(&type) TType(typeList, "", postDeclQualifier); // sets EbtBlock
+
+ type.getQualifier().storage = EvqUniform;
+
+ return true;
+ } else {
+ parseContext.error(token.loc, "non-structure type in ConstantBuffer", "", "");
+ return false;
+ }
+}
+
+// texture_buffer
+// : TEXTUREBUFFER LEFT_ANGLE type RIGHT_ANGLE
+bool HlslGrammar::acceptTextureBufferType(TType& type)
+{
+ if (! acceptTokenClass(EHTokTextureBuffer))
+ return false;
+
+ if (! acceptTokenClass(EHTokLeftAngle)) {
+ expected("left angle bracket");
+ return false;
+ }
+
+ TType templateType;
+ if (! acceptType(templateType)) {
+ expected("type");
+ return false;
+ }
+
+ if (! acceptTokenClass(EHTokRightAngle)) {
+ expected("right angle bracket");
+ return false;
+ }
+
+ templateType.getQualifier().storage = EvqBuffer;
+ templateType.getQualifier().readonly = true;
+
+ TType blockType(templateType.getWritableStruct(), "", templateType.getQualifier());
+
+ blockType.getQualifier().storage = EvqBuffer;
+ blockType.getQualifier().readonly = true;
+
+ type.shallowCopy(blockType);
+
+ return true;
+}
+
+
// struct_buffer
// : APPENDSTRUCTUREDBUFFER
// | BYTEADDRESSBUFFER
@@ -1896,24 +2206,29 @@ bool HlslGrammar::acceptStructBufferType(TType& type)
bool readonly = false;
TStorageQualifier storage = EvqBuffer;
+ TBuiltInVariable builtinType = EbvNone;
switch (structBuffType) {
case EHTokAppendStructuredBuffer:
- unimplemented("AppendStructuredBuffer");
- return false;
+ builtinType = EbvAppendConsume;
+ break;
case EHTokByteAddressBuffer:
hasTemplateType = false;
readonly = true;
+ builtinType = EbvByteAddressBuffer;
break;
case EHTokConsumeStructuredBuffer:
- unimplemented("ConsumeStructuredBuffer");
- return false;
+ builtinType = EbvAppendConsume;
+ break;
case EHTokRWByteAddressBuffer:
hasTemplateType = false;
+ builtinType = EbvRWByteAddressBuffer;
break;
case EHTokRWStructuredBuffer:
+ builtinType = EbvRWStructuredBuffer;
break;
case EHTokStructuredBuffer:
+ builtinType = EbvStructuredBuffer;
readonly = true;
break;
default:
@@ -1955,8 +2270,6 @@ bool HlslGrammar::acceptStructBufferType(TType& type)
// field name is canonical for all structbuffers
templateType->setFieldName("@data");
- // Create block type. TODO: hidden internal uint member when needed
-
TTypeList* blockStruct = new TTypeList;
TTypeLoc member = { templateType, token.loc };
blockStruct->push_back(member);
@@ -1966,6 +2279,7 @@ bool HlslGrammar::acceptStructBufferType(TType& type)
blockType.getQualifier().storage = storage;
blockType.getQualifier().readonly = readonly;
+ blockType.getQualifier().builtIn = builtinType;
// We may have created an equivalent type before, in which case we should use its
// deep structure.
@@ -1988,7 +2302,7 @@ bool HlslGrammar::acceptStructBufferType(TType& type)
// | IDENTIFIER array_specifier post_decls
// | IDENTIFIER function_parameters post_decls // member-function prototype
//
-bool HlslGrammar::acceptStructDeclarationList(TTypeList*& typeList, TIntermNode*& nodeList, const TString& typeName,
+bool HlslGrammar::acceptStructDeclarationList(TTypeList*& typeList, TIntermNode*& nodeList,
TVector<TFunctionDeclarator>& declarators)
{
typeList = new TTypeList();
@@ -2085,12 +2399,13 @@ bool HlslGrammar::acceptStructDeclarationList(TTypeList*& typeList, TIntermNode*
//
// Expects type to have EvqGlobal for a static member and
// EvqTemporary for non-static member.
-bool HlslGrammar::acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType& type, const TString& memberName,
+bool HlslGrammar::acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType& type, TString& memberName,
TFunctionDeclarator& declarator)
{
bool accepted = false;
- TString* functionName = parseContext.getFullNamespaceName(memberName);
+ TString* functionName = &memberName;
+ parseContext.getFullNamespaceName(functionName);
declarator.function = new TFunction(functionName, type);
if (type.getQualifier().storage == EvqTemporary)
declarator.function->setImplicitThis();
@@ -2163,7 +2478,7 @@ bool HlslGrammar::acceptDefaultParameterDeclaration(const TType& type, TIntermTy
// For initializer lists, we have to const-fold into a constructor for the type, so build
// that.
- TFunction* constructor = parseContext.handleConstructorCall(token.loc, type);
+ TFunction* constructor = parseContext.makeConstructorCall(token.loc, type);
if (constructor == nullptr) // cannot construct
return false;
@@ -2174,6 +2489,9 @@ bool HlslGrammar::acceptDefaultParameterDeclaration(const TType& type, TIntermTy
node = parseContext.handleFunctionCall(token.loc, constructor, node);
}
+ if (node == nullptr)
+ return false;
+
// If this is simply a constant, we can use it directly.
if (node->getAsConstantUnion())
return true;
@@ -2192,16 +2510,25 @@ bool HlslGrammar::acceptDefaultParameterDeclaration(const TType& type, TIntermTy
}
// parameter_declaration
+// : attributes attributed_declaration
+//
+// attributed_declaration
// : fully_specified_type post_decls [ = default_parameter_declaration ]
// | fully_specified_type identifier array_specifier post_decls [ = default_parameter_declaration ]
//
bool HlslGrammar::acceptParameterDeclaration(TFunction& function)
{
+ // attributes
+ TAttributeMap attributes;
+ acceptAttributes(attributes);
+
// fully_specified_type
TType* type = new TType;
if (! acceptFullySpecifiedType(*type))
return false;
+ parseContext.transferTypeAttributes(attributes, *type);
+
// identifier
HlslToken idToken;
acceptIdentifier(idToken);
@@ -2384,8 +2711,19 @@ bool HlslGrammar::acceptInitializer(TIntermTyped*& node)
expected("assignment expression in initializer list");
return false;
}
+
+ const bool firstNode = (node == nullptr);
+
node = intermediate.growAggregate(node, expr, loc);
+ // If every sub-node in the list has qualifier EvqConst, the returned node becomes
+ // EvqConst. Otherwise, it becomes EvqTemporary. That doesn't happen with e.g.
+ // EvqIn or EvqPosition, since the collection isn't EvqPosition if all the members are.
+ if (firstNode && expr->getQualifier().storage == EvqConst)
+ node->getQualifier().storage = EvqConst;
+ else if (expr->getQualifier().storage != EvqConst)
+ node->getQualifier().storage = EvqTemporary;
+
// COMMA
if (acceptTokenClass(EHTokComma)) {
if (acceptTokenClass(EHTokRightBrace)) // allow trailing comma
@@ -2476,6 +2814,12 @@ bool HlslGrammar::acceptConditionalExpression(TIntermTyped*& node)
if (! acceptTokenClass(EHTokQuestion))
return true;
+ node = parseContext.convertConditionalExpression(token.loc, node, false);
+ if (node == nullptr)
+ return false;
+
+ ++parseContext.controlFlowNestingLevel; // this only needs to work right if no errors
+
TIntermTyped* trueNode = nullptr;
if (! acceptExpression(trueNode)) {
expected("expression after ?");
@@ -2494,6 +2838,8 @@ bool HlslGrammar::acceptConditionalExpression(TIntermTyped*& node)
return false;
}
+ --parseContext.controlFlowNestingLevel;
+
node = intermediate.addSelection(node, trueNode, falseNode, loc);
return true;
@@ -2561,14 +2907,19 @@ bool HlslGrammar::acceptUnaryExpression(TIntermTyped*& node)
if (acceptTokenClass(EHTokLeftParen)) {
TType castType;
if (acceptType(castType)) {
+ // recognize any array_specifier as part of the type
+ TArraySizes* arraySizes = nullptr;
+ acceptArraySpecifier(arraySizes);
+ if (arraySizes != nullptr)
+ castType.newArraySizes(*arraySizes);
+ TSourceLoc loc = token.loc;
if (acceptTokenClass(EHTokRightParen)) {
// We've matched "(type)" now, get the expression to cast
- TSourceLoc loc = token.loc;
if (! acceptUnaryExpression(node))
return false;
// Hook it up like a constructor
- TFunction* constructorFunction = parseContext.handleConstructorCall(loc, castType);
+ TFunction* constructorFunction = parseContext.makeConstructorCall(loc, castType);
if (constructorFunction == nullptr) {
expected("type that can be constructed");
return false;
@@ -2577,12 +2928,17 @@ bool HlslGrammar::acceptUnaryExpression(TIntermTyped*& node)
parseContext.handleFunctionArgument(constructorFunction, arguments, node);
node = parseContext.handleFunctionCall(loc, constructorFunction, arguments);
- return true;
+ return node != nullptr;
} else {
// This could be a parenthesized constructor, ala (int(3)), and we just accepted
// the '(int' part. We must back up twice.
recedeToken();
recedeToken();
+
+ // Note, there are no array constructors like
+ // (float[2](...))
+ if (arraySizes != nullptr)
+ parseContext.error(loc, "parenthesized array constructor not allowed", "([]())", "", "");
}
} else {
// This isn't a type cast, but it still started "(", so if it is a
@@ -2623,12 +2979,12 @@ bool HlslGrammar::acceptUnaryExpression(TIntermTyped*& node)
// : LEFT_PAREN expression RIGHT_PAREN
// | literal
// | constructor
-// | identifier
+// | IDENTIFIER [ COLONCOLON IDENTIFIER [ COLONCOLON IDENTIFIER ... ] ]
// | function_call
// | postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET
// | postfix_expression DOT IDENTIFIER
// | postfix_expression DOT IDENTIFIER arguments
-// | postfix_expression COLONCOLON IDENTIFIER arguments
+// | postfix_expression arguments
// | postfix_expression INC_OP
// | postfix_expression DEC_OP
//
@@ -2640,9 +2996,6 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node)
// idToken will pick up either a variable or a function name in a function call
HlslToken idToken;
- // scopeBase will pick up the type symbol on the left of '::'
- TSymbol* scope = nullptr;
-
// Find something before the postfix operations, as they can't operate
// on nothing. So, no "return true", they fall through, only "return false".
if (acceptTokenClass(EHTokLeftParen)) {
@@ -2656,21 +3009,26 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node)
return false;
}
} else if (acceptLiteral(node)) {
- // literal (nothing else to do yet), go on to the
+ // literal (nothing else to do yet)
} else if (acceptConstructor(node)) {
// constructor (nothing else to do yet)
} else if (acceptIdentifier(idToken)) {
- // user-type, identifier, or function name
- if (peekTokenClass(EHTokColonColon)) {
- TType type;
- scope = parseContext.lookupUserType(*idToken.string, type);
- if (scope == nullptr) {
- expected("type left of ::");
+ // user-type, namespace name, variable, or function name
+ TString* fullName = idToken.string;
+ while (acceptTokenClass(EHTokColonColon)) {
+ // user-type or namespace name
+ fullName = NewPoolTString(fullName->c_str());
+ fullName->append(parseContext.scopeMangler);
+ if (acceptIdentifier(idToken))
+ fullName->append(*idToken.string);
+ else {
+ expected("identifier after ::");
return false;
}
- } else if (! peekTokenClass(EHTokLeftParen)) {
- node = parseContext.handleVariable(idToken.loc, idToken.string);
- } else if (acceptFunctionCall(idToken, node)) {
+ }
+ if (! peekTokenClass(EHTokLeftParen)) {
+ node = parseContext.handleVariable(idToken.loc, fullName);
+ } else if (acceptFunctionCall(idToken.loc, *fullName, node, nullptr)) {
// function_call (nothing else to do yet)
} else {
expected("function call arguments");
@@ -2681,23 +3039,6 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node)
return false;
}
- // This is to guarantee we do this no matter how we get out of the stack frame.
- // This way there's no bug if an early return forgets to do it.
- struct tFinalize {
- tFinalize(HlslParseContext& p) : parseContext(p) { }
- ~tFinalize() { parseContext.finalizeFlattening(); }
- HlslParseContext& parseContext;
- private:
- const tFinalize& operator=(const tFinalize&) { return *this; }
- tFinalize(const tFinalize& f) : parseContext(f.parseContext) { }
- } finalize(parseContext);
-
- // Initialize the flattening accumulation data, so we can track data across multiple bracket or
- // dot operators. This can also be nested, e.g, for [], so we have to track each nesting
- // level: hence the init and finalize. Even though in practice these must be
- // constants, they are parsed no matter what.
- parseContext.initFlattening();
-
// Something was found, chain as many postfix operations as exist.
do {
TSourceLoc loc = token.loc;
@@ -2734,7 +3075,7 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node)
TIntermTyped* thisNode = node;
// arguments
- if (! acceptFunctionCall(field, node, thisNode, scope)) {
+ if (! acceptFunctionCall(field.loc, *field.string, node, thisNode)) {
expected("function parameters");
return false;
}
@@ -2754,6 +3095,8 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node)
}
advanceToken();
node = parseContext.handleBracketDereference(indexNode->getLoc(), node, indexNode);
+ if (node == nullptr)
+ return false;
break;
}
case EOpPostIncrement:
@@ -2779,7 +3122,7 @@ bool HlslGrammar::acceptConstructor(TIntermTyped*& node)
// type
TType type;
if (acceptType(type)) {
- TFunction* constructorFunction = parseContext.handleConstructorCall(token.loc, type);
+ TFunction* constructorFunction = parseContext.makeConstructorCall(token.loc, type);
if (constructorFunction == nullptr)
return false;
@@ -2795,7 +3138,7 @@ bool HlslGrammar::acceptConstructor(TIntermTyped*& node)
// hook it up
node = parseContext.handleFunctionCall(arguments->getLoc(), constructorFunction, arguments);
- return true;
+ return node != nullptr;
}
return false;
@@ -2806,26 +3149,26 @@ bool HlslGrammar::acceptConstructor(TIntermTyped*& node)
// function_call
// : [idToken] arguments
//
-bool HlslGrammar::acceptFunctionCall(HlslToken callToken, TIntermTyped*& node, TIntermTyped* baseObject,
- const TSymbol* scope)
+bool HlslGrammar::acceptFunctionCall(const TSourceLoc& loc, TString& name, TIntermTyped*& node, TIntermTyped* baseObject)
{
// name
TString* functionName = nullptr;
- if ((baseObject == nullptr && scope == nullptr)) {
- functionName = callToken.string;
- } else if (parseContext.isBuiltInMethod(callToken.loc, baseObject, *callToken.string)) {
+ if (baseObject == nullptr) {
+ functionName = &name;
+ } else if (parseContext.isBuiltInMethod(loc, baseObject, name)) {
// Built-in methods are not in the symbol table as methods, but as global functions
// taking an explicit 'this' as the first argument.
functionName = NewPoolTString(BUILTIN_PREFIX);
- functionName->append(*callToken.string);
+ functionName->append(name);
} else {
+ if (! baseObject->getType().isStruct()) {
+ expected("structure");
+ return false;
+ }
functionName = NewPoolTString("");
- if (baseObject != nullptr)
- functionName->append(baseObject->getType().getTypeName());
- else if (scope != nullptr)
- functionName->append(scope->getType().getTypeName());
+ functionName->append(baseObject->getType().getTypeName());
parseContext.addScopeMangler(*functionName);
- functionName->append(*callToken.string);
+ functionName->append(name);
}
// function
@@ -2841,9 +3184,9 @@ bool HlslGrammar::acceptFunctionCall(HlslToken callToken, TIntermTyped*& node, T
return false;
// call
- node = parseContext.handleFunctionCall(callToken.loc, function, arguments);
+ node = parseContext.handleFunctionCall(loc, function, arguments);
- return true;
+ return node != nullptr;
}
// arguments
@@ -2858,11 +3201,16 @@ bool HlslGrammar::acceptArguments(TFunction* function, TIntermTyped*& arguments)
if (! acceptTokenClass(EHTokLeftParen))
return false;
+ // RIGHT_PAREN
+ if (acceptTokenClass(EHTokRightParen))
+ return true;
+
+ // must now be at least one expression...
do {
// expression
TIntermTyped* arg;
if (! acceptAssignmentExpression(arg))
- break;
+ return false;
// hook it up
parseContext.handleFunctionArgument(function, arguments, arg);
@@ -2912,6 +3260,37 @@ bool HlslGrammar::acceptLiteral(TIntermTyped*& node)
return true;
}
+// simple_statement
+// : SEMICOLON
+// | declaration_statement
+// | expression SEMICOLON
+//
+bool HlslGrammar::acceptSimpleStatement(TIntermNode*& statement)
+{
+ // SEMICOLON
+ if (acceptTokenClass(EHTokSemicolon))
+ return true;
+
+ // declaration
+ if (acceptDeclaration(statement))
+ return true;
+
+ // expression
+ TIntermTyped* node;
+ if (acceptExpression(node))
+ statement = node;
+ else
+ return false;
+
+ // SEMICOLON (following an expression)
+ if (acceptTokenClass(EHTokSemicolon))
+ return true;
+ else {
+ expected(";");
+ return false;
+ }
+}
+
// compound_statement
// : LEFT_CURLY statement statement ... RIGHT_CURLY
//
@@ -2969,12 +3348,11 @@ bool HlslGrammar::acceptScopedCompoundStatement(TIntermNode*& statement)
//
// attributed_statement
// : compound_statement
-// | SEMICOLON
-// | expression SEMICOLON
-// | declaration_statement
+// | simple_statement
// | selection_statement
// | switch_statement
// | case_label
+// | default_label
// | iteration_statement
// | jump_statement
//
@@ -2992,15 +3370,15 @@ bool HlslGrammar::acceptStatement(TIntermNode*& statement)
return acceptScopedCompoundStatement(statement);
case EHTokIf:
- return acceptSelectionStatement(statement);
+ return acceptSelectionStatement(statement, attributes);
case EHTokSwitch:
- return acceptSwitchStatement(statement);
+ return acceptSwitchStatement(statement, attributes);
case EHTokFor:
case EHTokDo:
case EHTokWhile:
- return acceptIterationStatement(statement);
+ return acceptIterationStatement(statement, attributes);
case EHTokContinue:
case EHTokBreak:
@@ -3013,40 +3391,28 @@ bool HlslGrammar::acceptStatement(TIntermNode*& statement)
case EHTokDefault:
return acceptDefaultLabel(statement);
- case EHTokSemicolon:
- return acceptTokenClass(EHTokSemicolon);
-
case EHTokRightBrace:
// Performance: not strictly necessary, but stops a bunch of hunting early,
// and is how sequences of statements end.
return false;
default:
- {
- // declaration
- if (acceptDeclaration(statement))
- return true;
-
- // expression
- TIntermTyped* node;
- if (acceptExpression(node))
- statement = node;
- else
- return false;
-
- // SEMICOLON (following an expression)
- if (! acceptTokenClass(EHTokSemicolon)) {
- expected(";");
- return false;
- }
- }
+ return acceptSimpleStatement(statement);
}
return true;
}
// attributes
-// : list of zero or more of: LEFT_BRACKET attribute RIGHT_BRACKET
+// : [zero or more:] bracketed-attribute
+//
+// bracketed-attribute:
+// : LEFT_BRACKET scoped-attribute RIGHT_BRACKET
+// : LEFT_BRACKET LEFT_BRACKET scoped-attribute RIGHT_BRACKET RIGHT_BRACKET
+//
+// scoped-attribute:
+// : attribute
+// | namespace COLON COLON attribute
//
// attribute:
// : UNROLL
@@ -3073,18 +3439,33 @@ void HlslGrammar::acceptAttributes(TAttributeMap& attributes)
// numthreads, which is used to set the CS local size.
// TODO: subset to correct set? Pass on?
do {
- HlslToken idToken;
+ HlslToken attributeToken;
// LEFT_BRACKET?
if (! acceptTokenClass(EHTokLeftBracket))
return;
+ // another LEFT_BRACKET?
+ bool doubleBrackets = false;
+ if (acceptTokenClass(EHTokLeftBracket))
+ doubleBrackets = true;
+
+ // attribute? (could be namespace; will adjust later)
+ if (!acceptIdentifier(attributeToken)) {
+ if (!peekTokenClass(EHTokRightBracket)) {
+ expected("namespace or attribute identifier");
+ advanceToken();
+ }
+ }
- // attribute
- if (acceptIdentifier(idToken)) {
- // 'idToken.string' is the attribute
- } else if (! peekTokenClass(EHTokRightBracket)) {
- expected("identifier");
- advanceToken();
+ TString nameSpace;
+ if (acceptTokenClass(EHTokColonColon)) {
+ // namespace COLON COLON
+ nameSpace = *attributeToken.string;
+ // attribute
+ if (!acceptIdentifier(attributeToken)) {
+ expected("attribute identifier");
+ return;
+ }
}
TIntermAggregate* expressions = nullptr;
@@ -3117,10 +3498,15 @@ void HlslGrammar::acceptAttributes(TAttributeMap& attributes)
expected("]");
return;
}
+ // another RIGHT_BRACKET?
+ if (doubleBrackets && !acceptTokenClass(EHTokRightBracket)) {
+ expected("]]");
+ return;
+ }
// Add any values we found into the attribute map. This accepts
// (and ignores) values not mapping to a known TAttributeType;
- attributes.setAttribute(idToken.string, expressions);
+ attributes.setAttribute(nameSpace, attributeToken.string, expressions);
} while (true);
}
@@ -3128,10 +3514,12 @@ void HlslGrammar::acceptAttributes(TAttributeMap& attributes)
// : IF LEFT_PAREN expression RIGHT_PAREN statement
// : IF LEFT_PAREN expression RIGHT_PAREN statement ELSE statement
//
-bool HlslGrammar::acceptSelectionStatement(TIntermNode*& statement)
+bool HlslGrammar::acceptSelectionStatement(TIntermNode*& statement, const TAttributeMap& attributes)
{
TSourceLoc loc = token.loc;
+ const TSelectionControl control = parseContext.handleSelectionControl(attributes);
+
// IF
if (! acceptTokenClass(EHTokIf))
return false;
@@ -3144,10 +3532,15 @@ bool HlslGrammar::acceptSelectionStatement(TIntermNode*& statement)
TIntermTyped* condition;
if (! acceptParenExpression(condition))
return false;
+ condition = parseContext.convertConditionalExpression(loc, condition);
+ if (condition == nullptr)
+ return false;
// create the child statements
TIntermNodePair thenElse = { nullptr, nullptr };
+ ++parseContext.controlFlowNestingLevel; // this only needs to work right if no errors
+
// then statement
if (! acceptScopedStatement(thenElse.node1)) {
expected("then statement");
@@ -3164,8 +3557,9 @@ bool HlslGrammar::acceptSelectionStatement(TIntermNode*& statement)
}
// Put the pieces together
- statement = intermediate.addSelection(condition, thenElse, loc);
+ statement = intermediate.addSelection(condition, thenElse, loc, control);
parseContext.popScope();
+ --parseContext.controlFlowNestingLevel;
return true;
}
@@ -3173,10 +3567,13 @@ bool HlslGrammar::acceptSelectionStatement(TIntermNode*& statement)
// switch_statement
// : SWITCH LEFT_PAREN expression RIGHT_PAREN compound_statement
//
-bool HlslGrammar::acceptSwitchStatement(TIntermNode*& statement)
+bool HlslGrammar::acceptSwitchStatement(TIntermNode*& statement, const TAttributeMap& attributes)
{
// SWITCH
TSourceLoc loc = token.loc;
+
+ const TSelectionControl control = parseContext.handleSelectionControl(attributes);
+
if (! acceptTokenClass(EHTokSwitch))
return false;
@@ -3190,9 +3587,13 @@ bool HlslGrammar::acceptSwitchStatement(TIntermNode*& statement)
// compound_statement
parseContext.pushSwitchSequence(new TIntermSequence);
+
+ ++parseContext.controlFlowNestingLevel;
bool statementOkay = acceptCompoundStatement(statement);
+ --parseContext.controlFlowNestingLevel;
+
if (statementOkay)
- statement = parseContext.addSwitch(loc, switchExpression, statement ? statement->getAsAggregate() : nullptr);
+ statement = parseContext.addSwitch(loc, switchExpression, statement ? statement->getAsAggregate() : nullptr, control);
parseContext.popSwitchSequence();
parseContext.popScope();
@@ -3206,7 +3607,7 @@ bool HlslGrammar::acceptSwitchStatement(TIntermNode*& statement)
// | FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN statement
//
// Non-speculative, only call if it needs to be found; WHILE or DO or FOR already seen.
-bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement)
+bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement, const TAttributeMap& attributes)
{
TSourceLoc loc = token.loc;
TIntermTyped* condition = nullptr;
@@ -3216,17 +3617,23 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement)
// WHILE or DO or FOR
advanceToken();
+
+ const TLoopControl control = parseContext.handleLoopControl(attributes);
switch (loop) {
case EHTokWhile:
// so that something declared in the condition is scoped to the lifetime
// of the while sub-statement
- parseContext.pushScope();
+ parseContext.pushScope(); // this only needs to work right if no errors
parseContext.nestLooping();
+ ++parseContext.controlFlowNestingLevel;
// LEFT_PAREN condition RIGHT_PAREN
if (! acceptParenExpression(condition))
return false;
+ condition = parseContext.convertConditionalExpression(loc, condition);
+ if (condition == nullptr)
+ return false;
// statement
if (! acceptScopedStatement(statement)) {
@@ -3236,26 +3643,22 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement)
parseContext.unnestLooping();
parseContext.popScope();
+ --parseContext.controlFlowNestingLevel;
- statement = intermediate.addLoop(statement, condition, nullptr, true, loc);
+ statement = intermediate.addLoop(statement, condition, nullptr, true, loc, control);
return true;
case EHTokDo:
- parseContext.nestLooping();
-
- if (! acceptTokenClass(EHTokLeftBrace))
- expected("{");
+ parseContext.nestLooping(); // this only needs to work right if no errors
+ ++parseContext.controlFlowNestingLevel;
// statement
- if (! peekTokenClass(EHTokRightBrace) && ! acceptScopedStatement(statement)) {
+ if (! acceptScopedStatement(statement)) {
expected("do sub-statement");
return false;
}
- if (! acceptTokenClass(EHTokRightBrace))
- expected("}");
-
// WHILE
if (! acceptTokenClass(EHTokWhile)) {
expected("while");
@@ -3266,13 +3669,17 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement)
TIntermTyped* condition;
if (! acceptParenExpression(condition))
return false;
+ condition = parseContext.convertConditionalExpression(loc, condition);
+ if (condition == nullptr)
+ return false;
if (! acceptTokenClass(EHTokSemicolon))
expected(";");
parseContext.unnestLooping();
+ --parseContext.controlFlowNestingLevel;
- statement = intermediate.addLoop(statement, condition, 0, false, loc);
+ statement = intermediate.addLoop(statement, condition, 0, false, loc, control);
return true;
@@ -3288,21 +3695,21 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement)
// initializer
TIntermNode* initNode = nullptr;
- if (! acceptControlDeclaration(initNode)) {
- TIntermTyped* initExpr = nullptr;
- acceptExpression(initExpr);
- initNode = initExpr;
- }
- // SEMI_COLON
- if (! acceptTokenClass(EHTokSemicolon))
- expected(";");
+ if (! acceptSimpleStatement(initNode))
+ expected("for-loop initializer statement");
- parseContext.nestLooping();
+ parseContext.nestLooping(); // this only needs to work right if no errors
+ ++parseContext.controlFlowNestingLevel;
// condition SEMI_COLON
acceptExpression(condition);
if (! acceptTokenClass(EHTokSemicolon))
expected(";");
+ if (condition != nullptr) {
+ condition = parseContext.convertConditionalExpression(loc, condition);
+ if (condition == nullptr)
+ return false;
+ }
// iterator SEMI_COLON
TIntermTyped* iterator = nullptr;
@@ -3316,10 +3723,11 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement)
return false;
}
- statement = intermediate.addForLoop(statement, initNode, condition, iterator, true, loc);
+ statement = intermediate.addForLoop(statement, initNode, condition, iterator, true, loc, control);
parseContext.popScope();
parseContext.unnestLooping();
+ --parseContext.controlFlowNestingLevel;
return true;
}
@@ -3617,4 +4025,40 @@ bool HlslGrammar::captureBlockTokens(TVector<HlslToken>& tokens)
return true;
}
+// Return a string for just the types that can also be declared as an identifier.
+const char* HlslGrammar::getTypeString(EHlslTokenClass tokenClass) const
+{
+ switch (tokenClass) {
+ case EHTokSample: return "sample";
+ case EHTokHalf: return "half";
+ case EHTokHalf1x1: return "half1x1";
+ case EHTokHalf1x2: return "half1x2";
+ case EHTokHalf1x3: return "half1x3";
+ case EHTokHalf1x4: return "half1x4";
+ case EHTokHalf2x1: return "half2x1";
+ case EHTokHalf2x2: return "half2x2";
+ case EHTokHalf2x3: return "half2x3";
+ case EHTokHalf2x4: return "half2x4";
+ case EHTokHalf3x1: return "half3x1";
+ case EHTokHalf3x2: return "half3x2";
+ case EHTokHalf3x3: return "half3x3";
+ case EHTokHalf3x4: return "half3x4";
+ case EHTokHalf4x1: return "half4x1";
+ case EHTokHalf4x2: return "half4x2";
+ case EHTokHalf4x3: return "half4x3";
+ case EHTokHalf4x4: return "half4x4";
+ case EHTokBool: return "bool";
+ case EHTokFloat: return "float";
+ case EHTokDouble: return "double";
+ case EHTokInt: return "int";
+ case EHTokUint: return "uint";
+ case EHTokMin16float: return "min16float";
+ case EHTokMin10float: return "min10float";
+ case EHTokMin16int: return "min16int";
+ case EHTokMin12int: return "min12int";
+ default:
+ return nullptr;
+ }
+}
+
} // end namespace glslang
diff --git a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslGrammar.h b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslGrammar.h
index 1a3abf10997..9d5380c1031 100644
--- a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslGrammar.h
+++ b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslGrammar.h
@@ -52,7 +52,8 @@ namespace glslang {
class HlslGrammar : public HlslTokenStream {
public:
HlslGrammar(HlslScanContext& scanner, HlslParseContext& parseContext)
- : HlslTokenStream(scanner), parseContext(parseContext), intermediate(parseContext.intermediate) { }
+ : HlslTokenStream(scanner), parseContext(parseContext), intermediate(parseContext.intermediate),
+ typeIdentifiers(false) { }
virtual ~HlslGrammar() { }
bool parse();
@@ -65,6 +66,7 @@ namespace glslang {
void unimplemented(const char*);
bool acceptIdentifier(HlslToken&);
bool acceptCompilationUnit();
+ bool acceptDeclarationList(TIntermNode*&);
bool acceptDeclaration(TIntermNode*&);
bool acceptControlDeclaration(TIntermNode*& node);
bool acceptSamplerDeclarationDX9(TType&);
@@ -78,18 +80,20 @@ namespace glslang {
bool acceptTemplateVecMatBasicType(TBasicType&);
bool acceptVectorTemplateType(TType&);
bool acceptMatrixTemplateType(TType&);
- bool acceptTessellationDeclType();
+ bool acceptTessellationDeclType(TBuiltInVariable&);
bool acceptTessellationPatchTemplateType(TType&);
bool acceptStreamOutTemplateType(TType&, TLayoutGeometry&);
bool acceptOutputPrimitiveGeometry(TLayoutGeometry&);
bool acceptAnnotations(TQualifier&);
bool acceptSamplerType(TType&);
bool acceptTextureType(TType&);
+ bool acceptSubpassInputType(TType&);
bool acceptStructBufferType(TType&);
+ bool acceptTextureBufferType(TType&);
+ bool acceptConstantBufferType(TType&);
bool acceptStruct(TType&, TIntermNode*& nodeList);
- bool acceptStructDeclarationList(TTypeList*&, TIntermNode*& nodeList, const TString& typeName,
- TVector<TFunctionDeclarator>&);
- bool acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType&, const TString& memberName,
+ bool acceptStructDeclarationList(TTypeList*&, TIntermNode*& nodeList, TVector<TFunctionDeclarator>&);
+ bool acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType&, TString& memberName,
TFunctionDeclarator&);
bool acceptFunctionParameters(TFunction&);
bool acceptParameterDeclaration(TFunction&);
@@ -104,19 +108,19 @@ namespace glslang {
bool acceptUnaryExpression(TIntermTyped*&);
bool acceptPostfixExpression(TIntermTyped*&);
bool acceptConstructor(TIntermTyped*&);
- bool acceptFunctionCall(HlslToken, TIntermTyped*&, TIntermTyped* objectBase = nullptr,
- const TSymbol* scope = nullptr);
+ bool acceptFunctionCall(const TSourceLoc&, TString& name, TIntermTyped*&, TIntermTyped* objectBase);
bool acceptArguments(TFunction*, TIntermTyped*&);
bool acceptLiteral(TIntermTyped*&);
+ bool acceptSimpleStatement(TIntermNode*&);
bool acceptCompoundStatement(TIntermNode*&);
- bool acceptStatement(TIntermNode*&);
bool acceptScopedStatement(TIntermNode*&);
bool acceptScopedCompoundStatement(TIntermNode*&);
+ bool acceptStatement(TIntermNode*&);
bool acceptNestedStatement(TIntermNode*&);
void acceptAttributes(TAttributeMap&);
- bool acceptSelectionStatement(TIntermNode*&);
- bool acceptSwitchStatement(TIntermNode*&);
- bool acceptIterationStatement(TIntermNode*&);
+ bool acceptSelectionStatement(TIntermNode*&, const TAttributeMap&);
+ bool acceptSwitchStatement(TIntermNode*&, const TAttributeMap&);
+ bool acceptIterationStatement(TIntermNode*&, const TAttributeMap&);
bool acceptJumpStatement(TIntermNode*&);
bool acceptCaseLabel(TIntermNode*&);
bool acceptDefaultLabel(TIntermNode*&);
@@ -125,9 +129,11 @@ namespace glslang {
bool acceptDefaultParameterDeclaration(const TType&, TIntermTyped*&);
bool captureBlockTokens(TVector<HlslToken>& tokens);
+ const char* getTypeString(EHlslTokenClass tokenClass) const;
HlslParseContext& parseContext; // state of parsing and helper functions for building the intermediate
TIntermediate& intermediate; // the final product, the intermediate representation, includes the AST
+ bool typeIdentifiers; // shader uses some types as identifiers
};
} // end namespace glslang
diff --git a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseHelper.cpp b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseHelper.cpp
index 48b94b62c4f..adb955f7cc9 100644
--- a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseHelper.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseHelper.cpp
@@ -1,6 +1,6 @@
//
-// Copyright (C) 2016 Google, Inc.
-// Copyright (C) 2016 LunarG, Inc.
+// Copyright (C) 2017 Google, Inc.
+// Copyright (C) 2017 LunarG, Inc.
//
// All rights reserved.
//
@@ -53,20 +53,22 @@
namespace glslang {
HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins,
- int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink,
+ int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language,
+ TInfoSink& infoSink,
const TString sourceEntryPointName,
bool forwardCompatible, EShMessages messages) :
- TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, forwardCompatible, messages),
- contextPragma(true, false),
- loopNestingLevel(0), annotationNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0),
- postEntryPointReturn(false),
- limits(resources.limits),
- builtInIoIndex(nullptr),
- builtInIoBase(nullptr),
+ TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink,
+ forwardCompatible, messages, &sourceEntryPointName),
+ annotationNestingLevel(0),
+ inputPatch(nullptr),
nextInLocation(0), nextOutLocation(0),
- sourceEntryPointName(sourceEntryPointName),
entryPointFunction(nullptr),
- entryPointFunctionBody(nullptr)
+ entryPointFunctionBody(nullptr),
+ gsStreamOutput(nullptr),
+ clipDistanceInput(nullptr),
+ cullDistanceInput(nullptr),
+ clipDistanceOutput(nullptr),
+ cullDistanceOutput(nullptr)
{
globalUniformDefaults.clear();
globalUniformDefaults.layoutMatrix = ElmRowMajor;
@@ -79,6 +81,11 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int
globalInputDefaults.clear();
globalOutputDefaults.clear();
+ clipSemanticNSizeIn.fill(0);
+ cullSemanticNSizeIn.fill(0);
+ clipSemanticNSizeOut.fill(0);
+ cullSemanticNSizeOut.fill(0);
+
// "Shaders in the transform
// feedback capturing mode have an initial global default of
// layout(xfb_buffer = 0) out;"
@@ -129,7 +136,8 @@ bool HlslParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner&
// Print a message formated such that if you click on the message it will take you right to
// the line through most UIs.
const glslang::TSourceLoc& sourceLoc = input.getSourceLoc();
- infoSink.info << sourceLoc.name << "(" << sourceLoc.line << "): error at column " << sourceLoc.column << ", HLSL parsing failed.\n";
+ infoSink.info << sourceLoc.name << "(" << sourceLoc.line << "): error at column " << sourceLoc.column
+ << ", HLSL parsing failed.\n";
++numErrors;
return false;
}
@@ -145,7 +153,7 @@ bool HlslParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner&
//
bool HlslParseContext::shouldConvertLValue(const TIntermNode* node) const
{
- if (node == nullptr)
+ if (node == nullptr || node->getAsTyped() == nullptr)
return false;
const TIntermAggregate* lhsAsAggregate = node->getAsAggregate();
@@ -155,14 +163,14 @@ bool HlslParseContext::shouldConvertLValue(const TIntermNode* node) const
if (lhsAsBinary != nullptr &&
(lhsAsBinary->getOp() == EOpVectorSwizzle || lhsAsBinary->getOp() == EOpIndexDirect))
lhsAsAggregate = lhsAsBinary->getLeft()->getAsAggregate();
-
if (lhsAsAggregate != nullptr && lhsAsAggregate->getOp() == EOpImageLoad)
return true;
return false;
}
-void HlslParseContext::growGlobalUniformBlock(TSourceLoc& loc, TType& memberType, TString& memberName, TTypeList* newTypeList)
+void HlslParseContext::growGlobalUniformBlock(const TSourceLoc& loc, TType& memberType, const TString& memberName,
+ TTypeList* newTypeList)
{
newTypeList = nullptr;
correctUniform(memberType.getQualifier());
@@ -179,7 +187,14 @@ void HlslParseContext::growGlobalUniformBlock(TSourceLoc& loc, TType& memberType
//
TLayoutFormat HlslParseContext::getLayoutFromTxType(const TSourceLoc& loc, const TType& txType)
{
+ if (txType.isStruct()) {
+ // TODO: implement.
+ error(loc, "unimplemented: structure type in image or buffer", "", "");
+ return ElfNone;
+ }
+
const int components = txType.getVectorSize();
+ const TBasicType txBasicType = txType.getBasicType();
const auto selectFormat = [this,&components](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) -> TLayoutFormat {
if (intermediate.getNoStorageFormat())
@@ -189,7 +204,7 @@ TLayoutFormat HlslParseContext::getLayoutFromTxType(const TSourceLoc& loc, const
components == 2 ? v2 : v4;
};
- switch (txType.getBasicType()) {
+ switch (txBasicType) {
case EbtFloat: return selectFormat(ElfR32f, ElfRg32f, ElfRgba32f);
case EbtInt: return selectFormat(ElfR32i, ElfRg32i, ElfRgba32i);
case EbtUint: return selectFormat(ElfR32ui, ElfRg32ui, ElfRgba32ui);
@@ -219,6 +234,13 @@ bool HlslParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, T
}
}
+ // We tolerate samplers as l-values, even though they are nominally
+ // illegal, because we expect a later optimization to eliminate them.
+ if (node->getType().getBasicType() == EbtSampler) {
+ intermediate.setNeedsLegalization();
+ return false;
+ }
+
// Let the base class check errors
return TParseContextBase::lValueErrorCheck(loc, op, node);
}
@@ -231,7 +253,7 @@ bool HlslParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, T
//
// Most things are passed through unmodified, except for error checking.
//
-TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* op, TIntermTyped* node)
+TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* op, TIntermTyped*& node)
{
if (node == nullptr)
return nullptr;
@@ -333,13 +355,6 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char*
[](bool isSet) { return isSet; } );
};
- // helper to create a temporary variable
- const auto addTmpVar = [&](const char* name, const TType& derefType) -> TIntermSymbol* {
- TVariable* tmpVar = makeInternalVariable(name, derefType);
- tmpVar->getWritableType().getQualifier().makeTemporary();
- return intermediate.addSymbol(*tmpVar, loc);
- };
-
// Create swizzle matching input swizzle
const auto addSwizzle = [&](TIntermSymbol* var, TIntermBinary* swizzle) -> TIntermTyped* {
if (swizzle)
@@ -363,7 +378,8 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char*
const TSampler& texSampler = object->getType().getSampler();
- const TType objDerefType(texSampler.type, EvqTemporary, texSampler.vectorSize);
+ TType objDerefType;
+ getTextureReturnType(texSampler, objDerefType);
if (nodeAsBinary) {
TIntermTyped* rhs = nodeAsBinary->getRight();
@@ -390,12 +406,13 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char*
// fall through...
case EOpAssign:
{
- // Since this is an lvalue, we'll convert an image load to a sequence like this (to still provide the value):
+ // Since this is an lvalue, we'll convert an image load to a sequence like this
+ // (to still provide the value):
// OpSequence
// OpImageStore(object, lhs, rhs)
// rhs
- // But if it's not a simple symbol RHS (say, a fn call), we don't want to duplicate the RHS, so we'll convert
- // instead to this:
+ // But if it's not a simple symbol RHS (say, a fn call), we don't want to duplicate the RHS,
+ // so we'll convert instead to this:
// OpSequence
// rhsTmp = rhs
// OpImageStore(object, coord, rhsTmp)
@@ -417,7 +434,7 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char*
TIntermTyped* coordTmp = coord;
if (rhsTmp == nullptr || isModifyOp || lhsIsSwizzle) {
- rhsTmp = addTmpVar("storeTemp", objDerefType);
+ rhsTmp = makeInternalVariableNode(loc, "storeTemp", objDerefType);
// Partial updates not yet supported
if (!writesAllComponents(rhsTmp, lhsAsBinary)) {
@@ -427,7 +444,7 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char*
// Assign storeTemp = rhs
if (isModifyOp) {
// We have to make a temp var for the coordinate, to avoid evaluating it twice.
- coordTmp = addTmpVar("coordTemp", coord->getType());
+ coordTmp = makeInternalVariableNode(loc, "coordTemp", coord->getType());
makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1]
makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp)
}
@@ -460,8 +477,8 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char*
// OpImageStore(object, coordTmp, rhsTmp)
// rhsTmp
- TIntermSymbol* rhsTmp = addTmpVar("storeTemp", objDerefType);
- TIntermTyped* coordTmp = addTmpVar("coordTemp", coord->getType());
+ TIntermSymbol* rhsTmp = makeInternalVariableNode(loc, "storeTemp", objDerefType);
+ TIntermTyped* coordTmp = makeInternalVariableNode(loc, "coordTemp", coord->getType());
makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1]
makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp)
@@ -481,9 +498,9 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char*
// rhsTmp2 op
// OpImageStore(object, coordTmp, rhsTmp2)
// rhsTmp1 (pre-op value)
- TIntermSymbol* rhsTmp1 = addTmpVar("storeTempPre", objDerefType);
- TIntermSymbol* rhsTmp2 = addTmpVar("storeTempPost", objDerefType);
- TIntermTyped* coordTmp = addTmpVar("coordTemp", coord->getType());
+ TIntermSymbol* rhsTmp1 = makeInternalVariableNode(loc, "storeTempPre", objDerefType);
+ TIntermSymbol* rhsTmp2 = makeInternalVariableNode(loc, "storeTempPost", objDerefType);
+ TIntermTyped* coordTmp = makeInternalVariableNode(loc, "coordTemp", coord->getType());
makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1]
makeLoad(rhsTmp1, object, coordTmp, objDerefType); // rhsTmp1 = OpImageLoad(object, coordTmp)
@@ -512,6 +529,28 @@ void HlslParseContext::handlePragma(const TSourceLoc& loc, const TVector<TString
if (tokens.size() == 0)
return;
+
+ // These pragmas are case insensitive in HLSL, so we'll compare in lower case.
+ TVector<TString> lowerTokens = tokens;
+
+ for (auto it = lowerTokens.begin(); it != lowerTokens.end(); ++it)
+ std::transform(it->begin(), it->end(), it->begin(), ::tolower);
+
+ // Handle pack_matrix
+ if (tokens.size() == 4 && lowerTokens[0] == "pack_matrix" && tokens[1] == "(" && tokens[3] == ")") {
+ // Note that HLSL semantic order is Mrc, not Mcr like SPIR-V, so we reverse the sense.
+ // Row major becomes column major and vice versa.
+
+ if (lowerTokens[2] == "row_major") {
+ globalUniformDefaults.layoutMatrix = globalBufferDefaults.layoutMatrix = ElmColumnMajor;
+ } else if (lowerTokens[2] == "column_major") {
+ globalUniformDefaults.layoutMatrix = globalBufferDefaults.layoutMatrix = ElmRowMajor;
+ } else {
+ // unknown majorness strings are treated as (HLSL column major)==(SPIR-V row major)
+ warn(loc, "unknown pack_matrix pragma value", tokens[2].c_str(), "");
+ globalUniformDefaults.layoutMatrix = globalBufferDefaults.layoutMatrix = ElmRowMajor;
+ }
+ }
}
//
@@ -654,7 +693,7 @@ TIntermTyped* HlslParseContext::handleVariable(const TSourceLoc& loc, const TStr
}
// Recovery, if it wasn't found or was not a variable.
- if (! variable) {
+ if (variable == nullptr) {
error(loc, "unknown variable", string->c_str(), "");
variable = new TVariable(string, TType(EbtVoid));
}
@@ -682,19 +721,33 @@ TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIn
if (base->getType().getBasicType() == EbtSampler && !base->isArray()) {
const TSampler& sampler = base->getType().getSampler();
if (sampler.isImage() || sampler.isTexture()) {
- TIntermAggregate* load = new TIntermAggregate(sampler.isImage() ? EOpImageLoad : EOpTextureFetch);
-
- load->setType(TType(sampler.type, EvqTemporary, sampler.vectorSize));
- load->setLoc(loc);
- load->getSequence().push_back(base);
- load->getSequence().push_back(index);
-
- // Textures need a MIP. First indirection is always to mip 0. If there's another, we'll add it
- // later.
- if (sampler.isTexture())
- load->getSequence().push_back(intermediate.addConstantUnion(0, loc, true));
+ if (! mipsOperatorMipArg.empty() && mipsOperatorMipArg.back().mipLevel == nullptr) {
+ // The first operator[] to a .mips[] sequence is the mip level. We'll remember it.
+ mipsOperatorMipArg.back().mipLevel = index;
+ return base; // next [] index is to the same base.
+ } else {
+ TIntermAggregate* load = new TIntermAggregate(sampler.isImage() ? EOpImageLoad : EOpTextureFetch);
+
+ TType sampReturnType;
+ getTextureReturnType(sampler, sampReturnType);
+
+ load->setType(sampReturnType);
+ load->setLoc(loc);
+ load->getSequence().push_back(base);
+ load->getSequence().push_back(index);
+
+ // Textures need a MIP. If we saw one go by, use it. Otherwise, use zero.
+ if (sampler.isTexture()) {
+ if (! mipsOperatorMipArg.empty()) {
+ load->getSequence().push_back(mipsOperatorMipArg.back().mipLevel);
+ mipsOperatorMipArg.pop_back();
+ } else {
+ load->getSequence().push_back(intermediate.addConstantUnion(0, loc, true));
+ }
+ }
- return load;
+ return load;
+ }
}
}
@@ -718,10 +771,33 @@ TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIn
}
//
+// Cast index value to a uint if it isn't already (for operator[], load indexes, etc)
+TIntermTyped* HlslParseContext::makeIntegerIndex(TIntermTyped* index)
+{
+ const TBasicType indexBasicType = index->getType().getBasicType();
+ const int vecSize = index->getType().getVectorSize();
+
+ // We can use int types directly as the index
+ if (indexBasicType == EbtInt || indexBasicType == EbtUint ||
+ indexBasicType == EbtInt64 || indexBasicType == EbtUint64)
+ return index;
+
+ // Cast index to unsigned integer if it isn't one.
+ return intermediate.addConversion(EOpConstructUint, TType(EbtUint, EvqTemporary, vecSize), index);
+}
+
+//
// Handle seeing a base[index] dereference in the grammar.
//
TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index)
{
+ index = makeIntegerIndex(index);
+
+ if (index == nullptr) {
+ error(loc, " unknown index type ", "", "");
+ return nullptr;
+ }
+
TIntermTyped* result = handleBracketOperator(loc, base, index);
if (result != nullptr)
@@ -729,34 +805,35 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc,
bool flattened = false;
int indexValue = 0;
- if (index->getQualifier().storage == EvqConst) {
+ if (index->getQualifier().isFrontEndConstant())
indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst();
- checkIndex(loc, base->getType(), indexValue);
- }
variableCheck(base);
if (! base->isArray() && ! base->isMatrix() && ! base->isVector()) {
if (base->getAsSymbolNode())
- error(loc, " left of '[' is not of type array, matrix, or vector ", base->getAsSymbolNode()->getName().c_str(), "");
+ error(loc, " left of '[' is not of type array, matrix, or vector ",
+ base->getAsSymbolNode()->getName().c_str(), "");
else
error(loc, " left of '[' is not of type array, matrix, or vector ", "expression", "");
- } else if (base->getType().getQualifier().storage == EvqConst && index->getQualifier().storage == EvqConst)
+ } else if (base->getType().getQualifier().storage == EvqConst && index->getQualifier().storage == EvqConst) {
+ // both base and index are front-end constants
+ checkIndex(loc, base->getType(), indexValue);
return intermediate.foldDereference(base, indexValue, loc);
- else {
+ } else {
// at least one of base and index is variable...
- if (base->getAsSymbolNode() && (wasFlattened(base) || shouldFlattenUniform(base->getType()))) {
+ if (base->getAsSymbolNode() && wasFlattened(base)) {
if (index->getQualifier().storage != EvqConst)
error(loc, "Invalid variable index to flattened array", base->getAsSymbolNode()->getName().c_str(), "");
result = flattenAccess(base, indexValue);
flattened = (result != base);
} else {
- splitAccessArray(loc, base, index);
-
- if (index->getQualifier().storage == EvqConst) {
+ if (index->getQualifier().isFrontEndConstant()) {
if (base->getType().isImplicitlySizedArray())
updateImplicitArraySize(loc, base, indexValue);
+ else
+ checkIndex(loc, base->getType(), indexValue);
result = intermediate.addIndex(EOpIndexDirect, base, index, loc);
} else {
result = intermediate.addIndex(EOpIndexIndirect, base, index, loc);
@@ -785,23 +862,20 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc,
return result;
}
-void HlslParseContext::checkIndex(const TSourceLoc& /*loc*/, const TType& /*type*/, int& /*index*/)
-{
- // HLSL todo: any rules for index fixups?
-}
-
// Handle seeing a binary node with a math operation.
-TIntermTyped* HlslParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right)
+TIntermTyped* HlslParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op,
+ TIntermTyped* left, TIntermTyped* right)
{
TIntermTyped* result = intermediate.addBinaryMath(op, left, right, loc);
- if (! result)
+ if (result == nullptr)
binaryOpError(loc, str, left->getCompleteString(), right->getCompleteString());
return result;
}
// Handle seeing a unary node with a math operation.
-TIntermTyped* HlslParseContext::handleUnaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* childNode)
+TIntermTyped* HlslParseContext::handleUnaryMath(const TSourceLoc& loc, const char* str, TOperator op,
+ TIntermTyped* childNode)
{
TIntermTyped* result = intermediate.addUnaryMath(op, childNode, loc);
@@ -835,7 +909,11 @@ bool HlslParseContext::isStructBufferMethod(const TString& name) const
name == "InterlockedMax" ||
name == "InterlockedMin" ||
name == "InterlockedOr" ||
- name == "InterlockedXor";
+ name == "InterlockedXor" ||
+ name == "IncrementCounter" ||
+ name == "DecrementCounter" ||
+ name == "Append" ||
+ name == "Consume";
}
//
@@ -852,7 +930,23 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt
}
TIntermTyped* result = base;
- if (base->isVector() || base->isScalar()) {
+
+ if (base->getType().getBasicType() == EbtSampler) {
+ // Handle .mips[mipid][pos] operation on textures
+ const TSampler& sampler = base->getType().getSampler();
+ if (sampler.isTexture() && field == "mips") {
+ // Push a null to signify that we expect a mip level under operator[] next.
+ mipsOperatorMipArg.push_back(tMipsOperatorData(loc, nullptr));
+ // Keep 'result' pointing to 'base', since we expect an operator[] to go by next.
+ } else {
+ if (field == "mips")
+ error(loc, "unexpected texture type for .mips[][] operator:",
+ base->getType().getCompleteString().c_str(), "");
+ else
+ error(loc, "unexpected operator on texture type:", field.c_str(),
+ base->getType().getCompleteString().c_str());
+ }
+ } else if (base->isVector() || base->isScalar()) {
TSwizzleSelectors<TVectorSelector> selectors;
parseSwizzleSelector(loc, field, base->getVectorSize(), selectors);
@@ -884,7 +978,8 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt
} else {
TIntermTyped* index = intermediate.addSwizzle(selectors, loc);
result = intermediate.addIndex(EOpVectorSwizzle, base, index, loc);
- result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, selectors.size()));
+ result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision,
+ selectors.size()));
}
}
} else if (base->isMatrix()) {
@@ -898,10 +993,14 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt
result = intermediate.foldDereference(base, selectors[0].coord1, loc);
result = intermediate.foldDereference(result, selectors[0].coord2, loc);
} else {
- result = intermediate.addIndex(EOpIndexDirect, base, intermediate.addConstantUnion(selectors[0].coord1, loc), loc);
+ result = intermediate.addIndex(EOpIndexDirect, base,
+ intermediate.addConstantUnion(selectors[0].coord1, loc),
+ loc);
TType dereferencedCol(base->getType(), 0);
result->setType(dereferencedCol);
- result = intermediate.addIndex(EOpIndexDirect, result, intermediate.addConstantUnion(selectors[0].coord2, loc), loc);
+ result = intermediate.addIndex(EOpIndexDirect, result,
+ intermediate.addConstantUnion(selectors[0].coord2, loc),
+ loc);
TType dereferenced(dereferencedCol, 0);
result->setType(dereferenced);
}
@@ -912,7 +1011,8 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt
if (base->getType().getQualifier().isFrontEndConstant())
result = intermediate.foldDereference(base, column, loc);
else {
- result = intermediate.addIndex(EOpIndexDirect, base, intermediate.addConstantUnion(column, loc), loc);
+ result = intermediate.addIndex(EOpIndexDirect, base, intermediate.addConstantUnion(column, loc),
+ loc);
TType dereferenced(base->getType(), 0);
result->setType(dereferenced);
}
@@ -920,7 +1020,8 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt
// general case, not a column, not a single component
TIntermTyped* index = intermediate.addSwizzle(selectors, loc);
result = intermediate.addIndex(EOpMatrixSwizzle, base, index, loc);
- result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, selectors.size()));
+ result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision,
+ selectors.size()));
}
}
} else if (base->getBasicType() == EbtStruct || base->getBasicType() == EbtBlock) {
@@ -934,21 +1035,15 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt
}
}
if (fieldFound) {
- if (base->getAsSymbolNode() && (wasFlattened(base) || shouldFlattenUniform(base->getType()))) {
+ if (base->getAsSymbolNode() && wasFlattened(base)) {
result = flattenAccess(base, member);
} else {
- // Update the base and member to access if this was a split structure.
- result = splitAccessStruct(loc, base, member);
- fields = base->getType().getStruct();
-
- if (result == nullptr) {
- if (base->getType().getQualifier().storage == EvqConst)
- result = intermediate.foldDereference(base, member, loc);
- else {
- TIntermTyped* index = intermediate.addConstantUnion(member, loc);
- result = intermediate.addIndex(EOpIndexDirectStruct, base, index, loc);
- result->setType(*(*fields)[member].type);
- }
+ if (base->getType().getQualifier().storage == EvqConst)
+ result = intermediate.foldDereference(base, member, loc);
+ else {
+ TIntermTyped* index = intermediate.addConstantUnion(member, loc);
+ result = intermediate.addIndex(EOpIndexDirectStruct, base, index, loc);
+ result->setType(*(*fields)[member].type);
}
}
} else
@@ -983,109 +1078,107 @@ bool HlslParseContext::isBuiltInMethod(const TSourceLoc&, TIntermTyped* base, co
return false;
}
-// Split the type of the given node into two structs:
-// 1. interstage IO
-// 2. everything else
-// IO members are put into the ioStruct. The type is modified to remove them.
-void HlslParseContext::split(TIntermTyped* node)
+// Independently establish a built-in that is a member of a structure.
+// 'arraySizes' are what's desired for the independent built-in, whatever
+// the higher-level source/expression of them was.
+void HlslParseContext::splitBuiltIn(const TString& baseName, const TType& memberType, const TArraySizes* arraySizes,
+ const TQualifier& outerQualifier)
{
- if (node == nullptr)
- return;
+ // Because of arrays of structs, we might be asked more than once,
+ // but the arraySizes passed in should have captured the whole thing
+ // the first time.
+ // However, clip/cull rely on multiple updates.
+ if (!isClipOrCullDistance(memberType))
+ if (splitBuiltIns.find(tInterstageIoData(memberType.getQualifier().builtIn, outerQualifier.storage)) !=
+ splitBuiltIns.end())
+ return;
- TIntermSymbol* symNode = node->getAsSymbolNode();
+ TVariable* ioVar = makeInternalVariable(baseName + "." + memberType.getFieldName(), memberType);
- if (symNode == nullptr)
- return;
+ if (arraySizes != nullptr && !memberType.isArray())
+ ioVar->getWritableType().newArraySizes(*arraySizes);
- // Create a new variable:
- TType& splitType = split(*symNode->getType().clone(), symNode->getName());
+ splitBuiltIns[tInterstageIoData(memberType.getQualifier().builtIn, outerQualifier.storage)] = ioVar;
+ if (!isClipOrCullDistance(ioVar->getType()))
+ trackLinkage(*ioVar);
+
+ // Merge qualifier from the user structure
+ mergeQualifiers(ioVar->getWritableType().getQualifier(), outerQualifier);
- splitIoVars[symNode->getId()] = makeInternalVariable(symNode->getName(), splitType);
+ // Fix the builtin type if needed (e.g, some types require fixed array sizes, no matter how the
+ // shader declared them). This is done after mergeQualifiers(), in case fixBuiltInIoType looks
+ // at the qualifier to determine e.g, in or out qualifications.
+ fixBuiltInIoType(ioVar->getWritableType());
+
+ // But, not location, we're losing that
+ ioVar->getWritableType().getQualifier().layoutLocation = TQualifier::layoutLocationEnd;
}
-// Split the type of the given variable into two structs:
+// Split a type into
+// 1. a struct of non-I/O members
+// 2. a collection of independent I/O variables
void HlslParseContext::split(const TVariable& variable)
{
- const TType& type = variable.getType();
-
- TString name = variable.getName();
-
// Create a new variable:
- TType& splitType = split(*type.clone(), name);
-
- splitIoVars[variable.getUniqueId()] = makeInternalVariable(variable.getName(), splitType);
+ const TType& clonedType = *variable.getType().clone();
+ const TType& splitType = split(clonedType, variable.getName(), clonedType.getQualifier());
+ splitNonIoVars[variable.getUniqueId()] = makeInternalVariable(variable.getName(), splitType);
}
-// Recursive implementation of split(const TVariable& variable).
+// Recursive implementation of split().
// Returns reference to the modified type.
-TType& HlslParseContext::split(TType& type, TString name, const TType* outerStructType)
+const TType& HlslParseContext::split(const TType& type, const TString& name, const TQualifier& outerQualifier)
{
- const TArraySizes* arraySizes = nullptr;
-
- // At the outer-most scope, remember the struct type so we can examine its storage class
- // at deeper levels.
- if (outerStructType == nullptr)
- outerStructType = &type;
-
- if (type.isArray())
- arraySizes = &type.getArraySizes();
-
- // We can ignore arrayness: it's uninvolved.
if (type.isStruct()) {
TTypeList* userStructure = type.getWritableStruct();
-
- // Get iterator to (now at end) set of builtin interstage IO members
- const auto firstIo = std::stable_partition(userStructure->begin(), userStructure->end(),
- [this](const TTypeLoc& t) {return !t.type->isBuiltInInterstageIO(language);});
-
- // Move those to the builtin IO. However, we also propagate arrayness (just one level is handled
- // now) to this variable.
- for (auto ioType = firstIo; ioType != userStructure->end(); ++ioType) {
- const TType& memberType = *ioType->type;
- TVariable* ioVar = makeInternalVariable(name + (name.empty() ? "" : "_") + memberType.getFieldName(), memberType);
-
- if (arraySizes)
- ioVar->getWritableType().newArraySizes(*arraySizes);
-
- interstageBuiltInIo[tInterstageIoData(memberType, *outerStructType)] = ioVar;
-
- // Merge qualifier from the user structure
- mergeQualifiers(ioVar->getWritableType().getQualifier(), outerStructType->getQualifier());
+ for (auto ioType = userStructure->begin(); ioType != userStructure->end(); ) {
+ if (ioType->type->isBuiltIn()) {
+ // move out the built-in
+ splitBuiltIn(name, *ioType->type, type.getArraySizes(), outerQualifier);
+ ioType = userStructure->erase(ioType);
+ } else {
+ split(*ioType->type, name + "." + ioType->type->getFieldName(), outerQualifier);
+ ++ioType;
+ }
}
-
- // Erase the IO vars from the user structure.
- userStructure->erase(firstIo, userStructure->end());
-
- // Recurse further into the members.
- for (unsigned int i = 0; i < userStructure->size(); ++i)
- split(*(*userStructure)[i].type,
- name + (name.empty() ? "" : "_") + (*userStructure)[i].type->getFieldName(),
- outerStructType);
}
return type;
}
-// Is this a uniform array which should be flattened?
-bool HlslParseContext::shouldFlattenUniform(const TType& type) const
+// Is this an aggregate that should be flattened?
+// Can be applied to intermediate levels of type in a hierarchy.
+// Some things like flattening uniform arrays are only about the top level
+// of the aggregate, triggered on 'topLevel'.
+bool HlslParseContext::shouldFlatten(const TType& type, TStorageQualifier qualifier, bool topLevel) const
{
- const TStorageQualifier qualifier = type.getQualifier().storage;
-
- return qualifier == EvqUniform &&
- ((type.isArray() && intermediate.getFlattenUniformArrays()) || type.isStruct()) &&
- type.containsOpaque();
+ switch (qualifier) {
+ case EvqVaryingIn:
+ case EvqVaryingOut:
+ return type.isStruct() || type.isArray();
+ case EvqUniform:
+ return (type.isArray() && intermediate.getFlattenUniformArrays() && topLevel) ||
+ (type.isStruct() && type.containsOpaque());
+ default:
+ return type.isStruct() && type.containsOpaque();
+ };
}
// Top level variable flattening: construct data
-void HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable)
+void HlslParseContext::flatten(const TVariable& variable, bool linkage)
{
const TType& type = variable.getType();
+ // If it's a standalone built-in, there is nothing to flatten
+ if (type.isBuiltIn() && !type.isStruct())
+ return;
+
auto entry = flattenMap.insert(std::make_pair(variable.getUniqueId(),
- TFlattenData(type.getQualifier().layoutBinding)));
+ TFlattenData(type.getQualifier().layoutBinding,
+ type.getQualifier().layoutLocation)));
// the item is a map pair, so first->second is the TFlattenData itself.
- flatten(loc, variable, type, entry.first->second, "");
+ flatten(variable, type, entry.first->second, variable.getName(), linkage, type.getQualifier(), nullptr);
}
// Recursively flatten the given variable at the provided type, building the flattenData as we go.
@@ -1115,15 +1208,17 @@ void HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable)
//
// so the 4th flattened member in traversal order is ours.
//
-int HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable, const TType& type,
- TFlattenData& flattenData, TString name)
+int HlslParseContext::flatten(const TVariable& variable, const TType& type,
+ TFlattenData& flattenData, TString name, bool linkage,
+ const TQualifier& outerQualifier,
+ const TArraySizes* builtInArraySizes)
{
// If something is an arrayed struct, the array flattener will recursively call flatten()
// to then flatten the struct, so this is an "if else": we don't do both.
if (type.isArray())
- return flattenArray(loc, variable, type, flattenData, name);
+ return flattenArray(variable, type, flattenData, name, linkage, outerQualifier);
else if (type.isStruct())
- return flattenStruct(loc, variable, type, flattenData, name);
+ return flattenStruct(variable, type, flattenData, name, linkage, outerQualifier, builtInArraySizes);
else {
assert(0); // should never happen
return -1;
@@ -1132,11 +1227,12 @@ int HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable,
// Add a single flattened member to the flattened data being tracked for the composite
// Returns true for the final flattening level.
-int HlslParseContext::addFlattenedMember(const TSourceLoc& loc,
- const TVariable& variable, const TType& type, TFlattenData& flattenData,
- const TString& memberName, bool track)
+int HlslParseContext::addFlattenedMember(const TVariable& variable, const TType& type, TFlattenData& flattenData,
+ const TString& memberName, bool linkage,
+ const TQualifier& outerQualifier,
+ const TArraySizes* builtInArraySizes)
{
- if (isFinalFlattening(type)) {
+ if (!shouldFlatten(type, outerQualifier.storage, false)) {
// This is as far as we flatten. Insert the variable.
TVariable* memberVariable = makeInternalVariable(memberName, type);
mergeQualifiers(memberVariable->getWritableType().getQualifier(), variable.getType().getQualifier());
@@ -1144,16 +1240,28 @@ int HlslParseContext::addFlattenedMember(const TSourceLoc& loc,
if (flattenData.nextBinding != TQualifier::layoutBindingEnd)
memberVariable->getWritableType().getQualifier().layoutBinding = flattenData.nextBinding++;
+ if (memberVariable->getType().isBuiltIn()) {
+ // inherited locations are nonsensical for built-ins (TODO: what if semantic had a number)
+ memberVariable->getWritableType().getQualifier().layoutLocation = TQualifier::layoutLocationEnd;
+ } else {
+ // inherited locations must be auto bumped, not replicated
+ if (flattenData.nextLocation != TQualifier::layoutLocationEnd) {
+ memberVariable->getWritableType().getQualifier().layoutLocation = flattenData.nextLocation;
+ flattenData.nextLocation += intermediate.computeTypeLocationSize(memberVariable->getType());
+ nextOutLocation = std::max(nextOutLocation, flattenData.nextLocation);
+ }
+ }
+
flattenData.offsets.push_back(static_cast<int>(flattenData.members.size()));
flattenData.members.push_back(memberVariable);
- if (track)
+ if (linkage)
trackLinkage(*memberVariable);
- return static_cast<int>(flattenData.offsets.size())-1; // location of the member reference
+ return static_cast<int>(flattenData.offsets.size()) - 1; // location of the member reference
} else {
// Further recursion required
- return flatten(loc, variable, type, flattenData, memberName);
+ return flatten(variable, type, flattenData, memberName, linkage, outerQualifier, builtInArraySizes);
}
}
@@ -1161,8 +1269,10 @@ int HlslParseContext::addFlattenedMember(const TSourceLoc& loc,
// equivalent set of individual variables.
//
// Assumes shouldFlatten() or equivalent was called first.
-int HlslParseContext::flattenStruct(const TSourceLoc& loc, const TVariable& variable, const TType& type,
- TFlattenData& flattenData, TString name)
+int HlslParseContext::flattenStruct(const TVariable& variable, const TType& type,
+ TFlattenData& flattenData, TString name, bool linkage,
+ const TQualifier& outerQualifier,
+ const TArraySizes* builtInArraySizes)
{
assert(type.isStruct());
@@ -1170,15 +1280,22 @@ int HlslParseContext::flattenStruct(const TSourceLoc& loc, const TVariable& vari
// Reserve space for this tree level.
int start = static_cast<int>(flattenData.offsets.size());
- int pos = start;
+ int pos = start;
flattenData.offsets.resize(int(pos + members.size()), -1);
for (int member = 0; member < (int)members.size(); ++member) {
TType& dereferencedType = *members[member].type;
- const TString memberName = name + (name.empty() ? "" : ".") + dereferencedType.getFieldName();
-
- const int mpos = addFlattenedMember(loc, variable, dereferencedType, flattenData, memberName, false);
- flattenData.offsets[pos++] = mpos;
+ if (dereferencedType.isBuiltIn())
+ splitBuiltIn(variable.getName(), dereferencedType, builtInArraySizes, outerQualifier);
+ else {
+ const int mpos = addFlattenedMember(variable, dereferencedType, flattenData,
+ name + "." + dereferencedType.getFieldName(),
+ linkage, outerQualifier,
+ builtInArraySizes == nullptr && dereferencedType.isArray()
+ ? &dereferencedType.getArraySizes()
+ : builtInArraySizes);
+ flattenData.offsets[pos++] = mpos;
+ }
}
return start;
@@ -1188,13 +1305,11 @@ int HlslParseContext::flattenStruct(const TSourceLoc& loc, const TVariable& vari
// equivalent set of individual variables.
//
// Assumes shouldFlatten() or equivalent was called first.
-int HlslParseContext::flattenArray(const TSourceLoc& loc, const TVariable& variable, const TType& type,
- TFlattenData& flattenData, TString name)
+int HlslParseContext::flattenArray(const TVariable& variable, const TType& type,
+ TFlattenData& flattenData, TString name, bool linkage,
+ const TQualifier& outerQualifier)
{
- assert(type.isArray());
-
- if (type.isImplicitlySizedArray())
- error(loc, "cannot flatten implicitly sized array", variable.getName().c_str(), "");
+ assert(type.isArray() && !type.isImplicitlySizedArray());
const int size = type.getOuterArraySize();
const TType dereferencedType(type, 0);
@@ -1210,8 +1325,9 @@ int HlslParseContext::flattenArray(const TSourceLoc& loc, const TVariable& varia
for (int element=0; element < size; ++element) {
char elementNumBuf[20]; // sufficient for MAXINT
snprintf(elementNumBuf, sizeof(elementNumBuf)-1, "[%d]", element);
- const int mpos = addFlattenedMember(loc, variable, dereferencedType, flattenData,
- name + elementNumBuf, true);
+ const int mpos = addFlattenedMember(variable, dereferencedType, flattenData,
+ name + elementNumBuf, linkage, outerQualifier,
+ type.getArraySizes());
flattenData.offsets[pos++] = mpos;
}
@@ -1223,185 +1339,208 @@ int HlslParseContext::flattenArray(const TSourceLoc& loc, const TVariable& varia
bool HlslParseContext::wasFlattened(const TIntermTyped* node) const
{
return node != nullptr && node->getAsSymbolNode() != nullptr &&
- wasFlattened(node->getAsSymbolNode()->getId());
+ wasFlattened(node->getAsSymbolNode()->getId());
}
// Return true if we have split this structure
bool HlslParseContext::wasSplit(const TIntermTyped* node) const
{
return node != nullptr && node->getAsSymbolNode() != nullptr &&
- wasSplit(node->getAsSymbolNode()->getId());
+ wasSplit(node->getAsSymbolNode()->getId());
}
// Turn an access into an aggregate that was flattened to instead be
// an access to the individual variable the member was flattened to.
-// Assumes shouldFlatten() or equivalent was called first.
+// Assumes wasFlattened() or equivalent was called first.
TIntermTyped* HlslParseContext::flattenAccess(TIntermTyped* base, int member)
{
const TType dereferencedType(base->getType(), member); // dereferenced type
-
const TIntermSymbol& symbolNode = *base->getAsSymbolNode();
+ TIntermTyped* flattened = flattenAccess(symbolNode.getId(), member, base->getQualifier().storage,
+ dereferencedType, symbolNode.getFlattenSubset());
- const auto flattenData = flattenMap.find(symbolNode.getId());
+ return flattened ? flattened : base;
+}
+TIntermTyped* HlslParseContext::flattenAccess(int uniqueId, int member, TStorageQualifier outerStorage,
+ const TType& dereferencedType, int subset)
+{
+ const auto flattenData = flattenMap.find(uniqueId);
if (flattenData == flattenMap.end())
- return base;
+ return nullptr;
// Calculate new cumulative offset from the packed tree
- flattenOffset.back() = flattenData->second.offsets[flattenOffset.back() + member];
+ int newSubset = flattenData->second.offsets[subset >= 0 ? subset + member : member];
- if (isFinalFlattening(dereferencedType)) {
+ TIntermSymbol* subsetSymbol;
+ if (!shouldFlatten(dereferencedType, outerStorage, false)) {
// Finished flattening: create symbol for variable
- member = flattenData->second.offsets[flattenOffset.back()];
+ member = flattenData->second.offsets[newSubset];
const TVariable* memberVariable = flattenData->second.members[member];
- return intermediate.addSymbol(*memberVariable);
+ subsetSymbol = intermediate.addSymbol(*memberVariable);
+ subsetSymbol->setFlattenSubset(-1);
} else {
+
// If this is not the final flattening, accumulate the position and return
// an object of the partially dereferenced type.
- return new TIntermSymbol(symbolNode.getId(), "flattenShadow", dereferencedType);
+ subsetSymbol = new TIntermSymbol(uniqueId, "flattenShadow", dereferencedType);
+ subsetSymbol->setFlattenSubset(newSubset);
}
+
+ return subsetSymbol;
}
-// Find and return the split IO TVariable for id, or nullptr if none.
-TVariable* HlslParseContext::getSplitIoVar(int id) const
+// For finding where the first leaf is in a subtree of a multi-level aggregate
+// that is just getting a subset assigned. Follows the same logic as flattenAccess,
+// but logically going down the "left-most" tree branch each step of the way.
+//
+// Returns the offset into the first leaf of the subset.
+int HlslParseContext::findSubtreeOffset(const TIntermNode& node) const
{
- const auto splitIoVar = splitIoVars.find(id);
+ const TIntermSymbol* sym = node.getAsSymbolNode();
+ if (sym == nullptr)
+ return 0;
+ if (!sym->isArray() && !sym->isStruct())
+ return 0;
+ int subset = sym->getFlattenSubset();
+ if (subset == -1)
+ return 0;
- if (splitIoVar == splitIoVars.end())
- return nullptr;
+ // Getting this far means a partial aggregate is identified by the flatten subset.
+ // Find the first leaf of the subset.
- return splitIoVar->second;
-}
+ const auto flattenData = flattenMap.find(sym->getId());
+ if (flattenData == flattenMap.end())
+ return 0;
-// Find and return the split IO TVariable for variable, or nullptr if none.
-TVariable* HlslParseContext::getSplitIoVar(const TVariable* var) const
-{
- if (var == nullptr)
- return nullptr;
+ return findSubtreeOffset(sym->getType(), subset, flattenData->second.offsets);
- return getSplitIoVar(var->getUniqueId());
+ do {
+ subset = flattenData->second.offsets[subset];
+ } while (true);
}
-
-// Find and return the split IO TVariable for symbol in this node, or nullptr if none.
-TVariable* HlslParseContext::getSplitIoVar(const TIntermTyped* node) const
+// Recursively do the desent
+int HlslParseContext::findSubtreeOffset(const TType& type, int subset, const TVector<int>& offsets) const
{
- if (node == nullptr)
- return nullptr;
-
- const TIntermSymbol* symbolNode = node->getAsSymbolNode();
+ if (!type.isArray() && !type.isStruct())
+ return offsets[subset];
+ TType derefType(type, 0);
+ return findSubtreeOffset(derefType, offsets[subset], offsets);
+};
- if (symbolNode == nullptr)
+// Find and return the split IO TVariable for id, or nullptr if none.
+TVariable* HlslParseContext::getSplitNonIoVar(int id) const
+{
+ const auto splitNonIoVar = splitNonIoVars.find(id);
+ if (splitNonIoVar == splitNonIoVars.end())
return nullptr;
- return getSplitIoVar(symbolNode->getId());
+ return splitNonIoVar->second;
}
-// Remember the index used to dereference into this structure, in case it has to be moved to a
-// split-off builtin IO member.
-void HlslParseContext::splitAccessArray(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index)
+// Pass through to base class after remembering built-in mappings.
+void HlslParseContext::trackLinkage(TSymbol& symbol)
{
- const TVariable* splitIoVar = getSplitIoVar(base);
-
- // Not a split structure
- if (splitIoVar == nullptr)
- return;
+ TBuiltInVariable biType = symbol.getType().getQualifier().builtIn;
- if (builtInIoBase) {
- error(loc, "only one array dimension supported for builtIn IO variable", "", "");
- return;
- }
+ if (biType != EbvNone)
+ builtInTessLinkageSymbols[biType] = symbol.clone();
- builtInIoBase = base;
- builtInIoIndex = index;
+ TParseContextBase::trackLinkage(symbol);
}
-// Turn an access into an struct that was split to instead be an
-// access to either the modified structure, or a direct reference to
-// one of the split member variables.
-TIntermTyped* HlslParseContext::splitAccessStruct(const TSourceLoc& loc, TIntermTyped*& base, int& member)
-{
- // nothing to do
- if (base == nullptr)
- return nullptr;
-
- // We have a pending bracket reference to an outer struct that we may want to move to an inner member.
- if (builtInIoBase)
- base = builtInIoBase;
- const TVariable* splitIoVar = getSplitIoVar(base);
-
- if (splitIoVar == nullptr)
- return nullptr;
-
- const TTypeList& members = *base->getType().getStruct();
+// Returns true if the built-in is a clip or cull distance variable.
+bool HlslParseContext::isClipOrCullDistance(TBuiltInVariable builtIn)
+{
+ return builtIn == EbvClipDistance || builtIn == EbvCullDistance;
+}
- const TType& memberType = *members[member].type;
+// Some types require fixed array sizes in SPIR-V, but can be scalars or
+// arrays of sizes SPIR-V doesn't allow. For example, tessellation factors.
+// This creates the right size. A conversion is performed when the internal
+// type is copied to or from the external type. This corrects the externally
+// facing input or output type to abide downstream semantics.
+void HlslParseContext::fixBuiltInIoType(TType& type)
+{
+ int requiredArraySize = 0;
- if (memberType.isBuiltInInterstageIO(language)) {
- // It's one of the interstage IO variables we split off.
- TIntermTyped* builtIn = intermediate.addSymbol(*interstageBuiltInIo[tInterstageIoData(memberType, base->getType())], loc);
+ switch (type.getQualifier().builtIn) {
+ case EbvTessLevelOuter: requiredArraySize = 4; break;
+ case EbvTessLevelInner: requiredArraySize = 2; break;
- // If there's an array reference to an outer split struct, we re-apply it here.
- if (builtInIoIndex != nullptr) {
- if (builtInIoIndex->getQualifier().storage == EvqConst)
- builtIn = intermediate.addIndex(EOpIndexDirect, builtIn, builtInIoIndex, loc);
- else
- builtIn = intermediate.addIndex(EOpIndexIndirect, builtIn, builtInIoIndex, loc);
+ case EbvTessCoord:
+ {
+ // tesscoord is always a vec3 for the IO variable, no matter the shader's
+ // declared vector size.
+ TType tessCoordType(type.getBasicType(), type.getQualifier().storage, 3);
- builtIn->setType(memberType);
+ tessCoordType.getQualifier() = type.getQualifier();
+ type.shallowCopy(tessCoordType);
- builtInIoIndex = nullptr;
- builtInIoBase = nullptr;
+ break;
}
+ default:
+ if (isClipOrCullDistance(type)) {
+ const int loc = type.getQualifier().layoutLocation;
- return builtIn;
- } else {
- // It's not an IO variable. Find the equivalent index into the new variable.
- base = intermediate.addSymbol(*splitIoVar, loc);
-
- int newMember = 0;
- for (int m=0; m<member; ++m)
- if (!members[m].type->isBuiltInInterstageIO(language))
- ++newMember;
-
- member = newMember;
+ if (type.getQualifier().builtIn == EbvClipDistance) {
+ if (type.getQualifier().storage == EvqVaryingIn)
+ clipSemanticNSizeIn[loc] = type.getVectorSize();
+ else
+ clipSemanticNSizeOut[loc] = type.getVectorSize();
+ } else {
+ if (type.getQualifier().storage == EvqVaryingIn)
+ cullSemanticNSizeIn[loc] = type.getVectorSize();
+ else
+ cullSemanticNSizeOut[loc] = type.getVectorSize();
+ }
+ }
- return nullptr;
+ return;
}
-}
-
-// Pass through to base class after remembering builtin mappings.
-void HlslParseContext::trackLinkage(TSymbol& symbol)
-{
- TBuiltInVariable biType = symbol.getType().getQualifier().builtIn;
- if (biType != EbvNone)
- builtInLinkageSymbols[biType] = symbol.clone();
- TParseContextBase::trackLinkage(symbol);
+ // Alter or set array size as needed.
+ if (requiredArraySize > 0) {
+ if (!type.isArray() || type.getOuterArraySize() != requiredArraySize) {
+ TArraySizes arraySizes;
+ arraySizes.addInnerSize(requiredArraySize);
+ type.newArraySizes(arraySizes);
+ }
+ }
}
-
// Variables that correspond to the user-interface in and out of a stage
-// (not the built-in interface) are assigned locations and
-// registered as a linkage node (part of the stage's external interface).
-//
+// (not the built-in interface) are
+// - assigned locations
+// - registered as a linkage node (part of the stage's external interface).
// Assumes it is called in the order in which locations should be assigned.
-void HlslParseContext::assignLocations(TVariable& variable)
+void HlslParseContext::assignToInterface(TVariable& variable)
{
const auto assignLocation = [&](TVariable& variable) {
- const TQualifier& qualifier = variable.getType().getQualifier();
- if (qualifier.storage == EvqVaryingIn || qualifier.storage == EvqVaryingOut) {
- if (qualifier.builtIn == EbvNone) {
- if (qualifier.storage == EvqVaryingIn) {
- variable.getWritableType().getQualifier().layoutLocation = nextInLocation;
- nextInLocation += intermediate.computeTypeLocationSize(variable.getType());
- } else {
- variable.getWritableType().getQualifier().layoutLocation = nextOutLocation;
- nextOutLocation += intermediate.computeTypeLocationSize(variable.getType());
+ TType& type = variable.getWritableType();
+ if (!type.isStruct() || type.getStruct()->size() > 0) {
+ TQualifier& qualifier = type.getQualifier();
+ if (qualifier.storage == EvqVaryingIn || qualifier.storage == EvqVaryingOut) {
+ if (qualifier.builtIn == EbvNone && !qualifier.hasLocation()) {
+ // Strip off the outer array dimension for those having an extra one.
+ int size;
+ if (type.isArray() && qualifier.isArrayedIo(language)) {
+ TType elementType(type, 0);
+ size = intermediate.computeTypeLocationSize(elementType);
+ } else
+ size = intermediate.computeTypeLocationSize(type);
+
+ if (qualifier.storage == EvqVaryingIn) {
+ variable.getWritableType().getQualifier().layoutLocation = nextInLocation;
+ nextInLocation += size;
+ } else {
+ variable.getWritableType().getQualifier().layoutLocation = nextOutLocation;
+ nextOutLocation += size;
+ }
}
+ trackLinkage(variable);
}
-
- trackLinkage(variable);
}
};
@@ -1410,7 +1549,7 @@ void HlslParseContext::assignLocations(TVariable& variable)
for (auto member = memberList.begin(); member != memberList.end(); ++member)
assignLocation(**member);
} else if (wasSplit(variable.getUniqueId())) {
- TVariable* splitIoVar = getSplitIoVar(&variable);
+ TVariable* splitIoVar = getSplitNonIoVar(variable.getUniqueId());
assignLocation(*splitIoVar);
} else {
assignLocation(variable);
@@ -1451,30 +1590,27 @@ void HlslParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunction
error(loc, "function name is redeclaration of existing name", function.getName().c_str(), "");
}
-// Add interstage IO variables to the linkage in canonical order.
-void HlslParseContext::addInterstageIoToLinkage()
+// For struct buffers with counters, we must pass the counter buffer as hidden parameter.
+// This adds the hidden parameter to the parameter list in 'paramNodes' if needed.
+// Otherwise, it's a no-op
+void HlslParseContext::addStructBufferHiddenCounterParam(const TSourceLoc& loc, TParameter& param,
+ TIntermAggregate*& paramNodes)
{
- TSourceLoc loc;
- loc.init();
-
- std::vector<tInterstageIoData> io;
- io.reserve(interstageBuiltInIo.size());
+ if (! hasStructBuffCounter(*param.type))
+ return;
- for (auto ioVar = interstageBuiltInIo.begin(); ioVar != interstageBuiltInIo.end(); ++ioVar)
- io.push_back(ioVar->first);
+ const TString counterBlockName(getStructBuffCounterName(*param.name));
- // Our canonical order is the TBuiltInVariable numeric order.
- std::sort(io.begin(), io.end());
+ TType counterType;
+ counterBufferType(loc, counterType);
+ TVariable *variable = makeInternalVariable(counterBlockName, counterType);
- // We have to (potentially) track two IO blocks, one in, one out. E.g, a GS may have a
- // PerVertex block in both directions, possibly with different members.
- for (int idx = 0; idx < int(io.size()); ++idx) {
- TVariable* var = interstageBuiltInIo[io[idx]];
+ if (! symbolTable.insert(*variable))
+ error(loc, "redefinition", variable->getName().c_str(), "");
- // Add the loose interstage IO to the linkage
- if (var->getType().isLooseAndBuiltIn(language))
- trackLinkage(*var);
- }
+ paramNodes = intermediate.growAggregate(paramNodes,
+ intermediate.addSymbol(*variable, loc),
+ loc);
}
//
@@ -1484,13 +1620,14 @@ void HlslParseContext::addInterstageIoToLinkage()
// Returns an aggregate of parameter-symbol nodes.
//
TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& loc, TFunction& function,
- const TAttributeMap& attributes, TIntermNode*& entryPointTree)
+ const TAttributeMap& attributes,
+ TIntermNode*& entryPointTree)
{
currentCaller = function.getMangledName();
TSymbol* symbol = symbolTable.find(function.getMangledName());
TFunction* prevDec = symbol ? symbol->getAsFunction() : nullptr;
- if (! prevDec)
+ if (prevDec == nullptr)
error(loc, "can't find function", function.getName().c_str(), "");
// Note: 'prevDec' could be 'function' if this is the first time we've seen function
// as it would have just been put in the symbol table. Otherwise, we're looking up
@@ -1538,13 +1675,33 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l
symbolTable.makeInternalVariable(*variable);
pushImplicitThis(variable);
}
+
// Insert the parameters with name in the symbol table.
if (! symbolTable.insert(*variable))
error(loc, "redefinition", variable->getName().c_str(), "");
- // Add the parameter to the AST
- paramNodes = intermediate.growAggregate(paramNodes,
- intermediate.addSymbol(*variable, loc),
- loc);
+
+ // Add parameters to the AST list.
+ if (shouldFlatten(variable->getType(), variable->getType().getQualifier().storage, true)) {
+ // Expand the AST parameter nodes (but not the name mangling or symbol table view)
+ // for structures that need to be flattened.
+ flatten(*variable, false);
+ const TTypeList* structure = variable->getType().getStruct();
+ for (int mem = 0; mem < (int)structure->size(); ++mem) {
+ paramNodes = intermediate.growAggregate(paramNodes,
+ flattenAccess(variable->getUniqueId(), mem,
+ variable->getType().getQualifier().storage,
+ *(*structure)[mem].type),
+ loc);
+ }
+ } else {
+ // Add the parameter to the AST
+ paramNodes = intermediate.growAggregate(paramNodes,
+ intermediate.addSymbol(*variable, loc),
+ loc);
+ }
+
+ // Add hidden AST parameter for struct buffer counters, if needed.
+ addStructBufferHiddenCounterParam(loc, param, paramNodes);
} else
paramNodes = intermediate.growAggregate(paramNodes, intermediate.addSymbol(*param.type, loc), loc);
}
@@ -1559,48 +1716,9 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l
return paramNodes;
}
-//
-// Do all special handling for the entry point, including wrapping
-// the shader's entry point with the official entry point that will call it.
-//
-// The following:
-//
-// retType shaderEntryPoint(args...) // shader declared entry point
-// { body }
-//
-// Becomes
-//
-// out retType ret;
-// in iargs<that are input>...;
-// out oargs<that are output> ...;
-//
-// void shaderEntryPoint() // synthesized, but official, entry point
-// {
-// args<that are input> = iargs...;
-// ret = @shaderEntryPoint(args...);
-// oargs = args<that are output>...;
-// }
-//
-// The symbol table will still map the original entry point name to the
-// the modified function and it's new name:
-//
-// symbol table: shaderEntryPoint -> @shaderEntryPoint
-//
-// Returns nullptr if no entry-point tree was built, otherwise, returns
-// a subtree that creates the entry point.
-//
-TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunction& userFunction, const TAttributeMap& attributes)
+// Handle all [attrib] attribute for the shader entry point
+void HlslParseContext::handleEntryPointAttributes(const TSourceLoc& loc, const TAttributeMap& attributes)
{
- // if we aren't in the entry point, fix the IO as such and exit
- if (userFunction.getName().compare(intermediate.getEntryPointName().c_str()) != 0) {
- remapNonEntryPointIO(userFunction);
- return nullptr;
- }
-
- entryPointFunction = &userFunction; // needed in finish()
-
- // entry point logic...
-
// Handle entry-point function attributes
const TIntermAggregate* numThreads = attributes[EatNumThreads];
if (numThreads != nullptr) {
@@ -1611,35 +1729,33 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
}
// MaxVertexCount
- const TIntermAggregate* maxVertexCount = attributes[EatMaxVertexCount];
- if (maxVertexCount != nullptr) {
- if (! intermediate.setVertices(maxVertexCount->getSequence()[0]->getAsConstantUnion()->getConstArray()[0].getIConst())) {
- error(loc, "cannot change previously set maxvertexcount attribute", "", "");
+ if (attributes.contains(EatMaxVertexCount)) {
+ int maxVertexCount;
+
+ if (! attributes.getInt(EatMaxVertexCount, maxVertexCount)) {
+ error(loc, "invalid maxvertexcount", "", "");
+ } else {
+ if (! intermediate.setVertices(maxVertexCount))
+ error(loc, "cannot change previously set maxvertexcount attribute", "", "");
}
}
// Handle [patchconstantfunction("...")]
- const TIntermAggregate* pcfAttr = attributes[EatPatchConstantFunc];
- if (pcfAttr != nullptr) {
- const TConstUnion& pcfName = pcfAttr->getSequence()[0]->getAsConstantUnion()->getConstArray()[0];
-
- if (pcfName.getType() != EbtString) {
+ if (attributes.contains(EatPatchConstantFunc)) {
+ TString pcfName;
+ if (! attributes.getString(EatPatchConstantFunc, pcfName, 0, false)) {
error(loc, "invalid patch constant function", "", "");
} else {
- patchConstantFunctionName = *pcfName.getSConst();
+ patchConstantFunctionName = pcfName;
}
}
// Handle [domain("...")]
- const TIntermAggregate* domainAttr = attributes[EatDomain];
- if (domainAttr != nullptr) {
- const TConstUnion& domainType = domainAttr->getSequence()[0]->getAsConstantUnion()->getConstArray()[0];
- if (domainType.getType() != EbtString) {
+ if (attributes.contains(EatDomain)) {
+ TString domainStr;
+ if (! attributes.getString(EatDomain, domainStr)) {
error(loc, "invalid domain", "", "");
} else {
- TString domainStr = *domainType.getSConst();
- std::transform(domainStr.begin(), domainStr.end(), domainStr.begin(), ::tolower);
-
TLayoutGeometry domain = ElgNone;
if (domainStr == "tri") {
@@ -1652,54 +1768,56 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
error(loc, "unsupported domain type", domainStr.c_str(), "");
}
- if (! intermediate.setInputPrimitive(domain)) {
- error(loc, "cannot change previously set domain", TQualifier::getGeometryString(domain), "");
+ if (language == EShLangTessEvaluation) {
+ if (! intermediate.setInputPrimitive(domain))
+ error(loc, "cannot change previously set domain", TQualifier::getGeometryString(domain), "");
+ } else {
+ if (! intermediate.setOutputPrimitive(domain))
+ error(loc, "cannot change previously set domain", TQualifier::getGeometryString(domain), "");
}
}
}
- // Handle [outputtoplogy("...")]
- const TIntermAggregate* topologyAttr = attributes[EatOutputTopology];
- if (topologyAttr != nullptr) {
- const TConstUnion& topoType = topologyAttr->getSequence()[0]->getAsConstantUnion()->getConstArray()[0];
- if (topoType.getType() != EbtString) {
- error(loc, "invalid outputtoplogy", "", "");
+ // Handle [outputtopology("...")]
+ if (attributes.contains(EatOutputTopology)) {
+ TString topologyStr;
+ if (! attributes.getString(EatOutputTopology, topologyStr)) {
+ error(loc, "invalid outputtopology", "", "");
} else {
- TString topologyStr = *topoType.getSConst();
- std::transform(topologyStr.begin(), topologyStr.end(), topologyStr.begin(), ::tolower);
+ TVertexOrder vertexOrder = EvoNone;
+ TLayoutGeometry primitive = ElgNone;
- TVertexOrder topology = EvoNone;
-
if (topologyStr == "point") {
- topology = EvoNone;
+ intermediate.setPointMode();
} else if (topologyStr == "line") {
- topology = EvoNone;
+ primitive = ElgIsolines;
} else if (topologyStr == "triangle_cw") {
- topology = EvoCw;
+ vertexOrder = EvoCw;
+ primitive = ElgTriangles;
} else if (topologyStr == "triangle_ccw") {
- topology = EvoCcw;
+ vertexOrder = EvoCcw;
+ primitive = ElgTriangles;
} else {
- error(loc, "unsupported outputtoplogy type", topologyStr.c_str(), "");
+ error(loc, "unsupported outputtopology type", topologyStr.c_str(), "");
}
- if (topology != EvoNone) {
- if (! intermediate.setVertexOrder(topology)) {
- error(loc, "cannot change previously set outputtopology", TQualifier::getVertexOrderString(topology), "");
+ if (vertexOrder != EvoNone) {
+ if (! intermediate.setVertexOrder(vertexOrder)) {
+ error(loc, "cannot change previously set outputtopology",
+ TQualifier::getVertexOrderString(vertexOrder), "");
}
}
+ if (primitive != ElgNone)
+ intermediate.setOutputPrimitive(primitive);
}
}
// Handle [partitioning("...")]
- const TIntermAggregate* partitionAttr = attributes[EatPartitioning];
- if (partitionAttr != nullptr) {
- const TConstUnion& partType = partitionAttr->getSequence()[0]->getAsConstantUnion()->getConstArray()[0];
- if (partType.getType() != EbtString) {
+ if (attributes.contains(EatPartitioning)) {
+ TString partitionStr;
+ if (! attributes.getString(EatPartitioning, partitionStr)) {
error(loc, "invalid partitioning", "", "");
} else {
- TString partitionStr = *partType.getSConst();
- std::transform(partitionStr.begin(), partitionStr.end(), partitionStr.begin(), ::tolower);
-
TVertexSpacing partitioning = EvsNone;
if (partitionStr == "integer") {
@@ -1714,23 +1832,112 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
}
if (! intermediate.setVertexSpacing(partitioning))
- error(loc, "cannot change previously set partitioning", TQualifier::getVertexSpacingString(partitioning), "");
+ error(loc, "cannot change previously set partitioning",
+ TQualifier::getVertexSpacingString(partitioning), "");
}
}
// Handle [outputcontrolpoints("...")]
- const TIntermAggregate* outputControlPoints = attributes[EatOutputControlPoints];
- if (outputControlPoints != nullptr) {
- const TConstUnion& ctrlPointConst = outputControlPoints->getSequence()[0]->getAsConstantUnion()->getConstArray()[0];
- if (ctrlPointConst.getType() != EbtInt) {
+ if (attributes.contains(EatOutputControlPoints)) {
+ int ctrlPoints;
+ if (! attributes.getInt(EatOutputControlPoints, ctrlPoints)) {
error(loc, "invalid outputcontrolpoints", "", "");
} else {
- const int ctrlPoints = ctrlPointConst.getIConst();
if (! intermediate.setVertices(ctrlPoints)) {
error(loc, "cannot change previously set outputcontrolpoints attribute", "", "");
}
}
}
+}
+
+// Update the given type with any type-like attribute information in the
+// attributes.
+void HlslParseContext::transferTypeAttributes(const TAttributeMap& attributes, TType& type)
+{
+ // location
+ int value;
+ if (attributes.getInt(EatLocation, value))
+ type.getQualifier().layoutLocation = value;
+
+ // binding
+ if (attributes.getInt(EatBinding, value)) {
+ type.getQualifier().layoutBinding = value;
+ type.getQualifier().layoutSet = 0;
+ }
+
+ // set
+ if (attributes.getInt(EatBinding, value, 1))
+ type.getQualifier().layoutSet = value;
+
+ // global cbuffer binding
+ if (attributes.getInt(EatGlobalBinding, value))
+ globalUniformBinding = value;
+
+ // global cbuffer binding
+ if (attributes.getInt(EatGlobalBinding, value, 1))
+ globalUniformSet = value;
+
+ // input attachment
+ if (attributes.getInt(EatInputAttachment, value))
+ type.getQualifier().layoutAttachment = value;
+}
+
+//
+// Do all special handling for the entry point, including wrapping
+// the shader's entry point with the official entry point that will call it.
+//
+// The following:
+//
+// retType shaderEntryPoint(args...) // shader declared entry point
+// { body }
+//
+// Becomes
+//
+// out retType ret;
+// in iargs<that are input>...;
+// out oargs<that are output> ...;
+//
+// void shaderEntryPoint() // synthesized, but official, entry point
+// {
+// args<that are input> = iargs...;
+// ret = @shaderEntryPoint(args...);
+// oargs = args<that are output>...;
+// }
+// retType @shaderEntryPoint(args...)
+// { body }
+//
+// The symbol table will still map the original entry point name to the
+// the modified function and its new name:
+//
+// symbol table: shaderEntryPoint -> @shaderEntryPoint
+//
+// Returns nullptr if no entry-point tree was built, otherwise, returns
+// a subtree that creates the entry point.
+//
+TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunction& userFunction,
+ const TAttributeMap& attributes)
+{
+ // Return true if this is a tessellation patch constant function input to a domain shader.
+ const auto isDsPcfInput = [this](const TType& type) {
+ return language == EShLangTessEvaluation &&
+ type.contains([](const TType* t) {
+ return t->getQualifier().builtIn == EbvTessLevelOuter ||
+ t->getQualifier().builtIn == EbvTessLevelInner;
+ });
+ };
+
+ // if we aren't in the entry point, fix the IO as such and exit
+ if (userFunction.getName().compare(intermediate.getEntryPointName().c_str()) != 0) {
+ remapNonEntryPointIO(userFunction);
+ return nullptr;
+ }
+
+ entryPointFunction = &userFunction; // needed in finish()
+
+ // Handle entry point attributes
+ handleEntryPointAttributes(loc, attributes);
+
+ // entry point logic...
// Move parameters and return value to shader in/out
TVariable* entryPointOutput; // gets created in remapEntryPointIO
@@ -1741,24 +1948,41 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
// Further this return/in/out transform by flattening, splitting, and assigning locations
const auto makeVariableInOut = [&](TVariable& variable) {
if (variable.getType().isStruct()) {
- const TStorageQualifier qualifier = variable.getType().getQualifier().storage;
- // struct inputs to the vertex stage and outputs from the fragment stage must be flattened
- if ((language == EShLangVertex && qualifier == EvqVaryingIn) ||
- (language == EShLangFragment && qualifier == EvqVaryingOut))
- flatten(loc, variable);
- // Mixture of IO and non-IO must be split
- else if (variable.getType().containsBuiltInInterstageIO(language))
- split(variable);
- }
- assignLocations(variable);
+ if (variable.getType().getQualifier().isArrayedIo(language)) {
+ if (variable.getType().containsBuiltIn())
+ split(variable);
+ } else if (shouldFlatten(variable.getType(), EvqVaryingIn /* not assigned yet, but close enough */, true))
+ flatten(variable, false /* don't track linkage here, it will be tracked in assignToInterface() */);
+ }
+ // TODO: flatten arrays too
+ // TODO: flatten everything in I/O
+ // TODO: replace all split with flatten, make all paths can create flattened I/O, then split code can be removed
+
+ // For clip and cull distance, multiple output variables potentially get merged
+ // into one in assignClipCullDistance. That code in assignClipCullDistance
+ // handles the interface logic, so we avoid it here in that case.
+ if (!isClipOrCullDistance(variable.getType()))
+ assignToInterface(variable);
};
- if (entryPointOutput)
+ if (entryPointOutput != nullptr)
makeVariableInOut(*entryPointOutput);
for (auto it = inputs.begin(); it != inputs.end(); ++it)
- makeVariableInOut(*(*it));
+ if (!isDsPcfInput((*it)->getType())) // wait until the end for PCF input (see comment below)
+ makeVariableInOut(*(*it));
for (auto it = outputs.begin(); it != outputs.end(); ++it)
makeVariableInOut(*(*it));
+ // In the domain shader, PCF input must be at the end of the linkage. That's because in the
+ // hull shader there is no ordering: the output comes from the separate PCF, which does not
+ // participate in the argument list. That is always put at the end of the HS linkage, so the
+ // input side of the DS must match. The argument may be in any position in the DS argument list
+ // however, so this ensures the linkage is built in the correct order regardless of argument order.
+ if (language == EShLangTessEvaluation) {
+ for (auto it = inputs.begin(); it != inputs.end(); ++it)
+ if (isDsPcfInput((*it)->getType()))
+ makeVariableInOut(*(*it));
+ }
+
// Synthesize the call
pushScope(); // matches the one in handleFunctionBody()
@@ -1780,10 +2004,16 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
TIntermAggregate* synthBody = new TIntermAggregate();
auto inputIt = inputs.begin();
TIntermTyped* callingArgs = nullptr;
+
for (int i = 0; i < userFunction.getParamCount(); i++) {
TParameter& param = userFunction[i];
argVars.push_back(makeInternalVariable(*param.name, *param.type));
argVars.back()->getWritableType().getQualifier().makeTemporary();
+
+ // Track the input patch, which is the only non-builtin supported by hull shader PCF.
+ if (param.getDeclaredBuiltIn() == EbvInputPatch)
+ inputPatch = argVars.back();
+
TIntermSymbol* arg = intermediate.addSymbol(*argVars.back());
handleFunctionArgument(&callee, callingArgs, arg);
if (param.type->getQualifier().isParamInput()) {
@@ -1799,20 +2029,62 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
currentCaller = userFunction.getMangledName();
// Return value
- if (entryPointOutput)
- intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign,
- intermediate.addSymbol(*entryPointOutput), callReturn));
- else
+ if (entryPointOutput) {
+ TIntermTyped* returnAssign;
+
+ // For hull shaders, the wrapped entry point return value is written to
+ // an array element as indexed by invocation ID, which we might have to make up.
+ // This is required to match SPIR-V semantics.
+ if (language == EShLangTessControl) {
+ TIntermSymbol* invocationIdSym = findTessLinkageSymbol(EbvInvocationId);
+
+ // If there is no user declared invocation ID, we must make one.
+ if (invocationIdSym == nullptr) {
+ TType invocationIdType(EbtUint, EvqIn, 1);
+ TString* invocationIdName = NewPoolTString("InvocationId");
+ invocationIdType.getQualifier().builtIn = EbvInvocationId;
+
+ TVariable* variable = makeInternalVariable(*invocationIdName, invocationIdType);
+
+ globalQualifierFix(loc, variable->getWritableType().getQualifier());
+ trackLinkage(*variable);
+
+ invocationIdSym = intermediate.addSymbol(*variable);
+ }
+
+ TIntermTyped* element = intermediate.addIndex(EOpIndexIndirect, intermediate.addSymbol(*entryPointOutput),
+ invocationIdSym, loc);
+
+ // Set the type of the array element being dereferenced
+ const TType derefElementType(entryPointOutput->getType(), 0);
+ element->setType(derefElementType);
+
+ returnAssign = handleAssign(loc, EOpAssign, element, callReturn);
+ } else {
+ returnAssign = handleAssign(loc, EOpAssign, intermediate.addSymbol(*entryPointOutput), callReturn);
+ }
+ intermediate.growAggregate(synthBody, returnAssign);
+ } else
intermediate.growAggregate(synthBody, callReturn);
// Output copies
auto outputIt = outputs.begin();
for (int i = 0; i < userFunction.getParamCount(); i++) {
TParameter& param = userFunction[i];
+
+ // GS outputs are via emit, so we do not copy them here.
if (param.type->getQualifier().isParamOutput()) {
- intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign,
- intermediate.addSymbol(**outputIt),
- intermediate.addSymbol(*argVars[i])));
+ if (param.getDeclaredBuiltIn() == EbvGsOutputStream) {
+ // GS output stream does not assign outputs here: it's the Append() method
+ // which writes to the output, probably multiple times separated by Emit.
+ // We merely remember the output to use, here.
+ gsStreamOutput = *outputIt;
+ } else {
+ intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign,
+ intermediate.addSymbol(**outputIt),
+ intermediate.addSymbol(*argVars[i])));
+ }
+
outputIt++;
}
}
@@ -1828,7 +2100,8 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
return synthFunctionDef;
}
-void HlslParseContext::handleFunctionBody(const TSourceLoc& loc, TFunction& function, TIntermNode* functionBody, TIntermNode*& node)
+void HlslParseContext::handleFunctionBody(const TSourceLoc& loc, TFunction& function, TIntermNode* functionBody,
+ TIntermNode*& node)
{
node = intermediate.growAggregate(node, functionBody);
intermediate.setAggregateOperator(node, EOpFunction, function.getType(), loc);
@@ -1848,12 +2121,63 @@ void HlslParseContext::handleFunctionBody(const TSourceLoc& loc, TFunction& func
void HlslParseContext::remapEntryPointIO(TFunction& function, TVariable*& returnValue,
TVector<TVariable*>& inputs, TVector<TVariable*>& outputs)
{
+ // We might have in input structure type with no decorations that caused it
+ // to look like an input type, yet it has (e.g.) interpolation types that
+ // must be modified that turn it into an input type.
+ // Hence, a missing ioTypeMap for 'input' might need to be synthesized.
+ const auto synthesizeEditedInput = [this](TType& type) {
+ // True if a type needs to be 'flat'
+ const auto needsFlat = [](const TType& type) {
+ return type.containsBasicType(EbtInt) ||
+ type.containsBasicType(EbtUint) ||
+ type.containsBasicType(EbtInt64) ||
+ type.containsBasicType(EbtUint64) ||
+ type.containsBasicType(EbtBool) ||
+ type.containsBasicType(EbtDouble);
+ };
+
+ if (language == EShLangFragment && needsFlat(type)) {
+ if (type.isStruct()) {
+ TTypeList* finalList = nullptr;
+ auto it = ioTypeMap.find(type.getStruct());
+ if (it == ioTypeMap.end() || it->second.input == nullptr) {
+ // Getting here means we have no input struct, but we need one.
+ auto list = new TTypeList;
+ for (auto member = type.getStruct()->begin(); member != type.getStruct()->end(); ++member) {
+ TType* newType = new TType;
+ newType->shallowCopy(*member->type);
+ TTypeLoc typeLoc = { newType, member->loc };
+ list->push_back(typeLoc);
+ }
+ // install the new input type
+ if (it == ioTypeMap.end()) {
+ tIoKinds newLists = { list, nullptr, nullptr };
+ ioTypeMap[type.getStruct()] = newLists;
+ } else
+ it->second.input = list;
+ finalList = list;
+ } else
+ finalList = it->second.input;
+ // edit for 'flat'
+ for (auto member = finalList->begin(); member != finalList->end(); ++member) {
+ if (needsFlat(*member->type)) {
+ member->type->getQualifier().clearInterpolation();
+ member->type->getQualifier().flat = true;
+ }
+ }
+ } else {
+ type.getQualifier().clearInterpolation();
+ type.getQualifier().flat = true;
+ }
+ }
+ };
+
// Do the actual work to make a type be a shader input or output variable,
// and clear the original to be non-IO (for use as a normal function parameter/return).
const auto makeIoVariable = [this](const char* name, TType& type, TStorageQualifier storage) -> TVariable* {
TVariable* ioVariable = makeInternalVariable(name, type);
clearUniformInputOutput(type.getQualifier());
- if (type.getStruct() != nullptr) {
+ if (type.isStruct()) {
auto newLists = ioTypeMap.find(ioVariable->getType().getStruct());
if (newLists != ioTypeMap.end()) {
if (storage == EvqVaryingIn && newLists->second.input)
@@ -1862,24 +2186,51 @@ void HlslParseContext::remapEntryPointIO(TFunction& function, TVariable*& return
ioVariable->getWritableType().setStruct(newLists->second.output);
}
}
- if (storage == EvqVaryingIn)
+ if (storage == EvqVaryingIn) {
correctInput(ioVariable->getWritableType().getQualifier());
- else
+ if (language == EShLangTessEvaluation)
+ if (!ioVariable->getType().isArray())
+ ioVariable->getWritableType().getQualifier().patch = true;
+ } else {
correctOutput(ioVariable->getWritableType().getQualifier());
+ }
ioVariable->getWritableType().getQualifier().storage = storage;
+
+ fixBuiltInIoType(ioVariable->getWritableType());
+
return ioVariable;
};
// return value is actually a shader-scoped output (out)
- if (function.getType().getBasicType() == EbtVoid)
+ if (function.getType().getBasicType() == EbtVoid) {
returnValue = nullptr;
- else
- returnValue = makeIoVariable("@entryPointOutput", function.getWritableType(), EvqVaryingOut);
+ } else {
+ if (language == EShLangTessControl) {
+ // tessellation evaluation in HLSL writes a per-ctrl-pt value, but it needs to be an
+ // array in SPIR-V semantics. We'll write to it indexed by invocation ID.
+
+ returnValue = makeIoVariable("@entryPointOutput", function.getWritableType(), EvqVaryingOut);
+
+ TType outputType;
+ outputType.shallowCopy(function.getType());
+
+ // vertices has necessarily already been set when handling entry point attributes.
+ TArraySizes arraySizes;
+ arraySizes.addInnerSize(intermediate.getVertices());
+ outputType.newArraySizes(arraySizes);
+
+ clearUniformInputOutput(function.getWritableType().getQualifier());
+ returnValue = makeIoVariable("@entryPointOutput", outputType, EvqVaryingOut);
+ } else {
+ returnValue = makeIoVariable("@entryPointOutput", function.getWritableType(), EvqVaryingOut);
+ }
+ }
// parameters are actually shader-scoped inputs and outputs (in or out)
for (int i = 0; i < function.getParamCount(); i++) {
TType& paramType = *function[i].type;
if (paramType.getQualifier().isParamInput()) {
+ synthesizeEditedInput(paramType);
TVariable* argAsGlobal = makeIoVariable(function[i].name->c_str(), paramType, EvqVaryingIn);
inputs.push_back(argAsGlobal);
}
@@ -1917,8 +2268,8 @@ TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermT
} else if (*currentFunctionType != value->getType()) {
value = intermediate.addConversion(EOpReturn, *currentFunctionType, value);
if (value && *currentFunctionType != value->getType())
- value = intermediate.addShapeConversion(EOpReturn, *currentFunctionType, value);
- if (value == nullptr) {
+ value = intermediate.addUniShapeConversion(EOpReturn, *currentFunctionType, value);
+ if (value == nullptr || *currentFunctionType != value->getType()) {
error(loc, "type does not match, or is not convertible to, the function's return type", "return", "");
return value;
}
@@ -1940,30 +2291,290 @@ void HlslParseContext::handleFunctionArgument(TFunction* function,
arguments = newArg;
}
+// Clip and cull distance require special handling due to a semantic mismatch. In HLSL,
+// these can be float scalar, float vector, or arrays of float scalar or float vector.
+// In SPIR-V, they are arrays of scalar floats in all cases. We must copy individual components
+// (e.g, both x and y components of a float2) out into the destination float array.
+//
+// The values are assigned to sequential members of the output array. The inner dimension
+// is vector components. The outer dimension is array elements.
+TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc, TOperator op, int semanticId,
+ TIntermTyped* left, TIntermTyped* right)
+{
+ switch (language) {
+ case EShLangFragment:
+ case EShLangVertex:
+ case EShLangGeometry:
+ break;
+ default:
+ error(loc, "unimplemented: clip/cull not currently implemented for this stage", "", "");
+ return nullptr;
+ }
+
+ TVariable** clipCullVar = nullptr;
+
+ // Figure out if we are assigning to, or from, clip or cull distance.
+ const bool isOutput = isClipOrCullDistance(left->getType());
+
+ // This is the rvalue or lvalue holding the clip or cull distance.
+ TIntermTyped* clipCullNode = isOutput ? left : right;
+ // This is the value going into or out of the clip or cull distance.
+ TIntermTyped* internalNode = isOutput ? right : left;
+
+ const TBuiltInVariable builtInType = clipCullNode->getQualifier().builtIn;
+
+ decltype(clipSemanticNSizeIn)* semanticNSize = nullptr;
+
+ // Refer to either the clip or the cull distance, depending on semantic.
+ switch (builtInType) {
+ case EbvClipDistance:
+ clipCullVar = isOutput ? &clipDistanceOutput : &clipDistanceInput;
+ semanticNSize = isOutput ? &clipSemanticNSizeOut : &clipSemanticNSizeIn;
+ break;
+ case EbvCullDistance:
+ clipCullVar = isOutput ? &cullDistanceOutput : &cullDistanceInput;
+ semanticNSize = isOutput ? &cullSemanticNSizeOut : &cullSemanticNSizeIn;
+ break;
+
+ // called invalidly: we expected a clip or a cull distance.
+ // static compile time problem: should not happen.
+ default: assert(0); return nullptr;
+ }
+
+ // This is the offset in the destination array of a given semantic's data
+ std::array<int, maxClipCullRegs> semanticOffset;
+
+ // Calculate offset of variable of semantic N in destination array
+ int arrayLoc = 0;
+ int vecItems = 0;
+
+ for (int x = 0; x < maxClipCullRegs; ++x) {
+ // See if we overflowed the vec4 packing
+ if ((vecItems + (*semanticNSize)[x]) > 4) {
+ arrayLoc = (arrayLoc + 3) & (~0x3); // round up to next multiple of 4
+ vecItems = 0;
+ }
+
+ semanticOffset[x] = arrayLoc;
+ vecItems += (*semanticNSize)[x];
+ arrayLoc += (*semanticNSize)[x];
+ }
+
+
+ // It can have up to 2 array dimensions (in the case of geometry shader inputs)
+ const TArraySizes* const internalArraySizes = internalNode->getType().getArraySizes();
+ const int internalArrayDims = internalNode->getType().isArray() ? internalArraySizes->getNumDims() : 0;
+ // vector sizes:
+ const int internalVectorSize = internalNode->getType().getVectorSize();
+ // array sizes, or 1 if it's not an array:
+ const int internalInnerArraySize = (internalArrayDims > 0 ? internalArraySizes->getDimSize(internalArrayDims-1) : 1);
+ const int internalOuterArraySize = (internalArrayDims > 1 ? internalArraySizes->getDimSize(0) : 1);
+
+ // The created type may be an array of arrays, e.g, for geometry shader inputs.
+ const bool isImplicitlyArrayed = (language == EShLangGeometry && !isOutput);
+
+ // If we haven't created the output already, create it now.
+ if (*clipCullVar == nullptr) {
+ // ClipDistance and CullDistance are handled specially in the entry point input/output copy
+ // algorithm, because they may need to be unpacked from components of vectors (or a scalar)
+ // into a float array, or vice versa. Here, we make the array the right size and type,
+ // which depends on the incoming data, which has several potential dimensions:
+ // * Semantic ID
+ // * vector size
+ // * array size
+ // Of those, semantic ID and array size cannot appear simultaneously.
+ //
+ // Also to note: for implicitly arrayed forms (e.g, geometry shader inputs), we need to create two
+ // array dimensions. The shader's declaration may have one or two array dimensions. One is always
+ // the geometry's dimension.
+
+ const bool useInnerSize = internalArrayDims > 1 || !isImplicitlyArrayed;
+
+ const int requiredInnerArraySize = arrayLoc * (useInnerSize ? internalInnerArraySize : 1);
+ const int requiredOuterArraySize = (internalArrayDims > 0) ? internalArraySizes->getDimSize(0) : 1;
+
+ TType clipCullType(EbtFloat, clipCullNode->getType().getQualifier().storage, 1);
+ clipCullType.getQualifier() = clipCullNode->getType().getQualifier();
+
+ // Create required array dimension
+ TArraySizes arraySizes;
+ if (isImplicitlyArrayed)
+ arraySizes.addInnerSize(requiredOuterArraySize);
+ arraySizes.addInnerSize(requiredInnerArraySize);
+ clipCullType.newArraySizes(arraySizes);
+
+ // Obtain symbol name: we'll use that for the symbol we introduce.
+ TIntermSymbol* sym = clipCullNode->getAsSymbolNode();
+ assert(sym != nullptr);
+
+ // We are moving the semantic ID from the layout location, so it is no longer needed or
+ // desired there.
+ clipCullType.getQualifier().layoutLocation = TQualifier::layoutLocationEnd;
+
+ // Create variable and track its linkage
+ *clipCullVar = makeInternalVariable(sym->getName().c_str(), clipCullType);
+
+ trackLinkage(**clipCullVar);
+ }
+
+ // Create symbol for the clip or cull variable.
+ TIntermSymbol* clipCullSym = intermediate.addSymbol(**clipCullVar);
+
+ // vector sizes:
+ const int clipCullVectorSize = clipCullSym->getType().getVectorSize();
+
+ // array sizes, or 1 if it's not an array:
+ const TArraySizes* const clipCullArraySizes = clipCullSym->getType().getArraySizes();
+ const int clipCullOuterArraySize = isImplicitlyArrayed ? clipCullArraySizes->getDimSize(0) : 1;
+ const int clipCullInnerArraySize = clipCullArraySizes->getDimSize(isImplicitlyArrayed ? 1 : 0);
+
+ // clipCullSym has got to be an array of scalar floats, per SPIR-V semantics.
+ // fixBuiltInIoType() should have handled that upstream.
+ assert(clipCullSym->getType().isArray());
+ assert(clipCullSym->getType().getVectorSize() == 1);
+ assert(clipCullSym->getType().getBasicType() == EbtFloat);
+
+ // We may be creating multiple sub-assignments. This is an aggregate to hold them.
+ // TODO: it would be possible to be clever sometimes and avoid the sequence node if not needed.
+ TIntermAggregate* assignList = nullptr;
+
+ // Holds individual component assignments as we make them.
+ TIntermTyped* clipCullAssign = nullptr;
+
+ // If the types are homomorphic, use a simple assign. No need to mess about with
+ // individual components.
+ if (clipCullSym->getType().isArray() == internalNode->getType().isArray() &&
+ clipCullInnerArraySize == internalInnerArraySize &&
+ clipCullOuterArraySize == internalOuterArraySize &&
+ clipCullVectorSize == internalVectorSize) {
+
+ if (isOutput)
+ clipCullAssign = intermediate.addAssign(op, clipCullSym, internalNode, loc);
+ else
+ clipCullAssign = intermediate.addAssign(op, internalNode, clipCullSym, loc);
+
+ assignList = intermediate.growAggregate(assignList, clipCullAssign);
+ assignList->setOperator(EOpSequence);
+
+ return assignList;
+ }
+
+ // We are going to copy each component of the internal (per array element if indicated) to sequential
+ // array elements of the clipCullSym. This tracks the lhs element we're writing to as we go along.
+ // We may be starting in the middle - e.g, for a non-zero semantic ID calculated above.
+ int clipCullInnerArrayPos = semanticOffset[semanticId];
+ int clipCullOuterArrayPos = 0;
+
+ // Lambda to add an index to a node, set the type of the result, and return the new node.
+ const auto addIndex = [this, &loc](TIntermTyped* node, int pos) -> TIntermTyped* {
+ const TType derefType(node->getType(), 0);
+ node = intermediate.addIndex(EOpIndexDirect, node, intermediate.addConstantUnion(pos, loc), loc);
+ node->setType(derefType);
+ return node;
+ };
+
+ // Loop through every component of every element of the internal, and copy to or from the matching external.
+ for (int internalOuterArrayPos = 0; internalOuterArrayPos < internalOuterArraySize; ++internalOuterArrayPos) {
+ for (int internalInnerArrayPos = 0; internalInnerArrayPos < internalInnerArraySize; ++internalInnerArrayPos) {
+ for (int internalComponent = 0; internalComponent < internalVectorSize; ++internalComponent) {
+ // clip/cull array member to read from / write to:
+ TIntermTyped* clipCullMember = clipCullSym;
+
+ // If implicitly arrayed, there is an outer array dimension involved
+ if (isImplicitlyArrayed)
+ clipCullMember = addIndex(clipCullMember, clipCullOuterArrayPos);
+
+ // Index into proper array position for clip cull member
+ clipCullMember = addIndex(clipCullMember, clipCullInnerArrayPos++);
+
+ // if needed, start over with next outer array slice.
+ if (isImplicitlyArrayed && clipCullInnerArrayPos >= clipCullInnerArraySize) {
+ clipCullInnerArrayPos = semanticOffset[semanticId];
+ ++clipCullOuterArrayPos;
+ }
+
+ // internal member to read from / write to:
+ TIntermTyped* internalMember = internalNode;
+
+ // If internal node has outer array dimension, index appropriately.
+ if (internalArrayDims > 1)
+ internalMember = addIndex(internalMember, internalOuterArrayPos);
+
+ // If internal node has inner array dimension, index appropriately.
+ if (internalArrayDims > 0)
+ internalMember = addIndex(internalMember, internalInnerArrayPos);
+
+ // If internal node is a vector, extract the component of interest.
+ if (internalNode->getType().isVector())
+ internalMember = addIndex(internalMember, internalComponent);
+
+ // Create an assignment: output from internal to clip cull, or input from clip cull to internal.
+ if (isOutput)
+ clipCullAssign = intermediate.addAssign(op, clipCullMember, internalMember, loc);
+ else
+ clipCullAssign = intermediate.addAssign(op, internalMember, clipCullMember, loc);
+
+ // Track assignment in the sequence.
+ assignList = intermediate.growAggregate(assignList, clipCullAssign);
+ }
+ }
+ }
+
+ assert(assignList != nullptr);
+ assignList->setOperator(EOpSequence);
+
+ return assignList;
+}
+
// Some simple source assignments need to be flattened to a sequence
// of AST assignments. Catch these and flatten, otherwise, pass through
// to intermediate.addAssign().
//
// Also, assignment to matrix swizzles requires multiple component assignments,
// intercept those as well.
-TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right)
+TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left,
+ TIntermTyped* right)
{
if (left == nullptr || right == nullptr)
return nullptr;
+ // writing to opaques will require fixing transforms
+ if (left->getType().containsOpaque())
+ intermediate.setNeedsLegalization();
+
if (left->getAsOperator() && left->getAsOperator()->getOp() == EOpMatrixSwizzle)
return handleAssignToMatrixSwizzle(loc, op, left, right);
- const bool isSplitLeft = wasSplit(left);
- const bool isSplitRight = wasSplit(right);
+ // Return true if the given node is an index operation into a split variable.
+ const auto indexesSplit = [this](const TIntermTyped* node) -> bool {
+ const TIntermBinary* binaryNode = node->getAsBinaryNode();
+
+ if (binaryNode == nullptr)
+ return false;
+
+ return (binaryNode->getOp() == EOpIndexDirect || binaryNode->getOp() == EOpIndexIndirect) &&
+ wasSplit(binaryNode->getLeft());
+ };
+
+ const bool isSplitLeft = wasSplit(left) || indexesSplit(left);
+ const bool isSplitRight = wasSplit(right) || indexesSplit(right);
const bool isFlattenLeft = wasFlattened(left);
const bool isFlattenRight = wasFlattened(right);
- // OK to do a single assign if both are split, or both are unsplit. But if one is and the other
- // isn't, we fall back to a member-wise copy.
- if (! isFlattenLeft && ! isFlattenRight && !isSplitLeft && !isSplitRight)
+ // OK to do a single assign if neither side is split or flattened. Otherwise,
+ // fall through to a member-wise copy.
+ if (!isFlattenLeft && !isFlattenRight && !isSplitLeft && !isSplitRight) {
+ // Clip and cull distance requires more processing. See comment above assignClipCullDistance.
+ if (isClipOrCullDistance(left->getType()) || isClipOrCullDistance(right->getType())) {
+ const bool isOutput = isClipOrCullDistance(left->getType());
+
+ const int semanticId = (isOutput ? left : right)->getType().getQualifier().layoutLocation;
+ return assignClipCullDistance(loc, op, semanticId, left, right);
+ }
+
return intermediate.addAssign(op, left, right, loc);
+ }
TIntermAggregate* assignList = nullptr;
const TVector<TVariable*>* leftVariables = nullptr;
@@ -1971,7 +2582,7 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
// A temporary to store the right node's value, so we don't keep indirecting into it
// if it's not a simple symbol.
- TVariable* rhsTempVar = nullptr;
+ TVariable* rhsTempVar = nullptr;
// If the RHS is a simple symbol node, we'll copy it for each member.
TIntermSymbol* cloneSymNode = nullptr;
@@ -2008,49 +2619,68 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
TIntermTyped* noFlattenRHS = intermediate.addSymbol(*rhsTempVar, loc);
// Add this to the aggregate being built.
- assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, noFlattenRHS, right, loc), loc);
+ assignList = intermediate.growAggregate(assignList,
+ intermediate.addAssign(op, noFlattenRHS, right, loc), loc);
}
}
}
- int memberIdx = 0;
-
- // When dealing with split arrayed structures of builtins, the arrayness is moved to the extracted builtin
+ // When dealing with split arrayed structures of built-ins, the arrayness is moved to the extracted built-in
// variables, which is awkward when copying between split and unsplit structures. This variable tracks
// array indirections so they can be percolated from outer structs to inner variables.
std::vector <int> arrayElement;
- // We track the outer-most aggregate, so that we can use its storage class later.
- const TIntermTyped* outerLeft = left;
- const TIntermTyped* outerRight = right;
-
- const auto getMember = [&](bool isLeft, TIntermTyped* node, int member, TIntermTyped* splitNode, int splitMember) -> TIntermTyped * {
- TIntermTyped* subTree;
+ TStorageQualifier leftStorage = left->getType().getQualifier().storage;
+ TStorageQualifier rightStorage = right->getType().getQualifier().storage;
- const bool flattened = isLeft ? isFlattenLeft : isFlattenRight;
- const bool split = isLeft ? isSplitLeft : isSplitRight;
- const TIntermTyped* outer = isLeft ? outerLeft : outerRight;
- const TVector<TVariable*>& flatVariables = isLeft ? *leftVariables : *rightVariables;
- const TOperator op = node->getType().isArray() ? EOpIndexDirect : EOpIndexDirectStruct;
- const TType derefType(node->getType(), member);
+ int leftOffset = findSubtreeOffset(*left);
+ int rightOffset = findSubtreeOffset(*right);
- if (split && derefType.isBuiltInInterstageIO(language)) {
- // copy from interstage IO builtin if needed
- subTree = intermediate.addSymbol(*interstageBuiltInIo.find(HlslParseContext::tInterstageIoData(derefType, outer->getType()))->second);
+ const auto getMember = [&](bool isLeft, const TType& type, int member, TIntermTyped* splitNode, int splitMember,
+ bool flattened)
+ -> TIntermTyped * {
+ const bool split = isLeft ? isSplitLeft : isSplitRight;
- // Arrayness of builtIn symbols isn't handled by the normal recursion: it's been extracted and moved to the builtin.
+ TIntermTyped* subTree;
+ const TType derefType(type, member);
+ const TVariable* builtInVar = nullptr;
+ if ((flattened || split) && derefType.isBuiltIn()) {
+ auto splitPair = splitBuiltIns.find(HlslParseContext::tInterstageIoData(
+ derefType.getQualifier().builtIn,
+ isLeft ? leftStorage : rightStorage));
+ if (splitPair != splitBuiltIns.end())
+ builtInVar = splitPair->second;
+ }
+ if (builtInVar != nullptr) {
+ // copy from interstage IO built-in if needed
+ subTree = intermediate.addSymbol(*builtInVar);
+
+ // Arrayness of builtIn symbols isn't handled by the normal recursion:
+ // it's been extracted and moved to the built-in.
if (subTree->getType().isArray() && !arrayElement.empty()) {
const TType splitDerefType(subTree->getType(), arrayElement.back());
- subTree = intermediate.addIndex(EOpIndexDirect, subTree, intermediate.addConstantUnion(arrayElement.back(), loc), loc);
+ subTree = intermediate.addIndex(EOpIndexDirect, subTree,
+ intermediate.addConstantUnion(arrayElement.back(), loc), loc);
subTree->setType(splitDerefType);
}
- } else if (flattened && isFinalFlattening(derefType)) {
- subTree = intermediate.addSymbol(*flatVariables[memberIdx++]);
+ } else if (flattened && !shouldFlatten(derefType, isLeft ? leftStorage : rightStorage, false)) {
+ if (isLeft)
+ subTree = intermediate.addSymbol(*(*leftVariables)[leftOffset++]);
+ else
+ subTree = intermediate.addSymbol(*(*rightVariables)[rightOffset++]);
} else {
- const TType splitDerefType(splitNode->getType(), splitMember);
-
- subTree = intermediate.addIndex(op, splitNode, intermediate.addConstantUnion(splitMember, loc), loc);
- subTree->setType(splitDerefType);
+ // Index operator if it's an aggregate, else EOpNull
+ const TOperator accessOp = type.isArray() ? EOpIndexDirect
+ : type.isStruct() ? EOpIndexDirectStruct
+ : EOpNull;
+ if (accessOp == EOpNull) {
+ subTree = splitNode;
+ } else {
+ subTree = intermediate.addIndex(accessOp, splitNode, intermediate.addConstantUnion(splitMember, loc),
+ loc);
+ const TType splitDerefType(splitNode->getType(), splitMember);
+ subTree->setType(splitDerefType);
+ }
}
return subTree;
@@ -2058,39 +2688,55 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
// Use the proper RHS node: a new symbol from a TVariable, copy
// of an TIntermSymbol node, or sometimes the right node directly.
- right = rhsTempVar ? intermediate.addSymbol(*rhsTempVar, loc) :
- cloneSymNode ? intermediate.addSymbol(*cloneSymNode) :
+ right = rhsTempVar != nullptr ? intermediate.addSymbol(*rhsTempVar, loc) :
+ cloneSymNode != nullptr ? intermediate.addSymbol(*cloneSymNode) :
right;
// Cannot use auto here, because this is recursive, and auto can't work out the type without seeing the
// whole thing. So, we'll resort to an explicit type via std::function.
- const std::function<void(TIntermTyped* left, TIntermTyped* right, TIntermTyped* splitLeft, TIntermTyped* splitRight)>
- traverse = [&](TIntermTyped* left, TIntermTyped* right, TIntermTyped* splitLeft, TIntermTyped* splitRight) -> void {
+ const std::function<void(TIntermTyped* left, TIntermTyped* right, TIntermTyped* splitLeft, TIntermTyped* splitRight,
+ bool topLevel)>
+ traverse = [&](TIntermTyped* left, TIntermTyped* right, TIntermTyped* splitLeft, TIntermTyped* splitRight,
+ bool topLevel) -> void {
// If we get here, we are assigning to or from a whole array or struct that must be
// flattened, so have to do member-by-member assignment:
- if (left->getType().isArray()) {
- const TType dereferencedType(left->getType(), 0);
+ bool shouldFlattenSubsetLeft = isFlattenLeft && shouldFlatten(left->getType(), leftStorage, topLevel);
+ bool shouldFlattenSubsetRight = isFlattenRight && shouldFlatten(right->getType(), rightStorage, topLevel);
+
+ if ((left->getType().isArray() || right->getType().isArray()) &&
+ (shouldFlattenSubsetLeft || isSplitLeft ||
+ shouldFlattenSubsetRight || isSplitRight)) {
+ const int elementsL = left->getType().isArray() ? left->getType().getOuterArraySize() : 1;
+ const int elementsR = right->getType().isArray() ? right->getType().getOuterArraySize() : 1;
+
+ // The arrays might not be the same size,
+ // e.g., if the size has been forced for EbvTessLevelInner/Outer.
+ const int elementsToCopy = std::min(elementsL, elementsR);
// array case
- for (int element=0; element < left->getType().getOuterArraySize(); ++element) {
+ for (int element = 0; element < elementsToCopy; ++element) {
arrayElement.push_back(element);
// Add a new AST symbol node if we have a temp variable holding a complex RHS.
- TIntermTyped* subLeft = getMember(true, left, element, left, element);
- TIntermTyped* subRight = getMember(false, right, element, right, element);
+ TIntermTyped* subLeft = getMember(true, left->getType(), element, left, element,
+ shouldFlattenSubsetLeft);
+ TIntermTyped* subRight = getMember(false, right->getType(), element, right, element,
+ shouldFlattenSubsetRight);
- TIntermTyped* subSplitLeft = isSplitLeft ? getMember(true, left, element, splitLeft, element) : subLeft;
- TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right, element, splitRight, element) : subRight;
+ TIntermTyped* subSplitLeft = isSplitLeft ? getMember(true, left->getType(), element, splitLeft,
+ element, shouldFlattenSubsetLeft)
+ : subLeft;
+ TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right->getType(), element, splitRight,
+ element, shouldFlattenSubsetRight)
+ : subRight;
- if (isFinalFlattening(dereferencedType))
- assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc), loc);
- else
- traverse(subLeft, subRight, subSplitLeft, subSplitRight);
+ traverse(subLeft, subRight, subSplitLeft, subSplitRight, false);
arrayElement.pop_back();
}
- } else if (left->getType().isStruct()) {
+ } else if (left->getType().isStruct() && (shouldFlattenSubsetLeft || isSplitLeft ||
+ shouldFlattenSubsetRight || isSplitRight)) {
// struct case
const auto& membersL = *left->getType().getStruct();
const auto& membersR = *right->getType().getStruct();
@@ -2108,31 +2754,58 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
const TType& typeL = *membersL[member].type;
const TType& typeR = *membersR[member].type;
- TIntermTyped* subLeft = getMember(true, left, member, left, member);
- TIntermTyped* subRight = getMember(false, right, member, right, member);
+ TIntermTyped* subLeft = getMember(true, left->getType(), member, left, member,
+ shouldFlattenSubsetLeft);
+ TIntermTyped* subRight = getMember(false, right->getType(), member, right, member,
+ shouldFlattenSubsetRight);
// If there is no splitting, use the same values to avoid inefficiency.
- TIntermTyped* subSplitLeft = isSplitLeft ? getMember(true, left, member, splitLeft, memberL) : subLeft;
- TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right, member, splitRight, memberR) : subRight;
-
- // If this is the final flattening (no nested types below to flatten) we'll copy the member, else
- // recurse into the type hierarchy. However, if splitting the struct, that means we can copy a whole
- // subtree here IFF it does not itself contain any interstage built-in IO variables, so we only have to
- // recurse into it if there's something for splitting to do. That can save a lot of AST verbosity for
- // a bunch of memberwise copies.
- if (isFinalFlattening(typeL) || (!isFlattenLeft && !isFlattenRight &&
- !typeL.containsBuiltInInterstageIO(language) && !typeR.containsBuiltInInterstageIO(language))) {
- assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subSplitLeft, subSplitRight, loc), loc);
+ TIntermTyped* subSplitLeft = isSplitLeft ? getMember(true, left->getType(), member, splitLeft,
+ memberL, shouldFlattenSubsetLeft)
+ : subLeft;
+ TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right->getType(), member, splitRight,
+ memberR, shouldFlattenSubsetRight)
+ : subRight;
+
+ if (isClipOrCullDistance(subSplitLeft->getType()) || isClipOrCullDistance(subSplitRight->getType())) {
+ // Clip and cull distance built-in assignment is complex in its own right, and is handled in
+ // a separate function dedicated to that task. See comment above assignClipCullDistance;
+
+ const bool isOutput = isClipOrCullDistance(subSplitLeft->getType());
+
+ // Since all clip/cull semantics boil down to the same built-in type, we need to get the
+ // semantic ID from the dereferenced type's layout location, to avoid an N-1 mapping.
+ const TType derefType((isOutput ? left : right)->getType(), member);
+ const int semanticId = derefType.getQualifier().layoutLocation;
+
+ TIntermAggregate* clipCullAssign = assignClipCullDistance(loc, op, semanticId,
+ subSplitLeft, subSplitRight);
+
+ assignList = intermediate.growAggregate(assignList, clipCullAssign, loc);
+
+ } else if (!shouldFlattenSubsetLeft && !shouldFlattenSubsetRight &&
+ !typeL.containsBuiltIn() && !typeR.containsBuiltIn()) {
+ // If this is the final flattening (no nested types below to flatten)
+ // we'll copy the member, else recurse into the type hierarchy.
+ // However, if splitting the struct, that means we can copy a whole
+ // subtree here IFF it does not itself contain any interstage built-in
+ // IO variables, so we only have to recurse into it if there's something
+ // for splitting to do. That can save a lot of AST verbosity for
+ // a bunch of memberwise copies.
+
+ assignList = intermediate.growAggregate(assignList,
+ intermediate.addAssign(op, subSplitLeft, subSplitRight, loc),
+ loc);
} else {
- traverse(subLeft, subRight, subSplitLeft, subSplitRight);
+ traverse(subLeft, subRight, subSplitLeft, subSplitRight, false);
}
- memberL += (typeL.isBuiltInInterstageIO(language) ? 0 : 1);
- memberR += (typeR.isBuiltInInterstageIO(language) ? 0 : 1);
+ memberL += (typeL.isBuiltIn() ? 0 : 1);
+ memberR += (typeR.isBuiltIn() ? 0 : 1);
}
} else {
- assert(0); // we should never be called on a non-flattenable thing, because
- // that case bails out above to a simple copy.
+ // Member copy
+ assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, left, right, loc), loc);
}
};
@@ -2141,15 +2814,32 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
TIntermTyped* splitRight = right;
// If either left or right was a split structure, we must read or write it, but still have to
- // parallel-recurse through the unsplit structure to identify the builtin IO vars.
- if (isSplitLeft)
- splitLeft = intermediate.addSymbol(*getSplitIoVar(left), loc);
+ // parallel-recurse through the unsplit structure to identify the built-in IO vars.
+ // The left can be either a symbol, or an index into a symbol (e.g, array reference)
+ if (isSplitLeft) {
+ if (indexesSplit(left)) {
+ // Index case: Refer to the indexed symbol, if the left is an index operator.
+ const TIntermSymbol* symNode = left->getAsBinaryNode()->getLeft()->getAsSymbolNode();
+
+ TIntermTyped* splitLeftNonIo = intermediate.addSymbol(*getSplitNonIoVar(symNode->getId()), loc);
+
+ splitLeft = intermediate.addIndex(left->getAsBinaryNode()->getOp(), splitLeftNonIo,
+ left->getAsBinaryNode()->getRight(), loc);
+
+ const TType derefType(splitLeftNonIo->getType(), 0);
+ splitLeft->setType(derefType);
+ } else {
+ // Symbol case: otherwise, if not indexed, we have the symbol directly.
+ const TIntermSymbol* symNode = left->getAsSymbolNode();
+ splitLeft = intermediate.addSymbol(*getSplitNonIoVar(symNode->getId()), loc);
+ }
+ }
if (isSplitRight)
- splitRight = intermediate.addSymbol(*getSplitIoVar(right), loc);
+ splitRight = intermediate.addSymbol(*getSplitNonIoVar(right->getAsSymbolNode()->getId()), loc);
// This makes the whole assignment, recursing through subtypes as needed.
- traverse(left, right, splitLeft, splitRight);
+ traverse(left, right, splitLeft, splitRight, true);
assert(assignList != nullptr);
assignList->setOperator(EOpSequence);
@@ -2160,7 +2850,8 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
// An assignment to matrix swizzle must be decomposed into individual assignments.
// These must be selected component-wise from the RHS and stored component-wise
// into the LHS.
-TIntermTyped* HlslParseContext::handleAssignToMatrixSwizzle(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right)
+TIntermTyped* HlslParseContext::handleAssignToMatrixSwizzle(const TSourceLoc& loc, TOperator op, TIntermTyped* left,
+ TIntermTyped* right)
{
assert(left->getAsOperator() && left->getAsOperator()->getOp() == EOpMatrixSwizzle);
@@ -2242,7 +2933,8 @@ TOperator HlslParseContext::mapAtomicOp(const TSourceLoc& loc, TOperator op, boo
//
// Create a combined sampler/texture from separate sampler and texture.
//
-TIntermAggregate* HlslParseContext::handleSamplerTextureCombine(const TSourceLoc& loc, TIntermTyped* argTex, TIntermTyped* argSampler)
+TIntermAggregate* HlslParseContext::handleSamplerTextureCombine(const TSourceLoc& loc, TIntermTyped* argTex,
+ TIntermTyped* argSampler)
{
TIntermAggregate* txcombine = new TIntermAggregate(EOpConstructTextureSampler);
@@ -2251,7 +2943,66 @@ TIntermAggregate* HlslParseContext::handleSamplerTextureCombine(const TSourceLoc
TSampler samplerType = argTex->getType().getSampler();
samplerType.combined = true;
- samplerType.shadow = argSampler->getType().getSampler().shadow;
+
+ // TODO:
+ // This block exists until the spec no longer requires shadow modes on texture objects.
+ // It can be deleted after that, along with the shadowTextureVariant member.
+ {
+ const bool shadowMode = argSampler->getType().getSampler().shadow;
+
+ TIntermSymbol* texSymbol = argTex->getAsSymbolNode();
+
+ if (texSymbol == nullptr)
+ texSymbol = argTex->getAsBinaryNode()->getLeft()->getAsSymbolNode();
+
+ if (texSymbol == nullptr) {
+ error(loc, "unable to find texture symbol", "", "");
+ return nullptr;
+ }
+
+ // This forces the texture's shadow state to be the sampler's
+ // shadow state. This depends on downstream optimization to
+ // DCE one variant in [shadow, nonshadow] if both are present,
+ // or the SPIR-V module would be invalid.
+ int newId = texSymbol->getId();
+
+ // Check to see if this texture has been given a shadow mode already.
+ // If so, look up the one we already have.
+ const auto textureShadowEntry = textureShadowVariant.find(texSymbol->getId());
+
+ if (textureShadowEntry != textureShadowVariant.end())
+ newId = textureShadowEntry->second->get(shadowMode);
+ else
+ textureShadowVariant[texSymbol->getId()] = new tShadowTextureSymbols;
+
+ // Sometimes we have to create another symbol (if this texture has been seen before,
+ // and we haven't created the form for this shadow mode).
+ if (newId == -1) {
+ TType texType;
+ texType.shallowCopy(argTex->getType());
+ texType.getSampler().shadow = shadowMode; // set appropriate shadow mode.
+ globalQualifierFix(loc, texType.getQualifier());
+
+ TVariable* newTexture = makeInternalVariable(texSymbol->getName(), texType);
+
+ trackLinkage(*newTexture);
+
+ newId = newTexture->getUniqueId();
+ }
+
+ assert(newId != -1);
+
+ if (textureShadowVariant.find(newId) == textureShadowVariant.end())
+ textureShadowVariant[newId] = textureShadowVariant[texSymbol->getId()];
+
+ textureShadowVariant[newId]->set(shadowMode, newId);
+
+ // Remember this shadow mode in the texture and the merged type.
+ argTex->getWritableType().getSampler().shadow = shadowMode;
+ samplerType.shadow = shadowMode;
+
+ texSymbol->switchId(newId);
+ }
txcombine->setType(TType(samplerType, EvqTemporary));
txcombine->setLoc(loc);
@@ -2259,21 +3010,127 @@ TIntermAggregate* HlslParseContext::handleSamplerTextureCombine(const TSourceLoc
return txcombine;
}
+// Return true if this a buffer type that has an associated counter buffer.
+bool HlslParseContext::hasStructBuffCounter(const TType& type) const
+{
+ switch (type.getQualifier().declaredBuiltIn) {
+ case EbvAppendConsume: // fall through...
+ case EbvRWStructuredBuffer: // ...
+ return true;
+ default:
+ return false; // the other structuredbuffer types do not have a counter.
+ }
+}
+
+void HlslParseContext::counterBufferType(const TSourceLoc& loc, TType& type)
+{
+ // Counter type
+ TType* counterType = new TType(EbtInt, EvqBuffer);
+ counterType->setFieldName("@count");
+
+ TTypeList* blockStruct = new TTypeList;
+ TTypeLoc member = { counterType, loc };
+ blockStruct->push_back(member);
+
+ TType blockType(blockStruct, "", counterType->getQualifier());
+ blockType.getQualifier().storage = EvqBuffer;
+
+ type.shallowCopy(blockType);
+ shareStructBufferType(type);
+}
+
+// knowledge of how to construct block name, in one place instead of N places.
+TString HlslParseContext::getStructBuffCounterName(const TString& blockName) const
+{
+ return blockName + "@count";
+}
+
+// declare counter for a structured buffer type
+void HlslParseContext::declareStructBufferCounter(const TSourceLoc& loc, const TType& bufferType, const TString& name)
+{
+ // Bail out if not a struct buffer
+ if (! isStructBufferType(bufferType))
+ return;
+
+ if (! hasStructBuffCounter(bufferType))
+ return;
+
+ TType blockType;
+ counterBufferType(loc, blockType);
+
+ TString* blockName = new TString(getStructBuffCounterName(name));
+
+ // Counter buffer does not have its own counter buffer. TODO: there should be a better way to track this.
+ structBufferCounter[*blockName] = false;
+
+ shareStructBufferType(blockType);
+ declareBlock(loc, blockType, blockName);
+}
+
+// return the counter that goes with a given structuredbuffer
+TIntermTyped* HlslParseContext::getStructBufferCounter(const TSourceLoc& loc, TIntermTyped* buffer)
+{
+ // Bail out if not a struct buffer
+ if (buffer == nullptr || ! isStructBufferType(buffer->getType()))
+ return nullptr;
+
+ const TString counterBlockName(getStructBuffCounterName(buffer->getAsSymbolNode()->getName()));
+
+ // Mark the counter as being used
+ structBufferCounter[counterBlockName] = true;
+
+ TIntermTyped* counterVar = handleVariable(loc, &counterBlockName); // find the block structure
+ TIntermTyped* index = intermediate.addConstantUnion(0, loc); // index to counter inside block struct
+
+ TIntermTyped* counterMember = intermediate.addIndex(EOpIndexDirectStruct, counterVar, index, loc);
+ counterMember->setType(TType(EbtInt));
+ return counterMember;
+}
+
+
//
// Decompose structure buffer methods into AST
//
void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments)
{
- if (!node || !node->getAsOperator())
+ if (node == nullptr || node->getAsOperator() == nullptr || arguments == nullptr)
return;
const TOperator op = node->getAsOperator()->getOp();
- TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr;
- if (argAggregate == nullptr)
- return;
+ TIntermAggregate* argAggregate = arguments->getAsAggregate();
// Buffer is the object upon which method is called, so always arg 0
- TIntermTyped* bufferObj = argAggregate->getSequence()[0]->getAsTyped();
+ TIntermTyped* bufferObj = nullptr;
+
+ // The parameters can be an aggregate, or just a the object as a symbol if there are no fn params.
+ if (argAggregate) {
+ if (argAggregate->getSequence().empty())
+ return;
+ bufferObj = argAggregate->getSequence()[0]->getAsTyped();
+ } else {
+ bufferObj = arguments->getAsSymbolNode();
+ }
+
+ if (bufferObj == nullptr || bufferObj->getAsSymbolNode() == nullptr)
+ return;
+
+ // Some methods require a hidden internal counter, obtained via getStructBufferCounter().
+ // This lambda adds something to it and returns the old value.
+ const auto incDecCounter = [&](int incval) -> TIntermTyped* {
+ TIntermTyped* incrementValue = intermediate.addConstantUnion(incval, loc, true);
+ TIntermTyped* counter = getStructBufferCounter(loc, bufferObj); // obtain the counter member
+
+ if (counter == nullptr)
+ return nullptr;
+
+ TIntermAggregate* counterIncrement = new TIntermAggregate(EOpAtomicAdd);
+ counterIncrement->setType(TType(EbtUint, EvqTemporary));
+ counterIncrement->setLoc(loc);
+ counterIncrement->getSequence().push_back(counter);
+ counterIncrement->getSequence().push_back(incrementValue);
+
+ return counterIncrement;
+ };
// Index to obtain the runtime sized array out of the buffer.
TIntermTyped* argArray = indexStructBufferContent(loc, bufferObj);
@@ -2283,13 +3140,21 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
switch (op) {
case EOpMethodLoad:
{
- TIntermTyped* argIndex = argAggregate->getSequence()[1]->getAsTyped(); // index
+ TIntermTyped* argIndex = makeIntegerIndex(argAggregate->getSequence()[1]->getAsTyped()); // index
+
+ const TType& bufferType = bufferObj->getType();
+
+ const TBuiltInVariable builtInType = bufferType.getQualifier().declaredBuiltIn;
// Byte address buffers index in bytes (only multiples of 4 permitted... not so much a byte address
// buffer then, but that's what it calls itself.
- const bool isByteAddressBuffer = (argArray->getBasicType() == EbtUint);
+ const bool isByteAddressBuffer = (builtInType == EbvByteAddressBuffer ||
+ builtInType == EbvRWByteAddressBuffer);
+
+
if (isByteAddressBuffer)
- argIndex = intermediate.addBinaryNode(EOpRightShift, argIndex, intermediate.addConstantUnion(2, loc, true),
+ argIndex = intermediate.addBinaryNode(EOpRightShift, argIndex,
+ intermediate.addConstantUnion(2, loc, true),
loc, TType(EbtInt));
// Index into the array to find the item being loaded.
@@ -2307,7 +3172,7 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
case EOpMethodLoad3:
case EOpMethodLoad4:
{
- TIntermTyped* argIndex = argAggregate->getSequence()[1]->getAsTyped(); // index
+ TIntermTyped* argIndex = makeIntegerIndex(argAggregate->getSequence()[1]->getAsTyped()); // index
TOperator constructOp = EOpNull;
int size = 0;
@@ -2324,7 +3189,8 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
// First, we'll store the address in a variable to avoid multiple shifts
// (we must convert the byte address to an item address)
TIntermTyped* byteAddrIdx = intermediate.addBinaryNode(EOpRightShift, argIndex,
- intermediate.addConstantUnion(2, loc, true), loc, TType(EbtInt));
+ intermediate.addConstantUnion(2, loc, true),
+ loc, TType(EbtInt));
TVariable* byteAddrSym = makeInternalVariable("byteAddrTemp", TType(EbtInt, EvqTemporary));
TIntermTyped* byteAddrIdxVar = intermediate.addSymbol(*byteAddrSym, loc);
@@ -2340,10 +3206,12 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
// add index offset
if (idx != 0)
- offsetIdx = intermediate.addBinaryNode(EOpAdd, offsetIdx, intermediate.addConstantUnion(idx, loc, true),
+ offsetIdx = intermediate.addBinaryNode(EOpAdd, offsetIdx,
+ intermediate.addConstantUnion(idx, loc, true),
loc, TType(EbtInt));
- const TOperator idxOp = (offsetIdx->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect;
+ const TOperator idxOp = (offsetIdx->getQualifier().storage == EvqConst) ? EOpIndexDirect
+ : EOpIndexIndirect;
vec = intermediate.growAggregate(vec, intermediate.addIndex(idxOp, argArray, offsetIdx, loc));
}
@@ -2365,7 +3233,7 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
case EOpMethodStore3:
case EOpMethodStore4:
{
- TIntermTyped* argIndex = argAggregate->getSequence()[1]->getAsTyped(); // address
+ TIntermTyped* argIndex = makeIntegerIndex(argAggregate->getSequence()[1]->getAsTyped()); // index
TIntermTyped* argValue = argAggregate->getSequence()[2]->getAsTyped(); // value
// Index into the array to find the item being loaded.
@@ -2402,7 +3270,8 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
if (idx != 0)
offsetIdx = intermediate.addBinaryNode(EOpAdd, offsetIdx, idxConst, loc, TType(EbtInt));
- const TOperator idxOp = (offsetIdx->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect;
+ const TOperator idxOp = (offsetIdx->getQualifier().storage == EvqConst) ? EOpIndexDirect
+ : EOpIndexIndirect;
TIntermTyped* lValue = intermediate.addIndex(idxOp, argArray, offsetIdx, loc);
TIntermTyped* rValue = (size == 1) ? argValue :
@@ -2435,7 +3304,8 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
body = intermediate.growAggregate(body, assign, loc);
} else {
const int length = argArray->getType().getOuterArraySize();
- TIntermTyped* assign = intermediate.addAssign(EOpAssign, argNumItems, intermediate.addConstantUnion(length, loc, true), loc);
+ TIntermTyped* assign = intermediate.addAssign(EOpAssign, argNumItems,
+ intermediate.addConstantUnion(length, loc, true), loc);
body = intermediate.growAggregate(body, assign, loc);
}
@@ -2446,7 +3316,8 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
intermediate.getBaseAlignment(argArray->getType(), size, stride, false,
argArray->getType().getQualifier().layoutMatrix == ElmRowMajor);
- TIntermTyped* assign = intermediate.addAssign(EOpAssign, argStride, intermediate.addConstantUnion(stride, loc, true), loc);
+ TIntermTyped* assign = intermediate.addAssign(EOpAssign, argStride,
+ intermediate.addConstantUnion(stride, loc, true), loc);
body = intermediate.growAggregate(body, assign);
}
@@ -2472,7 +3343,7 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
TIntermSequence& sequence = argAggregate->getSequence();
- TIntermTyped* argIndex = sequence[1]->getAsTyped(); // index
+ TIntermTyped* argIndex = makeIntegerIndex(sequence[1]->getAsTyped()); // index
argIndex = intermediate.addBinaryNode(EOpRightShift, argIndex, intermediate.addConstantUnion(2, loc, true),
loc, TType(EbtInt));
@@ -2488,46 +3359,241 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
}
break;
+ case EOpMethodIncrementCounter:
+ {
+ node = incDecCounter(1);
+ break;
+ }
+
+ case EOpMethodDecrementCounter:
+ {
+ TIntermTyped* preIncValue = incDecCounter(-1); // result is original value
+ node = intermediate.addBinaryNode(EOpAdd, preIncValue, intermediate.addConstantUnion(-1, loc, true), loc,
+ preIncValue->getType());
+ break;
+ }
+
+ case EOpMethodAppend:
+ {
+ TIntermTyped* oldCounter = incDecCounter(1);
+
+ TIntermTyped* lValue = intermediate.addIndex(EOpIndexIndirect, argArray, oldCounter, loc);
+ TIntermTyped* rValue = argAggregate->getSequence()[1]->getAsTyped();
+
+ const TType derefType(argArray->getType(), 0);
+ lValue->setType(derefType);
+
+ node = intermediate.addAssign(EOpAssign, lValue, rValue, loc);
+
+ break;
+ }
+
+ case EOpMethodConsume:
+ {
+ TIntermTyped* oldCounter = incDecCounter(-1);
+
+ TIntermTyped* newCounter = intermediate.addBinaryNode(EOpAdd, oldCounter,
+ intermediate.addConstantUnion(-1, loc, true), loc,
+ oldCounter->getType());
+
+ node = intermediate.addIndex(EOpIndexIndirect, argArray, newCounter, loc);
+
+ const TType derefType(argArray->getType(), 0);
+ node->setType(derefType);
+
+ break;
+ }
+
default:
break; // most pass through unchanged
}
}
+
+// Create array of standard sample positions for given sample count.
+// TODO: remove when a real method to query sample pos exists in SPIR-V.
+TIntermConstantUnion* HlslParseContext::getSamplePosArray(int count)
+{
+ struct tSamplePos { float x, y; };
+
+ static const tSamplePos pos1[] = {
+ { 0.0/16.0, 0.0/16.0 },
+ };
+
+ // standard sample positions for 2, 4, 8, and 16 samples.
+ static const tSamplePos pos2[] = {
+ { 4.0/16.0, 4.0/16.0 }, {-4.0/16.0, -4.0/16.0 },
+ };
+
+ static const tSamplePos pos4[] = {
+ {-2.0/16.0, -6.0/16.0 }, { 6.0/16.0, -2.0/16.0 }, {-6.0/16.0, 2.0/16.0 }, { 2.0/16.0, 6.0/16.0 },
+ };
+
+ static const tSamplePos pos8[] = {
+ { 1.0/16.0, -3.0/16.0 }, {-1.0/16.0, 3.0/16.0 }, { 5.0/16.0, 1.0/16.0 }, {-3.0/16.0, -5.0/16.0 },
+ {-5.0/16.0, 5.0/16.0 }, {-7.0/16.0, -1.0/16.0 }, { 3.0/16.0, 7.0/16.0 }, { 7.0/16.0, -7.0/16.0 },
+ };
+
+ static const tSamplePos pos16[] = {
+ { 1.0/16.0, 1.0/16.0 }, {-1.0/16.0, -3.0/16.0 }, {-3.0/16.0, 2.0/16.0 }, { 4.0/16.0, -1.0/16.0 },
+ {-5.0/16.0, -2.0/16.0 }, { 2.0/16.0, 5.0/16.0 }, { 5.0/16.0, 3.0/16.0 }, { 3.0/16.0, -5.0/16.0 },
+ {-2.0/16.0, 6.0/16.0 }, { 0.0/16.0, -7.0/16.0 }, {-4.0/16.0, -6.0/16.0 }, {-6.0/16.0, 4.0/16.0 },
+ {-8.0/16.0, 0.0/16.0 }, { 7.0/16.0, -4.0/16.0 }, { 6.0/16.0, 7.0/16.0 }, {-7.0/16.0, -8.0/16.0 },
+ };
+
+ const tSamplePos* sampleLoc = nullptr;
+ int numSamples = count;
+
+ switch (count) {
+ case 2: sampleLoc = pos2; break;
+ case 4: sampleLoc = pos4; break;
+ case 8: sampleLoc = pos8; break;
+ case 16: sampleLoc = pos16; break;
+ default:
+ sampleLoc = pos1;
+ numSamples = 1;
+ }
+
+ TConstUnionArray* values = new TConstUnionArray(numSamples*2);
+ for (int pos=0; pos<count; ++pos) {
+ TConstUnion x, y;
+ x.setDConst(sampleLoc[pos].x);
+ y.setDConst(sampleLoc[pos].y);
+
+ (*values)[pos*2+0] = x;
+ (*values)[pos*2+1] = y;
+ }
+
+ TType retType(EbtFloat, EvqConst, 2);
+
+ if (numSamples != 1) {
+ TArraySizes arraySizes;
+ arraySizes.addInnerSize(numSamples);
+ retType.newArraySizes(arraySizes);
+ }
+
+ return new TIntermConstantUnion(*values, retType);
+}
+
//
// Decompose DX9 and DX10 sample intrinsics & object methods into AST
//
void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments)
{
- if (!node || !node->getAsOperator())
+ if (node == nullptr || !node->getAsOperator())
return;
- const auto clampReturn = [&loc, &node, this](TIntermTyped* result, const TSampler& sampler) -> TIntermTyped* {
- // Sampler return must always be a vec4, but we can construct a shorter vector
+ // Sampler return must always be a vec4, but we can construct a shorter vector or a structure from it.
+ const auto convertReturn = [&loc, &node, this](TIntermTyped* result, const TSampler& sampler) -> TIntermTyped* {
result->setType(TType(node->getType().getBasicType(), EvqTemporary, node->getVectorSize()));
- if (sampler.vectorSize < (unsigned)node->getVectorSize()) {
- // Too many components. Construct shorter vector from it.
- const TType clampedType(result->getType().getBasicType(), EvqTemporary, sampler.vectorSize);
+ TIntermTyped* convertedResult = nullptr;
+
+ TType retType;
+ getTextureReturnType(sampler, retType);
+
+ if (retType.isStruct()) {
+ // For type convenience, conversionAggregate points to the convertedResult (we know it's an aggregate here)
+ TIntermAggregate* conversionAggregate = new TIntermAggregate;
+ convertedResult = conversionAggregate;
+
+ // Convert vector output to return structure. We will need a temp symbol to copy the results to.
+ TVariable* structVar = makeInternalVariable("@sampleStructTemp", retType);
+
+ // We also need a temp symbol to hold the result of the texture. We don't want to re-fetch the
+ // sample each time we'll index into the result, so we'll copy to this, and index into the copy.
+ TVariable* sampleShadow = makeInternalVariable("@sampleResultShadow", result->getType());
- const TOperator op = intermediate.mapTypeToConstructorOp(clampedType);
+ // Initial copy from texture to our sample result shadow.
+ TIntermTyped* shadowCopy = intermediate.addAssign(EOpAssign, intermediate.addSymbol(*sampleShadow, loc),
+ result, loc);
- result = constructBuiltIn(clampedType, op, result, loc, false);
+ conversionAggregate->getSequence().push_back(shadowCopy);
+
+ unsigned vec4Pos = 0;
+
+ for (unsigned m = 0; m < unsigned(retType.getStruct()->size()); ++m) {
+ const TType memberType(retType, m); // dereferenced type of the member we're about to assign.
+
+ // Check for bad struct members. This should have been caught upstream. Complain, because
+ // wwe don't know what to do with it. This algorithm could be generalized to handle
+ // other things, e.g, sub-structures, but HLSL doesn't allow them.
+ if (!memberType.isVector() && !memberType.isScalar()) {
+ error(loc, "expected: scalar or vector type in texture structure", "", "");
+ return nullptr;
+ }
+
+ // Index into the struct variable to find the member to assign.
+ TIntermTyped* structMember = intermediate.addIndex(EOpIndexDirectStruct,
+ intermediate.addSymbol(*structVar, loc),
+ intermediate.addConstantUnion(m, loc), loc);
+
+ structMember->setType(memberType);
+
+ // Assign each component of (possible) vector in struct member.
+ for (int component = 0; component < memberType.getVectorSize(); ++component) {
+ TIntermTyped* vec4Member = intermediate.addIndex(EOpIndexDirect,
+ intermediate.addSymbol(*sampleShadow, loc),
+ intermediate.addConstantUnion(vec4Pos++, loc), loc);
+ vec4Member->setType(TType(memberType.getBasicType(), EvqTemporary, 1));
+
+ TIntermTyped* memberAssign = nullptr;
+
+ if (memberType.isVector()) {
+ // Vector member: we need to create an access chain to the vector component.
+
+ TIntermTyped* structVecComponent = intermediate.addIndex(EOpIndexDirect, structMember,
+ intermediate.addConstantUnion(component, loc), loc);
+
+ memberAssign = intermediate.addAssign(EOpAssign, structVecComponent, vec4Member, loc);
+ } else {
+ // Scalar member: we can assign to it directly.
+ memberAssign = intermediate.addAssign(EOpAssign, structMember, vec4Member, loc);
+ }
+
+
+ conversionAggregate->getSequence().push_back(memberAssign);
+ }
+ }
+
+ // Add completed variable so the expression results in the whole struct value we just built.
+ conversionAggregate->getSequence().push_back(intermediate.addSymbol(*structVar, loc));
+
+ // Make it a sequence.
+ intermediate.setAggregateOperator(conversionAggregate, EOpSequence, retType, loc);
+ } else {
+ // vector clamp the output if template vector type is smaller than sample result.
+ if (retType.getVectorSize() < node->getVectorSize()) {
+ // Too many components. Construct shorter vector from it.
+ const TOperator op = intermediate.mapTypeToConstructorOp(retType);
+
+ convertedResult = constructBuiltIn(retType, op, result, loc, false);
+ } else {
+ // Enough components. Use directly.
+ convertedResult = result;
+ }
}
- result->setLoc(loc);
- return result;
+ convertedResult->setLoc(loc);
+ return convertedResult;
};
const TOperator op = node->getAsOperator()->getOp();
const TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr;
- // Bail out if not a sampler method
+ // Bail out if not a sampler method.
+ // Note though this is odd to do before checking the op, because the op
+ // could be something that takes the arguments, and the function in question
+ // takes the result of the op. So, this is not the final word.
if (arguments != nullptr) {
- if ((argAggregate != nullptr && argAggregate->getSequence()[0]->getAsTyped()->getBasicType() != EbtSampler))
- return;
-
- if (argAggregate == nullptr && arguments->getAsTyped()->getBasicType() != EbtSampler)
- return;
+ if (argAggregate == nullptr) {
+ if (arguments->getAsTyped()->getBasicType() != EbtSampler)
+ return;
+ } else {
+ if (argAggregate->getSequence().size() == 0 ||
+ argAggregate->getSequence()[0]->getAsTyped()->getBasicType() != EbtSampler)
+ return;
+ }
}
switch (op) {
@@ -2575,7 +3641,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
tex->getSequence().push_back(constructCoord); // coordinate
tex->getSequence().push_back(bias); // bias
- node = clampReturn(tex, sampler);
+ node = convertReturn(tex, sampler);
break;
}
@@ -2615,7 +3681,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
if (argOffset != nullptr)
txsample->getSequence().push_back(argOffset);
- node = clampReturn(txsample, sampler);
+ node = convertReturn(txsample, sampler);
break;
}
@@ -2648,7 +3714,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
if (argOffset != nullptr)
txsample->getSequence().push_back(argOffset);
- node = clampReturn(txsample, sampler);
+ node = convertReturn(txsample, sampler);
break;
}
@@ -2793,6 +3859,18 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
TIntermTyped* argCmpVal = argAggregate->getSequence()[3]->getAsTyped();
TIntermTyped* argOffset = nullptr;
+ // Sampler argument should be a sampler.
+ if (argSamp->getType().getBasicType() != EbtSampler) {
+ error(loc, "expected: sampler type", "", "");
+ return;
+ }
+
+ // Sampler should be a SamplerComparisonState
+ if (! argSamp->getType().getSampler().isShadow()) {
+ error(loc, "expected: SamplerComparisonState", "", "");
+ return;
+ }
+
// optional offset value
if (argAggregate->getSequence().size() > 4)
argOffset = argAggregate->getSequence()[4]->getAsTyped();
@@ -2912,7 +3990,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
txfetch->getSequence().push_back(argOffset);
}
- node = clampReturn(txfetch, sampler);
+ node = convertReturn(txfetch, sampler);
break;
}
@@ -2943,7 +4021,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
if (argOffset != nullptr)
txsample->getSequence().push_back(argOffset);
- node = clampReturn(txsample, sampler);
+ node = convertReturn(txsample, sampler);
break;
}
@@ -3030,6 +4108,18 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
bool hasOffset1 = false;
bool hasOffset4 = false;
+ // Sampler argument should be a sampler.
+ if (argSamp->getType().getBasicType() != EbtSampler) {
+ error(loc, "expected: sampler type", "", "");
+ return;
+ }
+
+ // Cmp forms require SamplerComparisonState
+ if (cmpValues > 0 && ! argSamp->getType().getSampler().isShadow()) {
+ error(loc, "expected: SamplerComparisonState", "", "");
+ return;
+ }
+
// Only 2D forms can have offsets. Discover if we have 0, 1 or 4 offsets.
if (dim == Esd2D) {
hasOffset1 = (argSize == (4+cmpValues) || argSize == (5+cmpValues));
@@ -3135,10 +4225,90 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
case EOpMethodGetSamplePosition:
{
- error(loc, "unimplemented: GetSamplePosition", "", "");
+ // TODO: this entire decomposition exists because there is not yet a way to query
+ // the sample position directly through SPIR-V. Instead, we return fixed sample
+ // positions for common cases. *** If the sample positions are set differently,
+ // this will be wrong. ***
+
+ TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped();
+ TIntermTyped* argSampIdx = argAggregate->getSequence()[1]->getAsTyped();
+
+ TIntermAggregate* samplesQuery = new TIntermAggregate(EOpImageQuerySamples);
+ samplesQuery->getSequence().push_back(argTex);
+ samplesQuery->setType(TType(EbtUint, EvqTemporary, 1));
+ samplesQuery->setLoc(loc);
+
+ TIntermAggregate* compoundStatement = nullptr;
+
+ TVariable* outSampleCount = makeInternalVariable("@sampleCount", TType(EbtUint));
+ outSampleCount->getWritableType().getQualifier().makeTemporary();
+ TIntermTyped* compAssign = intermediate.addAssign(EOpAssign, intermediate.addSymbol(*outSampleCount, loc),
+ samplesQuery, loc);
+ compoundStatement = intermediate.growAggregate(compoundStatement, compAssign);
+
+ TIntermTyped* idxtest[4];
+
+ // Create tests against 2, 4, 8, and 16 sample values
+ int count = 0;
+ for (int val = 2; val <= 16; val *= 2)
+ idxtest[count++] =
+ intermediate.addBinaryNode(EOpEqual,
+ intermediate.addSymbol(*outSampleCount, loc),
+ intermediate.addConstantUnion(val, loc),
+ loc, TType(EbtBool));
+
+ const TOperator idxOp = (argSampIdx->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect;
+
+ // Create index ops into position arrays given sample index.
+ // TODO: should it be clamped?
+ TIntermTyped* index[4];
+ count = 0;
+ for (int val = 2; val <= 16; val *= 2) {
+ index[count] = intermediate.addIndex(idxOp, getSamplePosArray(val), argSampIdx, loc);
+ index[count++]->setType(TType(EbtFloat, EvqTemporary, 2));
+ }
+
+ // Create expression as:
+ // (sampleCount == 2) ? pos2[idx] :
+ // (sampleCount == 4) ? pos4[idx] :
+ // (sampleCount == 8) ? pos8[idx] :
+ // (sampleCount == 16) ? pos16[idx] : float2(0,0);
+ TIntermTyped* test =
+ intermediate.addSelection(idxtest[0], index[0],
+ intermediate.addSelection(idxtest[1], index[1],
+ intermediate.addSelection(idxtest[2], index[2],
+ intermediate.addSelection(idxtest[3], index[3],
+ getSamplePosArray(1), loc), loc), loc), loc);
+
+ compoundStatement = intermediate.growAggregate(compoundStatement, test);
+ compoundStatement->setOperator(EOpSequence);
+ compoundStatement->setLoc(loc);
+ compoundStatement->setType(TType(EbtFloat, EvqTemporary, 2));
+
+ node = compoundStatement;
+
break;
}
+ case EOpSubpassLoad:
+ {
+ const TIntermTyped* argSubpass =
+ argAggregate ? argAggregate->getSequence()[0]->getAsTyped() :
+ arguments->getAsTyped();
+
+ const TSampler& sampler = argSubpass->getType().getSampler();
+
+ // subpass load: the multisample form is overloaded. Here, we convert that to
+ // the EOpSubpassLoadMS opcode.
+ if (argAggregate != nullptr && argAggregate->getSequence().size() > 1)
+ node->getAsOperator()->setOp(EOpSubpassLoadMS);
+
+ node = convertReturn(node, sampler);
+
+ break;
+ }
+
+
default:
break; // most pass through unchanged
}
@@ -3149,7 +4319,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
//
void HlslParseContext::decomposeGeometryMethods(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments)
{
- if (!node || !node->getAsOperator())
+ if (node == nullptr || !node->getAsOperator())
return;
const TOperator op = node->getAsOperator()->getOp();
@@ -3158,15 +4328,27 @@ void HlslParseContext::decomposeGeometryMethods(const TSourceLoc& loc, TIntermTy
switch (op) {
case EOpMethodAppend:
if (argAggregate) {
+ // Don't emit these for non-GS stage, since we won't have the gsStreamOutput symbol.
+ if (language != EShLangGeometry) {
+ node = nullptr;
+ return;
+ }
+
TIntermAggregate* sequence = nullptr;
TIntermAggregate* emit = new TIntermAggregate(EOpEmitVertex);
emit->setLoc(loc);
emit->setType(TType(EbtVoid));
+ // find the matching output
+ if (gsStreamOutput == nullptr) {
+ error(loc, "unable to find output symbol for Append()", "", "");
+ return;
+ }
+
sequence = intermediate.growAggregate(sequence,
handleAssign(loc, EOpAssign,
- argAggregate->getSequence()[0]->getAsTyped(),
+ intermediate.addSymbol(*gsStreamOutput, loc),
argAggregate->getSequence()[1]->getAsTyped()),
loc);
@@ -3181,6 +4363,12 @@ void HlslParseContext::decomposeGeometryMethods(const TSourceLoc& loc, TIntermTy
case EOpMethodRestartStrip:
{
+ // Don't emit these for non-GS stage, since we won't have the gsStreamOutput symbol.
+ if (language != EShLangGeometry) {
+ node = nullptr;
+ return;
+ }
+
TIntermAggregate* cut = new TIntermAggregate(EOpEndPrimitive);
cut->setLoc(loc);
cut->setType(TType(EbtVoid));
@@ -3259,6 +4447,28 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
break;
}
+ case EOpAny: // fall through
+ case EOpAll:
+ {
+ TIntermTyped* typedArg = arguments->getAsTyped();
+
+ // HLSL allows float/etc types here, and the SPIR-V opcode requires a bool.
+ // We'll convert here. Note that for efficiency, we could add a smarter
+ // decomposition for some type cases, e.g, maybe by decomposing a dot product.
+ if (typedArg->getType().getBasicType() != EbtBool) {
+ const TType boolType(EbtBool, EvqTemporary,
+ typedArg->getVectorSize(),
+ typedArg->getMatrixCols(),
+ typedArg->getMatrixRows(),
+ typedArg->isVector());
+
+ typedArg = intermediate.addConversion(EOpConstructBool, boolType, typedArg);
+ node->getAsUnaryNode()->setOperand(typedArg);
+ }
+
+ break;
+ }
+
case EOpSaturate:
{
// saturate(a) -> clamp(a,0,1)
@@ -3328,14 +4538,21 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
std::max(arg0->getType().getMatrixRows(), 1);
TConstUnion zero;
- zero.setDConst(0.0);
+ if (arg0->getType().isIntegerDomain())
+ zero.setDConst(0);
+ else
+ zero.setDConst(0.0);
TConstUnionArray zeros(constComponentCount, zero);
less->getSequence().push_back(intermediate.addConstantUnion(zeros, arg0->getType(), loc, true));
compareNode = intermediate.addBuiltInFunctionCall(loc, EOpAny, true, less, TType(EbtBool));
} else {
- TIntermTyped* zero = intermediate.addConstantUnion(0, type0, loc, true);
+ TIntermTyped* zero;
+ if (arg0->getType().isIntegerDomain())
+ zero = intermediate.addConstantUnion(0, loc, true);
+ else
+ zero = intermediate.addConstantUnion(0.0, type0, loc, true);
compareNode = handleBinaryMath(loc, "clip", EOpLessThan, arg0, zero);
}
@@ -3702,6 +4919,51 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
break;
}
+ case EOpIsFinite:
+ {
+ // Since OPIsFinite in SPIR-V is only supported with the Kernel capability, we translate
+ // it to !isnan && !isinf
+
+ TIntermTyped* arg0 = node->getAsUnaryNode()->getOperand();
+
+ // We'll make a temporary in case the RHS is cmoplex
+ TVariable* tempArg = makeInternalVariable("@finitetmp", arg0->getType());
+ tempArg->getWritableType().getQualifier().makeTemporary();
+
+ TIntermTyped* tmpArgAssign = intermediate.addAssign(EOpAssign,
+ intermediate.addSymbol(*tempArg, loc),
+ arg0, loc);
+
+ TIntermAggregate* compoundStatement = intermediate.makeAggregate(tmpArgAssign, loc);
+
+ const TType boolType(EbtBool, EvqTemporary, arg0->getVectorSize(), arg0->getMatrixCols(),
+ arg0->getMatrixRows());
+
+ TIntermTyped* isnan = handleUnaryMath(loc, "isnan", EOpIsNan, intermediate.addSymbol(*tempArg, loc));
+ isnan->setType(boolType);
+
+ TIntermTyped* notnan = handleUnaryMath(loc, "!", EOpLogicalNot, isnan);
+ notnan->setType(boolType);
+
+ TIntermTyped* isinf = handleUnaryMath(loc, "isinf", EOpIsInf, intermediate.addSymbol(*tempArg, loc));
+ isinf->setType(boolType);
+
+ TIntermTyped* notinf = handleUnaryMath(loc, "!", EOpLogicalNot, isinf);
+ notinf->setType(boolType);
+
+ TIntermTyped* andNode = handleBinaryMath(loc, "and", EOpLogicalAnd, notnan, notinf);
+ andNode->setType(boolType);
+
+ compoundStatement = intermediate.growAggregate(compoundStatement, andNode);
+ compoundStatement->setOperator(EOpSequence);
+ compoundStatement->setLoc(loc);
+ compoundStatement->setType(boolType);
+
+ node = compoundStatement;
+
+ break;
+ }
+
default:
break; // most pass through unchanged
}
@@ -3732,9 +4994,11 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct
//
// It's a constructor, of type 'type'.
//
- result = addConstructor(loc, arguments, type);
- if (result == nullptr)
+ result = handleConstructor(loc, arguments, type);
+ if (result == nullptr) {
error(loc, "cannot construct with these arguments", type.getCompleteString().c_str(), "");
+ return nullptr;
+ }
}
} else {
//
@@ -3742,12 +5006,25 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct
//
const TFunction* fnCandidate = nullptr;
bool builtIn = false;
+ int thisDepth = 0;
+
+ TIntermAggregate* aggregate = arguments ? arguments->getAsAggregate() : nullptr;
// TODO: this needs improvement: there's no way at present to look up a signature in
// the symbol table for an arbitrary type. This is a temporary hack until that ability exists.
// It will have false positives, since it doesn't check arg counts or types.
- if (arguments && arguments->getAsAggregate()) {
- if (isStructBufferType(arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType())) {
+ if (arguments) {
+ // Check if first argument is struct buffer type. It may be an aggregate or a symbol, so we
+ // look for either case.
+
+ TIntermTyped* arg0 = nullptr;
+
+ if (aggregate && aggregate->getSequence().size() > 0)
+ arg0 = aggregate->getSequence()[0]->getAsTyped();
+ else if (arguments->getAsSymbolNode())
+ arg0 = arguments->getAsSymbolNode();
+
+ if (arg0 != nullptr && isStructBufferType(arg0->getType())) {
static const int methodPrefixSize = sizeof(BUILTIN_PREFIX)-1;
if (function->getName().length() > methodPrefixSize &&
@@ -3762,7 +5039,7 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct
}
if (fnCandidate == nullptr)
- fnCandidate = findFunction(loc, *function, builtIn, arguments);
+ fnCandidate = findFunction(loc, *function, builtIn, thisDepth, arguments);
if (fnCandidate) {
// This is a declared function that might map to
@@ -3772,16 +5049,39 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct
// Error check for a function requiring specific extensions present.
if (builtIn && fnCandidate->getNumExtensions())
- requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str());
+ requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(),
+ fnCandidate->getName().c_str());
- // Convert 'in' arguments
+ // turn an implicit member-function resolution into an explicit call
+ TString callerName;
+ if (thisDepth == 0)
+ callerName = fnCandidate->getMangledName();
+ else {
+ // get the explicit (full) name of the function
+ callerName = currentTypePrefix[currentTypePrefix.size() - thisDepth];
+ callerName += fnCandidate->getMangledName();
+ // insert the implicit calling argument
+ pushFrontArguments(intermediate.addSymbol(*getImplicitThis(thisDepth)), arguments);
+ }
+
+ // Convert 'in' arguments, so that types match.
+ // However, skip those that need expansion, that is covered next.
if (arguments)
addInputArgumentConversions(*fnCandidate, arguments);
+ // Expand arguments. Some arguments must physically expand to a different set
+ // than what the shader declared and passes.
+ if (arguments && !builtIn)
+ expandArguments(loc, *fnCandidate, arguments);
+
+ // Expansion may have changed the form of arguments
+ aggregate = arguments ? arguments->getAsAggregate() : nullptr;
+
op = fnCandidate->getBuiltInOp();
if (builtIn && op != EOpNull) {
// A function call mapped to a built-in operation.
- result = intermediate.addBuiltInFunctionCall(loc, op, fnCandidate->getParamCount() == 1, arguments, fnCandidate->getType());
+ result = intermediate.addBuiltInFunctionCall(loc, op, fnCandidate->getParamCount() == 1, arguments,
+ fnCandidate->getType());
if (result == nullptr) {
error(arguments->getLoc(), " wrong operand type", "Internal Error",
"built in unary operator function. Type: %s",
@@ -3794,14 +5094,14 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct
// It could still be a built-in function, but only if PureOperatorBuiltins == false.
result = intermediate.setAggregateOperator(arguments, EOpFunctionCall, fnCandidate->getType(), loc);
TIntermAggregate* call = result->getAsAggregate();
- call->setName(fnCandidate->getMangledName());
+ call->setName(callerName);
// this is how we know whether the given function is a built-in function or a user-defined function
// if builtIn == false, it's a userDefined -> could be an overloaded built-in function also
// if builtIn == true, it's definitely a built-in function with EOpNull
if (! builtIn) {
call->setUserDefined();
- intermediate.addToCallGraph(infoSink, currentCaller, fnCandidate->getMangledName());
+ intermediate.addToCallGraph(infoSink, currentCaller, callerName);
}
}
@@ -3814,50 +5114,83 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct
decomposeSampleMethods(loc, result, arguments); // HLSL->AST sample method decompositions
decomposeGeometryMethods(loc, result, arguments); // HLSL->AST geometry method decompositions
- // Convert 'out' arguments. If it was a constant folded built-in, it won't be an aggregate anymore.
- // Built-ins with a single argument aren't called with an aggregate, but they also don't have an output.
- // Also, build the qualifier list for user function calls, which are always called with an aggregate.
- // We don't do this is if there has been a decomposition, which will have added its own conversions
- // for output parameters.
+ // Create the qualifier list, carried in the AST for the call.
+ // Because some arguments expand to multiple arguments, the qualifier list will
+ // be longer than the formal parameter list.
if (result == fnNode && result->getAsAggregate()) {
TQualifierList& qualifierList = result->getAsAggregate()->getQualifierList();
for (int i = 0; i < fnCandidate->getParamCount(); ++i) {
TStorageQualifier qual = (*fnCandidate)[i].type->getQualifier().storage;
- qualifierList.push_back(qual);
+ if (hasStructBuffCounter(*(*fnCandidate)[i].type)) {
+ // add buffer and counter buffer argument qualifier
+ qualifierList.push_back(qual);
+ qualifierList.push_back(qual);
+ } else if (shouldFlatten(*(*fnCandidate)[i].type, (*fnCandidate)[i].type->getQualifier().storage,
+ true)) {
+ // add structure member expansion
+ for (int memb = 0; memb < (int)(*fnCandidate)[i].type->getStruct()->size(); ++memb)
+ qualifierList.push_back(qual);
+ } else {
+ // Normal 1:1 case
+ qualifierList.push_back(qual);
+ }
}
- result = addOutputArgumentConversions(*fnCandidate, *result->getAsOperator());
}
+
+ // Convert 'out' arguments. If it was a constant folded built-in, it won't be an aggregate anymore.
+ // Built-ins with a single argument aren't called with an aggregate, but they also don't have an output.
+ // Also, build the qualifier list for user function calls, which are always called with an aggregate.
+ // We don't do this is if there has been a decomposition, which will have added its own conversions
+ // for output parameters.
+ if (result == fnNode && result->getAsAggregate())
+ result = addOutputArgumentConversions(*fnCandidate, *result->getAsOperator());
}
}
// generic error recovery
- // TODO: simplification: localize all the error recoveries that look like this, and taking type into account to reduce cascades
+ // TODO: simplification: localize all the error recoveries that look like this, and taking type into account to
+ // reduce cascades
if (result == nullptr)
result = intermediate.addConstantUnion(0.0, EbtFloat, loc);
return result;
}
+// An initial argument list is difficult: it can be null, or a single node,
+// or an aggregate if more than one argument. Add one to the front, maintaining
+// this lack of uniformity.
+void HlslParseContext::pushFrontArguments(TIntermTyped* front, TIntermTyped*& arguments)
+{
+ if (arguments == nullptr)
+ arguments = front;
+ else if (arguments->getAsAggregate() != nullptr)
+ arguments->getAsAggregate()->getSequence().insert(arguments->getAsAggregate()->getSequence().begin(), front);
+ else
+ arguments = intermediate.growAggregate(front, arguments);
+}
+
//
// Add any needed implicit conversions for function-call arguments to input parameters.
//
void HlslParseContext::addInputArgumentConversions(const TFunction& function, TIntermTyped*& arguments)
{
TIntermAggregate* aggregate = arguments->getAsAggregate();
- const auto setArg = [&](int argNum, TIntermTyped* arg) {
+
+ // Replace a single argument with a single argument.
+ const auto setArg = [&](int paramNum, TIntermTyped* arg) {
if (function.getParamCount() == 1)
arguments = arg;
else {
- if (aggregate)
- aggregate->getSequence()[argNum] = arg;
- else
+ if (aggregate == nullptr)
arguments = arg;
+ else
+ aggregate->getSequence()[paramNum] = arg;
}
};
// Process each argument's conversion
- for (int i = 0; i < function.getParamCount(); ++i) {
- if (! function[i].type->getQualifier().isParamInput())
+ for (int param = 0; param < function.getParamCount(); ++param) {
+ if (! function[param].type->getQualifier().isParamInput())
continue;
// At this early point there is a slight ambiguity between whether an aggregate 'arguments'
@@ -3865,40 +5198,117 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI
// means take 'arguments' itself as the one argument.
TIntermTyped* arg = function.getParamCount() == 1
? arguments->getAsTyped()
- : (aggregate ? aggregate->getSequence()[i]->getAsTyped() : arguments->getAsTyped());
- if (*function[i].type != arg->getType()) {
+ : (aggregate ?
+ aggregate->getSequence()[param]->getAsTyped() :
+ arguments->getAsTyped());
+ if (*function[param].type != arg->getType()) {
// In-qualified arguments just need an extra node added above the argument to
// convert to the correct type.
- TIntermTyped* convArg = intermediate.addConversion(EOpFunctionCall, *function[i].type, arg);
+ TIntermTyped* convArg = intermediate.addConversion(EOpFunctionCall, *function[param].type, arg);
if (convArg != nullptr)
- convArg = intermediate.addShapeConversion(EOpFunctionCall, *function[i].type, convArg);
+ convArg = intermediate.addUniShapeConversion(EOpFunctionCall, *function[param].type, convArg);
if (convArg != nullptr)
- setArg(i, convArg);
+ setArg(param, convArg);
else
- error(arg->getLoc(), "cannot convert input argument, argument", "", "%d", i);
+ error(arg->getLoc(), "cannot convert input argument, argument", "", "%d", param);
} else {
- if (wasFlattened(arg) || wasSplit(arg)) {
- // Will make a two-level subtree.
- // The deepest will copy member-by-member to build the structure to pass.
- // The level above that will be a two-operand EOpComma sequence that follows the copy by the
- // object itself.
- TVariable* internalAggregate = makeInternalVariable("aggShadow", *function[i].type);
- internalAggregate->getWritableType().getQualifier().makeTemporary();
- TIntermSymbol* internalSymbolNode = new TIntermSymbol(internalAggregate->getUniqueId(),
- internalAggregate->getName(),
- internalAggregate->getType());
- internalSymbolNode->setLoc(arg->getLoc());
- // This makes the deepest level, the member-wise copy
- TIntermAggregate* assignAgg = handleAssign(arg->getLoc(), EOpAssign, internalSymbolNode, arg)->getAsAggregate();
+ if (wasFlattened(arg)) {
+ // If both formal and calling arg are to be flattened, leave that to argument
+ // expansion, not conversion.
+ if (!shouldFlatten(*function[param].type, function[param].type->getQualifier().storage, true)) {
+ // Will make a two-level subtree.
+ // The deepest will copy member-by-member to build the structure to pass.
+ // The level above that will be a two-operand EOpComma sequence that follows the copy by the
+ // object itself.
+ TVariable* internalAggregate = makeInternalVariable("aggShadow", *function[param].type);
+ internalAggregate->getWritableType().getQualifier().makeTemporary();
+ TIntermSymbol* internalSymbolNode = new TIntermSymbol(internalAggregate->getUniqueId(),
+ internalAggregate->getName(),
+ internalAggregate->getType());
+ internalSymbolNode->setLoc(arg->getLoc());
+ // This makes the deepest level, the member-wise copy
+ TIntermAggregate* assignAgg = handleAssign(arg->getLoc(), EOpAssign,
+ internalSymbolNode, arg)->getAsAggregate();
+
+ // Now, pair that with the resulting aggregate.
+ assignAgg = intermediate.growAggregate(assignAgg, internalSymbolNode, arg->getLoc());
+ assignAgg->setOperator(EOpComma);
+ assignAgg->setType(internalAggregate->getType());
+ setArg(param, assignAgg);
+ }
+ }
+ }
+ }
+}
- // Now, pair that with the resulting aggregate.
- assignAgg = intermediate.growAggregate(assignAgg, internalSymbolNode, arg->getLoc());
- assignAgg->setOperator(EOpComma);
- assignAgg->setType(internalAggregate->getType());
- setArg(i, assignAgg);
+//
+// Add any needed implicit expansion of calling arguments from what the shader listed to what's
+// internally needed for the AST (given the constraints downstream).
+//
+void HlslParseContext::expandArguments(const TSourceLoc& loc, const TFunction& function, TIntermTyped*& arguments)
+{
+ TIntermAggregate* aggregate = arguments->getAsAggregate();
+ int functionParamNumberOffset = 0;
+
+ // Replace a single argument with a single argument.
+ const auto setArg = [&](int paramNum, TIntermTyped* arg) {
+ if (function.getParamCount() + functionParamNumberOffset == 1)
+ arguments = arg;
+ else {
+ if (aggregate == nullptr)
+ arguments = arg;
+ else
+ aggregate->getSequence()[paramNum] = arg;
+ }
+ };
+
+ // Replace a single argument with a list of arguments
+ const auto setArgList = [&](int paramNum, const TVector<TIntermTyped*>& args) {
+ if (args.size() == 1)
+ setArg(paramNum, args.front());
+ else if (args.size() > 1) {
+ if (function.getParamCount() + functionParamNumberOffset == 1) {
+ arguments = intermediate.makeAggregate(args.front());
+ std::for_each(args.begin() + 1, args.end(),
+ [&](TIntermTyped* arg) {
+ arguments = intermediate.growAggregate(arguments, arg);
+ });
+ } else {
+ auto it = aggregate->getSequence().erase(aggregate->getSequence().begin() + paramNum);
+ aggregate->getSequence().insert(it, args.begin(), args.end());
}
+ functionParamNumberOffset += (int)(args.size() - 1);
+ }
+ };
+
+ // Process each argument's conversion
+ for (int param = 0; param < function.getParamCount(); ++param) {
+ // At this early point there is a slight ambiguity between whether an aggregate 'arguments'
+ // is the single argument itself or its children are the arguments. Only one argument
+ // means take 'arguments' itself as the one argument.
+ TIntermTyped* arg = function.getParamCount() == 1
+ ? arguments->getAsTyped()
+ : (aggregate ?
+ aggregate->getSequence()[param + functionParamNumberOffset]->getAsTyped() :
+ arguments->getAsTyped());
+
+ if (wasFlattened(arg) && shouldFlatten(*function[param].type, function[param].type->getQualifier().storage, true)) {
+ // Need to pass the structure members instead of the structure.
+ TVector<TIntermTyped*> memberArgs;
+ for (int memb = 0; memb < (int)arg->getType().getStruct()->size(); ++memb)
+ memberArgs.push_back(flattenAccess(arg, memb));
+ setArgList(param + functionParamNumberOffset, memberArgs);
}
}
+
+ // TODO: if we need both hidden counter args (below) and struct expansion (above)
+ // the two algorithms need to be merged: Each assumes the list starts out 1:1 between
+ // parameters and arguments.
+
+ // If any argument is a pass-by-reference struct buffer with an associated counter
+ // buffer, we have to add another hidden parameter for that counter.
+ if (aggregate)
+ addStructBuffArguments(loc, aggregate);
}
//
@@ -3972,7 +5382,8 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu
TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, loc);
// This makes the deepest level, the member-wise copy
- TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(), tempArgNode);
+ TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(),
+ tempArgNode);
tempAssign = handleLvalue(arguments[i]->getLoc(), "assign", tempAssign);
conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc());
@@ -3994,6 +5405,55 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu
}
//
+// Add any needed "hidden" counter buffer arguments for function calls.
+//
+// Modifies the 'aggregate' argument if needed. Otherwise, is no-op.
+//
+void HlslParseContext::addStructBuffArguments(const TSourceLoc& loc, TIntermAggregate*& aggregate)
+{
+ // See if there are any SB types with counters.
+ const bool hasStructBuffArg =
+ std::any_of(aggregate->getSequence().begin(),
+ aggregate->getSequence().end(),
+ [this](const TIntermNode* node) {
+ return (node->getAsTyped() != nullptr) && hasStructBuffCounter(node->getAsTyped()->getType());
+ });
+
+ // Nothing to do, if we didn't find one.
+ if (! hasStructBuffArg)
+ return;
+
+ TIntermSequence argsWithCounterBuffers;
+
+ for (int param = 0; param < int(aggregate->getSequence().size()); ++param) {
+ argsWithCounterBuffers.push_back(aggregate->getSequence()[param]);
+
+ if (hasStructBuffCounter(aggregate->getSequence()[param]->getAsTyped()->getType())) {
+ const TIntermSymbol* blockSym = aggregate->getSequence()[param]->getAsSymbolNode();
+ if (blockSym != nullptr) {
+ TType counterType;
+ counterBufferType(loc, counterType);
+
+ const TString counterBlockName(getStructBuffCounterName(blockSym->getName()));
+
+ TVariable* variable = makeInternalVariable(counterBlockName, counterType);
+
+ // Mark this buffer as requiring a counter block. TODO: there should be a better
+ // way to track it.
+ structBufferCounter[counterBlockName] = true;
+
+ TIntermSymbol* sym = intermediate.addSymbol(*variable, loc);
+ argsWithCounterBuffers.push_back(sym);
+ }
+ }
+ }
+
+ // Swap with the temp list we've built up.
+ aggregate->getSequence().swap(argsWithCounterBuffers);
+}
+
+
+//
// Do additional checking of built-in function calls that is not caught
// by normal semantic checks on argument type, extension tagging, etc.
//
@@ -4033,7 +5493,8 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn
case EOpTextureGather:
// More than two arguments needs gpu_shader5, and rectangular or shadow needs gpu_shader5,
// otherwise, need GL_ARB_texture_gather.
- if (fnCandidate.getParamCount() > 2 || fnCandidate[0].type->getSampler().dim == EsdRect || fnCandidate[0].type->getSampler().shadow) {
+ if (fnCandidate.getParamCount() > 2 || fnCandidate[0].type->getSampler().dim == EsdRect ||
+ fnCandidate[0].type->getSampler().shadow) {
if (! fnCandidate[0].type->getSampler().shadow)
compArg = 2;
}
@@ -4088,14 +5549,15 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn
}
if (arg > 0) {
- if (! aggArgs[arg]->getAsConstantUnion())
+ if (aggArgs[arg]->getAsConstantUnion() == nullptr)
error(loc, "argument must be compile-time constant", "texel offset", "");
else {
const TType& type = aggArgs[arg]->getAsTyped()->getType();
for (int c = 0; c < type.getVectorSize(); ++c) {
int offset = aggArgs[arg]->getAsConstantUnion()->getConstArray()[c].getIConst();
if (offset > resources.maxProgramTexelOffset || offset < resources.minProgramTexelOffset)
- error(loc, "value is out of range:", "texel offset", "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]");
+ error(loc, "value is out of range:", "texel offset",
+ "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]");
}
}
}
@@ -4131,7 +5593,8 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn
// desktop 4.4 and later: swizzles may be used
const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true);
if (base == nullptr || base->getType().getQualifier().storage != EvqVaryingIn)
- error(loc, "first argument must be an interpolant, or interpolant-array element", fnCandidate.getName().c_str(), "");
+ error(loc, "first argument must be an interpolant, or interpolant-array element",
+ fnCandidate.getName().c_str(), "");
}
break;
@@ -4141,9 +5604,13 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn
}
//
-// Handle seeing a built-in constructor in a grammar production.
+// Handle seeing something in a grammar production that can be done by calling
+// a constructor.
//
-TFunction* HlslParseContext::handleConstructorCall(const TSourceLoc& loc, const TType& type)
+// The constructor still must be "handled" by handleFunctionCall(), which will
+// then call handleConstructor().
+//
+TFunction* HlslParseContext::makeConstructorCall(const TSourceLoc& loc, const TType& type)
{
TOperator op = intermediate.mapTypeToConstructorOp(type);
@@ -4161,18 +5628,55 @@ TFunction* HlslParseContext::handleConstructorCall(const TSourceLoc& loc, const
// Handle seeing a "COLON semantic" at the end of a type declaration,
// by updating the type according to the semantic.
//
-void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, TBuiltInVariable builtIn, const TString& upperCase)
+void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, TBuiltInVariable builtIn,
+ const TString& upperCase)
{
- // adjust for stage in/out
+ // Parse and return semantic number. If limit is 0, it will be ignored. Otherwise, if the parsed
+ // semantic number is >= limit, errorMsg is issued and 0 is returned.
+ // TODO: it would be nicer if limit and errorMsg had default parameters, but some compilers don't yet
+ // accept those in lambda functions.
+ const auto getSemanticNumber = [this, loc](const TString& semantic, unsigned int limit, const char* errorMsg) -> unsigned int {
+ size_t pos = semantic.find_last_not_of("0123456789");
+ if (pos == std::string::npos)
+ return 0u;
+
+ unsigned int semanticNum = (unsigned int)atoi(semantic.c_str() + pos + 1);
+
+ if (limit != 0 && semanticNum >= limit) {
+ error(loc, errorMsg, semantic.c_str(), "");
+ return 0u;
+ }
+
+ return semanticNum;
+ };
switch(builtIn) {
+ case EbvNone:
+ // Get location numbers from fragment outputs, instead of
+ // auto-assigning them.
+ if (language == EShLangFragment && upperCase.compare(0, 9, "SV_TARGET") == 0) {
+ qualifier.layoutLocation = getSemanticNumber(upperCase, 0, nullptr);
+ nextOutLocation = std::max(nextOutLocation, qualifier.layoutLocation + 1u);
+ } else if (upperCase.compare(0, 15, "SV_CLIPDISTANCE") == 0) {
+ builtIn = EbvClipDistance;
+ qualifier.layoutLocation = getSemanticNumber(upperCase, maxClipCullRegs, "invalid clip semantic");
+ } else if (upperCase.compare(0, 15, "SV_CULLDISTANCE") == 0) {
+ builtIn = EbvCullDistance;
+ qualifier.layoutLocation = getSemanticNumber(upperCase, maxClipCullRegs, "invalid cull semantic");
+ }
+ break;
case EbvPosition:
+ // adjust for stage in/out
if (language == EShLangFragment)
builtIn = EbvFragCoord;
break;
- case EbvStencilRef:
+ case EbvFragStencilRef:
error(loc, "unimplemented; need ARB_shader_stencil_export", "SV_STENCILREF", "");
break;
+ case EbvTessLevelInner:
+ case EbvTessLevelOuter:
+ qualifier.patch = true;
+ break;
default:
break;
}
@@ -4249,6 +5753,7 @@ void HlslParseContext::handleRegister(const TSourceLoc& loc, TQualifier& qualifi
}
// TODO: learn what all these really mean and how they interact with regNumber and subComponent
+ const std::vector<std::string>& resourceInfo = intermediate.getResourceSetBinding();
switch (std::tolower(desc[0])) {
case 'b':
case 't':
@@ -4256,6 +5761,19 @@ void HlslParseContext::handleRegister(const TSourceLoc& loc, TQualifier& qualifi
case 's':
case 'u':
qualifier.layoutBinding = regNumber + subComponent;
+
+ // This handles per-register layout sets numbers. For the global mode which sets
+ // every symbol to the same value, see setLinkageLayoutSets().
+ if ((resourceInfo.size() % 3) == 0) {
+ // Apply per-symbol resource set and binding.
+ for (auto it = resourceInfo.cbegin(); it != resourceInfo.cend(); it = it + 3) {
+ if (strcmp(desc.c_str(), it[0].c_str()) == 0) {
+ qualifier.layoutSet = atoi(it[1].c_str());
+ qualifier.layoutBinding = atoi(it[2].c_str()) + subComponent;
+ break;
+ }
+ }
+ }
break;
default:
warn(loc, "ignoring unrecognized register type", "register", "%c", desc[0]);
@@ -4285,6 +5803,20 @@ void HlslParseContext::handleRegister(const TSourceLoc& loc, TQualifier& qualifi
}
}
+// Convert to a scalar boolean, or if not allowed by HLSL semantics,
+// report an error and return nullptr.
+TIntermTyped* HlslParseContext::convertConditionalExpression(const TSourceLoc& loc, TIntermTyped* condition,
+ bool mustBeScalar)
+{
+ if (mustBeScalar && !condition->getType().isScalarOrVec1()) {
+ error(loc, "requires a scalar", "conditional expression", "");
+ return nullptr;
+ }
+
+ return intermediate.addConversion(EOpConstructBool, TType(EbtBool, EvqTemporary, condition->getVectorSize()),
+ condition);
+}
+
//
// Same error message for all places assignments don't work.
//
@@ -4411,6 +5943,33 @@ bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node
case EOpConstructDMat4x2:
case EOpConstructDMat4x3:
case EOpConstructDMat4x4:
+ case EOpConstructIMat2x2:
+ case EOpConstructIMat2x3:
+ case EOpConstructIMat2x4:
+ case EOpConstructIMat3x2:
+ case EOpConstructIMat3x3:
+ case EOpConstructIMat3x4:
+ case EOpConstructIMat4x2:
+ case EOpConstructIMat4x3:
+ case EOpConstructIMat4x4:
+ case EOpConstructUMat2x2:
+ case EOpConstructUMat2x3:
+ case EOpConstructUMat2x4:
+ case EOpConstructUMat3x2:
+ case EOpConstructUMat3x3:
+ case EOpConstructUMat3x4:
+ case EOpConstructUMat4x2:
+ case EOpConstructUMat4x3:
+ case EOpConstructUMat4x4:
+ case EOpConstructBMat2x2:
+ case EOpConstructBMat2x3:
+ case EOpConstructBMat2x4:
+ case EOpConstructBMat3x2:
+ case EOpConstructBMat3x3:
+ case EOpConstructBMat3x4:
+ case EOpConstructBMat4x2:
+ case EOpConstructBMat4x3:
+ case EOpConstructBMat4x4:
constructingMatrix = true;
break;
default:
@@ -4467,7 +6026,8 @@ bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node
if (type.isImplicitlySizedArray()) {
// auto adapt the constructor type to the number of arguments
type.changeOuterArraySize(function.getParamCount());
- } else if (type.getOuterArraySize() != function.getParamCount()) {
+ } else if (type.getOuterArraySize() != function.getParamCount() &&
+ type.computeNumComponents() > size) {
error(loc, "array constructor needs one argument per array element", "constructor", "");
return true;
}
@@ -4479,7 +6039,8 @@ bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node
TArraySizes& arraySizes = type.getArraySizes();
// At least the dimensionalities have to match.
- if (! function[0].type->isArray() || arraySizes.getNumDims() != function[0].type->getArraySizes().getNumDims() + 1) {
+ if (! function[0].type->isArray() ||
+ arraySizes.getNumDims() != function[0].type->getArraySizes().getNumDims() + 1) {
error(loc, "array constructor argument not correct type to construct array element", "constructor", "");
return true;
}
@@ -4496,6 +6057,12 @@ bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node
}
}
+ // Some array -> array type casts are okay
+ if (arrayArg && function.getParamCount() == 1 && op != EOpConstructStruct && type.isArray() &&
+ !type.isArrayOfArrays() && !function[0].type->isArrayOfArrays() &&
+ type.getVectorSize() >= 1 && function[0].type->getVectorSize() >= 1)
+ return false;
+
if (arrayArg && op != EOpConstructStruct && ! type.isArrayOfArrays()) {
error(loc, "constructing non-array constituent from array argument", "constructor", "");
return true;
@@ -4510,7 +6077,7 @@ bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node
return true;
}
- if (op == EOpConstructStruct && ! type.isArray() && isZeroConstructor(node))
+ if (op == EOpConstructStruct && ! type.isArray() && isScalarConstructor(node))
return false;
if (op == EOpConstructStruct && ! type.isArray() && (int)type.getStruct()->size() != function.getParamCount()) {
@@ -4527,10 +6094,21 @@ bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node
return false;
}
-bool HlslParseContext::isZeroConstructor(const TIntermNode* node)
+// See if 'node', in the context of constructing aggregates, is a scalar argument
+// to a constructor.
+//
+bool HlslParseContext::isScalarConstructor(const TIntermNode* node)
{
- return node->getAsTyped()->isScalar() && node->getAsConstantUnion() &&
- node->getAsConstantUnion()->getConstArray()[0].getIConst() == 0;
+ // Obviously, it must be a scalar, but an aggregate node might not be fully
+ // completed yet: holding a sequence of initializers under an aggregate
+ // would not yet be typed, so don't check it's type. This corresponds to
+ // the aggregate operator also not being set yet. (An aggregate operation
+ // that legitimately yields a scalar will have a getOp() of that operator,
+ // not EOpNull.)
+
+ return node->getAsTyped() != nullptr &&
+ node->getAsTyped()->isScalar() &&
+ (node->getAsAggregate() == nullptr || node->getAsAggregate()->getOp() != EOpNull);
}
// Verify all the correct semantics for constructing a combined texture/sampler.
@@ -4586,7 +6164,8 @@ bool HlslParseContext::constructorTextureSamplerError(const TSourceLoc& loc, con
return true;
}
if (function.getType().getSampler().shadow != function[1].type->getSampler().shadow) {
- error(loc, "sampler-constructor second argument presence of shadow must match constructor presence of shadow", token, "");
+ error(loc, "sampler-constructor second argument presence of shadow must match constructor presence of shadow",
+ token, "");
return true;
}
@@ -4607,13 +6186,6 @@ bool HlslParseContext::voidErrorCheck(const TSourceLoc& loc, const TString& iden
return false;
}
-// Checks to see if the node (for the expression) contains a scalar boolean expression or not
-void HlslParseContext::boolCheck(const TSourceLoc& loc, const TIntermTyped* type)
-{
- if (type->getBasicType() != EbtBool || type->isArray() || type->isMatrix() || type->isVector())
- error(loc, "boolean expression expected", "", "");
-}
-
//
// Fix just a full qualifier (no variables or types yet, but qualifier is complete) at global level.
//
@@ -4683,7 +6255,8 @@ int HlslParseContext::computeSamplerTypeIndex(TSampler& sampler)
int shadowIndex = sampler.shadow ? 1 : 0;
int externalIndex = sampler.external ? 1 : 0;
- return EsdNumDims * (EbtNumTypes * (2 * (2 * arrayIndex + shadowIndex) + externalIndex) + sampler.type) + sampler.dim;
+ return EsdNumDims *
+ (EbtNumTypes * (2 * (2 * arrayIndex + shadowIndex) + externalIndex) + sampler.type) + sampler.dim;
}
//
@@ -4759,9 +6332,10 @@ void HlslParseContext::arrayDimMerge(TType& type, const TArraySizes* sizes)
// Do all the semantic checking for declaring or redeclaring an array, with and
// without a size, and make the right changes to the symbol table.
//
-void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier, const TType& type, TSymbol*& symbol, bool track)
+void HlslParseContext::declareArray(const TSourceLoc& loc, const TString& identifier, const TType& type,
+ TSymbol*& symbol, bool track)
{
- if (! symbol) {
+ if (symbol == nullptr) {
bool currentScope;
symbol = symbolTable.find(identifier, nullptr, &currentScope);
@@ -4792,7 +6366,7 @@ void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier,
// Process a redeclaration.
//
- if (! symbol) {
+ if (symbol == nullptr) {
error(loc, "array variable name expected", identifier.c_str(), "");
return;
}
@@ -4801,7 +6375,8 @@ void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier,
TType& existingType = symbol->getWritableType();
if (existingType.isExplicitlySizedArray()) {
- // be more lenient for input arrays to geometry shaders and tessellation control outputs, where the redeclaration is the same size
+ // be more lenient for input arrays to geometry shaders and tessellation control outputs,
+ // where the redeclaration is the same size
return;
}
@@ -4857,7 +6432,8 @@ void HlslParseContext::updateImplicitArraySize(const TSourceLoc& loc, TIntermNod
//
// Enforce non-initializer type/qualifier rules.
//
-void HlslParseContext::fixConstInit(const TSourceLoc& loc, TString& identifier, TType& type, TIntermTyped*& initializer)
+void HlslParseContext::fixConstInit(const TSourceLoc& loc, const TString& identifier, TType& type,
+ TIntermTyped*& initializer)
{
//
// Make the qualifier make sense, given that there is an initializer.
@@ -4892,126 +6468,6 @@ TSymbol* HlslParseContext::redeclareBuiltinVariable(const TSourceLoc& /*loc*/, c
}
//
-// Either redeclare the requested block, or give an error message why it can't be done.
-//
-// TODO: functionality: explicitly sizing members of redeclared blocks is not giving them an explicit size
-void HlslParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newTypeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes)
-{
- // Redeclaring a built-in block...
-
- // Blocks with instance names are easy to find, lookup the instance name,
- // Anonymous blocks need to be found via a member.
- bool builtIn;
- TSymbol* block;
- if (instanceName)
- block = symbolTable.find(*instanceName, &builtIn);
- else
- block = symbolTable.find(newTypeList.front().type->getFieldName(), &builtIn);
-
- // If the block was not found, this must be a version/profile/stage
- // that doesn't have it, or the instance name is wrong.
- const char* errorName = instanceName ? instanceName->c_str() : newTypeList.front().type->getFieldName().c_str();
- if (! block) {
- error(loc, "no declaration found for redeclaration", errorName, "");
- return;
- }
- // Built-in blocks cannot be redeclared more than once, which if happened,
- // we'd be finding the already redeclared one here, rather than the built in.
- if (! builtIn) {
- error(loc, "can only redeclare a built-in block once, and before any use", blockName.c_str(), "");
- return;
- }
-
- // Copy the block to make a writable version, to insert into the block table after editing.
- block = symbolTable.copyUpDeferredInsert(block);
-
- if (block->getType().getBasicType() != EbtBlock) {
- error(loc, "cannot redeclare a non block as a block", errorName, "");
- return;
- }
-
- // Edit and error check the container against the redeclaration
- // - remove unused members
- // - ensure remaining qualifiers/types match
- TType& type = block->getWritableType();
- TTypeList::iterator member = type.getWritableStruct()->begin();
- size_t numOriginalMembersFound = 0;
- while (member != type.getStruct()->end()) {
- // look for match
- bool found = false;
- TTypeList::const_iterator newMember;
- TSourceLoc memberLoc;
- memberLoc.init();
- for (newMember = newTypeList.begin(); newMember != newTypeList.end(); ++newMember) {
- if (member->type->getFieldName() == newMember->type->getFieldName()) {
- found = true;
- memberLoc = newMember->loc;
- break;
- }
- }
-
- if (found) {
- ++numOriginalMembersFound;
- // - ensure match between redeclared members' types
- // - check for things that can't be changed
- // - update things that can be changed
- TType& oldType = *member->type;
- const TType& newType = *newMember->type;
- if (! newType.sameElementType(oldType))
- error(memberLoc, "cannot redeclare block member with a different type", member->type->getFieldName().c_str(), "");
- if (oldType.isArray() != newType.isArray())
- error(memberLoc, "cannot change arrayness of redeclared block member", member->type->getFieldName().c_str(), "");
- else if (! oldType.sameArrayness(newType) && oldType.isExplicitlySizedArray())
- error(memberLoc, "cannot change array size of redeclared block member", member->type->getFieldName().c_str(), "");
- if (newType.getQualifier().isMemory())
- error(memberLoc, "cannot add memory qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
- if (newType.getQualifier().hasLayout())
- error(memberLoc, "cannot add layout to redeclared block member", member->type->getFieldName().c_str(), "");
- if (newType.getQualifier().patch)
- error(memberLoc, "cannot add patch to redeclared block member", member->type->getFieldName().c_str(), "");
- oldType.getQualifier().centroid = newType.getQualifier().centroid;
- oldType.getQualifier().sample = newType.getQualifier().sample;
- oldType.getQualifier().invariant = newType.getQualifier().invariant;
- oldType.getQualifier().noContraction = newType.getQualifier().noContraction;
- oldType.getQualifier().smooth = newType.getQualifier().smooth;
- oldType.getQualifier().flat = newType.getQualifier().flat;
- oldType.getQualifier().nopersp = newType.getQualifier().nopersp;
-
- // go to next member
- ++member;
- } else {
- // For missing members of anonymous blocks that have been redeclared,
- // hide the original (shared) declaration.
- // Instance-named blocks can just have the member removed.
- if (instanceName)
- member = type.getWritableStruct()->erase(member);
- else {
- member->type->hideMember();
- ++member;
- }
- }
- }
-
- if (numOriginalMembersFound < newTypeList.size())
- error(loc, "block redeclaration has extra members", blockName.c_str(), "");
- if (type.isArray() != (arraySizes != nullptr))
- error(loc, "cannot change arrayness of redeclared block", blockName.c_str(), "");
- else if (type.isArray()) {
- if (type.isExplicitlySizedArray() && arraySizes->getOuterSize() == UnsizedArraySize)
- error(loc, "block already declared with size, can't redeclare as implicitly-sized", blockName.c_str(), "");
- else if (type.isExplicitlySizedArray() && type.getArraySizes() != *arraySizes)
- error(loc, "cannot change array size of redeclared block", blockName.c_str(), "");
- else if (type.isImplicitlySizedArray() && arraySizes->getOuterSize() != UnsizedArraySize)
- type.changeOuterArraySize(arraySizes->getOuterSize());
- }
-
- symbolTable.insert(*block);
-
- // Save it in the AST for linker use.
- trackLinkage(*block);
-}
-
-//
// Generate index to the array element in a structure buffer (SSBO)
//
TIntermTyped* HlslParseContext::indexStructBufferContent(const TSourceLoc& loc, TIntermTyped* buffer) const
@@ -5107,6 +6563,7 @@ void HlslParseContext::paramFix(TType& type)
type.getQualifier().storage = EvqConstReadOnly;
break;
case EvqGlobal:
+ case EvqUniform:
case EvqTemporary:
type.getQualifier().storage = EvqIn;
break;
@@ -5119,6 +6576,7 @@ void HlslParseContext::paramFix(TType& type)
bufferQualifier.storage = type.getQualifier().storage;
bufferQualifier.readonly = type.getQualifier().readonly;
bufferQualifier.coherent = type.getQualifier().coherent;
+ bufferQualifier.declaredBuiltIn = type.getQualifier().declaredBuiltIn;
type.getQualifier() = bufferQualifier;
break;
}
@@ -5295,7 +6753,8 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qua
// Put the id's layout qualifier value into the public type, for qualifiers having a number set.
// This is before we know any type information for error checking.
-void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qualifier, TString& id, const TIntermTyped* node)
+void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qualifier, TString& id,
+ const TIntermTyped* node)
{
const char* feature = "layout-id value";
// const char* nonLiteralFeature = "non-literal layout-id value";
@@ -5353,7 +6812,8 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qua
// "It is a compile-time error to specify an *xfb_buffer* that is greater than
// the implementation-dependent constant gl_MaxTransformFeedbackBuffers."
if (value >= resources.maxTransformFeedbackBuffers)
- error(loc, "buffer is too large:", id.c_str(), "gl_MaxTransformFeedbackBuffers is %d", resources.maxTransformFeedbackBuffers);
+ error(loc, "buffer is too large:", id.c_str(), "gl_MaxTransformFeedbackBuffers is %d",
+ resources.maxTransformFeedbackBuffers);
if (value >= (int)TQualifier::layoutXfbBufferEnd)
error(loc, "buffer is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbBufferEnd - 1);
else
@@ -5369,7 +6829,8 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qua
// "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the
// implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents."
if (value > 4 * resources.maxTransformFeedbackInterleavedComponents)
- error(loc, "1/4 stride is too large:", id.c_str(), "gl_MaxTransformFeedbackInterleavedComponents is %d", resources.maxTransformFeedbackInterleavedComponents);
+ error(loc, "1/4 stride is too large:", id.c_str(), "gl_MaxTransformFeedbackInterleavedComponents is %d",
+ resources.maxTransformFeedbackInterleavedComponents);
else if (value >= (int)TQualifier::layoutXfbStrideEnd)
error(loc, "stride is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbStrideEnd - 1);
if (value < (int)TQualifier::layoutXfbStrideEnd)
@@ -5563,18 +7024,17 @@ void HlslParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQuali
//
// Return the function symbol if found, otherwise nullptr.
//
-const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction& call, bool& builtIn,
+const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction& call, bool& builtIn, int& thisDepth,
TIntermTyped*& args)
{
- // const TFunction* function = nullptr;
-
if (symbolTable.isFunctionNameVariable(call.getName())) {
error(loc, "can't use function syntax on variable", call.getName().c_str(), "");
return nullptr;
}
// first, look for an exact match
- TSymbol* symbol = symbolTable.find(call.getMangledName(), &builtIn);
+ bool dummyScope;
+ TSymbol* symbol = symbolTable.find(call.getMangledName(), &builtIn, &dummyScope, &thisDepth);
if (symbol)
return symbol->getAsFunction();
@@ -5584,11 +7044,14 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction
TVector<const TFunction*> candidateList;
symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn);
- // These builtin ops can accept any type, so we bypass the argument selection
+ // These built-in ops can accept any type, so we bypass the argument selection
if (candidateList.size() == 1 && builtIn &&
(candidateList[0]->getBuiltInOp() == EOpMethodAppend ||
- candidateList[0]->getBuiltInOp() == EOpMethodRestartStrip)) {
-
+ candidateList[0]->getBuiltInOp() == EOpMethodRestartStrip ||
+ candidateList[0]->getBuiltInOp() == EOpMethodIncrementCounter ||
+ candidateList[0]->getBuiltInOp() == EOpMethodDecrementCounter ||
+ candidateList[0]->getBuiltInOp() == EOpMethodAppend ||
+ candidateList[0]->getBuiltInOp() == EOpMethodConsume)) {
return candidateList[0];
}
@@ -5668,6 +7131,7 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction
// shapes have to be convertible
if ((from.isScalarOrVec1() && to.isScalarOrVec1()) ||
(from.isScalarOrVec1() && to.isVector()) ||
+ (from.isScalarOrVec1() && to.isMatrix()) ||
(from.isVector() && to.isVector() && from.getVectorSize() >= to.getVectorSize()))
return true;
@@ -5758,7 +7222,7 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction
return nullptr;
}
- // For builtins, we can convert across the arguments. This will happen in several steps:
+ // For built-ins, we can convert across the arguments. This will happen in several steps:
// Step 1: If there's an exact match, use it.
// Step 2a: Otherwise, get the operator from the best match and promote arguments:
// Step 2b: reconstruct the TFunction based on the new arg types
@@ -5846,7 +7310,7 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction
// 'parseType' is the type part of the declaration (to the left)
// 'arraySizes' is the arrayness tagged on the identifier (to the right)
//
-void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier, const TType& parseType)
+void HlslParseContext::declareTypedef(const TSourceLoc& loc, const TString& identifier, const TType& parseType)
{
TVariable* typeSymbol = new TVariable(&identifier, parseType, true);
if (! symbolTable.insert(*typeSymbol))
@@ -5933,6 +7397,11 @@ void HlslParseContext::declareStruct(const TSourceLoc& loc, TString& structName,
}
if (newLists.uniform) {
newMember(newUniformMember);
+
+ // inherit default matrix layout (changeable via #pragma pack_matrix), if none given.
+ if (member->type->isMatrix() && member->type->getQualifier().layoutMatrix == ElmNone)
+ newUniformMember.type->getQualifier().layoutMatrix = globalUniformDefaults.layoutMatrix;
+
correctUniform(newUniformMember.type->getQualifier());
newLists.uniform->push_back(newUniformMember);
}
@@ -5977,11 +7446,27 @@ TSymbol* HlslParseContext::lookupUserType(const TString& typeName, TType& type)
// 'parseType' is the type part of the declaration (to the left)
// 'arraySizes' is the arrayness tagged on the identifier (to the right)
//
-TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& identifier, TType& type, TIntermTyped* initializer)
+TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, const TString& identifier, TType& type,
+ TIntermTyped* initializer)
{
if (voidErrorCheck(loc, identifier, type.getBasicType()))
return nullptr;
+ // Global consts with initializers that are non-const act like EvqGlobal in HLSL.
+ // This test is implicitly recursive, because initializers propagate constness
+ // up the aggregate node tree during creation. E.g, for:
+ // { { 1, 2 }, { 3, 4 } }
+ // the initializer list is marked EvqConst at the top node, and remains so here. However:
+ // { 1, { myvar, 2 }, 3 }
+ // is not a const intializer, and still becomes EvqGlobal here.
+
+ const bool nonConstInitializer = (initializer != nullptr && initializer->getQualifier().storage != EvqConst);
+
+ if (type.getQualifier().storage == EvqConst && symbolTable.atGlobalLevel() && nonConstInitializer) {
+ // Force to global
+ type.getQualifier().storage = EvqGlobal;
+ }
+
// make const and initialization consistent
fixConstInit(loc, identifier, type, initializer);
@@ -5990,7 +7475,7 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i
inheritGlobalDefaults(type.getQualifier());
- const bool flattenVar = shouldFlattenUniform(type);
+ const bool flattenVar = shouldFlatten(type, type.getQualifier().storage, true);
// correct IO in the type
switch (type.getQualifier().storage) {
@@ -6018,33 +7503,28 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i
declareArray(loc, identifier, type, symbol, !flattenVar);
} else {
// non-array case
- if (! symbol)
+ if (symbol == nullptr)
symbol = declareNonArray(loc, identifier, type, !flattenVar);
else if (type != symbol->getType())
error(loc, "cannot change the type of", "redeclaration", symbol->getName().c_str());
}
+ if (symbol == nullptr)
+ return nullptr;
+
if (flattenVar)
- flatten(loc, *symbol->getAsVariable());
+ flatten(*symbol->getAsVariable(), symbolTable.atGlobalLevel());
- if (! symbol)
+ if (initializer == nullptr)
return nullptr;
// Deal with initializer
- TIntermNode* initNode = nullptr;
- if (symbol && initializer) {
- if (flattenVar)
- error(loc, "flattened array with initializer list unsupported", identifier.c_str(), "");
-
- TVariable* variable = symbol->getAsVariable();
- if (! variable) {
- error(loc, "initializer requires a variable, not a member", identifier.c_str(), "");
- return nullptr;
- }
- initNode = executeInitializer(loc, initializer, variable);
+ TVariable* variable = symbol->getAsVariable();
+ if (variable == nullptr) {
+ error(loc, "initializer requires a variable, not a member", identifier.c_str(), "");
+ return nullptr;
}
-
- return initNode;
+ return executeInitializer(loc, initializer, variable);
}
// Pick up global defaults from the provide global defaults into dst.
@@ -6073,13 +7553,24 @@ TVariable* HlslParseContext::makeInternalVariable(const char* name, const TType&
return variable;
}
+// Make a symbol node holding a new internal temporary variable.
+TIntermSymbol* HlslParseContext::makeInternalVariableNode(const TSourceLoc& loc, const char* name,
+ const TType& type) const
+{
+ TVariable* tmpVar = makeInternalVariable(name, type);
+ tmpVar->getWritableType().getQualifier().makeTemporary();
+
+ return intermediate.addSymbol(*tmpVar, loc);
+}
+
//
// Declare a non-array variable, the main point being there is no redeclaration
// for resizing allowed.
//
// Return the successfully declared variable.
//
-TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, TString& identifier, TType& type, bool track)
+TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, const TString& identifier, const TType& type,
+ bool track)
{
// make a new variable
TVariable* variable = new TVariable(&identifier, type);
@@ -6123,8 +7614,8 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm
skeletalType.shallowCopy(variable->getType());
skeletalType.getQualifier().makeTemporary();
if (initializer->getAsAggregate() && initializer->getAsAggregate()->getOp() == EOpNull)
- initializer = convertInitializerList(loc, skeletalType, initializer);
- if (! initializer) {
+ initializer = convertInitializerList(loc, skeletalType, initializer, nullptr);
+ if (initializer == nullptr) {
// error recovery; don't leave const without constant values
if (qualifier == EvqConst)
variable->getWritableType().getQualifier().storage = EvqTemporary;
@@ -6153,13 +7644,8 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm
variable->getWritableType().getQualifier().storage = EvqTemporary;
return nullptr;
}
- if (qualifier == EvqConst && symbolTable.atGlobalLevel() && initializer->getType().getQualifier().storage != EvqConst) {
- error(loc, "global const initializers must be constant", "=", "'%s'", variable->getType().getCompleteString().c_str());
- variable->getWritableType().getQualifier().storage = EvqTemporary;
- return nullptr;
- }
- // Const variables require a constant initializer, depending on version
+ // Const variables require a constant initializer
if (qualifier == EvqConst) {
if (initializer->getType().getQualifier().storage != EvqConst) {
variable->getWritableType().getQualifier().storage = EvqConstReadOnly;
@@ -6171,7 +7657,10 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm
// Compile-time tagging of the variable with its constant value...
initializer = intermediate.addConversion(EOpAssign, variable->getType(), initializer);
- if (! initializer || ! initializer->getAsConstantUnion() || variable->getType() != initializer->getType()) {
+ if (initializer != nullptr && variable->getType() != initializer->getType())
+ initializer = intermediate.addUniShapeConversion(EOpAssign, variable->getType(), initializer);
+ if (initializer == nullptr || !initializer->getAsConstantUnion() ||
+ variable->getType() != initializer->getType()) {
error(loc, "non-matching or non-convertible constant type for const initializer",
variable->getType().getStorageQualifierString(), "");
variable->getWritableType().getQualifier().storage = EvqTemporary;
@@ -6184,9 +7673,8 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm
specializationCheck(loc, initializer->getType(), "initializer");
TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc);
TIntermNode* initNode = handleAssign(loc, EOpAssign, intermSymbol, initializer);
- if (! initNode)
+ if (initNode == nullptr)
assignError(loc, "=", intermSymbol->getCompleteString(), initializer->getCompleteString());
-
return initNode;
}
@@ -6205,7 +7693,8 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm
//
// Returns nullptr if there is an error.
//
-TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, const TType& type, TIntermTyped* initializer)
+TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, const TType& type,
+ TIntermTyped* initializer, TIntermTyped* scalarInit)
{
// Will operate recursively. Once a subtree is found that is constructor style,
// everything below it is already good: Only the "top part" of the initializer
@@ -6213,7 +7702,7 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co
// see if we have bottomed out in the tree within the initializer-list part
TIntermAggregate* initList = initializer->getAsAggregate();
- if (! initList || initList->getOp() != EOpNull) {
+ if (initList == nullptr || initList->getOp() != EOpNull) {
// We don't have a list, but if it's a scalar and the 'type' is a
// composite, we need to lengthen below to make it useful.
// Otherwise, this is an already formed object to initialize with.
@@ -6251,27 +7740,37 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co
}
// lengthen list to be long enough
- lengthenList(loc, initList->getSequence(), arrayType.getOuterArraySize());
+ lengthenList(loc, initList->getSequence(), arrayType.getOuterArraySize(), scalarInit);
// recursively process each element
TType elementType(arrayType, 0); // dereferenced type
for (int i = 0; i < arrayType.getOuterArraySize(); ++i) {
- initList->getSequence()[i] = convertInitializerList(loc, elementType, initList->getSequence()[i]->getAsTyped());
+ initList->getSequence()[i] = convertInitializerList(loc, elementType,
+ initList->getSequence()[i]->getAsTyped(), scalarInit);
if (initList->getSequence()[i] == nullptr)
return nullptr;
}
return addConstructor(loc, initList, arrayType);
} else if (type.isStruct()) {
+ // do we have implicit assignments to opaques?
+ for (size_t i = initList->getSequence().size(); i < type.getStruct()->size(); ++i) {
+ if ((*type.getStruct())[i].type->containsOpaque()) {
+ error(loc, "cannot implicitly initialize opaque members", "initializer list", "");
+ return nullptr;
+ }
+ }
+
// lengthen list to be long enough
- lengthenList(loc, initList->getSequence(), static_cast<int>(type.getStruct()->size()));
+ lengthenList(loc, initList->getSequence(), static_cast<int>(type.getStruct()->size()), scalarInit);
if (type.getStruct()->size() != initList->getSequence().size()) {
error(loc, "wrong number of structure members", "initializer list", "");
return nullptr;
}
for (size_t i = 0; i < type.getStruct()->size(); ++i) {
- initList->getSequence()[i] = convertInitializerList(loc, *(*type.getStruct())[i].type, initList->getSequence()[i]->getAsTyped());
+ initList->getSequence()[i] = convertInitializerList(loc, *(*type.getStruct())[i].type,
+ initList->getSequence()[i]->getAsTyped(), scalarInit);
if (initList->getSequence()[i] == nullptr)
return nullptr;
}
@@ -6282,7 +7781,7 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co
// a constructor; no further processing needed.
} else {
// lengthen list to be long enough
- lengthenList(loc, initList->getSequence(), type.getMatrixCols());
+ lengthenList(loc, initList->getSequence(), type.getMatrixCols(), scalarInit);
if (type.getMatrixCols() != (int)initList->getSequence().size()) {
error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str());
@@ -6290,23 +7789,25 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co
}
TType vectorType(type, 0); // dereferenced type
for (int i = 0; i < type.getMatrixCols(); ++i) {
- initList->getSequence()[i] = convertInitializerList(loc, vectorType, initList->getSequence()[i]->getAsTyped());
+ initList->getSequence()[i] = convertInitializerList(loc, vectorType,
+ initList->getSequence()[i]->getAsTyped(), scalarInit);
if (initList->getSequence()[i] == nullptr)
return nullptr;
}
}
} else if (type.isVector()) {
// lengthen list to be long enough
- lengthenList(loc, initList->getSequence(), type.getVectorSize());
+ lengthenList(loc, initList->getSequence(), type.getVectorSize(), scalarInit);
// error check; we're at bottom, so work is finished below
if (type.getVectorSize() != (int)initList->getSequence().size()) {
- error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString().c_str());
+ error(loc, "wrong vector size (or rows in a matrix column):", "initializer list",
+ type.getCompleteString().c_str());
return nullptr;
}
} else if (type.isScalar()) {
// lengthen list to be long enough
- lengthenList(loc, initList->getSequence(), 1);
+ lengthenList(loc, initList->getSequence(), 1, scalarInit);
if ((int)initList->getSequence().size() != 1) {
error(loc, "scalar expected one element:", "initializer list", type.getCompleteString().c_str());
@@ -6319,9 +7820,9 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co
// Now that the subtree is processed, process this node as if the
// initializer list is a set of arguments to a constructor.
- TIntermNode* emulatedConstructorArguments;
+ TIntermTyped* emulatedConstructorArguments;
if (initList->getSequence().size() == 1)
- emulatedConstructorArguments = initList->getSequence()[0];
+ emulatedConstructorArguments = initList->getSequence()[0]->getAsTyped();
else
emulatedConstructorArguments = initList;
@@ -6331,10 +7832,21 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co
// Lengthen list to be long enough to cover any gap from the current list size
// to 'size'. If the list is longer, do nothing.
// The value to lengthen with is the default for short lists.
-void HlslParseContext::lengthenList(const TSourceLoc& loc, TIntermSequence& list, int size)
+//
+// By default, lists that are too short due to lack of initializers initialize to zero.
+// Alternatively, it could be a scalar initializer for a structure. Both cases are handled,
+// based on whether something is passed in as 'scalarInit'.
+//
+// 'scalarInit' must be safe to use each time this is called (no side effects replication).
+//
+void HlslParseContext::lengthenList(const TSourceLoc& loc, TIntermSequence& list, int size, TIntermTyped* scalarInit)
{
- for (int c = (int)list.size(); c < size; ++c)
- list.push_back(intermediate.addConstantUnion(0, loc));
+ for (int c = (int)list.size(); c < size; ++c) {
+ if (scalarInit == nullptr)
+ list.push_back(intermediate.addConstantUnion(0, loc));
+ else
+ list.push_back(scalarInit);
+ }
}
//
@@ -6343,15 +7855,42 @@ void HlslParseContext::lengthenList(const TSourceLoc& loc, TIntermSequence& list
//
// Returns nullptr for an error or the constructed node (aggregate or typed) for no error.
//
-TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* node, const TType& type)
+TIntermTyped* HlslParseContext::handleConstructor(const TSourceLoc& loc, TIntermTyped* node, const TType& type)
{
- if (node == nullptr || node->getAsTyped() == nullptr)
+ if (node == nullptr)
return nullptr;
- // Handle the idiom "(struct type)0"
- if (type.isStruct() && isZeroConstructor(node))
- return convertInitializerList(loc, type, intermediate.makeAggregate(loc));
+ // Handle the idiom "(struct type)<scalar value>"
+ if (type.isStruct() && isScalarConstructor(node)) {
+ // 'node' will almost always get used multiple times, so should not be used directly,
+ // it would create a DAG instead of a tree, which might be okay (would
+ // like to formalize that for constants and symbols), but if it has
+ // side effects, they would get executed multiple times, which is not okay.
+ if (node->getAsConstantUnion() == nullptr && node->getAsSymbolNode() == nullptr) {
+ TIntermAggregate* seq = intermediate.makeAggregate(loc);
+ TIntermSymbol* copy = makeInternalVariableNode(loc, "scalarCopy", node->getType());
+ seq = intermediate.growAggregate(seq, intermediate.addBinaryNode(EOpAssign, copy, node, loc));
+ seq = intermediate.growAggregate(seq, convertInitializerList(loc, type, intermediate.makeAggregate(loc), copy));
+ seq->setOp(EOpComma);
+ seq->setType(type);
+ return seq;
+ } else
+ return convertInitializerList(loc, type, intermediate.makeAggregate(loc), node);
+ }
+
+ return addConstructor(loc, node, type);
+}
+// Add a constructor, either from the grammar, or other programmatic reasons.
+//
+// 'node' is what to construct from.
+// 'type' is what type to construct.
+//
+// Returns the constructed object.
+// Return nullptr if it can't be done.
+//
+TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermTyped* node, const TType& type)
+{
TIntermAggregate* aggrNode = node->getAsAggregate();
TOperator op = intermediate.mapTypeToConstructorOp(type);
@@ -6372,8 +7911,8 @@ TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermNod
elementType.shallowCopy(type);
bool singleArg;
- if (aggrNode) {
- if (aggrNode->getOp() != EOpNull || aggrNode->getSequence().size() == 1)
+ if (aggrNode != nullptr) {
+ if (aggrNode->getOp() != EOpNull)
singleArg = true;
else
singleArg = false;
@@ -6382,14 +7921,27 @@ TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermNod
TIntermTyped *newNode;
if (singleArg) {
+ // Handle array -> array conversion
+ // Constructing an array of one type from an array of another type is allowed,
+ // assuming there are enough components available (semantic-checked earlier).
+ if (type.isArray() && node->isArray())
+ newNode = convertArray(node, type);
+
// If structure constructor or array constructor is being called
- // for only one parameter inside the structure, we need to call constructAggregate function once.
- if (type.isArray())
+ // for only one parameter inside the aggregate, we need to call constructAggregate function once.
+ else if (type.isArray())
newNode = constructAggregate(node, elementType, 1, node->getLoc());
else if (op == EOpConstructStruct)
newNode = constructAggregate(node, *(*memberTypes).type, 1, node->getLoc());
- else
- newNode = constructBuiltIn(type, op, node->getAsTyped(), node->getLoc(), false);
+ else {
+ // shape conversion for matrix constructor from scalar. HLSL semantics are: scalar
+ // is replicated into every element of the matrix (not just the diagnonal), so
+ // that is handled specially here.
+ if (type.isMatrix() && node->getType().isScalarOrVec1())
+ node = intermediate.addShapeConversion(type, node);
+
+ newNode = constructBuiltIn(type, op, node, node->getLoc(), false);
+ }
if (newNode && (type.isArray() || op == EOpConstructStruct))
newNode = intermediate.setAggregateOperator(newNode, EOpConstructStruct, type, loc);
@@ -6400,7 +7952,7 @@ TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermNod
//
// Handle list of arguments.
//
- TIntermSequence &sequenceVector = aggrNode->getSequence(); // Stores the information about the parameter to the constructor
+ TIntermSequence& sequenceVector = aggrNode->getSequence(); // Stores the information about the parameter to the constructor
// if the structure constructor contains more than one parameter, then construct
// each parameter
@@ -6437,7 +7989,8 @@ TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermNod
//
// Returns nullptr for an error or the constructed node.
//
-TIntermTyped* HlslParseContext::constructBuiltIn(const TType& type, TOperator op, TIntermTyped* node, const TSourceLoc& loc, bool subset)
+TIntermTyped* HlslParseContext::constructBuiltIn(const TType& type, TOperator op, TIntermTyped* node,
+ const TSourceLoc& loc, bool subset)
{
TIntermTyped* newNode;
TOperator basicOp;
@@ -6481,6 +8034,15 @@ TIntermTyped* HlslParseContext::constructBuiltIn(const TType& type, TOperator op
case EOpConstructIVec2:
case EOpConstructIVec3:
case EOpConstructIVec4:
+ case EOpConstructIMat2x2:
+ case EOpConstructIMat2x3:
+ case EOpConstructIMat2x4:
+ case EOpConstructIMat3x2:
+ case EOpConstructIMat3x3:
+ case EOpConstructIMat3x4:
+ case EOpConstructIMat4x2:
+ case EOpConstructIMat4x3:
+ case EOpConstructIMat4x4:
case EOpConstructInt:
basicOp = EOpConstructInt;
break;
@@ -6488,6 +8050,15 @@ TIntermTyped* HlslParseContext::constructBuiltIn(const TType& type, TOperator op
case EOpConstructUVec2:
case EOpConstructUVec3:
case EOpConstructUVec4:
+ case EOpConstructUMat2x2:
+ case EOpConstructUMat2x3:
+ case EOpConstructUMat2x4:
+ case EOpConstructUMat3x2:
+ case EOpConstructUMat3x3:
+ case EOpConstructUMat3x4:
+ case EOpConstructUMat4x2:
+ case EOpConstructUMat4x3:
+ case EOpConstructUMat4x4:
case EOpConstructUint:
basicOp = EOpConstructUint;
break;
@@ -6495,6 +8066,15 @@ TIntermTyped* HlslParseContext::constructBuiltIn(const TType& type, TOperator op
case EOpConstructBVec2:
case EOpConstructBVec3:
case EOpConstructBVec4:
+ case EOpConstructBMat2x2:
+ case EOpConstructBMat2x3:
+ case EOpConstructBMat2x4:
+ case EOpConstructBMat3x2:
+ case EOpConstructBMat3x3:
+ case EOpConstructBMat3x4:
+ case EOpConstructBMat4x2:
+ case EOpConstructBMat4x3:
+ case EOpConstructBMat4x4:
case EOpConstructBool:
basicOp = EOpConstructBool;
break;
@@ -6522,15 +8102,88 @@ TIntermTyped* HlslParseContext::constructBuiltIn(const TType& type, TOperator op
return intermediate.setAggregateOperator(newNode, op, type, loc);
}
+// Convert the array in node to the requested type, which is also an array.
+// Returns nullptr on failure, otherwise returns aggregate holding the list of
+// elements needed to construct the array.
+TIntermTyped* HlslParseContext::convertArray(TIntermTyped* node, const TType& type)
+{
+ assert(node->isArray() && type.isArray());
+ if (node->getType().computeNumComponents() < type.computeNumComponents())
+ return nullptr;
+
+ // TODO: write an argument replicator, for the case the argument should not be
+ // executed multiple times, yet multiple copies are needed.
+
+ TIntermTyped* constructee = node->getAsTyped();
+ // track where we are in consuming the argument
+ int constructeeElement = 0;
+ int constructeeComponent = 0;
+
+ // bump up to the next component to consume
+ const auto getNextComponent = [&]() {
+ TIntermTyped* component;
+ component = handleBracketDereference(node->getLoc(), constructee,
+ intermediate.addConstantUnion(constructeeElement, node->getLoc()));
+ if (component->isVector())
+ component = handleBracketDereference(node->getLoc(), component,
+ intermediate.addConstantUnion(constructeeComponent, node->getLoc()));
+ // bump component pointer up
+ ++constructeeComponent;
+ if (constructeeComponent == constructee->getVectorSize()) {
+ constructeeComponent = 0;
+ ++constructeeElement;
+ }
+ return component;
+ };
+
+ // make one subnode per constructed array element
+ TIntermAggregate* constructor = nullptr;
+ TType derefType(type, 0);
+ TType speculativeComponentType(derefType, 0);
+ TType* componentType = derefType.isVector() ? &speculativeComponentType : &derefType;
+ TOperator componentOp = intermediate.mapTypeToConstructorOp(*componentType);
+ TType crossType(node->getBasicType(), EvqTemporary, type.getVectorSize());
+ for (int e = 0; e < type.getOuterArraySize(); ++e) {
+ // construct an element
+ TIntermTyped* elementArg;
+ if (type.getVectorSize() == constructee->getVectorSize()) {
+ // same element shape
+ elementArg = handleBracketDereference(node->getLoc(), constructee,
+ intermediate.addConstantUnion(e, node->getLoc()));
+ } else {
+ // mismatched element shapes
+ if (type.getVectorSize() == 1)
+ elementArg = getNextComponent();
+ else {
+ // make a vector
+ TIntermAggregate* elementConstructee = nullptr;
+ for (int c = 0; c < type.getVectorSize(); ++c)
+ elementConstructee = intermediate.growAggregate(elementConstructee, getNextComponent());
+ elementArg = addConstructor(node->getLoc(), elementConstructee, crossType);
+ }
+ }
+ // convert basic types
+ elementArg = intermediate.addConversion(componentOp, derefType, elementArg);
+ if (elementArg == nullptr)
+ return nullptr;
+ // combine with top-level constructor
+ constructor = intermediate.growAggregate(constructor, elementArg);
+ }
+
+ return constructor;
+}
+
// This function tests for the type of the parameters to the structure or array constructor. Raises
// an error message if the expected type does not match the parameter passed to the constructor.
//
// Returns nullptr for an error or the input node itself if the expected and the given parameter types match.
//
-TIntermTyped* HlslParseContext::constructAggregate(TIntermNode* node, const TType& type, int paramCount, const TSourceLoc& loc)
+TIntermTyped* HlslParseContext::constructAggregate(TIntermNode* node, const TType& type, int paramCount,
+ const TSourceLoc& loc)
{
+ // Handle cases that map more 1:1 between constructor arguments and constructed.
TIntermTyped* converted = intermediate.addConversion(EOpConstructStruct, type, node->getAsTyped());
- if (! converted || converted->getType() != type) {
+ if (converted == nullptr || converted->getType() != type) {
error(loc, "", "constructor", "cannot convert parameter %d from '%s' to '%s'", paramCount,
node->getAsTyped()->getType().getCompleteString().c_str(), type.getCompleteString().c_str());
@@ -6580,17 +8233,17 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS
case EvqBuffer:
correctUniform(type.getQualifier());
if (it != ioTypeMap.end() && it->second.uniform)
- type.setStruct(it->second.uniform);
+ memberType.setStruct(it->second.uniform);
break;
case EvqVaryingIn:
correctInput(type.getQualifier());
if (it != ioTypeMap.end() && it->second.input)
- type.setStruct(it->second.input);
+ memberType.setStruct(it->second.input);
break;
case EvqVaryingOut:
correctOutput(type.getQualifier());
if (it != ioTypeMap.end() && it->second.output)
- type.setStruct(it->second.output);
+ memberType.setStruct(it->second.output);
break;
default:
break;
@@ -6598,13 +8251,6 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS
}
}
- // This might be a redeclaration of a built-in block. If so, redeclareBuiltinBlock() will
- // do all the rest.
- // if (! symbolTable.atBuiltInLevel() && builtInName(*blockName)) {
- // redeclareBuiltinBlock(loc, typeList, *blockName, instanceName, arraySizes);
- // return;
- //}
-
// Make default block qualification, and adjust the member qualifications
TQualifier defaultQualification;
@@ -6683,21 +8329,23 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS
// Add the variable, as anonymous or named instanceName.
// Make an anonymous variable if no name was provided.
- if (! instanceName)
+ if (instanceName == nullptr)
instanceName = NewPoolTString("");
TVariable& variable = *new TVariable(instanceName, blockType);
if (! symbolTable.insert(variable)) {
if (*instanceName == "")
- error(loc, "nameless block contains a member that already has a name at global scope", "" /* blockName->c_str() */, "");
+ error(loc, "nameless block contains a member that already has a name at global scope",
+ "" /* blockName->c_str() */, "");
else
error(loc, "block instance name redefinition", variable.getName().c_str(), "");
return;
}
- // Save it in the AST for linker use.
- trackLinkage(variable);
+ // Save it in the AST for linker use.
+ if (symbolTable.atGlobalLevel())
+ trackLinkage(variable);
}
//
@@ -6737,7 +8385,8 @@ void HlslParseContext::fixBlockLocations(const TSourceLoc& loc, TQualifier& qual
memberQualifier.layoutLocation = nextLocation;
memberQualifier.layoutComponent = 0;
}
- nextLocation = memberQualifier.layoutLocation + intermediate.computeTypeLocationSize(*typeList[member].type);
+ nextLocation = memberQualifier.layoutLocation +
+ intermediate.computeTypeLocationSize(*typeList[member].type);
}
}
}
@@ -6800,8 +8449,9 @@ void HlslParseContext::fixBlockUniformOffsets(const TQualifier& qualifier, TType
int dummyStride;
int memberAlignment = intermediate.getBaseAlignment(*typeList[member].type, memberSize, dummyStride,
qualifier.layoutPacking == ElpStd140,
- subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor
- : qualifier.layoutMatrix == ElmRowMajor);
+ subMatrixLayout != ElmNone
+ ? subMatrixLayout == ElmRowMajor
+ : qualifier.layoutMatrix == ElmRowMajor);
if (memberQualifier.hasOffset()) {
// "The specified offset must be a multiple
// of the base alignment of the type of the block member it qualifies, or a compile-time error results."
@@ -6833,7 +8483,7 @@ void HlslParseContext::fixBlockUniformOffsets(const TQualifier& qualifier, TType
void HlslParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier qualifier, const TString& identifier)
{
TSymbol* symbol = symbolTable.find(identifier);
- if (! symbol) {
+ if (symbol == nullptr) {
error(loc, "identifier not previously declared", identifier.c_str(), "");
return;
}
@@ -6909,6 +8559,11 @@ bool HlslParseContext::handleInputGeometry(const TSourceLoc& loc, const TLayoutG
//
bool HlslParseContext::handleOutputGeometry(const TSourceLoc& loc, const TLayoutGeometry& geometry)
{
+ // If this is not a geometry shader, ignore. It might be a mixed shader including several stages.
+ // Since that's an OK situation, return true for success.
+ if (language != EShLangGeometry)
+ return true;
+
switch (geometry) {
case ElgPoints:
case ElgLineStrip:
@@ -6927,6 +8582,32 @@ bool HlslParseContext::handleOutputGeometry(const TSourceLoc& loc, const TLayout
}
//
+// Selection hints
+//
+TSelectionControl HlslParseContext::handleSelectionControl(const TAttributeMap& attributes) const
+{
+ if (attributes.contains(EatFlatten))
+ return ESelectionControlFlatten;
+ else if (attributes.contains(EatBranch))
+ return ESelectionControlDontFlatten;
+ else
+ return ESelectionControlNone;
+}
+
+//
+// Loop hints
+//
+TLoopControl HlslParseContext::handleLoopControl(const TAttributeMap& attributes) const
+{
+ if (attributes.contains(EatUnroll))
+ return ELoopControlUnroll;
+ else if (attributes.contains(EatLoop))
+ return ELoopControlDontUnroll;
+ else
+ return ELoopControlNone;
+}
+
+//
// Updating default qualifier for the case of a declaration with just a qualifier,
// no type, block, or identifier.
//
@@ -6952,12 +8633,14 @@ void HlslParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc,
case ElgIsolines:
break;
default:
- error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), "");
+ error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry),
+ "");
}
} else if (publicType.qualifier.storage == EvqVaryingOut) {
handleOutputGeometry(loc, publicType.shaderQualifiers.geometry);
} else
- error(loc, "cannot apply to:", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), GetStorageQualifierString(publicType.qualifier.storage));
+ error(loc, "cannot apply to:", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry),
+ GetStorageQualifierString(publicType.qualifier.storage));
}
if (publicType.shaderQualifiers.spacing != EvsNone)
intermediate.setVertexSpacing(publicType.shaderQualifiers.spacing);
@@ -7015,7 +8698,8 @@ void HlslParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc,
globalOutputDefaults.layoutXfbBuffer = qualifier.layoutXfbBuffer;
if (globalOutputDefaults.hasXfbBuffer() && qualifier.hasXfbStride()) {
if (! intermediate.setXfbBufferStride(globalOutputDefaults.layoutXfbBuffer, qualifier.layoutXfbStride))
- error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer);
+ error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d",
+ qualifier.layoutXfbBuffer);
}
break;
default:
@@ -7064,7 +8748,8 @@ void HlslParseContext::wrapupSwitchSubsequence(TIntermAggregate* statements, TIn
// Turn the top-level node sequence built up of wrapupSwitchSubsequence
// into a switch node.
//
-TIntermNode* HlslParseContext::addSwitch(const TSourceLoc& loc, TIntermTyped* expression, TIntermAggregate* lastStatements)
+TIntermNode* HlslParseContext::addSwitch(const TSourceLoc& loc, TIntermTyped* expression,
+ TIntermAggregate* lastStatements, TSelectionControl control)
{
wrapupSwitchSubsequence(lastStatements, nullptr);
@@ -7091,17 +8776,30 @@ TIntermNode* HlslParseContext::addSwitch(const TSourceLoc& loc, TIntermTyped* ex
TIntermSwitch* switchNode = new TIntermSwitch(expression, body);
switchNode->setLoc(loc);
+ switchNode->setSelectionControl(control);
return switchNode;
}
// Make a new symbol-table level that is made out of the members of a structure.
// This should be done as an anonymous struct (name is "") so that the symbol table
-// finds the members with on explicit reference to a 'this' variable.
-void HlslParseContext::pushThisScope(const TType& thisStruct)
+// finds the members with no explicit reference to a 'this' variable.
+void HlslParseContext::pushThisScope(const TType& thisStruct, const TVector<TFunctionDeclarator>& functionDeclarators)
{
+ // member variables
TVariable& thisVariable = *new TVariable(NewPoolTString(""), thisStruct);
symbolTable.pushThis(thisVariable);
+
+ // member functions
+ for (auto it = functionDeclarators.begin(); it != functionDeclarators.end(); ++it) {
+ // member should have a prefix matching currentTypePrefix.back()
+ // but, symbol lookup within the class scope will just use the
+ // unprefixed name. Hence, there are two: one fully prefixed and
+ // one with no prefix.
+ TFunction& member = *it->function->clone();
+ member.removePrefix(currentTypePrefix.back());
+ symbolTable.insert(member);
+ }
}
// Track levels of class/struct/namespace nesting with a prefix string using
@@ -7116,11 +8814,10 @@ void HlslParseContext::pushNamespace(const TString& typeName)
{
// make new type prefix
TString newPrefix;
- if (currentTypePrefix.size() > 0) {
+ if (currentTypePrefix.size() > 0)
newPrefix = currentTypePrefix.back();
- newPrefix.append(scopeMangler);
- }
newPrefix.append(typeName);
+ newPrefix.append(scopeMangler);
currentTypePrefix.push_back(newPrefix);
}
@@ -7132,15 +8829,14 @@ void HlslParseContext::popNamespace()
// Use the class/struct nesting string to create a global name for
// a member of a class/struct.
-TString* HlslParseContext::getFullNamespaceName(const TString& localName) const
+void HlslParseContext::getFullNamespaceName(TString*& name) const
{
- TString* name = NewPoolTString("");
- if (currentTypePrefix.size() > 0)
- name->append(currentTypePrefix.back());
- name->append(scopeMangler);
- name->append(localName);
+ if (currentTypePrefix.size() == 0)
+ return;
- return name;
+ TString* fullName = NewPoolTString(currentTypePrefix.back().c_str());
+ fullName->append(*name);
+ name = fullName;
}
// Helper function to add the namespace scope mangling syntax to a string.
@@ -7149,15 +8845,6 @@ void HlslParseContext::addScopeMangler(TString& name)
name.append(scopeMangler);
}
-// Potentially rename shader entry point function
-void HlslParseContext::renameShaderFunction(TString*& name) const
-{
- // Replace the entry point name given in the shader with the real entry point name,
- // if there is a substitution.
- if (name != nullptr && *name == sourceEntryPointName)
- name = NewPoolTString(intermediate.getEntryPointName().c_str());
-}
-
// Return true if this has uniform-interface like decorations.
bool HlslParseContext::hasUniform(const TQualifier& qualifier) const
{
@@ -7215,6 +8902,8 @@ bool HlslParseContext::isInputBuiltIn(const TQualifier& qualifier) const
case EbvTessLevelInner:
case EbvTessLevelOuter:
return language == EShLangTessEvaluation;
+ case EbvTessCoord:
+ return language == EShLangTessEvaluation;
default:
return false;
}
@@ -7340,6 +9029,9 @@ void HlslParseContext::correctOutput(TQualifier& qualifier)
// Make the IO decorations etc. be appropriate only for uniform type interfaces.
void HlslParseContext::correctUniform(TQualifier& qualifier)
{
+ if (qualifier.declaredBuiltIn == EbvNone)
+ qualifier.declaredBuiltIn = qualifier.builtIn;
+
qualifier.builtIn = EbvNone;
qualifier.clearInterstage();
qualifier.clearInterstageLayout();
@@ -7352,19 +9044,129 @@ void HlslParseContext::clearUniformInputOutput(TQualifier& qualifier)
correctUniform(qualifier);
}
-// Add patch constant function invocation
-void HlslParseContext::addPatchConstantInvocation()
+
+// Set texture return type. Returns success (not all types are valid).
+bool HlslParseContext::setTextureReturnType(TSampler& sampler, const TType& retType, const TSourceLoc& loc)
{
- TSourceLoc loc;
- loc.init();
+ // Seed the output with an invalid index. We will set it to a valid one if we can.
+ sampler.structReturnIndex = TSampler::noReturnStruct;
- // If there's no patch constant function, or we're not a HS, do nothing.
- if (patchConstantFunctionName.empty() || language != EShLangTessControl)
- return;
+ // Arrays aren't supported.
+ if (retType.isArray()) {
+ error(loc, "Arrays not supported in texture template types", "", "");
+ return false;
+ }
+
+ // If return type is a vector, remember the vector size in the sampler, and return.
+ if (retType.isVector() || retType.isScalar()) {
+ sampler.vectorSize = retType.getVectorSize();
+ return true;
+ }
+
+ // If it wasn't a vector, it must be a struct meeting certain requirements. The requirements
+ // are checked below: just check for struct-ness here.
+ if (!retType.isStruct()) {
+ error(loc, "Invalid texture template type", "", "");
+ return false;
+ }
+
+ // TODO: Subpass doesn't handle struct returns, due to some oddities with fn overloading.
+ if (sampler.isSubpass()) {
+ error(loc, "Unimplemented: structure template type in subpass input", "", "");
+ return false;
+ }
+
+ TTypeList* members = retType.getWritableStruct();
+
+ // Check for too many or not enough structure members.
+ if (members->size() > 4 || members->size() == 0) {
+ error(loc, "Invalid member count in texture template structure", "", "");
+ return false;
+ }
+ // Error checking: We must have <= 4 total components, all of the same basic type.
+ unsigned totalComponents = 0;
+ for (unsigned m = 0; m < members->size(); ++m) {
+ // Check for bad member types
+ if (!(*members)[m].type->isScalar() && !(*members)[m].type->isVector()) {
+ error(loc, "Invalid texture template struct member type", "", "");
+ return false;
+ }
+
+ const unsigned memberVectorSize = (*members)[m].type->getVectorSize();
+ totalComponents += memberVectorSize;
+
+ // too many total member components
+ if (totalComponents > 4) {
+ error(loc, "Too many components in texture template structure type", "", "");
+ return false;
+ }
+
+ // All members must be of a common basic type
+ if ((*members)[m].type->getBasicType() != (*members)[0].type->getBasicType()) {
+ error(loc, "Texture template structure members must same basic type", "", "");
+ return false;
+ }
+ }
+
+ // If the structure in the return type already exists in the table, we'll use it. Otherwise, we'll make
+ // a new entry. This is a linear search, but it hardly ever happens, and the list cannot be very large.
+ for (unsigned int idx = 0; idx < textureReturnStruct.size(); ++idx) {
+ if (textureReturnStruct[idx] == members) {
+ sampler.structReturnIndex = idx;
+ return true;
+ }
+ }
+
+ // It wasn't found as an existing entry. See if we have room for a new one.
+ if (textureReturnStruct.size() >= TSampler::structReturnSlots) {
+ error(loc, "Texture template struct return slots exceeded", "", "");
+ return false;
+ }
+
+ // Insert it in the vector that tracks struct return types.
+ sampler.structReturnIndex = unsigned(textureReturnStruct.size());
+ textureReturnStruct.push_back(members);
+
+ // Success!
+ return true;
+}
+
+// Return the sampler return type in retType.
+void HlslParseContext::getTextureReturnType(const TSampler& sampler, TType& retType) const
+{
+ if (sampler.hasReturnStruct()) {
+ assert(textureReturnStruct.size() >= sampler.structReturnIndex);
+
+ // We land here if the texture return is a structure.
+ TTypeList* blockStruct = textureReturnStruct[sampler.structReturnIndex];
+
+ const TType resultType(blockStruct, "");
+ retType.shallowCopy(resultType);
+ } else {
+ // We land here if the texture return is a vector or scalar.
+ const TType resultType(sampler.type, EvqTemporary, sampler.getVectorSize());
+ retType.shallowCopy(resultType);
+ }
+}
+
+
+// Return a symbol for the tessellation linkage variable of the given TBuiltInVariable type
+TIntermSymbol* HlslParseContext::findTessLinkageSymbol(TBuiltInVariable biType) const
+{
+ const auto it = builtInTessLinkageSymbols.find(biType);
+ if (it == builtInTessLinkageSymbols.end()) // if it wasn't declared by the user, return nullptr
+ return nullptr;
+
+ return intermediate.addSymbol(*it->second->getAsVariable());
+}
+
+// Find the patch constant function (issues error, returns nullptr if not found)
+const TFunction* HlslParseContext::findPatchConstantFunction(const TSourceLoc& loc)
+{
if (symbolTable.isFunctionNameVariable(patchConstantFunctionName)) {
error(loc, "can't use variable in patch constant function", patchConstantFunctionName.c_str(), "");
- return;
+ return nullptr;
}
const TString mangledName = patchConstantFunctionName + "(";
@@ -7378,7 +9180,7 @@ void HlslParseContext::addPatchConstantInvocation()
// allow any disambiguation of overloads.
if (candidateList.empty()) {
error(loc, "patch constant function not found", patchConstantFunctionName.c_str(), "");
- return;
+ return nullptr;
}
// Based on directed experiments, it appears that if there are overloaded patchconstantfunctions,
@@ -7386,23 +9188,38 @@ void HlslParseContext::addPatchConstantInvocation()
// out if there is more than one candidate.
if (candidateList.size() > 1) {
error(loc, "ambiguous patch constant function", patchConstantFunctionName.c_str(), "");
- return;
+ return nullptr;
}
- // Look for builtin variables in a function's parameter list.
+ return candidateList[0];
+}
+
+// Finalization step: Add patch constant function invocation
+void HlslParseContext::addPatchConstantInvocation()
+{
+ TSourceLoc loc;
+ loc.init();
+
+ // If there's no patch constant function, or we're not a HS, do nothing.
+ if (patchConstantFunctionName.empty() || language != EShLangTessControl)
+ return;
+
+ // Look for built-in variables in a function's parameter list.
const auto findBuiltIns = [&](const TFunction& function, std::set<tInterstageIoData>& builtIns) {
for (int p=0; p<function.getParamCount(); ++p) {
- const TStorageQualifier storage = function[p].type->getQualifier().storage;
+ TStorageQualifier storage = function[p].type->getQualifier().storage;
- if (function[p].declaredBuiltIn != EbvNone)
- builtIns.insert(HlslParseContext::tInterstageIoData(function[p].declaredBuiltIn, storage));
+ if (storage == EvqConstReadOnly) // treated identically to input
+ storage = EvqIn;
+
+ if (function[p].getDeclaredBuiltIn() != EbvNone)
+ builtIns.insert(HlslParseContext::tInterstageIoData(function[p].getDeclaredBuiltIn(), storage));
else
builtIns.insert(HlslParseContext::tInterstageIoData(function[p].type->getQualifier().builtIn, storage));
}
};
-
- // If we synthesize a builtin interface variable, we must add it to the linkage.
+ // If we synthesize a built-in interface variable, we must add it to the linkage.
const auto addToLinkage = [&](const TType& type, const TString* name, TIntermSymbol** symbolNode) {
if (name == nullptr) {
error(loc, "unable to locate patch function parameter name", "", "");
@@ -7423,44 +9240,52 @@ void HlslParseContext::addPatchConstantInvocation()
}
};
- // Return a symbol for the linkage variable of the given TBuiltInVariable type
- const auto findLinkageSymbol = [this](TBuiltInVariable biType) -> TIntermSymbol* {
- const auto it = builtInLinkageSymbols.find(biType);
- if (it == builtInLinkageSymbols.end()) // if it wasn't declared by the user, return nullptr
- return nullptr;
+ const auto isOutputPatch = [](TFunction& patchConstantFunction, int param) {
+ const TType& type = *patchConstantFunction[param].type;
+ const TBuiltInVariable biType = patchConstantFunction[param].getDeclaredBuiltIn();
- return intermediate.addSymbol(*it->second->getAsVariable());
+ return type.isArray() && !type.isRuntimeSizedArray() && biType == EbvOutputPatch;
};
// We will perform these steps. Each is in a scoped block for separation: they could
// become separate functions to make addPatchConstantInvocation shorter.
//
- // 1. Union the interfaces, and create builtins for anything present in the PCF and
- // declared as a builtin variable that isn't present in the entry point's signature.
+ // 1. Union the interfaces, and create built-ins for anything present in the PCF and
+ // declared as a built-in variable that isn't present in the entry point's signature.
//
- // 2. Synthesizes a call to the patchconstfunction using builtin variables from either main,
- // or the ones we created. Matching is based on builtin type. We may use synthesized
+ // 2. Synthesizes a call to the patchconstfunction using built-in variables from either main,
+ // or the ones we created. Matching is based on built-in type. We may use synthesized
// variables from (1) above.
+ //
+ // 2B: Synthesize per control point invocations of wrapped entry point if the PCF requires them.
//
// 3. Create a return sequence: copy the return value (if any) from the PCF to a
// (non-sanitized) output variable. In case this may involve multiple copies, such as for
// an arrayed variable, a temporary copy of the PCF output is created to avoid multiple
// indirections into a complex R-value coming from the call to the PCF.
- //
- // 4. Add a barrier to the end of the entry point body
- //
- // 5. Call the PCF inside an if test for (invocation id == 0).
+ //
+ // 4. Create a barrier.
+ //
+ // 5/5B. Call the PCF inside an if test for (invocation id == 0).
+
+ TFunction* patchConstantFunctionPtr = const_cast<TFunction*>(findPatchConstantFunction(loc));
+
+ if (patchConstantFunctionPtr == nullptr)
+ return;
+
+ TFunction& patchConstantFunction = *patchConstantFunctionPtr;
- TFunction& patchConstantFunction = const_cast<TFunction&>(*candidateList[0]);
const int pcfParamCount = patchConstantFunction.getParamCount();
- TIntermSymbol* invocationIdSym = findLinkageSymbol(EbvInvocationId);
+ TIntermSymbol* invocationIdSym = findTessLinkageSymbol(EbvInvocationId);
TIntermSequence& epBodySeq = entryPointFunctionBody->getAsAggregate()->getSequence();
+ int outPatchParam = -1; // -1 means there isn't one.
+
// ================ Step 1A: Union Interfaces ================
// Our patch constant function.
{
- std::set<tInterstageIoData> pcfBuiltIns; // patch constant function builtins
- std::set<tInterstageIoData> epfBuiltIns; // entry point function builtins
+ std::set<tInterstageIoData> pcfBuiltIns; // patch constant function built-ins
+ std::set<tInterstageIoData> epfBuiltIns; // entry point function built-ins
assert(entryPointFunction);
assert(entryPointFunctionBody);
@@ -7468,17 +9293,7 @@ void HlslParseContext::addPatchConstantInvocation()
findBuiltIns(patchConstantFunction, pcfBuiltIns);
findBuiltIns(*entryPointFunction, epfBuiltIns);
- // Patchconstantfunction can contain only builtin qualified variables. (Technically, only HS inputs,
- // but this test is less assertive than that).
-
- for (auto bi = pcfBuiltIns.begin(); bi != pcfBuiltIns.end(); ++bi) {
- if (bi->builtIn == EbvNone) {
- error(loc, "patch constant function invalid parameter", "", "");
- return;
- }
- }
-
- // Find the set of builtins in the PCF that are not present in the entry point.
+ // Find the set of built-ins in the PCF that are not present in the entry point.
std::set<tInterstageIoData> notInEntryPoint;
notInEntryPoint = pcfBuiltIns;
@@ -7489,15 +9304,39 @@ void HlslParseContext::addPatchConstantInvocation()
// Now we'll add those to the entry and to the linkage.
for (int p=0; p<pcfParamCount; ++p) {
- TType* paramType = patchConstantFunction[p].type->clone();
- const TBuiltInVariable biType = patchConstantFunction[p].declaredBuiltIn;
- const TStorageQualifier storage = patchConstantFunction[p].type->getQualifier().storage;
+ const TBuiltInVariable biType = patchConstantFunction[p].getDeclaredBuiltIn();
+ TStorageQualifier storage = patchConstantFunction[p].type->getQualifier().storage;
+
+ // Track whether there is an output patch param
+ if (isOutputPatch(patchConstantFunction, p)) {
+ if (outPatchParam >= 0) {
+ // Presently we only support one per ctrl pt input.
+ error(loc, "unimplemented: multiple output patches in patch constant function", "", "");
+ return;
+ }
+ outPatchParam = p;
+ }
+
+ if (biType != EbvNone) {
+ TType* paramType = patchConstantFunction[p].type->clone();
- // Use the original declaration type for the linkage
- paramType->getQualifier().builtIn = biType;
+ if (storage == EvqConstReadOnly) // treated identically to input
+ storage = EvqIn;
- if (notInEntryPoint.count(tInterstageIoData(biType, storage)) == 1)
- addToLinkage(*paramType, patchConstantFunction[p].name, nullptr);
+ // Presently, the only non-built-in we support is InputPatch, which is treated as
+ // a pseudo-built-in.
+ if (biType == EbvInputPatch) {
+ builtInTessLinkageSymbols[biType] = inputPatch;
+ } else if (biType == EbvOutputPatch) {
+ // Nothing...
+ } else {
+ // Use the original declaration type for the linkage
+ paramType->getQualifier().builtIn = biType;
+
+ if (notInEntryPoint.count(tInterstageIoData(biType, storage)) == 1)
+ addToLinkage(*paramType, patchConstantFunction[p].name, nullptr);
+ }
+ }
}
// If we didn't find it because the shader made one, add our own.
@@ -7512,36 +9351,48 @@ void HlslParseContext::addPatchConstantInvocation()
}
TIntermTyped* pcfArguments = nullptr;
+ TVariable* perCtrlPtVar = nullptr;
// ================ Step 1B: Argument synthesis ================
// Create pcfArguments for synthesis of patchconstantfunction invocation
- // TODO: handle struct or array inputs
{
for (int p=0; p<pcfParamCount; ++p) {
- if (patchConstantFunction[p].type->isArray() ||
- patchConstantFunction[p].type->isStruct()) {
- error(loc, "unimplemented array or variable in patch constant function signature", "", "");
- return;
- }
-
- // find which builtin it is
- const TBuiltInVariable biType = patchConstantFunction[p].declaredBuiltIn;
+ TIntermTyped* inputArg = nullptr;
- TIntermSymbol* builtIn = findLinkageSymbol(biType);
-
- if (builtIn == nullptr) {
- error(loc, "unable to find patch constant function builtin variable", "", "");
- return;
+ if (p == outPatchParam) {
+ if (perCtrlPtVar == nullptr) {
+ perCtrlPtVar = makeInternalVariable(*patchConstantFunction[outPatchParam].name,
+ *patchConstantFunction[outPatchParam].type);
+
+ perCtrlPtVar->getWritableType().getQualifier().makeTemporary();
+ }
+ inputArg = intermediate.addSymbol(*perCtrlPtVar, loc);
+ } else {
+ // find which built-in it is
+ const TBuiltInVariable biType = patchConstantFunction[p].getDeclaredBuiltIn();
+
+ if (biType == EbvInputPatch && inputPatch == nullptr) {
+ error(loc, "unimplemented: PCF input patch without entry point input patch parameter", "", "");
+ return;
+ }
+
+ inputArg = findTessLinkageSymbol(biType);
+
+ if (inputArg == nullptr) {
+ error(loc, "unable to find patch constant function built-in variable", "", "");
+ return;
+ }
}
if (pcfParamCount == 1)
- pcfArguments = builtIn;
+ pcfArguments = inputArg;
else
- pcfArguments = intermediate.growAggregate(pcfArguments, builtIn);
+ pcfArguments = intermediate.growAggregate(pcfArguments, inputArg);
}
}
// ================ Step 2: Synthesize call to PCF ================
+ TIntermAggregate* pcfCallSequence = nullptr;
TIntermTyped* pcfCall = nullptr;
{
@@ -7553,7 +9404,8 @@ void HlslParseContext::addPatchConstantInvocation()
pcfCall = intermediate.setAggregateOperator(pcfArguments, EOpFunctionCall, patchConstantFunction.getType(), loc);
pcfCall->getAsAggregate()->setUserDefined();
pcfCall->getAsAggregate()->setName(patchConstantFunction.getMangledName());
- intermediate.addToCallGraph(infoSink, entryPointFunction->getMangledName(), patchConstantFunction.getMangledName());
+ intermediate.addToCallGraph(infoSink, intermediate.getEntryPointMangledName().c_str(),
+ patchConstantFunction.getMangledName());
if (pcfCall->getAsAggregate()) {
TQualifierList& qualifierList = pcfCall->getAsAggregate()->getQualifierList();
@@ -7565,6 +9417,71 @@ void HlslParseContext::addPatchConstantInvocation()
}
}
+ // ================ Step 2B: Per Control Point synthesis ================
+ // If there is per control point data, we must either emulate that with multiple
+ // invocations of the entry point to build up an array, or (TODO:) use a yet
+ // unavailable extension to look across the SIMD lanes. This is the former
+ // as a placeholder for the latter.
+ if (outPatchParam >= 0) {
+ // We must introduce a local temp variable of the type wanted by the PCF input.
+ const int arraySize = patchConstantFunction[outPatchParam].type->getOuterArraySize();
+
+ if (entryPointFunction->getType().getBasicType() == EbtVoid) {
+ error(loc, "entry point must return a value for use with patch constant function", "", "");
+ return;
+ }
+
+ // Create calls to wrapped main to fill in the array. We will substitute fixed values
+ // of invocation ID when calling the wrapped main.
+
+ // This is the type of the each member of the per ctrl point array.
+ const TType derefType(perCtrlPtVar->getType(), 0);
+
+ for (int cpt = 0; cpt < arraySize; ++cpt) {
+ // TODO: improve. substr(1) here is to avoid the '@' that was grafted on but isn't in the symtab
+ // for this function.
+ const TString origName = entryPointFunction->getName().substr(1);
+ TFunction callee(&origName, TType(EbtVoid));
+ TIntermTyped* callingArgs = nullptr;
+
+ for (int i = 0; i < entryPointFunction->getParamCount(); i++) {
+ TParameter& param = (*entryPointFunction)[i];
+ TType& paramType = *param.type;
+
+ if (paramType.getQualifier().isParamOutput()) {
+ error(loc, "unimplemented: entry point outputs in patch constant function invocation", "", "");
+ return;
+ }
+
+ if (paramType.getQualifier().isParamInput()) {
+ TIntermTyped* arg = nullptr;
+ if ((*entryPointFunction)[i].getDeclaredBuiltIn() == EbvInvocationId) {
+ // substitute invocation ID with the array element ID
+ arg = intermediate.addConstantUnion(cpt, loc);
+ } else {
+ TVariable* argVar = makeInternalVariable(*param.name, *param.type);
+ argVar->getWritableType().getQualifier().makeTemporary();
+ arg = intermediate.addSymbol(*argVar);
+ }
+
+ handleFunctionArgument(&callee, callingArgs, arg);
+ }
+ }
+
+ // Call and assign to per ctrl point variable
+ currentCaller = intermediate.getEntryPointMangledName().c_str();
+ TIntermTyped* callReturn = handleFunctionCall(loc, &callee, callingArgs);
+ TIntermTyped* index = intermediate.addConstantUnion(cpt, loc);
+ TIntermSymbol* perCtrlPtSym = intermediate.addSymbol(*perCtrlPtVar, loc);
+ TIntermTyped* element = intermediate.addIndex(EOpIndexDirect, perCtrlPtSym, index, loc);
+ element->setType(derefType);
+ element->setLoc(loc);
+
+ pcfCallSequence = intermediate.growAggregate(pcfCallSequence,
+ handleAssign(loc, EOpAssign, element, callReturn));
+ }
+ }
+
// ================ Step 3: Create return Sequence ================
// Return sequence: copy PCF result to a temporary, then to shader output variable.
if (pcfCall->getBasicType() != EbtVoid) {
@@ -7577,34 +9494,36 @@ void HlslParseContext::addPatchConstantInvocation()
if (newLists != ioTypeMap.end())
outType.setStruct(newLists->second.output);
- // Substitute the top level type's builtin type
+ // Substitute the top level type's built-in type
if (patchConstantFunction.getDeclaredBuiltInType() != EbvNone)
outType.getQualifier().builtIn = patchConstantFunction.getDeclaredBuiltInType();
+ outType.getQualifier().patch = true; // make it a per-patch variable
+
TVariable* pcfOutput = makeInternalVariable("@patchConstantOutput", outType);
pcfOutput->getWritableType().getQualifier().storage = EvqVaryingOut;
- if (pcfOutput->getType().containsBuiltInInterstageIO(language))
+ if (pcfOutput->getType().containsBuiltIn())
split(*pcfOutput);
+ assignToInterface(*pcfOutput);
+
TIntermSymbol* pcfOutputSym = intermediate.addSymbol(*pcfOutput, loc);
// The call to the PCF is a complex R-value: we want to store it in a temp to avoid
// repeated calls to the PCF:
TVariable* pcfCallResult = makeInternalVariable("@patchConstantResult", *retType);
pcfCallResult->getWritableType().getQualifier().makeTemporary();
- TIntermSymbol* pcfResultVar = intermediate.addSymbol(*pcfCallResult, loc);
- // sanitizeType(&pcfCall->getWritableType());
- TIntermNode* pcfResultAssign = intermediate.addAssign(EOpAssign, pcfResultVar, pcfCall, loc);
- TIntermNode* pcfResultToOut = handleAssign(loc, EOpAssign, pcfOutputSym, intermediate.addSymbol(*pcfCallResult, loc));
-
- TIntermTyped* pcfAggregate = nullptr;
- pcfAggregate = intermediate.growAggregate(pcfAggregate, pcfResultAssign);
- pcfAggregate = intermediate.growAggregate(pcfAggregate, pcfResultToOut);
- pcfAggregate = intermediate.setAggregateOperator(pcfAggregate, EOpSequence, *retType, loc);
+ TIntermSymbol* pcfResultVar = intermediate.addSymbol(*pcfCallResult, loc);
+ TIntermNode* pcfResultAssign = handleAssign(loc, EOpAssign, pcfResultVar, pcfCall);
+ TIntermNode* pcfResultToOut = handleAssign(loc, EOpAssign, pcfOutputSym,
+ intermediate.addSymbol(*pcfCallResult, loc));
- pcfCall = pcfAggregate;
+ pcfCallSequence = intermediate.growAggregate(pcfCallSequence, pcfResultAssign);
+ pcfCallSequence = intermediate.growAggregate(pcfCallSequence, pcfResultToOut);
+ } else {
+ pcfCallSequence = intermediate.growAggregate(pcfCallSequence, pcfCall);
}
// ================ Step 4: Barrier ================
@@ -7613,23 +9532,70 @@ void HlslParseContext::addPatchConstantInvocation()
barrier->setType(TType(EbtVoid));
epBodySeq.insert(epBodySeq.end(), barrier);
- // ================ Step 5: Test on invocation ID ================
+ // ================ Step 5: Test on invocation ID ================
TIntermTyped* zero = intermediate.addConstantUnion(0, loc, true);
TIntermTyped* cmp = intermediate.addBinaryNode(EOpEqual, invocationIdSym, zero, loc, TType(EbtBool));
- // Create if statement
- TIntermTyped* invocationIdTest = new TIntermSelection(cmp, pcfCall, nullptr);
+
+ // ================ Step 5B: Create if statement on Invocation ID == 0 ================
+ intermediate.setAggregateOperator(pcfCallSequence, EOpSequence, TType(EbtVoid), loc);
+ TIntermTyped* invocationIdTest = new TIntermSelection(cmp, pcfCallSequence, nullptr);
invocationIdTest->setLoc(loc);
// add our test sequence before the return.
epBodySeq.insert(epBodySeq.end(), invocationIdTest);
}
+// Finalization step: remove unused buffer blocks from linkage (we don't know until the
+// shader is entirely compiled)
+void HlslParseContext::removeUnusedStructBufferCounters()
+{
+ const auto endIt = std::remove_if(linkageSymbols.begin(), linkageSymbols.end(),
+ [this](const TSymbol* sym) {
+ const auto sbcIt = structBufferCounter.find(sym->getName());
+ return sbcIt != structBufferCounter.end() && !sbcIt->second;
+ });
+
+ linkageSymbols.erase(endIt, linkageSymbols.end());
+}
+
+// Finalization step: patch texture shadow modes to match samplers they were combined with
+void HlslParseContext::fixTextureShadowModes()
+{
+ for (auto symbol = linkageSymbols.begin(); symbol != linkageSymbols.end(); ++symbol) {
+ TSampler& sampler = (*symbol)->getWritableType().getSampler();
+
+ if (sampler.isTexture()) {
+ const auto shadowMode = textureShadowVariant.find((*symbol)->getUniqueId());
+ if (shadowMode != textureShadowVariant.end()) {
+
+ if (shadowMode->second->overloaded())
+ // Texture needs legalization if it's been seen with both shadow and non-shadow modes.
+ intermediate.setNeedsLegalization();
+
+ sampler.shadow = shadowMode->second->isShadowId((*symbol)->getUniqueId());
+ }
+ }
+ }
+}
+
// post-processing
void HlslParseContext::finish()
{
+ // Error check: There was a dangling .mips operator. These are not nested constructs in the grammar, so
+ // cannot be detected there. This is not strictly needed in a non-validating parser; it's just helpful.
+ if (! mipsOperatorMipArg.empty()) {
+ error(mipsOperatorMipArg.back().loc, "unterminated mips operator:", "", "");
+ }
+
+ removeUnusedStructBufferCounters();
addPatchConstantInvocation();
- addInterstageIoToLinkage();
+ fixTextureShadowModes();
+
+ // Communicate out (esp. for command line) that we formed AST that will make
+ // illegal AST SPIR-V and it needs transforms to legalize it.
+ if (intermediate.needsLegalization())
+ infoSink.info << "WARNING: AST will form illegal SPIR-V; need to transform to legalize";
TParseContextBase::finish();
}
diff --git a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseHelper.h b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseHelper.h
index 2d1968114c4..c1752f12919 100644
--- a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseHelper.h
+++ b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseHelper.h
@@ -39,9 +39,12 @@
#include "../glslang/MachineIndependent/parseVersions.h"
#include "../glslang/MachineIndependent/ParseHelper.h"
+#include <array>
+
namespace glslang {
class TAttributeMap; // forward declare
+class TFunctionDeclarator;
class HlslParseContext : public TParseContextBase {
public:
@@ -70,16 +73,17 @@ public:
TIntermTyped* handleVariable(const TSourceLoc&, const TString* string);
TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index);
TIntermTyped* handleBracketOperator(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index);
- void checkIndex(const TSourceLoc&, const TType&, int& index);
TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right);
TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode);
TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field);
bool isBuiltInMethod(const TSourceLoc&, TIntermTyped* base, const TString& field);
- void assignLocations(TVariable& variable);
+ void assignToInterface(TVariable& variable);
void handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&, const TAttributeMap&, TIntermNode*& entryPointTree);
TIntermNode* transformEntryPoint(const TSourceLoc&, TFunction&, const TAttributeMap&);
+ void handleEntryPointAttributes(const TSourceLoc&, const TAttributeMap&);
+ void transferTypeAttributes(const TAttributeMap&, TType&);
void handleFunctionBody(const TSourceLoc&, TFunction&, TIntermNode* functionBody, TIntermNode*& node);
void remapEntryPointIO(TFunction& function, TVariable*& returnValue, TVector<TVariable*>& inputs, TVector<TVariable*>& outputs);
void remapNonEntryPointIO(TFunction& function);
@@ -88,20 +92,23 @@ public:
TIntermTyped* handleAssign(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right);
TIntermTyped* handleAssignToMatrixSwizzle(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right);
TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermTyped*);
+ TIntermAggregate* assignClipCullDistance(const TSourceLoc&, TOperator, int semanticId, TIntermTyped* left, TIntermTyped* right);
void decomposeIntrinsic(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
void decomposeStructBufferMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
void decomposeGeometryMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
+ void pushFrontArguments(TIntermTyped* front, TIntermTyped*& arguments);
void addInputArgumentConversions(const TFunction&, TIntermTyped*&);
+ void expandArguments(const TSourceLoc&, const TFunction&, TIntermTyped*&);
TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermOperator&);
void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&);
- TFunction* handleConstructorCall(const TSourceLoc&, const TType&);
+ TFunction* makeConstructorCall(const TSourceLoc&, const TType&);
void handleSemantic(TSourceLoc, TQualifier&, TBuiltInVariable, const TString& upperCase);
void handlePackOffset(const TSourceLoc&, TQualifier&, const glslang::TString& location,
const glslang::TString* component);
void handleRegister(const TSourceLoc&, TQualifier&, const glslang::TString* profile, const glslang::TString& desc,
int subComponent, const glslang::TString*);
-
+ TIntermTyped* convertConditionalExpression(const TSourceLoc&, TIntermTyped*, bool mustBeScalar = true);
TIntermAggregate* handleSamplerTextureCombine(const TSourceLoc& loc, TIntermTyped* argTex, TIntermTyped* argSampler);
bool parseMatrixSwizzleSelector(const TSourceLoc&, const TString&, int cols, int rows, TSwizzleSelectors<TMatrixSelector>&);
@@ -120,13 +127,11 @@ public:
void structArrayCheck(const TSourceLoc&, const TType& structure);
void arrayDimMerge(TType& type, const TArraySizes* sizes);
bool voidErrorCheck(const TSourceLoc&, const TString&, TBasicType);
- void boolCheck(const TSourceLoc&, const TIntermTyped*);
void globalQualifierFix(const TSourceLoc&, TQualifier&);
bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType);
void mergeQualifiers(TQualifier& dst, const TQualifier& src);
int computeSamplerTypeIndex(TSampler&);
TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&);
- void redeclareBuiltinBlock(const TSourceLoc&, TTypeList& typeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes);
void paramFix(TType& type);
void specializationCheck(const TSourceLoc&, const TType&, const char* op);
@@ -135,16 +140,19 @@ public:
void mergeObjectLayoutQualifiers(TQualifier& dest, const TQualifier& src, bool inheritOnly);
void checkNoShaderLayouts(const TSourceLoc&, const TShaderQualifiers&);
- const TFunction* findFunction(const TSourceLoc& loc, TFunction& call, bool& builtIn, TIntermTyped*& args);
- void declareTypedef(const TSourceLoc&, TString& identifier, const TType&);
+ const TFunction* findFunction(const TSourceLoc& loc, TFunction& call, bool& builtIn, int& thisDepth, TIntermTyped*& args);
+ void declareTypedef(const TSourceLoc&, const TString& identifier, const TType&);
void declareStruct(const TSourceLoc&, TString& structName, TType&);
TSymbol* lookupUserType(const TString&, TType&);
- TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, TType&, TIntermTyped* initializer = 0);
- void lengthenList(const TSourceLoc&, TIntermSequence& list, int size);
- TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&);
+ TIntermNode* declareVariable(const TSourceLoc&, const TString& identifier, TType&, TIntermTyped* initializer = 0);
+ void lengthenList(const TSourceLoc&, TIntermSequence& list, int size, TIntermTyped* scalarInit);
+ TIntermTyped* handleConstructor(const TSourceLoc&, TIntermTyped*, const TType&);
+ TIntermTyped* addConstructor(const TSourceLoc&, TIntermTyped*, const TType&);
+ TIntermTyped* convertArray(TIntermTyped*, const TType&);
TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&);
TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset);
void declareBlock(const TSourceLoc&, TType&, const TString* instanceName = 0, TArraySizes* arraySizes = 0);
+ void declareStructBufferCounter(const TSourceLoc& loc, const TType& bufferType, const TString& name);
void fixBlockLocations(const TSourceLoc&, TQualifier&, TTypeList&, bool memberWithLocation, bool memberWithoutLocation);
void fixBlockXfbOffsets(TQualifier&, TTypeList&);
void fixBlockUniformOffsets(const TQualifier&, TTypeList&);
@@ -152,7 +160,7 @@ public:
void addQualifierToExisting(const TSourceLoc&, TQualifier, TIdentifierList&);
void updateStandaloneQualifierDefaults(const TSourceLoc&, const TPublicType&);
void wrapupSwitchSubsequence(TIntermAggregate* statements, TIntermNode* branchNode);
- TIntermNode* addSwitch(const TSourceLoc&, TIntermTyped* expression, TIntermAggregate* body);
+ TIntermNode* addSwitch(const TSourceLoc&, TIntermTyped* expression, TIntermAggregate* body, TSelectionControl control);
void updateImplicitArraySize(const TSourceLoc&, TIntermNode*, int index);
@@ -164,7 +172,7 @@ public:
void pushScope() { symbolTable.push(); }
void popScope() { symbolTable.pop(0); }
- void pushThisScope(const TType&);
+ void pushThisScope(const TType&, const TVector<TFunctionDeclarator>&);
void popThisScope() { symbolTable.pop(0); }
void pushImplicitThis(TVariable* thisParameter) { implicitThisStack.push_back(thisParameter); }
@@ -173,16 +181,17 @@ public:
void pushNamespace(const TString& name);
void popNamespace();
- TString* getFullNamespaceName(const TString& localName) const;
+ void getFullNamespaceName(TString*&) const;
void addScopeMangler(TString&);
void pushSwitchSequence(TIntermSequence* sequence) { switchSequenceStack.push_back(sequence); }
void popSwitchSequence() { switchSequenceStack.pop_back(); }
- virtual void growGlobalUniformBlock(TSourceLoc&, TType&, TString& memberName, TTypeList* typeList = nullptr) override;
+ virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName,
+ TTypeList* typeList = nullptr) override;
// Apply L-value conversions. E.g, turning a write to a RWTexture into an ImageStore.
- TIntermTyped* handleLvalue(const TSourceLoc&, const char* op, TIntermTyped* node);
+ TIntermTyped* handleLvalue(const TSourceLoc&, const char* op, TIntermTyped*& node);
bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override;
TLayoutFormat getLayoutFromTxType(const TSourceLoc&, const TType&);
@@ -190,37 +199,45 @@ public:
bool handleOutputGeometry(const TSourceLoc&, const TLayoutGeometry& geometry);
bool handleInputGeometry(const TSourceLoc&, const TLayoutGeometry& geometry);
- // Potentially rename shader entry point function
- void renameShaderFunction(TString*& name) const;
+ // Determine selection control from attributes
+ TSelectionControl handleSelectionControl(const TAttributeMap& attributes) const;
- // Reset data for incrementally built referencing of flattened composite structures
- void initFlattening() { flattenLevel.push_back(0); flattenOffset.push_back(0); }
- void finalizeFlattening() { flattenLevel.pop_back(); flattenOffset.pop_back(); }
+ // Determine loop control from attributes
+ TLoopControl handleLoopControl(const TAttributeMap& attributes) const;
// Share struct buffer deep types
void shareStructBufferType(TType&);
+ // Set texture return type of the given sampler. Returns success (not all types are valid).
+ bool setTextureReturnType(TSampler& sampler, const TType& retType, const TSourceLoc& loc);
+
+ // Obtain the sampler return type of the given sampler in retType.
+ void getTextureReturnType(const TSampler& sampler, TType& retType) const;
+
protected:
struct TFlattenData {
- TFlattenData() : nextBinding(TQualifier::layoutBindingEnd) { }
- TFlattenData(int nb) : nextBinding(nb) { }
+ TFlattenData() : nextBinding(TQualifier::layoutBindingEnd),
+ nextLocation(TQualifier::layoutLocationEnd) { }
+ TFlattenData(int nb, int nl) : nextBinding(nb), nextLocation(nl) { }
TVector<TVariable*> members; // individual flattened variables
- TVector<int> offsets; // offset to next tree level
- int nextBinding; // next binding to use.
+ TVector<int> offsets; // offset to next tree level
+ unsigned int nextBinding; // next binding to use.
+ unsigned int nextLocation; // next location to use
};
- void fixConstInit(const TSourceLoc&, TString& identifier, TType& type, TIntermTyped*& initializer);
+ void fixConstInit(const TSourceLoc&, const TString& identifier, TType& type, TIntermTyped*& initializer);
void inheritGlobalDefaults(TQualifier& dst) const;
TVariable* makeInternalVariable(const char* name, const TType&) const;
TVariable* makeInternalVariable(const TString& name, const TType& type) const {
return makeInternalVariable(name.c_str(), type);
}
- TVariable* declareNonArray(const TSourceLoc&, TString& identifier, TType&, bool track);
- void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&, bool track);
+ TIntermSymbol* makeInternalVariableNode(const TSourceLoc&, const char* name, const TType&) const;
+ TVariable* declareNonArray(const TSourceLoc&, const TString& identifier, const TType&, bool track);
+ void declareArray(const TSourceLoc&, const TString& identifier, const TType&, TSymbol*&, bool track);
TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable);
- TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer);
- bool isZeroConstructor(const TIntermNode*);
+ TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer, TIntermTyped* scalarInit);
+ bool isScalarConstructor(const TIntermNode*);
TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage);
// Return true if this node requires L-value conversion (e.g, to an imageStore).
@@ -228,30 +245,35 @@ protected:
// Array and struct flattening
TIntermTyped* flattenAccess(TIntermTyped* base, int member);
- bool shouldFlattenUniform(const TType&) const;
+ TIntermTyped* flattenAccess(int uniqueId, int member, TStorageQualifier outerStorage, const TType&, int subset = -1);
+ int findSubtreeOffset(const TIntermNode&) const;
+ int findSubtreeOffset(const TType&, int subset, const TVector<int>& offsets) const;
+ bool shouldFlatten(const TType&, TStorageQualifier, bool topLevel) const;
bool wasFlattened(const TIntermTyped* node) const;
bool wasFlattened(int id) const { return flattenMap.find(id) != flattenMap.end(); }
- int addFlattenedMember(const TSourceLoc& loc, const TVariable&, const TType&, TFlattenData&, const TString& name, bool track);
- bool isFinalFlattening(const TType& type) const { return !(type.isStruct() || type.isArray()); }
-
- // Structure splitting (splits interstage builtin types into its own struct)
- TIntermTyped* splitAccessStruct(const TSourceLoc& loc, TIntermTyped*& base, int& member);
- void splitAccessArray(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index);
- TType& split(TType& type, TString name, const TType* outerStructType = nullptr);
- void split(TIntermTyped*);
+ int addFlattenedMember(const TVariable&, const TType&, TFlattenData&, const TString& name, bool linkage,
+ const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes);
+
+ // Structure splitting (splits interstage built-in types into its own struct)
void split(const TVariable&);
+ void splitBuiltIn(const TString& baseName, const TType& memberType, const TArraySizes*, const TQualifier&);
+ const TType& split(const TType& type, const TString& name, const TQualifier&);
bool wasSplit(const TIntermTyped* node) const;
- bool wasSplit(int id) const { return splitIoVars.find(id) != splitIoVars.end(); }
- TVariable* getSplitIoVar(const TIntermTyped* node) const;
- TVariable* getSplitIoVar(const TVariable* var) const;
- TVariable* getSplitIoVar(int id) const;
- void addInterstageIoToLinkage();
+ bool wasSplit(int id) const { return splitNonIoVars.find(id) != splitNonIoVars.end(); }
+ TVariable* getSplitNonIoVar(int id) const;
void addPatchConstantInvocation();
+ void fixTextureShadowModes();
+ TIntermTyped* makeIntegerIndex(TIntermTyped*);
+
+ void fixBuiltInIoType(TType&);
- void flatten(const TSourceLoc& loc, const TVariable& variable);
- int flatten(const TSourceLoc& loc, const TVariable& variable, const TType&, TFlattenData&, TString name);
- int flattenStruct(const TSourceLoc& loc, const TVariable& variable, const TType&, TFlattenData&, TString name);
- int flattenArray(const TSourceLoc& loc, const TVariable& variable, const TType&, TFlattenData&, TString name);
+ void flatten(const TVariable& variable, bool linkage);
+ int flatten(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage,
+ const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes);
+ int flattenStruct(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage,
+ const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes);
+ int flattenArray(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage,
+ const TQualifier& outerQualifier);
bool hasUniform(const TQualifier& qualifier) const;
void clearUniform(TQualifier& qualifier);
@@ -266,33 +288,48 @@ protected:
// Test method names
bool isStructBufferMethod(const TString& name) const;
+ void counterBufferType(const TSourceLoc& loc, TType& type);
+
+ // Return standard sample position array
+ TIntermConstantUnion* getSamplePosArray(int count);
TType* getStructBufferContentType(const TType& type) const;
bool isStructBufferType(const TType& type) const { return getStructBufferContentType(type) != nullptr; }
TIntermTyped* indexStructBufferContent(const TSourceLoc& loc, TIntermTyped* buffer) const;
+ TIntermTyped* getStructBufferCounter(const TSourceLoc& loc, TIntermTyped* buffer);
+ TString getStructBuffCounterName(const TString&) const;
+ void addStructBuffArguments(const TSourceLoc& loc, TIntermAggregate*&);
+ void addStructBufferHiddenCounterParam(const TSourceLoc& loc, TParameter&, TIntermAggregate*&);
// Return true if this type is a reference. This is not currently a type method in case that's
// a language specific answer.
bool isReference(const TType& type) const { return isStructBufferType(type); }
- // Pass through to base class after remembering builtin mappings.
+ // Return true if this a buffer type that has an associated counter buffer.
+ bool hasStructBuffCounter(const TType&) const;
+
+ // Finalization step: remove unused buffer blocks from linkage (we don't know until the
+ // shader is entirely compiled)
+ void removeUnusedStructBufferCounters();
+
+ static bool isClipOrCullDistance(TBuiltInVariable);
+ static bool isClipOrCullDistance(const TQualifier& qual) { return isClipOrCullDistance(qual.builtIn); }
+ static bool isClipOrCullDistance(const TType& type) { return isClipOrCullDistance(type.getQualifier()); }
+
+ // Find the patch constant function (issues error, returns nullptr if not found)
+ const TFunction* findPatchConstantFunction(const TSourceLoc& loc);
+
+ // Pass through to base class after remembering built-in mappings.
using TParseContextBase::trackLinkage;
void trackLinkage(TSymbol& variable) override;
void finish() override; // post-processing
+ // Linkage symbol helpers
+ TIntermSymbol* findTessLinkageSymbol(TBuiltInVariable biType) const;
+
// Current state of parsing
- struct TPragma contextPragma;
- int loopNestingLevel; // 0 if outside all loops
int annotationNestingLevel; // 0 if outside all annotations
- int structNestingLevel; // 0 if outside blocks and structures
- int controlFlowNestingLevel; // 0 if outside all flow control
- TList<TIntermSequence*> switchSequenceStack; // case, node, case, case, node, ...; ensure only one node between cases; stack of them for nesting
- bool postEntryPointReturn; // if inside a function, true if the function is the entry point and this is after a return statement
- const TType* currentFunctionType; // the return type of the function that's currently being parsed
- bool functionReturnsValue; // true if a non-void function has a return
- TBuiltInResource resources;
- TLimits& limits;
HlslParseContext(HlslParseContext&);
HlslParseContext& operator=(HlslParseContext&);
@@ -341,8 +378,6 @@ protected:
TVector<TSymbol*> ioArraySymbolResizeList;
TMap<int, TFlattenData> flattenMap;
- TVector<int> flattenLevel; // nested postfix operator level for flattening
- TVector<int> flattenOffset; // cumulative offset for flattening
// IO-type map. Maps a pure symbol-table form of a structure-member list into
// each of the (up to) three kinds of IO, as each as different allowed decorations,
@@ -355,22 +390,24 @@ protected:
TMap<const TTypeList*, tIoKinds> ioTypeMap;
// Structure splitting data:
- TMap<int, TVariable*> splitIoVars; // variables with the builtin interstage IO removed, indexed by unique ID.
+ TMap<int, TVariable*> splitNonIoVars; // variables with the built-in interstage IO removed, indexed by unique ID.
// Structuredbuffer shared types. Typically there are only a few.
TVector<TType*> structBufferTypes;
- // The builtin interstage IO map considers e.g, EvqPosition on input and output separately, so that we
+ // This tracks texture sample user structure return types. Only a limited number are supported, as
+ // may fit in TSampler::structReturnIndex.
+ TVector<TTypeList*> textureReturnStruct;
+
+ TMap<TString, bool> structBufferCounter;
+
+ // The built-in interstage IO map considers e.g, EvqPosition on input and output separately, so that we
// can build the linkage correctly if position appears on both sides. Otherwise, multiple positions
// are considered identical.
struct tInterstageIoData {
tInterstageIoData(TBuiltInVariable bi, TStorageQualifier q) :
builtIn(bi), storage(q) { }
- tInterstageIoData(const TType& memberType, const TType& storageType) :
- builtIn(memberType.getQualifier().builtIn),
- storage(storageType.getQualifier().storage) { }
-
TBuiltInVariable builtIn;
TStorageQualifier storage;
@@ -380,29 +417,72 @@ protected:
}
};
- TMap<tInterstageIoData, TVariable*> interstageBuiltInIo; // individual builtin interstage IO vars, indexed by builtin type.
-
- // We have to move array references to structs containing builtin interstage IO to the split variables.
- // This is only handled for one level. This stores the index, because we'll need it in the future, since
- // unlike normal array references, here the index happens before we discover what it applies to.
- TIntermTyped* builtInIoIndex;
- TIntermTyped* builtInIoBase;
+ TMap<tInterstageIoData, TVariable*> splitBuiltIns; // split built-ins, indexed by built-in type.
+ TVariable* inputPatch; // input patch is special for PCF: it's the only non-builtin PCF input,
+ // and is handled as a pseudo-builtin.
unsigned int nextInLocation;
unsigned int nextOutLocation;
- TString sourceEntryPointName;
TFunction* entryPointFunction;
TIntermNode* entryPointFunctionBody;
TString patchConstantFunctionName; // hull shader patch constant function name, from function level attribute.
- TMap<TBuiltInVariable, TSymbol*> builtInLinkageSymbols; // used for tessellation, finding declared builtins
+ TMap<TBuiltInVariable, TSymbol*> builtInTessLinkageSymbols; // used for tessellation, finding declared built-ins
TVector<TString> currentTypePrefix; // current scoping prefix for nested structures
TVector<TVariable*> implicitThisStack; // currently active 'this' variables for nested structures
+
+ TVariable* gsStreamOutput; // geometry shader stream outputs, for emit (Append method)
+
+ TVariable* clipDistanceOutput; // synthesized clip distance out variable (shader might have >1)
+ TVariable* cullDistanceOutput; // synthesized cull distance out variable (shader might have >1)
+ TVariable* clipDistanceInput; // synthesized clip distance in variable (shader might have >1)
+ TVariable* cullDistanceInput; // synthesized cull distance in variable (shader might have >1)
+
+ static const int maxClipCullRegs = 2;
+ std::array<int, maxClipCullRegs> clipSemanticNSizeIn; // vector, indexed by clip semantic ID
+ std::array<int, maxClipCullRegs> cullSemanticNSizeIn; // vector, indexed by cull semantic ID
+ std::array<int, maxClipCullRegs> clipSemanticNSizeOut; // vector, indexed by clip semantic ID
+ std::array<int, maxClipCullRegs> cullSemanticNSizeOut; // vector, indexed by cull semantic ID
+
+ // This tracks the first (mip level) argument to the .mips[][] operator. Since this can be nested as
+ // in tx.mips[tx.mips[0][1].x][2], we need a stack. We also track the TSourceLoc for error reporting
+ // purposes.
+ struct tMipsOperatorData {
+ tMipsOperatorData(TSourceLoc l, TIntermTyped* m) : loc(l), mipLevel(m) { }
+ TSourceLoc loc;
+ TIntermTyped* mipLevel;
+ };
+
+ TVector<tMipsOperatorData> mipsOperatorMipArg;
+
+ // A texture object may be used with shadow and non-shadow samplers, but both may not be
+ // alive post-DCE in the same shader. We do not know at compilation time which are alive: that's
+ // only known post-DCE. If a texture is used both ways, we create two textures, and
+ // leave the elimiation of one to the optimizer. This maps the shader variant to
+ // the shadow variant.
+ //
+ // This can be removed if and when the texture shadow code in
+ // HlslParseContext::handleSamplerTextureCombine is removed.
+ struct tShadowTextureSymbols {
+ tShadowTextureSymbols() { symId.fill(-1); }
+
+ void set(bool shadow, int id) { symId[int(shadow)] = id; }
+ int get(bool shadow) const { return symId[int(shadow)]; }
+
+ // True if this texture has been seen with both shadow and non-shadow modes
+ bool overloaded() const { return symId[0] != -1 && symId[1] != -1; }
+ bool isShadowId(int id) const { return symId[1] == id; }
+
+ private:
+ std::array<int, 2> symId;
+ };
+
+ TMap<int, tShadowTextureSymbols*> textureShadowVariant;
};
-// This is the prefix we use for builtin methods to avoid namespace collisions with
+// This is the prefix we use for built-in methods to avoid namespace collisions with
// global scope user functions.
// TODO: this would be better as a nonparseable character, but that would
// require changing the scanner.
diff --git a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseables.cpp b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseables.cpp
index 1a47a0bb65e..bae9e6e8c64 100644
--- a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseables.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslParseables.cpp
@@ -68,14 +68,21 @@ const char* BaseTypeName(const char argOrder, const char* scalarName, const char
}
}
-bool IsSamplerType(const char argType) { return argType == 'S' || argType == 's'; }
-bool IsArrayed(const char argOrder) { return argOrder == '@' || argOrder == '&' || argOrder == '#'; }
-bool IsTextureMS(const char argOrder) { return argOrder == '$' || argOrder == '&'; }
-bool IsBuffer(const char argOrder) { return argOrder == '*' || argOrder == '~'; }
-bool IsImage(const char argOrder) { return argOrder == '!' || argOrder == '#' || argOrder == '~'; }
+// arg order queries
+bool IsSamplerType(const char argType) { return argType == 'S' || argType == 's'; }
+bool IsArrayed(const char argOrder) { return argOrder == '@' || argOrder == '&' || argOrder == '#'; }
+bool IsTextureNonMS(const char argOrder) { return argOrder == '%'; }
+bool IsSubpassInput(const char argOrder) { return argOrder == '[' || argOrder == ']'; }
+bool IsArrayedTexture(const char argOrder) { return argOrder == '@'; }
+bool IsTextureMS(const char argOrder) { return argOrder == '$' || argOrder == '&'; }
+bool IsMS(const char argOrder) { return IsTextureMS(argOrder) || argOrder == ']'; }
+bool IsBuffer(const char argOrder) { return argOrder == '*' || argOrder == '~'; }
+bool IsImage(const char argOrder) { return argOrder == '!' || argOrder == '#' || argOrder == '~'; }
+
bool IsTextureType(const char argOrder)
{
- return argOrder == '%' || argOrder == '@' || IsTextureMS(argOrder) || IsBuffer(argOrder) | IsImage(argOrder);
+ return IsTextureNonMS(argOrder) || IsArrayedTexture(argOrder) ||
+ IsTextureMS(argOrder) || IsBuffer(argOrder) || IsImage(argOrder);
}
// Reject certain combinations that are illegal sample methods. For example,
@@ -111,7 +118,8 @@ bool IsIllegalSample(const glslang::TString& name, const char* argOrder, int dim
name == "GatherAlpha");
const bool isGatherCmp =
- (name == "GatherCmpRed" ||
+ (name == "GatherCmp" ||
+ name == "GatherCmpRed" ||
name == "GatherCmpGreen" ||
name == "GatherCmpBlue" ||
name == "GatherCmpAlpha");
@@ -221,15 +229,16 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
const bool isTexture = IsTextureType(argOrder[0]);
const bool isArrayed = IsArrayed(argOrder[0]);
const bool isSampler = IsSamplerType(argType[0]);
- const bool isMS = IsTextureMS(argOrder[0]);
+ const bool isMS = IsMS(argOrder[0]);
const bool isBuffer = IsBuffer(argOrder[0]);
const bool isImage = IsImage(argOrder[0]);
+ const bool isSubpass = IsSubpassInput(argOrder[0]);
char type = *argType;
if (isTranspose) { // Take transpose of matrix dimensions
std::swap(dim0, dim1);
- } else if (isTexture) {
+ } else if (isTexture || isSubpass) {
if (type == 'F') // map base type to texture of that type.
type = 'T'; // e.g, int -> itexture, uint -> utexture, etc.
else if (type == 'I')
@@ -254,16 +263,23 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
case 'S': s += "sampler"; break;
case 's': s += "SamplerComparisonState"; break;
case 'T': s += ((isBuffer && isImage) ? "RWBuffer" :
+ isSubpass ? "SubpassInput" :
isBuffer ? "Buffer" :
isImage ? "RWTexture" : "Texture"); break;
case 'i': s += ((isBuffer && isImage) ? "RWBuffer" :
+ isSubpass ? "SubpassInput" :
isBuffer ? "Buffer" :
isImage ? "RWTexture" : "Texture"); break;
case 'u': s += ((isBuffer && isImage) ? "RWBuffer" :
+ isSubpass ? "SubpassInput" :
isBuffer ? "Buffer" :
isImage ? "RWTexture" : "Texture"); break;
default: s += "UNKNOWN_TYPE"; break;
}
+
+ if (isSubpass && isMS)
+ s += "MS";
+
} else {
switch (type) {
case '-': s += "void"; break;
@@ -281,6 +297,7 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
s += type;
s += ((isImage && isBuffer) ? "imageBuffer" :
+ isSubpass ? "subpassInput" :
isImage ? "image" :
isBuffer ? "samplerBuffer" :
"texture");
@@ -295,6 +312,9 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
if (fixedVecSize != 0)
dim0 = dim1 = fixedVecSize;
+ const char dim0Char = ('0' + char(dim0));
+ const char dim1Char = ('0' + char(dim1));
+
// Add sampler dimensions
if (isSampler || isTexture) {
if ((order == 'V' || isTexture) && !isBuffer) {
@@ -319,12 +339,12 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
case '-': break; // no dimensions for voids
case 'S': break; // no dimensions on scalars
case 'V':
- s += ('0' + char(dim0));
+ s += dim0Char;
break;
case 'M':
- s += ('0' + char(dim0));
+ s += dim0Char;
s += 'x';
- s += ('0' + char(dim1));
+ s += dim1Char;
break;
default:
break;
@@ -338,9 +358,9 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
// For HLSL, append return type for texture types
if (UseHlslTypes) {
switch (type) {
- case 'i': s += "<int4>"; break;
- case 'u': s += "<uint4>"; break;
- case 'T': s += "<float4>"; break;
+ case 'i': s += "<int"; s += dim0Char; s += ">"; break;
+ case 'u': s += "<uint"; s += dim0Char; s += ">"; break;
+ case 'T': s += "<float"; s += dim0Char; s += ">"; break;
default: break;
}
}
@@ -359,7 +379,7 @@ inline bool IsValid(const char* cname, char retOrder, char retType, char argOrde
const std::string name(cname);
// these do not have vec1 versions
- if (dim0 == 1 && (name == "length" || name == "normalize" || name == "reflect" || name == "refract"))
+ if (dim0 == 1 && (name == "normalize" || name == "reflect" || name == "refract"))
return false;
if (!IsTextureType(argOrder) && (isVec && dim0 == 1)) // avoid vec1
@@ -413,7 +433,7 @@ inline void FindVectorMatrixBounds(const char* argOrder, int fixedVecSize, int&
const char* nthArgOrder(NthArg(argOrder, arg));
if (nthArgOrder == nullptr)
break;
- else if (*nthArgOrder == 'V')
+ else if (*nthArgOrder == 'V' || IsSubpassInput(*nthArgOrder))
dim0Max = 4;
else if (*nthArgOrder == 'M')
dim0Max = dim1Max = 4;
@@ -501,7 +521,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
static const EShLanguageMask EShLangAll = EShLanguageMask(EShLangCount - 1);
// These are the actual stage masks defined in the documentation, in case they are
- // needed for furture validation. For now, they are commented out, and set below
+ // needed for future validation. For now, they are commented out, and set below
// to EShLangAll, to allow any intrinsic to be used in any shader, which is legal
// if it is not called.
//
@@ -536,6 +556,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
// '!' as first letter of order creates image object
// '#' as first letter of order creates arrayed image object
// '~' as first letter of order creates an image buffer object
+ // '[' / ']' as first letter of order creates a SubpassInput/SubpassInputMS object
static const struct {
const char* name; // intrinsic name
@@ -546,8 +567,8 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
unsigned int stage; // stage mask
bool method; // true if it's a method.
} hlslIntrinsics[] = {
- // name retOrd retType argOrder argType stage mask
- // -----------------------------------------------------------------------------------------------
+ // name retOrd retType argOrder argType stage mask method
+ // ----------------------------------------------------------------------------------------------------------------
{ "abort", nullptr, nullptr, "-", "-", EShLangAll, false },
{ "abs", nullptr, nullptr, "SVM", "DFUI", EShLangAll, false },
{ "acos", nullptr, nullptr, "SVM", "F", EShLangAll, false },
@@ -566,7 +587,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
{ "ceil", nullptr, nullptr, "SVM", "F", EShLangAll, false },
{ "CheckAccessFullyMapped", "S", "B" , "S", "U", EShLangPSCS, false },
{ "clamp", nullptr, nullptr, "SVM,,", "FUI,,", EShLangAll, false },
- { "clip", "-", "-", "SVM", "F", EShLangPS, false },
+ { "clip", "-", "-", "SVM", "FUI", EShLangPS, false },
{ "cos", nullptr, nullptr, "SVM", "F", EShLangAll, false },
{ "cosh", nullptr, nullptr, "SVM", "F", EShLangAll, false },
{ "countbits", nullptr, nullptr, "SV", "UI", EShLangAll, false },
@@ -625,7 +646,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
{ "isinf", nullptr, "B" , "SVM", "F", EShLangAll, false },
{ "isnan", nullptr, "B" , "SVM", "F", EShLangAll, false },
{ "ldexp", nullptr, nullptr, "SVM,", "F,", EShLangAll, false },
- { "length", "S", "F", "V", "F", EShLangAll, false },
+ { "length", "S", "F", "SV", "F", EShLangAll, false },
{ "lerp", nullptr, nullptr, "VM,,", "F,,", EShLangAll, false },
{ "lerp", nullptr, nullptr, "SVM,,S", "F,,", EShLangAll, false },
{ "lit", "V4", "F", "S,,", "F,,", EShLangAll, false },
@@ -824,6 +845,12 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
{ "GatherAlpha", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll, true },
{ "GatherAlpha", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U", EShLangAll, true },
+ { "GatherCmp", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll, true },
+ { "GatherCmp", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll, true },
+ { "GatherCmp", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll, true },
+ { "GatherCmp", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll, true },
+ { "GatherCmp", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,V,S","FIU,s,F,,I,,,,U",EShLangAll, true },
+
{ "GatherCmpRed", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll, true },
{ "GatherCmpRed", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll, true },
{ "GatherCmpRed", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll, true },
@@ -871,6 +898,13 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
{ "InterlockedMin", nullptr, nullptr, "-", "-", EShLangAll, true },
{ "InterlockedOr", nullptr, nullptr, "-", "-", EShLangAll, true },
{ "InterlockedXor", nullptr, nullptr, "-", "-", EShLangAll, true },
+ { "IncrementCounter", nullptr, nullptr, "-", "-", EShLangAll, true },
+ { "DecrementCounter", nullptr, nullptr, "-", "-", EShLangAll, true },
+ { "Consume", nullptr, nullptr, "-", "-", EShLangAll, true },
+
+ // Methods for subpass input objects
+ { "SubpassLoad", "V4", nullptr, "[", "FIU", EShLangPS, true },
+ { "SubpassLoad", "V4", nullptr, "],S", "FIU,I", EShLangPS, true },
// Mark end of list, since we want to avoid a range-based for, as some compilers don't handle it yet.
{ nullptr, nullptr, nullptr, nullptr, nullptr, 0, false },
@@ -1180,6 +1214,10 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil
symbolTable.relateToOperator(BUILTIN_PREFIX "Store2", EOpMethodStore2);
symbolTable.relateToOperator(BUILTIN_PREFIX "Store3", EOpMethodStore3);
symbolTable.relateToOperator(BUILTIN_PREFIX "Store4", EOpMethodStore4);
+ symbolTable.relateToOperator(BUILTIN_PREFIX "IncrementCounter", EOpMethodIncrementCounter);
+ symbolTable.relateToOperator(BUILTIN_PREFIX "DecrementCounter", EOpMethodDecrementCounter);
+ // Append is also a GS method: we don't add it twice
+ symbolTable.relateToOperator(BUILTIN_PREFIX "Consume", EOpMethodConsume);
symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedAdd", EOpInterlockedAdd);
symbolTable.relateToOperator(BUILTIN_PREFIX "InterlockedAnd", EOpInterlockedAnd);
@@ -1196,6 +1234,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherGreen", EOpMethodGatherGreen);
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherBlue", EOpMethodGatherBlue);
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherAlpha", EOpMethodGatherAlpha);
+ symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmp", EOpMethodGatherCmpRed); // alias
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpRed", EOpMethodGatherCmpRed);
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpGreen", EOpMethodGatherCmpGreen);
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpBlue", EOpMethodGatherCmpBlue);
@@ -1204,6 +1243,10 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil
// GS methods
symbolTable.relateToOperator(BUILTIN_PREFIX "Append", EOpMethodAppend);
symbolTable.relateToOperator(BUILTIN_PREFIX "RestartStrip", EOpMethodRestartStrip);
+
+ // Subpass input methods
+ symbolTable.relateToOperator(BUILTIN_PREFIX "SubpassLoad", EOpSubpassLoad);
+ symbolTable.relateToOperator(BUILTIN_PREFIX "SubpassLoadMS", EOpSubpassLoadMS);
}
//
diff --git a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslScanContext.cpp b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslScanContext.cpp
index 7b0365f4f92..d1e0be6e136 100644
--- a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslScanContext.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslScanContext.cpp
@@ -279,6 +279,22 @@ void HlslScanContext::fillInKeywordMap()
(*KeywordMap)["float4x2"] = EHTokFloat4x2;
(*KeywordMap)["float4x3"] = EHTokFloat4x3;
(*KeywordMap)["float4x4"] = EHTokFloat4x4;
+ (*KeywordMap)["half1x1"] = EHTokHalf1x1;
+ (*KeywordMap)["half1x2"] = EHTokHalf1x2;
+ (*KeywordMap)["half1x3"] = EHTokHalf1x3;
+ (*KeywordMap)["half1x4"] = EHTokHalf1x4;
+ (*KeywordMap)["half2x1"] = EHTokHalf2x1;
+ (*KeywordMap)["half2x2"] = EHTokHalf2x2;
+ (*KeywordMap)["half2x3"] = EHTokHalf2x3;
+ (*KeywordMap)["half2x4"] = EHTokHalf2x4;
+ (*KeywordMap)["half3x1"] = EHTokHalf3x1;
+ (*KeywordMap)["half3x2"] = EHTokHalf3x2;
+ (*KeywordMap)["half3x3"] = EHTokHalf3x3;
+ (*KeywordMap)["half3x4"] = EHTokHalf3x4;
+ (*KeywordMap)["half4x1"] = EHTokHalf4x1;
+ (*KeywordMap)["half4x2"] = EHTokHalf4x2;
+ (*KeywordMap)["half4x3"] = EHTokHalf4x3;
+ (*KeywordMap)["half4x4"] = EHTokHalf4x4;
(*KeywordMap)["double1x1"] = EHTokDouble1x1;
(*KeywordMap)["double1x2"] = EHTokDouble1x2;
(*KeywordMap)["double1x3"] = EHTokDouble1x3;
@@ -320,6 +336,8 @@ void HlslScanContext::fillInKeywordMap()
(*KeywordMap)["RWTexture2DArray"] = EHTokRWTexture2darray;
(*KeywordMap)["RWTexture3D"] = EHTokRWTexture3d;
(*KeywordMap)["RWBuffer"] = EHTokRWBuffer;
+ (*KeywordMap)["SubpassInput"] = EHTokSubpassInput;
+ (*KeywordMap)["SubpassInputMS"] = EHTokSubpassInputMS;
(*KeywordMap)["AppendStructuredBuffer"] = EHTokAppendStructuredBuffer;
(*KeywordMap)["ByteAddressBuffer"] = EHTokByteAddressBuffer;
@@ -327,13 +345,16 @@ void HlslScanContext::fillInKeywordMap()
(*KeywordMap)["RWByteAddressBuffer"] = EHTokRWByteAddressBuffer;
(*KeywordMap)["RWStructuredBuffer"] = EHTokRWStructuredBuffer;
(*KeywordMap)["StructuredBuffer"] = EHTokStructuredBuffer;
+ (*KeywordMap)["TextureBuffer"] = EHTokTextureBuffer;
(*KeywordMap)["class"] = EHTokClass;
(*KeywordMap)["struct"] = EHTokStruct;
(*KeywordMap)["cbuffer"] = EHTokCBuffer;
+ (*KeywordMap)["ConstantBuffer"] = EHTokConstantBuffer;
(*KeywordMap)["tbuffer"] = EHTokTBuffer;
(*KeywordMap)["typedef"] = EHTokTypedef;
(*KeywordMap)["this"] = EHTokThis;
+ (*KeywordMap)["namespace"] = EHTokNamespace;
(*KeywordMap)["true"] = EHTokBoolConstant;
(*KeywordMap)["false"] = EHTokBoolConstant;
@@ -402,32 +423,6 @@ void HlslScanContext::fillInKeywordMap()
}
(*SemanticMap)["SV_POSITION"] = EbvPosition;
- (*SemanticMap)["SV_CLIPDISTANCE"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE0"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE1"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE2"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE3"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE4"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE5"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE6"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE7"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE8"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE9"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE10"] = EbvClipDistance;
- (*SemanticMap)["SV_CLIPDISTANCE11"] = EbvClipDistance;
- (*SemanticMap)["SV_CULLDISTANCE"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE0"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE1"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE2"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE3"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE4"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE5"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE6"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE7"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE8"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE9"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE10"] = EbvCullDistance;
- (*SemanticMap)["SV_CULLDISTANCE11"] = EbvCullDistance;
(*SemanticMap)["SV_VERTEXID"] = EbvVertexIndex;
(*SemanticMap)["SV_VIEWPORTARRAYINDEX"] = EbvViewportIndex;
(*SemanticMap)["SV_TESSFACTOR"] = EbvTessLevelOuter;
@@ -448,7 +443,7 @@ void HlslScanContext::fillInKeywordMap()
(*SemanticMap)["SV_COVERAGE"] = EbvSampleMask;
(*SemanticMap)["SV_DEPTHGREATEREQUAL"] = EbvFragDepthGreater;
(*SemanticMap)["SV_DEPTHLESSEQUAL"] = EbvFragDepthLesser;
- (*SemanticMap)["SV_STENCILREF"] = EbvStencilRef;
+ (*SemanticMap)["SV_STENCILREF"] = EbvFragStencilRef;
}
void HlslScanContext::deleteKeywordMap()
@@ -771,6 +766,22 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier()
case EHTokFloat4x2:
case EHTokFloat4x3:
case EHTokFloat4x4:
+ case EHTokHalf1x1:
+ case EHTokHalf1x2:
+ case EHTokHalf1x3:
+ case EHTokHalf1x4:
+ case EHTokHalf2x1:
+ case EHTokHalf2x2:
+ case EHTokHalf2x3:
+ case EHTokHalf2x4:
+ case EHTokHalf3x1:
+ case EHTokHalf3x2:
+ case EHTokHalf3x3:
+ case EHTokHalf3x4:
+ case EHTokHalf4x1:
+ case EHTokHalf4x2:
+ case EHTokHalf4x3:
+ case EHTokHalf4x4:
case EHTokDouble1x1:
case EHTokDouble1x2:
case EHTokDouble1x3:
@@ -819,6 +830,9 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier()
case EHTokRWByteAddressBuffer:
case EHTokRWStructuredBuffer:
case EHTokStructuredBuffer:
+ case EHTokTextureBuffer:
+ case EHTokSubpassInput:
+ case EHTokSubpassInputMS:
return keyword;
// variable, user type, ...
@@ -826,8 +840,10 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier()
case EHTokStruct:
case EHTokTypedef:
case EHTokCBuffer:
+ case EHTokConstantBuffer:
case EHTokTBuffer:
case EHTokThis:
+ case EHTokNamespace:
return keyword;
case EHTokBoolConstant:
@@ -876,28 +892,4 @@ EHlslTokenClass HlslScanContext::reservedWord()
return EHTokNone;
}
-EHlslTokenClass HlslScanContext::identifierOrReserved(bool reserved)
-{
- if (reserved) {
- reservedWord();
-
- return EHTokNone;
- }
-
- if (parseContext.forwardCompatible)
- parseContext.warn(loc, "using future reserved keyword", tokenText, "");
-
- return identifierOrType();
-}
-
-// For a keyword that was never reserved, until it suddenly
-// showed up.
-EHlslTokenClass HlslScanContext::nonreservedKeyword(int version)
-{
- if (parseContext.version < version)
- return identifierOrType();
-
- return keyword;
-}
-
} // end namespace glslang
diff --git a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslTokens.h b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslTokens.h
index 9f91906cd38..98450c9a0e2 100644
--- a/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslTokens.h
+++ b/3rdparty/bgfx/3rdparty/glslang/hlsl/hlslTokens.h
@@ -216,6 +216,22 @@ enum EHlslTokenClass {
EHTokFloat4x2,
EHTokFloat4x3,
EHTokFloat4x4,
+ EHTokHalf1x1,
+ EHTokHalf1x2,
+ EHTokHalf1x3,
+ EHTokHalf1x4,
+ EHTokHalf2x1,
+ EHTokHalf2x2,
+ EHTokHalf2x3,
+ EHTokHalf2x4,
+ EHTokHalf3x1,
+ EHTokHalf3x2,
+ EHTokHalf3x3,
+ EHTokHalf3x4,
+ EHTokHalf4x1,
+ EHTokHalf4x2,
+ EHTokHalf4x3,
+ EHTokHalf4x4,
EHTokDouble1x1,
EHTokDouble1x2,
EHTokDouble1x3,
@@ -257,6 +273,8 @@ enum EHlslTokenClass {
EHTokRWTexture2darray,
EHTokRWTexture3d,
EHTokRWBuffer,
+ EHTokSubpassInput,
+ EHTokSubpassInputMS,
// Structure buffer variants
EHTokAppendStructuredBuffer,
@@ -265,6 +283,7 @@ enum EHlslTokenClass {
EHTokRWByteAddressBuffer,
EHTokRWStructuredBuffer,
EHTokStructuredBuffer,
+ EHTokTextureBuffer,
// variable, user type, ...
EHTokIdentifier,
@@ -274,6 +293,8 @@ enum EHlslTokenClass {
EHTokTBuffer,
EHTokTypedef,
EHTokThis,
+ EHTokNamespace,
+ EHTokConstantBuffer,
// constant
EHTokFloatConstant,
diff --git a/3rdparty/bgfx/3rdparty/glslang/known_good.json b/3rdparty/bgfx/3rdparty/glslang/known_good.json
new file mode 100644
index 00000000000..d318235ff24
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/known_good.json
@@ -0,0 +1,18 @@
+{
+ "commits" : [
+ {
+ "name" : "spirv-tools",
+ "site" : "github",
+ "subrepo" : "KhronosGroup/SPIRV-Tools",
+ "subdir" : "External/spirv-tools",
+ "commit" : "ac04b2faeabc15811e8c542a5d7a36dbdba243b8"
+ },
+ {
+ "name" : "spirv-tools/external/spirv-headers",
+ "site" : "github",
+ "subrepo" : "KhronosGroup/SPIRV-Headers",
+ "subdir" : "External/spirv-tools/external/spirv-headers",
+ "commit" : "061097878467b8e040fbf153a837d844ef9f9f96"
+ }
+ ]
+}
diff --git a/3rdparty/bgfx/3rdparty/glslang/update_glslang_sources.py b/3rdparty/bgfx/3rdparty/glslang/update_glslang_sources.py
new file mode 100644
index 00000000000..331a30116c6
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/update_glslang_sources.py
@@ -0,0 +1,151 @@
+#!/usr/bin/env python
+
+# Copyright 2017 The Glslang Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Get source files for Glslang and its dependencies from public repositories.
+"""
+
+from __future__ import print_function
+
+import argparse
+import json
+import distutils.dir_util
+import os.path
+import subprocess
+import sys
+
+KNOWN_GOOD_FILE = 'known_good.json'
+
+# Maps a site name to its hostname.
+SITE_TO_HOST = { 'github' : 'github.com' }
+
+VERBOSE = True
+
+
+def command_output(cmd, directory, fail_ok=False):
+ """Runs a command in a directory and returns its standard output stream.
+
+ Captures the standard error stream.
+
+ Raises a RuntimeError if the command fails to launch or otherwise fails.
+ """
+ if VERBOSE:
+ print('In {d}: {cmd}'.format(d=directory, cmd=cmd))
+ p = subprocess.Popen(cmd,
+ cwd=directory,
+ stdout=subprocess.PIPE)
+ (stdout, _) = p.communicate()
+ if p.returncode != 0 and not fail_ok:
+ raise RuntimeError('Failed to run {} in {}'.format(cmd, directory))
+ if VERBOSE:
+ print(stdout)
+ return stdout
+
+
+def command_retval(cmd, directory):
+ """Runs a command in a directory and returns its return value.
+
+ Captures the standard error stream.
+ """
+ p = subprocess.Popen(cmd,
+ cwd=directory,
+ stdout=subprocess.PIPE)
+ (stdout, _) = p.communicate()
+ return p.returncode
+
+
+class GoodCommit(object):
+ """Represents a good commit for a repository."""
+
+ def __init__(self, json):
+ """Initializes this good commit object.
+
+ Args:
+ 'json': A fully populated JSON object describing the commit.
+ """
+ self._json = json
+ self.name = json['name']
+ self.site = json['site']
+ self.subrepo = json['subrepo']
+ self.subdir = json['subdir'] if ('subdir' in json) else '.'
+ self.commit = json['commit']
+
+ def GetUrl(self, style='https'):
+ """Returns the URL for the repository."""
+ host = SITE_TO_HOST[self.site]
+ sep = '/' if (style is 'https') else ':'
+ return '{style}://{host}{sep}{subrepo}'.format(
+ style=style,
+ host=host,
+ sep=sep,
+ subrepo=self.subrepo)
+
+ def AddRemote(self):
+ """Add the remote 'known-good' if it does not exist."""
+ print('Ignore "fatal" errors for missing known-good remote:')
+ if command_retval(['git', 'remote', 'show', 'known-good'], self.subdir) != 0:
+ command_output(['git', 'remote', 'add', 'known-good', self.GetUrl()], self.subdir)
+
+ def HasCommit(self):
+ """Check if the repository contains the known-good commit."""
+ return 0 == subprocess.call(['git', 'rev-parse', '--verify', '--quiet',
+ self.commit + "^{commit}"],
+ cwd=self.subdir)
+
+ def Clone(self):
+ distutils.dir_util.mkpath(self.subdir)
+ command_output(['git', 'clone', self.GetUrl(), '.'], self.subdir)
+
+ def Fetch(self):
+ command_output(['git', 'fetch', 'known-good'], self.subdir)
+
+ def Checkout(self):
+ if not os.path.exists(os.path.join(self.subdir,'.git')):
+ self.Clone()
+ self.AddRemote()
+ if not self.HasCommit():
+ self.Fetch()
+ command_output(['git', 'checkout', self.commit], self.subdir)
+
+
+def GetGoodCommits():
+ """Returns the latest list of GoodCommit objects."""
+ with open(KNOWN_GOOD_FILE) as known_good:
+ return [GoodCommit(c) for c in json.loads(known_good.read())['commits']]
+
+
+def main():
+ parser = argparse.ArgumentParser(description='Get Glslang source dependencies at a known-good commit')
+ parser.add_argument('--dir', dest='dir', default='.',
+ help="Set target directory for Glslang source root. Default is \'.\'.")
+
+ args = parser.parse_args()
+
+ commits = GetGoodCommits()
+
+ distutils.dir_util.mkpath(args.dir)
+ print('Change directory to {d}'.format(d=args.dir))
+ os.chdir(args.dir)
+
+ # Create the subdirectories in sorted order so that parent git repositories
+ # are created first.
+ for c in sorted(commits, key=lambda x: x.subdir):
+ print('Get {n}\n'.format(n=c.name))
+ c.Checkout()
+ sys.exit(0)
+
+
+if __name__ == '__main__':
+ main()