@@ -349,16 +349,21 @@ uint32_t lvk::findQueueFamilyIndex(VkPhysicalDevice physDev, VkQueueFlags flags)
349349 using lvk::DeviceQueues;
350350
351351 uint32_t queueFamilyCount = 0 ;
352- vkGetPhysicalDeviceQueueFamilyProperties (physDev, &queueFamilyCount, nullptr );
352+ vkGetPhysicalDeviceQueueFamilyProperties2 (physDev, &queueFamilyCount, nullptr );
353353
354- std::vector<VkQueueFamilyProperties> props (queueFamilyCount);
355- vkGetPhysicalDeviceQueueFamilyProperties (physDev, &queueFamilyCount, props.data ());
354+ std::vector<VkQueueFamilyProperties2> props (queueFamilyCount);
355+ for (VkQueueFamilyProperties2& p : props) {
356+ // https://docs.vulkan.org/spec/latest/chapters/devsandqueues.html#VUID-VkQueueFamilyProperties2-sType-sType
357+ p.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2;
358+ }
359+ vkGetPhysicalDeviceQueueFamilyProperties2 (physDev, &queueFamilyCount, props.data ());
356360
357361 auto findDedicatedQueueFamilyIndex = [&props](VkQueueFlags require, VkQueueFlags avoid) -> uint32_t {
358362 for (uint32_t i = 0 ; i != props.size (); i++) {
359- const bool isSuitable = (props[i].queueFlags & require) == require;
360- const bool isDedicated = (props[i].queueFlags & avoid) == 0 ;
361- if (props[i].queueCount && isSuitable && isDedicated)
363+ const VkQueueFamilyProperties& p = props[i].queueFamilyProperties ;
364+ const bool isSuitable = (p.queueFlags & require) == require;
365+ const bool isDedicated = (p.queueFlags & avoid) == 0 ;
366+ if (p.queueCount && isSuitable && isDedicated)
362367 return i;
363368 }
364369 return DeviceQueues::INVALID;
0 commit comments