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
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 @@ void DescriptorSetLayout::WriteDescriptorSet(Device *device, DescriptorSet *dstS
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;
......
......@@ -281,15 +281,18 @@ int ImageView::layerPitchBytes(VkImageAspectFlagBits aspect, Usage usage) const
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;
......
......@@ -87,7 +87,7 @@ public:
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
......
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