From 03f4b776b79e23275b79687a7316dd0fc21b47ff Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Wed, 22 Jul 2015 11:03:51 -0600 Subject: cube: Add support for debug break When cube sees --break on the command line it will install the DebugBreak helper callback for layer validation errors and warnings. --- demos/cube.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/demos/cube.c b/demos/cube.c index fd74171c..d8038cfb 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -386,8 +386,10 @@ struct demo { int32_t curFrame; int32_t frameCount; bool validate; + bool use_break; PFN_vkDbgCreateMsgCallback dbgCreateMsgCallback; PFN_vkDbgDestroyMsgCallback dbgDestroyMsgCallback; + PFN_vkDbgMsgCallback dbgBreakCallback; VkDbgMsgCallback msg_callback; uint32_t current_buffer; @@ -2349,10 +2351,23 @@ static void demo_init_vk(struct demo *demo) ERR_EXIT("GetProcAddr: Unable to find vkDbgDestroyMsgCallback\n", "vkGetProcAddr Failure"); } + demo->dbgBreakCallback = (PFN_vkDbgMsgCallback) vkGetInstanceProcAddr(demo->inst, "vkDbgBreakCallback"); + if (!demo->dbgBreakCallback) { + ERR_EXIT("GetProcAddr: Unable to find vkDbgBreakCallback\n", + "vkGetProcAddr Failure"); + } + + PFN_vkDbgMsgCallback callback; + + if (!demo->use_break) { + callback = dbgFunc; + } else { + callback = demo->dbgBreakCallback; + } err = demo->dbgCreateMsgCallback( demo->inst, VK_DBG_REPORT_ERROR_BIT | VK_DBG_REPORT_WARN_BIT, - dbgFunc, NULL, + callback, NULL, &demo->msg_callback); switch (err) { case VK_SUCCESS: @@ -2554,6 +2569,10 @@ static void demo_init(struct demo *demo, int argc, char **argv) demo->use_glsl = true; continue; } + if (strcmp(argv[i], "--break") == 0) { + demo->use_break = true; + continue; + } if (strcmp(argv[i], "--validate") == 0) { demo->validate = true; continue; @@ -2568,7 +2587,7 @@ static void demo_init(struct demo *demo, int argc, char **argv) continue; } - fprintf(stderr, "Usage:\n %s [--use_staging] [--validate] [--c ]\n", APP_SHORT_NAME); + fprintf(stderr, "Usage:\n %s [--use_staging] [--validate] [--break] [--c ]\n", APP_SHORT_NAME); fflush(stderr); exit(1); } -- cgit v1.2.3