Commit cb653d43 by Jamie Madill Committed by Commit Bot

Vulkan: Get rid of level layer "storage" views.

By using a 2D instead of 2D array view for the render target we can merge the 'storage' and 'draw' level/layer views. Bug: angleproject:3975 Change-Id: Icf8c0bf6bec4147595c2b728362abd51bdf03f3e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1841947Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 93b213cb
...@@ -1613,12 +1613,10 @@ angle::Result TextureVk::getLayerLevelDrawImageView(vk::Context *context, ...@@ -1613,12 +1613,10 @@ angle::Result TextureVk::getLayerLevelDrawImageView(vk::Context *context,
return angle::Result::Continue; return angle::Result::Continue;
} }
uint32_t layerCount = GetImageLayerCountForView(*mImage);
// Lazily allocate the image view itself. // Lazily allocate the image view itself.
// Note that these views are specifically made to be used as color attachments, and therefore // Note that these views are specifically made to be used as color attachments, and therefore
// don't have swizzle. // don't have swizzle.
gl::TextureType viewType = vk::Get2DTextureType(layerCount, mImage->getSamples()); gl::TextureType viewType = vk::Get2DTextureType(1, mImage->getSamples());
return mImage->initLayerImageView(context, viewType, mImage->getAspectFlags(), return mImage->initLayerImageView(context, viewType, mImage->getAspectFlags(),
gl::SwizzleState(), imageView, gl::SwizzleState(), imageView,
getNativeImageLevel(static_cast<uint32_t>(level)), 1, getNativeImageLevel(static_cast<uint32_t>(level)), 1,
...@@ -1649,12 +1647,7 @@ angle::Result TextureVk::getLayerLevelStorageImageView(ContextVk *contextVk, ...@@ -1649,12 +1647,7 @@ angle::Result TextureVk::getLayerLevelStorageImageView(ContextVk *contextVk,
} }
else else
{ {
// Create a view of the selected layer. return getLayerLevelDrawImageView(contextVk, singleLayer, level, imageViewOut);
imageView = getLayerLevelImageViewImpl(&mLayerLevelStorageImageViews, singleLayer, level);
// If viewing a single layer, the image is always 2D. Note that GLES doesn't support
// multisampled storage images.
viewType = gl::TextureType::_2D;
} }
*imageViewOut = imageView; *imageViewOut = imageView;
...@@ -1841,14 +1834,6 @@ void TextureVk::releaseImageViews(ContextVk *contextVk) ...@@ -1841,14 +1834,6 @@ void TextureVk::releaseImageViews(ContextVk *contextVk)
contextVk->addGarbage(&imageView); contextVk->addGarbage(&imageView);
} }
mLevelStorageImageViews.clear(); mLevelStorageImageViews.clear();
for (vk::ImageViewVector &layerViews : mLayerLevelStorageImageViews)
{
for (vk::ImageView &imageView : layerViews)
{
contextVk->addGarbage(&imageView);
}
}
mLayerLevelStorageImageViews.clear();
} }
void TextureVk::releaseStagingBuffer(ContextVk *contextVk) void TextureVk::releaseStagingBuffer(ContextVk *contextVk)
......
...@@ -358,7 +358,6 @@ class TextureVk : public TextureImpl ...@@ -358,7 +358,6 @@ class TextureVk : public TextureImpl
vk::ImageViewVector mLayerFetchImageView; vk::ImageViewVector mLayerFetchImageView;
// Storage image views. // Storage image views.
vk::ImageViewVector mLevelStorageImageViews; vk::ImageViewVector mLevelStorageImageViews;
vk::LayerLevelImageViewVector mLayerLevelStorageImageViews;
vk::Sampler mSampler; vk::Sampler mSampler;
RenderTargetVk mRenderTarget; RenderTargetVk mRenderTarget;
......
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