diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md
index 68086a8..d5fa9a6 100644
--- a/Docs/Whats_New.md
+++ b/Docs/Whats_New.md
@@ -28,6 +28,7 @@
 - Check `MTLDevice` to enable support for `VK_KHR_fragment_shader_barycentric` 
   and `VK_NV_fragment_shader_barycentric` extensions.
 - Fix query pool wait block when query is not encoded to be written to.
+- Fix `vkUpdateDescriptorSetWithTemplate()` for inline block descriptors.
 - Ignore sampler update in descriptor set bindings that use immutable samplers.
 - Update `VK_MVK_MOLTENVK_SPEC_VERSION` to version `35`.
 
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h
index 55dfb37..ca4d9c4 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h
@@ -261,7 +261,7 @@
 
 public:
 	VkResult setContent(MVKCommandBuffer* cmdBuff,
-						VkDescriptorUpdateTemplateKHR descUpdateTemplate,
+						VkDescriptorUpdateTemplate descUpdateTemplate,
 						VkPipelineLayout layout,
 						uint32_t set,
 						const void* pData);
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm
index c5c11c9..beca5e8 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm
@@ -429,7 +429,7 @@
 #pragma mark MVKCmdPushDescriptorSetWithTemplate
 
 VkResult MVKCmdPushDescriptorSetWithTemplate::setContent(MVKCommandBuffer* cmdBuff,
-														 VkDescriptorUpdateTemplateKHR descUpdateTemplate,
+														 VkDescriptorUpdateTemplate descUpdateTemplate,
 														 VkPipelineLayout layout,
 														 uint32_t set,
 														 const void* pData) {
@@ -443,7 +443,7 @@
 
 	if (_pData) delete[] (char*)_pData;
 	// Work out how big the memory block in pData is.
-	const VkDescriptorUpdateTemplateEntryKHR* pEntry =
+	const VkDescriptorUpdateTemplateEntry* pEntry =
 		_descUpdateTemplate->getEntry(_descUpdateTemplate->getNumberOfEntries()-1);
 	size_t size = pEntry->offset;
 	// If we were given a stride, use that; otherwise, assume only one info
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h
index c6ce85c..1f05055 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h
@@ -330,16 +330,16 @@
 	VkDebugReportObjectTypeEXT getVkDebugReportObjectType() override { return VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT; }
 
 	/** Get the nth update template entry. */
-	const VkDescriptorUpdateTemplateEntryKHR* getEntry(uint32_t n) const;
+	const VkDescriptorUpdateTemplateEntry* getEntry(uint32_t n) const;
 
 	/** Get the total number of entries. */
 	uint32_t getNumberOfEntries() const;
 
 	/** Get the type of this template. */
-	VkDescriptorUpdateTemplateTypeKHR getType() const;
+	VkDescriptorUpdateTemplateType getType() const;
 
 	/** Constructs an instance for the specified device. */
-	MVKDescriptorUpdateTemplate(MVKDevice* device, const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo);
+	MVKDescriptorUpdateTemplate(MVKDevice* device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo);
 
 	/** Destructor. */
 	~MVKDescriptorUpdateTemplate() override = default;
@@ -347,8 +347,8 @@
 protected:
 	void propagateDebugName() override {}
 
-	VkDescriptorUpdateTemplateTypeKHR _type;
-	MVKSmallVector<VkDescriptorUpdateTemplateEntryKHR, 1> _entries;
+	VkDescriptorUpdateTemplateType _type;
+	MVKSmallVector<VkDescriptorUpdateTemplateEntry, 1> _entries;
 };
 
 #pragma mark -
@@ -362,5 +362,5 @@
 
 /** Updates the resource bindings in the given descriptor set from the specified template. */
 void mvkUpdateDescriptorSetWithTemplate(VkDescriptorSet descriptorSet,
-										VkDescriptorUpdateTemplateKHR updateTemplate,
+										VkDescriptorUpdateTemplate updateTemplate,
 										const void* pData);
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm
index 86a6efd..1a30358 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm
@@ -149,7 +149,7 @@
 
 	if (!cmdEncoder) { clearConfigurationResult(); }
     for (uint32_t i = 0; i < descUpdateTemplate->getNumberOfEntries(); i++) {
-        const VkDescriptorUpdateTemplateEntryKHR* pEntry = descUpdateTemplate->getEntry(i);
+        const VkDescriptorUpdateTemplateEntry* pEntry = descUpdateTemplate->getEntry(i);
         uint32_t dstBinding = pEntry->dstBinding;
         uint32_t dstArrayElement = pEntry->dstArrayElement;
         uint32_t descriptorCount = pEntry->descriptorCount;
@@ -856,7 +856,7 @@
 #pragma mark -
 #pragma mark MVKDescriptorUpdateTemplate
 
-const VkDescriptorUpdateTemplateEntryKHR* MVKDescriptorUpdateTemplate::getEntry(uint32_t n) const {
+const VkDescriptorUpdateTemplateEntry* MVKDescriptorUpdateTemplate::getEntry(uint32_t n) const {
 	return &_entries[n];
 }
 
@@ -864,12 +864,12 @@
 	return (uint32_t)_entries.size();
 }
 
-VkDescriptorUpdateTemplateTypeKHR MVKDescriptorUpdateTemplate::getType() const {
+VkDescriptorUpdateTemplateType MVKDescriptorUpdateTemplate::getType() const {
 	return _type;
 }
 
 MVKDescriptorUpdateTemplate::MVKDescriptorUpdateTemplate(MVKDevice* device,
-														 const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo) :
+														 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo) :
 	MVKVulkanAPIDeviceObject(device), _type(pCreateInfo->templateType) {
 
 	for (uint32_t i = 0; i < pCreateInfo->descriptorUpdateEntryCount; i++)
@@ -924,6 +924,8 @@
 		// For inline block create a temp buffer of descCnt bytes to hold data during copy.
 		uint8_t dstBuffer[descCnt];
 		VkWriteDescriptorSetInlineUniformBlockEXT inlineUniformBlock;
+		inlineUniformBlock.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT;
+		inlineUniformBlock.pNext = nullptr;
 		inlineUniformBlock.pData = dstBuffer;
 		inlineUniformBlock.dataSize = descCnt;
 
@@ -940,19 +942,29 @@
 
 // Updates the resource bindings in the given descriptor set from the specified template.
 void mvkUpdateDescriptorSetWithTemplate(VkDescriptorSet descriptorSet,
-										VkDescriptorUpdateTemplateKHR updateTemplate,
+										VkDescriptorUpdateTemplate updateTemplate,
 										const void* pData) {
 
 	MVKDescriptorSet* dstSet = (MVKDescriptorSet*)descriptorSet;
 	MVKDescriptorUpdateTemplate* pTemplate = (MVKDescriptorUpdateTemplate*)updateTemplate;
 
-	if (pTemplate->getType() != VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR)
+	if (pTemplate->getType() != VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET)
 		return;
 
 	// Perform the updates
 	for (uint32_t i = 0; i < pTemplate->getNumberOfEntries(); i++) {
-		const VkDescriptorUpdateTemplateEntryKHR* pEntry = pTemplate->getEntry(i);
+		const VkDescriptorUpdateTemplateEntry* pEntry = pTemplate->getEntry(i);
 		const void* pCurData = (const char*)pData + pEntry->offset;
+
+		// For inline block, wrap the raw data in in inline update struct.
+		VkWriteDescriptorSetInlineUniformBlockEXT inlineUniformBlock;
+		if (pEntry->descriptorType == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT) {
+			inlineUniformBlock.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT;
+			inlineUniformBlock.pNext = nullptr;
+			inlineUniformBlock.pData = pCurData;
+			inlineUniformBlock.dataSize = pEntry->descriptorCount;
+			pCurData = &inlineUniformBlock;
+		}
 		dstSet->write(pEntry, pEntry->stride, pCurData);
 	}
 }
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
index f7bc5ac..c55398b 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
@@ -596,7 +596,7 @@
 	void destroyDescriptorPool(MVKDescriptorPool* mvkDP,
 							   const VkAllocationCallbacks* pAllocator);
 
-	MVKDescriptorUpdateTemplate* createDescriptorUpdateTemplate(const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
+	MVKDescriptorUpdateTemplate* createDescriptorUpdateTemplate(const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
 																const VkAllocationCallbacks* pAllocator);
 	void destroyDescriptorUpdateTemplate(MVKDescriptorUpdateTemplate* mvkDUT,
 										 const VkAllocationCallbacks* pAllocator);
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
index e5f6860..539a569 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
@@ -3617,7 +3617,7 @@
 }
 
 MVKDescriptorUpdateTemplate* MVKDevice::createDescriptorUpdateTemplate(
-	const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
+	const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
 	const VkAllocationCallbacks* pAllocator) {
 	return new MVKDescriptorUpdateTemplate(this, pCreateInfo);
 }
diff --git a/MoltenVK/MoltenVK/Vulkan/vulkan.mm b/MoltenVK/MoltenVK/Vulkan/vulkan.mm
index 58b6c27..2fa6b10 100644
--- a/MoltenVK/MoltenVK/Vulkan/vulkan.mm
+++ b/MoltenVK/MoltenVK/Vulkan/vulkan.mm
@@ -2513,7 +2513,7 @@
 
 MVK_PUBLIC_VULKAN_SYMBOL void vkCmdPushDescriptorSetWithTemplateKHR(
     VkCommandBuffer                            commandBuffer,
-    VkDescriptorUpdateTemplateKHR              descriptorUpdateTemplate,
+    VkDescriptorUpdateTemplate              descriptorUpdateTemplate,
     VkPipelineLayout                           layout,
     uint32_t                                   set,
     const void*                                pData) {
