From 5de3e1bac990ce0aef7c9c1b0778f7e46571fbcc Mon Sep 17 00:00:00 2001 From: Benjamin Kyd Date: Wed, 8 Nov 2023 11:32:23 +0000 Subject: [PATCH] somehow enumerating devices is causing a memory leak ?WHAT --- src/window.cpp | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/src/window.cpp b/src/window.cpp index 4f139d5..3fca4da 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -111,8 +111,11 @@ void setupGLFW(std::string title) } // Logical Device + yolo::debug("1"); QueueFamilyIndices indices = window_get_queue_families(VulkanPhysicalDevice); + yolo::debug("2"); std::vector queueCreateInfos; + yolo::debug("3"); std::set uniqueQueueFamilies = { indices.graphicsFamily.value_or(0), indices.presentFamily.value_or(0) }; float queuePriority = 1.0f; @@ -190,13 +193,11 @@ void setupGLFW(std::string title) actualExtent.width = std::max( capabilities.minImageExtent.width, - std::min(capabilities.maxImageExtent.width, actualExtent.width) - ); + std::min(capabilities.maxImageExtent.width, actualExtent.width)); actualExtent.height = std::max( capabilities.minImageExtent.height, - std::min(capabilities.maxImageExtent.height, actualExtent.height) - ); + std::min(capabilities.maxImageExtent.height, actualExtent.height)); return actualExtent; } @@ -210,8 +211,7 @@ void setupGLFW(std::string title) uint32_t imageCount = swapChainSupport.capabilities.minImageCount + 1; if ( swapChainSupport.capabilities.maxImageCount > 0 - && imageCount > swapChainSupport.capabilities.maxImageCount - ) { + && imageCount > swapChainSupport.capabilities.maxImageCount) { imageCount = swapChainSupport.capabilities.maxImageCount; } @@ -357,25 +357,17 @@ void window_get_pos(int& x, int& y) { glfwGetWindowPos(Window, &x, &y); } // VULKAN SPECIFIC bool window_evaluate_device(VkPhysicalDevice device, std::vector ext_needed, HW_CAPABILITY* capability) { - VkPhysicalDeviceProperties deviceProperties; - vkGetPhysicalDeviceProperties(device, &deviceProperties); - VkPhysicalDeviceFeatures deviceFeatures; - vkGetPhysicalDeviceFeatures(device, &deviceFeatures); - yolo::info("Found Vulkan device: {}", deviceProperties.deviceName); - - bool features = deviceProperties.deviceType == deviceFeatures.geometryShader; - QueueFamilyIndices indices = window_get_queue_families(device); - bool extensions = window_evaluate_device_extensions(device, ext_needed); + + bool extensionsSupported = window_evaluate_device_extensions(device, ext_needed); bool swapChainAdequate = false; - if (extensions) { + if (extensionsSupported) { SwapChainSupportDetails swapChainSupport = window_get_swap_chain_support(device); swapChainAdequate = !swapChainSupport.formats.empty() && !swapChainSupport.presentModes.empty(); } - yolo::debug("Device {} is {}suitable", deviceProperties.deviceName, (features && extensions) ? "" : "not "); - return swapChainAdequate && extensions && features; + return indices.isComplete() && extensionsSupported && swapChainAdequate; } bool window_evaluate_device_extensions(VkPhysicalDevice device, std::vector extensions) @@ -431,6 +423,7 @@ QueueFamilyIndices window_get_queue_families(VkPhysicalDevice device) SwapChainSupportDetails window_get_swap_chain_support(VkPhysicalDevice device) { SwapChainSupportDetails details; + vkGetPhysicalDeviceSurfaceCapabilitiesKHR(device, VulkanSurface, &details.capabilities); uint32_t formatCount;