Refactor image view extent retrieval

Image views are only accessed by shaders, and we've previously ensured
descriptors only have one field for holding either the depth of a 3D
texture or the array layer count. This value is accessed through the
getDepthOrLayerCount() method, and so the getMipLevelExtent() of the
ImageView class only has to return the 2D extent.

Bug: b/162315264
Change-Id: I93dd5bbabcd7efc8aa174beb38204e900c8be614
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/47789
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Vulkan/VkDescriptorSetLayout.cpp b/src/Vulkan/VkDescriptorSetLayout.cpp
index 6959fd7..19615a5 100644
--- a/src/Vulkan/VkDescriptorSetLayout.cpp
+++ b/src/Vulkan/VkDescriptorSetLayout.cpp
@@ -371,7 +371,7 @@
 					texture->mipmap[2].buffer = imageView->getOffsetPointer(offset, VK_IMAGE_ASPECT_PLANE_2_BIT, level, 0, ImageView::SAMPLING);
 				}
 
-				VkExtent3D extent = imageView->getMipLevelExtent(0);
+				VkExtent2D extent = imageView->getMipLevelExtent(0);
 
 				int width = extent.width;
 				int height = extent.height;
@@ -410,7 +410,7 @@
 						mipmap.buffer = imageView->getOffsetPointer(offset, aspect, level, 0, ImageView::SAMPLING);
 					}
 
-					VkExtent3D extent = imageView->getMipLevelExtent(level);
+					VkExtent2D extent = imageView->getMipLevelExtent(level);
 
 					int width = extent.width;
 					int height = extent.height;
diff --git a/src/Vulkan/VkImageView.cpp b/src/Vulkan/VkImageView.cpp
index 421a37f..f789770 100644
--- a/src/Vulkan/VkImageView.cpp
+++ b/src/Vulkan/VkImageView.cpp
@@ -281,15 +281,18 @@
 	return static_cast<int>(getImage(usage)->getLayerSize(aspect));
 }
 
-VkExtent3D ImageView::getMipLevelExtent(uint32_t mipLevel) const
+VkExtent2D ImageView::getMipLevelExtent(uint32_t mipLevel) const
 {
-	return image->getMipLevelExtent(static_cast<VkImageAspectFlagBits>(subresourceRange.aspectMask),
-	                                subresourceRange.baseMipLevel + mipLevel);
+	VkExtent3D extent = image->getMipLevelExtent(static_cast<VkImageAspectFlagBits>(subresourceRange.aspectMask),
+	                                             subresourceRange.baseMipLevel + mipLevel);
+
+	return { extent.width, extent.height };
 }
 
 int ImageView::getDepthOrLayerCount(uint32_t mipLevel) const
 {
-	VkExtent3D extent = getMipLevelExtent(mipLevel);
+	VkExtent3D extent = image->getMipLevelExtent(static_cast<VkImageAspectFlagBits>(subresourceRange.aspectMask),
+	                                             subresourceRange.baseMipLevel + mipLevel);
 	int layers = subresourceRange.layerCount;
 	int depthOrLayers = layers > 1 ? layers : extent.depth;
 
diff --git a/src/Vulkan/VkImageView.hpp b/src/Vulkan/VkImageView.hpp
index eb377ab..1839cf2 100644
--- a/src/Vulkan/VkImageView.hpp
+++ b/src/Vulkan/VkImageView.hpp
@@ -87,7 +87,7 @@
 	int slicePitchBytes(VkImageAspectFlagBits aspect, uint32_t mipLevel, Usage usage = RAW) const;
 	int getMipLevelSize(VkImageAspectFlagBits aspect, uint32_t mipLevel, Usage usage = RAW) const;
 	int layerPitchBytes(VkImageAspectFlagBits aspect, Usage usage = RAW) const;
-	VkExtent3D getMipLevelExtent(uint32_t mipLevel) const;
+	VkExtent2D getMipLevelExtent(uint32_t mipLevel) const;
 	int getDepthOrLayerCount(uint32_t mipLevel) const;
 
 	int getSampleCount() const