Resolve identity swizzles at VkImageView creation time

Bug: b/119620767
Change-Id: Ia00deb9b225f38b7faf8bf0fb41d02b0f8b36ebc
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/29849
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Chris Forbes <chrisforbes@google.com>
diff --git a/src/Vulkan/VkImageView.cpp b/src/Vulkan/VkImageView.cpp
index 6e99bf7..5310acf 100644
--- a/src/Vulkan/VkImageView.cpp
+++ b/src/Vulkan/VkImageView.cpp
@@ -15,12 +15,25 @@
 #include "VkImageView.hpp"
 #include "VkImage.hpp"
 
+namespace
+{
+	VkComponentMapping ResolveIdentityMapping(VkComponentMapping m)
+	{
+		return {
+			(m.r == VK_COMPONENT_SWIZZLE_IDENTITY) ? VK_COMPONENT_SWIZZLE_R : m.r,
+			(m.g == VK_COMPONENT_SWIZZLE_IDENTITY) ? VK_COMPONENT_SWIZZLE_G : m.g,
+			(m.b == VK_COMPONENT_SWIZZLE_IDENTITY) ? VK_COMPONENT_SWIZZLE_B : m.b,
+			(m.a == VK_COMPONENT_SWIZZLE_IDENTITY) ? VK_COMPONENT_SWIZZLE_A : m.a,
+		};
+	}
+}
+
 namespace vk
 {
 
 ImageView::ImageView(const VkImageViewCreateInfo* pCreateInfo, void* mem) :
 	image(Cast(pCreateInfo->image)), viewType(pCreateInfo->viewType), format(pCreateInfo->format),
-	components(pCreateInfo->components), subresourceRange(pCreateInfo->subresourceRange)
+	components(ResolveIdentityMapping(pCreateInfo->components)), subresourceRange(pCreateInfo->subresourceRange)
 {
 }