From 0a1bfe0de86bc4918a230cb4985f58ed8310a4e7 Mon Sep 17 00:00:00 2001 From: Alejandro Saucedo Date: Sun, 16 Aug 2020 11:28:08 +0100 Subject: [PATCH] Added destructors base in manager --- src/Manager.cpp | 24 +++++++++++++++++++++--- src/Manager.hpp | 1 - 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/Manager.cpp b/src/Manager.cpp index f5e9fe0e5..c799da3cd 100644 --- a/src/Manager.cpp +++ b/src/Manager.cpp @@ -40,6 +40,25 @@ Manager::Manager() Manager::~Manager() { + SPDLOG_DEBUG("Destroying Kompute Manager"); + + if (this->mDevice == nullptr) { + spdlog::error("Kompute Manager destructor reached with null Device pointer"); + return; + } + + if (this->mFreeDevice) { + this->mDevice->destroy(); + } + + if (this->mInstance == nullptr) { + spdlog::error("Kompute Manager destructor reached with null Instance pointer"); + return; + } + + if (this->mFreeInstance) { + this->mInstance->destroy(); + } } void Manager::createInstance() { @@ -95,7 +114,7 @@ void Manager::createInstance() { } #endif - vk::Instance instance = vk::createInstance(computeInstanceCreateInfo, nullptr, this->mInstance); + vk::createInstance(&computeInstanceCreateInfo, nullptr, this->mInstance); #if DEBUG if (validLayerNames.size() > 0) { @@ -123,7 +142,6 @@ void Manager::createDevice() { } this->mFreeDevice = true; - this->mFreeComputeQueue = true; std::vector physicalDevices = this->mInstance->enumeratePhysicalDevices(); @@ -168,7 +186,7 @@ void Manager::createDevice() { 1, // Number of deviceQueueCreateInfo &deviceQueueCreateInfo); - physicalDevice.createDevice(deviceCreateInfo, nullptr, this->mDevice); + physicalDevice.createDevice(&deviceCreateInfo, nullptr, this->mDevice); this->mDevice->getQueue(this->mComputeQueueFamilyIndex, 0, this->mComputeQueue); } diff --git a/src/Manager.hpp b/src/Manager.hpp index 069575abc..83de2a857 100644 --- a/src/Manager.hpp +++ b/src/Manager.hpp @@ -23,7 +23,6 @@ private: bool mFreeDevice = false; uint32_t mComputeQueueFamilyIndex = -1; vk::Queue* mComputeQueue = nullptr; - bool mFreeComputeQueue = false; #if DEBUG vk::DebugReportCallbackEXT mDebugReportCallback;