aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2016-02-22 09:32:55 -0700
committerMark Lobodzinski <mark@lunarg.com>2016-02-22 09:34:25 -0700
commit4a1f0a6b1ccc042a821442ed054dd8d51f92e8d9 (patch)
tree9cd3628cfc5e4d93766223a8ffbb70e34cf73a4c
parentc60bd66cde8b6a5adb697c00d31ef3d2ebfaa4d8 (diff)
downloadusermoji-4a1f0a6b1ccc042a821442ed054dd8d51f92e8d9.tar.xz
demos: Properly destroy DebugReportCallback
Error resulted in warnings when shutting down tri --validate. Also added DebugReportMessage setup.
-rw-r--r--demos/tri.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/demos/tri.c b/demos/tri.c
index d2d3923d..702f807a 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -249,6 +249,7 @@ struct demo {
PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallback;
PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallback;
VkDebugReportCallbackEXT msg_callback;
+ PFN_vkDebugReportMessageEXT DebugReportMessage;
float depthStencil;
float depthIncrement;
@@ -2030,11 +2031,27 @@ static void demo_init_vk(struct demo *demo) {
demo->CreateDebugReportCallback =
(PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(
demo->inst, "vkCreateDebugReportCallbackEXT");
+ demo->DestroyDebugReportCallback =
+ (PFN_vkDestroyDebugReportCallbackEXT)vkGetInstanceProcAddr(
+ demo->inst, "vkDestroyDebugReportCallbackEXT");
if (!demo->CreateDebugReportCallback) {
ERR_EXIT(
"GetProcAddr: Unable to find vkCreateDebugReportCallbackEXT\n",
"vkGetProcAddr Failure");
}
+ if (!demo->DestroyDebugReportCallback) {
+ ERR_EXIT(
+ "GetProcAddr: Unable to find vkDestroyDebugReportCallbackEXT\n",
+ "vkGetProcAddr Failure");
+ }
+ demo->DebugReportMessage =
+ (PFN_vkDebugReportMessageEXT)vkGetInstanceProcAddr(
+ demo->inst, "vkDebugReportMessageEXT");
+ if (!demo->DebugReportMessage) {
+ ERR_EXIT("GetProcAddr: Unable to find vkDebugReportMessageEXT\n",
+ "vkGetProcAddr Failure");
+ }
+
VkDebugReportCallbackCreateInfoEXT dbgCreateInfo;
dbgCreateInfo.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT;
dbgCreateInfo.flags =
@@ -2341,6 +2358,9 @@ static void demo_cleanup(struct demo *demo) {
free(demo->buffers);
vkDestroyDevice(demo->device, NULL);
+ if (demo->validate) {
+ demo->DestroyDebugReportCallback(demo->inst, demo->msg_callback, NULL);
+ }
vkDestroySurfaceKHR(demo->inst, demo->surface, NULL);
vkDestroyInstance(demo->inst, &demo->allocator);