/** * This function sets up the debug callback which the validation layers will use to yell at us when we make mistakes. */ private static long setupDebugging(VkInstance instance, int flags, VkDebugReportCallbackEXT callback) { // Again, a struct to create something, in this case the debug report callback VkDebugReportCallbackCreateInfoEXT dbgCreateInfo = VkDebugReportCallbackCreateInfoEXT.callocStack() .sType(VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT) // <- the struct type .pNext(NULL) // <- must be NULL .pfnCallback(callback) // <- the actual function pointer (in LWJGL a Closure) .pUserData(NULL) // <- any user data provided to the debug report callback function .flags(flags); // <- indicates which kind of messages we want to receive LongBuffer pCallback = stackMallocLong(1); // <- allocate a LongBuffer (for a non-dispatchable handle) // Actually create the debug report callback int err = vkCreateDebugReportCallbackEXT(instance, dbgCreateInfo, null, pCallback); long callbackHandle = pCallback.get(0); if (err != VK_SUCCESS) { throw new AssertionError("Failed to create VkInstance: " + translateVulkanResult(err)); } return callbackHandle; }
private long setupDebugging(VkInstance instance, int flags, VkDebugReportCallbackEXT callback) { VkDebugReportCallbackCreateInfoEXT dbgCreateInfo = VkDebugReportCallbackCreateInfoEXT.calloc() .sType(VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT) .pNext(0) .pfnCallback(callback) .pUserData(0) .flags(flags); LongBuffer pCallback = memAllocLong(1); int err = vkCreateDebugReportCallbackEXT(instance, dbgCreateInfo, null, pCallback); long callbackHandle = pCallback.get(0); memFree(pCallback); dbgCreateInfo.free(); if (err != VK_SUCCESS) { throw new AssertionError("Failed to create VkInstance: " + VKUtil.translateVulkanResult(err)); } return callbackHandle; }
/** * This function sets up the debug callback which the validation layers will use to yell at us when we make mistakes. */ private static long setupDebugging(VkInstance instance, int flags, VkDebugReportCallbackEXT callback) { // Again, a struct to create something, in this case the debug report callback VkDebugReportCallbackCreateInfoEXT dbgCreateInfo = VkDebugReportCallbackCreateInfoEXT.calloc() .sType(VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT) // <- the struct type .pNext(NULL) // <- must be NULL .pfnCallback(callback) // <- the actual function pointer (in LWJGL a Closure) .pUserData(NULL) // <- any user data provided to the debug report callback function .flags(flags); // <- indicates which kind of messages we want to receive LongBuffer pCallback = memAllocLong(1); // <- allocate a LongBuffer (for a non-dispatchable handle) // Actually create the debug report callback int err = vkCreateDebugReportCallbackEXT(instance, dbgCreateInfo, null, pCallback); long callbackHandle = pCallback.get(0); memFree(pCallback); // <- and free the LongBuffer dbgCreateInfo.free(); // <- and also the create-info struct if (err != VK_SUCCESS) { throw new AssertionError("Failed to create VkInstance: " + translateVulkanResult(err)); } return callbackHandle; }