Skip to content

Commit a1d54dd

Browse files
Use vkGetPhysicalDeviceQueueFamilyProperties2()
1 parent fe90f38 commit a1d54dd

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

lvk/vulkan/VulkanUtils.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)