Merge branch master into branch argument-buffers.
diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md
index 7f7015d..53cf64e 100644
--- a/Docs/Whats_New.md
+++ b/Docs/Whats_New.md
@@ -16,28 +16,49 @@
 MoltenVK 1.1.3
 --------------
 
-Released 2021/04/26
+Released 2021/04/27
 
 - Add beta support for using Metal argument buffers for shader resources on _macOS_, by setting 
-  `MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS` environment variable (disabled by default). 
-  Available on _macOS 10.16 (Big Sur)_ or later, and on earlier _macOS_ versions on _Intel_ GPU's.
+  `MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS` environment variable (disabled by default). This dramatically
+  expands the number of resources that can be submitted to a pipeline stage, per the Vulkan
+  `VK_EXT_descriptor_indexing` extension. **Currently available on _macOS 10.16 (Big Sur)_ or later, 
+  and on earlier _macOS_ versions on _Intel_ GPU's**.
 - Add support for `HDR10` colorspace via `VK_COLOR_SPACE_HDR10_HLG_EXT` and `VK_COLOR_SPACE_HDR10_ST2084_EXT`.
 - Always explicitly set `CAMetalLayer` colorspace property based on _Vulkan_ parameters, 
   and don't rely on _Metal_ default values.
-- Avoid use of _Metal_ renderpass load and store actions on memoryless attachments.
-- Fix memory leak on swapchain destruction.
-- Remove project qualifiers from references to `SPIRV-Cross` header files.
+- Add `MVKConfiguration::resumeLostDevice` and `MVK_CONFIG_RESUME_LOST_DEVICE` env var,
+  to allow `VkDevice` to resume after non-fatal `VK_ERROR_DEVICE_LOST` error.
 - `MVKDescriptorPool` pools its descriptor sets.
 - Enable `MVKConfiguration::preallocateDescriptors` and `MVK_CONFIG_PREALLOCATE_DESCRIPTORS` 
   environment variable by default to preallocate descriptors when a `VkDescriptorPool` is created.
+- Avoid use of _Metal_ renderpass load and store actions on memoryless attachments.
+- Fix memory leak on swapchain destruction.
+- Fix `MVKPhysicalDevice::getSurfaceFormats()` returning `VK_FORMAT_UNDEFINED`.
+- Fix memory leak where swapchains and images were not destroyed due to a retention loop.
+- Fix advertising single-texel alignment capability for texel buffers.
+- Fix time and space inefficiencies caused by missed shader cache lookup hits in `MVKShaderLibraryCache`.
+- Log enhanced command buffer errors in debug mode.
+- Ensure queue submission message logging occurs before submission object is destroyed.
+- Remove project qualifiers from references to `SPIRV-Cross` header files.
+- Only perform automatic GPU capture on queue identified by `MVKConfiguration::defaultGPUCaptureScopeQueueIndex` 
+  and `defaultGPUCaptureScopeQueueFamilyIndex`.
+- Introduce `MVKConfigLogLevelBits`, `MVKConfigAutoGPUCaptureScopeBits`, and `MVKConfigTraceVulkanCallsBits` 
+  enums to specify config API  values in a Vulkan-friendly manner, while automatically documenting the same values for env vars.
 - Add `MVKConfiguration::apiVersionToAdvertise` and `MVK_CONFIG_API_VERSION_TO_ADVERTISE` 
   env var to configure **MoltenVK** to advertise a particular _Vulkan_ version.
 - Add `MVKConfiguration::advertiseExtensions` and `MVK_CONFIG_ADVERTISE_EXTENSIONS` 
-  env var to configure **MoltenVK** to force advertising support for no, or minimal, _Vulkan_  extensions.
+  env var to configure **MoltenVK** to force advertising support for no, or minimally few, _Vulkan_  extensions.
 - Remove the `Hologram` and `API-Samples` demo apps, and remove 
   `LunarG/VulkanSamples` as a dependency library.
 - Add `NDEBUG` macro to all Release builds to remove `assert()` calls.
 - Update `VK_MVK_MOLTENVK_SPEC_VERSION` to `31`.
+- Update dependency libraries to match _Vulkan SDK 1.2.176_.
+- Update to latest SPIRV-Cross version:
+	- MSL: Support long `ulong` types in buffers in 2.3+.
+	- MSL: Support padding Metal argument buffer entries based on argument index.
+	- Add interfaces to aid with LTO-style optimization
+	- Handle edge cases in `OpCopyMemory`.
+
 
 
 
diff --git a/ExternalRevisions/README.md b/ExternalRevisions/README.md
index 68ea180..0af69c5 100644
--- a/ExternalRevisions/README.md
+++ b/ExternalRevisions/README.md
@@ -37,7 +37,6 @@
 - [*SPIRV-Tools*](https://github.com/KhronosGroup/SPIRV-Tools)
 - [*SPIRV-Headers*](https://github.com/KhronosGroup/SPIRV-Headers)
 - [*Vulkan-Tools*](https://github.com/KhronosGroup/Vulkan-Tools)
-- [*VulkanSamples*](https://github.com/LunarG/VulkanSamples)
 
 These external open-source libraries are maintained in the `External` directory.
 To retrieve and build these libraries from their sources, run the `fetchDependencies`
@@ -76,9 +75,6 @@
 - **_Vulkan-Tools_**: a GitHub repository commit identifier found in the
   `ExternalRevisions/Vulkan-Tools_repo_revision` file.
   
-- **_VulkanSamples_**: a GitHub repository commit identifier found in the
-  `ExternalRevisions/VulkanSamples_repo_revision` file.
-  
 You can update which versions of the *cereal*, *Vulkan-Headers*, *SPIRV-Cross*, 
 *glslang*, *Vulkan-Tools*, or *VulkanSamples* libraries are retrieved by changing 
 the value held in the corresponding `*_repo_revision` file listed above.
diff --git a/ExternalRevisions/SPIRV-Cross_repo_revision b/ExternalRevisions/SPIRV-Cross_repo_revision
index 948bf14..a04d552 100644
--- a/ExternalRevisions/SPIRV-Cross_repo_revision
+++ b/ExternalRevisions/SPIRV-Cross_repo_revision
@@ -1 +1 @@
-b4aa6dacfa8cd5c474d5a5d5ef4022c623c13828
+995c7981cc3ec0cbd1e5a07321cfdee3d1219524
diff --git a/ExternalRevisions/Vulkan-Headers_repo_revision b/ExternalRevisions/Vulkan-Headers_repo_revision
index 11497cc..8735ad9 100644
--- a/ExternalRevisions/Vulkan-Headers_repo_revision
+++ b/ExternalRevisions/Vulkan-Headers_repo_revision
@@ -1 +1 @@
-1d99b835ec3cd5a7fb2f2a2dd9a615ee2d1f0101
+074fa3055cfee530992bcbfa0fcb23106a82c1ab
diff --git a/ExternalRevisions/Vulkan-Tools_repo_revision b/ExternalRevisions/Vulkan-Tools_repo_revision
index 9c5e117..54e8460 100644
--- a/ExternalRevisions/Vulkan-Tools_repo_revision
+++ b/ExternalRevisions/Vulkan-Tools_repo_revision
@@ -1 +1 @@
-88ea55de928a08ba5c5f65a93d1e7c8f666fc43f
+eb3d67bd17ee433e2b0a8e56a7249bd83908812e
diff --git a/ExternalRevisions/VulkanSamples_repo_revision b/ExternalRevisions/VulkanSamples_repo_revision
deleted file mode 100644
index be20a30..0000000
--- a/ExternalRevisions/VulkanSamples_repo_revision
+++ /dev/null
@@ -1 +0,0 @@
-16cb7667f5de831ac042c7fa9eb8c771260197fe
diff --git a/ExternalRevisions/glslang_repo_revision b/ExternalRevisions/glslang_repo_revision
index 06cebc6..df531e7 100644
--- a/ExternalRevisions/glslang_repo_revision
+++ b/ExternalRevisions/glslang_repo_revision
@@ -1 +1 @@
-e56beaee736863ce48455955158f1839e6e4c1a1
+18eef33bd7a4bf5ad8c69f99cb72022608cf6e73
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.h b/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.h
index 6816dde..cbb0219 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.h
@@ -148,7 +148,7 @@
     }
 
 protected:
-    MVKDispatchableObjectICDRef _icdRef = { VK_NULL_HANDLE, this };
+    MVKDispatchableObjectICDRef _icdRef = { 0, this };
 
 };
 
diff --git a/MoltenVK/include/vk_video b/MoltenVK/include/vk_video
new file mode 120000
index 0000000..2d4f03d
--- /dev/null
+++ b/MoltenVK/include/vk_video
@@ -0,0 +1 @@
+../../External/Vulkan-Headers/include/vk_video
\ No newline at end of file