[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

vulkan: Changes to 'ubuntu'



 .travis.yml                                                                               |    2 
 BUILD.md                                                                                  |    1 
 CMakeLists.txt                                                                            |    8 
 debian/changelog                                                                          |   13 
 debian/patches/demos-mir.diff                                                             |   22 
 debian/patches/loader-mir.diff                                                            |   14 
 demos/cube.c                                                                              |    8 
 demos/cube.cpp                                                                            |  261 
 external/glslang/CMakeLists.txt                                                           |    5 
 external/glslang/OGLCompilersDLL/CMakeLists.txt                                           |    9 
 external/glslang/SPIRV/CMakeLists.txt                                                     |   14 
 external/glslang/SPIRV/GLSL.ext.AMD.h                                                     |    2 
 external/glslang/SPIRV/GLSL.ext.KHR.h                                                     |    3 
 external/glslang/SPIRV/GlslangToSpv.cpp                                                   |   46 
 external/glslang/SPIRV/doc.cpp                                                            |    2 
 external/glslang/SPIRV/spirv.hpp                                                          |    6 
 external/glslang/StandAlone/CMakeLists.txt                                                |   13 
 external/glslang/StandAlone/StandAlone.cpp                                                |  628 
 external/glslang/Test/300.vert                                                            |   17 
 external/glslang/Test/450.frag                                                            |    2 
 external/glslang/Test/450.geom                                                            |    2 
 external/glslang/Test/450.tese                                                            |    7 
 external/glslang/Test/baseResults/300.vert.out                                            |   21 
 external/glslang/Test/baseResults/450.frag.out                                            |    5 
 external/glslang/Test/baseResults/450.geom.out                                            |    5 
 external/glslang/Test/baseResults/450.tese.out                                            |   25 
 external/glslang/Test/baseResults/glsl.-D-U.frag.out                                      |   55 
 external/glslang/Test/baseResults/hlsl.-D-U.frag.out                                      |   65 
 external/glslang/Test/baseResults/hlsl.array.frag.out                                     |    9 
 external/glslang/Test/baseResults/hlsl.buffer.frag.out                                    |  406 
 external/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out                            |  194 
 external/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out                            |  561 
 external/glslang/Test/baseResults/hlsl.clipdistance-3.vert.out                            |  229 
 external/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out                            |  386 
 external/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out                            |  435 
 external/glslang/Test/baseResults/hlsl.constructArray.vert.out                            |  381 
 external/glslang/Test/baseResults/hlsl.entry-in.frag.out                                  |   17 
 external/glslang/Test/baseResults/hlsl.getsampleposition.dx10.frag.out                    |    9 
 external/glslang/Test/baseResults/hlsl.hull.3.tesc.out                                    |  382 
 external/glslang/Test/baseResults/hlsl.hull.void.tesc.out                                 |    3 
 external/glslang/Test/baseResults/hlsl.inoutquals.frag.out                                |  483 
 external/glslang/Test/baseResults/hlsl.intrinsics.comp.out                                |  576 
 external/glslang/Test/baseResults/hlsl.intrinsics.double.frag.out                         |   72 
 external/glslang/Test/baseResults/hlsl.intrinsics.evalfns.frag.out                        |    9 
 external/glslang/Test/baseResults/hlsl.intrinsics.frag.out                                | 4980 +--
 external/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out                       |   32 
 external/glslang/Test/baseResults/hlsl.intrinsics.vert.out                                | 2152 -
 external/glslang/Test/baseResults/hlsl.precedence2.frag.out                               |   36 
 external/glslang/Test/baseResults/hlsl.reflection.vert.out                                |   32 
 external/glslang/Test/baseResults/hlsl.scalar2matrix.frag.out                             |  506 
 external/glslang/Test/baseResults/hlsl.semantic.geom.out                                  |  179 
 external/glslang/Test/baseResults/hlsl.semantic.vert.out                                  |  278 
 external/glslang/Test/baseResults/hlsl.struct.frag.out                                    |   51 
 external/glslang/Test/baseResults/hlsl.struct.split.assign.frag.out                       |    9 
 external/glslang/Test/baseResults/hlsl.structbuffer.append.fn.frag.out                    |    9 
 external/glslang/Test/baseResults/hlsl.structbuffer.append.frag.out                       |    9 
 external/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out                      |    9 
 external/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out                         |    9 
 external/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out                     |    9 
 external/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out                           |    9 
 external/glslang/Test/baseResults/hlsl.structbuffer.frag.out                              |    9 
 external/glslang/Test/baseResults/hlsl.structbuffer.incdec.frag.out                       |    9 
 external/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out                           |    9 
 external/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out                       |    9 
 external/glslang/Test/baseResults/hlsl.switch.frag.out                                    |   18 
 external/glslang/Test/baseResults/hlsl.synthesizeInput.frag.out                           |  151 
 external/glslang/Test/baseResults/hlsl.target.frag.out                                    |  188 
 external/glslang/Test/baseResults/hlsl.targetStruct1.frag.out                             |  277 
 external/glslang/Test/baseResults/hlsl.targetStruct2.frag.out                             |  277 
 external/glslang/Test/baseResults/hlsl.type.half.frag.out                                 |   67 
 external/glslang/Test/baseResults/hlsl.type.identifier.frag.out                           |  111 
 external/glslang/Test/baseResults/spv.450.tesc.out                                        |    3 
 external/glslang/Test/baseResults/spv.OVR_multiview.vert.out                              |   57 
 external/glslang/Test/baseResults/spv.arbPostDepthCoverage.frag.out                       |   43 
 external/glslang/Test/baseResults/spv.arbPostDepthCoverage_Error.frag.out                 |    7 
 external/glslang/Test/baseResults/spv.extPostDepthCoverage.frag.out                       |   23 
 external/glslang/Test/baseResults/spv.extPostDepthCoverage_Error.frag.out                 |    4 
 external/glslang/Test/baseResults/spv.shaderStencilExport.frag.out                        |   26 
 external/glslang/Test/baseResults/spv.specConstant.vert.out                               |    6 
 external/glslang/Test/baseResults/spv.texture.sampler.transform.frag.out                  |   29 
 external/glslang/Test/glsl.-D-U.frag                                                      |   32 
 external/glslang/Test/hlsl.-D-U.frag                                                      |   31 
 external/glslang/Test/hlsl.buffer.frag                                                    |   39 
 external/glslang/Test/hlsl.clipdistance-1.vert                                            |    8 
 external/glslang/Test/hlsl.clipdistance-2.vert                                            |   15 
 external/glslang/Test/hlsl.clipdistance-3.vert                                            |   13 
 external/glslang/Test/hlsl.clipdistance-4.vert                                            |   21 
 external/glslang/Test/hlsl.clipdistance-5.vert                                            |   21 
 external/glslang/Test/hlsl.constructArray.vert                                            |   10 
 external/glslang/Test/hlsl.hull.3.tesc                                                    |   39 
 external/glslang/Test/hlsl.hull.void.tesc                                                 |    2 
 external/glslang/Test/hlsl.inoutquals.frag                                                |    5 
 external/glslang/Test/hlsl.reflection.vert                                                |   45 
 external/glslang/Test/hlsl.scalar2matrix.frag                                             |   28 
 external/glslang/Test/hlsl.synthesizeInput.frag                                           |    9 
 external/glslang/Test/hlsl.target.frag                                                    |   10 
 external/glslang/Test/hlsl.targetStruct1.frag                                             |   19 
 external/glslang/Test/hlsl.targetStruct2.frag                                             |   19 
 external/glslang/Test/hlsl.type.identifier.frag                                           |    1 
 external/glslang/Test/runtests                                                            |   18 
 external/glslang/Test/spv.OVR_multiview.vert                                              |    9 
 external/glslang/Test/spv.arbPostDepthCoverage.frag                                       |   13 
 external/glslang/Test/spv.arbPostDepthCoverage_Error.frag                                 |   12 
 external/glslang/Test/spv.extPostDepthCoverage.frag                                       |    9 
 external/glslang/Test/spv.extPostDepthCoverage_Error.frag                                 |    9 
 external/glslang/Test/spv.shaderStencilExport.frag                                        |    8 
 external/glslang/Test/spv.targetOpenGL.vert                                               |    9 
 external/glslang/Test/spv.targetVulkan.vert                                               |    9 
 external/glslang/glslang/CMakeLists.txt                                                   |   19 
 external/glslang/glslang/Include/BaseTypes.h                                              |    3 
 external/glslang/glslang/Include/Types.h                                                  |   31 
 external/glslang/glslang/Include/intermediate.h                                           |   13 
 external/glslang/glslang/MachineIndependent/Initialize.cpp                                |   47 
 external/glslang/glslang/MachineIndependent/Intermediate.cpp                              |   45 
 external/glslang/glslang/MachineIndependent/ParseHelper.cpp                               |   50 
 external/glslang/glslang/MachineIndependent/ParseHelper.h                                 |    2 
 external/glslang/glslang/MachineIndependent/Scan.cpp                                      |    6 
 external/glslang/glslang/MachineIndependent/ShaderLang.cpp                                |  132 
 external/glslang/glslang/MachineIndependent/Versions.cpp                                  |   28 
 external/glslang/glslang/MachineIndependent/Versions.h                                    |   33 
 external/glslang/glslang/MachineIndependent/intermOut.cpp                                 |    2 
 external/glslang/glslang/MachineIndependent/iomapper.cpp                                  |   10 
 external/glslang/glslang/MachineIndependent/linkValidate.cpp                              |   12 
 external/glslang/glslang/MachineIndependent/localintermediate.h                           |    7 
 external/glslang/glslang/MachineIndependent/reflection.cpp                                |    4 
 external/glslang/glslang/OSDependent/Unix/CMakeLists.txt                                  |    9 
 external/glslang/glslang/OSDependent/Windows/CMakeLists.txt                               |    9 
 external/glslang/glslang/Public/ShaderLang.h                                              |   68 
 external/glslang/gtests/CMakeLists.txt                                                    |    6 
 external/glslang/gtests/Hlsl.FromFile.cpp                                                 |   12 
 external/glslang/gtests/Spv.FromFile.cpp                                                  |    8 
 external/glslang/hlsl/CMakeLists.txt                                                      |    9 
 external/glslang/hlsl/hlslGrammar.cpp                                                     |  165 
 external/glslang/hlsl/hlslGrammar.h                                                       |    5 
 external/glslang/hlsl/hlslParseHelper.cpp                                                 |  522 
 external/glslang/hlsl/hlslParseHelper.h                                                   |   21 
 external/glslang/hlsl/hlslScanContext.cpp                                                 |    2 
 external/spirv-tools/.travis.yml                                                          |   21 
 external/spirv-tools/CHANGES                                                              |   22 
 external/spirv-tools/CMakeLists.txt                                                       |   23 
 external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.core.grammar.json     |  149 
 external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.h                     |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.hpp                   |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.hpp11                 |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.json                  |   24 
 external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.lua                   |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.0/spirv.py                    |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.core.grammar.json     |  149 
 external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.h                     |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.hpp                   |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.hpp11                 |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.json                  |   24 
 external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.lua                   |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.1/spirv.py                    |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.core.grammar.json     |  149 
 external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.h                     |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.hpp                   |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.hpp11                 |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.json                  |   24 
 external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.lua                   |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/1.2/spirv.py                    |   20 
 external/spirv-tools/external/spirv-headers/include/spirv/spir-v.xml                      |    5 
 external/spirv-tools/include/spirv-tools/libspirv.h                                       |    3 
 external/spirv-tools/include/spirv-tools/markv.h                                          |   91 
 external/spirv-tools/include/spirv-tools/optimizer.hpp                                    |   46 
 external/spirv-tools/source/CMakeLists.txt                                                |   14 
 external/spirv-tools/source/assembly_grammar.cpp                                          |    4 
 external/spirv-tools/source/assembly_grammar.h                                            |   16 
 external/spirv-tools/source/binary.cpp                                                    |   67 
 external/spirv-tools/source/comp/CMakeLists.txt                                           |   34 
 external/spirv-tools/source/comp/markv_codec.cpp                                          | 1556 +
 external/spirv-tools/source/ext_inst.cpp                                                  |   27 
 external/spirv-tools/source/extinst.spv-amd-shader-ballot.grammar.json                    |   41 
 external/spirv-tools/source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json |   14 
 external/spirv-tools/source/extinst.spv-amd-shader-trinary-minmax.grammar.json            |   95 
 external/spirv-tools/source/operand.cpp                                                   |   63 
 external/spirv-tools/source/operand.h                                                     |   31 
 external/spirv-tools/source/opt/CMakeLists.txt                                            |   17 
 external/spirv-tools/source/opt/basic_block.h                                             |   17 
 external/spirv-tools/source/opt/block_merge_pass.cpp                                      |  143 
 external/spirv-tools/source/opt/block_merge_pass.h                                        |   73 
 external/spirv-tools/source/opt/inline_pass.cpp                                           |    2 
 external/spirv-tools/source/opt/insert_extract_elim.cpp                                   |  125 
 external/spirv-tools/source/opt/insert_extract_elim.h                                     |   77 
 external/spirv-tools/source/opt/local_access_chain_convert_pass.cpp                       |    2 
 external/spirv-tools/source/opt/local_single_block_elim_pass.cpp                          |    2 
 external/spirv-tools/source/opt/local_single_store_elim_pass.cpp                          |  469 
 external/spirv-tools/source/opt/local_single_store_elim_pass.h                            |  220 
 external/spirv-tools/source/opt/optimizer.cpp                                             |   15 
 external/spirv-tools/source/opt/passes.h                                                  |    3 
 external/spirv-tools/source/text.cpp                                                      |   19 
 external/spirv-tools/source/util/bit_stream.cpp                                           |   72 
 external/spirv-tools/source/util/bit_stream.h                                             |   68 
 external/spirv-tools/source/util/huffman_codec.h                                          |  299 
 external/spirv-tools/source/util/move_to_front.h                                          |  649 
 external/spirv-tools/source/val/validation_state.cpp                                      |   20 
 external/spirv-tools/source/val/validation_state.h                                        |    2 
 external/spirv-tools/source/validate.cpp                                                  |    4 
 external/spirv-tools/test/CMakeLists.txt                                                  |   13 
 external/spirv-tools/test/bit_stream.cpp                                                  |  148 
 external/spirv-tools/test/comp/CMakeLists.txt                                             |   23 
 external/spirv-tools/test/comp/markv_codec_test.cpp                                       |  433 
 external/spirv-tools/test/huffman_codec.cpp                                               |  220 
 external/spirv-tools/test/move_to_front_test.cpp                                          |  785 
 external/spirv-tools/test/operand_pattern_test.cpp                                        |   90 
 external/spirv-tools/test/opt/CMakeLists.txt                                              |   15 
 external/spirv-tools/test/opt/block_merge_test.cpp                                        |  337 
 external/spirv-tools/test/opt/insert_extract_elim_test.cpp                                |  334 
 external/spirv-tools/test/opt/local_single_store_elim_test.cpp                            |  521 
 external/spirv-tools/test/text_to_binary.extension_test.cpp                               |  106 
 external/spirv-tools/test/val/val_extensions_test.cpp                                     |    6 
 external/spirv-tools/tools/CMakeLists.txt                                                 |   17 
 external/spirv-tools/tools/comp/markv.cpp                                                 |  247 
 external/spirv-tools/tools/emacs/CMakeLists.txt                                           |    4 
 external/spirv-tools/tools/lesspipe/CMakeLists.txt                                        |    4 
 external/spirv-tools/tools/opt/opt.cpp                                                    |    6 
 external/spirv-tools/utils/generate_grammar_tables.py                                     |    9 
 external_revisions/glslang_revision                                                       |    2 
 external_revisions/spirv-headers_revision                                                 |    2 
 external_revisions/spirv-tools_revision                                                   |    2 
 include/vulkan/vk_icd.h                                                                   |    8 
 include/vulkan/vulkan.h                                                                   | 1212 
 include/vulkan/vulkan.hpp                                                                 |12620 +++++-----
 layers/CMakeLists.txt                                                                     |   14 
 layers/buffer_validation.cpp                                                              |  354 
 layers/buffer_validation.h                                                                |    5 
 layers/core_validation.cpp                                                                |  540 
 layers/core_validation_types.h                                                            |   10 
 layers/descriptor_sets.cpp                                                                |   77 
 layers/descriptor_sets.h                                                                  |   47 
 layers/linux/VkLayer_core_validation.json                                                 |   14 
 layers/linux/VkLayer_object_tracker.json                                                  |   14 
 layers/linux/VkLayer_parameter_validation.json                                            |   14 
 layers/linux/VkLayer_standard_validation.json                                             |    2 
 layers/linux/VkLayer_threading.json                                                       |    2 
 layers/linux/VkLayer_unique_objects.json                                                  |    2 
 layers/object_tracker.cpp                                                                 |  455 
 layers/parameter_validation.cpp                                                           |  739 
 layers/parameter_validation_utils.h                                                       |  103 
 layers/shader_validation.cpp                                                              |   37 
 layers/spec.py                                                                            |  357 
 layers/vk_layer_logging.h                                                                 |   20 
 layers/vk_layer_table.cpp                                                                 |   59 
 layers/vk_validation_error_database.txt                                                   | 1751 -
 layers/vk_validation_error_messages.h                                                     |  828 
 layers/vk_validation_stats.py                                                             |  414 
 layers/vuid_mapping.py                                                                    |  941 
 layers/windows/VkLayer_core_validation.json                                               |   14 
 layers/windows/VkLayer_object_tracker.json                                                |   14 
 layers/windows/VkLayer_parameter_validation.json                                          |   14 
 layers/windows/VkLayer_standard_validation.json                                           |    2 
 layers/windows/VkLayer_threading.json                                                     |    2 
 layers/windows/VkLayer_unique_objects.json                                                |    2 
 loader/CMakeLists.txt                                                                     |   49 
 loader/LoaderAndLayerInterface.md                                                         |   31 
 loader/asm_offset.c                                                                       |  117 
 loader/dev_ext_trampoline.c                                                               |  509 
 loader/extension_manual.c                                                                 |  148 
 loader/extension_manual.h                                                                 |   24 
 loader/loader.c                                                                           |   64 
 loader/loader.h                                                                           |    3 
 loader/phys_dev_ext.c                                                                     |  779 
 loader/trampoline.c                                                                       |   16 
 loader/unknown_ext_chain.c                                                                |  819 
 loader/unknown_ext_chain_gas.asm                                                          |  869 
 loader/unknown_ext_chain_masm.asm                                                         |  883 
 scripts/helper_file_generator.py                                                          |    8 
 scripts/loader_extension_generator.py                                                     |   71 
 scripts/parameter_validation_generator.py                                                 |  146 
 scripts/reg.py                                                                            |    4 
 scripts/spec.py                                                                           |  357 
 scripts/unique_objects_generator.py                                                       |    3 
 scripts/vk.xml                                                                            | 1142 
 scripts/vk_validation_stats.py                                                            |  450 
 scripts/vuid_mapping.py                                                                   | 1086 
 tests/_run_all_tests.ps1                                                                  |    2 
 tests/_vkvalidatelayerdoc.ps1                                                             |   18 
 tests/layer_validation_tests.cpp                                                          | 1838 -
 tests/layers/CMakeLists.txt                                                               |    4 
 tests/layers/device_profile_api.cpp                                                       |    7 
 tests/layers/linux/VkLayer_device_profile_api.json                                        |    2 
 tests/layers/linux/VkLayer_test.json                                                      |    2 
 tests/layers/linux/VkLayer_wrap_objects.json                                              |    2 
 tests/layers/vk_lunarg_device_profile_api_layer.h                                         |   17 
 tests/layers/windows/VkLayer_device_profile_api.json                                      |    2 
 tests/layers/windows/VkLayer_test.json                                                    |    2 
 tests/layers/windows/VkLayer_wrap_objects.json                                            |    2 
 tests/run_all_tests.sh                                                                    |    2 
 tests/vkrenderframework.cpp                                                               |   23 
 tests/vkrenderframework.h                                                                 |    2 
 tests/vkvalidatelayerdoc.sh                                                               |   14 
 update_external_sources.bat                                                               |    5 
 292 files changed, 38660 insertions(+), 16951 deletions(-)

New commits:
commit f5225086d255ae1573e9988e6193e87e83f4b752
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Tue Aug 1 13:31:15 2017 +0300

    release to artful

diff --git a/debian/changelog b/debian/changelog
index fb31584..76e30ac 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+vulkan (1.0.54.0+dfsg1-1ubuntu1) artful; urgency=medium
+
+  * Merge from Debian.
+  * patches: Refreshed.
+
+ -- Timo Aaltonen <tjaalton@debian.org>  Mon, 31 Jul 2017 16:57:18 +0300
+
 vulkan (1.0.54.0+dfsg1-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/debian/patches/demos-mir.diff b/debian/patches/demos-mir.diff
index 5add113..ba6228c 100644
--- a/debian/patches/demos-mir.diff
+++ b/debian/patches/demos-mir.diff
@@ -28,7 +28,7 @@
  #endif
  
  #ifdef ANDROID
-@@ -337,6 +338,9 @@ struct demo {
+@@ -336,6 +337,9 @@ struct demo {
      struct wl_shell *shell;
      struct wl_shell_surface *shell_surface;
  #elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -38,7 +38,7 @@
  #elif defined(VK_USE_PLATFORM_ANDROID_KHR)
      ANativeWindow *window;
  #elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
-@@ -2431,6 +2435,9 @@ static void demo_cleanup(struct demo *de
+@@ -2410,6 +2414,9 @@ static void demo_cleanup(struct demo *de
      wl_registry_destroy(demo->registry);
      wl_display_disconnect(demo->display);
  #elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -46,9 +46,9 @@
 +    mir_window_release_sync(demo->mir_window);
 +    mir_connection_release(demo->mir_connection);
  #endif
- }
  
-@@ -2843,6 +2850,66 @@ static void demo_run(struct demo *demo)
+     vkDestroyInstance(demo->inst, NULL);
+@@ -2823,6 +2830,66 @@ static void demo_run(struct demo *demo)
      demo->curFrame++;
  }
  #elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -115,7 +115,7 @@
  #elif defined(VK_USE_PLATFORM_DISPLAY_KHR)
  static VkResult demo_create_display_surface(struct demo *demo) {
      VkResult U_ASSERT_ONLY err;
-@@ -3139,6 +3206,12 @@ static void demo_init_vk(struct demo *de
+@@ -3119,6 +3186,12 @@ static void demo_init_vk(struct demo *de
                      VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME;
              }
  #elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -128,7 +128,7 @@
  #elif defined(VK_USE_PLATFORM_DISPLAY_KHR)
              if (!strcmp(VK_KHR_DISPLAY_EXTENSION_NAME,
                          instance_extensions[i].extensionName)) {
-@@ -3226,6 +3299,13 @@ static void demo_init_vk(struct demo *de
+@@ -3206,6 +3279,13 @@ static void demo_init_vk(struct demo *de
                   "information.\n",
                   "vkCreateInstance Failure");
  #elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -142,7 +142,7 @@
  #elif defined(VK_USE_PLATFORM_DISPLAY_KHR)
          ERR_EXIT("vkEnumerateInstanceExtensionProperties failed to find "
                   "the " VK_KHR_DISPLAY_EXTENSION_NAME
-@@ -3551,6 +3631,15 @@ static void demo_init_vk_swapchain(struc
+@@ -3531,6 +3611,15 @@ static void demo_init_vk_swapchain(struc
      err = vkCreateWaylandSurfaceKHR(demo->inst, &createInfo, NULL,
                                      &demo->surface);
  #elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -158,7 +158,7 @@
  #elif defined(VK_USE_PLATFORM_ANDROID_KHR)
      VkAndroidSurfaceCreateInfoKHR createInfo;
      createInfo.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
-@@ -3755,7 +3844,6 @@ static void registry_handle_global_remov
+@@ -3735,7 +3824,6 @@ static void registry_handle_global_remov
  
  static const struct wl_registry_listener registry_listener = {
      registry_handle_global, registry_handle_global_remove};
@@ -166,7 +166,7 @@
  #endif
  
  static void demo_init_connection(struct demo *demo) {
-@@ -3792,6 +3880,9 @@ static void demo_init_connection(struct
+@@ -3772,6 +3860,9 @@ static void demo_init_connection(struct
      wl_registry_add_listener(demo->registry, &registry_listener, demo);
      wl_display_dispatch(demo->display);
  #elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -176,7 +176,7 @@
  #endif
  }
  
-@@ -4104,6 +4195,7 @@ int main(int argc, char **argv) {
+@@ -4084,6 +4175,7 @@ int main(int argc, char **argv) {
  #elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
      demo_create_window(&demo);
  #elif defined(VK_USE_PLATFORM_MIR_KHR)
@@ -184,7 +184,7 @@
  #endif
  
      demo_init_vk_swapchain(&demo);
-@@ -4117,6 +4209,7 @@ int main(int argc, char **argv) {
+@@ -4097,6 +4189,7 @@ int main(int argc, char **argv) {
  #elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
      demo_run(&demo);
  #elif defined(VK_USE_PLATFORM_MIR_KHR)
diff --git a/debian/patches/loader-mir.diff b/debian/patches/loader-mir.diff
index 919bf7b..36c88fa 100644
--- a/debian/patches/loader-mir.diff
+++ b/debian/patches/loader-mir.diff
@@ -31,7 +31,7 @@
  #endif
  };
  
-@@ -419,7 +423,7 @@ static const char *VkFormatString(VkForm
+@@ -420,7 +424,7 @@ static const char *VkFormatString(VkForm
              return "UNKNOWN_FORMAT";
      }
  }
@@ -40,7 +40,7 @@
  static const char *VkPresentModeString(VkPresentModeKHR mode) {
      switch (mode) {
  #define STR(r)                \
-@@ -603,7 +607,7 @@ static void AppCreateInstance(struct App
+@@ -604,7 +608,7 @@ static void AppCreateInstance(struct App
      }
  
  #if defined(VK_USE_PLATFORM_XCB_KHR) || defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_WAYLAND_KHR) || \
@@ -49,7 +49,7 @@
      if (ext_count)
          for (i = 0; ((i < inst->global_extension_count) && (ext_count < MAX_EXTENSIONS)); i++) {
              const char *found_name = inst->global_extensions[i].extensionName;
-@@ -627,6 +631,10 @@ static void AppCreateInstance(struct App
+@@ -628,6 +632,10 @@ static void AppCreateInstance(struct App
              if (!strcmp(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME, found_name)) {
                  ext_names[ext_count++] = VK_KHR_ANDROID_SURFACE_EXTENSION_NAME;
              }
@@ -60,7 +60,7 @@
  #endif
          }
  #endif
-@@ -824,7 +832,8 @@ static void AppDestroyWin32Window(struct
+@@ -825,7 +833,8 @@ static void AppDestroyWin32Window(struct
  
  #if defined(VK_USE_PLATFORM_XCB_KHR)     || \
      defined(VK_USE_PLATFORM_XLIB_KHR)    || \
@@ -70,7 +70,7 @@
  static void AppDestroySurface(struct AppInstance *inst) { //same for all platforms
      vkDestroySurfaceKHR(inst->instance, inst->surface, NULL);
  }
-@@ -933,12 +942,65 @@ static void AppDestroyXlibWindow(struct
+@@ -934,12 +943,65 @@ static void AppDestroyXlibWindow(struct
      XDestroyWindow(inst->xlib_display, inst->xlib_window);
      XCloseDisplay(inst->xlib_display);
  }
@@ -138,7 +138,7 @@
  static int AppDumpSurfaceFormats(struct AppInstance *inst, struct AppGpu *gpu){
      // Get the list of VkFormat's that are supported:
      VkResult U_ASSERT_ONLY err;
-@@ -1280,7 +1342,7 @@ static void AppDumpExtensions(const char
+@@ -1283,7 +1345,7 @@ static void AppDumpExtensions(const char
      fflush(stdout);
  }
  
@@ -147,7 +147,7 @@
  // Returns true if the named extension is in the list of extensions.
  static bool HasExtension(const char *extension_name, const uint32_t extension_count,
                           const VkExtensionProperties *extension_properties) {
-@@ -1558,8 +1620,22 @@ int main(int argc, char **argv) {
+@@ -1561,8 +1623,22 @@ int main(int argc, char **argv) {
          }
          AppDestroyXlibWindow(&inst);
      }

commit 50203dbc808f1138b20e0cc8af5090ea3406384d
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Mon Jul 24 12:38:24 2017 +0300

    release to sid

diff --git a/debian/changelog b/debian/changelog
index 93d3619..097b46a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,8 @@
-vulkan (1.0.54.0+dfsg1-1) UNRELEASED; urgency=medium
+vulkan (1.0.54.0+dfsg1-1) unstable; urgency=medium
 
   * New upstream release.
 
- -- Timo Aaltonen <tjaalton@debian.org>  Mon, 24 Jul 2017 12:27:29 +0300
+ -- Timo Aaltonen <tjaalton@debian.org>  Mon, 24 Jul 2017 12:38:14 +0300
 
 vulkan (1.0.51.0+dfsg1-1) unstable; urgency=medium
 

commit f3146b9424f16cd53132b9b1fa28575e78d8de67
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Mon Jul 24 12:38:12 2017 +0300

    update the changelog

diff --git a/debian/changelog b/debian/changelog
index 08b8aed..93d3619 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+vulkan (1.0.54.0+dfsg1-1) UNRELEASED; urgency=medium
+
+  * New upstream release.
+
+ -- Timo Aaltonen <tjaalton@debian.org>  Mon, 24 Jul 2017 12:27:29 +0300
+
 vulkan (1.0.51.0+dfsg1-1) unstable; urgency=medium
 
   * New upstream release.

commit f7825272e341a108b4ad9f0e85d80eaf6d3f26ef
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Mon Jul 24 12:27:00 2017 +0300

    Refresh external/

diff --git a/external/glslang/CMakeLists.txt b/external/glslang/CMakeLists.txt
index 1d98c9f..9bc94b0 100644
--- a/external/glslang/CMakeLists.txt
+++ b/external/glslang/CMakeLists.txt
@@ -6,6 +6,11 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 # Adhere to GNU filesystem layout conventions
 include(GNUInstallDirs)
 
+option(SKIP_GLSLANG_INSTALL "Skip installation" ${SKIP_GLSLANG_INSTALL})
+if(NOT ${SKIP_GLSLANG_INSTALL})
+  set(ENABLE_GLSLANG_INSTALL ON)
+endif()
+
 option(ENABLE_AMD_EXTENSIONS "Enables support of AMD-specific extensions" ON)
 option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON)
 
diff --git a/external/glslang/OGLCompilersDLL/CMakeLists.txt b/external/glslang/OGLCompilersDLL/CMakeLists.txt
index 8edd143..5bb3f0e 100644
--- a/external/glslang/OGLCompilersDLL/CMakeLists.txt
+++ b/external/glslang/OGLCompilersDLL/CMakeLists.txt
@@ -1,11 +1,14 @@
 set(SOURCES InitializeDll.cpp InitializeDll.h)
 
 add_library(OGLCompiler STATIC ${SOURCES})
-set_property(TARGET OGLCompiler PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON)
+set_property(TARGET OGLCompiler PROPERTY FOLDER glslang)
+set_property(TARGET OGLCompiler PROPERTY POSITION_INDEPENDENT_CODE ON)
 
 if(WIN32)
     source_group("Source" FILES ${SOURCES})
 endif(WIN32)
 
-install(TARGETS OGLCompiler
-        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+if(ENABLE_GLSLANG_INSTALL)
+    install(TARGETS OGLCompiler
+            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/external/glslang/SPIRV/CMakeLists.txt b/external/glslang/SPIRV/CMakeLists.txt
index 2ad86d6..3c5ebab 100755
--- a/external/glslang/SPIRV/CMakeLists.txt
+++ b/external/glslang/SPIRV/CMakeLists.txt
@@ -40,18 +40,22 @@ if(ENABLE_NV_EXTENSIONS)
 endif(ENABLE_NV_EXTENSIONS)
 
 add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
-set_property(TARGET SPIRV PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON)
+set_property(TARGET SPIRV PROPERTY FOLDER glslang)
+set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
 target_link_libraries(SPIRV glslang)
 
 add_library(SPVRemapper STATIC ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
-set_property(TARGET SPVRemapper PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON)
+set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
+set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)
 
 if(WIN32)
     source_group("Source" FILES ${SOURCES} ${HEADERS})
     source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
 endif(WIN32)
 
-install(TARGETS SPIRV SPVRemapper
-        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+if(ENABLE_GLSLANG_INSTALL)
+    install(TARGETS SPIRV SPVRemapper
+            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
-install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/)
+    install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/)
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/external/glslang/SPIRV/GLSL.ext.AMD.h b/external/glslang/SPIRV/GLSL.ext.AMD.h
index a1b9ef9..4fff8c8 100644
--- a/external/glslang/SPIRV/GLSL.ext.AMD.h
+++ b/external/glslang/SPIRV/GLSL.ext.AMD.h
@@ -117,7 +117,7 @@ static const char* const E_SPV_AMD_gpu_shader_half_float = "SPV_AMD_gpu_shader_h
 // SPV_AMD_texture_gather_bias_lod
 static const char* const E_SPV_AMD_texture_gather_bias_lod = "SPV_AMD_texture_gather_bias_lod";
 
-static const Capability OpCapabilityImageGatherBiasLodAMD = static_cast<Capability>(5009);
+static const Capability CapabilityImageGatherBiasLodAMD = static_cast<Capability>(5009);
 
 // SPV_AMD_gpu_shader_int16
 static const char* const E_SPV_AMD_gpu_shader_int16 = "SPV_AMD_gpu_shader_int16";
diff --git a/external/glslang/SPIRV/GLSL.ext.KHR.h b/external/glslang/SPIRV/GLSL.ext.KHR.h
index c9e31a6..6e02529 100644
--- a/external/glslang/SPIRV/GLSL.ext.KHR.h
+++ b/external/glslang/SPIRV/GLSL.ext.KHR.h
@@ -32,7 +32,7 @@ enum Op;
 enum Capability;
 
 static const int GLSLextKHRVersion = 100;
-static const int GLSLextKHRRevision = 1;
+static const int GLSLextKHRRevision = 2;
 
 static const char* const E_SPV_KHR_shader_ballot                = "SPV_KHR_shader_ballot";
 static const char* const E_SPV_KHR_subgroup_vote                = "SPV_KHR_subgroup_vote";
@@ -41,5 +41,6 @@ static const char* const E_SPV_KHR_multiview                    = "SPV_KHR_multi
 static const char* const E_SPV_KHR_shader_draw_parameters       = "SPV_KHR_shader_draw_parameters";
 static const char* const E_SPV_KHR_16bit_storage                = "SPV_KHR_16bit_storage";
 static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class";
+static const char* const E_SPV_KHR_post_depth_coverage          = "SPV_KHR_post_depth_coverage";
 
 #endif  // #ifndef GLSLextKHR_H
diff --git a/external/glslang/SPIRV/GlslangToSpv.cpp b/external/glslang/SPIRV/GlslangToSpv.cpp
index 9a29b2e..50806d0 100755
--- a/external/glslang/SPIRV/GlslangToSpv.cpp
+++ b/external/glslang/SPIRV/GlslangToSpv.cpp
@@ -520,6 +520,10 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
             builder.addCapability(spv::CapabilityGeometry);
         return spv::BuiltInPrimitiveId;
 
+    case glslang::EbvFragStencilRef:
+        logger->missingFunctionality("shader stencil export");
+        return spv::BuiltInMax;
+
     case glslang::EbvInvocationId:         return spv::BuiltInInvocationId;
     case glslang::EbvTessLevelInner:       return spv::BuiltInTessLevelInner;
     case glslang::EbvTessLevelOuter:       return spv::BuiltInTessLevelOuter;
@@ -976,6 +980,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
         if (glslangIntermediate->getEarlyFragmentTests())
             builder.addExecutionMode(shaderEntry, spv::ExecutionModeEarlyFragmentTests);
 
+        if (glslangIntermediate->getPostDepthCoverage()) {
+            builder.addCapability(spv::CapabilitySampleMaskPostDepthCoverage);
+            builder.addExecutionMode(shaderEntry, spv::ExecutionModePostDepthCoverage);
+            builder.addExtension(spv::E_SPV_KHR_post_depth_coverage);
+        }
+
         switch(glslangIntermediate->getDepth()) {
         case glslang::EldGreater:  mode = spv::ExecutionModeDepthGreater; break;
         case glslang::EldLess:     mode = spv::ExecutionModeDepthLess;    break;
@@ -2431,7 +2441,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
     // Create a vector of struct types for SPIR-V to consume
     std::vector<spv::Id> spvMembers;
     int memberDelta = 0;  // how much the member's index changes from glslang to SPIR-V, normally 0, except sometimes for blocks
-    int locationOffset = 0;  // for use across struct members, when they are called recursively
     for (int i = 0; i < (int)glslangMembers->size(); i++) {
         glslang::TType& glslangMember = *(*glslangMembers)[i].type;
         if (glslangMember.hiddenMember()) {
@@ -2448,11 +2457,9 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
             glslang::TQualifier memberQualifier = glslangMember.getQualifier();
             InheritQualifiers(memberQualifier, qualifier);
 
-            // manually inherit location; it's more complex
+            // manually inherit location
             if (! memberQualifier.hasLocation() && qualifier.hasLocation())
-                memberQualifier.layoutLocation = qualifier.layoutLocation + locationOffset;
-            if (qualifier.hasLocation())
-                locationOffset += glslangIntermediate->computeTypeLocationSize(glslangMember);
+                memberQualifier.layoutLocation = qualifier.layoutLocation;
 
             // recurse
             spvMembers.push_back(convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier));
@@ -2515,29 +2522,12 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
                     addMemberDecoration(spvType, member, memory[i]);
             }
 
-            // Compute location decoration; tricky based on whether inheritance is at play and
-            // what kind of container we have, etc.
-            // TODO: This algorithm (and it's cousin above doing almost the same thing) should
-            //       probably move to the linker stage of the front end proper, and just have the
-            //       answer sitting already distributed throughout the individual member locations.
-            int location = -1;                // will only decorate if present or inherited
+            // Location assignment was already completed correctly by the front end,
+            // just track whether a member needs to be decorated.
             // Ignore member locations if the container is an array, as that's
-            // ill-specified and decisions have been made to not allow this anyway.
-            // The object itself must have a location, and that comes out from decorating the object,
-            // not the type (this code decorates types).
-            if (! type.isArray()) {
-                if (memberQualifier.hasLocation()) { // no inheritance, or override of inheritance
-                    // struct members should not have explicit locations
-                    assert(type.getBasicType() != glslang::EbtStruct);
-                    location = memberQualifier.layoutLocation;
-                } else if (type.getBasicType() != glslang::EbtBlock) {
-                    // If it is a not a Block, (...) Its members are assigned consecutive locations (...)
-                    // The members, and their nested types, must not themselves have Location decorations.
-                } else if (qualifier.hasLocation()) // inheritance
-                    location = qualifier.layoutLocation + locationOffset;
-            }
-            if (location >= 0)
-                builder.addMemberDecoration(spvType, member, spv::DecorationLocation, location);
+            // ill-specified and decisions have been made to not allow this.
+            if (! type.isArray() && memberQualifier.hasLocation())
+                builder.addMemberDecoration(spvType, member, spv::DecorationLocation, memberQualifier.layoutLocation);
 
             if (qualifier.hasLocation())      // track for upcoming inheritance
                 locationOffset += glslangIntermediate->computeTypeLocationSize(glslangMember);
@@ -3294,7 +3284,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
         if (bias || cracked.lod ||
             sourceExtensions.find(glslang::E_GL_AMD_texture_gather_bias_lod) != sourceExtensions.end()) {
             builder.addExtension(spv::E_SPV_AMD_texture_gather_bias_lod);
-            builder.addCapability(spv::OpCapabilityImageGatherBiasLodAMD);
+            builder.addCapability(spv::CapabilityImageGatherBiasLodAMD);
         }
     }
 #endif
diff --git a/external/glslang/SPIRV/doc.cpp b/external/glslang/SPIRV/doc.cpp
index bae43bd..03097d0 100755
--- a/external/glslang/SPIRV/doc.cpp
+++ b/external/glslang/SPIRV/doc.cpp
@@ -175,6 +175,7 @@ const char* ExecutionModeString(int mode)
     case 31: return "ContractionOff";
     case 32: return "Bad";
 
+    case 4446:  return "PostDepthCoverage";
     case ExecutionModeCeiling:
     default: return "Bad";
     }
@@ -843,6 +844,7 @@ const char* CapabilityString(int info)
     case 5009: return "ImageGatherBiasLodAMD";
 #endif
 
+    case 4447: return "SampleMaskPostDepthCoverage";
 #ifdef NV_EXTENSIONS
     case 5251: return "GeometryShaderPassthroughNV";
     case 5254: return "ShaderViewportIndexLayerNV";
diff --git a/external/glslang/SPIRV/spirv.hpp b/external/glslang/SPIRV/spirv.hpp
index 91cb59e..c9f6f71 100755
--- a/external/glslang/SPIRV/spirv.hpp
+++ b/external/glslang/SPIRV/spirv.hpp
@@ -47,11 +47,11 @@ namespace spv {
 typedef unsigned int Id;
 
 #define SPV_VERSION 0x10000
-#define SPV_REVISION 10
+#define SPV_REVISION 11
 
 static const unsigned int MagicNumber = 0x07230203;
 static const unsigned int Version = 0x00010000;
-static const unsigned int Revision = 10;
+static const unsigned int Revision = 11;
 static const unsigned int OpCodeMask = 0xffff;
 static const unsigned int WordCountShift = 16;
 
@@ -122,6 +122,7 @@ enum ExecutionMode {
     ExecutionModeOutputTriangleStrip = 29,
     ExecutionModeVecTypeHint = 30,
     ExecutionModeContractionOff = 31,
+    ExecutionModePostDepthCoverage = 4446,
     ExecutionModeMax = 0x7fffffff,
 };
 
@@ -628,6 +629,7 @@ enum Capability {
     CapabilityMultiView = 4439,
     CapabilityVariablePointersStorageBuffer = 4441,
     CapabilityVariablePointers = 4442,
+    CapabilitySampleMaskPostDepthCoverage = 4447,
     CapabilitySampleMaskOverrideCoverageNV = 5249,
     CapabilityGeometryShaderPassthroughNV = 5251,
     CapabilityShaderViewportIndexLayerNV = 5254,
diff --git a/external/glslang/StandAlone/CMakeLists.txt b/external/glslang/StandAlone/CMakeLists.txt
index c61667c..b0d863d 100644
--- a/external/glslang/StandAlone/CMakeLists.txt
+++ b/external/glslang/StandAlone/CMakeLists.txt
@@ -1,6 +1,7 @@
 add_library(glslang-default-resource-limits
             ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp)
-set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON)
+set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
+set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON)
 
 target_include_directories(glslang-default-resource-limits
                            PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
@@ -37,8 +38,10 @@ if(WIN32)
     source_group("Source" FILES ${SOURCES})
 endif(WIN32)
 
-install(TARGETS glslangValidator
-        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+if(ENABLE_GLSLANG_INSTALL)
+    install(TARGETS glslangValidator
+            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 
-install(TARGETS spirv-remap
-        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+    install(TARGETS spirv-remap
+            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif(ENABLE_GLSLANG_INSTALL)
diff --git a/external/glslang/StandAlone/StandAlone.cpp b/external/glslang/StandAlone/StandAlone.cpp
index 0b8b8f4..1e2c8f7 100644
--- a/external/glslang/StandAlone/StandAlone.cpp
+++ b/external/glslang/StandAlone/StandAlone.cpp
@@ -115,18 +115,14 @@ enum TFailCode {
 EShLanguage FindLanguage(const std::string& name, bool parseSuffix=true);
 void CompileFile(const char* fileName, ShHandle);
 void usage();
-void FreeFileData(char** data);
-char** ReadFileData(const char* fileName);
+char* ReadFileData(const char* fileName);
+void FreeFileData(char* data);
 void InfoLogMsg(const char* msg, const char* name, const int num);
 
 // Globally track if any compile or link failure.
 bool CompileFailed = false;
 bool LinkFailed = false;
 
-// Use to test breaking up a single shader file into multiple strings.
-// Set in ReadFileData().
-int NumShaderStrings;
-
 TBuiltInResource Resources;
 std::string ConfigFile;
 
@@ -135,29 +131,13 @@ std::string ConfigFile;
 //
 void ProcessConfigFile()
 {
-    char** configStrings = 0;
-    char* config = 0;
-    if (ConfigFile.size() > 0) {
-        configStrings = ReadFileData(ConfigFile.c_str());
-        if (configStrings)
-            config = *configStrings;
-        else {
-            printf("Error opening configuration file; will instead use the default configuration\n");
-            usage();
-        }
-    }
-
-    if (config == 0) {
+    if (ConfigFile.size() == 0)
         Resources = glslang::DefaultTBuiltInResource;
-        return;
+    else {
+        char* configString = ReadFileData(ConfigFile.c_str());
+        glslang::DecodeResourceLimits(&Resources,  configString);
+        FreeFileData(configString);
     }
-
-    glslang::DecodeResourceLimits(&Resources,  config);
-
-    if (configStrings)
-        FreeFileData(configStrings);
-    else
-        delete[] config;
 }
 
 int Options = 0;
@@ -168,6 +148,10 @@ const char* sourceEntryPointName = nullptr;
 const char* shaderStageName = nullptr;
 const char* variableName = nullptr;
 std::vector<std::string> IncludeDirectoryList;
+int ClientInputSemanticsVersion = 100;   // maps to, say, #define VULKAN 100
+int VulkanClientVersion = 100;           // would map to, say, Vulkan 1.0
+int OpenGLClientVersion = 450;           // doesn't influence anything yet, but maps to OpenGL 4.50
+unsigned int TargetVersion = 0x00001000; // maps to, say, SPIR-V 1.0
 
 std::array<unsigned int, EShLangCount> baseSamplerBinding;
 std::array<unsigned int, EShLangCount> baseTextureBinding;
@@ -177,6 +161,52 @@ std::array<unsigned int, EShLangCount> baseSsboBinding;
 std::array<unsigned int, EShLangCount> baseUavBinding;
 std::array<std::vector<std::string>, EShLangCount> baseResourceSetBinding;
 
+// Add things like "#define ..." to a preamble to use in the beginning of the shader.
+class TPreamble {
+public:
+    TPreamble() { }
+
+    bool isSet() const { return text.size() > 0; }
+    const char* get() const { return text.c_str(); }
+
+    // #define...
+    void addDef(std::string def)
+    {
+        text.append("#define ");
+        fixLine(def);
+
+        // The first "=" needs to turn into a space
+        int equal = def.find_first_of("=");
+        if (equal != def.npos)
+            def[equal] = ' ';
+
+        text.append(def);
+        text.append("\n");
+    }
+
+    // #undef...
+    void addUndef(std::string undef)
+    {
+        text.append("#undef ");
+        fixLine(undef);
+        text.append(undef);
+        text.append("\n");
+    }
+
+protected:
+    void fixLine(std::string& line)
+    {
+        // Can't go past a newline in the line
+        int end = line.find_first_of("\n");
+        if (end != line.npos)
+            line = line.substr(0, end);
+    }
+
+    std::string text;  // contents of preamble
+};
+
+TPreamble UserPreamble;
+
 //
 // Create the default name for saving a binary if -o is not provided.
 //
@@ -268,15 +298,15 @@ void ProcessResourceSetBindingBase(int& argc, char**& argv, std::array<std::vect
         base[lang].push_back(argv[2]);
         base[lang].push_back(argv[3]);
         base[lang].push_back(argv[4]);
-        argc-= 4;
-        argv+= 4;
+        argc -= 4;
+        argv += 4;
         while(argv[1] != NULL) {
             if(argv[1][0] != '-') {
                 base[lang].push_back(argv[1]);
                 base[lang].push_back(argv[2]);
                 base[lang].push_back(argv[3]);
-                argc-= 3;
-                argv+= 3;
+                argc -= 3;
+                argv += 3;
             }
             else {
                 break;
@@ -310,9 +340,48 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
     ExecutableName = argv[0];
     workItems.reserve(argc);
 
-    argc--;
-    argv++;
-    for (; argc >= 1; argc--, argv++) {
+    const auto bumpArg = [&]() {
+        if (argc > 0) {
+            argc--;
+            argv++;
+        }
+    };
+
+    // read a string directly attached to a single-letter option
+    const auto getStringOperand = [&](const char* desc) {
+        if (argv[0][2] == 0) {
+            printf("%s must immediately follow option (no spaces)\n", desc);
+            exit(EFailUsage);
+        }
+        return argv[0] + 2;
+    };
+
+    // read a number attached to a single-letter option
+    const auto getAttachedNumber = [&](const char* desc) {
+        int num = atoi(argv[0] + 2);
+        if (num == 0) {
+            printf("%s: expected attached non-0 number\n", desc);
+            exit(EFailUsage);
+        }
+        return num;
+    };
+
+    // minimum needed (without overriding something else) to target Vulkan SPIR-V
+    const auto setVulkanSpv = []() {
+        Options |= EOptionSpv;
+        Options |= EOptionVulkanRules;
+        Options |= EOptionLinkProgram;
+    };
+
+    // minimum needed (without overriding something else) to target OpenGL SPIR-V
+    const auto setOpenGlSpv = []() {
+        Options |= EOptionSpv;
+        Options |= EOptionLinkProgram;
+        // undo a -H default to Vulkan
+        Options &= ~EOptionVulkanRules;
+    };


Reply to: