Setup the debug messenger after we create the instance.

This commit is contained in:
Warwick New 2024-10-14 13:35:16 +01:00
parent 3deda81b1d
commit 1c32991ee6

View file

@ -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);