aboutsummaryrefslogtreecommitdiff
path: root/src/vulkan/pipeline.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/vulkan/pipeline.cc')
-rw-r--r--src/vulkan/pipeline.cc24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/vulkan/pipeline.cc b/src/vulkan/pipeline.cc
index c5edbc5..1e8f917 100644
--- a/src/vulkan/pipeline.cc
+++ b/src/vulkan/pipeline.cc
@@ -66,24 +66,32 @@ Result Pipeline::InitializeCommandBuffer(VkCommandPool pool, VkQueue queue) {
}
void Pipeline::Shutdown() {
- Result r = command_->End();
- if (r.IsSuccess())
- command_->SubmitAndReset(fence_timeout_ms_);
- command_->Shutdown();
+ if (command_) {
+ Result r = command_->End();
+ if (r.IsSuccess())
+ command_->SubmitAndReset(fence_timeout_ms_);
+
+ command_->Shutdown();
+ }
DestroyVkDescriptorRelatedObjects();
}
void Pipeline::DestroyVkDescriptorRelatedObjects() {
for (auto& info : descriptor_set_info_) {
- vkDestroyDescriptorSetLayout(device_, info.layout, nullptr);
+ if (info.layout != VK_NULL_HANDLE)
+ vkDestroyDescriptorSetLayout(device_, info.layout, nullptr);
+
if (info.empty)
continue;
- vkDestroyDescriptorPool(device_, info.pool, nullptr);
+ if (info.pool != VK_NULL_HANDLE)
+ vkDestroyDescriptorPool(device_, info.pool, nullptr);
- for (auto& desc : info.descriptors_)
- desc->Shutdown();
+ for (auto& desc : info.descriptors_) {
+ if (desc)
+ desc->Shutdown();
+ }
}
if (pipeline_layout_ != VK_NULL_HANDLE)