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_VALIDATION_BIT_EXT |
|
||||||
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
|
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
|
||||||
createInfo->pfnUserCallback = debugCallback;
|
createInfo->pfnUserCallback = debugCallback;
|
||||||
createInfo->pUserData = NULL; // Optional
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void createInstance(Application *app) {
|
void createInstance(Application *app) {
|
||||||
|
|
@ -126,10 +125,11 @@ void createInstance(Application *app) {
|
||||||
VkExtensionProperties extensions[extensionCount];
|
VkExtensionProperties extensions[extensionCount];
|
||||||
vkEnumerateInstanceExtensionProperties(NULL, &extensionCount, extensions);
|
vkEnumerateInstanceExtensionProperties(NULL, &extensionCount, extensions);
|
||||||
|
|
||||||
VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo = {};
|
// VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo = {0};
|
||||||
if (enableValidationLayers) {
|
if (enableValidationLayers) {
|
||||||
populateDebugMessengerCreateInfo(&debugCreateInfo);
|
// populateDebugMessengerCreateInfo(&debugCreateInfo);
|
||||||
createInfo.pNext = (VkDebugUtilsMessengerCreateInfoEXT *)&debugCreateInfo;
|
// createInfo.pNext = (VkDebugUtilsMessengerCreateInfoEXT
|
||||||
|
// *)&debugCreateInfo;
|
||||||
|
|
||||||
createInfo.enabledLayerCount = validationLayerCount;
|
createInfo.enabledLayerCount = validationLayerCount;
|
||||||
createInfo.ppEnabledLayerNames = validationLayers;
|
createInfo.ppEnabledLayerNames = validationLayers;
|
||||||
|
|
@ -190,33 +190,36 @@ VkResult CreateDebugUtilsMessengerEXT(
|
||||||
}
|
}
|
||||||
|
|
||||||
void setupDebugMessenger(Application *app) {
|
void setupDebugMessenger(Application *app) {
|
||||||
if (enableValidationLayers && !checkValidationLayerSupport()) {
|
if (!enableValidationLayers) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!checkValidationLayerSupport()) {
|
||||||
fprintf(stderr, "Validation layers requested, but not available!\n");
|
fprintf(stderr, "Validation layers requested, but not available!\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
VkDebugUtilsMessengerCreateInfoEXT createInfo = {};
|
}
|
||||||
populateDebugMessengerCreateInfo(&createInfo);
|
VkDebugUtilsMessengerCreateInfoEXT createInfo = {};
|
||||||
|
populateDebugMessengerCreateInfo(&createInfo);
|
||||||
|
|
||||||
if (CreateDebugUtilsMessengerEXT(app->instance, &createInfo, NULL,
|
if (CreateDebugUtilsMessengerEXT(app->instance, &createInfo, NULL,
|
||||||
&app->debugMessenger) != VK_SUCCESS) {
|
&app->debugMessenger) != VK_SUCCESS) {
|
||||||
fprintf(stderr, "failed to set up debug messenger!\n");
|
fprintf(stderr, "failed to set up debug messenger!\n");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DestroyDebugUtilsMessengerEXT(VkInstance instance,
|
void DestroyDebugUtilsMessengerEXT(VkInstance instance,
|
||||||
VkDebugUtilsMessengerEXT *debugMessenger,
|
VkDebugUtilsMessengerEXT debugMessenger,
|
||||||
const VkAllocationCallbacks *pAllocator) {
|
const VkAllocationCallbacks *pAllocator) {
|
||||||
PFN_vkDestroyDebugUtilsMessengerEXT func =
|
PFN_vkDestroyDebugUtilsMessengerEXT func =
|
||||||
(PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(
|
(PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(
|
||||||
instance, "vkDestroyDebugUtilsMessengerEXT");
|
instance, "vkDestroyDebugUtilsMessengerEXT");
|
||||||
if (func != NULL) {
|
if (func != NULL) {
|
||||||
func(instance, *debugMessenger, pAllocator);
|
func(instance, debugMessenger, pAllocator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void initVulkan(Application *app) {
|
void initVulkan(Application *app) {
|
||||||
setupDebugMessenger(app);
|
|
||||||
createInstance(app);
|
createInstance(app);
|
||||||
|
setupDebugMessenger(app);
|
||||||
}
|
}
|
||||||
void mainLoop(Application *app) {
|
void mainLoop(Application *app) {
|
||||||
while (!glfwWindowShouldClose(app->window)) {
|
while (!glfwWindowShouldClose(app->window)) {
|
||||||
|
|
@ -225,7 +228,7 @@ void mainLoop(Application *app) {
|
||||||
}
|
}
|
||||||
void cleanup(Application *app) {
|
void cleanup(Application *app) {
|
||||||
if (enableValidationLayers) {
|
if (enableValidationLayers) {
|
||||||
DestroyDebugUtilsMessengerEXT(app->instance, &app->debugMessenger, NULL);
|
DestroyDebugUtilsMessengerEXT(app->instance, app->debugMessenger, NULL);
|
||||||
}
|
}
|
||||||
vkDestroyInstance(app->instance, NULL);
|
vkDestroyInstance(app->instance, NULL);
|
||||||
glfwDestroyWindow(app->window);
|
glfwDestroyWindow(app->window);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue