Commit a30c6f35 by Jamie Madill Committed by Commit Bot

Vulkan: Pass RendererVk to BufferHelper::destroy.

Bug: angleproject:2162 Change-Id: I7c0090d48b0a5bac222b1edf4c2db280d5b32930 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139993 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarMohan Maiya <m.maiya@samsung.com> Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com>
parent e4da6f15
......@@ -302,11 +302,11 @@ void ContextVk::DriverUniformsDescriptorSet::init(RendererVk *rendererVk)
kDriverUniformsAllocatorPageSize, true);
}
void ContextVk::DriverUniformsDescriptorSet::destroy(VkDevice device)
void ContextVk::DriverUniformsDescriptorSet::destroy(RendererVk *renderer)
{
descriptorSetLayout.reset();
descriptorPoolBinding.reset();
dynamicBuffer.destroy(device);
dynamicBuffer.destroy(renderer);
}
// CommandBatch implementation.
......@@ -725,14 +725,14 @@ void ContextVk::onDestroy(const gl::Context *context)
for (DriverUniformsDescriptorSet &driverUniforms : mDriverUniforms)
{
driverUniforms.destroy(device);
driverUniforms.destroy(mRenderer);
}
mDriverUniformsDescriptorPool.destroy(device);
for (vk::DynamicBuffer &defaultBuffer : mDefaultAttribBuffers)
{
defaultBuffer.destroy(device);
defaultBuffer.destroy(mRenderer);
}
for (vk::DynamicQueryPool &queryPool : mQueryPools)
......
......@@ -703,7 +703,7 @@ class ContextVk : public ContextImpl, public vk::Context
~DriverUniformsDescriptorSet();
void init(RendererVk *rendererVk);
void destroy(VkDevice device);
void destroy(RendererVk *rendererVk);
};
enum class PipelineType
......
......@@ -70,12 +70,13 @@ angle::Result OverlayVk::init(const gl::Context *context)
void OverlayVk::onDestroy(const gl::Context *context)
{
VkDevice device = vk::GetImpl(context)->getDevice();
RendererVk *renderer = vk::GetImpl(context)->getRenderer();
VkDevice device = renderer->getDevice();
mCulledWidgets.destroy(device);
mCulledWidgets.destroy(renderer);
mCulledWidgetsView.destroy(device);
mFontImage.destroy(device);
mFontImage.destroy(renderer);
mFontImageView.destroy(device);
}
......
......@@ -1022,7 +1022,7 @@ void WindowSurfaceVk::releaseSwapchainImages(ContextVk *contextVk)
{
// We don't own the swapchain image handles, so we just remove our reference to it.
swapchainImage.image.resetImageWeakReference();
swapchainImage.image.destroy(contextVk->getDevice());
swapchainImage.image.destroy(renderer);
swapchainImage.imageViews.release(renderer);
contextVk->addGarbage(&swapchainImage.framebuffer);
......@@ -1040,11 +1040,12 @@ void WindowSurfaceVk::releaseSwapchainImages(ContextVk *contextVk)
void WindowSurfaceVk::destroySwapChainImages(DisplayVk *displayVk)
{
VkDevice device = displayVk->getDevice();
RendererVk *renderer = displayVk->getRenderer();
VkDevice device = displayVk->getDevice();
mDepthStencilImage.destroy(device);
mDepthStencilImage.destroy(renderer);
mDepthStencilImageViews.destroy(device);
mColorImageMS.destroy(device);
mColorImageMS.destroy(renderer);
mColorImageMSViews.destroy(device);
mFramebufferMS.destroy(device);
......@@ -1052,7 +1053,7 @@ void WindowSurfaceVk::destroySwapChainImages(DisplayVk *displayVk)
{
// We don't own the swapchain image handles, so we just remove our reference to it.
swapchainImage.image.resetImageWeakReference();
swapchainImage.image.destroy(device);
swapchainImage.image.destroy(renderer);
swapchainImage.imageViews.destroy(device);
swapchainImage.framebuffer.destroy(device);
......
......@@ -633,11 +633,11 @@ void DynamicBuffer::releaseBufferListToRenderer(RendererVk *renderer,
buffers->clear();
}
void DynamicBuffer::destroyBufferList(VkDevice device, std::vector<BufferHelper *> *buffers)
void DynamicBuffer::destroyBufferList(RendererVk *renderer, std::vector<BufferHelper *> *buffers)
{
for (BufferHelper *toFree : *buffers)
{
toFree->destroy(device);
toFree->destroy(renderer);
delete toFree;
}
......@@ -676,17 +676,17 @@ void DynamicBuffer::releaseInFlightBuffers(ContextVk *contextVk)
mInFlightBuffers.clear();
}
void DynamicBuffer::destroy(VkDevice device)
void DynamicBuffer::destroy(RendererVk *renderer)
{
reset();
destroyBufferList(device, &mInFlightBuffers);
destroyBufferList(device, &mBufferFreeList);
destroyBufferList(renderer, &mInFlightBuffers);
destroyBufferList(renderer, &mBufferFreeList);
if (mBuffer)
{
mBuffer->unmap(device);
mBuffer->destroy(device);
mBuffer->unmap(renderer->getDevice());
mBuffer->destroy(renderer);
delete mBuffer;
mBuffer = nullptr;
}
......@@ -1620,10 +1620,10 @@ void LineLoopHelper::release(ContextVk *contextVk)
mDynamicIndirectBuffer.release(contextVk->getRenderer());
}
void LineLoopHelper::destroy(VkDevice device)
void LineLoopHelper::destroy(RendererVk *renderer)
{
mDynamicIndexBuffer.destroy(device);
mDynamicIndirectBuffer.destroy(device);
mDynamicIndexBuffer.destroy(renderer);
mDynamicIndirectBuffer.destroy(renderer);
}
// static
......@@ -1727,8 +1727,10 @@ angle::Result BufferHelper::initializeNonZeroMemory(Context *context, VkDeviceSi
return angle::Result::Continue;
}
void BufferHelper::destroy(VkDevice device)
void BufferHelper::destroy(RendererVk *renderer)
{
VkDevice device = renderer->getDevice();
unmap(device);
mSize = 0;
mViewFormat = nullptr;
......@@ -2191,11 +2193,13 @@ angle::Result ImageHelper::initLayerImageView(Context *context,
return angle::Result::Continue;
}
void ImageHelper::destroy(VkDevice device)
void ImageHelper::destroy(RendererVk *renderer)
{
VkDevice device = renderer->getDevice();
mImage.destroy(device);
mDeviceMemory.destroy(device);
mStagingBuffer.destroy(device);
mStagingBuffer.destroy(renderer);
mCurrentLayout = ImageLayout::Undefined;
mLayerCount = 0;
mLevelCount = 0;
......@@ -3539,7 +3543,7 @@ angle::Result ImageHelper::readPixels(ContextVk *contextVk,
// If the source image is multisampled, we need to resolve it into a temporary image before
// performing a readback.
bool isMultisampled = mSamples > 1;
DeviceScoped<ImageHelper> resolvedImage(contextVk->getDevice());
RendererScoped<ImageHelper> resolvedImage(contextVk->getRenderer());
ImageHelper *src = this;
......
......@@ -94,7 +94,7 @@ class DynamicBuffer : angle::NonCopyable
void releaseInFlightBuffers(ContextVk *contextVk);
// This frees resources immediately.
void destroy(VkDevice device);
void destroy(RendererVk *renderer);
BufferHelper *getCurrentBuffer() { return mBuffer; }
......@@ -107,7 +107,7 @@ class DynamicBuffer : angle::NonCopyable
void reset();
angle::Result allocateNewBuffer(ContextVk *contextVk);
void releaseBufferListToRenderer(RendererVk *renderer, std::vector<BufferHelper *> *buffers);
void destroyBufferList(VkDevice device, std::vector<BufferHelper *> *buffers);
void destroyBufferList(RendererVk *renderer, std::vector<BufferHelper *> *buffers);
VkBufferUsageFlags mUsage;
bool mHostVisible;
......@@ -527,7 +527,7 @@ class LineLoopHelper final : angle::NonCopyable
VkDeviceSize *indexIndirectBufferOffsetOut);
void release(ContextVk *contextVk);
void destroy(VkDevice device);
void destroy(RendererVk *renderer);
static void Draw(uint32_t count, uint32_t baseVertex, CommandBuffer *commandBuffer);
......@@ -547,7 +547,7 @@ class BufferHelper final : public Resource
angle::Result init(ContextVk *contextVk,
const VkBufferCreateInfo &createInfo,
VkMemoryPropertyFlags memoryPropertyFlags);
void destroy(VkDevice device);
void destroy(RendererVk *renderer);
void release(RendererVk *renderer);
......@@ -790,7 +790,8 @@ class ImageHelper final : public Resource, public angle::Subject
VkImageAspectFlags getAspectFlags() const;
// True if image contains both depth & stencil aspects
bool isCombinedDepthStencilFormat() const;
void destroy(VkDevice device);
void destroy(RendererVk *renderer);
void release(RendererVk *renderer) { destroy(renderer); }
void init2DWeakReference(VkImage handle,
const gl::Extents &glExtents,
......
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