Branimir Karadžić 7 лет назад
Родитель
Сommit
70688b76bc
28 измененных файлов с 720 добавлено и 466 удалено
  1. 11 5
      3rdparty/glslang/.travis.yml
  2. 7 6
      3rdparty/glslang/StandAlone/StandAlone.cpp
  3. 1 1
      3rdparty/glslang/Test/baseResults/120.frag.out
  4. 22 22
      3rdparty/glslang/Test/baseResults/hlsl.automap.frag.out
  5. 12 12
      3rdparty/glslang/Test/baseResults/hlsl.reflection.binding.frag.out
  6. 69 69
      3rdparty/glslang/Test/baseResults/hlsl.reflection.vert.out
  7. 22 22
      3rdparty/glslang/Test/baseResults/hlsl.shift.per-set.frag.out
  8. 218 0
      3rdparty/glslang/Test/baseResults/hlsl.staticFuncInit.frag.out
  9. 100 100
      3rdparty/glslang/Test/baseResults/reflection.vert.out
  10. 20 20
      3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error-int.frag.out
  11. 20 20
      3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error-uint.frag.out
  12. 22 22
      3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error.frag.out
  13. 20 20
      3rdparty/glslang/Test/baseResults/spv.8bitstorage_Error-int.frag.out
  14. 20 20
      3rdparty/glslang/Test/baseResults/spv.8bitstorage_Error-uint.frag.out
  15. 20 0
      3rdparty/glslang/Test/hlsl.staticFuncInit.frag
  16. 1 1
      3rdparty/glslang/glslang/Include/revision.h
  17. 61 88
      3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp
  18. 1 0
      3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp
  19. 31 16
      3rdparty/glslang/glslang/MachineIndependent/Versions.cpp
  20. 3 0
      3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp
  21. 3 3
      3rdparty/glslang/glslang/MachineIndependent/parseVersions.h
  22. 9 0
      3rdparty/glslang/glslang/MachineIndependent/reflection.cpp
  23. 5 3
      3rdparty/glslang/glslang/MachineIndependent/reflection.h
  24. 1 0
      3rdparty/glslang/glslang/Public/ShaderLang.h
  25. 1 0
      3rdparty/glslang/gtests/Hlsl.FromFile.cpp
  26. 16 15
      3rdparty/glslang/hlsl/hlslGrammar.cpp
  27. 2 1
      3rdparty/glslang/hlsl/hlslGrammar.h
  28. 2 0
      3rdparty/glslang/hlsl/hlslParseHelper.cpp

+ 11 - 5
3rdparty/glslang/.travis.yml

@@ -48,12 +48,16 @@ install:
   - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "clang" ]]; then
   - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "clang" ]]; then
       export CC=clang-3.6 CXX=clang++-3.6;
       export CC=clang-3.6 CXX=clang++-3.6;
     fi
     fi
-  # Download Android NDK and Android CMake toolchain file.
+  # Download a recent Android NDK and use its android.toolchain.cmake file.
   - if [[ "$BUILD_NDK" == "ON" ]]; then
   - 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;
       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;
+      git init $ANDROID_NDK;
+      pushd $ANDROID_NDK;
+        git remote add dneto0 https://github.com/dneto0/android-ndk.git;
+        git fetch --depth=1 dneto0 r17b-strip;
+        git checkout FETCH_HEAD;
+      popd;
+      export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake;
     fi
     fi
 
 
 before_script:
 before_script:
@@ -63,10 +67,12 @@ before_script:
 script:
 script:
   - mkdir build && cd build
   - mkdir build && cd build
   # For Android, do release building using NDK without testing.
   # For Android, do release building using NDK without testing.
+  # Use android-14, the oldest native API level supporeted by NDK r17b.
+  # We can use newer API levels if we want.
   # For Linux and macOS, do debug/release building with testing.
   # For Linux and macOS, do debug/release building with testing.
   - if [[ "$BUILD_NDK" == "ON" ]]; then
   - if [[ "$BUILD_NDK" == "ON" ]]; then
       cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH}
       cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH}
-            -DANDROID_NATIVE_API_LEVEL=android-12
+            -DANDROID_NATIVE_API_LEVEL=android-14
             -DCMAKE_BUILD_TYPE=Release
             -DCMAKE_BUILD_TYPE=Release
             -DANDROID_ABI="armeabi-v7a with NEON"
             -DANDROID_ABI="armeabi-v7a with NEON"
             -DBUILD_TESTING=OFF ..;
             -DBUILD_TESTING=OFF ..;

+ 7 - 6
3rdparty/glslang/StandAlone/StandAlone.cpp

@@ -737,17 +737,18 @@ void CompileShaders(glslang::TWorklist& worklist)
 
 
     glslang::TWorkItem* workItem;
     glslang::TWorkItem* workItem;
     if (Options & EOptionStdin) {
     if (Options & EOptionStdin) {
-        worklist.remove(workItem);
-        ShHandle compiler = ShConstructCompiler(FindLanguage("stdin"), Options);
-        if (compiler == 0)
-            return;
+        if (worklist.remove(workItem)) {
+            ShHandle compiler = ShConstructCompiler(FindLanguage("stdin"), Options);
+            if (compiler == nullptr)
+                return;
 
 
-        CompileFile("stdin", compiler);
+            CompileFile("stdin", compiler);
 
 
             if (! (Options & EOptionSuppressInfolog))
             if (! (Options & EOptionSuppressInfolog))
                 workItem->results = ShGetInfoLog(compiler);
                 workItem->results = ShGetInfoLog(compiler);
 
 
-        ShDestruct(compiler);
+            ShDestruct(compiler);
+        }
     } else {
     } else {
         while (worklist.remove(workItem)) {
         while (worklist.remove(workItem)) {
             ShHandle compiler = ShConstructCompiler(FindLanguage(workItem->name), Options);
             ShHandle compiler = ShConstructCompiler(FindLanguage(workItem->name), Options);

+ 1 - 1
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: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: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: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: 'explicit types' : required extension not requested: Possible extensions include:
+ERROR: 0:248: 'half floating-point suffix' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16

+ 22 - 22
3rdparty/glslang/Test/baseResults/hlsl.automap.frag.out

@@ -1,29 +1,29 @@
 hlsl.automap.frag
 hlsl.automap.frag
 Uniform reflection:
 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
+t1: offset -1, type 8b5d, size 1, index -1, binding 11, stages 16
+t2: offset -1, type 8b5e, size 1, index -1, binding 12, stages 16
+t3: offset -1, type 8b5f, size 1, index -1, binding 13, stages 16
+t4.@data: offset 0, type 8b52, size 1, index 0, binding -1, stages 16
+t5.@data: offset 0, type 1405, size 0, index 1, binding -1, stages 16
+t6: offset -1, type 8dc2, size 1, index -1, binding 16, stages 16
+s1: offset -1, type 0, size 1, index -1, binding 31, stages 16
+s2: offset -1, type 0, size 1, index -1, binding 32, stages 16
+u1: offset -1, type 904c, size 1, index -1, binding 41, stages 16
+u2: offset -1, type 904d, size 1, index -1, binding 42, stages 16
+u3: offset -1, type 904e, size 1, index -1, binding 43, stages 16
+u4: offset -1, type 9051, size 1, index -1, binding 44, stages 16
+u5.@data: offset 0, type 1405, size 0, index 2, binding -1, stages 16
+u6.@data: offset 0, type 1406, size 1, index 3, binding -1, stages 16
+cb1: offset 0, type 1404, size 1, index 4, binding -1, stages 16
+tb1: offset 0, type 1404, size 1, index 5, binding -1, stages 16
 
 
 Uniform block reflection:
 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
+t4: offset -1, type ffffffff, size 0, index -1, binding 14, stages 0
+t5: offset -1, type ffffffff, size 0, index -1, binding 15, stages 0
+u5: offset -1, type ffffffff, size 0, index -1, binding 45, stages 0
+u6: offset -1, type ffffffff, size 0, index -1, binding 46, stages 0
+cb: offset -1, type ffffffff, size 4, index -1, binding 51, stages 0
+tb: offset -1, type ffffffff, size 4, index -1, binding 17, stages 0
 
 
 Vertex attribute reflection:
 Vertex attribute reflection:
 
 

+ 12 - 12
3rdparty/glslang/Test/baseResults/hlsl.reflection.binding.frag.out

@@ -1,19 +1,19 @@
 hlsl.reflection.binding.frag
 hlsl.reflection.binding.frag
 Uniform reflection:
 Uniform reflection:
-t1: offset -1, type 8b5d, size 1, index -1, binding 15
-s1: offset -1, type 0, size 1, index -1, binding 5
-t1a: offset -1, type 8b5d, size 1, index -1, binding 16
-s1a: offset -1, type 0, size 1, index -1, binding 6
-c1_a: offset 0, type 8b52, size 1, index 0, binding -1
-c1_b: offset 16, type 1404, size 1, index 0, binding -1
-c1_c: offset 20, type 1406, size 1, index 0, binding -1
-c2_a: offset 0, type 8b52, size 1, index 1, binding -1
-c2_b: offset 16, type 1404, size 1, index 1, binding -1
-c2_c: offset 20, type 1406, size 1, index 1, binding -1
+t1: offset -1, type 8b5d, size 1, index -1, binding 15, stages 16
+s1: offset -1, type 0, size 1, index -1, binding 5, stages 16
+t1a: offset -1, type 8b5d, size 1, index -1, binding 16, stages 16
+s1a: offset -1, type 0, size 1, index -1, binding 6, stages 16
+c1_a: offset 0, type 8b52, size 1, index 0, binding -1, stages 16
+c1_b: offset 16, type 1404, size 1, index 0, binding -1, stages 16
+c1_c: offset 20, type 1406, size 1, index 0, binding -1, stages 16
+c2_a: offset 0, type 8b52, size 1, index 1, binding -1, stages 16
+c2_b: offset 16, type 1404, size 1, index 1, binding -1, stages 16
+c2_c: offset 20, type 1406, size 1, index 1, binding -1, stages 16
 
 
 Uniform block reflection:
 Uniform block reflection:
-cbuff1: offset -1, type ffffffff, size 24, index -1, binding 2
-cbuff2: offset -1, type ffffffff, size 24, index -1, binding 3
+cbuff1: offset -1, type ffffffff, size 24, index -1, binding 2, stages 0
+cbuff2: offset -1, type ffffffff, size 24, index -1, binding 3, stages 0
 
 
 Vertex attribute reflection:
 Vertex attribute reflection:
 
 

+ 69 - 69
3rdparty/glslang/Test/baseResults/hlsl.reflection.vert.out

@@ -1,76 +1,76 @@
 hlsl.reflection.vert
 hlsl.reflection.vert
 Uniform reflection:
 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
-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 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
-m22: offset 208, type 8b5a, size 9, index 0, binding -1
-dm22: offset 32, type 8b5a, size 4, index 1, 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
-deepB.d2.d1[1].va: offset 984, type 8b50, size 2, index 1, binding -1
-deepB.d2.d1[2].va: offset 984, type 8b50, size 2, index 1, binding -1
-deepB.d2.d1[3].va: offset 984, type 8b50, size 2, index 1, binding -1
-deepC.iv4: offset 1568, type 8b52, size 1, index 1, binding -1
-deepC.d2.i: offset 1568, type 1404, size 1, index 1, binding -1
-deepC.d2.d1[0].va: offset 1568, type 8b50, size 3, index 1, binding -1
-deepC.d2.d1[0].b: offset 1568, type 8b56, size 1, index 1, binding -1
-deepC.d2.d1[1].va: offset 1568, type 8b50, size 3, index 1, binding -1
-deepC.d2.d1[1].b: offset 1568, type 8b56, size 1, index 1, binding -1
-deepC.d2.d1[2].va: offset 1568, type 8b50, size 3, index 1, binding -1
-deepC.d2.d1[2].b: offset 1568, type 8b56, size 1, index 1, binding -1
-deepC.d2.d1[3].va: offset 1568, type 8b50, size 3, index 1, binding -1
-deepC.d2.d1[3].b: offset 1568, type 8b56, size 1, index 1, binding -1
-deepC.v3: offset 1568, type 8b54, size 1, index 1, binding -1
-deepD[0].iv4: offset 2480, type 8b52, size 1, index 1, binding -1
-deepD[0].d2.i: offset 2480, type 1404, size 1, index 1, binding -1
-deepD[0].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1, binding -1
-deepD[0].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1, binding -1
-deepD[0].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1, binding -1
-deepD[0].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1, binding -1
-deepD[0].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1, binding -1
-deepD[0].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1, binding -1
-deepD[0].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1, binding -1
-deepD[0].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1, binding -1
-deepD[0].v3: offset 2480, type 8b54, size 1, index 1, binding -1
-deepD[1].iv4: offset 2480, type 8b52, size 1, index 1, binding -1
-deepD[1].d2.i: offset 2480, type 1404, size 1, index 1, binding -1
-deepD[1].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1, binding -1
-deepD[1].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1, binding -1
-deepD[1].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1, binding -1
-deepD[1].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1, binding -1
-deepD[1].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1, binding -1
-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
-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
+anonMember3: offset 80, type 8b52, size 1, index 0, binding -1, stages 1
+s.a: offset 0, type 1404, size 1, index 1, binding -1, stages 1
+m23: offset 16, type 8b67, size 1, index 0, binding -1, stages 1
+scalarAfterm23: offset 48, type 1404, size 1, index 0, binding -1, stages 1
+c_m23: offset 16, type 8b67, size 1, index 2, binding -1, stages 1
+c_scalarAfterm23: offset 48, type 1404, size 1, index 2, binding -1, stages 1
+scalarBeforeArray: offset 96, type 1404, size 1, index 0, binding -1, stages 1
+floatArray: offset 112, type 1406, size 5, index 0, binding -1, stages 1
+scalarAfterArray: offset 192, type 1404, size 1, index 0, binding -1, stages 1
+m22: offset 208, type 8b5a, size 9, index 0, binding -1, stages 1
+dm22: offset 32, type 8b5a, size 4, index 1, binding -1, stages 1
+foo.n1.a: offset 0, type 1406, size 1, index 3, binding -1, stages 1
+foo.n2.b: offset 16, type 1406, size 1, index 3, binding -1, stages 1
+foo.n2.c: offset 20, type 1406, size 1, index 3, binding -1, stages 1
+foo.n2.d: offset 24, type 1406, size 1, index 3, binding -1, stages 1
+deepA.d2.d1[2].va: offset 376, type 8b50, size 2, index 1, binding -1, stages 1
+deepB.d2.d1.va: offset 984, type 8b50, size 2, index 1, binding -1, stages 1
+deepB.d2.d1[0].va: offset 984, type 8b50, size 2, index 1, binding -1, stages 1
+deepB.d2.d1[1].va: offset 984, type 8b50, size 2, index 1, binding -1, stages 1
+deepB.d2.d1[2].va: offset 984, type 8b50, size 2, index 1, binding -1, stages 1
+deepB.d2.d1[3].va: offset 984, type 8b50, size 2, index 1, binding -1, stages 1
+deepC.iv4: offset 1568, type 8b52, size 1, index 1, binding -1, stages 1
+deepC.d2.i: offset 1568, type 1404, size 1, index 1, binding -1, stages 1
+deepC.d2.d1[0].va: offset 1568, type 8b50, size 3, index 1, binding -1, stages 1
+deepC.d2.d1[0].b: offset 1568, type 8b56, size 1, index 1, binding -1, stages 1
+deepC.d2.d1[1].va: offset 1568, type 8b50, size 3, index 1, binding -1, stages 1
+deepC.d2.d1[1].b: offset 1568, type 8b56, size 1, index 1, binding -1, stages 1
+deepC.d2.d1[2].va: offset 1568, type 8b50, size 3, index 1, binding -1, stages 1
+deepC.d2.d1[2].b: offset 1568, type 8b56, size 1, index 1, binding -1, stages 1
+deepC.d2.d1[3].va: offset 1568, type 8b50, size 3, index 1, binding -1, stages 1
+deepC.d2.d1[3].b: offset 1568, type 8b56, size 1, index 1, binding -1, stages 1
+deepC.v3: offset 1568, type 8b54, size 1, index 1, binding -1, stages 1
+deepD[0].iv4: offset 2480, type 8b52, size 1, index 1, binding -1, stages 1
+deepD[0].d2.i: offset 2480, type 1404, size 1, index 1, binding -1, stages 1
+deepD[0].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1, binding -1, stages 1
+deepD[0].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1, binding -1, stages 1
+deepD[0].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1, binding -1, stages 1
+deepD[0].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1, binding -1, stages 1
+deepD[0].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1, binding -1, stages 1
+deepD[0].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1, binding -1, stages 1
+deepD[0].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1, binding -1, stages 1
+deepD[0].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1, binding -1, stages 1
+deepD[0].v3: offset 2480, type 8b54, size 1, index 1, binding -1, stages 1
+deepD[1].iv4: offset 2480, type 8b52, size 1, index 1, binding -1, stages 1
+deepD[1].d2.i: offset 2480, type 1404, size 1, index 1, binding -1, stages 1
+deepD[1].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1, binding -1, stages 1
+deepD[1].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1, binding -1, stages 1
+deepD[1].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1, binding -1, stages 1
+deepD[1].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1, binding -1, stages 1
+deepD[1].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1, binding -1, stages 1
+deepD[1].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1, binding -1, stages 1
+deepD[1].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1, binding -1, stages 1
+deepD[1].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1, binding -1, stages 1
+deepD[1].v3: offset 2480, type 8b54, size 1, index 1, binding -1, stages 1
+foo1: offset 0, type 1406, size 1, index 4, binding -1, stages 1
+foo2: offset 0, type 1406, size 1, index 5, binding -1, stages 1
+anonMember1: offset 0, type 8b51, size 1, index 0, binding -1, stages 1
+uf1: offset 16, type 1406, size 1, index 1, binding -1, stages 1
 
 
 Uniform block reflection:
 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
-c_nameless: offset -1, type ffffffff, size 96, 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
+nameless: offset -1, type ffffffff, size 496, index -1, binding -1, stages 0
+$Global: offset -1, type ffffffff, size 3088, index -1, binding -1, stages 0
+c_nameless: offset -1, type ffffffff, size 96, index -1, binding -1, stages 0
+nested: offset -1, type ffffffff, size 32, index -1, binding -1, stages 0
+abl: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+abl2: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
 
 
 Vertex attribute reflection:
 Vertex attribute reflection:
-attributeFloat: offset 0, type 1406, size 0, index 0, binding -1
-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
+attributeFloat: offset 0, type 1406, size 0, index 0, binding -1, stages 0
+attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1, stages 0
+attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1, stages 0
+attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1, stages 0
+attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1, stages 0
 
 

+ 22 - 22
3rdparty/glslang/Test/baseResults/hlsl.shift.per-set.frag.out

@@ -196,30 +196,30 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 Uniform reflection:
 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
+t1: offset -1, type 8b5d, size 1, index -1, binding 21, stages 16
+t2: offset -1, type 8b5e, size 1, index -1, binding 22, stages 16
+t3: offset -1, type 8b5f, size 1, index -1, binding 26, stages 16
+t4.@data: offset 0, type 8b52, size 1, index 0, binding -1, stages 16
+t5.@data: offset 0, type 1405, size 0, index 1, binding -1, stages 16
+t6: offset -1, type 8dc2, size 1, index -1, binding 23, stages 16
+s1: offset -1, type 0, size 1, index -1, binding 11, stages 16
+s2: offset -1, type 0, size 1, index -1, binding 17, stages 16
+u1: offset -1, type 904c, size 1, index -1, binding 31, stages 16
+u2: offset -1, type 904d, size 1, index -1, binding 42, stages 16
+u3: offset -1, type 904e, size 1, index -1, binding 43, stages 16
+u4: offset -1, type 9051, size 1, index -1, binding 34, stages 16
+u5.@data: offset 0, type 1405, size 0, index 2, binding -1, stages 16
+u6.@data: offset 0, type 1406, size 1, index 3, binding -1, stages 16
+cb1: offset 0, type 1404, size 1, index 4, binding -1, stages 16
+tb1: offset 0, type 1404, size 1, index 5, binding -1, stages 16
 
 
 Uniform block reflection:
 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
+t4: offset -1, type ffffffff, size 0, index -1, binding 21, stages 0
+t5: offset -1, type ffffffff, size 0, index -1, binding 22, stages 0
+u5: offset -1, type ffffffff, size 0, index -1, binding 44, stages 0
+u6: offset -1, type ffffffff, size 0, index -1, binding 34, stages 0
+cb: offset -1, type ffffffff, size 4, index -1, binding 51, stages 0
+tb: offset -1, type ffffffff, size 4, index -1, binding 27, stages 0
 
 
 Vertex attribute reflection:
 Vertex attribute reflection:
 
 

+ 218 - 0
3rdparty/glslang/Test/baseResults/hlsl.staticFuncInit.frag.out

@@ -0,0 +1,218 @@
+hlsl.staticFuncInit.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:12Sequence
+0:1  Sequence
+0:1    move second child to first child ( temp float)
+0:1      'x' ( global float)
+0:1      Constant:
+0:1        1.000000
+0:5  Sequence
+0:5    move second child to first child ( temp float)
+0:5      'x' ( global float)
+0:5      Constant:
+0:5        2.000000
+0:4  Function Definition: f1( ( temp float)
+0:4    Function Parameters: 
+0:?     Sequence
+0:6      add second child into first child ( temp float)
+0:6        'x' ( global float)
+0:6        Constant:
+0:6          10.000000
+0:7      Branch: Return with expression
+0:7        'x' ( global float)
+0:12  Sequence
+0:12    move second child to first child ( temp float)
+0:12      'x' ( global float)
+0:12      Constant:
+0:12        7.000000
+0:11  Function Definition: f2(f1; ( temp float)
+0:11    Function Parameters: 
+0:11      'p' ( in float)
+0:?     Sequence
+0:13      add second child into first child ( temp float)
+0:13        'x' ( global float)
+0:13        'p' ( in float)
+0:14      Branch: Return with expression
+0:14        'x' ( global float)
+0:18  Function Definition: @main( ( temp 4-component vector of float)
+0:18    Function Parameters: 
+0:?     Sequence
+0:19      Branch: Return with expression
+0:19        Construct vec4 ( temp 4-component vector of float)
+0:19          add ( temp float)
+0:19            add ( temp float)
+0:19              add ( temp float)
+0:19                add ( temp float)
+0:19                  'x' ( global float)
+0:19                  Function Call: f1( ( temp float)
+0:19                Function Call: f1( ( temp float)
+0:19              Function Call: f2(f1; ( temp float)
+0:19                Constant:
+0:19                  5.000000
+0:19            Function Call: f2(f1; ( temp float)
+0:19              'x' ( global float)
+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:?     'x' ( 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:12Sequence
+0:1  Sequence
+0:1    move second child to first child ( temp float)
+0:1      'x' ( global float)
+0:1      Constant:
+0:1        1.000000
+0:5  Sequence
+0:5    move second child to first child ( temp float)
+0:5      'x' ( global float)
+0:5      Constant:
+0:5        2.000000
+0:4  Function Definition: f1( ( temp float)
+0:4    Function Parameters: 
+0:?     Sequence
+0:6      add second child into first child ( temp float)
+0:6        'x' ( global float)
+0:6        Constant:
+0:6          10.000000
+0:7      Branch: Return with expression
+0:7        'x' ( global float)
+0:12  Sequence
+0:12    move second child to first child ( temp float)
+0:12      'x' ( global float)
+0:12      Constant:
+0:12        7.000000
+0:11  Function Definition: f2(f1; ( temp float)
+0:11    Function Parameters: 
+0:11      'p' ( in float)
+0:?     Sequence
+0:13      add second child into first child ( temp float)
+0:13        'x' ( global float)
+0:13        'p' ( in float)
+0:14      Branch: Return with expression
+0:14        'x' ( global float)
+0:18  Function Definition: @main( ( temp 4-component vector of float)
+0:18    Function Parameters: 
+0:?     Sequence
+0:19      Branch: Return with expression
+0:19        Construct vec4 ( temp 4-component vector of float)
+0:19          add ( temp float)
+0:19            add ( temp float)
+0:19              add ( temp float)
+0:19                add ( temp float)
+0:19                  'x' ( global float)
+0:19                  Function Call: f1( ( temp float)
+0:19                Function Call: f1( ( temp float)
+0:19              Function Call: f2(f1; ( temp float)
+0:19                Constant:
+0:19                  5.000000
+0:19            Function Call: f2(f1; ( temp float)
+0:19              'x' ( global float)
+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:?     'x' ( global float)
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80007
+// Id's are bound by 57
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 55
+                              ExecutionMode 4 OriginUpperLeft
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 8  "f1("
+                              Name 13  "f2(f1;"
+                              Name 12  "p"
+                              Name 17  "@main("
+                              Name 20  "x"
+                              Name 22  "x"
+                              Name 24  "x"
+                              Name 44  "param"
+                              Name 47  "param"
+                              Name 55  "@entryPointOutput"
+                              Decorate 55(@entryPointOutput) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeFunction 6(float)
+              10:             TypePointer Function 6(float)
+              11:             TypeFunction 6(float) 10(ptr)
+              15:             TypeVector 6(float) 4
+              16:             TypeFunction 15(fvec4)
+              19:             TypePointer Private 6(float)
+           20(x):     19(ptr) Variable Private
+              21:    6(float) Constant 1065353216
+           22(x):     19(ptr) Variable Private
+              23:    6(float) Constant 1073741824
+           24(x):     19(ptr) Variable Private
+              25:    6(float) Constant 1088421888
+              26:    6(float) Constant 1092616192
+              43:    6(float) Constant 1084227584
+              54:             TypePointer Output 15(fvec4)
+55(@entryPointOutput):     54(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 20(x) 21
+                              Store 22(x) 23
+                              Store 24(x) 25
+              56:   15(fvec4) FunctionCall 17(@main()
+                              Store 55(@entryPointOutput) 56
+                              Return
+                              FunctionEnd
+          8(f1():    6(float) Function None 7
+               9:             Label
+              27:    6(float) Load 22(x)
+              28:    6(float) FAdd 27 26
+                              Store 22(x) 28
+              29:    6(float) Load 22(x)
+                              ReturnValue 29
+                              FunctionEnd
+      13(f2(f1;):    6(float) Function None 11
+           12(p):     10(ptr) FunctionParameter
+              14:             Label
+              32:    6(float) Load 12(p)
+              33:    6(float) Load 24(x)
+              34:    6(float) FAdd 33 32
+                              Store 24(x) 34
+              35:    6(float) Load 24(x)
+                              ReturnValue 35
+                              FunctionEnd
+      17(@main():   15(fvec4) Function None 16
+              18:             Label
+       44(param):     10(ptr) Variable Function
+       47(param):     10(ptr) Variable Function
+              38:    6(float) Load 20(x)
+              39:    6(float) FunctionCall 8(f1()
+              40:    6(float) FAdd 38 39
+              41:    6(float) FunctionCall 8(f1()
+              42:    6(float) FAdd 40 41
+                              Store 44(param) 43
+              45:    6(float) FunctionCall 13(f2(f1;) 44(param)
+              46:    6(float) FAdd 42 45
+              48:    6(float) Load 20(x)
+                              Store 47(param) 48
+              49:    6(float) FunctionCall 13(f2(f1;) 47(param)
+              50:    6(float) FAdd 46 49
+              51:   15(fvec4) CompositeConstruct 50 50 50 50
+                              ReturnValue 51
+                              FunctionEnd

+ 100 - 100
3rdparty/glslang/Test/baseResults/reflection.vert.out

@@ -1,107 +1,107 @@
 reflection.vert
 reflection.vert
 Uniform reflection:
 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
-sampler_2DMSArray: offset -1, type 910b, size 1, index -1, binding -1
-anonMember3: offset 80, type 8b52, size 1, index 0, binding -1
-s.a: offset -1, type 1404, size 1, index -1, binding -1
-named.scalar: offset 12, type 1404, size 1, index 1, 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 2, binding -1
-c_scalarAfterm23: offset 64, 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
-named.memvec2: offset 48, type 8b50, size 1, index 1, binding -1
-named.memf1: offset 56, type 1406, size 1, index 1, binding -1
-named.memf2: offset 60, type 8b56, size 1, index 1, binding -1
-named.memf3: offset 64, type 1404, size 1, index 1, binding -1
-named.memvec2a: offset 72, type 8b50, size 1, index 1, binding -1
-named.m22: offset 80, type 8b5a, size 7, index 1, binding -1
-dm22: offset -1, type 8b5a, size 4, index -1, binding -1
-m22: offset 208, type 8b5a, size 3, index 0, binding -1
-nested.foo.n1.a: offset 0, type 1406, size 1, index 3, binding -1
-nested.foo.n2.b: offset 16, type 1406, size 1, index 3, binding -1
-nested.foo.n2.c: offset 20, type 1406, size 1, index 3, binding -1
-nested.foo.n2.d: offset 24, type 1406, size 1, index 3, binding -1
-deepA[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1
-deepA[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1
-deepB[1].d2.d1[0].va: offset -1, type 8b50, size 2, index -1, binding -1
-deepB[1].d2.d1[1].va: offset -1, type 8b50, size 2, index -1, binding -1
-deepB[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1
-deepB[1].d2.d1[3].va: offset -1, type 8b50, size 2, index -1, binding -1
-deepB[0].d2.d1[0].va: offset -1, type 8b50, size 2, index -1, binding -1
-deepB[0].d2.d1[1].va: offset -1, type 8b50, size 2, index -1, binding -1
-deepB[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1
-deepB[0].d2.d1[3].va: offset -1, type 8b50, size 2, index -1, binding -1
-deepC[1].iv4: offset -1, type 8b52, size 1, index -1, binding -1
-deepC[1].d2.i: offset -1, type 1404, size 1, index -1, binding -1
-deepC[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepC[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepC[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepC[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepC[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepC[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepC[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepC[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepC[1].v3: offset -1, type 8b54, size 1, index -1, binding -1
-deepD[0].iv4: offset -1, type 8b52, size 1, index -1, binding -1
-deepD[0].d2.i: offset -1, type 1404, size 1, index -1, binding -1
-deepD[0].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepD[0].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepD[0].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepD[0].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepD[0].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepD[0].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepD[0].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepD[0].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepD[0].v3: offset -1, type 8b54, size 1, index -1, binding -1
-deepD[1].iv4: offset -1, type 8b52, size 1, index -1, binding -1
-deepD[1].d2.i: offset -1, type 1404, size 1, index -1, binding -1
-deepD[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepD[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepD[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepD[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepD[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1
-deepD[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1
-deepD[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1
-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
-named.member3: offset 32, type 8b52, size 1, index 1, binding -1
+image_ui2D: offset -1, type 9063, size 1, index -1, binding -1, stages 1
+sampler_2D: offset -1, type 8b5e, size 1, index -1, binding -1, stages 1
+sampler_2DMSArray: offset -1, type 910b, size 1, index -1, binding -1, stages 1
+anonMember3: offset 80, type 8b52, size 1, index 0, binding -1, stages 1
+s.a: offset -1, type 1404, size 1, index -1, binding -1, stages 1
+named.scalar: offset 12, type 1404, size 1, index 1, binding -1, stages 1
+m23: offset 16, type 8b67, size 1, index 0, binding -1, stages 1
+scalarAfterm23: offset 48, type 1404, size 1, index 0, binding -1, stages 1
+c_m23: offset 16, type 8b67, size 1, index 2, binding -1, stages 1
+c_scalarAfterm23: offset 64, type 1404, size 1, index 2, binding -1, stages 1
+scalarBeforeArray: offset 96, type 1404, size 1, index 0, binding -1, stages 1
+floatArray: offset 112, type 1406, size 5, index 0, binding -1, stages 1
+scalarAfterArray: offset 192, type 1404, size 1, index 0, binding -1, stages 1
+named.memvec2: offset 48, type 8b50, size 1, index 1, binding -1, stages 1
+named.memf1: offset 56, type 1406, size 1, index 1, binding -1, stages 1
+named.memf2: offset 60, type 8b56, size 1, index 1, binding -1, stages 1
+named.memf3: offset 64, type 1404, size 1, index 1, binding -1, stages 1
+named.memvec2a: offset 72, type 8b50, size 1, index 1, binding -1, stages 1
+named.m22: offset 80, type 8b5a, size 7, index 1, binding -1, stages 1
+dm22: offset -1, type 8b5a, size 4, index -1, binding -1, stages 1
+m22: offset 208, type 8b5a, size 3, index 0, binding -1, stages 1
+nested.foo.n1.a: offset 0, type 1406, size 1, index 3, binding -1, stages 1
+nested.foo.n2.b: offset 16, type 1406, size 1, index 3, binding -1, stages 1
+nested.foo.n2.c: offset 20, type 1406, size 1, index 3, binding -1, stages 1
+nested.foo.n2.d: offset 24, type 1406, size 1, index 3, binding -1, stages 1
+deepA[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1
+deepA[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1
+deepB[1].d2.d1[0].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1
+deepB[1].d2.d1[1].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1
+deepB[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1
+deepB[1].d2.d1[3].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1
+deepB[0].d2.d1[0].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1
+deepB[0].d2.d1[1].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1
+deepB[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1
+deepB[0].d2.d1[3].va: offset -1, type 8b50, size 2, index -1, binding -1, stages 1
+deepC[1].iv4: offset -1, type 8b52, size 1, index -1, binding -1, stages 1
+deepC[1].d2.i: offset -1, type 1404, size 1, index -1, binding -1, stages 1
+deepC[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepC[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepC[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepC[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepC[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepC[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepC[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepC[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepC[1].v3: offset -1, type 8b54, size 1, index -1, binding -1, stages 1
+deepD[0].iv4: offset -1, type 8b52, size 1, index -1, binding -1, stages 1
+deepD[0].d2.i: offset -1, type 1404, size 1, index -1, binding -1, stages 1
+deepD[0].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepD[0].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepD[0].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepD[0].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepD[0].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepD[0].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepD[0].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepD[0].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepD[0].v3: offset -1, type 8b54, size 1, index -1, binding -1, stages 1
+deepD[1].iv4: offset -1, type 8b52, size 1, index -1, binding -1, stages 1
+deepD[1].d2.i: offset -1, type 1404, size 1, index -1, binding -1, stages 1
+deepD[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepD[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepD[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepD[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepD[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepD[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepD[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1, stages 1
+deepD[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1, stages 1
+deepD[1].v3: offset -1, type 8b54, size 1, index -1, binding -1, stages 1
+abl.foo: offset 0, type 1406, size 1, index 7, binding -1, stages 1
+abl2.foo: offset 0, type 1406, size 1, index 11, binding -1, stages 1
+buf1.runtimeArray: offset 4, type 1406, size 4, index 12, binding -1, stages 1
+buf2.runtimeArray.c: offset 8, type 1406, size 1, index 13, binding -1, stages 1
+buf3.runtimeArray: offset 4, type 1406, size 0, index 14, binding -1, stages 1
+buf4.runtimeArray.c: offset 8, type 1406, size 1, index 15, binding -1, stages 1
+anonMember1: offset 0, type 8b51, size 1, index 0, binding -1, stages 1
+uf1: offset -1, type 1406, size 1, index -1, binding -1, stages 1
+uf2: offset -1, type 1406, size 1, index -1, binding -1, stages 1
+named.member3: offset 32, type 8b52, size 1, index 1, binding -1, stages 1
 
 
 Uniform block reflection:
 Uniform block reflection:
-nameless: offset -1, type ffffffff, size 496, index -1, binding -1
-named: offset -1, type ffffffff, size 304, index -1, binding -1
-c_nameless: offset -1, type ffffffff, size 112, index -1, binding -1
-nested: offset -1, type ffffffff, size 32, index -1, binding -1
-abl[0]: offset -1, type ffffffff, size 4, index -1, binding -1
-abl[1]: offset -1, type ffffffff, size 4, index -1, binding -1
-abl[2]: offset -1, type ffffffff, size 4, index -1, binding -1
-abl[3]: offset -1, type ffffffff, size 4, index -1, binding -1
-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
+nameless: offset -1, type ffffffff, size 496, index -1, binding -1, stages 0
+named: offset -1, type ffffffff, size 304, index -1, binding -1, stages 0
+c_nameless: offset -1, type ffffffff, size 112, index -1, binding -1, stages 0
+nested: offset -1, type ffffffff, size 32, index -1, binding -1, stages 0
+abl[0]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+abl[1]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+abl[2]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+abl[3]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+abl2[0]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+abl2[1]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+abl2[2]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+abl2[3]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+buf1: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+buf2: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+buf3: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
+buf4: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0
 
 
 Vertex attribute reflection:
 Vertex attribute reflection:
-attributeFloat: offset 0, type 1406, size 0, index 0, binding -1
-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
+attributeFloat: offset 0, type 1406, size 0, index 0, binding -1, stages 0
+attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1, stages 0
+attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1, stages 0
+attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1, stages 0
+attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1, stages 0
+gl_InstanceID: offset 0, type 1404, size 0, index 0, binding -1, stages 0
 
 

+ 20 - 20
3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error-int.frag.out

@@ -1,85 +1,85 @@
 spv.16bitstorage_Error-int.frag
 spv.16bitstorage_Error-int.frag
-ERROR: 0:54: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:54: 'structure: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:58: 'can't use with structs containing int16' : required extension not requested: Possible extensions include:
+ERROR: 0:58: 'return: can't use with structs containing int16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:61: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:61: 'int16_t: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:74: ''[' does not operate on types containing (u)int16' : required extension not requested: Possible extensions include:
+ERROR: 0:74: '[: does not operate on types containing (u)int16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:75: 'can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
+ERROR: 0:75: '.: can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:77: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:77: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:77: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:77: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
 ERROR: 0:78: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int16_t' (or there is no acceptable conversion)
 ERROR: 0:78: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int16_t' (or there is no acceptable conversion)
 ERROR: 0:79: '-' :  wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform int16_t (or there is no acceptable conversion)
 ERROR: 0:79: '-' :  wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform int16_t (or there is no acceptable conversion)
 ERROR: 0:80: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type ' const int' (or there is no acceptable conversion)
 ERROR: 0:80: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type ' const int' (or there is no acceptable conversion)
-ERROR: 0:81: 'can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
+ERROR: 0:81: '.: can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:82: 'can't use with structs containing int16' : required extension not requested: Possible extensions include:
+ERROR: 0:82: '=: can't use with structs containing int16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:83: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:83: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:84: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:84: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:85: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:85: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
 ERROR: 0:86: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int16_t' (or there is no acceptable conversion)
 ERROR: 0:86: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int16_t' (or there is no acceptable conversion)
-ERROR: 0:87: 'can't use with arrays containing int16' : required extension not requested: Possible extensions include:
+ERROR: 0:87: '=: can't use with arrays containing int16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:88: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
+ERROR: 0:88: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:89: '16-bit array constructors not supported' : required extension not requested: Possible extensions include:
+ERROR: 0:89: 'constructor: 16-bit arrays not supported' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:89: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
+ERROR: 0:89: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:92: 'Can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include:
+ERROR: 0:92: 'constructor: can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16

+ 20 - 20
3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error-uint.frag.out

@@ -1,85 +1,85 @@
 spv.16bitstorage_Error-uint.frag
 spv.16bitstorage_Error-uint.frag
-ERROR: 0:54: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:54: 'structure: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:58: 'can't use with structs containing uint16' : required extension not requested: Possible extensions include:
+ERROR: 0:58: 'return: can't use with structs containing uint16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:61: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:61: 'uint16_t: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:74: ''[' does not operate on types containing (u)int16' : required extension not requested: Possible extensions include:
+ERROR: 0:74: '[: does not operate on types containing (u)int16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:75: 'can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
+ERROR: 0:75: '.: can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:76: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:77: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:77: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:77: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:77: 'built-in function: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
 ERROR: 0:78: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint16_t' (or there is no acceptable conversion)
 ERROR: 0:78: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint16_t' (or there is no acceptable conversion)
 ERROR: 0:79: '-' :  wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform uint16_t (or there is no acceptable conversion)
 ERROR: 0:79: '-' :  wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform uint16_t (or there is no acceptable conversion)
 ERROR: 0:80: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type ' const int' (or there is no acceptable conversion)
 ERROR: 0:80: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type ' const int' (or there is no acceptable conversion)
-ERROR: 0:81: 'can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
+ERROR: 0:81: '.: can't swizzle types containing (u)int16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:82: 'can't use with structs containing uint16' : required extension not requested: Possible extensions include:
+ERROR: 0:82: '=: can't use with structs containing uint16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:83: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:83: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:84: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:84: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:85: '(u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:85: 'qualifier: (u)int16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
 ERROR: 0:86: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint16_t' (or there is no acceptable conversion)
 ERROR: 0:86: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint16_t' (or there is no acceptable conversion)
-ERROR: 0:87: 'can't use with arrays containing uint16' : required extension not requested: Possible extensions include:
+ERROR: 0:87: '=: can't use with arrays containing uint16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:88: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
+ERROR: 0:88: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:89: '16-bit array constructors not supported' : required extension not requested: Possible extensions include:
+ERROR: 0:89: 'constructor: 16-bit arrays not supported' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:89: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
+ERROR: 0:89: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16
-ERROR: 0:92: 'Can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include:
+ERROR: 0:92: 'constructor: can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_int16
 GL_AMD_gpu_shader_int16
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int16
 GL_KHX_shader_explicit_arithmetic_types_int16

+ 22 - 22
3rdparty/glslang/Test/baseResults/spv.16bitstorage_Error.frag.out

@@ -1,93 +1,93 @@
 spv.16bitstorage_Error.frag
 spv.16bitstorage_Error.frag
-ERROR: 0:54: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:54: 'structure: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:58: 'can't use with structs containing float16' : required extension not requested: Possible extensions include:
+ERROR: 0:58: 'return: can't use with structs containing float16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:61: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:61: 'float16_t: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:74: ''[' does not operate on types containing float16' : required extension not requested: Possible extensions include:
+ERROR: 0:74: '[: does not operate on types containing float16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:75: 'can't swizzle types containing float16' : required extension not requested: Possible extensions include:
+ERROR: 0:75: '.: can't swizzle types containing float16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:76: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:76: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:76: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:77: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:77: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:77: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:77: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
 ERROR: 0:78: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform float16_t' (or there is no acceptable conversion)
 ERROR: 0:78: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform float16_t' (or there is no acceptable conversion)
 ERROR: 0:79: '-' :  wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform float16_t (or there is no acceptable conversion)
 ERROR: 0:79: '-' :  wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform float16_t (or there is no acceptable conversion)
 ERROR: 0:80: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type ' const float' (or there is no acceptable conversion)
 ERROR: 0:80: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type ' const float' (or there is no acceptable conversion)
-ERROR: 0:81: 'can't swizzle types containing float16' : required extension not requested: Possible extensions include:
+ERROR: 0:81: '.: can't swizzle types containing float16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:82: 'can't use with structs containing float16' : required extension not requested: Possible extensions include:
+ERROR: 0:82: '=: can't use with structs containing float16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:83: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:83: 'qualifier: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:84: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:84: 'qualifier: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:85: 'float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:85: 'qualifier: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
 ERROR: 0:86: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform float16_t' (or there is no acceptable conversion)
 ERROR: 0:86: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform float16_t' and a right operand of type 'layout( column_major std140 offset=0) uniform float16_t' (or there is no acceptable conversion)
-ERROR: 0:87: 'can't use with arrays containing float16' : required extension not requested: Possible extensions include:
+ERROR: 0:87: '=: can't use with arrays containing float16' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:88: 'explicit types' : required extension not requested: Possible extensions include:
+ERROR: 0:88: 'half floating-point suffix' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:88: 'explicit types' : required extension not requested: Possible extensions include:
+ERROR: 0:88: 'half float literal' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:89: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
+ERROR: 0:89: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:90: '16-bit array constructors not supported' : required extension not requested: Possible extensions include:
+ERROR: 0:90: 'constructor: 16-bit arrays not supported' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:90: '16-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
+ERROR: 0:90: 'constructor: 16-bit vectors only take vector types' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16
-ERROR: 0:93: 'Can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include:
+ERROR: 0:93: 'constructor: can't construct structure containing 16-bit type' : required extension not requested: Possible extensions include:
 GL_AMD_gpu_shader_half_float
 GL_AMD_gpu_shader_half_float
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_float16
 GL_KHX_shader_explicit_arithmetic_types_float16

+ 20 - 20
3rdparty/glslang/Test/baseResults/spv.8bitstorage_Error-int.frag.out

@@ -1,66 +1,66 @@
 spv.8bitstorage_Error-int.frag
 spv.8bitstorage_Error-int.frag
-ERROR: 0:54: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:54: 'structure: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:58: 'can't use with structs containing int8' : required extension not requested: Possible extensions include:
+ERROR: 0:58: 'return: can't use with structs containing int8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:61: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:61: 'int8_t: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:74: ''[' does not operate on types containing (u)int8' : required extension not requested: Possible extensions include:
+ERROR: 0:74: '[: does not operate on types containing (u)int8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:75: 'can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
+ERROR: 0:75: '.: can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:77: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:77: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:77: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:77: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
 ERROR: 0:78: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int8_t' (or there is no acceptable conversion)
 ERROR: 0:78: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int8_t' (or there is no acceptable conversion)
 ERROR: 0:79: '-' :  wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform int8_t (or there is no acceptable conversion)
 ERROR: 0:79: '-' :  wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform int8_t (or there is no acceptable conversion)
 ERROR: 0:80: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type ' const int' (or there is no acceptable conversion)
 ERROR: 0:80: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type ' const int' (or there is no acceptable conversion)
-ERROR: 0:81: 'can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
+ERROR: 0:81: '.: can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:82: 'can't use with structs containing int8' : required extension not requested: Possible extensions include:
+ERROR: 0:82: '=: can't use with structs containing int8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:83: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:83: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:84: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:84: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:85: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:85: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
 ERROR: 0:86: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int8_t' (or there is no acceptable conversion)
 ERROR: 0:86: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform int8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform int8_t' (or there is no acceptable conversion)
-ERROR: 0:87: 'can't use with arrays containing int8' : required extension not requested: Possible extensions include:
+ERROR: 0:87: '=: can't use with arrays containing int8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:88: '8-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
+ERROR: 0:88: 'constructor: 8-bit vectors only take vector types' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:89: '8-bit array constructors not supported' : required extension not requested: Possible extensions include:
+ERROR: 0:89: 'constructor: 8-bit arrays not supported' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:89: '8-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
+ERROR: 0:89: 'constructor: 8-bit vectors only take vector types' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:92: 'Can't construct structure containing 8-bit type' : required extension not requested: Possible extensions include:
+ERROR: 0:92: 'constructor: can't construct structure containing 8-bit type' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
 ERROR: 0:93: 'func2' : no matching overloaded function found 
 ERROR: 0:93: 'func2' : no matching overloaded function found 

+ 20 - 20
3rdparty/glslang/Test/baseResults/spv.8bitstorage_Error-uint.frag.out

@@ -1,66 +1,66 @@
 spv.8bitstorage_Error-uint.frag
 spv.8bitstorage_Error-uint.frag
-ERROR: 0:54: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:54: 'structure: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:58: 'can't use with structs containing uint8' : required extension not requested: Possible extensions include:
+ERROR: 0:58: 'return: can't use with structs containing uint8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:61: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:61: 'uint8_t: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:74: ''[' does not operate on types containing (u)int8' : required extension not requested: Possible extensions include:
+ERROR: 0:74: '[: does not operate on types containing (u)int8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:75: 'can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
+ERROR: 0:75: '.: can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:76: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:76: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:77: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:77: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:77: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:77: 'built-in function: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
 ERROR: 0:78: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint8_t' (or there is no acceptable conversion)
 ERROR: 0:78: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint8_t' (or there is no acceptable conversion)
 ERROR: 0:79: '-' :  wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform uint8_t (or there is no acceptable conversion)
 ERROR: 0:79: '-' :  wrong operand type no operation '-' exists that takes an operand of type layout( column_major std140 offset=0) uniform uint8_t (or there is no acceptable conversion)
 ERROR: 0:80: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type ' const int' (or there is no acceptable conversion)
 ERROR: 0:80: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type ' const int' (or there is no acceptable conversion)
-ERROR: 0:81: 'can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
+ERROR: 0:81: '.: can't swizzle types containing (u)int8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:82: 'can't use with structs containing uint8' : required extension not requested: Possible extensions include:
+ERROR: 0:82: '=: can't use with structs containing uint8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:83: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:83: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:84: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:84: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:85: '(u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
+ERROR: 0:85: 'qualifier: (u)int8 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
 ERROR: 0:86: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint8_t' (or there is no acceptable conversion)
 ERROR: 0:86: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'layout( column_major std140 offset=0) uniform uint8_t' and a right operand of type 'layout( column_major std140 offset=0) uniform uint8_t' (or there is no acceptable conversion)
-ERROR: 0:87: 'can't use with arrays containing uint8' : required extension not requested: Possible extensions include:
+ERROR: 0:87: '=: can't use with arrays containing uint8' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:88: '8-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
+ERROR: 0:88: 'constructor: 8-bit vectors only take vector types' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:89: '8-bit array constructors not supported' : required extension not requested: Possible extensions include:
+ERROR: 0:89: 'constructor: 8-bit arrays not supported' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:89: '8-bit vector constructors only take vector types' : required extension not requested: Possible extensions include:
+ERROR: 0:89: 'constructor: 8-bit vectors only take vector types' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
-ERROR: 0:92: 'Can't construct structure containing 8-bit type' : required extension not requested: Possible extensions include:
+ERROR: 0:92: 'constructor: can't construct structure containing 8-bit type' : required extension not requested: Possible extensions include:
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types
 GL_KHX_shader_explicit_arithmetic_types_int8
 GL_KHX_shader_explicit_arithmetic_types_int8
 ERROR: 0:93: 'func2' : no matching overloaded function found 
 ERROR: 0:93: 'func2' : no matching overloaded function found 

+ 20 - 0
3rdparty/glslang/Test/hlsl.staticFuncInit.frag

@@ -0,0 +1,20 @@
+static float x = 1.0;
+
+float f1()
+{
+    static float x = 2.0;
+    x += 10.0;
+    return x;
+}
+
+float f2(float p)
+{
+    static float x = 7.0;
+    x += p;
+    return x;
+}
+
+float4 main() : SV_TARGET
+{
+    return x + f1() + f1() + f2(5.0) + f2(x);
+}

+ 1 - 1
3rdparty/glslang/glslang/Include/revision.h

@@ -1,3 +1,3 @@
 // This header is generated by the make-revision script.
 // This header is generated by the make-revision script.
 
 
-#define GLSLANG_PATCH_LEVEL 2797
+#define GLSLANG_PATCH_LEVEL 2801

+ 61 - 88
3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp

@@ -372,15 +372,12 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
     }
     }
 
 
     if (!base->isArray() && base->isVector()) {
     if (!base->isArray() && base->isVector()) {
-        if (base->getType().containsBasicType(EbtFloat16)) {
-            requireFloat16Arithmetic(loc, "'[' does not operate on types containing float16");
-        }
-        if (base->getType().contains16BitInt()) {
-            requireInt16Arithmetic(loc, "'[' does not operate on types containing (u)int16");
-        }
-        if (base->getType().contains8BitInt()) {
-            requireInt8Arithmetic(loc, "'[' does not operate on types containing (u)int8");
-        }
+        if (base->getType().containsBasicType(EbtFloat16))
+            requireFloat16Arithmetic(loc, "[", "does not operate on types containing float16");
+        if (base->getType().contains16BitInt())
+            requireInt16Arithmetic(loc, "[", "does not operate on types containing (u)int16");
+        if (base->getType().contains8BitInt())
+            requireInt8Arithmetic(loc, "[", "does not operate on types containing (u)int8");
     }
     }
 
 
     // check for constant folding
     // check for constant folding
@@ -721,15 +718,12 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm
         TSwizzleSelectors<TVectorSelector> selectors;
         TSwizzleSelectors<TVectorSelector> selectors;
         parseSwizzleSelector(loc, field, base->getVectorSize(), selectors);
         parseSwizzleSelector(loc, field, base->getVectorSize(), selectors);
 
 
-        if (base->isVector() && selectors.size() != 1 && base->getType().containsBasicType(EbtFloat16)) {
-            requireFloat16Arithmetic(loc, "can't swizzle types containing float16");
-        }
-        if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitInt()) {
-            requireInt16Arithmetic(loc, "can't swizzle types containing (u)int16");
-        }
-        if (base->isVector() && selectors.size() != 1 && base->getType().contains8BitInt()) {
-            requireInt8Arithmetic(loc, "can't swizzle types containing (u)int8");
-        }
+        if (base->isVector() && selectors.size() != 1 && base->getType().containsBasicType(EbtFloat16))
+            requireFloat16Arithmetic(loc, ".", "can't swizzle types containing float16");
+        if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitInt())
+            requireInt16Arithmetic(loc, ".", "can't swizzle types containing (u)int16");
+        if (base->isVector() && selectors.size() != 1 && base->getType().contains8BitInt())
+            requireInt8Arithmetic(loc, ".", "can't swizzle types containing (u)int8");
 
 
         if (base->isScalar()) {
         if (base->isScalar()) {
             if (selectors.size() == 1)
             if (selectors.size() == 1)
@@ -1009,15 +1003,12 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
             if (builtIn && fnCandidate->getNumExtensions())
             if (builtIn && fnCandidate->getNumExtensions())
                 requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str());
                 requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str());
 
 
-            if (builtIn && fnCandidate->getType().containsBasicType(EbtFloat16)) {
-                requireFloat16Arithmetic(loc, "float16 types can only be in uniform block or buffer storage");
-            }
-            if (builtIn && fnCandidate->getType().contains16BitInt()) {
-                requireInt16Arithmetic(loc, "(u)int16 types can only be in uniform block or buffer storage");
-            }
-            if (builtIn && fnCandidate->getType().contains8BitInt()) {
-                requireInt8Arithmetic(loc, "(u)int8 types can only be in uniform block or buffer storage");
-            }
+            if (builtIn && fnCandidate->getType().containsBasicType(EbtFloat16))
+                requireFloat16Arithmetic(loc, "built-in function", "float16 types can only be in uniform block or buffer storage");
+            if (builtIn && fnCandidate->getType().contains16BitInt())
+                requireInt16Arithmetic(loc, "built-in function", "(u)int16 types can only be in uniform block or buffer storage");
+            if (builtIn && fnCandidate->getType().contains8BitInt())
+                requireInt8Arithmetic(loc, "built-in function", "(u)int8 types can only be in uniform block or buffer storage");
 
 
             if (arguments != nullptr) {
             if (arguments != nullptr) {
                 // Make sure qualifications work for these arguments.
                 // Make sure qualifications work for these arguments.
@@ -1045,15 +1036,12 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
                             error(arguments->getLoc(), message, "writeonly", "");
                             error(arguments->getLoc(), message, "writeonly", "");
                     }
                     }
 
 
-                    if (builtIn && arg->getAsTyped()->getType().containsBasicType(EbtFloat16)) {
-                        requireFloat16Arithmetic(arguments->getLoc(), "float16 types can only be in uniform block or buffer storage");
-                    }
-                    if (builtIn && arg->getAsTyped()->getType().contains16BitInt()) {
-                        requireInt16Arithmetic(arguments->getLoc(), "(u)int16 types can only be in uniform block or buffer storage");
-                    }
-                    if (builtIn && arg->getAsTyped()->getType().contains8BitInt()) {
-                        requireInt8Arithmetic(arguments->getLoc(), "(u)int8 types can only be in uniform block or buffer storage");
-                    }
+                    if (builtIn && arg->getAsTyped()->getType().containsBasicType(EbtFloat16))
+                        requireFloat16Arithmetic(arguments->getLoc(), "built-in function", "float16 types can only be in uniform block or buffer storage");
+                    if (builtIn && arg->getAsTyped()->getType().contains16BitInt())
+                        requireInt16Arithmetic(arguments->getLoc(), "built-in function", "(u)int16 types can only be in uniform block or buffer storage");
+                    if (builtIn && arg->getAsTyped()->getType().contains8BitInt())
+                        requireInt8Arithmetic(arguments->getLoc(), "built-in function", "(u)int8 types can only be in uniform block or buffer storage");
 
 
                     // TODO 4.5 functionality:  A shader will fail to compile
                     // TODO 4.5 functionality:  A shader will fail to compile
                     // if the value passed to the memargument of an atomic memory function does not correspond to a buffer or
                     // if the value passed to the memargument of an atomic memory function does not correspond to a buffer or
@@ -2417,15 +2405,15 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
             floatArgument = true;
             floatArgument = true;
         if (type.isStruct()) {
         if (type.isStruct()) {
             if (function[arg].type->containsBasicType(EbtFloat16)) {
             if (function[arg].type->containsBasicType(EbtFloat16)) {
-                requireFloat16Arithmetic(loc, "Can't construct structure containing 16-bit type");
+                requireFloat16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type");
             }
             }
             if (function[arg].type->containsBasicType(EbtUint16) ||
             if (function[arg].type->containsBasicType(EbtUint16) ||
                 function[arg].type->containsBasicType(EbtInt16)) {
                 function[arg].type->containsBasicType(EbtInt16)) {
-                requireInt16Arithmetic(loc, "Can't construct structure containing 16-bit type");
+                requireInt16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type");
             }
             }
             if (function[arg].type->containsBasicType(EbtUint8) ||
             if (function[arg].type->containsBasicType(EbtUint8) ||
                 function[arg].type->containsBasicType(EbtInt8)) {
                 function[arg].type->containsBasicType(EbtInt8)) {
-                requireInt8Arithmetic(loc, "Can't construct structure containing 8-bit type");
+                requireInt8Arithmetic(loc, "constructor", "can't construct structure containing 8-bit type");
             }
             }
         }
         }
     }
     }
@@ -2435,13 +2423,10 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
     case EOpConstructF16Vec2:
     case EOpConstructF16Vec2:
     case EOpConstructF16Vec3:
     case EOpConstructF16Vec3:
     case EOpConstructF16Vec4:
     case EOpConstructF16Vec4:
-        if (type.isArray()) {
-            requireFloat16Arithmetic(loc, "16-bit array constructors not supported");
-        }
-
-        if (type.isVector() && function.getParamCount() != 1) {
-            requireFloat16Arithmetic(loc, "16-bit vector constructors only take vector types");
-        }
+        if (type.isArray())
+            requireFloat16Arithmetic(loc, "constructor", "16-bit arrays not supported");
+        if (type.isVector() && function.getParamCount() != 1)
+            requireFloat16Arithmetic(loc, "constructor", "16-bit vectors only take vector types");
         break;
         break;
     case EOpConstructUint16:
     case EOpConstructUint16:
     case EOpConstructU16Vec2:
     case EOpConstructU16Vec2:
@@ -2451,13 +2436,10 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
     case EOpConstructI16Vec2:
     case EOpConstructI16Vec2:
     case EOpConstructI16Vec3:
     case EOpConstructI16Vec3:
     case EOpConstructI16Vec4:
     case EOpConstructI16Vec4:
-        if (type.isArray()) {
-            requireInt16Arithmetic(loc, "16-bit array constructors not supported");
-        }
-
-        if (type.isVector() && function.getParamCount() != 1) {
-            requireInt16Arithmetic(loc, "16-bit vector constructors only take vector types");
-        }
+        if (type.isArray())
+            requireInt16Arithmetic(loc, "constructor", "16-bit arrays not supported");
+        if (type.isVector() && function.getParamCount() != 1)
+            requireInt16Arithmetic(loc, "constructor", "16-bit vectors only take vector types");
         break;
         break;
     case EOpConstructUint8:
     case EOpConstructUint8:
     case EOpConstructU8Vec2:
     case EOpConstructU8Vec2:
@@ -2467,13 +2449,10 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
     case EOpConstructI8Vec2:
     case EOpConstructI8Vec2:
     case EOpConstructI8Vec3:
     case EOpConstructI8Vec3:
     case EOpConstructI8Vec4:
     case EOpConstructI8Vec4:
-        if (type.isArray()) {
-            requireInt8Arithmetic(loc, "8-bit array constructors not supported");
-        }
-
-        if (type.isVector() && function.getParamCount() != 1) {
-            requireInt8Arithmetic(loc, "8-bit vector constructors only take vector types");
-        }
+        if (type.isArray())
+            requireInt8Arithmetic(loc, "constructor", "8-bit arrays not supported");
+        if (type.isVector() && function.getParamCount() != 1)
+            requireInt8Arithmetic(loc, "constructor", "8-bit vectors only take vector types");
         break;
         break;
     default:
     default:
         break;
         break;
@@ -3162,15 +3141,12 @@ void TParseContext::parameterTypeCheck(const TSourceLoc& loc, TStorageQualifier
     if ((qualifier == EvqOut || qualifier == EvqInOut) && type.isOpaque())
     if ((qualifier == EvqOut || qualifier == EvqInOut) && type.isOpaque())
         error(loc, "samplers and atomic_uints cannot be output parameters", type.getBasicTypeString().c_str(), "");
         error(loc, "samplers and atomic_uints cannot be output parameters", type.getBasicTypeString().c_str(), "");
 
 
-    if (!parsingBuiltins && type.containsBasicType(EbtFloat16)) {
-        requireFloat16Arithmetic(loc, "float16 types can only be in uniform block or buffer storage");
-    }
-    if (!parsingBuiltins && type.contains16BitInt()) {
-        requireInt16Arithmetic(loc, "(u)int16 types can only be in uniform block or buffer storage");
-    }
-    if (!parsingBuiltins && type.contains8BitInt()) {
-        requireInt8Arithmetic(loc, "(u)int8 types can only be in uniform block or buffer storage");
-    }
+    if (!parsingBuiltins && type.containsBasicType(EbtFloat16))
+        requireFloat16Arithmetic(loc, type.getBasicTypeString().c_str(), "float16 types can only be in uniform block or buffer storage");
+    if (!parsingBuiltins && type.contains16BitInt())
+        requireInt16Arithmetic(loc, type.getBasicTypeString().c_str(), "(u)int16 types can only be in uniform block or buffer storage");
+    if (!parsingBuiltins && type.contains8BitInt())
+        requireInt8Arithmetic(loc, type.getBasicTypeString().c_str(), "(u)int8 types can only be in uniform block or buffer storage");
 }
 }
 
 
 bool TParseContext::containsFieldWithBasicType(const TType& type, TBasicType basicType)
 bool TParseContext::containsFieldWithBasicType(const TType& type, TBasicType basicType)
@@ -3948,34 +3924,34 @@ void TParseContext::opaqueCheck(const TSourceLoc& loc, const TType& type, const
 void TParseContext::storage16BitAssignmentCheck(const TSourceLoc& loc, const TType& type, const char* op)
 void TParseContext::storage16BitAssignmentCheck(const TSourceLoc& loc, const TType& type, const char* op)
 {
 {
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtFloat16))
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtFloat16))
-        requireFloat16Arithmetic(loc, "can't use with structs containing float16");
+        requireFloat16Arithmetic(loc, op, "can't use with structs containing float16");
 
 
     if (type.isArray() && type.getBasicType() == EbtFloat16)
     if (type.isArray() && type.getBasicType() == EbtFloat16)
-        requireFloat16Arithmetic(loc, "can't use with arrays containing float16");
+        requireFloat16Arithmetic(loc, op, "can't use with arrays containing float16");
 
 
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtInt16))
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtInt16))
-        requireInt16Arithmetic(loc, "can't use with structs containing int16");
+        requireInt16Arithmetic(loc, op, "can't use with structs containing int16");
 
 
     if (type.isArray() && type.getBasicType() == EbtInt16)
     if (type.isArray() && type.getBasicType() == EbtInt16)
-        requireInt16Arithmetic(loc, "can't use with arrays containing int16");
+        requireInt16Arithmetic(loc, op, "can't use with arrays containing int16");
 
 
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtUint16))
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtUint16))
-        requireInt16Arithmetic(loc, "can't use with structs containing uint16");
+        requireInt16Arithmetic(loc, op, "can't use with structs containing uint16");
 
 
     if (type.isArray() && type.getBasicType() == EbtUint16)
     if (type.isArray() && type.getBasicType() == EbtUint16)
-        requireInt16Arithmetic(loc, "can't use with arrays containing uint16");
+        requireInt16Arithmetic(loc, op, "can't use with arrays containing uint16");
 
 
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtInt8))
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtInt8))
-        requireInt8Arithmetic(loc, "can't use with structs containing int8");
+        requireInt8Arithmetic(loc, op, "can't use with structs containing int8");
 
 
     if (type.isArray() && type.getBasicType() == EbtInt8)
     if (type.isArray() && type.getBasicType() == EbtInt8)
-        requireInt8Arithmetic(loc, "can't use with arrays containing int8");
+        requireInt8Arithmetic(loc, op, "can't use with arrays containing int8");
 
 
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtUint8))
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtUint8))
-        requireInt8Arithmetic(loc, "can't use with structs containing uint8");
+        requireInt8Arithmetic(loc, op, "can't use with structs containing uint8");
 
 
     if (type.isArray() && type.getBasicType() == EbtUint8)
     if (type.isArray() && type.getBasicType() == EbtUint8)
-        requireInt8Arithmetic(loc, "can't use with arrays containing uint8");
+        requireInt8Arithmetic(loc, op, "can't use with arrays containing uint8");
 }
 }
 
 
 void TParseContext::specializationCheck(const TSourceLoc& loc, const TType& type, const char* op)
 void TParseContext::specializationCheck(const TSourceLoc& loc, const TType& type, const char* op)
@@ -5582,15 +5558,12 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden
     transparentOpaqueCheck(loc, type, identifier);
     transparentOpaqueCheck(loc, type, identifier);
 
 
     if (type.getQualifier().storage != EvqUniform && type.getQualifier().storage != EvqBuffer) {
     if (type.getQualifier().storage != EvqUniform && type.getQualifier().storage != EvqBuffer) {
-        if (type.containsBasicType(EbtFloat16)) {
-            requireFloat16Arithmetic(loc, "float16 types can only be in uniform block or buffer storage");
-        }
-        if (type.contains16BitInt()) {
-            requireInt16Arithmetic(loc, "(u)int16 types can only be in uniform block or buffer storage");
-        }
-        if (type.contains8BitInt()) {
-            requireInt8Arithmetic(loc, "(u)int8 types can only be in uniform block or buffer storage");
-        }
+        if (type.containsBasicType(EbtFloat16))
+            requireFloat16Arithmetic(loc, "qualifier", "float16 types can only be in uniform block or buffer storage");
+        if (type.contains16BitInt())
+            requireInt16Arithmetic(loc, "qualifier", "(u)int16 types can only be in uniform block or buffer storage");
+        if (type.contains8BitInt())
+            requireInt8Arithmetic(loc, "qualifier", "(u)int8 types can only be in uniform block or buffer storage");
     }
     }
 
 
     if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger))
     if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger))

+ 1 - 0
3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp

@@ -1910,6 +1910,7 @@ const char* TProgram::getUniformBlockName(int index) const   { return reflection
 int TProgram::getUniformBlockSize(int index) const           { return reflection->getUniformBlock(index).size; }
 int TProgram::getUniformBlockSize(int index) const           { return reflection->getUniformBlock(index).size; }
 int TProgram::getUniformIndex(const char* name) const        { return reflection->getIndex(name); }
 int TProgram::getUniformIndex(const char* name) const        { return reflection->getIndex(name); }
 int TProgram::getUniformBinding(int index) const             { return reflection->getUniform(index).getBinding(); }
 int TProgram::getUniformBinding(int index) const             { return reflection->getUniform(index).getBinding(); }
+EShLanguageMask TProgram::getUniformStages(int index) const  { return reflection->getUniform(index).stages; }
 int TProgram::getUniformBlockBinding(int index) const        { return reflection->getUniformBlock(index).getBinding(); }
 int TProgram::getUniformBlockBinding(int index) const        { return reflection->getUniformBlock(index).getBinding(); }
 int TProgram::getUniformBlockIndex(int index) const          { return reflection->getUniform(index).index; }
 int TProgram::getUniformBlockIndex(int index) const          { return reflection->getUniform(index).index; }
 int TProgram::getUniformBlockCounterIndex(int index) const   { return reflection->getUniformBlock(index).counterIndex; }
 int TProgram::getUniformBlockCounterIndex(int index) const   { return reflection->getUniformBlock(index).counterIndex; }

+ 31 - 16
3rdparty/glslang/glslang/MachineIndependent/Versions.cpp

@@ -831,7 +831,7 @@ void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool bu
 #endif
 #endif
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types_float16};
                                            E_GL_KHX_shader_explicit_arithmetic_types_float16};
-        requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
+        requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
     }
     }
 }
 }
 
 
@@ -865,34 +865,49 @@ bool TParseVersions::int8Arithmetic()
     return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions);
     return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions);
 }
 }
 
 
-void TParseVersions::requireFloat16Arithmetic(const TSourceLoc& loc, const char* featureDesc)
+void TParseVersions::requireFloat16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc)
 {
 {
+    TString combined;
+    combined = op;
+    combined += ": ";
+    combined += featureDesc;
+
     const char* const extensions[] = {
     const char* const extensions[] = {
 #if AMD_EXTENSIONS
 #if AMD_EXTENSIONS
                                        E_GL_AMD_gpu_shader_half_float,
                                        E_GL_AMD_gpu_shader_half_float,
 #endif
 #endif
                                        E_GL_KHX_shader_explicit_arithmetic_types,
                                        E_GL_KHX_shader_explicit_arithmetic_types,
                                        E_GL_KHX_shader_explicit_arithmetic_types_float16};
                                        E_GL_KHX_shader_explicit_arithmetic_types_float16};
-    requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, featureDesc);
+    requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, combined.c_str());
 }
 }
 
 
-void TParseVersions::requireInt16Arithmetic(const TSourceLoc& loc, const char* featureDesc)
+void TParseVersions::requireInt16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc)
 {
 {
+    TString combined;
+    combined = op;
+    combined += ": ";
+    combined += featureDesc;
+
     const char* const extensions[] = {
     const char* const extensions[] = {
 #if AMD_EXTENSIONS
 #if AMD_EXTENSIONS
                                        E_GL_AMD_gpu_shader_int16,
                                        E_GL_AMD_gpu_shader_int16,
 #endif
 #endif
                                        E_GL_KHX_shader_explicit_arithmetic_types,
                                        E_GL_KHX_shader_explicit_arithmetic_types,
                                        E_GL_KHX_shader_explicit_arithmetic_types_int16};
                                        E_GL_KHX_shader_explicit_arithmetic_types_int16};
-    requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, featureDesc);
+    requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, combined.c_str());
 }
 }
 
 
-void TParseVersions::requireInt8Arithmetic(const TSourceLoc& loc, const char* featureDesc)
+void TParseVersions::requireInt8Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc)
 {
 {
+    TString combined;
+    combined = op;
+    combined += ": ";
+    combined += featureDesc;
+
     const char* const extensions[] = {
     const char* const extensions[] = {
                                        E_GL_KHX_shader_explicit_arithmetic_types,
                                        E_GL_KHX_shader_explicit_arithmetic_types,
                                        E_GL_KHX_shader_explicit_arithmetic_types_int8};
                                        E_GL_KHX_shader_explicit_arithmetic_types_int8};
-    requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, featureDesc);
+    requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, combined.c_str());
 }
 }
 
 
 void TParseVersions::float16ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn)
 void TParseVersions::float16ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn)
@@ -905,7 +920,7 @@ void TParseVersions::float16ScalarVectorCheck(const TSourceLoc& loc, const char*
                                            E_GL_EXT_shader_16bit_storage,
                                            E_GL_EXT_shader_16bit_storage,
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types_float16};
                                            E_GL_KHX_shader_explicit_arithmetic_types_float16};
-        requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
+        requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
     }
     }
 }
 }
 
 
@@ -915,7 +930,7 @@ void TParseVersions::explicitFloat32Check(const TSourceLoc& loc, const char* op,
     if (!builtIn) {
     if (!builtIn) {
         const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
         const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types_float32};
                                            E_GL_KHX_shader_explicit_arithmetic_types_float32};
-        requireExtensions(loc, 2, extensions, "explicit types");
+        requireExtensions(loc, 2, extensions, op);
     }
     }
 }
 }
 
 
@@ -925,7 +940,7 @@ void TParseVersions::explicitFloat64Check(const TSourceLoc& loc, const char* op,
     if (!builtIn) {
     if (!builtIn) {
         const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
         const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types_float64};
                                            E_GL_KHX_shader_explicit_arithmetic_types_float64};
-        requireExtensions(loc, 2, extensions, "explicit types");
+        requireExtensions(loc, 2, extensions, op);
         requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
         requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
         profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
         profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
     }
     }
@@ -937,7 +952,7 @@ void TParseVersions::explicitInt8Check(const TSourceLoc& loc, const char* op, bo
     if (! builtIn) {
     if (! builtIn) {
         const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
         const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types_int8};
                                            E_GL_KHX_shader_explicit_arithmetic_types_int8};
-        requireExtensions(loc, 2, extensions, "explicit types");
+        requireExtensions(loc, 2, extensions, op);
     }
     }
 }
 }
 
 
@@ -963,7 +978,7 @@ void TParseVersions::explicitInt16Check(const TSourceLoc& loc, const char* op, b
 #endif
 #endif
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types_int16};
                                            E_GL_KHX_shader_explicit_arithmetic_types_int16};
-        requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
+        requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
     }
     }
 }
 }
 
 
@@ -977,7 +992,7 @@ void TParseVersions::int16ScalarVectorCheck(const TSourceLoc& loc, const char* o
                                            E_GL_EXT_shader_16bit_storage,
                                            E_GL_EXT_shader_16bit_storage,
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types_int16};
                                            E_GL_KHX_shader_explicit_arithmetic_types_int16};
-        requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
+        requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
     }
     }
 }
 }
 
 
@@ -988,7 +1003,7 @@ void TParseVersions::int8ScalarVectorCheck(const TSourceLoc& loc, const char* op
                                            E_GL_EXT_shader_8bit_storage,
                                            E_GL_EXT_shader_8bit_storage,
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types_int8};
                                            E_GL_KHX_shader_explicit_arithmetic_types_int8};
-        requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
+        requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
     }
     }
 }
 }
 
 
@@ -998,7 +1013,7 @@ void TParseVersions::explicitInt32Check(const TSourceLoc& loc, const char* op, b
     if (! builtIn) {
     if (! builtIn) {
         const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
         const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types_int32};
                                            E_GL_KHX_shader_explicit_arithmetic_types_int32};
-        requireExtensions(loc, 2, extensions, "explicit types");
+        requireExtensions(loc, 2, extensions, op);
     }
     }
 }
 }
 
 
@@ -1009,7 +1024,7 @@ void TParseVersions::int64Check(const TSourceLoc& loc, const char* op, bool buil
         const char* const extensions[3] = {E_GL_ARB_gpu_shader_int64,
         const char* const extensions[3] = {E_GL_ARB_gpu_shader_int64,
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types,
                                            E_GL_KHX_shader_explicit_arithmetic_types_int64};
                                            E_GL_KHX_shader_explicit_arithmetic_types_int64};
-        requireExtensions(loc, 3, extensions, "shader int64");
+        requireExtensions(loc, 3, extensions, op);
         requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
         requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
         profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
         profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
     }
     }

+ 3 - 0
3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp

@@ -513,6 +513,9 @@ struct TDefaultIoResolverBase : public glslang::TIoMapResolver
     void endResolve(EShLanguage) override {}
     void endResolve(EShLanguage) override {}
 
 
 protected:
 protected:
+    TDefaultIoResolverBase(TDefaultIoResolverBase&);
+    TDefaultIoResolverBase& operator=(TDefaultIoResolverBase&);
+
     const TIntermediate &intermediate;
     const TIntermediate &intermediate;
     int nextUniformLocation;
     int nextUniformLocation;
     int nextInputLocation;
     int nextInputLocation;

+ 3 - 3
3rdparty/glslang/glslang/MachineIndependent/parseVersions.h

@@ -81,13 +81,13 @@ public:
     virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false);
     virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false);
     virtual void float16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
     virtual void float16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
     virtual bool float16Arithmetic();
     virtual bool float16Arithmetic();
-    virtual void requireFloat16Arithmetic(const TSourceLoc& loc, const char* featureDesc);
+    virtual void requireFloat16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc);
     virtual void int16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
     virtual void int16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
     virtual bool int16Arithmetic();
     virtual bool int16Arithmetic();
-    virtual void requireInt16Arithmetic(const TSourceLoc& loc, const char* featureDesc);
+    virtual void requireInt16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc);
     virtual void int8ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
     virtual void int8ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
     virtual bool int8Arithmetic();
     virtual bool int8Arithmetic();
-    virtual void requireInt8Arithmetic(const TSourceLoc& loc, const char* featureDesc);
+    virtual void requireInt8Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc);
 #ifdef AMD_EXTENSIONS
 #ifdef AMD_EXTENSIONS
     virtual void float16OpaqueCheck(const TSourceLoc&, const char* op, bool builtIn = false);
     virtual void float16OpaqueCheck(const TSourceLoc&, const char* op, bool builtIn = false);
 #endif
 #endif

+ 9 - 0
3rdparty/glslang/glslang/MachineIndependent/reflection.cpp

@@ -778,6 +778,14 @@ void TReflection::buildCounterIndices(const TIntermediate& intermediate)
     }
     }
 }
 }
 
 
+// build Shader Stages mask for all uniforms
+void TReflection::buildUniformStageMask(const TIntermediate& intermediate)
+{
+    for (int i = 0; i < int(indexToUniform.size()); ++i) {
+        indexToUniform[i].stages = static_cast<EShLanguageMask>(indexToUniform[i].stages | 1 << intermediate.getStage());
+    }
+}
+
 // Merge live symbols from 'intermediate' into the existing reflection database.
 // Merge live symbols from 'intermediate' into the existing reflection database.
 //
 //
 // Returns false if the input is too malformed to do this.
 // Returns false if the input is too malformed to do this.
@@ -803,6 +811,7 @@ bool TReflection::addStage(EShLanguage stage, const TIntermediate& intermediate)
     }
     }
 
 
     buildCounterIndices(intermediate);
     buildCounterIndices(intermediate);
+    buildUniformStageMask(intermediate);
 
 
     return true;
     return true;
 }
 }

+ 5 - 3
3rdparty/glslang/glslang/MachineIndependent/reflection.h

@@ -57,7 +57,7 @@ class TObjectReflection {
 public:
 public:
     TObjectReflection(const TString& pName, const TType& pType, int pOffset, int pGLDefineType, int pSize, int pIndex) :
     TObjectReflection(const TString& pName, const TType& pType, int pOffset, int pGLDefineType, int pSize, int pIndex) :
         name(pName), offset(pOffset),
         name(pName), offset(pOffset),
-        glDefineType(pGLDefineType), size(pSize), index(pIndex), counterIndex(-1), type(pType.clone()) { }
+        glDefineType(pGLDefineType), size(pSize), index(pIndex), counterIndex(-1), type(pType.clone()), stages(EShLanguageMask(0)) { }
 
 
     const TType* const getType() const { return type; }
     const TType* const getType() const { return type; }
     int getBinding() const
     int getBinding() const
@@ -68,8 +68,8 @@ public:
     }
     }
     void dump() const
     void dump() const
     {
     {
-        printf("%s: offset %d, type %x, size %d, index %d, binding %d",
-               name.c_str(), offset, glDefineType, size, index, getBinding() );
+        printf("%s: offset %d, type %x, size %d, index %d, binding %d, stages %d",
+               name.c_str(), offset, glDefineType, size, index, getBinding(), stages );
 
 
         if (counterIndex != -1)
         if (counterIndex != -1)
             printf(", counter %d", counterIndex);
             printf(", counter %d", counterIndex);
@@ -84,6 +84,7 @@ public:
     int size;         // data size in bytes for a block, array size for a (non-block) object that's an array
     int size;         // data size in bytes for a block, array size for a (non-block) object that's an array
     int index;
     int index;
     int counterIndex;
     int counterIndex;
+    EShLanguageMask stages;
 
 
 protected:
 protected:
     TObjectReflection() : offset(-1), glDefineType(-1), size(-1), index(-1), type(nullptr) { }
     TObjectReflection() : offset(-1), glDefineType(-1), size(-1), index(-1), type(nullptr) { }
@@ -157,6 +158,7 @@ protected:
     friend class glslang::TReflectionTraverser;
     friend class glslang::TReflectionTraverser;
 
 
     void buildCounterIndices(const TIntermediate&);
     void buildCounterIndices(const TIntermediate&);
+    void buildUniformStageMask(const TIntermediate& intermediate);
     void buildAttributeReflection(EShLanguage, const TIntermediate&);
     void buildAttributeReflection(EShLanguage, const TIntermediate&);
 
 
     // Need a TString hash: typedef std::unordered_map<TString, int> TNameToIndex;
     // Need a TString hash: typedef std::unordered_map<TString, int> TNameToIndex;

+ 1 - 0
3rdparty/glslang/glslang/Public/ShaderLang.h

@@ -671,6 +671,7 @@ public:
     int getUniformBlockSize(int blockIndex) const;         // can be used for glGetActiveUniformBlockiv(UNIFORM_BLOCK_DATA_SIZE)
     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 getUniformIndex(const char* name) const;           // can be used for glGetUniformIndices()
     int getUniformBinding(int index) const;                // returns the binding number
     int getUniformBinding(int index) const;                // returns the binding number
+    EShLanguageMask getUniformStages(int index) const;     // returns Shaders Stages where a Uniform is present
     int getUniformBlockBinding(int index) const;           // returns the block binding number
     int getUniformBlockBinding(int index) const;           // returns the block binding number
     int getUniformBlockIndex(int index) const;             // can be used for glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX)
     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 getUniformBlockCounterIndex(int index) const;      // returns block index of associated counter.

+ 1 - 0
3rdparty/glslang/gtests/Hlsl.FromFile.cpp

@@ -318,6 +318,7 @@ INSTANTIATE_TEST_CASE_P(
         {"hlsl.self_cast.frag", "main"},
         {"hlsl.self_cast.frag", "main"},
         {"hlsl.snorm.uav.comp", "main"},
         {"hlsl.snorm.uav.comp", "main"},
         {"hlsl.staticMemberFunction.frag", "main"},
         {"hlsl.staticMemberFunction.frag", "main"},
+        {"hlsl.staticFuncInit.frag", "main"},
         {"hlsl.store.rwbyteaddressbuffer.type.comp", "main"},
         {"hlsl.store.rwbyteaddressbuffer.type.comp", "main"},
         {"hlsl.stringtoken.frag", "main"},
         {"hlsl.stringtoken.frag", "main"},
         {"hlsl.string.frag", "main"},
         {"hlsl.string.frag", "main"},

+ 16 - 15
3rdparty/glslang/hlsl/hlslGrammar.cpp

@@ -126,8 +126,6 @@ bool HlslGrammar::acceptIdentifier(HlslToken& idToken)
 //
 //
 bool HlslGrammar::acceptCompilationUnit()
 bool HlslGrammar::acceptCompilationUnit()
 {
 {
-    TIntermNode* unitNode = nullptr;
-
     if (! acceptDeclarationList(unitNode))
     if (! acceptDeclarationList(unitNode))
         return false;
         return false;
 
 
@@ -324,7 +322,7 @@ bool HlslGrammar::acceptSamplerDeclarationDX9(TType& /*type*/)
 // node for all the initializers. Each function created is a top-level node to grow
 // node for all the initializers. Each function created is a top-level node to grow
 // into the passed-in nodeList.
 // into the passed-in nodeList.
 //
 //
-// If 'nodeList' is passed in as non-null, it must an aggregate to extend for
+// If 'nodeList' is passed in as non-null, it must be an aggregate to extend for
 // each top-level node the declaration creates. Otherwise, if only one top-level
 // each top-level node the declaration creates. Otherwise, if only one top-level
 // node in generated here, that is want is returned in nodeList.
 // node in generated here, that is want is returned in nodeList.
 //
 //
@@ -489,7 +487,7 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
                         // Declare the variable and add any initializer code to the AST.
                         // Declare the variable and add any initializer code to the AST.
                         // The top-level node is always made into an aggregate, as that's
                         // The top-level node is always made into an aggregate, as that's
                         // historically how the AST has been.
                         // historically how the AST has been.
-                        initializers = intermediate.growAggregate(initializers,
+                        initializers = intermediate.growAggregate(initializers, 
                             parseContext.declareVariable(idToken.loc, *fullName, variableType, expressionNode),
                             parseContext.declareVariable(idToken.loc, *fullName, variableType, expressionNode),
                             idToken.loc);
                             idToken.loc);
                     }
                     }
@@ -506,11 +504,16 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
     if (initializers != nullptr)
     if (initializers != nullptr)
         initializers->setOperator(EOpSequence);
         initializers->setOperator(EOpSequence);
 
 
-    // Add the initializers' aggregate to the nodeList we were handed.
-    if (nodeList)
-        nodeList = intermediate.growAggregate(nodeList, initializers);
-    else
-        nodeList = initializers;
+    // if we have a locally scoped static, it needs a globally scoped initializer
+    if (declaredType.getQualifier().storage == EvqGlobal && !parseContext.symbolTable.atGlobalLevel()) {
+        unitNode = intermediate.growAggregate(unitNode, initializers, idToken.loc);
+    } else {
+        // Add the initializers' aggregate to the nodeList we were handed.
+        if (nodeList)
+            nodeList = intermediate.growAggregate(nodeList, initializers);
+        else
+            nodeList = initializers;
+    }
 
 
     // SEMICOLON
     // SEMICOLON
     if (! acceptTokenClass(EHTokSemicolon)) {
     if (! acceptTokenClass(EHTokSemicolon)) {
@@ -518,13 +521,11 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
         // was actually an assignment such as "float = 4", where "float" is an identifier.
         // 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
         // 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.
         // 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();
             recedeToken();
-            return false;
-        } else {
+        else
             expected(";");
             expected(";");
-            return false;
-        }
+        return false;
     }
     }
 
 
     return true;
     return true;
@@ -651,7 +652,7 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier)
     do {
     do {
         switch (peek()) {
         switch (peek()) {
         case EHTokStatic:
         case EHTokStatic:
-            qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+            qualifier.storage = EvqGlobal;
             break;
             break;
         case EHTokExtern:
         case EHTokExtern:
             // TODO: no meaning in glslang?
             // TODO: no meaning in glslang?

+ 2 - 1
3rdparty/glslang/hlsl/hlslGrammar.h

@@ -52,7 +52,7 @@ namespace glslang {
     public:
     public:
         HlslGrammar(HlslScanContext& scanner, HlslParseContext& parseContext)
         HlslGrammar(HlslScanContext& scanner, HlslParseContext& parseContext)
             : HlslTokenStream(scanner), parseContext(parseContext), intermediate(parseContext.intermediate),
             : HlslTokenStream(scanner), parseContext(parseContext), intermediate(parseContext.intermediate),
-              typeIdentifiers(false) { }
+              typeIdentifiers(false), unitNode(nullptr) { }
         virtual ~HlslGrammar() { }
         virtual ~HlslGrammar() { }
 
 
         bool parse();
         bool parse();
@@ -133,6 +133,7 @@ namespace glslang {
         HlslParseContext& parseContext;  // state of parsing and helper functions for building the intermediate
         HlslParseContext& parseContext;  // state of parsing and helper functions for building the intermediate
         TIntermediate& intermediate;     // the final product, the intermediate representation, includes the AST
         TIntermediate& intermediate;     // the final product, the intermediate representation, includes the AST
         bool typeIdentifiers;            // shader uses some types as identifiers
         bool typeIdentifiers;            // shader uses some types as identifiers
+        TIntermNode* unitNode;
     };
     };
 
 
 } // end namespace glslang
 } // end namespace glslang

+ 2 - 0
3rdparty/glslang/hlsl/hlslParseHelper.cpp

@@ -7866,6 +7866,8 @@ TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, const TStrin
 // Returning nullptr just means there is no code to execute to handle the
 // Returning nullptr just means there is no code to execute to handle the
 // initializer, which will, for example, be the case for constant initializers.
 // initializer, which will, for example, be the case for constant initializers.
 //
 //
+// Returns a subtree that accomplished the initialization.
+//
 TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyped* initializer, TVariable* variable)
 TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyped* initializer, TVariable* variable)
 {
 {
     //
     //