diff --git a/src/Vulkan/VkDescriptorPool.cpp b/src/Vulkan/VkDescriptorPool.cpp
index 3eb1662..066120b 100644
--- a/src/Vulkan/VkDescriptorPool.cpp
+++ b/src/Vulkan/VkDescriptorPool.cpp
@@ -74,7 +74,7 @@
 	for(uint32_t i = 0; i < descriptorSetCount; i++)
 	{
 		pDescriptorSets[i] = VK_NULL_HANDLE;
-		layoutSizes[i] = vk::Cast(pSetLayouts[i])->getDescriptorSetAllocationSize(variableDescriptorCounts ? variableDescriptorCounts[i] : 0);
+		layoutSizes[i] = vk::Cast(pSetLayouts[i])->getDescriptorSetAllocationSize(variableDescriptorCounts ? &variableDescriptorCounts[i] : nullptr);
 	}
 
 	VkResult result = allocateSets(&(layoutSizes[0]), descriptorSetCount, pDescriptorSets);
@@ -82,7 +82,7 @@
 	{
 		for(uint32_t i = 0; i < descriptorSetCount; i++)
 		{
-			vk::Cast(pSetLayouts[i])->initialize(vk::Cast(pDescriptorSets[i]), variableDescriptorCounts ? variableDescriptorCounts[i] : 0);
+			vk::Cast(pSetLayouts[i])->initialize(vk::Cast(pDescriptorSets[i]), variableDescriptorCounts ? &variableDescriptorCounts[i] : nullptr);
 		}
 	}
 	return result;
@@ -235,4 +235,4 @@
 	return totalFreeSize;
 }
 
-}  // namespace vk
\ No newline at end of file
+}  // namespace vk
diff --git a/src/Vulkan/VkDescriptorSetLayout.cpp b/src/Vulkan/VkDescriptorSetLayout.cpp
index beae8c1..9f4bbcd 100644
--- a/src/Vulkan/VkDescriptorSetLayout.cpp
+++ b/src/Vulkan/VkDescriptorSetLayout.cpp
@@ -143,22 +143,22 @@
 	       type == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC;
 }
 
-size_t DescriptorSetLayout::getDescriptorSetAllocationSize(uint32_t variableDescriptorCount) const
+size_t DescriptorSetLayout::getDescriptorSetAllocationSize(const uint32_t *variableDescriptorCount) const
 {
 	// vk::DescriptorSet has a header with a pointer to the layout.
 	return sw::align<alignof(DescriptorSet)>(sizeof(DescriptorSetHeader) + getDescriptorSetDataSize(variableDescriptorCount));
 }
 
-size_t DescriptorSetLayout::getDescriptorSetDataSize(uint32_t variableDescriptorCount) const
+size_t DescriptorSetLayout::getDescriptorSetDataSize(const uint32_t *variableDescriptorCount) const
 {
 	size_t size = 0;
 	for(uint32_t i = 0; i < bindingsArraySize; i++)
 	{
 		uint32_t descriptorCount = bindings[i].descriptorCount;
 
-		if((i == (bindingsArraySize - 1)) && (variableDescriptorCount > 0))
+		if((i == (bindingsArraySize - 1)) && variableDescriptorCount)
 		{
-			descriptorCount = variableDescriptorCount;
+			descriptorCount = *variableDescriptorCount;
 		}
 
 		size += descriptorCount * GetDescriptorSize(bindings[i].descriptorType);
@@ -167,7 +167,7 @@
 	return size;
 }
 
-void DescriptorSetLayout::initialize(DescriptorSet *descriptorSet, uint32_t variableDescriptorCount)
+void DescriptorSetLayout::initialize(DescriptorSet *descriptorSet, const uint32_t *variableDescriptorCount)
 {
 	ASSERT(descriptorSet->header.layout == nullptr);
 
@@ -181,9 +181,9 @@
 
 		uint32_t descriptorCount = bindings[i].descriptorCount;
 
-		if((i == (bindingsArraySize - 1)) && (variableDescriptorCount > 0))
+		if((i == (bindingsArraySize - 1)) && variableDescriptorCount)
 		{
-			descriptorCount = variableDescriptorCount;
+			descriptorCount = *variableDescriptorCount;
 		}
 
 		if(bindings[i].immutableSamplers)
diff --git a/src/Vulkan/VkDescriptorSetLayout.hpp b/src/Vulkan/VkDescriptorSetLayout.hpp
index bf3a1c0..b3ff806 100644
--- a/src/Vulkan/VkDescriptorSetLayout.hpp
+++ b/src/Vulkan/VkDescriptorSetLayout.hpp
@@ -106,10 +106,10 @@
 
 	static void WriteDescriptorSet(Device *device, DescriptorSet *dstSet, const VkDescriptorUpdateTemplateEntry &entry, const char *src);
 
-	void initialize(DescriptorSet *descriptorSet, uint32_t variableDescriptorCount);
+	void initialize(DescriptorSet *descriptorSet, const uint32_t* variableDescriptorCount);
 
 	// Returns the total size of the descriptor set in bytes.
-	size_t getDescriptorSetAllocationSize(uint32_t variableDescriptorCount) const;
+	size_t getDescriptorSetAllocationSize(const uint32_t* variableDescriptorCount) const;
 
 	// Returns the byte offset from the base address of the descriptor set for
 	// the given binding number.
@@ -136,7 +136,7 @@
 
 private:
 	uint8_t *getDescriptorPointer(DescriptorSet *descriptorSet, uint32_t bindingNumber, uint32_t arrayElement, uint32_t count, size_t *typeSize) const;
-	size_t getDescriptorSetDataSize(uint32_t variableDescriptorCount) const;
+	size_t getDescriptorSetDataSize(const uint32_t* variableDescriptorCount) const;
 	static bool isDynamic(VkDescriptorType type);
 
 	const VkDescriptorSetLayoutCreateFlags flags;
