2
0
Бранимир Караџић 6 жил өмнө
parent
commit
6ceb4bdb35
31 өөрчлөгдсөн 125 нэмэгдсэн , 98 устгасан
  1. 0 1
      3rdparty/glslang/.appveyor.yml
  2. 0 1
      3rdparty/glslang/.travis.yml
  3. 1 1
      3rdparty/glslang/SPIRV/CMakeLists.txt
  4. 1 0
      3rdparty/glslang/SPIRV/GLSL.ext.KHR.h
  5. 4 1
      3rdparty/glslang/SPIRV/GlslangToSpv.cpp
  6. 9 0
      3rdparty/glslang/SPIRV/SpvBuilder.h
  7. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle1.frag.out
  8. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle10.frag.out
  9. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle11.frag.out
  10. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle12.frag.out
  11. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle13.frag.out
  12. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle14.frag.out
  13. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle15.frag.out
  14. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle16.frag.out
  15. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle18.frag.out
  16. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle2.frag.out
  17. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle3.frag.out
  18. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle4.frag.out
  19. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle5.frag.out
  20. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle6.frag.out
  21. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle7.frag.out
  22. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle8.frag.out
  23. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle9.frag.out
  24. 1 1
      3rdparty/glslang/Test/baseResults/spv.coopmat.comp.out
  25. 1 1
      3rdparty/glslang/Test/baseResults/spv.intcoopmat.comp.out
  26. 4 1
      3rdparty/glslang/glslang/Include/Types.h
  27. 1 0
      3rdparty/glslang/glslang/Include/intermediate.h
  28. 78 70
      3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp
  29. 3 1
      3rdparty/glslang/glslang/MachineIndependent/localintermediate.h
  30. 3 1
      3rdparty/glslang/glslang/Public/ShaderLang.h
  31. 2 2
      3rdparty/glslang/known_good.json

+ 0 - 1
3rdparty/glslang/.appveyor.yml

@@ -66,7 +66,6 @@ after_test:
     bin\glslangValidator.exe
     bin\glslangValidator.exe
     bin\spirv-remap.exe
     bin\spirv-remap.exe
     include\glslang\*
     include\glslang\*
-    include\SPIRV\*
     lib\glslang%SUFFIX%.lib
     lib\glslang%SUFFIX%.lib
     lib\HLSL%SUFFIX%.lib
     lib\HLSL%SUFFIX%.lib
     lib\OGLCompiler%SUFFIX%.lib
     lib\OGLCompiler%SUFFIX%.lib

+ 0 - 1
3rdparty/glslang/.travis.yml

@@ -99,7 +99,6 @@ after_success:
       zip ${TARBALL}
       zip ${TARBALL}
         bin/glslangValidator
         bin/glslangValidator
         include/glslang/*
         include/glslang/*
-        include/SPIRV/*
         lib/libglslang${SUFFIX}.a
         lib/libglslang${SUFFIX}.a
         lib/libHLSL${SUFFIX}.a
         lib/libHLSL${SUFFIX}.a
         lib/libOGLCompiler${SUFFIX}.a
         lib/libOGLCompiler${SUFFIX}.a

+ 1 - 1
3rdparty/glslang/SPIRV/CMakeLists.txt

@@ -87,5 +87,5 @@ if(ENABLE_GLSLANG_INSTALL)
                 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
                 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
     endif()
     endif()
 
 
-    install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/)
+    install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
 endif(ENABLE_GLSLANG_INSTALL)
 endif(ENABLE_GLSLANG_INSTALL)

+ 1 - 0
3rdparty/glslang/SPIRV/GLSL.ext.KHR.h

@@ -40,6 +40,7 @@ static const char* const E_SPV_KHR_8bit_storage                 = "SPV_KHR_8bit_
 static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class";
 static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class";
 static const char* const E_SPV_KHR_post_depth_coverage          = "SPV_KHR_post_depth_coverage";
 static const char* const E_SPV_KHR_post_depth_coverage          = "SPV_KHR_post_depth_coverage";
 static const char* const E_SPV_KHR_vulkan_memory_model          = "SPV_KHR_vulkan_memory_model";
 static const char* const E_SPV_KHR_vulkan_memory_model          = "SPV_KHR_vulkan_memory_model";
+static const char* const E_SPV_EXT_physical_storage_buffer      = "SPV_EXT_physical_storage_buffer";
 static const char* const E_SPV_KHR_physical_storage_buffer      = "SPV_KHR_physical_storage_buffer";
 static const char* const E_SPV_KHR_physical_storage_buffer      = "SPV_KHR_physical_storage_buffer";
 static const char* const E_SPV_EXT_fragment_shader_interlock    = "SPV_EXT_fragment_shader_interlock";
 static const char* const E_SPV_EXT_fragment_shader_interlock    = "SPV_EXT_fragment_shader_interlock";
 static const char* const E_SPV_KHR_shader_clock                 = "SPV_KHR_shader_clock";
 static const char* const E_SPV_KHR_shader_clock                 = "SPV_KHR_shader_clock";

+ 4 - 1
3rdparty/glslang/SPIRV/GlslangToSpv.cpp

@@ -1399,7 +1399,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl
 
 
     if (glslangIntermediate->usingPhysicalStorageBuffer()) {
     if (glslangIntermediate->usingPhysicalStorageBuffer()) {
         addressingModel = spv::AddressingModelPhysicalStorageBuffer64EXT;
         addressingModel = spv::AddressingModelPhysicalStorageBuffer64EXT;
-        builder.addIncorporatedExtension(spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5);
+        builder.addIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer, spv::Spv_1_5);
         builder.addCapability(spv::CapabilityPhysicalStorageBufferAddressesEXT);
         builder.addCapability(spv::CapabilityPhysicalStorageBufferAddressesEXT);
     };
     };
     if (glslangIntermediate->usingVulkanMemoryModel()) {
     if (glslangIntermediate->usingVulkanMemoryModel()) {
@@ -6275,6 +6275,9 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora
         break;
         break;
     case glslang::EOpConvPtrToUvec2:
     case glslang::EOpConvPtrToUvec2:
     case glslang::EOpConvUvec2ToPtr:
     case glslang::EOpConvUvec2ToPtr:
+        if (builder.isVector(operand))
+            builder.promoteIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer,
+                                                 spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5);
         convOp = spv::OpBitcast;
         convOp = spv::OpBitcast;
         break;
         break;
 #endif
 #endif

+ 9 - 0
3rdparty/glslang/SPIRV/SpvBuilder.h

@@ -106,11 +106,20 @@ public:
     void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); }
     void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); }
     void setEmitOpLines() { emitOpLines = true; }
     void setEmitOpLines() { emitOpLines = true; }
     void addExtension(const char* ext) { extensions.insert(ext); }
     void addExtension(const char* ext) { extensions.insert(ext); }
+    void removeExtension(const char* ext)
+    {
+        extensions.erase(ext);
+    }
     void addIncorporatedExtension(const char* ext, SpvVersion incorporatedVersion)
     void addIncorporatedExtension(const char* ext, SpvVersion incorporatedVersion)
     {
     {
         if (getSpvVersion() < static_cast<unsigned>(incorporatedVersion))
         if (getSpvVersion() < static_cast<unsigned>(incorporatedVersion))
             addExtension(ext);
             addExtension(ext);
     }
     }
+    void promoteIncorporatedExtension(const char* baseExt, const char* promoExt, SpvVersion incorporatedVersion)
+    {
+        removeExtension(baseExt);
+        addIncorporatedExtension(promoExt, incorporatedVersion);
+    }
     void addInclude(const std::string& name, const std::string& text)
     void addInclude(const std::string& name, const std::string& text)
     {
     {
         spv::Id incId = getStringId(name);
         spv::Id incId = getStringId(name);

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle1.frag.out

@@ -6,7 +6,7 @@ spv.bufferhandle1.frag
                               Capability Shader
                               Capability Shader
                               Capability VulkanMemoryModelKHR
                               Capability VulkanMemoryModelKHR
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_vulkan_memory_model"
                               Extension  "SPV_KHR_vulkan_memory_model"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle10.frag.out

@@ -6,7 +6,7 @@ spv.bufferhandle10.frag
                               Capability Shader
                               Capability Shader
                               Capability VulkanMemoryModelKHR
                               Capability VulkanMemoryModelKHR
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_vulkan_memory_model"
                               Extension  "SPV_KHR_vulkan_memory_model"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle11.frag.out

@@ -9,8 +9,8 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to
                               Capability Shader
                               Capability Shader
                               Capability StorageBuffer8BitAccess
                               Capability StorageBuffer8BitAccess
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_8bit_storage"
                               Extension  "SPV_KHR_8bit_storage"
-                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle12.frag.out

@@ -9,8 +9,8 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to
                               Capability Shader
                               Capability Shader
                               Capability StorageUniformBufferBlock16
                               Capability StorageUniformBufferBlock16
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_16bit_storage"
                               Extension  "SPV_KHR_16bit_storage"
-                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle13.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle13.frag
 
 
                               Capability Shader
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle14.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle14.frag
 
 
                               Capability Shader
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               EntryPoint Fragment 4  "main"
                               EntryPoint Fragment 4  "main"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle15.frag.out

@@ -8,7 +8,7 @@ WARNING: 0:16: '' : all default precisions are highp; use precision statements t
 
 
                               Capability Shader
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle16.frag.out

@@ -6,7 +6,7 @@ spv.bufferhandle16.frag
                               Capability Shader
                               Capability Shader
                               Capability Int64
                               Capability Int64
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               EntryPoint Fragment 4  "main"
                               EntryPoint Fragment 4  "main"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle18.frag.out

@@ -6,7 +6,7 @@ spv.bufferhandle18.frag
                               Capability Shader
                               Capability Shader
                               Capability Int64
                               Capability Int64
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               EntryPoint Fragment 4  "main"
                               EntryPoint Fragment 4  "main"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle2.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle2.frag
 
 
                               Capability Shader
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle3.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle3.frag
 
 
                               Capability Shader
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle4.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle4.frag
 
 
                               Capability Shader
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle5.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle5.frag
 
 
                               Capability Shader
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               EntryPoint Fragment 4  "main"
                               EntryPoint Fragment 4  "main"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle6.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle6.frag
 
 
                               Capability Shader
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle7.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle7.frag
 
 
                               Capability Shader
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle8.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle8.frag
 
 
                               Capability Shader
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle9.frag.out

@@ -6,7 +6,7 @@ spv.bufferhandle9.frag
                               Capability Shader
                               Capability Shader
                               Capability Int64
                               Capability Int64
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.coopmat.comp.out

@@ -9,8 +9,8 @@ spv.coopmat.comp
                               Capability VulkanMemoryModelKHR
                               Capability VulkanMemoryModelKHR
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability CooperativeMatrixNV
                               Capability CooperativeMatrixNV
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_16bit_storage"
                               Extension  "SPV_KHR_16bit_storage"
-                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_vulkan_memory_model"
                               Extension  "SPV_KHR_vulkan_memory_model"
                               Extension  "SPV_NV_cooperative_matrix"
                               Extension  "SPV_NV_cooperative_matrix"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.intcoopmat.comp.out

@@ -10,8 +10,8 @@ spv.intcoopmat.comp
                               Capability VulkanMemoryModelKHR
                               Capability VulkanMemoryModelKHR
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability CooperativeMatrixNV
                               Capability CooperativeMatrixNV
+                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_8bit_storage"
                               Extension  "SPV_KHR_8bit_storage"
-                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_vulkan_memory_model"
                               Extension  "SPV_KHR_vulkan_memory_model"
                               Extension  "SPV_NV_cooperative_matrix"
                               Extension  "SPV_NV_cooperative_matrix"

+ 4 - 1
3rdparty/glslang/glslang/Include/Types.h

@@ -135,6 +135,8 @@ struct TSampler {   // misnomer now; includes images, textures without sampler,
     bool isYuv()         const { return yuv; }
     bool isYuv()         const { return yuv; }
 #endif
 #endif
     void setCombined(bool c) { combined = c; }
     void setCombined(bool c) { combined = c; }
+    void setBasicType(TBasicType t) { type = t; };
+    TBasicType getBasicType()  const { return type; };
     bool isShadow()      const { return shadow; }
     bool isShadow()      const { return shadow; }
     bool isArrayed()     const { return arrayed; }
     bool isArrayed()     const { return arrayed; }
 
 
@@ -2193,7 +2195,8 @@ public:
     const TTypeList* getStruct() const { assert(isStruct()); return structure; }
     const TTypeList* getStruct() const { assert(isStruct()); return structure; }
     void setStruct(TTypeList* s) { assert(isStruct()); structure = s; }
     void setStruct(TTypeList* s) { assert(isStruct()); structure = s; }
     TTypeList* getWritableStruct() const { assert(isStruct()); return structure; }  // This should only be used when known to not be sharing with other threads
     TTypeList* getWritableStruct() const { assert(isStruct()); return structure; }  // This should only be used when known to not be sharing with other threads
-
+    void setBasicType(const TBasicType& t) { basicType = t; }
+    
     int computeNumComponents() const
     int computeNumComponents() const
     {
     {
         int components = 0;
         int components = 0;

+ 1 - 0
3rdparty/glslang/glslang/Include/intermediate.h

@@ -1189,6 +1189,7 @@ public:
     virtual void traverse(TIntermTraverser*);
     virtual void traverse(TIntermTraverser*);
     TOperator getFlowOp() const { return flowOp; }
     TOperator getFlowOp() const { return flowOp; }
     TIntermTyped* getExpression() const { return expression; }
     TIntermTyped* getExpression() const { return expression; }
+    void setExpression(TIntermTyped* pExpression) { expression = pExpression; }
 protected:
 protected:
     TOperator flowOp;
     TOperator flowOp;
     TIntermTyped* expression;
     TIntermTyped* expression;

+ 78 - 70
3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp

@@ -562,56 +562,12 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const
     return true;
     return true;
 }
 }
 
 
-// This is 'mechanism' here, it does any conversion told.
-// It is about basic type, not about shape.
-// The policy comes from the shader or the calling code.
-TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped* node) const
+bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& newOp) const
 {
 {
-    //
-    // Add a new newNode for the conversion.
-    //
-    TIntermUnary* newNode = nullptr;
-
-    TOperator newOp = EOpNull;
-
-    bool convertToIntTypes = (convertTo == EbtInt8  || convertTo == EbtUint8  ||
-                              convertTo == EbtInt16 || convertTo == EbtUint16 ||
-                              convertTo == EbtInt   || convertTo == EbtUint   ||
-                              convertTo == EbtInt64 || convertTo == EbtUint64);
-
-    bool convertFromIntTypes = (node->getBasicType() == EbtInt8  || node->getBasicType() == EbtUint8  ||
-                                node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16 ||
-                                node->getBasicType() == EbtInt   || node->getBasicType() == EbtUint   ||
-                                node->getBasicType() == EbtInt64 || node->getBasicType() == EbtUint64);
-
-    bool convertToFloatTypes = (convertTo == EbtFloat16 || convertTo == EbtFloat || convertTo == EbtDouble);
-
-    bool convertFromFloatTypes = (node->getBasicType() == EbtFloat16 ||
-                                  node->getBasicType() == EbtFloat ||
-                                  node->getBasicType() == EbtDouble);
-
-    if (! getArithemeticInt8Enabled()) {
-        if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) ||
-            ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes))
-            return nullptr;
-    }
-
-    if (! getArithemeticInt16Enabled()) {
-        if (((convertTo == EbtInt16 || convertTo == EbtUint16) && ! convertFromIntTypes) ||
-            ((node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16) && ! convertToIntTypes))
-            return nullptr;
-    }
-
-    if (! getArithemeticFloat16Enabled()) {
-        if ((convertTo == EbtFloat16 && ! convertFromFloatTypes) ||
-            (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes))
-            return nullptr;
-    }
-
-    switch (convertTo) {
+    switch (dst) {
 #ifndef GLSLANG_WEB
 #ifndef GLSLANG_WEB
     case EbtDouble:
     case EbtDouble:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtUint:    newOp = EOpConvUintToDouble;    break;
         case EbtUint:    newOp = EOpConvUintToDouble;    break;
         case EbtBool:    newOp = EOpConvBoolToDouble;    break;
         case EbtBool:    newOp = EOpConvBoolToDouble;    break;
         case EbtFloat:   newOp = EOpConvFloatToDouble;   break;
         case EbtFloat:   newOp = EOpConvFloatToDouble;   break;
@@ -624,12 +580,12 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtInt64:   newOp = EOpConvInt64ToDouble;   break;
         case EbtInt64:   newOp = EOpConvInt64ToDouble;   break;
         case EbtUint64:  newOp = EOpConvUint64ToDouble;  break;
         case EbtUint64:  newOp = EOpConvUint64ToDouble;  break;
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
 #endif
 #endif
     case EbtFloat:
     case EbtFloat:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtInt:     newOp = EOpConvIntToFloat;     break;
         case EbtInt:     newOp = EOpConvIntToFloat;     break;
         case EbtUint:    newOp = EOpConvUintToFloat;    break;
         case EbtUint:    newOp = EOpConvUintToFloat;    break;
         case EbtBool:    newOp = EOpConvBoolToFloat;    break;
         case EbtBool:    newOp = EOpConvBoolToFloat;    break;
@@ -644,12 +600,12 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtUint64:  newOp = EOpConvUint64ToFloat;  break;
         case EbtUint64:  newOp = EOpConvUint64ToFloat;  break;
 #endif
 #endif
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
 #ifndef GLSLANG_WEB
 #ifndef GLSLANG_WEB
     case EbtFloat16:
     case EbtFloat16:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtInt8:   newOp = EOpConvInt8ToFloat16;   break;
         case EbtInt8:   newOp = EOpConvInt8ToFloat16;   break;
         case EbtUint8:  newOp = EOpConvUint8ToFloat16;  break;
         case EbtUint8:  newOp = EOpConvUint8ToFloat16;  break;
         case EbtInt16:  newOp = EOpConvInt16ToFloat16;  break;
         case EbtInt16:  newOp = EOpConvInt16ToFloat16;  break;
@@ -662,12 +618,12 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtInt64:  newOp = EOpConvInt64ToFloat16;  break;
         case EbtInt64:  newOp = EOpConvInt64ToFloat16;  break;
         case EbtUint64: newOp = EOpConvUint64ToFloat16; break;
         case EbtUint64: newOp = EOpConvUint64ToFloat16; break;
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
 #endif
 #endif
     case EbtBool:
     case EbtBool:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtInt:     newOp = EOpConvIntToBool;     break;
         case EbtInt:     newOp = EOpConvIntToBool;     break;
         case EbtUint:    newOp = EOpConvUintToBool;    break;
         case EbtUint:    newOp = EOpConvUintToBool;    break;
         case EbtFloat:   newOp = EOpConvFloatToBool;   break;
         case EbtFloat:   newOp = EOpConvFloatToBool;   break;
@@ -682,12 +638,12 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtUint64:  newOp = EOpConvUint64ToBool;  break;
         case EbtUint64:  newOp = EOpConvUint64ToBool;  break;
 #endif
 #endif
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
 #ifndef GLSLANG_WEB
 #ifndef GLSLANG_WEB
     case EbtInt8:
     case EbtInt8:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtUint8:   newOp = EOpConvUint8ToInt8;   break;
         case EbtUint8:   newOp = EOpConvUint8ToInt8;   break;
         case EbtInt16:   newOp = EOpConvInt16ToInt8;   break;
         case EbtInt16:   newOp = EOpConvInt16ToInt8;   break;
         case EbtUint16:  newOp = EOpConvUint16ToInt8;  break;
         case EbtUint16:  newOp = EOpConvUint16ToInt8;  break;
@@ -700,11 +656,11 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtDouble:  newOp = EOpConvDoubleToInt8;  break;
         case EbtDouble:  newOp = EOpConvDoubleToInt8;  break;
         case EbtFloat16: newOp = EOpConvFloat16ToInt8; break;
         case EbtFloat16: newOp = EOpConvFloat16ToInt8; break;
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
     case EbtUint8:
     case EbtUint8:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtInt8:    newOp = EOpConvInt8ToUint8;    break;
         case EbtInt8:    newOp = EOpConvInt8ToUint8;    break;
         case EbtInt16:   newOp = EOpConvInt16ToUint8;   break;
         case EbtInt16:   newOp = EOpConvInt16ToUint8;   break;
         case EbtUint16:  newOp = EOpConvUint16ToUint8;  break;
         case EbtUint16:  newOp = EOpConvUint16ToUint8;  break;
@@ -717,12 +673,12 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtDouble:  newOp = EOpConvDoubleToUint8;  break;
         case EbtDouble:  newOp = EOpConvDoubleToUint8;  break;
         case EbtFloat16: newOp = EOpConvFloat16ToUint8; break;
         case EbtFloat16: newOp = EOpConvFloat16ToUint8; break;
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
 
 
     case EbtInt16:
     case EbtInt16:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtUint8:   newOp = EOpConvUint8ToInt16;   break;
         case EbtUint8:   newOp = EOpConvUint8ToInt16;   break;
         case EbtInt8:    newOp = EOpConvInt8ToInt16;    break;
         case EbtInt8:    newOp = EOpConvInt8ToInt16;    break;
         case EbtUint16:  newOp = EOpConvUint16ToInt16;  break;
         case EbtUint16:  newOp = EOpConvUint16ToInt16;  break;
@@ -735,11 +691,11 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtDouble:  newOp = EOpConvDoubleToInt16;  break;
         case EbtDouble:  newOp = EOpConvDoubleToInt16;  break;
         case EbtFloat16: newOp = EOpConvFloat16ToInt16; break;
         case EbtFloat16: newOp = EOpConvFloat16ToInt16; break;
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
     case EbtUint16:
     case EbtUint16:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtInt8:    newOp = EOpConvInt8ToUint16;    break;
         case EbtInt8:    newOp = EOpConvInt8ToUint16;    break;
         case EbtUint8:   newOp = EOpConvUint8ToUint16;   break;
         case EbtUint8:   newOp = EOpConvUint8ToUint16;   break;
         case EbtInt16:   newOp = EOpConvInt16ToUint16;   break;
         case EbtInt16:   newOp = EOpConvInt16ToUint16;   break;
@@ -752,13 +708,13 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtDouble:  newOp = EOpConvDoubleToUint16;  break;
         case EbtDouble:  newOp = EOpConvDoubleToUint16;  break;
         case EbtFloat16: newOp = EOpConvFloat16ToUint16; break;
         case EbtFloat16: newOp = EOpConvFloat16ToUint16; break;
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
 #endif
 #endif
 
 
     case EbtInt:
     case EbtInt:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtUint:    newOp = EOpConvUintToInt;    break;
         case EbtUint:    newOp = EOpConvUintToInt;    break;
         case EbtBool:    newOp = EOpConvBoolToInt;    break;
         case EbtBool:    newOp = EOpConvBoolToInt;    break;
         case EbtFloat:   newOp = EOpConvFloatToInt;   break;
         case EbtFloat:   newOp = EOpConvFloatToInt;   break;
@@ -773,11 +729,11 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtUint64:  newOp = EOpConvUint64ToInt;  break;
         case EbtUint64:  newOp = EOpConvUint64ToInt;  break;
 #endif
 #endif
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
     case EbtUint:
     case EbtUint:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtInt:     newOp = EOpConvIntToUint;     break;
         case EbtInt:     newOp = EOpConvIntToUint;     break;
         case EbtBool:    newOp = EOpConvBoolToUint;    break;
         case EbtBool:    newOp = EOpConvBoolToUint;    break;
         case EbtFloat:   newOp = EOpConvFloatToUint;   break;
         case EbtFloat:   newOp = EOpConvFloatToUint;   break;
@@ -792,12 +748,12 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtUint64:  newOp = EOpConvUint64ToUint;  break;
         case EbtUint64:  newOp = EOpConvUint64ToUint;  break;
 #endif
 #endif
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
 #ifndef GLSLANG_WEB
 #ifndef GLSLANG_WEB
     case EbtInt64:
     case EbtInt64:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtInt8:    newOp = EOpConvInt8ToInt64;    break;
         case EbtInt8:    newOp = EOpConvInt8ToInt64;    break;
         case EbtUint8:   newOp = EOpConvUint8ToInt64;   break;
         case EbtUint8:   newOp = EOpConvUint8ToInt64;   break;
         case EbtInt16:   newOp = EOpConvInt16ToInt64;   break;
         case EbtInt16:   newOp = EOpConvInt16ToInt64;   break;
@@ -810,11 +766,11 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtFloat16: newOp = EOpConvFloat16ToInt64; break;
         case EbtFloat16: newOp = EOpConvFloat16ToInt64; break;
         case EbtUint64:  newOp = EOpConvUint64ToInt64;  break;
         case EbtUint64:  newOp = EOpConvUint64ToInt64;  break;
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
     case EbtUint64:
     case EbtUint64:
-        switch (node->getBasicType()) {
+        switch (src) {
         case EbtInt8:    newOp = EOpConvInt8ToUint64;    break;
         case EbtInt8:    newOp = EOpConvInt8ToUint64;    break;
         case EbtUint8:   newOp = EOpConvUint8ToUint64;   break;
         case EbtUint8:   newOp = EOpConvUint8ToUint64;   break;
         case EbtInt16:   newOp = EOpConvInt16ToUint64;   break;
         case EbtInt16:   newOp = EOpConvInt16ToUint64;   break;
@@ -827,11 +783,63 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
         case EbtFloat16: newOp = EOpConvFloat16ToUint64; break;
         case EbtFloat16: newOp = EOpConvFloat16ToUint64; break;
         case EbtInt64:   newOp = EOpConvInt64ToUint64;   break;
         case EbtInt64:   newOp = EOpConvInt64ToUint64;   break;
         default:
         default:
-            return nullptr;
+            return false;
         }
         }
         break;
         break;
 #endif
 #endif
     default:
     default:
+        return false;
+    }
+    return true;
+}
+
+// This is 'mechanism' here, it does any conversion told.
+// It is about basic type, not about shape.
+// The policy comes from the shader or the calling code.
+TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped* node) const
+{
+    //
+    // Add a new newNode for the conversion.
+    //
+    TIntermUnary* newNode = nullptr;
+
+    TOperator newOp = EOpNull;
+
+    bool convertToIntTypes = (convertTo == EbtInt8  || convertTo == EbtUint8  ||
+                              convertTo == EbtInt16 || convertTo == EbtUint16 ||
+                              convertTo == EbtInt   || convertTo == EbtUint   ||
+                              convertTo == EbtInt64 || convertTo == EbtUint64);
+
+    bool convertFromIntTypes = (node->getBasicType() == EbtInt8  || node->getBasicType() == EbtUint8  ||
+                                node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16 ||
+                                node->getBasicType() == EbtInt   || node->getBasicType() == EbtUint   ||
+                                node->getBasicType() == EbtInt64 || node->getBasicType() == EbtUint64);
+
+    bool convertToFloatTypes = (convertTo == EbtFloat16 || convertTo == EbtFloat || convertTo == EbtDouble);
+
+    bool convertFromFloatTypes = (node->getBasicType() == EbtFloat16 ||
+                                  node->getBasicType() == EbtFloat ||
+                                  node->getBasicType() == EbtDouble);
+
+    if (! getArithemeticInt8Enabled()) {
+        if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) ||
+            ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes))
+            return nullptr;
+    }
+
+    if (! getArithemeticInt16Enabled()) {
+        if (((convertTo == EbtInt16 || convertTo == EbtUint16) && ! convertFromIntTypes) ||
+            ((node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16) && ! convertToIntTypes))
+            return nullptr;
+    }
+
+    if (! getArithemeticFloat16Enabled()) {
+        if ((convertTo == EbtFloat16 && ! convertFromFloatTypes) ||
+            (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes))
+            return nullptr;
+    }
+
+    if (!buildConvertOp(convertTo, node->getBasicType(), newOp)) {
         return nullptr;
         return nullptr;
     }
     }
 
 

+ 3 - 1
3rdparty/glslang/glslang/MachineIndependent/localintermediate.h

@@ -786,6 +786,9 @@ public:
     void merge(TInfoSink&, TIntermediate&);
     void merge(TInfoSink&, TIntermediate&);
     void finalCheck(TInfoSink&, bool keepUncalled);
     void finalCheck(TInfoSink&, bool keepUncalled);
 
 
+    bool buildConvertOp(TBasicType dst, TBasicType src, TOperator& convertOp) const;
+    TIntermTyped* createConversion(TBasicType convertTo, TIntermTyped* node) const;
+
     void addIoAccessed(const TString& name) { ioAccessed.insert(name); }
     void addIoAccessed(const TString& name) { ioAccessed.insert(name); }
     bool inIoAccessed(const TString& name) const { return ioAccessed.find(name) != ioAccessed.end(); }
     bool inIoAccessed(const TString& name) const { return ioAccessed.find(name) != ioAccessed.end(); }
 
 
@@ -876,7 +879,6 @@ protected:
     bool specConstantPropagates(const TIntermTyped&, const TIntermTyped&);
     bool specConstantPropagates(const TIntermTyped&, const TIntermTyped&);
     void performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root);
     void performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root);
     bool isConversionAllowed(TOperator op, TIntermTyped* node) const;
     bool isConversionAllowed(TOperator op, TIntermTyped* node) const;
-    TIntermTyped* createConversion(TBasicType convertTo, TIntermTyped* node) const;
     std::tuple<TBasicType, TBasicType> getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const;
     std::tuple<TBasicType, TBasicType> getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const;
 
 
     // JohnK: I think this function should go away.
     // JohnK: I think this function should go away.

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

@@ -487,6 +487,8 @@ public:
         environment.target.version = version;
         environment.target.version = version;
     }
     }
 
 
+    void getStrings(const char* const* &s, int& n) { s = strings; n = numStrings; };
+
 #ifdef ENABLE_HLSL
 #ifdef ENABLE_HLSL
     void setEnvTargetHlslFunctionality1() { environment.target.hlslFunctionality1 = true; }
     void setEnvTargetHlslFunctionality1() { environment.target.hlslFunctionality1 = true; }
     bool getEnvTargetHlslFunctionality1() const { return environment.target.hlslFunctionality1; }
     bool getEnvTargetHlslFunctionality1() const { return environment.target.hlslFunctionality1; }
@@ -773,7 +775,7 @@ public:
     TProgram();
     TProgram();
     virtual ~TProgram();
     virtual ~TProgram();
     void addShader(TShader* shader) { stages[shader->stage].push_back(shader); }
     void addShader(TShader* shader) { stages[shader->stage].push_back(shader); }
-
+    std::list<TShader*>& getShaders(EShLanguage stage) { return stages[stage]; };
     // Link Validation interface
     // Link Validation interface
     bool link(EShMessages);
     bool link(EShMessages);
     const char* getInfoLog();
     const char* getInfoLog();

+ 2 - 2
3rdparty/glslang/known_good.json

@@ -5,14 +5,14 @@
       "site" : "github",
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Tools",
       "subrepo" : "KhronosGroup/SPIRV-Tools",
       "subdir" : "External/spirv-tools",
       "subdir" : "External/spirv-tools",
-      "commit" : "bbb29870b510f83f99994358179c9ea6838c3100"
+      "commit" : "c3ca04741945c332ddbeb7d7125dbae2809b7195"
     },
     },
     {
     {
       "name" : "spirv-tools/external/spirv-headers",
       "name" : "spirv-tools/external/spirv-headers",
       "site" : "github",
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Headers",
       "subrepo" : "KhronosGroup/SPIRV-Headers",
       "subdir" : "External/spirv-tools/external/spirv-headers",
       "subdir" : "External/spirv-tools/external/spirv-headers",
-      "commit" : "601d738723ac381741311c6c98c36d6170be14a2"
+      "commit" : "b252a50953ac4375cb1864e94f4b0234db9d215d"
     }
     }
   ]
   ]
 }
 }