Destroy Vulkan pipeline objects properly 42/324742/1
authorRichard Huang <r.huang@samsung.com>
Fri, 23 May 2025 16:44:53 +0000 (17:44 +0100)
committerRichard Huang <r.huang@samsung.com>
Fri, 23 May 2025 16:44:53 +0000 (17:44 +0100)
Change-Id: I1933cfd2e95b556cb7f77c0b354cb37862d7ad94

dali/internal/graphics/vulkan-impl/vulkan-pipeline-impl.cpp

index 2b5c42528a819a81ea933a3568421bba5039ad2a..6e2b1c934cf9b0abce38f27c88be4357b91f7d96 100644 (file)
@@ -314,7 +314,20 @@ uint32_t PipelineImpl::GetRefCount() const
   return 0; // mRefCount;
 }
 
-PipelineImpl::~PipelineImpl() = default;
+PipelineImpl::~PipelineImpl()
+{
+  auto vkDevice = mController.GetGraphicsDevice().GetLogicalDevice();
+  for(auto& entry : mPipelineForDepthStateCache)
+  {
+    if(entry.pipeline)
+    {
+      vkDevice.destroyPipeline(entry.pipeline);
+      entry.pipeline = nullptr;
+    }
+  }
+
+  mPipelineForDepthStateCache.clear();
+}
 
 void PipelineImpl::InitializePipeline()
 {