diff --git a/Docs/MoltenVK_Runtime_UserGuide.md b/Docs/MoltenVK_Runtime_UserGuide.md
index 0077861..a4de56f 100644
--- a/Docs/MoltenVK_Runtime_UserGuide.md
+++ b/Docs/MoltenVK_Runtime_UserGuide.md
@@ -223,6 +223,7 @@
 
 - `VK_KHR_16bit_storage`
 - `VK_KHR_8bit_storage`
+- `VK_KHR_bind_memory2`
 - `VK_KHR_dedicated_allocation`
 - `VK_KHR_descriptor_update_template`
 - `VK_KHR_get_memory_requirements2`
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm
index bc1af21..3acd3d4 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm
@@ -283,6 +283,8 @@
 	ADD_PROC_ADDR(vkCmdExecuteCommands);
 
 	// Supported extensions:
+	ADD_PROC_ADDR(vkBindBufferMemory2KHR);
+	ADD_PROC_ADDR(vkBindImageMemory2KHR);
 	ADD_PROC_ADDR(vkCreateDescriptorUpdateTemplateKHR);
 	ADD_PROC_ADDR(vkDestroyDescriptorUpdateTemplateKHR);
 	ADD_PROC_ADDR(vkUpdateDescriptorSetWithTemplateKHR);
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKResource.h b/MoltenVK/MoltenVK/GPUObjects/MVKResource.h
index 5e3adfc..4128eec 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKResource.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKResource.h
@@ -47,6 +47,9 @@
 	/** Binds this resource to the specified offset within the specified memory allocation. */
 	virtual VkResult bindDeviceMemory(MVKDeviceMemory* mvkMem, VkDeviceSize memOffset);
 
+	/** Binds this resource according to the specified bind information. */
+	virtual VkResult bindDeviceMemory2(const void* pBindInfo);
+
 	/** Returns the device memory underlying this resource. */
 	inline MVKDeviceMemory* getDeviceMemory() { return _deviceMemory; }
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKResource.mm b/MoltenVK/MoltenVK/GPUObjects/MVKResource.mm
index c535fd5..b2806a5 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKResource.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKResource.mm
@@ -20,6 +20,18 @@
 #include "MVKCommandBuffer.h"
 
 
+struct MVKBindDeviceMemoryInfo {
+	VkStructureType sType;
+	void* pNext;
+	union {
+		VkBuffer buffer;
+		VkImage image;
+	};
+	VkDeviceMemory memory;
+	VkDeviceSize memoryOffset;
+};
+
+
 #pragma mark MVKResource
 
 VkResult MVKResource::bindDeviceMemory(MVKDeviceMemory* mvkMem, VkDeviceSize memOffset) {
@@ -33,6 +45,11 @@
 	return VK_SUCCESS;
 }
 
+VkResult MVKResource::bindDeviceMemory2(const void* pBindInfo) {
+	auto* mvkBindInfo = (const MVKBindDeviceMemoryInfo*)pBindInfo;
+	return bindDeviceMemory((MVKDeviceMemory*)mvkBindInfo->memory, mvkBindInfo->memoryOffset);
+}
+
 // Returns whether the specified global memory barrier requires a sync between this
 // texture and host memory for the purpose of the host reading texture memory.
 bool MVKResource::needsHostReadSync(VkPipelineStageFlags srcStageMask,
diff --git a/MoltenVK/MoltenVK/Layers/MVKExtensions.def b/MoltenVK/MoltenVK/Layers/MVKExtensions.def
index f2a2c6c..791100f 100644
--- a/MoltenVK/MoltenVK/Layers/MVKExtensions.def
+++ b/MoltenVK/MoltenVK/Layers/MVKExtensions.def
@@ -32,6 +32,7 @@
 
 MVK_EXTENSION(KHR_16bit_storage, KHR_16BIT_STORAGE)
 MVK_EXTENSION(KHR_8bit_storage, KHR_8BIT_STORAGE)
+MVK_EXTENSION(KHR_bind_memory2, KHR_BIND_MEMORY_2)
 MVK_EXTENSION(KHR_dedicated_allocation, KHR_DEDICATED_ALLOCATION)
 MVK_EXTENSION(KHR_descriptor_update_template, KHR_DESCRIPTOR_UPDATE_TEMPLATE)
 MVK_EXTENSION(KHR_get_memory_requirements2, KHR_GET_MEMORY_REQUIREMENTS_2)
diff --git a/MoltenVK/MoltenVK/Vulkan/vulkan.mm b/MoltenVK/MoltenVK/Vulkan/vulkan.mm
index b468859..869f8a0 100644
--- a/MoltenVK/MoltenVK/Vulkan/vulkan.mm
+++ b/MoltenVK/MoltenVK/Vulkan/vulkan.mm
@@ -1475,6 +1475,40 @@
 
 
 #pragma mark -
+#pragma mark VK_KHR_bind_memory2 extension
+
+MVK_PUBLIC_SYMBOL VkResult vkBindBufferMemory2KHR(
+    VkDevice                                       device,
+    uint32_t                                       bindInfoCount,
+    const VkBindBufferMemoryInfoKHR*               pBindInfos) {
+    VkResult res;
+    for (uint32_t i = 0; i < bindInfoCount; ++i) {
+        MVKBuffer* mvkBuff = (MVKBuffer*)pBindInfos[i].buffer;
+        res = mvkBuff->bindDeviceMemory2(&pBindInfos[i]);
+        if (res != VK_SUCCESS) {
+            break;
+        }
+    }
+    return res;
+}
+
+MVK_PUBLIC_SYMBOL VkResult vkBindImageMemory2KHR(
+    VkDevice                                       device,
+    uint32_t                                       bindInfoCount,
+    const VkBindImageMemoryInfoKHR*                pBindInfos) {
+    VkResult res;
+    for (uint32_t i = 0; i < bindInfoCount; ++i) {
+        MVKImage* mvkImg = (MVKImage*)pBindInfos[i].image;
+        res = mvkImg->bindDeviceMemory2(&pBindInfos[i]);
+        if (res != VK_SUCCESS) {
+            break;
+        }
+    }
+    return res;
+}
+
+
+#pragma mark -
 #pragma mark VK_KHR_descriptor_update_template extension
 
 MVK_PUBLIC_SYMBOL VkResult vkCreateDescriptorUpdateTemplateKHR(
