Fixed PipelineLayout creation on 32 bit

The assumption that Cast(VkDescriptorSetLayout) is nothing
but a noop cast no longer hold on 32 bit, since the handle
and the pointer don't have the same size. Used the Cast()
function to solve the issue.

Bug chromium:968313

Change-Id: I0349d1f4f00ca983bbc4ca9c39be77d3a0b3d5bc
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/32229
Tested-by: Alexis Hétu <sugoi@google.com>
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Vulkan/VkPipelineLayout.cpp b/src/Vulkan/VkPipelineLayout.cpp
index 1c80ca7..5ea8cb8 100644
--- a/src/Vulkan/VkPipelineLayout.cpp
+++ b/src/Vulkan/VkPipelineLayout.cpp
@@ -25,7 +25,10 @@
 
 	size_t setLayoutsSize = pCreateInfo->setLayoutCount * sizeof(DescriptorSetLayout*);
 	setLayouts = reinterpret_cast<DescriptorSetLayout**>(hostMem);
-	memcpy(setLayouts, pCreateInfo->pSetLayouts, setLayoutsSize); // Assumes Cast(VkDescriptorSetLayout) is nothing but a cast
+	for(uint32_t i = 0; i < pCreateInfo->setLayoutCount; i++)
+	{
+		setLayouts[i] = Cast(pCreateInfo->pSetLayouts[i]);
+	}
 	hostMem += setLayoutsSize;
 
 	size_t pushConstantRangesSize = pCreateInfo->pushConstantRangeCount * sizeof(VkPushConstantRange);