From 0a4ed7140e65d83f3f8a0aca7abebbe8dffa360e Mon Sep 17 00:00:00 2001 From: Miguel Date: Thu, 9 Jan 2025 20:14:33 +0100 Subject: more --- main.cpp | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) (limited to 'main.cpp') diff --git a/main.cpp b/main.cpp index e7ae44a..022243a 100644 --- a/main.cpp +++ b/main.cpp @@ -78,8 +78,8 @@ private: bool quit=false; GLFWwindow* window; VkInstance instance; - VkDebugUtilsMessengerEXT debugMessenger; + VkSurfaceKHR surface; VkPhysicalDevice physicalDevice = VK_NULL_HANDLE; @@ -133,6 +133,7 @@ private: createInfo.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT; createInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT; createInfo.pfnUserCallback = debugCallback; + createInfo.pUserData = nullptr; // Optional } static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback( @@ -140,8 +141,9 @@ private: VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData) { - - std::cerr << "validation layer: " << pCallbackData->pMessage << std::endl; + //if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) { + std::cerr << "validation layer: " << pCallbackData->pMessage << std::endl; + //} return VK_FALSE; } @@ -736,14 +738,15 @@ private: appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0); appInfo.apiVersion = VK_API_VERSION_1_0; - VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo{}; - auto extensions = getRequiredExtensions(); if (enableValidationLayers && !checkValidationLayerSupport()) { throw std::runtime_error("validation layers requested, but not available!"); } + VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo{}; + populateDebugMessengerCreateInfo(debugCreateInfo); + VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; createInfo.pApplicationInfo = &appInfo; @@ -753,8 +756,7 @@ private: if (enableValidationLayers) { createInfo.enabledLayerCount = static_cast(validationLayers.size()); createInfo.ppEnabledLayerNames = validationLayers.data(); - populateDebugMessengerCreateInfo(debugCreateInfo); - createInfo.pNext = (VkDebugUtilsMessengerCreateInfoEXT*) &debugCreateInfo; + createInfo.pNext = (VkDebugUtilsMessengerCreateInfoEXT*) &debugCreateInfo; // for debugging of: vkCreateInstance & vkDestroyInstance } else { createInfo.enabledLayerCount = 0; createInfo.pNext = nullptr; @@ -765,35 +767,20 @@ private: } // instance validation layers apply to all Vulkan calls (enble on device level for compat) - bool checkValidationLayerSupport() { + const bool checkValidationLayerSupport() { uint32_t layerCount; vkEnumerateInstanceLayerProperties(&layerCount, nullptr); std::vector availableLayers(layerCount); vkEnumerateInstanceLayerProperties(&layerCount, availableLayers.data()); - - std::set requiredLayers(validationLayers.begin(), validationLayers.end()); - for (const char* layerName : validationLayers) { bool layerFound = false; - for (const auto& layerProperties : availableLayers) { std::cout << "LAYER: " << layerProperties.layerName << std::endl; if (strcmp(layerName, layerProperties.layerName) == 0) layerFound=true; } - - if (!layerFound) { - return false; - } + if (!layerFound) return false; } return true; -/* - for (const auto& extension : availableExtensions) { - // std::cout << "Available Device Extension: " << extension.extensionName << std::endl; - requiredExtensions.erase(extension.extensionName); - } - - return requiredExtensions.empty(); - */ } std::vector getRequiredExtensions() { @@ -959,11 +946,11 @@ private: } vkDestroySwapchainKHR(device, swapChain, nullptr); vkDestroyDevice(device, nullptr); + if (enableValidationLayers) { DestroyDebugUtilsMessengerEXT(instance, debugMessenger, nullptr); } vkDestroySurfaceKHR(instance, surface, nullptr); - vkDestroyInstance(instance, nullptr); glfwDestroyWindow(window); glfwTerminate(); -- cgit v1.2.3