Move Vulkan DebugCallback code into tools.
Bug: skia:
Change-Id: Ib356200e86e54f9ff0ba16396874e6fd10cf0465
Reviewed-on: https://skia-review.googlesource.com/137424
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/tools/sk_app/VulkanWindowContext.cpp b/tools/sk_app/VulkanWindowContext.cpp
index 411f114..8e0749e 100644
--- a/tools/sk_app/VulkanWindowContext.cpp
+++ b/tools/sk_app/VulkanWindowContext.cpp
@@ -51,7 +51,8 @@
GrVkBackendContext backendContext;
if (!sk_gpu_test::CreateVkBackendContext(fGetInstanceProcAddr, fGetDeviceProcAddr,
- &backendContext, &fPresentQueueIndex, fCanPresentFn)) {
+ &backendContext, &fDebugCallback,
+ &fPresentQueueIndex, fCanPresentFn)) {
return;
}
@@ -409,28 +410,26 @@
}
void VulkanWindowContext::destroyContext() {
- if (!this->isValid()) {
- return;
- }
+ if (this->isValid()) {
+ fQueueWaitIdle(fPresentQueue);
+ fDeviceWaitIdle(fDevice);
- fQueueWaitIdle(fPresentQueue);
- fDeviceWaitIdle(fDevice);
+ this->destroyBuffers();
- this->destroyBuffers();
+ if (VK_NULL_HANDLE != fCommandPool) {
+ GR_VK_CALL(fInterface, DestroyCommandPool(fDevice, fCommandPool, nullptr));
+ fCommandPool = VK_NULL_HANDLE;
+ }
- if (VK_NULL_HANDLE != fCommandPool) {
- GR_VK_CALL(fInterface, DestroyCommandPool(fDevice, fCommandPool, nullptr));
- fCommandPool = VK_NULL_HANDLE;
- }
+ if (VK_NULL_HANDLE != fSwapchain) {
+ fDestroySwapchainKHR(fDevice, fSwapchain, nullptr);
+ fSwapchain = VK_NULL_HANDLE;
+ }
- if (VK_NULL_HANDLE != fSwapchain) {
- fDestroySwapchainKHR(fDevice, fSwapchain, nullptr);
- fSwapchain = VK_NULL_HANDLE;
- }
-
- if (VK_NULL_HANDLE != fSurface) {
- fDestroySurfaceKHR(fInstance, fSurface, nullptr);
- fSurface = VK_NULL_HANDLE;
+ if (VK_NULL_HANDLE != fSurface) {
+ fDestroySurfaceKHR(fInstance, fSurface, nullptr);
+ fSurface = VK_NULL_HANDLE;
+ }
}
fContext.reset();
@@ -440,6 +439,14 @@
fDestroyDevice(fDevice, nullptr);
fDevice = VK_NULL_HANDLE;
}
+
+#ifdef SK_ENABLE_VK_LAYERS
+ if (fDebugCallback != VK_NULL_HANDLE) {
+ GR_VK_CALL(fInterface, DestroyDebugReportCallbackEXT(fInstance, fDebugCallback,
+ nullptr));
+ }
+#endif
+
fPhysicalDevice = VK_NULL_HANDLE;
if (VK_NULL_HANDLE != fInstance) {