Setup the debug messenger after we create the instance.
This commit is contained in:
parent
3deda81b1d
commit
1c32991ee6
1 changed files with 18 additions and 15 deletions
33
src/main.c
33
src/main.c
|
|
@ -89,7 +89,6 @@ void populateDebugMessengerCreateInfo(
|
|||
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT |
|
||||
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
|
||||
createInfo->pfnUserCallback = debugCallback;
|
||||
createInfo->pUserData = NULL; // Optional
|
||||
}
|
||||
|
||||
void createInstance(Application *app) {
|
||||
|
|
@ -126,10 +125,11 @@ void createInstance(Application *app) {
|
|||
VkExtensionProperties extensions[extensionCount];
|
||||
vkEnumerateInstanceExtensionProperties(NULL, &extensionCount, extensions);
|
||||
|
||||
VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo = {};
|
||||
// VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo = {0};
|
||||
if (enableValidationLayers) {
|
||||
populateDebugMessengerCreateInfo(&debugCreateInfo);
|
||||
createInfo.pNext = (VkDebugUtilsMessengerCreateInfoEXT *)&debugCreateInfo;
|
||||
// populateDebugMessengerCreateInfo(&debugCreateInfo);
|
||||
// createInfo.pNext = (VkDebugUtilsMessengerCreateInfoEXT
|
||||
// *)&debugCreateInfo;
|
||||
|
||||
createInfo.enabledLayerCount = validationLayerCount;
|
||||
createInfo.ppEnabledLayerNames = validationLayers;
|
||||
|
|
@ -190,33 +190,36 @@ VkResult CreateDebugUtilsMessengerEXT(
|
|||
}
|
||||
|
||||
void setupDebugMessenger(Application *app) {
|
||||
if (enableValidationLayers && !checkValidationLayerSupport()) {
|
||||
if (!enableValidationLayers) {
|
||||
return;
|
||||
}
|
||||
if (!checkValidationLayerSupport()) {
|
||||
fprintf(stderr, "Validation layers requested, but not available!\n");
|
||||
exit(EXIT_FAILURE);
|
||||
VkDebugUtilsMessengerCreateInfoEXT createInfo = {};
|
||||
populateDebugMessengerCreateInfo(&createInfo);
|
||||
}
|
||||
VkDebugUtilsMessengerCreateInfoEXT createInfo = {};
|
||||
populateDebugMessengerCreateInfo(&createInfo);
|
||||
|
||||
if (CreateDebugUtilsMessengerEXT(app->instance, &createInfo, NULL,
|
||||
&app->debugMessenger) != VK_SUCCESS) {
|
||||
fprintf(stderr, "failed to set up debug messenger!\n");
|
||||
}
|
||||
if (CreateDebugUtilsMessengerEXT(app->instance, &createInfo, NULL,
|
||||
&app->debugMessenger) != VK_SUCCESS) {
|
||||
fprintf(stderr, "failed to set up debug messenger!\n");
|
||||
}
|
||||
}
|
||||
|
||||
void DestroyDebugUtilsMessengerEXT(VkInstance instance,
|
||||
VkDebugUtilsMessengerEXT *debugMessenger,
|
||||
VkDebugUtilsMessengerEXT debugMessenger,
|
||||
const VkAllocationCallbacks *pAllocator) {
|
||||
PFN_vkDestroyDebugUtilsMessengerEXT func =
|
||||
(PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(
|
||||
instance, "vkDestroyDebugUtilsMessengerEXT");
|
||||
if (func != NULL) {
|
||||
func(instance, *debugMessenger, pAllocator);
|
||||
func(instance, debugMessenger, pAllocator);
|
||||
}
|
||||
}
|
||||
|
||||
void initVulkan(Application *app) {
|
||||
setupDebugMessenger(app);
|
||||
createInstance(app);
|
||||
setupDebugMessenger(app);
|
||||
}
|
||||
void mainLoop(Application *app) {
|
||||
while (!glfwWindowShouldClose(app->window)) {
|
||||
|
|
@ -225,7 +228,7 @@ void mainLoop(Application *app) {
|
|||
}
|
||||
void cleanup(Application *app) {
|
||||
if (enableValidationLayers) {
|
||||
DestroyDebugUtilsMessengerEXT(app->instance, &app->debugMessenger, NULL);
|
||||
DestroyDebugUtilsMessengerEXT(app->instance, app->debugMessenger, NULL);
|
||||
}
|
||||
vkDestroyInstance(app->instance, NULL);
|
||||
glfwDestroyWindow(app->window);
|
||||
|
|
|
|||
Loading…
Reference in a new issue