diff --git a/src/Device/Context.cpp b/src/Device/Context.cpp
index 84fc868..a338198 100644
--- a/src/Device/Context.cpp
+++ b/src/Device/Context.cpp
@@ -624,41 +624,32 @@
 			// depthAttachmentFormat and stencilAttachmentFormat are VK_FORMAT_UNDEFINED. If a graphics pipeline
 			// is created with a valid VkRenderPass, parameters of this structure are ignored.
 
-			const VkBaseInStructure *extensionCreateInfo = reinterpret_cast<const VkBaseInStructure *>(pCreateInfo->pNext);
-			while(extensionCreateInfo)
+			const auto *renderingCreateInfo = GetExtendedStruct<VkPipelineRenderingCreateInfo>(pCreateInfo->pNext, VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO);
+			if(renderingCreateInfo)
 			{
-				if(extensionCreateInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO)
+				if((renderingCreateInfo->depthAttachmentFormat != VK_FORMAT_UNDEFINED) ||
+				   (renderingCreateInfo->stencilAttachmentFormat != VK_FORMAT_UNDEFINED))
 				{
-					const VkPipelineRenderingCreateInfo *renderingCreateInfo = reinterpret_cast<const VkPipelineRenderingCreateInfo *>(extensionCreateInfo);
+					// If renderPass is VK_NULL_HANDLE, the pipeline is being created with fragment
+					// shader state, and either of VkPipelineRenderingCreateInfo::depthAttachmentFormat
+					// or VkPipelineRenderingCreateInfo::stencilAttachmentFormat are not
+					// VK_FORMAT_UNDEFINED, pDepthStencilState must be a valid pointer to a valid
+					// VkPipelineDepthStencilStateCreateInfo structure
+					ASSERT(depthStencilState);
 
-					if((renderingCreateInfo->depthAttachmentFormat != VK_FORMAT_UNDEFINED) ||
-					   (renderingCreateInfo->stencilAttachmentFormat != VK_FORMAT_UNDEFINED))
-					{
-						// If renderPass is VK_NULL_HANDLE, the pipeline is being created with fragment
-						// shader state, and either of VkPipelineRenderingCreateInfo::depthAttachmentFormat
-						// or VkPipelineRenderingCreateInfo::stencilAttachmentFormat are not
-						// VK_FORMAT_UNDEFINED, pDepthStencilState must be a valid pointer to a valid
-						// VkPipelineDepthStencilStateCreateInfo structure
-						ASSERT(depthStencilState);
-
-						setDepthStencilState(depthStencilState);
-					}
-
-					if(renderingCreateInfo->colorAttachmentCount > 0)
-					{
-						// If renderPass is VK_NULL_HANDLE, the pipeline is being created with fragment
-						// output interface state, and VkPipelineRenderingCreateInfo::colorAttachmentCount
-						// is not equal to 0, pColorBlendState must be a valid pointer to a valid
-						// VkPipelineColorBlendStateCreateInfo structure
-						ASSERT(colorBlendState);
-
-						setColorBlendState(colorBlendState);
-					}
-
-					break;
+					setDepthStencilState(depthStencilState);
 				}
 
-				extensionCreateInfo = extensionCreateInfo->pNext;
+				if(renderingCreateInfo->colorAttachmentCount > 0)
+				{
+					// If renderPass is VK_NULL_HANDLE, the pipeline is being created with fragment
+					// output interface state, and VkPipelineRenderingCreateInfo::colorAttachmentCount
+					// is not equal to 0, pColorBlendState must be a valid pointer to a valid
+					// VkPipelineColorBlendStateCreateInfo structure
+					ASSERT(colorBlendState);
+
+					setColorBlendState(colorBlendState);
+				}
 			}
 		}
 	}
diff --git a/src/Vulkan/VkDescriptorSetLayout.cpp b/src/Vulkan/VkDescriptorSetLayout.cpp
index 5fe5a40..41f39ad 100644
--- a/src/Vulkan/VkDescriptorSetLayout.cpp
+++ b/src/Vulkan/VkDescriptorSetLayout.cpp
@@ -625,26 +625,20 @@
 
 	case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK:
 		{
-			auto extInfo = reinterpret_cast<VkBaseInStructure const *>(writeDescriptorSet.pNext);
-			while(extInfo)
-			{
-				if(extInfo->sType == VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK)
-				{
-					// "The descriptorCount of VkDescriptorSetLayoutBinding thus provides the total
-					//  number of bytes a particular binding with an inline uniform block descriptor
-					//  type can hold, while the srcArrayElement, dstArrayElement, and descriptorCount
-					//  members of VkWriteDescriptorSet, VkCopyDescriptorSet, and
-					//  VkDescriptorUpdateTemplateEntry (where applicable) specify the byte offset and
-					//  number of bytes to write/copy to the binding's backing store. Additionally,
-					//  the stride member of VkDescriptorUpdateTemplateEntry is ignored for inline
-					//  uniform blocks and a default value of one is used, meaning that the data to
-					//  update inline uniform block bindings with must be contiguous in memory."
-					ptr = reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlock *>(extInfo)->pData;
-					e.stride = 1;
-					break;
-				}
-				extInfo = extInfo->pNext;
-			}
+			const auto *inlineBlock = GetExtendedStruct<VkWriteDescriptorSetInlineUniformBlock>(writeDescriptorSet.pNext, VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK);
+			ASSERT(inlineBlock);
+
+			// "The descriptorCount of VkDescriptorSetLayoutBinding thus provides the total
+			//  number of bytes a particular binding with an inline uniform block descriptor
+			//  type can hold, while the srcArrayElement, dstArrayElement, and descriptorCount
+			//  members of VkWriteDescriptorSet, VkCopyDescriptorSet, and
+			//  VkDescriptorUpdateTemplateEntry (where applicable) specify the byte offset and
+			//  number of bytes to write/copy to the binding's backing store. Additionally,
+			//  the stride member of VkDescriptorUpdateTemplateEntry is ignored for inline
+			//  uniform blocks and a default value of one is used, meaning that the data to
+			//  update inline uniform block bindings with must be contiguous in memory."
+			ptr = inlineBlock->pData;
+			e.stride = 1;
 		}
 		break;
 
diff --git a/src/Vulkan/VkDevice.cpp b/src/Vulkan/VkDevice.cpp
index caed186..a21d4b3 100644
--- a/src/Vulkan/VkDevice.cpp
+++ b/src/Vulkan/VkDevice.cpp
@@ -170,18 +170,10 @@
 #endif  // ENABLE_VK_DEBUGGER
 
 #ifdef SWIFTSHADER_DEVICE_MEMORY_REPORT
-	const VkBaseInStructure *extensionCreateInfo = reinterpret_cast<const VkBaseInStructure *>(pCreateInfo->pNext);
-	while(extensionCreateInfo)
+	const auto *deviceMemoryReportCreateInfo = GetExtendedStruct<VkDeviceDeviceMemoryReportCreateInfoEXT>(pCreateInfo->pNext, VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT);
+	if(deviceMemoryReportCreateInfo && deviceMemoryReportCreateInfo->pfnUserCallback != nullptr)
 	{
-		if(extensionCreateInfo->sType == VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT)
-		{
-			auto deviceMemoryReportCreateInfo = reinterpret_cast<const VkDeviceDeviceMemoryReportCreateInfoEXT *>(pCreateInfo->pNext);
-			if(deviceMemoryReportCreateInfo->pfnUserCallback != nullptr)
-			{
-				deviceMemoryReportCallbacks.emplace_back(deviceMemoryReportCreateInfo->pfnUserCallback, deviceMemoryReportCreateInfo->pUserData);
-			}
-		}
-		extensionCreateInfo = extensionCreateInfo->pNext;
+		deviceMemoryReportCallbacks.emplace_back(deviceMemoryReportCreateInfo->pfnUserCallback, deviceMemoryReportCreateInfo->pUserData);
 	}
 #endif  // SWIFTSHADER_DEVICE_MEMORY_REPORT
 }
diff --git a/src/Vulkan/VkImage.cpp b/src/Vulkan/VkImage.cpp
index 4bb9135..43b8e0f 100644
--- a/src/Vulkan/VkImage.cpp
+++ b/src/Vulkan/VkImage.cpp
@@ -198,14 +198,10 @@
 		decompressedImage = new(mem) Image(&compressedImageCreateInfo, nullptr, device);
 	}
 
-	const auto *nextInfo = reinterpret_cast<const VkBaseInStructure *>(pCreateInfo->pNext);
-	for(; nextInfo != nullptr; nextInfo = nextInfo->pNext)
+	const auto *externalInfo = GetExtendedStruct<VkExternalMemoryImageCreateInfo>(pCreateInfo->pNext, VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO);
+	if(externalInfo)
 	{
-		if(nextInfo->sType == VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO)
-		{
-			const auto *externalInfo = reinterpret_cast<const VkExternalMemoryImageCreateInfo *>(nextInfo);
-			supportedExternalMemoryHandleTypes = externalInfo->handleTypes;
-		}
+		supportedExternalMemoryHandleTypes = externalInfo->handleTypes;
 	}
 }
 
diff --git a/src/Vulkan/VkObject.hpp b/src/Vulkan/VkObject.hpp
index 73301fb..7a5d120 100644
--- a/src/Vulkan/VkObject.hpp
+++ b/src/Vulkan/VkObject.hpp
@@ -164,6 +164,23 @@
 	}
 };
 
+template <typename T>
+const T *GetExtendedStruct(const void *pNext, VkStructureType sType)
+{
+	const VkBaseInStructure *extendedStruct = reinterpret_cast<const VkBaseInStructure *>(pNext);
+	while(extendedStruct)
+	{
+		if(extendedStruct->sType == sType)
+		{
+			return reinterpret_cast<const T *>(extendedStruct);
+		}
+
+		extendedStruct = extendedStruct->pNext;
+	}
+
+	return nullptr;
+}
+
 }  // namespace vk
 
 #endif  // VK_OBJECT_HPP_
diff --git a/src/Vulkan/VkPipeline.cpp b/src/Vulkan/VkPipeline.cpp
index 5b7e597..66a3c21 100644
--- a/src/Vulkan/VkPipeline.cpp
+++ b/src/Vulkan/VkPipeline.cpp
@@ -192,18 +192,7 @@
 private:
 	static const VkPipelineCreationFeedbackCreateInfo *GetPipelineCreationFeedback(const void *pNext)
 	{
-		const VkBaseInStructure *extensionCreateInfo = reinterpret_cast<const VkBaseInStructure *>(pNext);
-		while(extensionCreateInfo)
-		{
-			if(extensionCreateInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO)
-			{
-				return reinterpret_cast<const VkPipelineCreationFeedbackCreateInfo *>(extensionCreateInfo);
-			}
-
-			extensionCreateInfo = extensionCreateInfo->pNext;
-		}
-
-		return nullptr;
+		return vk::GetExtendedStruct<VkPipelineCreationFeedbackCreateInfo>(pNext, VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO);
 	}
 
 	void pipelineCreationBegins()
