tests:Only init queue families that have queues
It's possible for a device to return queue families that don't have
any queues, but we should not be requesting creation of queues from
such a family when we create the device as it's against the spec and
leads to a parameter validation error..
This change only requests that a device initiate queue families that
have at least one queue.
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index 5b8b320..903bd7c 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -259,12 +259,20 @@
graphics_queue_node_index_ = i;
}
}
+ // Only request creation with queuefamilies that have at least one queue
+ std::vector<VkDeviceQueueCreateInfo> create_queue_infos;
+ auto qci = queue_info.data();
+ for (uint32_t j = 0; j < queue_info.size(); ++j) {
+ if (qci[j].queueCount) {
+ create_queue_infos.push_back(qci[j]);
+ }
+ }
VkDeviceCreateInfo dev_info = {};
dev_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
dev_info.pNext = NULL;
- dev_info.queueCreateInfoCount = queue_info.size();
- dev_info.pQueueCreateInfos = queue_info.data();
+ dev_info.queueCreateInfoCount = create_queue_infos.size();
+ dev_info.pQueueCreateInfos = create_queue_infos.data();
dev_info.enabledLayerCount = 0;
dev_info.ppEnabledLayerNames = NULL;
dev_info.enabledExtensionCount = extensions.size();