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,
return angle::Result::Continue;
}
uint32_t layerCount = GetImageLayerCountForView(*mImage);
// Lazily allocate the image view itself.
// Note that these views are specifically made to be used as color attachments, and therefore
// 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(),
gl::SwizzleState(), imageView,
getNativeImageLevel(static_cast<uint32_t>(level)), 1,
......@@ -1649,12 +1647,7 @@ angle::Result TextureVk::getLayerLevelStorageImageView(ContextVk *contextVk,
}
else
{
// Create a view of the selected layer.
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;
return getLayerLevelDrawImageView(contextVk, singleLayer, level, imageViewOut);
}
*imageViewOut = imageView;
......@@ -1841,14 +1834,6 @@ void TextureVk::releaseImageViews(ContextVk *contextVk)
contextVk->addGarbage(&imageView);
}
mLevelStorageImageViews.clear();
for (vk::ImageViewVector &layerViews : mLayerLevelStorageImageViews)
{
for (vk::ImageView &imageView : layerViews)
{
contextVk->addGarbage(&imageView);
}
}
mLayerLevelStorageImageViews.clear();
}
void TextureVk::releaseStagingBuffer(ContextVk *contextVk)
......
......@@ -358,7 +358,6 @@ class TextureVk : public TextureImpl
vk::ImageViewVector mLayerFetchImageView;
// Storage image views.
vk::ImageViewVector mLevelStorageImageViews;
vk::LayerLevelImageViewVector mLayerLevelStorageImageViews;
vk::Sampler mSampler;
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