void VulkanContext::DisableDebugReports() { if (m_debug_report_callback != VK_NULL_HANDLE) { vkDestroyDebugReportCallbackEXT(m_instance, m_debug_report_callback, nullptr); m_debug_report_callback = VK_NULL_HANDLE; } }
void vulkan_destroy_debug_callback(VulkanBackend& backend) { Assert(backend.debugCallback != nullptr); #if defined(REAPER_DEBUG) vkDestroyDebugReportCallbackEXT(backend.instance, backend.debugCallback, nullptr); #endif backend.debugCallback = nullptr; }
void VkContext::Destroy() { vkDeviceWaitIdle(dev); // Free command buffers if (drawCmdBuffers.size() > 0) { vkFreeCommandBuffers(dev, cmdPool, (u32)drawCmdBuffers.size(), &drawCmdBuffers[0]); } // Destroy command pools vkDestroyCommandPool(dev, cmdPool, nullptr); // Destroy semaphores vkDestroySemaphore(dev, acquireCompleteSemaphore, nullptr); vkDestroySemaphore(dev, renderCompleteSemaphore, nullptr); // Destroy swapchain image views for (u32 i = 0; i < swapchainImageViews.size(); i++) { vkDestroyImageView(dev, swapchainImageViews[i], nullptr); } // Destroy swapchain if (swapchain) { vkDestroySwapchainKHR(dev, swapchain, nullptr); } // Destroy surface if (surf) { vkDestroySurfaceKHR(instance, surf, nullptr); } // Destroy device if (dev) { vkDestroyDevice(dev, nullptr); } #ifdef VOXL_DEBUG // Destroy debug report callback if (msgCallback != VK_NULL_HANDLE) { vkDestroyDebugReportCallbackEXT(instance, msgCallback, nullptr); } #endif // Destroy instance if (instance) { vkDestroyInstance(instance, nullptr); } // Terminate GLFW glfwTerminate(); }
C9::~C9() { if (mPhysicalDevices != nullptr) { delete[] mPhysicalDevices; } #ifdef _DEBUG if(mCallback != VK_NULL_HANDLE) { vkDestroyDebugReportCallbackEXT(mInstance, mCallback, nullptr); } #endif if (mInstance != VK_NULL_HANDLE) { vkDestroyInstance(mInstance, nullptr); } }