Commit 0b1fbcff by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Make vk::ImageView pointers const

Bug: angleproject:3563 Change-Id: I8b6415dd9508941d093f36e7ded72d25f571b6f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1779204Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
parent 2b7e2acb
...@@ -872,8 +872,8 @@ angle::Result FramebufferVk::blit(const gl::Context *context, ...@@ -872,8 +872,8 @@ angle::Result FramebufferVk::blit(const gl::Context *context,
// Blit depth. If shader stencil export is present, blit stencil as well. // Blit depth. If shader stencil export is present, blit stencil as well.
if (blitDepthBuffer || (blitStencilBuffer && hasShaderStencilExport)) if (blitDepthBuffer || (blitStencilBuffer && hasShaderStencilExport))
{ {
vk::ImageView *depth = blitDepthBuffer ? &depthView.get() : nullptr; const vk::ImageView *depth = blitDepthBuffer ? &depthView.get() : nullptr;
vk::ImageView *stencil = const vk::ImageView *stencil =
blitStencilBuffer && hasShaderStencilExport ? &stencilView.get() : nullptr; blitStencilBuffer && hasShaderStencilExport ? &stencilView.get() : nullptr;
ANGLE_TRY(utilsVk.depthStencilBlitResolve(contextVk, this, depthStencilImage, depth, ANGLE_TRY(utilsVk.depthStencilBlitResolve(contextVk, this, depthStencilImage, depth,
......
...@@ -36,8 +36,8 @@ RenderTargetVk::RenderTargetVk(RenderTargetVk &&other) ...@@ -36,8 +36,8 @@ RenderTargetVk::RenderTargetVk(RenderTargetVk &&other)
{} {}
void RenderTargetVk::init(vk::ImageHelper *image, void RenderTargetVk::init(vk::ImageHelper *image,
vk::ImageView *imageView, const vk::ImageView *imageView,
vk::ImageView *cubeImageFetchView, const vk::ImageView *cubeImageFetchView,
uint32_t levelIndex, uint32_t levelIndex,
uint32_t layerIndex) uint32_t layerIndex)
{ {
...@@ -105,18 +105,18 @@ const vk::ImageHelper &RenderTargetVk::getImage() const ...@@ -105,18 +105,18 @@ const vk::ImageHelper &RenderTargetVk::getImage() const
return *mImage; return *mImage;
} }
vk::ImageView *RenderTargetVk::getDrawImageView() const const vk::ImageView *RenderTargetVk::getDrawImageView() const
{ {
ASSERT(mImageView && mImageView->valid()); ASSERT(mImageView && mImageView->valid());
return mImageView; return mImageView;
} }
vk::ImageView *RenderTargetVk::getReadImageView() const const vk::ImageView *RenderTargetVk::getReadImageView() const
{ {
return getDrawImageView(); return getDrawImageView();
} }
vk::ImageView *RenderTargetVk::getFetchImageView() const const vk::ImageView *RenderTargetVk::getFetchImageView() const
{ {
return mCubeImageFetchView && mCubeImageFetchView->valid() ? mCubeImageFetchView return mCubeImageFetchView && mCubeImageFetchView->valid() ? mCubeImageFetchView
: getReadImageView(); : getReadImageView();
...@@ -134,7 +134,7 @@ gl::Extents RenderTargetVk::getExtents() const ...@@ -134,7 +134,7 @@ gl::Extents RenderTargetVk::getExtents() const
return mImage->getLevelExtents2D(static_cast<uint32_t>(mLevelIndex)); return mImage->getLevelExtents2D(static_cast<uint32_t>(mLevelIndex));
} }
void RenderTargetVk::updateSwapchainImage(vk::ImageHelper *image, vk::ImageView *imageView) void RenderTargetVk::updateSwapchainImage(vk::ImageHelper *image, const vk::ImageView *imageView)
{ {
ASSERT(image && image->valid() && imageView && imageView->valid()); ASSERT(image && image->valid() && imageView && imageView->valid());
mImage = image; mImage = image;
......
...@@ -44,8 +44,8 @@ class RenderTargetVk final : public FramebufferAttachmentRenderTarget ...@@ -44,8 +44,8 @@ class RenderTargetVk final : public FramebufferAttachmentRenderTarget
RenderTargetVk(RenderTargetVk &&other); RenderTargetVk(RenderTargetVk &&other);
void init(vk::ImageHelper *image, void init(vk::ImageHelper *image,
vk::ImageView *imageView, const vk::ImageView *imageView,
vk::ImageView *cubeImageFetchView, const vk::ImageView *cubeImageFetchView,
uint32_t levelIndex, uint32_t levelIndex,
uint32_t layerIndex); uint32_t layerIndex);
void reset(); void reset();
...@@ -67,12 +67,12 @@ class RenderTargetVk final : public FramebufferAttachmentRenderTarget ...@@ -67,12 +67,12 @@ class RenderTargetVk final : public FramebufferAttachmentRenderTarget
vk::CommandBuffer *commandBuffer); vk::CommandBuffer *commandBuffer);
vk::ImageHelper *getImageForWrite(vk::CommandGraphResource *writingResource) const; vk::ImageHelper *getImageForWrite(vk::CommandGraphResource *writingResource) const;
vk::ImageView *getDrawImageView() const; const vk::ImageView *getDrawImageView() const;
vk::ImageView *getReadImageView() const; const vk::ImageView *getReadImageView() const;
// GLSL's texelFetch() needs a 2D array view to read from cube maps. This function returns the // GLSL's texelFetch() needs a 2D array view to read from cube maps. This function returns the
// same view as `getReadImageView()`, except for cubemaps, in which case it returns a 2D array // same view as `getReadImageView()`, except for cubemaps, in which case it returns a 2D array
// view of it. // view of it.
vk::ImageView *getFetchImageView() const; const vk::ImageView *getFetchImageView() const;
const vk::Format &getImageFormat() const; const vk::Format &getImageFormat() const;
gl::Extents getExtents() const; gl::Extents getExtents() const;
...@@ -81,7 +81,7 @@ class RenderTargetVk final : public FramebufferAttachmentRenderTarget ...@@ -81,7 +81,7 @@ class RenderTargetVk final : public FramebufferAttachmentRenderTarget
// Special mutator for Surface RenderTargets. Allows the Framebuffer to keep a single // Special mutator for Surface RenderTargets. Allows the Framebuffer to keep a single
// RenderTargetVk pointer. // RenderTargetVk pointer.
void updateSwapchainImage(vk::ImageHelper *image, vk::ImageView *imageView); void updateSwapchainImage(vk::ImageHelper *image, const vk::ImageView *imageView);
angle::Result flushStagedUpdates(ContextVk *contextVk); angle::Result flushStagedUpdates(ContextVk *contextVk);
...@@ -89,9 +89,9 @@ class RenderTargetVk final : public FramebufferAttachmentRenderTarget ...@@ -89,9 +89,9 @@ class RenderTargetVk final : public FramebufferAttachmentRenderTarget
vk::ImageHelper *mImage; vk::ImageHelper *mImage;
// Note that the draw and read image views are the same, given the requirements of a render // Note that the draw and read image views are the same, given the requirements of a render
// target. // target.
vk::ImageView *mImageView; const vk::ImageView *mImageView;
// For cubemaps, a 2D-array view is also created to be used with shaders that use texelFetch(). // For cubemaps, a 2D-array view is also created to be used with shaders that use texelFetch().
vk::ImageView *mCubeImageFetchView; const vk::ImageView *mCubeImageFetchView;
uint32_t mLevelIndex; uint32_t mLevelIndex;
uint32_t mLayerIndex; uint32_t mLayerIndex;
}; };
......
...@@ -692,7 +692,7 @@ angle::Result TextureVk::copySubImageImplWithDraw(ContextVk *contextVk, ...@@ -692,7 +692,7 @@ angle::Result TextureVk::copySubImageImplWithDraw(ContextVk *contextVk,
{ {
params.srcLayer = layerIndex; params.srcLayer = layerIndex;
vk::ImageView *destView; const vk::ImageView *destView;
ANGLE_TRY( ANGLE_TRY(
getLayerLevelDrawImageView(contextVk, baseLayer + layerIndex, level, &destView)); getLayerLevelDrawImageView(contextVk, baseLayer + layerIndex, level, &destView));
...@@ -1215,7 +1215,7 @@ angle::Result TextureVk::init3DRenderTargets(ContextVk *contextVk) ...@@ -1215,7 +1215,7 @@ angle::Result TextureVk::init3DRenderTargets(ContextVk *contextVk)
for (uint32_t layerIndex = 0; layerIndex < layerCount; ++layerIndex) for (uint32_t layerIndex = 0; layerIndex < layerCount; ++layerIndex)
{ {
vk::ImageView *drawView; const vk::ImageView *drawView;
ANGLE_TRY(getLayerLevelDrawImageView(contextVk, layerIndex, 0, &drawView)); ANGLE_TRY(getLayerLevelDrawImageView(contextVk, layerIndex, 0, &drawView));
// Users of the render target expect the views to directly view the desired layer, so we // Users of the render target expect the views to directly view the desired layer, so we
...@@ -1244,7 +1244,7 @@ angle::Result TextureVk::initCubeMapRenderTargets(ContextVk *contextVk) ...@@ -1244,7 +1244,7 @@ angle::Result TextureVk::initCubeMapRenderTargets(ContextVk *contextVk)
mCubeMapRenderTargets.resize(gl::kCubeFaceCount); mCubeMapRenderTargets.resize(gl::kCubeFaceCount);
for (uint32_t cubeMapFaceIndex = 0; cubeMapFaceIndex < gl::kCubeFaceCount; ++cubeMapFaceIndex) for (uint32_t cubeMapFaceIndex = 0; cubeMapFaceIndex < gl::kCubeFaceCount; ++cubeMapFaceIndex)
{ {
vk::ImageView *drawView; const vk::ImageView *drawView;
ANGLE_TRY(getLayerLevelDrawImageView(contextVk, cubeMapFaceIndex, 0, &drawView)); ANGLE_TRY(getLayerLevelDrawImageView(contextVk, cubeMapFaceIndex, 0, &drawView));
// Users of the render target expect the views to directly view the desired layer, so we // Users of the render target expect the views to directly view the desired layer, so we
...@@ -1423,7 +1423,7 @@ const vk::ImageView &TextureVk::getFetchImageView() const ...@@ -1423,7 +1423,7 @@ const vk::ImageView &TextureVk::getFetchImageView() const
angle::Result TextureVk::getLayerLevelDrawImageView(vk::Context *context, angle::Result TextureVk::getLayerLevelDrawImageView(vk::Context *context,
size_t layer, size_t layer,
size_t level, size_t level,
vk::ImageView **imageViewOut) const vk::ImageView **imageViewOut)
{ {
ASSERT(mImage->valid()); ASSERT(mImage->valid());
ASSERT(!mImage->getFormat().imageFormat().isBlock); ASSERT(!mImage->getFormat().imageFormat().isBlock);
...@@ -1444,8 +1444,9 @@ angle::Result TextureVk::getLayerLevelDrawImageView(vk::Context *context, ...@@ -1444,8 +1444,9 @@ angle::Result TextureVk::getLayerLevelDrawImageView(vk::Context *context,
} }
ASSERT(mLayerLevelDrawImageViews[layer].size() > level); ASSERT(mLayerLevelDrawImageViews[layer].size() > level);
*imageViewOut = &mLayerLevelDrawImageViews[layer][level]; vk::ImageView *imageView = &mLayerLevelDrawImageViews[layer][level];
if ((*imageViewOut)->valid()) *imageViewOut = imageView;
if (imageView->valid())
{ {
return angle::Result::Continue; return angle::Result::Continue;
} }
...@@ -1455,7 +1456,7 @@ angle::Result TextureVk::getLayerLevelDrawImageView(vk::Context *context, ...@@ -1455,7 +1456,7 @@ angle::Result TextureVk::getLayerLevelDrawImageView(vk::Context *context,
// don't have swizzle. // don't have swizzle.
gl::TextureType viewType = vk::Get2DTextureType(layerCount, mImage->getSamples()); gl::TextureType viewType = vk::Get2DTextureType(layerCount, mImage->getSamples());
return mImage->initLayerImageView(context, viewType, mImage->getAspectFlags(), return mImage->initLayerImageView(context, viewType, mImage->getAspectFlags(),
gl::SwizzleState(), *imageViewOut, gl::SwizzleState(), imageView,
getNativeImageLevel(static_cast<uint32_t>(level)), 1, getNativeImageLevel(static_cast<uint32_t>(level)), 1,
getNativeImageLayer(static_cast<uint32_t>(layer)), 1); getNativeImageLayer(static_cast<uint32_t>(layer)), 1);
} }
......
...@@ -160,7 +160,7 @@ class TextureVk : public TextureImpl ...@@ -160,7 +160,7 @@ class TextureVk : public TextureImpl
angle::Result getLayerLevelDrawImageView(vk::Context *context, angle::Result getLayerLevelDrawImageView(vk::Context *context,
size_t layer, size_t layer,
size_t level, size_t level,
vk::ImageView **imageViewOut); const vk::ImageView **imageViewOut);
const vk::Sampler &getSampler() const; const vk::Sampler &getSampler() const;
angle::Result ensureImageInitialized(ContextVk *contextVk); angle::Result ensureImageInitialized(ContextVk *contextVk);
......
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