#pragma once #include "vke.hpp" namespace vke { struct vkPhyInfo{ VkPhysicalDevice phy; VkPhysicalDeviceMemoryProperties memProps; VkPhysicalDeviceProperties properties; VkPhysicalDeviceFeatures features; VkPhysicalDeviceFeatures enabledFeatures; VkQueueFamilyProperties* queues; uint32_t queueCount; std::vector cQueues;//compute, dedicated first std::vector gQueues;//graphic, idem std::vector tQueues;//transfer, idem int pQueue;//presentation std::vector pQueueInfos; std::vector> qPriorities; vkPhyInfo (){} vkPhyInfo (VkPhysicalDevice _phy, VkSurfaceKHR surface = VK_NULL_HANDLE) { phy = _phy; // cQueues.clear(); // gQueues.clear(); // tQueues.clear(); pQueue = -1; // pQueueInfos.clear(); // qPriorities.clear(); vkGetPhysicalDeviceProperties (phy, &properties); vkGetPhysicalDeviceMemoryProperties (phy, &memProps); vkGetPhysicalDeviceFeatures (phy, &features); vkGetPhysicalDeviceQueueFamilyProperties (phy, &queueCount, NULL); queues = (VkQueueFamilyProperties*)malloc(queueCount * sizeof(VkQueueFamilyProperties)); vkGetPhysicalDeviceQueueFamilyProperties (phy, &queueCount, queues); //identify dedicated queues //try to find dedicated queues first VkBool32 present = VK_FALSE; for (uint j=0; j