Merge branch 'master' of https://github.com/KhronosGroup/MoltenVK
diff --git a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/project.pbxproj b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/project.pbxproj
index 992d96c..f67db69 100644
--- a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/project.pbxproj
+++ b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/project.pbxproj
@@ -545,7 +545,7 @@
 		29B97313FDCFA39411CA2CEA /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 1000;
+				LastUpgradeCheck = 1010;
 				TargetAttributes = {
 					A977BCBD1B66BB010067E5BF = {
 						DevelopmentTeam = VU3TCKU48B;
diff --git a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-iOS.xcscheme b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-iOS.xcscheme
index 8e53cef..1887f1d 100644
--- a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-iOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-iOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-macOS.xcscheme b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-macOS.xcscheme
index 38b5668..14c3d3c 100644
--- a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-macOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-macOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/project.pbxproj b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/project.pbxproj
index d3f84da..4c747e6 100644
--- a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/project.pbxproj
+++ b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/project.pbxproj
@@ -234,7 +234,7 @@
 		29B97313FDCFA39411CA2CEA /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 1000;
+				LastUpgradeCheck = 1010;
 				TargetAttributes = {
 					A9B53B0F1C3AC0BE00ABC6F6 = {
 						DevelopmentTeam = VU3TCKU48B;
diff --git a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme
index 8177308..ead24ce 100644
--- a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-macOS.xcscheme b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-macOS.xcscheme
index 8d847fa..e83df29 100644
--- a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-macOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-macOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/project.pbxproj b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/project.pbxproj
index e1db4ad..1b654fc 100644
--- a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/project.pbxproj
+++ b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/project.pbxproj
@@ -283,7 +283,7 @@
 		29B97313FDCFA39411CA2CEA /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 1000;
+				LastUpgradeCheck = 1010;
 				TargetAttributes = {
 					A977BCBD1B66BB010067E5BF = {
 						DevelopmentTeam = VU3TCKU48B;
diff --git a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-iOS.xcscheme b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-iOS.xcscheme
index d5def97..d911a11 100644
--- a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-iOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-iOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-macOS.xcscheme b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-macOS.xcscheme
index 83e3055..62aa74b 100644
--- a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-macOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-macOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md
index 02af572..f729bf0 100644
--- a/Docs/Whats_New.md
+++ b/Docs/Whats_New.md
@@ -12,6 +12,22 @@
 For best results, use a Markdown reader.*
 
 
+MoltenVK 1.0.26
+---------------
+
+Released 2018/11/06
+
+- Fix memoryTypes order to match Vulkan spec.
+- Allow linear images to use host-coherent memory.
+- Generate Bitcode in iOS libraries.
+- Allow all pipeline attachements to be unused.
+- Perform usage checks on 3D images.
+- Enhancements to dylib generation script.
+- Update to latest SPIRV-Cross version:
+	- MSL: Support 8 & 16 bit types.
+	- MSL: Updated spec constant support.
+
+
 MoltenVK 1.0.25
 ---------------
 
diff --git a/ExternalRevisions/README.md b/ExternalRevisions/README.md
index 50439fb..4fb82ce 100644
--- a/ExternalRevisions/README.md
+++ b/ExternalRevisions/README.md
@@ -126,12 +126,16 @@
 		spirv_cfg.cpp
 		spirv_cfg.hpp
 		spirv_common.hpp
+		spirv_cross_parsed_ir.cpp
+		spirv_cross_parsed_ir.hpp
 		spirv_cross.cpp
 		spirv_cross.hpp
 		spirv_glsl.cpp
 		spirv_glsl.hpp
 		spirv_msl.cpp
 		spirv_msl.hpp
+		spirv_parser.cpp
+		spirv_parser.hpp
 
    In the ***Choose options for adding these files*** dialog that opens, select the 
    ***Create groups*** option, add the files to *both* the `MoltenVKSPIRVToMSLConverter-iOS` 
diff --git a/ExternalRevisions/SPIRV-Cross_repo_revision b/ExternalRevisions/SPIRV-Cross_repo_revision
index 6ab048f..5d4511b 100644
--- a/ExternalRevisions/SPIRV-Cross_repo_revision
+++ b/ExternalRevisions/SPIRV-Cross_repo_revision
@@ -1 +1 @@
-cc5c0204d8bcdadbb4add03e53346df98bf27fa4
+daaffc4717cad9fbeb8848867f38a732120c6317
diff --git a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj
index bb00895..d7ee478 100644
--- a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj
+++ b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj
@@ -752,7 +752,7 @@
 		A9F55D25198BE6A7004EC31B /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 1000;
+				LastUpgradeCheck = 1010;
 				ORGANIZATIONNAME = "The Brenwill Workshop Ltd.";
 				TargetAttributes = {
 					A9B8EE091A98D796009C5A02 = {
diff --git a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme
index 678103b..4c6b225 100644
--- a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme
+++ b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme
index 9c9303c..64ec327 100644
--- a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme
+++ b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
index 3af0826..4c725bb 100644
--- a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
+++ b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
@@ -48,7 +48,7 @@
  */
 #define MVK_VERSION_MAJOR   1
 #define MVK_VERSION_MINOR   0
-#define MVK_VERSION_PATCH   25
+#define MVK_VERSION_PATCH   26
 
 #define MVK_MAKE_VERSION(major, minor, patch)    (((major) * 10000) + ((minor) * 100) + (patch))
 #define MVK_VERSION     MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
index 3953637..35ebe11 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
@@ -233,7 +233,7 @@
 	setSubpass(contents, _renderSubpassIndex + 1);
 }
 
-/** Sets the current render subpass to the subpass with the specified index. */
+// Sets the current render subpass to the subpass with the specified index.
 void MVKCommandEncoder::setSubpass(VkSubpassContents subpassContents, uint32_t subpassIndex) {
 	_subpassContents = subpassContents;
 	_renderSubpassIndex = subpassIndex;
@@ -241,8 +241,7 @@
     beginMetalRenderPass();
 }
 
-// Called after the _mtlRenderEncoder is established.
-// Marks cached render state as dirty so it will be set into the _mtlRenderEncoder.
+// Creates _mtlRenderEncoder and marks cached render state as dirty so it will be set into the _mtlRenderEncoder.
 void MVKCommandEncoder::beginMetalRenderPass() {
 
     endCurrentMetalEncoding();
diff --git a/MoltenVK/scripts/create_dylib.sh b/MoltenVK/scripts/create_dylib.sh
index 4e5b81c..b96e5db 100755
--- a/MoltenVK/scripts/create_dylib.sh
+++ b/MoltenVK/scripts/create_dylib.sh
@@ -6,19 +6,24 @@
 export MVK_SYS_FWK_DIR="${SDK_DIR}/System/Library/Frameworks"
 export MVK_USR_LIB_DIR="${SDK_DIR}/usr/lib"
 
+if test x"${ENABLE_BITCODE}" = xYES; then
+	MVK_EMBED_BITCODE="-fembed-bitcode"
+fi
+
 if test x"${ENABLE_THREAD_SANITIZER}" = xYES; then
 	MVK_TSAN="-fsanitize=thread"
 fi
 
 clang++ \
 -stdlib=${CLANG_CXX_LIBRARY} \
--dynamiclib ${MVK_TSAN} \
-$(printf "-arch %s " ${ARCHS}) \
+-dynamiclib \
+$(printf -- "-arch %s " ${ARCHS}) \
 -m${MVK_OS}-version-min=${MVK_MIN_OS_VERSION} \
 -compatibility_version 1.0.0 -current_version 1.0.0  \
 -install_name "@rpath/${MVK_DYLIB_NAME}"  \
 -Wno-incompatible-sysroot \
--fembed-bitcode \
+${MVK_EMBED_BITCODE} \
+${MVK_TSAN} \
 -isysroot ${SDK_DIR} \
 -iframework ${MVK_SYS_FWK_DIR}  \
 -framework Metal ${MVK_IOSURFACE_FWK} -framework ${MVK_UX_FWK} -framework QuartzCore -framework IOKit -framework Foundation \
diff --git a/MoltenVKPackaging.xcodeproj/project.pbxproj b/MoltenVKPackaging.xcodeproj/project.pbxproj
index 65e8fd6..bf7d955 100644
--- a/MoltenVKPackaging.xcodeproj/project.pbxproj
+++ b/MoltenVKPackaging.xcodeproj/project.pbxproj
@@ -287,7 +287,7 @@
 		A90B2B1D1A9B6170008EE819 /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 1000;
+				LastUpgradeCheck = 1010;
 				TargetAttributes = {
 					A9FEADBC1F3517480010240E = {
 						DevelopmentTeam = VU3TCKU48B;
diff --git "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050Debug\051.xcscheme" "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050Debug\051.xcscheme"
index 5a51a8c..4c59e5a 100644
--- "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050Debug\051.xcscheme"
+++ "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050Debug\051.xcscheme"
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050iOS only\051.xcscheme" "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050iOS only\051.xcscheme"
index 01bdede..3c4764f 100644
--- "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050iOS only\051.xcscheme"
+++ "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050iOS only\051.xcscheme"
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050macOS only\051.xcscheme" "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050macOS only\051.xcscheme"
index d290881..15adf45 100644
--- "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050macOS only\051.xcscheme"
+++ "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050macOS only\051.xcscheme"
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package.xcscheme b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package.xcscheme
index 2e8c2d4..9fd98c0 100644
--- a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package.xcscheme
+++ b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/SPIRVToMSLConverter.cpp b/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/SPIRVToMSLConverter.cpp
index ad2c0f8..9460b2a 100644
--- a/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/SPIRVToMSLConverter.cpp
+++ b/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/SPIRVToMSLConverter.cpp
@@ -206,7 +206,6 @@
 		mslOpts.aux_buffer_index = context.options.auxBufferIndex;
 		mslOpts.enable_point_size_builtin = context.options.isRenderingPoints;
 		mslOpts.disable_rasterization = context.options.isRasterizationDisabled;
-		mslOpts.resolve_specialized_array_lengths = true;
 		mslOpts.swizzle_texture_samples = true;
 		pMSLCompiler->set_msl_options(mslOpts);
 
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj
index 2fb36cf..0c7abb6 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj
@@ -199,6 +199,14 @@
 		A93E831F211F76F6001FEBD4 /* InitializeDll.h in Headers */ = {isa = PBXBuildFile; fileRef = A93E826C211F76F6001FEBD4 /* InitializeDll.h */; };
 		A93E8320211F76F6001FEBD4 /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A93E826D211F76F6001FEBD4 /* InitializeDll.cpp */; };
 		A93E8321211F76F6001FEBD4 /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A93E826D211F76F6001FEBD4 /* InitializeDll.cpp */; };
+		A94E30CF219209C700394673 /* spirv_parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94E30CD219209C700394673 /* spirv_parser.cpp */; };
+		A94E30D0219209C700394673 /* spirv_parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94E30CD219209C700394673 /* spirv_parser.cpp */; };
+		A94E30D1219209C700394673 /* spirv_parser.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A94E30CE219209C700394673 /* spirv_parser.hpp */; };
+		A94E30D2219209C700394673 /* spirv_parser.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A94E30CE219209C700394673 /* spirv_parser.hpp */; };
+		A94E30D521920A8C00394673 /* spirv_cross_parsed_ir.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A94E30D321920A8C00394673 /* spirv_cross_parsed_ir.hpp */; };
+		A94E30D621920A8C00394673 /* spirv_cross_parsed_ir.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A94E30D321920A8C00394673 /* spirv_cross_parsed_ir.hpp */; };
+		A94E30D721920A8C00394673 /* spirv_cross_parsed_ir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94E30D421920A8C00394673 /* spirv_cross_parsed_ir.cpp */; };
+		A94E30D821920A8C00394673 /* spirv_cross_parsed_ir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94E30D421920A8C00394673 /* spirv_cross_parsed_ir.cpp */; };
 		A95096BB2003D00300F10950 /* FileSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A925B70A1C7754B2006E7ECD /* FileSupport.mm */; };
 		A95096BC2003D00300F10950 /* FileSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A925B70A1C7754B2006E7ECD /* FileSupport.mm */; };
 		A95096BF2003D32400F10950 /* DirectorySupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A95096BD2003D32400F10950 /* DirectorySupport.mm */; };
@@ -953,6 +961,10 @@
 		A93E826B211F76F6001FEBD4 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		A93E826C211F76F6001FEBD4 /* InitializeDll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InitializeDll.h; sourceTree = "<group>"; };
 		A93E826D211F76F6001FEBD4 /* InitializeDll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitializeDll.cpp; sourceTree = "<group>"; };
+		A94E30CD219209C700394673 /* spirv_parser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_parser.cpp; sourceTree = "<group>"; };
+		A94E30CE219209C700394673 /* spirv_parser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = spirv_parser.hpp; sourceTree = "<group>"; };
+		A94E30D321920A8C00394673 /* spirv_cross_parsed_ir.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = spirv_cross_parsed_ir.hpp; sourceTree = "<group>"; };
+		A94E30D421920A8C00394673 /* spirv_cross_parsed_ir.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_cross_parsed_ir.cpp; sourceTree = "<group>"; };
 		A95096BD2003D32400F10950 /* DirectorySupport.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DirectorySupport.mm; sourceTree = "<group>"; };
 		A95096BE2003D32400F10950 /* DirectorySupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectorySupport.h; sourceTree = "<group>"; };
 		A95C5F3D1DEA9070000D17B6 /* spirv_cfg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_cfg.cpp; sourceTree = "<group>"; };
@@ -1328,12 +1340,16 @@
 				A95C5F3D1DEA9070000D17B6 /* spirv_cfg.cpp */,
 				A95C5F3E1DEA9070000D17B6 /* spirv_cfg.hpp */,
 				A9AB19901CB5B5A80001E7F9 /* spirv_common.hpp */,
+				A94E30D421920A8C00394673 /* spirv_cross_parsed_ir.cpp */,
+				A94E30D321920A8C00394673 /* spirv_cross_parsed_ir.hpp */,
 				A9AB19911CB5B5A80001E7F9 /* spirv_cross.cpp */,
 				A9AB19921CB5B5A80001E7F9 /* spirv_cross.hpp */,
 				A9AB19931CB5B5A80001E7F9 /* spirv_glsl.cpp */,
 				A9AB19941CB5B5A80001E7F9 /* spirv_glsl.hpp */,
 				A9AB19951CB5B5A80001E7F9 /* spirv_msl.cpp */,
 				A9AB19961CB5B5A80001E7F9 /* spirv_msl.hpp */,
+				A94E30CD219209C700394673 /* spirv_parser.cpp */,
+				A94E30CE219209C700394673 /* spirv_parser.hpp */,
 			);
 			name = "SPIRV-Cross";
 			path = "../SPIRV-Cross";
@@ -2058,6 +2074,7 @@
 				A96FE8BE215473A00060D1A3 /* spirv_optimizer_options.h in Headers */,
 				A96FE76E215473A00060D1A3 /* compact_ids_pass.h in Headers */,
 				A96FE712215473A00060D1A3 /* spirv_definition.h in Headers */,
+				A94E30D1219209C700394673 /* spirv_parser.hpp in Headers */,
 				A96FE8A8215473A00060D1A3 /* dominator_tree.h in Headers */,
 				A96FE7E0215473A00060D1A3 /* struct_cfg_analysis.h in Headers */,
 				A96FE766215473A00060D1A3 /* loop_fusion.h in Headers */,
@@ -2134,6 +2151,7 @@
 				A96FE8DC215473A00060D1A3 /* basic_block.h in Headers */,
 				A96FE834215473A00060D1A3 /* dead_variable_elimination.h in Headers */,
 				A96FE740215473A00060D1A3 /* text_handler.h in Headers */,
+				A94E30D521920A8C00394673 /* spirv_cross_parsed_ir.hpp in Headers */,
 				A9AB199B1CB5B5A80001E7F9 /* spirv_cross.hpp in Headers */,
 				A96FE7F8215473A00060D1A3 /* dead_insert_elim_pass.h in Headers */,
 				A96FE872215473A00060D1A3 /* local_ssa_elim_pass.h in Headers */,
@@ -2219,6 +2237,7 @@
 				A96FE8BF215473A00060D1A3 /* spirv_optimizer_options.h in Headers */,
 				A96FE76F215473A00060D1A3 /* compact_ids_pass.h in Headers */,
 				A96FE713215473A00060D1A3 /* spirv_definition.h in Headers */,
+				A94E30D2219209C700394673 /* spirv_parser.hpp in Headers */,
 				A96FE8A9215473A00060D1A3 /* dominator_tree.h in Headers */,
 				A96FE7E1215473A00060D1A3 /* struct_cfg_analysis.h in Headers */,
 				A96FE767215473A00060D1A3 /* loop_fusion.h in Headers */,
@@ -2295,6 +2314,7 @@
 				A96FE8DD215473A00060D1A3 /* basic_block.h in Headers */,
 				A96FE835215473A00060D1A3 /* dead_variable_elimination.h in Headers */,
 				A96FE741215473A00060D1A3 /* text_handler.h in Headers */,
+				A94E30D621920A8C00394673 /* spirv_cross_parsed_ir.hpp in Headers */,
 				A9AB199C1CB5B5A80001E7F9 /* spirv_cross.hpp in Headers */,
 				A96FE7F9215473A00060D1A3 /* dead_insert_elim_pass.h in Headers */,
 				A96FE873215473A00060D1A3 /* local_ssa_elim_pass.h in Headers */,
@@ -2464,7 +2484,7 @@
 		A9F55D25198BE6A7004EC31B /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 1000;
+				LastUpgradeCheck = 1010;
 				ORGANIZATIONNAME = "The Brenwill Workshop Ltd.";
 				TargetAttributes = {
 					A9092A8C1A81717B00051823 = {
@@ -2678,6 +2698,7 @@
 				A96FE73C215473A00060D1A3 /* markv_encoder.cpp in Sources */,
 				A96FE90C215473A00060D1A3 /* instruction.cpp in Sources */,
 				A96FE81A215473A00060D1A3 /* strength_reduction_pass.cpp in Sources */,
+				A94E30D721920A8C00394673 /* spirv_cross_parsed_ir.cpp in Sources */,
 				A96FE78A215473A00060D1A3 /* local_redundancy_elimination.cpp in Sources */,
 				A96FE826215473A00060D1A3 /* loop_fusion_pass.cpp in Sources */,
 				A96FE782215473A00060D1A3 /* local_single_block_elim_pass.cpp in Sources */,
@@ -2717,6 +2738,7 @@
 				A96FE7F2215473A00060D1A3 /* simplification_pass.cpp in Sources */,
 				A95096BB2003D00300F10950 /* FileSupport.mm in Sources */,
 				A96FE6F2215473A00060D1A3 /* string_utils.cpp in Sources */,
+				A94E30CF219209C700394673 /* spirv_parser.cpp in Sources */,
 				A909408A1C58013E0094110D /* SPIRVToMSLConverter.cpp in Sources */,
 				A96FE7C0215473A00060D1A3 /* loop_unswitch_pass.cpp in Sources */,
 				A96FE82E215473A00060D1A3 /* dead_insert_elim_pass.cpp in Sources */,
@@ -2845,6 +2867,7 @@
 				A96FE73D215473A00060D1A3 /* markv_encoder.cpp in Sources */,
 				A96FE90D215473A00060D1A3 /* instruction.cpp in Sources */,
 				A96FE81B215473A00060D1A3 /* strength_reduction_pass.cpp in Sources */,
+				A94E30D821920A8C00394673 /* spirv_cross_parsed_ir.cpp in Sources */,
 				A96FE78B215473A00060D1A3 /* local_redundancy_elimination.cpp in Sources */,
 				A96FE827215473A00060D1A3 /* loop_fusion_pass.cpp in Sources */,
 				A96FE783215473A00060D1A3 /* local_single_block_elim_pass.cpp in Sources */,
@@ -2884,6 +2907,7 @@
 				A96FE7F3215473A00060D1A3 /* simplification_pass.cpp in Sources */,
 				A95096BC2003D00300F10950 /* FileSupport.mm in Sources */,
 				A96FE6F3215473A00060D1A3 /* string_utils.cpp in Sources */,
+				A94E30D0219209C700394673 /* spirv_parser.cpp in Sources */,
 				A909408B1C58013E0094110D /* SPIRVToMSLConverter.cpp in Sources */,
 				A96FE7C1215473A00060D1A3 /* loop_unswitch_pass.cpp in Sources */,
 				A96FE82F215473A00060D1A3 /* dead_insert_elim_pass.cpp in Sources */,
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-iOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-iOS.xcscheme
index 7ad6164..7e9b364 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-iOS.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-iOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-macOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-macOS.xcscheme
index 4642b19..715ca93 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-macOS.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-macOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-iOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-iOS.xcscheme
index 6eeffb4..c76cb84 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-iOS.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-iOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-macOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-macOS.xcscheme
index 130fdc7..8d5c51b 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-macOS.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-macOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme
index fd1fc60..f2c12eb 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1000"
+   LastUpgradeVersion = "1010"
    version = "2.0">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/fetchDependencies b/fetchDependencies
index 86dda2e..eadd1d3 100755
--- a/fetchDependencies
+++ b/fetchDependencies
@@ -101,8 +101,7 @@
 EXT_REV_DIR=ExternalRevisions
 
 echo
-echo Retrieving MoltenVK dependencies into ${EXT_DIR}.
-echo
+echo ========== Retrieving MoltenVK dependencies into ${EXT_DIR} ==========
 
 mkdir -p ${EXT_DIR}
 cd ${EXT_DIR}
@@ -110,6 +109,10 @@
 
 # ----------------- Cereal -------------------
 
+echo
+echo ========== Cereal ==========
+echo
+
 REPO_NAME=cereal
 REPO_URL="https://github.com/USCiLab/${REPO_NAME}.git"
 REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
@@ -119,6 +122,10 @@
 
 # ----------------- Vulkan-Headers -------------------
 
+echo
+echo ========== Vulkan-Headers ==========
+echo
+
 # When MoltenVK is built by something that already has
 # a copy of this repo, use it by creating a symlink.
 if [ ! "$V_HEADERS_ROOT" = "" ]; then
@@ -136,6 +143,10 @@
 
 # ----------------- SPIRV-Cross -------------------
 
+echo
+echo ========== SPIRV-Cross ==========
+echo
+
 # When MoltenVK is built by something that already has
 # a copy of this repo, use it by creating a symlink.
 if [ ! "$SPIRV_CROSS_ROOT" = "" ]; then
@@ -153,6 +164,10 @@
 
 # ----------------- glslang -------------------
 
+echo
+echo ========== glslang and SPIRV-Tools ==========
+echo
+
 # When MoltenVK is built by something that already has
 # a copy of this repo, use it by creating a symlink.
 if [ ! "$GLSLANG_ROOT" = "" ]; then
@@ -176,6 +191,10 @@
 
 # ----------------- Vulkan-Tools -------------------
 
+echo
+echo ========== Vulkan-Tools ==========
+echo
+
 REPO_NAME=Vulkan-Tools
 REPO_URL="https://github.com/KhronosGroup/${REPO_NAME}.git"
 REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
@@ -185,6 +204,10 @@
 
 # ----------------- VulkanSamples -------------------
 
+echo
+echo ========== VulkanSamples ==========
+echo
+
 REPO_NAME=VulkanSamples
 REPO_URL="https://github.com/LunarG/${REPO_NAME}.git"
 REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")