Fix bugs in deletion. Delete redundant functions.

This commit is contained in:
Henrik Rydgård 2021-11-22 19:01:57 +01:00
parent a7591d7826
commit 2cbadefb29
3 changed files with 7 additions and 12 deletions

View file

@ -1297,8 +1297,9 @@ void VulkanDeleteList::Take(VulkanDeleteList &del) {
_dbg_assert_(modules_.empty());
_dbg_assert_(buffers_.empty());
_dbg_assert_(bufferViews_.empty());
_dbg_assert_(images_.empty());
_dbg_assert_(buffersWithAllocs_.empty());
_dbg_assert_(imageViews_.empty());
_dbg_assert_(imagesWithAllocs_.empty());
_dbg_assert_(deviceMemory_.empty());
_dbg_assert_(samplers_.empty());
_dbg_assert_(pipelines_.empty());
@ -1312,9 +1313,10 @@ void VulkanDeleteList::Take(VulkanDeleteList &del) {
descPools_ = std::move(del.descPools_);
modules_ = std::move(del.modules_);
buffers_ = std::move(del.buffers_);
buffersWithAllocs_ = std::move(del.buffersWithAllocs_);
bufferViews_ = std::move(del.bufferViews_);
images_ = std::move(del.images_);
imageViews_ = std::move(del.imageViews_);
imagesWithAllocs_ = std::move(del.imagesWithAllocs_);
deviceMemory_ = std::move(del.deviceMemory_);
samplers_ = std::move(del.samplers_);
pipelines_ = std::move(del.pipelines_);
@ -1328,8 +1330,9 @@ void VulkanDeleteList::Take(VulkanDeleteList &del) {
del.descPools_.clear();
del.modules_.clear();
del.buffers_.clear();
del.images_.clear();
del.buffersWithAllocs_.clear();
del.imageViews_.clear();
del.imagesWithAllocs_.clear();
del.deviceMemory_.clear();
del.samplers_.clear();
del.pipelines_.clear();
@ -1365,15 +1368,11 @@ void VulkanDeleteList::PerformDeletes(VkDevice device, VmaAllocator allocator) {
for (auto &buf : buffersWithAllocs_) {
vmaDestroyBuffer(allocator, buf.buffer, buf.alloc);
}
buffers_.clear();
buffersWithAllocs_.clear();
for (auto &bufView : bufferViews_) {
vkDestroyBufferView(device, bufView, nullptr);
}
bufferViews_.clear();
for (auto &image : images_) {
vkDestroyImage(device, image, nullptr);
}
images_.clear();
for (auto &imageWithAlloc : imagesWithAllocs_) {
vmaDestroyImage(allocator, imageWithAlloc.image, imageWithAlloc.alloc);
}

View file

@ -89,7 +89,6 @@ public:
void QueueDeleteShaderModule(VkShaderModule &module) { _dbg_assert_(module != VK_NULL_HANDLE); modules_.push_back(module); module = VK_NULL_HANDLE; }
void QueueDeleteBuffer(VkBuffer &buffer) { _dbg_assert_(buffer != VK_NULL_HANDLE); buffers_.push_back(buffer); buffer = VK_NULL_HANDLE; }
void QueueDeleteBufferView(VkBufferView &bufferView) { _dbg_assert_(bufferView != VK_NULL_HANDLE); bufferViews_.push_back(bufferView); bufferView = VK_NULL_HANDLE; }
void QueueDeleteImage(VkImage &image) { _dbg_assert_(image != VK_NULL_HANDLE); images_.push_back(image); image = VK_NULL_HANDLE; }
void QueueDeleteImageView(VkImageView &imageView) { _dbg_assert_(imageView != VK_NULL_HANDLE); imageViews_.push_back(imageView); imageView = VK_NULL_HANDLE; }
void QueueDeleteDeviceMemory(VkDeviceMemory &deviceMemory) { _dbg_assert_(deviceMemory != VK_NULL_HANDLE); deviceMemory_.push_back(deviceMemory); deviceMemory = VK_NULL_HANDLE; }
void QueueDeleteSampler(VkSampler &sampler) { _dbg_assert_(sampler != VK_NULL_HANDLE); samplers_.push_back(sampler); sampler = VK_NULL_HANDLE; }
@ -124,7 +123,6 @@ private:
std::vector<VkBuffer> buffers_;
std::vector<BufferWithAlloc> buffersWithAllocs_;
std::vector<VkBufferView> bufferViews_;
std::vector<VkImage> images_;
std::vector<ImageWithAlloc> imagesWithAllocs_;
std::vector<VkImageView> imageViews_;
std::vector<VkDeviceMemory> deviceMemory_;

View file

@ -879,8 +879,6 @@ bool VulkanRenderManager::InitBackbufferFramebuffers(int width, int height) {
}
bool VulkanRenderManager::InitDepthStencilBuffer(VkCommandBuffer cmd) {
bool pass;
const VkFormat depth_format = vulkan_->GetDeviceInfo().preferredDepthStencilFormat;
int aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
VkImageCreateInfo image_info = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO };