Commit 3b5f0b41 by Nicolas Capens Committed by Nicolas Capens

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: 's avatarAntonio Maiorano <amaiorano@google.com> Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent b400b97d
...@@ -371,7 +371,7 @@ void DescriptorSetLayout::WriteDescriptorSet(Device *device, DescriptorSet *dstS ...@@ -371,7 +371,7 @@ void DescriptorSetLayout::WriteDescriptorSet(Device *device, DescriptorSet *dstS
texture->mipmap[2].buffer = imageView->getOffsetPointer(offset, VK_IMAGE_ASPECT_PLANE_2_BIT, level, 0, ImageView::SAMPLING); 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 width = extent.width;
int height = extent.height; int height = extent.height;
...@@ -410,7 +410,7 @@ void DescriptorSetLayout::WriteDescriptorSet(Device *device, DescriptorSet *dstS ...@@ -410,7 +410,7 @@ void DescriptorSetLayout::WriteDescriptorSet(Device *device, DescriptorSet *dstS
mipmap.buffer = imageView->getOffsetPointer(offset, aspect, level, 0, ImageView::SAMPLING); 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 width = extent.width;
int height = extent.height; int height = extent.height;
......
...@@ -281,15 +281,18 @@ int ImageView::layerPitchBytes(VkImageAspectFlagBits aspect, Usage usage) const ...@@ -281,15 +281,18 @@ int ImageView::layerPitchBytes(VkImageAspectFlagBits aspect, Usage usage) const
return static_cast<int>(getImage(usage)->getLayerSize(aspect)); 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), VkExtent3D extent = image->getMipLevelExtent(static_cast<VkImageAspectFlagBits>(subresourceRange.aspectMask),
subresourceRange.baseMipLevel + mipLevel); subresourceRange.baseMipLevel + mipLevel);
return { extent.width, extent.height };
} }
int ImageView::getDepthOrLayerCount(uint32_t mipLevel) const 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 layers = subresourceRange.layerCount;
int depthOrLayers = layers > 1 ? layers : extent.depth; int depthOrLayers = layers > 1 ? layers : extent.depth;
......
...@@ -87,7 +87,7 @@ public: ...@@ -87,7 +87,7 @@ public:
int slicePitchBytes(VkImageAspectFlagBits aspect, uint32_t mipLevel, Usage usage = RAW) const; int slicePitchBytes(VkImageAspectFlagBits aspect, uint32_t mipLevel, Usage usage = RAW) const;
int getMipLevelSize(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; 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 getDepthOrLayerCount(uint32_t mipLevel) const;
int getSampleCount() const int getSampleCount() const
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment