Speedup tests by putting physical devices in a map
Requires extensive modifications to the tests since previously many tests accessed
the physical device array directly.
diff --git a/tests/framework/icd/test_icd.cpp b/tests/framework/icd/test_icd.cpp
index b657672..01bf1dd 100644
--- a/tests/framework/icd/test_icd.cpp
+++ b/tests/framework/icd/test_icd.cpp
@@ -99,7 +99,7 @@
}
bool IsPhysicalDeviceExtensionAvailable(const char* extension_name) {
- for (auto& phys_dev : icd.physical_devices) {
+ for (auto const& [phys_dev_handle, phys_dev] : icd.physical_devices) {
if (phys_dev.extensions.end() !=
std::find_if(phys_dev.extensions.begin(), phys_dev.extensions.end(),
[extension_name](Extension const& ext) { return ext.extensionName == extension_name; })) {
@@ -110,22 +110,13 @@
}
PhysicalDevice& GetPhysDevice(VkPhysicalDevice physicalDevice) {
- for (auto& phys_dev : icd.physical_devices) {
- if (phys_dev.vk_physical_device.handle == physicalDevice) return phys_dev;
+ if (icd.physical_devices.count(physicalDevice) > 0) {
+ return icd.physical_devices.at(physicalDevice);
}
assert(false && "vkPhysicalDevice not found!");
- return icd.physical_devices[0];
+ return icd.physical_devices.at(icd.physical_devices.begin()->first);
}
-std::vector<PhysicalDevice>::iterator find_physical_device(VkPhysicalDevice physicalDevice) {
- auto found = std::find_if(icd.physical_devices.begin(), icd.physical_devices.end(), [physicalDevice](PhysicalDevice& phys_dev) {
- return phys_dev.vk_physical_device.handle == physicalDevice;
- });
- return found;
-}
-
-bool is_physical_device_found(std::vector<PhysicalDevice>::iterator found) { return found != icd.physical_devices.end(); }
-
bool is_valid_surface(VkSurfaceKHR surface_to_check) {
uint64_t surf_handle = (uint64_t)(surface_to_check);
auto found = std::find(icd.surface_handles.begin(), icd.surface_handles.end(), surf_handle);
@@ -134,22 +125,24 @@
struct FindDevice {
bool found = false;
- uint32_t phys_dev_index = 0;
+ VkPhysicalDevice phys_dev = 0;
uint32_t dev_index = 0;
};
FindDevice lookup_device(VkDevice device) {
FindDevice fd{};
- for (uint32_t p = 0; p < icd.physical_devices.size(); p++) {
- auto const& phys_dev = icd.physical_devices.at(p);
+ auto it = icd.device_to_physical_device_map.find(device);
+ if (it != icd.device_to_physical_device_map.end()) {
+ auto& phys_dev = icd.physical_devices.at(it->second);
+ fd.found = true;
+ fd.phys_dev = phys_dev.vk_physical_device.handle;
for (uint32_t d = 0; d < phys_dev.device_handles.size(); d++) {
if (phys_dev.device_handles.at(d) == device) {
- fd.found = true;
- fd.phys_dev_index = p;
fd.dev_index = d;
- return fd;
+ break;
}
}
+ return fd;
}
return fd;
}
@@ -289,15 +282,22 @@
if (pPhysicalDevices == nullptr) {
*pPhysicalDeviceCount = static_cast<uint32_t>(icd.physical_devices.size());
} else {
+ using SortPair = std::pair<size_t, VkPhysicalDevice>;
+ std::vector<SortPair> in_order_phys_dev;
+ for (auto const& [phys_dev_handle, phys_dev] : icd.physical_devices) {
+ in_order_phys_dev.push_back({phys_dev.iteration_order, phys_dev_handle});
+ }
+
+ std::sort(in_order_phys_dev.begin(), in_order_phys_dev.end(),
+ [](SortPair const& a, SortPair const& b) { return a.first < b.first; });
+
uint32_t handles_written = 0;
- for (size_t i = 0; i < icd.physical_devices.size(); i++) {
- if (i < *pPhysicalDeviceCount) {
- handles_written++;
- pPhysicalDevices[i] = icd.physical_devices[i].vk_physical_device.handle;
- } else {
+ for (auto const& phys_dev : in_order_phys_dev) {
+ if (handles_written + 1 > *pPhysicalDeviceCount) {
*pPhysicalDeviceCount = handles_written;
return VK_INCOMPLETE;
}
+ pPhysicalDevices[handles_written++] = phys_dev.second;
}
*pPhysicalDeviceCount = handles_written;
}
@@ -337,10 +337,15 @@
result = VK_INCOMPLETE;
break;
}
+
pPhysicalDeviceGroupProperties[device_group].subsetAllocation = false;
pPhysicalDeviceGroupProperties[device_group].physicalDeviceCount = 1;
- pPhysicalDeviceGroupProperties[device_group].physicalDevices[0] =
- icd.physical_devices[device_group].vk_physical_device.handle;
+ for (auto const& [phys_dev_handle, phys_dev] : icd.physical_devices) {
+ if (phys_dev.iteration_order == device_group) {
+ pPhysicalDeviceGroupProperties[device_group].physicalDevices[0] = phys_dev_handle;
+ break;
+ }
+ }
for (size_t i = 1; i < VK_MAX_DEVICE_GROUP_SIZE; i++) {
pPhysicalDeviceGroupProperties[device_group].physicalDevices[i] = {};
}
@@ -479,7 +484,7 @@
VKAPI_ATTR VkResult VKAPI_CALL test_vkDebugMarkerSetObjectTagEXT(VkDevice dev, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
if (pTagInfo && pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
VkPhysicalDevice pd = (VkPhysicalDevice)(uintptr_t)(pTagInfo->object);
- if (pd != icd.physical_devices.at(lookup_device(dev).phys_dev_index).vk_physical_device.handle) return VK_ERROR_DEVICE_LOST;
+ if (pd != lookup_device(dev).phys_dev) return VK_ERROR_DEVICE_LOST;
}
if (pTagInfo && pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT) {
if (pTagInfo->object != icd.surface_handles.at(0)) return VK_ERROR_DEVICE_LOST;
@@ -492,7 +497,7 @@
VKAPI_ATTR VkResult VKAPI_CALL test_vkDebugMarkerSetObjectNameEXT(VkDevice dev, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
if (pNameInfo && pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
VkPhysicalDevice pd = (VkPhysicalDevice)(uintptr_t)(pNameInfo->object);
- if (pd != icd.physical_devices.at(lookup_device(dev).phys_dev_index).vk_physical_device.handle) return VK_ERROR_DEVICE_LOST;
+ if (pd != lookup_device(dev).phys_dev) return VK_ERROR_DEVICE_LOST;
}
if (pNameInfo && pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT) {
if (pNameInfo->object != icd.surface_handles.at(0)) return VK_ERROR_DEVICE_LOST;
@@ -509,7 +514,7 @@
VKAPI_ATTR VkResult VKAPI_CALL test_vkSetDebugUtilsObjectNameEXT(VkDevice dev, const VkDebugUtilsObjectNameInfoEXT* pNameInfo) {
if (pNameInfo && pNameInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
VkPhysicalDevice pd = (VkPhysicalDevice)(uintptr_t)(pNameInfo->objectHandle);
- if (pd != icd.physical_devices.at(lookup_device(dev).phys_dev_index).vk_physical_device.handle) return VK_ERROR_DEVICE_LOST;
+ if (pd != lookup_device(dev).phys_dev) return VK_ERROR_DEVICE_LOST;
}
if (pNameInfo && pNameInfo->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {
if (pNameInfo->objectHandle != icd.surface_handles.at(0)) return VK_ERROR_DEVICE_LOST;
@@ -522,7 +527,7 @@
VKAPI_ATTR VkResult VKAPI_CALL test_vkSetDebugUtilsObjectTagEXT(VkDevice dev, const VkDebugUtilsObjectTagInfoEXT* pTagInfo) {
if (pTagInfo && pTagInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
VkPhysicalDevice pd = (VkPhysicalDevice)(uintptr_t)(pTagInfo->objectHandle);
- if (pd != icd.physical_devices.at(lookup_device(dev).phys_dev_index).vk_physical_device.handle) return VK_ERROR_DEVICE_LOST;
+ if (pd != lookup_device(dev).phys_dev) return VK_ERROR_DEVICE_LOST;
}
if (pTagInfo && pTagInfo->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {
if (pTagInfo->objectHandle != icd.surface_handles.at(0)) return VK_ERROR_DEVICE_LOST;
@@ -570,19 +575,19 @@
VKAPI_ATTR VkResult VKAPI_CALL test_vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) {
check_allocator_handle(pAllocator);
- auto found = find_physical_device(physicalDevice);
- if (!is_physical_device_found(found)) {
+ if (icd.physical_devices.count(physicalDevice) == 0) {
return VK_ERROR_INITIALIZATION_FAILED;
}
+ auto& found = icd.physical_devices.at(physicalDevice);
auto device_handle = DispatchableHandle<VkDevice>();
*pDevice = device_handle.handle;
- found->device_handles.push_back(device_handle.handle);
- found->device_create_infos.push_back(DeviceCreateInfo{pCreateInfo});
+ found.device_handles.push_back(device_handle.handle);
+ found.device_create_infos.emplace_back(pCreateInfo);
for (uint32_t i = 0; i < pCreateInfo->queueCreateInfoCount; i++) {
- found->queue_handles.emplace_back();
+ found.queue_handles.emplace_back();
}
+ icd.device_to_physical_device_map.emplace(device_handle.handle, physicalDevice);
icd.device_handles.emplace_back(std::move(device_handle));
-
return VK_SUCCESS;
}
@@ -592,9 +597,10 @@
if (found != icd.device_handles.end()) icd.device_handles.erase(found);
auto fd = lookup_device(device);
if (!fd.found) return;
- auto& phys_dev = icd.physical_devices.at(fd.phys_dev_index);
+ auto& phys_dev = icd.physical_devices.at(fd.phys_dev);
phys_dev.device_handles.erase(phys_dev.device_handles.begin() + fd.dev_index);
phys_dev.device_create_infos.erase(phys_dev.device_create_infos.begin() + fd.dev_index);
+ icd.device_to_physical_device_map.erase(device);
}
VKAPI_ATTR VkResult VKAPI_CALL generic_tool_props_function([[maybe_unused]] VkPhysicalDevice physicalDevice, uint32_t* pToolCount,
@@ -877,9 +883,8 @@
}
}
if (nullptr != pSupported) {
- auto found = find_physical_device(physicalDevice);
- if (is_physical_device_found(found)) {
- *pSupported = found->queue_family_properties.at(queueFamilyIndex).support_present;
+ if (icd.physical_devices.count(physicalDevice) > 0) {
+ *pSupported = icd.physical_devices.at(physicalDevice).queue_family_properties.at(queueFamilyIndex).support_present;
} else {
*pSupported = VK_FALSE;
return VK_SUCCESS;
@@ -1139,7 +1144,7 @@
uint32_t queueIndex, VkQueue* pQueue) {
auto fd = lookup_device(device);
if (fd.found) {
- *pQueue = icd.physical_devices.at(fd.phys_dev_index).queue_handles[queueIndex].handle;
+ *pQueue = icd.physical_devices.at(fd.phys_dev).queue_handles[queueIndex].handle;
}
}
@@ -1667,7 +1672,7 @@
return to_vkVoidFunction(test_vkGetPhysicalDeviceToolPropertiesEXT);
}
- for (auto& phys_dev : icd.physical_devices) {
+ for (auto const& [phys_dev_handle, phys_dev] : icd.physical_devices) {
for (auto& func : phys_dev.custom_physical_device_functions) {
if (func.name == pName) {
return to_vkVoidFunction(func.function);
@@ -1703,9 +1708,9 @@
return nullptr;
}
-bool should_check(std::vector<const char*> const& exts, VkDevice device, const char* ext_name) {
- if (device == NULL) return true; // always look if device is NULL
- for (auto const& ext : exts) {
+bool should_check(std::vector<const char*>* exts, VkDevice device, const char* ext_name) {
+ if (exts == nullptr || device == VK_NULL_HANDLE) return true; // always look if device is NULL
+ for (auto const& ext : *exts) {
if (string_eq(ext, ext_name)) {
return true;
}
@@ -1714,18 +1719,20 @@
}
PFN_vkVoidFunction get_device_func(VkDevice device, const char* pName) {
- DeviceCreateInfo create_info{};
+ std::vector<const char*>* enabled_extensions;
+ FindDevice found_device{};
if (device != nullptr) {
- auto fd = lookup_device(device);
- if (!fd.found) return NULL;
- create_info = icd.physical_devices.at(fd.phys_dev_index).device_create_infos.at(fd.dev_index);
+ found_device = lookup_device(device);
+ if (!found_device.found) return NULL;
+ enabled_extensions =
+ &icd.physical_devices.at(found_device.phys_dev).device_create_infos.at(found_device.dev_index).enabled_extensions;
}
if (string_eq(pName, "vkCreateCommandPool")) return to_vkVoidFunction(test_vkCreateCommandPool);
if (string_eq(pName, "vkAllocateCommandBuffers")) return to_vkVoidFunction(test_vkAllocateCommandBuffers);
if (string_eq(pName, "vkDestroyCommandPool")) return to_vkVoidFunction(test_vkDestroyCommandPool);
if (string_eq(pName, "vkGetDeviceQueue")) return to_vkVoidFunction(test_vkGetDeviceQueue);
if (string_eq(pName, "vkDestroyDevice")) return to_vkVoidFunction(test_vkDestroyDevice);
- if (should_check(create_info.enabled_extensions, device, "VK_KHR_swapchain")) {
+ if (should_check(enabled_extensions, device, "VK_KHR_swapchain")) {
if (string_eq(pName, "vkCreateSwapchainKHR")) return to_vkVoidFunction(test_vkCreateSwapchainKHR);
if (string_eq(pName, "vkGetSwapchainImagesKHR")) return to_vkVoidFunction(test_vkGetSwapchainImagesKHR);
if (string_eq(pName, "vkDestroySwapchainKHR")) return to_vkVoidFunction(test_vkDestroySwapchainKHR);
@@ -1733,14 +1740,14 @@
if (icd.icd_api_version >= VK_API_VERSION_1_1 && string_eq(pName, "vkGetDeviceGroupSurfacePresentModesKHR"))
return to_vkVoidFunction(test_vkGetDeviceGroupSurfacePresentModesKHR);
}
- if (should_check(create_info.enabled_extensions, device, "VK_KHR_display_swapchain")) {
+ if (should_check(enabled_extensions, device, "VK_KHR_display_swapchain")) {
if (string_eq(pName, "vkCreateSharedSwapchainsKHR")) return to_vkVoidFunction(test_vkCreateSharedSwapchainsKHR);
}
- if (should_check(create_info.enabled_extensions, device, "VK_KHR_device_group")) {
+ if (should_check(enabled_extensions, device, "VK_KHR_device_group")) {
if (string_eq(pName, "vkGetDeviceGroupSurfacePresentModesKHR"))
return to_vkVoidFunction(test_vkGetDeviceGroupSurfacePresentModesKHR);
}
- if (should_check(create_info.enabled_extensions, device, "VK_EXT_debug_marker")) {
+ if (should_check(enabled_extensions, device, "VK_EXT_debug_marker")) {
if (string_eq(pName, "vkDebugMarkerSetObjectTagEXT")) return to_vkVoidFunction(test_vkDebugMarkerSetObjectTagEXT);
if (string_eq(pName, "vkDebugMarkerSetObjectNameEXT")) return to_vkVoidFunction(test_vkDebugMarkerSetObjectNameEXT);
if (string_eq(pName, "vkCmdDebugMarkerBeginEXT")) return to_vkVoidFunction(test_vkCmdDebugMarkerBeginEXT);
@@ -1757,13 +1764,21 @@
if (string_eq(pName, "vkCmdEndDebugUtilsLabelEXT")) return to_vkVoidFunction(test_vkCmdEndDebugUtilsLabelEXT);
if (string_eq(pName, "vkCmdInsertDebugUtilsLabelEXT")) return to_vkVoidFunction(test_vkCmdInsertDebugUtilsLabelEXT);
}
- // look for device functions setup from a test
- for (const auto& phys_dev : icd.physical_devices) {
- for (const auto& function : phys_dev.known_device_functions) {
+ if (found_device.found) {
+ // look for device functions setup from a test
+ for (const auto& function : icd.physical_devices.at(found_device.phys_dev).known_device_functions) {
if (function.name == pName) {
return to_vkVoidFunction(function.function);
}
}
+ } else {
+ for (const auto& [handle, phys_dev] : icd.physical_devices) {
+ for (const auto& function : phys_dev.known_device_functions) {
+ if (function.name == pName) {
+ return to_vkVoidFunction(function.function);
+ }
+ }
+ }
}
return nullptr;
}
diff --git a/tests/framework/icd/test_icd.h b/tests/framework/icd/test_icd.h
index 57ee27d..d84f4f8 100644
--- a/tests/framework/icd/test_icd.h
+++ b/tests/framework/icd/test_icd.h
@@ -30,6 +30,7 @@
#include <array>
#include <filesystem>
#include <ostream>
+#include <unordered_map>
#include "util/dispatchable_handle.h"
#include "util/platform_wsi.h"
@@ -130,6 +131,9 @@
PhysicalDevice&& finish() { return std::move(*this); }
+ // Defines the order this physical device appears in vkEnumeratePhysicalDevices
+ uint32_t iteration_order = 0;
+
// Objects created from this physical device
std::vector<VkDevice> device_handles;
std::vector<DeviceCreateInfo> device_create_infos;
@@ -149,9 +153,14 @@
struct PhysicalDeviceGroup {
PhysicalDeviceGroup() {}
PhysicalDeviceGroup(PhysicalDevice const& physical_device) { physical_device_handles.push_back(&physical_device); }
+ PhysicalDeviceGroup(PhysicalDevice const* physical_device) { physical_device_handles.push_back(physical_device); }
PhysicalDeviceGroup(std::vector<PhysicalDevice*> const& physical_devices) {
physical_device_handles.insert(physical_device_handles.end(), physical_devices.begin(), physical_devices.end());
}
+ PhysicalDeviceGroup& use_physical_device(PhysicalDevice const* physical_device) {
+ physical_device_handles.push_back(physical_device);
+ return *this;
+ }
PhysicalDeviceGroup& use_physical_device(PhysicalDevice const& physical_device) {
physical_device_handles.push_back(&physical_device);
return *this;
@@ -197,7 +206,31 @@
BUILDER_VECTOR(Extension, instance_extensions, instance_extension)
std::vector<Extension> enabled_instance_extensions;
- BUILDER_VECTOR_MOVE_ONLY(PhysicalDevice, physical_devices, physical_device);
+ std::unordered_map<VkPhysicalDevice, PhysicalDevice> physical_devices;
+ TestICD& add_physical_device(PhysicalDevice&& physical_device) {
+ physical_device.iteration_order = physical_devices.size();
+ physical_devices.emplace(physical_device.vk_physical_device.handle, std::move(physical_device));
+ return *this;
+ }
+
+ PhysicalDevice& add_and_get_physical_device(PhysicalDevice&& physical_device) {
+ VkPhysicalDevice pd = physical_device.vk_physical_device.handle;
+ physical_device.iteration_order = physical_devices.size();
+ physical_devices.emplace(physical_device.vk_physical_device.handle, std::move(physical_device));
+ return physical_devices.at(pd);
+ }
+
+ PhysicalDevice& add_physical_device_at_index(size_t index, PhysicalDevice&& physical_device) {
+ VkPhysicalDevice pd = physical_device.vk_physical_device.handle;
+ physical_device.iteration_order = index;
+ for (auto& [handle, phys_dev] : physical_devices) {
+ if (phys_dev.iteration_order >= index) {
+ phys_dev.iteration_order++;
+ }
+ }
+ physical_devices.emplace(physical_device.vk_physical_device.handle, std::move(physical_device));
+ return physical_devices.at(pd);
+ }
BUILDER_VECTOR(PhysicalDeviceGroup, physical_device_groups, physical_device_group);
@@ -237,6 +270,10 @@
return info;
}
+ // Speedup looking for physical devices by not having to iterate through the entire physical_device map to find a particular
+ // physical device
+ std::unordered_map<VkDevice, VkPhysicalDevice> device_to_physical_device_map;
+
#if defined(WIN32)
BUILDER_VALUE(LUID, adapterLUID)
#endif // defined(WIN32)
diff --git a/tests/loader_alloc_callback_tests.cpp b/tests/loader_alloc_callback_tests.cpp
index f9eba0f..1a2c3c4 100644
--- a/tests/loader_alloc_callback_tests.cpp
+++ b/tests/loader_alloc_callback_tests.cpp
@@ -714,8 +714,7 @@
.set_library_arch(sizeof(void*) == 8 ? "64" : "32"))
.set_icd_api_version(VK_API_VERSION_1_1)
.add_instance_extension("VK_KHR_get_physical_device_properties2")
- .add_physical_device("physical_device_0")
- .physical_devices.at(0)
+ .add_and_get_physical_device("physical_device_0")
.add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, false})
.add_extensions({"VK_EXT_one", "VK_EXT_two", "VK_EXT_three", "VK_EXT_four", "VK_EXT_five"});
}
@@ -880,7 +879,7 @@
auto& driver = env.reset_icd();
for (uint32_t i = 0; i < physical_dev_count; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i))
+ driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i))
.add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, false});
}
MemoryTracker tracker{{false, 0, true, fail_index}};
@@ -902,7 +901,7 @@
ASSERT_EQ(physical_dev_count, returned_physical_count);
for (uint32_t i = 0; i < 2; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(physical_dev_count))
+ driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(physical_dev_count))
.add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, false});
physical_dev_count += 1;
}
@@ -976,7 +975,7 @@
for (uint32_t i = 0; i < 2; i++) {
auto& driver = env.get_test_icd(i);
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i))
+ driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i))
.add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, false});
}
diff --git a/tests/loader_debug_ext_tests.cpp b/tests/loader_debug_ext_tests.cpp
index aa6b7f0..bb068a8 100644
--- a/tests/loader_debug_ext_tests.cpp
+++ b/tests/loader_debug_ext_tests.cpp
@@ -53,8 +53,8 @@
env = std::unique_ptr<FrameworkEnvironment>(new FrameworkEnvironment());
for (uint32_t icd = 0; icd < 3; ++icd) {
env->add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA, VK_API_VERSION_1_0));
- env->get_test_icd(icd).physical_devices.push_back({});
- env->get_test_icd(icd).physical_devices.push_back({});
+ env->get_test_icd(icd).add_physical_device({});
+ env->get_test_icd(icd).add_physical_device({});
}
// Initialize the expected output
allow_any_message = false;
@@ -387,8 +387,8 @@
env = std::unique_ptr<FrameworkEnvironment>(new FrameworkEnvironment());
for (uint32_t icd = 0; icd < 3; ++icd) {
env->add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA, VK_API_VERSION_1_0));
- env->get_test_icd(icd).physical_devices.push_back({});
- env->get_test_icd(icd).physical_devices.push_back({});
+ env->get_test_icd(icd).add_physical_device({});
+ env->get_test_icd(icd).add_physical_device({});
}
// Initialize the expected output
allow_any_message = false;
@@ -1041,9 +1041,8 @@
TEST(GetProcAddr, DebugFuncsWithTerminator) {
FrameworkEnvironment env{};
- auto& driver =
- env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).setup_WSI().add_physical_device("physical_device_0");
- driver.physical_devices.at(0).add_extensions({"VK_KHR_swapchain"});
+ auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).setup_WSI();
+ auto& phys_dev = driver.add_and_get_physical_device("physical_device_0").add_extensions({"VK_KHR_swapchain"});
// Hardware doesn't support the debug extensions
// Use getDeviceProcAddr & vary enabling the debug extensions
@@ -1056,7 +1055,7 @@
// Now set the hardware to support the extensions and run the situations again
driver.add_instance_extensions({"VK_EXT_debug_utils", "VK_EXT_debug_report"});
- driver.physical_devices.at(0).add_extensions({"VK_EXT_debug_marker"});
+ phys_dev.add_extensions({"VK_EXT_debug_marker"});
// Use getDeviceProcAddr & vary enabling the debug extensions
ASSERT_NO_FATAL_FAILURE(CheckDeviceFunctions(env, false, false, true));
@@ -1069,9 +1068,10 @@
TEST(GetProcAddr, DebugFuncsWithTrampoline) {
FrameworkEnvironment env{};
- auto& driver =
- env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).setup_WSI().add_physical_device("physical_device_0");
- driver.physical_devices.at(0).add_extensions({"VK_KHR_swapchain"});
+ auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA))
+ .setup_WSI()
+ .add_and_get_physical_device("physical_device_0")
+ .add_extensions({"VK_KHR_swapchain"});
// Hardware doesn't support the debug extensions
// Use getDeviceProcAddr & vary enabling the debug extensions
@@ -1103,9 +1103,10 @@
TEST(GetProcAddr, DebugFuncsWithDebugExtsForceAdded) {
FrameworkEnvironment env{};
- auto& driver =
- env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).setup_WSI().add_physical_device("physical_device_0");
- driver.physical_devices.at(0).add_extensions({"VK_KHR_swapchain"});
+ auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA))
+ .setup_WSI()
+ .add_and_get_physical_device("physical_device_0")
+ .add_extensions({"VK_KHR_swapchain"});
// Hardware doesn't support the debug extensions
// Use getDeviceProcAddr & vary enabling the debug extensions
diff --git a/tests/loader_envvar_tests.cpp b/tests/loader_envvar_tests.cpp
index 85a23dd..a73b5af 100644
--- a/tests/loader_envvar_tests.cpp
+++ b/tests/loader_envvar_tests.cpp
@@ -256,7 +256,7 @@
TEST(EnvVarICDOverrideSetup, TestOnlyAddDriverEnvVar) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_EXPORT_NONE).set_discovery_type(ManifestDiscoveryType::add_env_var));
- env.get_test_icd(0).physical_devices.emplace_back("pd0");
+ env.get_test_icd(0).add_and_get_physical_device("pd0");
InstWrapper inst{env.vulkan_functions};
FillDebugUtilsCreateDetails(inst.create_info, env.debug_log);
@@ -272,7 +272,7 @@
TEST(EnvVarICDOverrideSetup, TestOnlyAddDriverEnvVarRunningWithElevatedPrivileges) {
FrameworkEnvironment env{FrameworkSettings{}.set_run_as_if_with_elevated_privleges(true)};
env.add_icd(TestICDDetails(TEST_ICD_PATH_EXPORT_NONE).set_discovery_type(ManifestDiscoveryType::add_env_var));
- env.get_test_icd(0).physical_devices.emplace_back("pd0");
+ env.get_test_icd(0).add_and_get_physical_device("pd0");
InstWrapper inst{env.vulkan_functions};
FillDebugUtilsCreateDetails(inst.create_info, env.debug_log);
diff --git a/tests/loader_get_proc_addr_tests.cpp b/tests/loader_get_proc_addr_tests.cpp
index a2fe578..88c7613 100644
--- a/tests/loader_get_proc_addr_tests.cpp
+++ b/tests/loader_get_proc_addr_tests.cpp
@@ -202,8 +202,9 @@
// and return VK_SUCCESS to maintain previous behavior.
TEST(GetDeviceProcAddr, SwapchainFuncsWithTerminator) {
FrameworkEnvironment env{};
- auto& driver =
- env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).setup_WSI().add_physical_device("physical_device_0");
+ auto& test_physical_device = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA))
+ .setup_WSI()
+ .add_and_get_physical_device("physical_device_0");
InstWrapper inst(env.vulkan_functions);
inst.create_info.add_extension("VK_EXT_debug_utils");
@@ -250,7 +251,7 @@
log.logger.clear();
ASSERT_FALSE(dev_funcs.vkDestroySwapchainKHR);
}
- driver.physical_devices.at(0).add_extensions({"VK_KHR_swapchain", "VK_KHR_display_swapchain", "VK_EXT_debug_marker"});
+ test_physical_device.add_extensions({"VK_KHR_swapchain", "VK_KHR_display_swapchain", "VK_EXT_debug_marker"});
{
DeviceWrapper dev{inst};
dev.create_info.add_extensions({"VK_KHR_swapchain", "VK_KHR_display_swapchain", "VK_EXT_debug_marker"});
@@ -328,15 +329,15 @@
TEST(GetDeviceProcAddr, AppQueries11FunctionsWhileOnlyEnabling10) {
FrameworkEnvironment env{};
- auto& driver =
+ auto& test_physical_device =
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1))
.set_icd_api_version(VK_API_VERSION_1_1)
- .add_physical_device(
+ .add_and_get_physical_device(
PhysicalDevice{}.set_api_version(VK_API_VERSION_1_1).add_extension(VK_KHR_MAINTENANCE_5_EXTENSION_NAME).finish());
std::vector<const char*> functions = {"vkGetDeviceQueue2", "vkCmdDispatchBase", "vkCreateDescriptorUpdateTemplate"};
for (const auto& f : functions) {
- driver.physical_devices.back().add_device_function(VulkanFunction{f, [] {}});
+ test_physical_device.add_device_function(VulkanFunction{f, [] {}});
}
{ // doesn't enable the feature or extension
InstWrapper inst{env.vulkan_functions};
@@ -382,15 +383,15 @@
TEST(GetDeviceProcAddr, AppQueries12FunctionsWhileOnlyEnabling11) {
FrameworkEnvironment env{};
- auto& driver =
+ auto& test_physical_device =
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_2))
.set_icd_api_version(VK_API_VERSION_1_2)
- .add_physical_device(
+ .add_and_get_physical_device(
PhysicalDevice{}.set_api_version(VK_API_VERSION_1_2).add_extension(VK_KHR_MAINTENANCE_5_EXTENSION_NAME).finish());
std::vector<const char*> functions = {"vkCmdDrawIndirectCount", "vkCmdNextSubpass2", "vkGetBufferDeviceAddress",
"vkGetDeviceMemoryOpaqueCaptureAddress"};
for (const auto& f : functions) {
- driver.physical_devices.back().add_device_function(VulkanFunction{f, [] {}});
+ test_physical_device.add_device_function(VulkanFunction{f, [] {}});
}
{ // doesn't enable the feature or extension
InstWrapper inst{env.vulkan_functions};
@@ -439,16 +440,16 @@
TEST(GetDeviceProcAddr, AppQueries13FunctionsWhileOnlyEnabling12) {
FrameworkEnvironment env{};
- auto& driver =
+ auto& test_physical_device =
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_3))
.set_icd_api_version(VK_API_VERSION_1_3)
- .add_physical_device(
+ .add_and_get_physical_device(
PhysicalDevice{}.set_api_version(VK_API_VERSION_1_3).add_extension(VK_KHR_MAINTENANCE_5_EXTENSION_NAME).finish());
std::vector<const char*> functions = {"vkCreatePrivateDataSlot", "vkGetDeviceBufferMemoryRequirements", "vkCmdWaitEvents2",
"vkGetDeviceImageSparseMemoryRequirements"};
for (const auto& f : functions) {
- driver.physical_devices.back().add_device_function(VulkanFunction{f, [] {}});
+ test_physical_device.add_device_function(VulkanFunction{f, [] {}});
}
{ // doesn't enable the feature or extension
InstWrapper inst{env.vulkan_functions};
diff --git a/tests/loader_layer_tests.cpp b/tests/loader_layer_tests.cpp
index 3babc59..a988509 100644
--- a/tests/loader_layer_tests.cpp
+++ b/tests/loader_layer_tests.cpp
@@ -4803,6 +4803,7 @@
VkPhysicalDeviceProperties properties{};
properties.apiVersion = VK_API_VERSION_1_2;
properties.vendorID = 0x11000000 + (icd << 6);
+ std::array<PhysicalDevice*, 3> added_phys_devs;
for (uint32_t dev = 0; dev < 3; ++dev) {
properties.deviceID = properties.vendorID + dev;
properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
@@ -4812,12 +4813,11 @@
#else
strncpy(properties.deviceName, dev_name.c_str(), VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
#endif
- cur_icd.add_physical_device({});
- cur_icd.physical_devices.back().set_properties(properties);
+ added_phys_devs[dev] = &cur_icd.add_and_get_physical_device({}).set_properties(properties);
}
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[0]);
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[1]);
- cur_icd.physical_device_groups.back().use_physical_device(cur_icd.physical_devices[2]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[0]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[1]);
+ cur_icd.physical_device_groups.back().use_physical_device(added_phys_devs[2]);
}
const uint32_t icd_devices = 6;
@@ -4880,6 +4880,7 @@
VkPhysicalDeviceProperties properties{};
properties.apiVersion = VK_API_VERSION_1_2;
properties.vendorID = 0x11000000 + (icd << 6);
+ std::array<PhysicalDevice*, 3> added_phys_devs;
for (uint32_t dev = 0; dev < 3; ++dev) {
properties.deviceID = properties.vendorID + dev;
properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
@@ -4889,12 +4890,11 @@
#else
strncpy(properties.deviceName, dev_name.c_str(), VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
#endif
- cur_icd.add_physical_device({});
- cur_icd.physical_devices.back().set_properties(properties);
+ added_phys_devs[dev] = &cur_icd.add_and_get_physical_device({}).set_properties(properties);
}
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[0]);
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[1]);
- cur_icd.physical_device_groups.back().use_physical_device(cur_icd.physical_devices[2]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[0]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[1]);
+ cur_icd.physical_device_groups.back().use_physical_device(added_phys_devs[2]);
}
const uint32_t icd_devices = 6;
@@ -4930,6 +4930,7 @@
VkPhysicalDeviceProperties properties{};
properties.apiVersion = VK_API_VERSION_1_2;
properties.vendorID = 0x11000000 + (icd << 6);
+ std::array<PhysicalDevice*, 3> added_phys_devs;
for (uint32_t dev = 0; dev < 3; ++dev) {
properties.deviceID = properties.vendorID + dev;
properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
@@ -4939,12 +4940,11 @@
#else
strncpy(properties.deviceName, dev_name.c_str(), VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
#endif
- cur_icd.add_physical_device({});
- cur_icd.physical_devices.back().set_properties(properties);
+ added_phys_devs[dev] = &cur_icd.add_and_get_physical_device({}).set_properties(properties);
}
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[0]);
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[1]);
- cur_icd.physical_device_groups.back().use_physical_device(cur_icd.physical_devices[2]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[0]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[1]);
+ cur_icd.physical_device_groups.back().use_physical_device(added_phys_devs[2]);
}
const uint32_t icd_devices = 6;
@@ -4980,6 +4980,7 @@
VkPhysicalDeviceProperties properties{};
properties.apiVersion = VK_API_VERSION_1_2;
properties.vendorID = 0x11000000 + (icd << 6);
+ std::array<PhysicalDevice*, 3> added_phys_devs;
for (uint32_t dev = 0; dev < 3; ++dev) {
properties.deviceID = properties.vendorID + dev;
properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
@@ -4989,12 +4990,11 @@
#else
strncpy(properties.deviceName, dev_name.c_str(), VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
#endif
- cur_icd.add_physical_device({});
- cur_icd.physical_devices.back().set_properties(properties);
+ added_phys_devs[dev] = &cur_icd.add_and_get_physical_device({}).set_properties(properties);
}
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[0]);
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[1]);
- cur_icd.physical_device_groups.back().use_physical_device(cur_icd.physical_devices[2]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[0]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[1]);
+ cur_icd.physical_device_groups.back().use_physical_device(added_phys_devs[2]);
}
const uint32_t icd_devices = 6;
@@ -5056,6 +5056,7 @@
VkPhysicalDeviceProperties properties{};
properties.apiVersion = VK_API_VERSION_1_2;
properties.vendorID = 0x11000000 + (icd << 6);
+ std::array<PhysicalDevice*, 3> added_phys_devs;
for (uint32_t dev = 0; dev < 3; ++dev) {
properties.deviceID = properties.vendorID + dev;
properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
@@ -5065,12 +5066,11 @@
#else
strncpy(properties.deviceName, dev_name.c_str(), VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
#endif
- cur_icd.add_physical_device({});
- cur_icd.physical_devices.back().set_properties(properties);
+ added_phys_devs[dev] = &cur_icd.add_and_get_physical_device({}).set_properties(properties);
}
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[0]);
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[1]);
- cur_icd.physical_device_groups.back().use_physical_device(cur_icd.physical_devices[2]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[0]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[1]);
+ cur_icd.physical_device_groups.back().use_physical_device(added_phys_devs[2]);
}
const uint32_t icd_groups = 4;
@@ -5143,6 +5143,7 @@
VkPhysicalDeviceProperties properties{};
properties.apiVersion = VK_API_VERSION_1_2;
properties.vendorID = 0x11000000 + (icd << 6);
+ std::array<PhysicalDevice*, 3> added_phys_devs;
for (uint32_t dev = 0; dev < 3; ++dev) {
properties.deviceID = properties.vendorID + dev;
properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
@@ -5152,12 +5153,11 @@
#else
strncpy(properties.deviceName, dev_name.c_str(), VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
#endif
- cur_icd.add_physical_device({});
- cur_icd.physical_devices.back().set_properties(properties);
+ added_phys_devs[dev] = &cur_icd.add_and_get_physical_device({}).set_properties(properties);
}
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[0]);
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[1]);
- cur_icd.physical_device_groups.back().use_physical_device(cur_icd.physical_devices[2]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[0]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[1]);
+ cur_icd.physical_device_groups.back().use_physical_device(added_phys_devs[2]);
}
const uint32_t icd_groups = 3;
@@ -5195,6 +5195,7 @@
VkPhysicalDeviceProperties properties{};
properties.apiVersion = VK_API_VERSION_1_2;
properties.vendorID = 0x11000000 + (icd << 6);
+ std::array<PhysicalDevice*, 3> added_phys_devs;
for (uint32_t dev = 0; dev < 3; ++dev) {
properties.deviceID = properties.vendorID + dev;
properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
@@ -5204,12 +5205,11 @@
#else
strncpy(properties.deviceName, dev_name.c_str(), VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
#endif
- cur_icd.add_physical_device({});
- cur_icd.physical_devices.back().set_properties(properties);
+ added_phys_devs[dev] = &cur_icd.add_and_get_physical_device({}).set_properties(properties);
}
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[0]);
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[1]);
- cur_icd.physical_device_groups.back().use_physical_device(cur_icd.physical_devices[2]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[0]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[1]);
+ cur_icd.physical_device_groups.back().use_physical_device(added_phys_devs[2]);
}
const uint32_t icd_groups = 4;
@@ -5247,6 +5247,7 @@
VkPhysicalDeviceProperties properties{};
properties.apiVersion = VK_API_VERSION_1_2;
properties.vendorID = 0x11000000 + (icd << 6);
+ std::array<PhysicalDevice*, 3> added_phys_devs;
for (uint32_t dev = 0; dev < 3; ++dev) {
properties.deviceID = properties.vendorID + dev;
properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
@@ -5256,12 +5257,11 @@
#else
strncpy(properties.deviceName, dev_name.c_str(), VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
#endif
- cur_icd.add_physical_device({});
- cur_icd.physical_devices.back().set_properties(properties);
+ added_phys_devs[dev] = &cur_icd.add_and_get_physical_device({}).set_properties(properties);
}
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[0]);
- cur_icd.physical_device_groups.back().use_physical_device(cur_icd.physical_devices[1]);
- cur_icd.physical_device_groups.emplace_back(cur_icd.physical_devices[2]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[0]);
+ cur_icd.physical_device_groups.back().use_physical_device(added_phys_devs[1]);
+ cur_icd.physical_device_groups.emplace_back(added_phys_devs[2]);
}
const uint32_t icd_groups = 4;
diff --git a/tests/loader_phys_dev_inst_ext_tests.cpp b/tests/loader_phys_dev_inst_ext_tests.cpp
index 00c1eaf..15bd925 100644
--- a/tests/loader_phys_dev_inst_ext_tests.cpp
+++ b/tests/loader_phys_dev_inst_ext_tests.cpp
@@ -60,7 +60,7 @@
TEST(LoaderInstPhysDevExts, PhysDevProps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -73,7 +73,7 @@
TEST(LoaderInstPhysDevExts, PhysDevProps2KHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -87,9 +87,9 @@
TEST(LoaderInstPhysDevExts, PhysDevProps2KHRInstanceAndICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_API_VERSION_1_0, 5, 123);
+ FillInRandomDeviceProps(test_physical_device.properties, VK_API_VERSION_1_0, 5, 123);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -125,9 +125,9 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA, VK_API_VERSION_1_1));
env.get_test_icd(0).icd_api_version = VK_API_VERSION_1_1;
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_API_VERSION_1_1, 5, 123);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device.properties, VK_API_VERSION_1_1, 5, 123);
{
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -227,9 +227,9 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA, VK_API_VERSION_1_0));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_API_VERSION_1_0, 5, 123);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device.properties, VK_API_VERSION_1_0, 5, 123);
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -312,8 +312,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -415,7 +414,7 @@
TEST(LoaderInstPhysDevExts, PhysDevFeats2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -428,7 +427,7 @@
TEST(LoaderInstPhysDevExts, PhysDevFeatsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -443,8 +442,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomFeatures(env.get_test_icd(0).physical_devices.back().features);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomFeatures(test_physical_device.features);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -473,10 +472,10 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA, VK_API_VERSION_1_1));
env.get_test_icd(0).icd_api_version = VK_API_VERSION_1_1;
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- env.get_test_icd(0).physical_devices.back().set_api_version(VK_API_VERSION_1_1);
- FillInRandomFeatures(env.get_test_icd(0).physical_devices.back().features);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ test_physical_device.set_api_version(VK_API_VERSION_1_1);
+ FillInRandomFeatures(test_physical_device.features);
{
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -556,9 +555,9 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA, VK_API_VERSION_1_0));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- FillInRandomFeatures(env.get_test_icd(0).physical_devices.back().features);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ FillInRandomFeatures(test_physical_device.features);
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -628,8 +627,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -678,7 +676,7 @@
TEST(LoaderInstPhysDevExts, PhysDevFormatProps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -692,7 +690,7 @@
TEST(LoaderInstPhysDevExts, PhysDevFormatPropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -708,8 +706,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomFormatProperties(env.get_test_icd(0).physical_devices.back().format_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomFormatProperties(test_physical_device.format_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extensions(
@@ -745,10 +743,10 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA, VK_API_VERSION_1_1));
env.get_test_icd(0).icd_api_version = VK_API_VERSION_1_1;
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- env.get_test_icd(0).physical_devices.back().set_api_version(VK_API_VERSION_1_1);
- FillInRandomFormatProperties(env.get_test_icd(0).physical_devices.back().format_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ test_physical_device.set_api_version(VK_API_VERSION_1_1);
+ FillInRandomFormatProperties(test_physical_device.format_properties);
{
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -834,9 +832,9 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- FillInRandomFormatProperties(env.get_test_icd(0).physical_devices.back().format_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ FillInRandomFormatProperties(test_physical_device.format_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -912,8 +910,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -966,7 +963,7 @@
TEST(LoaderInstPhysDevExts, PhysDevImageFormatProps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -980,7 +977,7 @@
TEST(LoaderInstPhysDevExts, PhysDevImageFormatPropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -996,8 +993,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomImageFormatData(env.get_test_icd(0).physical_devices.back().image_format_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomImageFormatData(test_physical_device.image_format_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -1046,9 +1043,9 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).icd_api_version = VK_API_VERSION_1_1;
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- FillInRandomImageFormatData(env.get_test_icd(0).physical_devices.back().image_format_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ FillInRandomImageFormatData(test_physical_device.image_format_properties);
{
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -1189,9 +1186,9 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- FillInRandomImageFormatData(env.get_test_icd(0).physical_devices.back().image_format_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ FillInRandomImageFormatData(test_physical_device.image_format_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -1289,8 +1286,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -1349,7 +1345,7 @@
TEST(LoaderInstPhysDevExts, PhysDevMemoryProps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -1363,7 +1359,7 @@
TEST(LoaderInstPhysDevExts, PhysDevMemoryPropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -1393,8 +1389,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomMemoryData(env.get_test_icd(0).physical_devices.back().memory_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomMemoryData(test_physical_device.memory_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -1425,9 +1421,9 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).icd_api_version = VK_API_VERSION_1_1;
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- FillInRandomMemoryData(env.get_test_icd(0).physical_devices.back().memory_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ FillInRandomMemoryData(test_physical_device.memory_properties);
{
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -1508,9 +1504,9 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- FillInRandomMemoryData(env.get_test_icd(0).physical_devices.back().memory_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ FillInRandomMemoryData(test_physical_device.memory_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -1580,8 +1576,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -1621,7 +1616,7 @@
TEST(LoaderInstPhysDevExts, PhysDevQueueFamilyProps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -1635,7 +1630,7 @@
TEST(LoaderInstPhysDevExts, PhysDevQueueFamilyPropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -1666,8 +1661,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- uint32_t num_fam = FillInRandomQueueFamilyData(env.get_test_icd(0).physical_devices.back().queue_family_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ uint32_t num_fam = FillInRandomQueueFamilyData(test_physical_device.queue_family_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -1707,9 +1702,9 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).icd_api_version = VK_API_VERSION_1_1;
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- uint32_t num_fam = FillInRandomQueueFamilyData(env.get_test_icd(0).physical_devices.back().queue_family_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ uint32_t num_fam = FillInRandomQueueFamilyData(test_physical_device.queue_family_properties);
{
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -1820,9 +1815,9 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- uint32_t num_fam = FillInRandomQueueFamilyData(env.get_test_icd(0).physical_devices.back().queue_family_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ uint32_t num_fam = FillInRandomQueueFamilyData(test_physical_device.queue_family_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -1907,8 +1902,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -1956,7 +1950,7 @@
TEST(LoaderInstPhysDevExts, PhysDevSparseImageFormatProps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -1970,7 +1964,7 @@
TEST(LoaderInstPhysDevExts, PhysDevSparseImageFormatPropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -1997,8 +1991,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomSparseImageFormatData(env.get_test_icd(0).physical_devices.back().sparse_image_format_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomSparseImageFormatData(test_physical_device.sparse_image_format_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -2052,9 +2046,9 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).icd_api_version = VK_API_VERSION_1_1;
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- FillInRandomSparseImageFormatData(env.get_test_icd(0).physical_devices.back().sparse_image_format_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ FillInRandomSparseImageFormatData(test_physical_device.sparse_image_format_properties);
{
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -2207,9 +2201,9 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
- FillInRandomSparseImageFormatData(env.get_test_icd(0).physical_devices.back().sparse_image_format_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 0});
+ FillInRandomSparseImageFormatData(test_physical_device.sparse_image_format_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -2309,8 +2303,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -2378,7 +2371,7 @@
TEST(LoaderInstPhysDevExts, PhysDevExtBufPropsKHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -2392,7 +2385,7 @@
TEST(LoaderInstPhysDevExts, PhysDevExtBufPropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME);
@@ -2415,8 +2408,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomExtMemoryData(env.get_test_icd(0).physical_devices.back().external_memory_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomExtMemoryData(test_physical_device.external_memory_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME);
@@ -2434,7 +2427,7 @@
VkPhysicalDeviceExternalBufferInfoKHR info{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR};
VkExternalBufferPropertiesKHR props{VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR};
GetPhysicalDeviceExternalBufferPropertiesKHR(physical_device, &info, &props);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().external_memory_properties, props.externalMemoryProperties);
+ ASSERT_EQ(test_physical_device.external_memory_properties, props.externalMemoryProperties);
}
// Test vkGetPhysicalDeviceExternalBufferProperties where instance supports, an ICD, and a device under that ICD
@@ -2445,9 +2438,9 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).icd_api_version = VK_API_VERSION_1_1;
env.get_test_icd(0).add_instance_extension({VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, 0});
- FillInRandomExtMemoryData(env.get_test_icd(0).physical_devices.back().external_memory_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, 0});
+ FillInRandomExtMemoryData(test_physical_device.external_memory_properties);
{
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -2465,7 +2458,7 @@
VkPhysicalDeviceExternalBufferInfo info{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO};
VkExternalBufferProperties props{VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES};
GetPhysicalDeviceExternalBufferProperties(physical_device, &info, &props);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().external_memory_properties, props.externalMemoryProperties);
+ ASSERT_EQ(test_physical_device.external_memory_properties, props.externalMemoryProperties);
}
{ // Now do the same logic but the application didn't enable 1.0 or the extension so they get the emulated call
InstWrapper instance(env.vulkan_functions);
@@ -2515,7 +2508,7 @@
VkPhysicalDeviceExternalBufferInfo info{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO};
VkExternalBufferProperties props{VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES};
GetPhysicalDeviceExternalBufferProperties(physical_device, &info, &props);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().external_memory_properties, props.externalMemoryProperties);
+ ASSERT_EQ(test_physical_device.external_memory_properties, props.externalMemoryProperties);
ASSERT_FALSE(log.find("Emulating call in ICD"));
}
}
@@ -2555,8 +2548,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -2590,8 +2582,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -2627,7 +2618,7 @@
TEST(LoaderInstPhysDevExts, PhysDevExtSemPropsKHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -2641,7 +2632,7 @@
TEST(LoaderInstPhysDevExts, PhysDevExtSemPropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME);
@@ -2666,8 +2657,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomExtSemData(env.get_test_icd(0).physical_devices.back().external_semaphore_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomExtSemData(test_physical_device.external_semaphore_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME);
@@ -2685,7 +2676,7 @@
VkPhysicalDeviceExternalSemaphoreInfoKHR info{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR};
VkExternalSemaphorePropertiesKHR props{VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR};
GetPhysicalDeviceExternalSemaphorePropertiesKHR(physical_device, &info, &props);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().external_semaphore_properties, props);
+ ASSERT_EQ(test_physical_device.external_semaphore_properties, props);
}
// Test vkGetPhysicalDeviceExternalSemaphoreProperties where instance supports, an ICD, and a device under that ICD
@@ -2696,9 +2687,9 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).icd_api_version = VK_API_VERSION_1_1;
env.get_test_icd(0).add_instance_extension({VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME, 0});
- FillInRandomExtSemData(env.get_test_icd(0).physical_devices.back().external_semaphore_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME, 0});
+ FillInRandomExtSemData(test_physical_device.external_semaphore_properties);
{
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -2716,7 +2707,7 @@
VkPhysicalDeviceExternalSemaphoreInfo info{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO};
VkExternalSemaphoreProperties props{VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES};
GetPhysicalDeviceExternalSemaphoreProperties(physical_device, &info, &props);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().external_semaphore_properties, props);
+ ASSERT_EQ(test_physical_device.external_semaphore_properties, props);
}
{ // Now do the same logic but the application didn't enable 1.0 or the extension so they get the emulated call
InstWrapper instance(env.vulkan_functions);
@@ -2764,7 +2755,7 @@
VkPhysicalDeviceExternalSemaphoreInfo info{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO};
VkExternalSemaphoreProperties props{VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES};
GetPhysicalDeviceExternalSemaphoreProperties(physical_device, &info, &props);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().external_semaphore_properties, props);
+ ASSERT_EQ(test_physical_device.external_semaphore_properties, props);
ASSERT_FALSE(log.find("Emulating call in ICD"));
}
}
@@ -2804,8 +2795,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -2839,8 +2829,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -2875,7 +2864,7 @@
TEST(LoaderInstPhysDevExts, PhysDevExtFencePropsKHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -2889,7 +2878,7 @@
TEST(LoaderInstPhysDevExts, PhysDevExtFencePropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME);
@@ -2914,8 +2903,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomExtFenceData(env.get_test_icd(0).physical_devices.back().external_fence_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomExtFenceData(test_physical_device.external_fence_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME);
@@ -2933,7 +2922,7 @@
VkPhysicalDeviceExternalFenceInfoKHR info{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR};
VkExternalFencePropertiesKHR props{VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR};
GetPhysicalDeviceExternalFencePropertiesKHR(physical_device, &info, &props);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().external_fence_properties, props);
+ ASSERT_EQ(test_physical_device.external_fence_properties, props);
}
// Test vkGetPhysicalDeviceExternalFenceProperties where instance supports, an ICD, and a device under that ICD
@@ -2944,9 +2933,9 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).icd_api_version = VK_API_VERSION_1_1;
env.get_test_icd(0).add_instance_extension({VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME, 0});
- FillInRandomExtFenceData(env.get_test_icd(0).physical_devices.back().external_fence_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.extensions.push_back({VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME, 0});
+ FillInRandomExtFenceData(test_physical_device.external_fence_properties);
{
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -2964,7 +2953,7 @@
VkPhysicalDeviceExternalFenceInfo info{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO};
VkExternalFenceProperties props{VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES};
GetPhysicalDeviceExternalFenceProperties(physical_device, &info, &props);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().external_fence_properties, props);
+ ASSERT_EQ(test_physical_device.external_fence_properties, props);
}
{ // Now do the same logic but the application didn't enable 1.0 or the extension so they get the emulated call
InstWrapper instance(env.vulkan_functions);
@@ -3013,7 +3002,7 @@
VkPhysicalDeviceExternalFenceInfo info{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO};
VkExternalFenceProperties props{VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES};
GetPhysicalDeviceExternalFenceProperties(physical_device, &info, &props);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().external_fence_properties, props);
+ ASSERT_EQ(test_physical_device.external_fence_properties, props);
ASSERT_FALSE(log.find("Emulating call in ICD"));
}
}
@@ -3052,8 +3041,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -3087,8 +3075,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -3123,7 +3110,7 @@
TEST(LoaderInstPhysDevExts, PhysDevSurfaceCaps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -3137,7 +3124,7 @@
TEST(LoaderInstPhysDevExts, PhysDevSurfaceCaps2KHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
@@ -3174,10 +3161,10 @@
Extension third_ext{VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME};
auto& cur_icd = env.get_test_icd(0);
cur_icd.add_instance_extensions({first_ext, second_ext, third_ext});
- cur_icd.physical_devices.push_back({});
+ auto& test_physical_device = cur_icd.add_and_get_physical_device({});
cur_icd.min_icd_interface_version = 3;
cur_icd.enable_icd_wsi = true;
- FillInRandomSurfaceCapsData(env.get_test_icd(0).physical_devices.back().surface_capabilities);
+ FillInRandomSurfaceCapsData(test_physical_device.surface_capabilities);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extensions(
@@ -3257,8 +3244,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
cur_dev.extensions.push_back({VK_KHR_SURFACE_EXTENSION_NAME, 0});
cur_dev.extensions.push_back({VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME, 0});
@@ -3316,7 +3302,7 @@
TEST(LoaderInstPhysDevExts, PhysDevSurfaceFormats2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -3330,7 +3316,7 @@
TEST(LoaderInstPhysDevExts, PhysDevSurfaceFormats2KHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
@@ -3359,10 +3345,10 @@
Extension third_ext{VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME};
auto& cur_icd = env.get_test_icd(0);
cur_icd.add_instance_extensions({first_ext, second_ext, third_ext});
- cur_icd.physical_devices.push_back({});
+ auto& test_physical_device = cur_icd.add_and_get_physical_device({});
cur_icd.min_icd_interface_version = 3;
cur_icd.enable_icd_wsi = true;
- FillInRandomSurfaceFormatsData(env.get_test_icd(0).physical_devices.back().surface_formats);
+ FillInRandomSurfaceFormatsData(test_physical_device.surface_formats);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extensions(
@@ -3392,10 +3378,10 @@
std::vector<VkSurfaceFormatKHR> formats{};
uint32_t count_1 = 0;
ASSERT_EQ(VK_SUCCESS, GetPhysicalDeviceSurfaceFormatsKHR(physical_device, surface, &count_1, nullptr));
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().surface_formats.size(), count_1);
+ ASSERT_EQ(test_physical_device.surface_formats.size(), count_1);
formats.resize(count_1);
ASSERT_EQ(VK_SUCCESS, GetPhysicalDeviceSurfaceFormatsKHR(physical_device, surface, &count_1, formats.data()));
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().surface_formats.size(), count_1);
+ ASSERT_EQ(test_physical_device.surface_formats.size(), count_1);
VkPhysicalDeviceSurfaceInfo2KHR info{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR, nullptr, surface};
std::vector<VkSurfaceFormat2KHR> formats2{};
@@ -3450,8 +3436,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
cur_dev.extensions.push_back({VK_KHR_SURFACE_EXTENSION_NAME, 0});
cur_dev.extensions.push_back({VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME, 0});
@@ -3523,7 +3508,7 @@
TEST(LoaderInstPhysDevExts, PhysDevDispPropsKHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -3537,7 +3522,7 @@
TEST(LoaderInstPhysDevExts, PhysDevDispPropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_DISPLAY_EXTENSION_NAME);
@@ -3574,8 +3559,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomDisplayPropData(env.get_test_icd(0).physical_devices.back().display_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomDisplayPropData(test_physical_device.display_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
@@ -3593,12 +3578,12 @@
std::vector<VkDisplayPropertiesKHR> props{};
uint32_t prop_count = 0;
ASSERT_EQ(VK_SUCCESS, GetPhysicalDeviceDisplayPropertiesKHR(physical_device, &prop_count, nullptr));
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().display_properties.size(), prop_count);
+ ASSERT_EQ(test_physical_device.display_properties.size(), prop_count);
props.resize(prop_count);
ASSERT_EQ(VK_SUCCESS, GetPhysicalDeviceDisplayPropertiesKHR(physical_device, &prop_count, props.data()));
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().display_properties.size(), prop_count);
+ ASSERT_EQ(test_physical_device.display_properties.size(), prop_count);
- ASSERT_EQ(props, env.get_test_icd(0).physical_devices.back().display_properties);
+ ASSERT_EQ(props, test_physical_device.display_properties);
}
// Test vkGetPhysicalDeviceDisplayPropertiesKHR where instance supports it with some ICDs that both support
@@ -3637,8 +3622,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -3672,8 +3656,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -3711,7 +3694,7 @@
TEST(LoaderInstPhysDevExts, PhysDevDispPlanePropsKHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -3725,7 +3708,7 @@
TEST(LoaderInstPhysDevExts, PhysDevDispPlanePropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_DISPLAY_EXTENSION_NAME);
@@ -3750,8 +3733,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomDisplayPlanePropData(env.get_test_icd(0).physical_devices.back().display_plane_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomDisplayPlanePropData(test_physical_device.display_plane_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
@@ -3769,12 +3752,12 @@
std::vector<VkDisplayPlanePropertiesKHR> props{};
uint32_t prop_count = 0;
ASSERT_EQ(VK_SUCCESS, GetPhysicalDeviceDisplayPlanePropertiesKHR(physical_device, &prop_count, nullptr));
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().display_plane_properties.size(), prop_count);
+ ASSERT_EQ(test_physical_device.display_plane_properties.size(), prop_count);
props.resize(prop_count);
ASSERT_EQ(VK_SUCCESS, GetPhysicalDeviceDisplayPlanePropertiesKHR(physical_device, &prop_count, props.data()));
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().display_plane_properties.size(), prop_count);
+ ASSERT_EQ(test_physical_device.display_plane_properties.size(), prop_count);
- ASSERT_EQ(props, env.get_test_icd(0).physical_devices.back().display_plane_properties);
+ ASSERT_EQ(props, test_physical_device.display_plane_properties);
}
// Test vkGetPhysicalDeviceDisplayPlanePropertiesKHR where instance supports it with some ICDs that both support
@@ -3813,8 +3796,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -3848,8 +3830,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -3887,7 +3868,7 @@
TEST(LoaderInstPhysDevExts, GetDispPlaneSupDispsKHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -3901,7 +3882,7 @@
TEST(LoaderInstPhysDevExts, GetDispPlaneSupDispsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_DISPLAY_EXTENSION_NAME);
@@ -3925,8 +3906,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- GenerateRandomDisplays(env.get_test_icd(0).physical_devices.back().displays);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ GenerateRandomDisplays(test_physical_device.displays);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
@@ -3944,12 +3925,12 @@
std::vector<VkDisplayKHR> disps{};
uint32_t disp_count = 0;
ASSERT_EQ(VK_SUCCESS, GetDisplayPlaneSupportedDisplaysKHR(physical_device, 0, &disp_count, nullptr));
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().displays.size(), disp_count);
+ ASSERT_EQ(test_physical_device.displays.size(), disp_count);
disps.resize(disp_count);
ASSERT_EQ(VK_SUCCESS, GetDisplayPlaneSupportedDisplaysKHR(physical_device, 0, &disp_count, disps.data()));
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().displays.size(), disp_count);
+ ASSERT_EQ(test_physical_device.displays.size(), disp_count);
- ASSERT_EQ(disps, env.get_test_icd(0).physical_devices.back().displays);
+ ASSERT_EQ(disps, test_physical_device.displays);
}
// Test vkGetDisplayPlaneSupportedDisplaysKHR where instance supports it with some ICDs that both support
@@ -3988,8 +3969,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -4023,8 +4003,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -4062,7 +4041,7 @@
TEST(LoaderInstPhysDevExts, GetDispModePropsKHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -4075,7 +4054,7 @@
TEST(LoaderInstPhysDevExts, GetDispModePropsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_DISPLAY_EXTENSION_NAME);
@@ -4101,8 +4080,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- GenerateRandomDisplayModeProps(env.get_test_icd(0).physical_devices.back().display_mode_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ GenerateRandomDisplayModeProps(test_physical_device.display_mode_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
@@ -4119,12 +4098,12 @@
std::vector<VkDisplayModePropertiesKHR> props{};
uint32_t props_count = 0;
ASSERT_EQ(VK_SUCCESS, GetDisplayModePropertiesKHR(physical_device, VK_NULL_HANDLE, &props_count, nullptr));
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().display_mode_properties.size(), props_count);
+ ASSERT_EQ(test_physical_device.display_mode_properties.size(), props_count);
props.resize(props_count);
ASSERT_EQ(VK_SUCCESS, GetDisplayModePropertiesKHR(physical_device, VK_NULL_HANDLE, &props_count, props.data()));
- ASSERT_EQ(env.get_test_icd(0).physical_devices.back().display_mode_properties.size(), props_count);
+ ASSERT_EQ(test_physical_device.display_mode_properties.size(), props_count);
- ASSERT_EQ(props, env.get_test_icd(0).physical_devices.back().display_mode_properties);
+ ASSERT_EQ(props, test_physical_device.display_mode_properties);
}
// Test vkGetDisplayModePropertiesKHR where instance supports it with some ICDs that both support
@@ -4163,8 +4142,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -4197,8 +4175,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -4237,7 +4214,7 @@
TEST(LoaderInstPhysDevExts, GetDispModesKHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -4250,7 +4227,7 @@
TEST(LoaderInstPhysDevExts, GetDispModesKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_DISPLAY_EXTENSION_NAME);
@@ -4265,8 +4242,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.back().display_mode = CreateRandomDisplayMode();
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device.display_mode = CreateRandomDisplayMode();
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
@@ -4283,7 +4260,7 @@
VkDisplayModeKHR mode{};
VkDisplayModeCreateInfoKHR create_info{VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR};
ASSERT_EQ(VK_SUCCESS, CreateDisplayModeKHR(physical_device, VK_NULL_HANDLE, &create_info, nullptr, &mode));
- ASSERT_EQ(mode, env.get_test_icd(0).physical_devices.back().display_mode);
+ ASSERT_EQ(mode, test_physical_device.display_mode);
}
// Test vkCreateDisplayModeKHR where instance supports it with some ICDs that both support
@@ -4322,8 +4299,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -4356,8 +4332,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -4390,7 +4365,7 @@
TEST(LoaderInstPhysDevExts, GetDispPlaneCapsKHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -4403,7 +4378,7 @@
TEST(LoaderInstPhysDevExts, GetDispPlaneCapsKHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_DISPLAY_EXTENSION_NAME);
@@ -4439,8 +4414,8 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
env.get_test_icd(0).add_instance_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({});
- GenerateRandomDisplayPlaneCaps(env.get_test_icd(0).physical_devices.back().display_plane_capabilities);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ GenerateRandomDisplayPlaneCaps(test_physical_device.display_plane_capabilities);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension({VK_KHR_DISPLAY_EXTENSION_NAME});
@@ -4456,7 +4431,7 @@
VkDisplayPlaneCapabilitiesKHR caps{};
ASSERT_EQ(VK_SUCCESS, GetDisplayPlaneCapabilitiesKHR(physical_device, 0, 0, &caps));
- ASSERT_EQ(caps, env.get_test_icd(0).physical_devices.back().display_plane_capabilities);
+ ASSERT_EQ(caps, test_physical_device.display_plane_capabilities);
}
// Test vkGetDisplayPlaneCapabilitiesKHR where instance supports it with some ICDs that both support
@@ -4495,8 +4470,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
if ((icd == 0 && dev == 1) || icd == 3) {
@@ -4529,8 +4503,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -4563,7 +4536,7 @@
TEST(LoaderInstPhysDevExts, PhysDevDispProps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -4577,7 +4550,7 @@
TEST(LoaderInstPhysDevExts, PhysDevDispProps2KHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME);
@@ -4595,8 +4568,8 @@
Extension first_ext{VK_KHR_DISPLAY_EXTENSION_NAME};
Extension second_ext{VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME};
env.get_test_icd(0).add_instance_extensions({first_ext, second_ext});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomDisplayPropData(env.get_test_icd(0).physical_devices.back().display_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomDisplayPropData(test_physical_device.display_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extensions({VK_KHR_DISPLAY_EXTENSION_NAME, VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME});
@@ -4668,8 +4641,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
cur_dev.extensions.push_back({VK_KHR_DISPLAY_EXTENSION_NAME, 0});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
@@ -4723,7 +4695,7 @@
TEST(LoaderInstPhysDevExts, PhysDevDispPlaneProps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -4737,7 +4709,7 @@
TEST(LoaderInstPhysDevExts, PhysDevDispPlaneProps2KHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME);
@@ -4755,8 +4727,8 @@
Extension first_ext{VK_KHR_DISPLAY_EXTENSION_NAME};
Extension second_ext{VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME};
env.get_test_icd(0).add_instance_extensions({first_ext, second_ext});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomDisplayPlanePropData(env.get_test_icd(0).physical_devices.back().display_plane_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomDisplayPlanePropData(test_physical_device.display_plane_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extensions({VK_KHR_DISPLAY_EXTENSION_NAME, VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME});
@@ -4827,8 +4799,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
cur_dev.extensions.push_back({VK_KHR_DISPLAY_EXTENSION_NAME, 0});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
@@ -4881,7 +4852,7 @@
TEST(LoaderInstPhysDevExts, GetDispModeProps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -4894,7 +4865,7 @@
TEST(LoaderInstPhysDevExts, GetDispModeProps2KHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME);
@@ -4911,8 +4882,8 @@
Extension first_ext{VK_KHR_DISPLAY_EXTENSION_NAME};
Extension second_ext{VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME};
env.get_test_icd(0).add_instance_extensions({first_ext, second_ext});
- env.get_test_icd(0).physical_devices.push_back({});
- GenerateRandomDisplayModeProps(env.get_test_icd(0).physical_devices.back().display_mode_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ GenerateRandomDisplayModeProps(test_physical_device.display_mode_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extensions({VK_KHR_DISPLAY_EXTENSION_NAME, VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME});
@@ -4981,8 +4952,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
cur_dev.extensions.push_back({VK_KHR_DISPLAY_EXTENSION_NAME, 0});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
@@ -5033,7 +5003,7 @@
TEST(LoaderInstPhysDevExts, GetDispPlaneCaps2KHRNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -5046,7 +5016,7 @@
TEST(LoaderInstPhysDevExts, GetDispPlaneCaps2KHRNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME);
@@ -5063,8 +5033,8 @@
Extension first_ext{VK_KHR_DISPLAY_EXTENSION_NAME};
Extension second_ext{VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME};
env.get_test_icd(0).add_instance_extensions({first_ext, second_ext});
- env.get_test_icd(0).physical_devices.push_back({});
- FillInRandomDisplayPropData(env.get_test_icd(0).physical_devices.back().display_properties);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ FillInRandomDisplayPropData(test_physical_device.display_properties);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extensions({VK_KHR_DISPLAY_EXTENSION_NAME, VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME});
@@ -5125,8 +5095,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
cur_dev.extensions.push_back({VK_KHR_DISPLAY_EXTENSION_NAME, 0});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
@@ -5173,7 +5142,7 @@
TEST(LoaderInstPhysDevExts, AcquireDrmDisplayEXTNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -5186,7 +5155,7 @@
TEST(LoaderInstPhysDevExts, AcquireDrmDisplayEXTNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME);
@@ -5203,8 +5172,8 @@
Extension first_ext{VK_KHR_DISPLAY_EXTENSION_NAME};
Extension second_ext{VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME};
env.get_test_icd(0).add_instance_extensions({first_ext, second_ext});
- env.get_test_icd(0).physical_devices.push_back({});
- GenerateRandomDisplays(env.get_test_icd(0).physical_devices.back().displays);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ GenerateRandomDisplays(test_physical_device.displays);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extensions({VK_KHR_DISPLAY_EXTENSION_NAME, VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME});
@@ -5259,8 +5228,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
cur_dev.extensions.push_back({VK_KHR_DISPLAY_EXTENSION_NAME, 0});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
@@ -5294,8 +5262,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -5325,7 +5292,7 @@
TEST(LoaderInstPhysDevExts, GetDrmDisplayEXTNoSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -5338,7 +5305,7 @@
TEST(LoaderInstPhysDevExts, GetDrmDisplayEXTNoICDSupport) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(0).physical_devices.push_back({});
+ env.get_test_icd(0).add_physical_device({});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME);
@@ -5355,8 +5322,8 @@
Extension first_ext{VK_KHR_DISPLAY_EXTENSION_NAME};
Extension second_ext{VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME};
env.get_test_icd(0).add_instance_extensions({first_ext, second_ext});
- env.get_test_icd(0).physical_devices.push_back({});
- GenerateRandomDisplays(env.get_test_icd(0).physical_devices.back().displays);
+ auto& test_physical_device = env.get_test_icd(0).add_and_get_physical_device({});
+ GenerateRandomDisplays(test_physical_device.displays);
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extensions({VK_KHR_DISPLAY_EXTENSION_NAME, VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME});
@@ -5372,7 +5339,7 @@
VkDisplayKHR display = VK_NULL_HANDLE;
ASSERT_EQ(VK_SUCCESS, GetDrmDisplayEXT(physical_device, 0, 0, &display));
- ASSERT_EQ(display, env.get_test_icd(0).physical_devices.back().displays[0]);
+ ASSERT_EQ(display, test_physical_device.displays[0]);
}
// Test vkGetDrmDisplayEXT where instance supports it with some ICDs that both support
@@ -5412,8 +5379,7 @@
for (uint32_t dev = 0; dev < dev_counts[icd]; ++dev) {
uint32_t device_version = VK_API_VERSION_1_0;
- cur_icd.physical_devices.push_back({});
- auto& cur_dev = cur_icd.physical_devices.back();
+ auto& cur_dev = cur_icd.add_and_get_physical_device({});
cur_dev.extensions.push_back({VK_KHR_DISPLAY_EXTENSION_NAME, 0});
// 2nd device in ICD 0 and the one device in ICD 3 support the extension and 1.1
@@ -5447,8 +5413,7 @@
for (uint32_t icd = 0; icd < max_icd_count; ++icd) {
auto& cur_icd = env.get_test_icd(icd);
bool found = false;
- for (uint32_t pd = 0; pd < dev_counts[icd]; ++pd) {
- auto& cur_dev = cur_icd.physical_devices[pd];
+ for (auto const& [physical_device_handle, cur_dev] : cur_icd.physical_devices) {
// Find the ICD device matching the physical device we're looking at info for so we can compare the
// physical devices info with the returned info.
if (cur_dev.properties.apiVersion == pd_props.apiVersion && cur_dev.properties.deviceID == pd_props.deviceID &&
@@ -5481,18 +5446,18 @@
// Add 3 drivers each of which supports a different instance extension
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
env.get_test_icd(0).add_instance_extension({VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({"pd0"});
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, 0});
+ env.get_test_icd(0).add_and_get_physical_device({"pd0"}).extensions.push_back(
+ {VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
env.get_test_icd(1).add_instance_extension({VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME});
- env.get_test_icd(1).physical_devices.push_back({"pd1"});
- env.get_test_icd(1).physical_devices.back().extensions.push_back({VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME, 0});
+ env.get_test_icd(1).add_and_get_physical_device({"pd1"}).extensions.push_back(
+ {VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
env.get_test_icd(2).add_instance_extension({VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME});
- env.get_test_icd(2).physical_devices.push_back({"pd2"});
- env.get_test_icd(2).physical_devices.back().extensions.push_back({VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME, 0});
+ env.get_test_icd(2).add_and_get_physical_device({"pd2"}).extensions.push_back(
+ {VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME, 0});
DebugUtilsLogger log{VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT};
InstWrapper inst{env.vulkan_functions};
@@ -5535,16 +5500,13 @@
// Add 3 drivers each of which supports a different physical device extension
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
- env.get_test_icd(0).physical_devices.push_back("pd0");
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, 0});
+ env.get_test_icd(0).add_and_get_physical_device("pd0").extensions.push_back({VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
- env.get_test_icd(1).physical_devices.push_back("pd1");
- env.get_test_icd(1).physical_devices.back().extensions.push_back({VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, 0});
+ env.get_test_icd(1).add_and_get_physical_device("pd1").extensions.push_back({VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
- env.get_test_icd(2).physical_devices.push_back("pd2");
- env.get_test_icd(2).physical_devices.back().extensions.push_back({VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME, 0});
+ env.get_test_icd(2).add_and_get_physical_device("pd2").extensions.push_back({VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME, 0});
DebugUtilsLogger log{VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT};
InstWrapper inst{env.vulkan_functions};
diff --git a/tests/loader_regression_tests.cpp b/tests/loader_regression_tests.cpp
index 60b1088..dab31af 100644
--- a/tests/loader_regression_tests.cpp
+++ b/tests/loader_regression_tests.cpp
@@ -335,11 +335,12 @@
TEST(EnumerateDeviceExtensionProperties, DeviceExtensionEnumerated) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_physical_device("physical_device_0");
+ auto& test_physical_device =
+ env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_and_get_physical_device("physical_device_0");
std::array<Extension, 2> device_extensions = {Extension{"MyExtension0", 4}, Extension{"MyExtension1", 7}};
for (auto& ext : device_extensions) {
- driver.physical_devices.front().extensions.push_back(ext);
+ test_physical_device.extensions.push_back(ext);
}
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -362,11 +363,12 @@
TEST(EnumerateDeviceExtensionProperties, PropertyCountLessThanAvailable) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_physical_device("physical_device_0");
+ auto& test_physical_device =
+ env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_and_get_physical_device("physical_device_0");
std::array<Extension, 2> device_extensions = {Extension{"MyExtension0", 4}, Extension{"MyExtension1", 7}};
for (auto& ext : device_extensions) {
- driver.physical_devices.front().extensions.push_back(ext);
+ test_physical_device.extensions.push_back(ext);
}
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -482,10 +484,7 @@
std::vector<Extension> exts = {Extension{"MyDriverExtension0", 4}, Extension{"MyDriverExtension1", 7},
Extension{"MyDriverExtension2", 6}, Extension{"MyDriverExtension3", 10}};
- env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2))
- .add_physical_device("physical_device_0")
- .physical_devices.at(0)
- .add_extensions(exts);
+ env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_and_get_physical_device("physical_device_0").add_extensions(exts);
env.add_implicit_layer(ManifestLayer{}.add_layer(ManifestLayer::LayerDescription{}
.set_name("implicit_layer_name")
@@ -501,7 +500,7 @@
TEST(EnumerateDeviceExtensionProperties, ImplicitLayerPresentWithExtensions) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_physical_device({});
+ auto& test_physical_device = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_and_get_physical_device({});
std::vector<Extension> exts;
std::vector<ManifestLayer::LayerDescription::Extension> layer_exts;
@@ -518,10 +517,10 @@
auto& layer = env.get_test_layer();
layer.device_extensions = exts;
- driver.physical_devices.front().extensions.emplace_back("MyDriverExtension0", 4);
- driver.physical_devices.front().extensions.emplace_back("MyDriverExtension1", 7);
+ test_physical_device.extensions.emplace_back("MyDriverExtension0", 4);
+ test_physical_device.extensions.emplace_back("MyDriverExtension1", 7);
- exts.insert(exts.begin(), driver.physical_devices.front().extensions.begin(), driver.physical_devices.front().extensions.end());
+ exts.insert(exts.begin(), test_physical_device.extensions.begin(), test_physical_device.extensions.end());
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -532,7 +531,7 @@
TEST(EnumerateDeviceExtensionProperties, ImplicitLayerPresentWithLotsOfExtensions) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_physical_device({});
+ auto& test_physical_device = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_and_get_physical_device({});
std::vector<Extension> exts;
std::vector<ManifestLayer::LayerDescription::Extension> layer_exts;
@@ -549,12 +548,12 @@
auto& layer = env.get_test_layer();
layer.device_extensions = exts;
- driver.physical_devices.front().extensions.emplace_back("MyDriverExtension0", 4);
- driver.physical_devices.front().extensions.emplace_back("MyDriverExtension1", 7);
- driver.physical_devices.front().extensions.emplace_back("MyDriverExtension2", 6);
- driver.physical_devices.front().extensions.emplace_back("MyDriverExtension3", 9);
+ test_physical_device.extensions.emplace_back("MyDriverExtension0", 4);
+ test_physical_device.extensions.emplace_back("MyDriverExtension1", 7);
+ test_physical_device.extensions.emplace_back("MyDriverExtension2", 6);
+ test_physical_device.extensions.emplace_back("MyDriverExtension3", 9);
- exts.insert(exts.begin(), driver.physical_devices.front().extensions.begin(), driver.physical_devices.front().extensions.end());
+ exts.insert(exts.begin(), test_physical_device.extensions.begin(), test_physical_device.extensions.end());
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -617,7 +616,7 @@
TEST(EnumerateDeviceExtensionProperties, ImplicitLayerPresentWithDuplicateExtensions) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_physical_device({});
+ auto& test_physical_device = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_and_get_physical_device({});
std::vector<Extension> exts;
std::vector<ManifestLayer::LayerDescription::Extension> layer_exts;
@@ -634,14 +633,14 @@
auto& layer = env.get_test_layer();
layer.device_extensions = exts;
- driver.physical_devices.front().extensions.emplace_back("MyDriverExtension0", 4);
- driver.physical_devices.front().extensions.emplace_back("MyDriverExtension1", 7);
+ test_physical_device.extensions.emplace_back("MyDriverExtension0", 4);
+ test_physical_device.extensions.emplace_back("MyDriverExtension1", 7);
- driver.physical_devices.front().extensions.insert(driver.physical_devices.front().extensions.end(), exts.begin(), exts.end());
+ test_physical_device.extensions.insert(test_physical_device.extensions.end(), exts.begin(), exts.end());
exts.emplace_back("MyDriverExtension0", 4);
exts.emplace_back("MyDriverExtension1", 7);
- driver.physical_devices.front().extensions = exts;
+ test_physical_device.extensions = exts;
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -652,7 +651,7 @@
TEST(EnumerateDeviceExtensionProperties, ImplicitLayerPresentWithOnlyDuplicateExtensions) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_physical_device({});
+ auto& test_physical_device = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_and_get_physical_device({});
std::vector<Extension> exts;
std::vector<ManifestLayer::LayerDescription::Extension> layer_exts;
@@ -669,7 +668,7 @@
auto& layer = env.get_test_layer();
layer.device_extensions = exts;
- driver.physical_devices.front().extensions = exts;
+ test_physical_device.extensions = exts;
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -705,8 +704,8 @@
const uint32_t real_device_count = 2;
for (uint32_t i = 0; i < real_device_count; i++) {
- driver.add_physical_device(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i))
+ .extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
}
InstWrapper inst{env.vulkan_functions};
@@ -731,8 +730,8 @@
const uint32_t real_device_count = 3;
for (uint32_t i = 0; i < real_device_count; i++) {
- driver.add_physical_device(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i))
+ .extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
}
InstWrapper inst1{env.vulkan_functions};
@@ -767,8 +766,8 @@
const uint32_t real_device_count = 2;
for (uint32_t i = 0; i < real_device_count; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i))
+ .extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
}
InstWrapper inst{env.vulkan_functions};
@@ -844,7 +843,7 @@
auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).set_min_icd_interface_version(5);
for (size_t i = 0; i < 4; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
+ driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
}
InstWrapper inst{env.vulkan_functions};
@@ -870,7 +869,7 @@
auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).set_min_icd_interface_version(5);
for (size_t i = 0; i < 8; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
+ driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
}
InstWrapper inst{env.vulkan_functions};
@@ -906,7 +905,7 @@
auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).set_min_icd_interface_version(5);
for (size_t i = 0; i < 8; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
+ driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
}
InstWrapper inst{env.vulkan_functions};
@@ -941,8 +940,8 @@
FrameworkEnvironment env{};
auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).set_min_icd_interface_version(5);
- driver.physical_devices.emplace_back("physical_device_0");
- driver.physical_devices.emplace_back("physical_device_1");
+ driver.add_physical_device("physical_device_0");
+ driver.add_physical_device("physical_device_1");
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -953,8 +952,8 @@
ASSERT_EQ(VK_SUCCESS, inst->vkEnumeratePhysicalDevices(inst, &returned_physical_count, physical_device_handles_1.data()));
ASSERT_EQ(physical_count, returned_physical_count);
- driver.physical_devices.emplace_back("physical_device_2");
- driver.physical_devices.emplace_back("physical_device_3");
+ driver.add_physical_device("physical_device_2");
+ driver.add_physical_device("physical_device_3");
std::vector<VkPhysicalDevice> physical_device_handles_2 = std::vector<VkPhysicalDevice>(returned_physical_count);
ASSERT_EQ(VK_INCOMPLETE, inst->vkEnumeratePhysicalDevices(inst, &returned_physical_count, physical_device_handles_2.data()));
@@ -981,7 +980,7 @@
auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).set_min_icd_interface_version(5);
for (size_t i = 0; i < 4; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
+ driver.add_physical_device(std::string("physical_device_") + std::to_string(i));
}
InstWrapper inst{env.vulkan_functions};
@@ -1035,10 +1034,11 @@
TEST(EnumeratePhysicalDevices, MultipleAddRemoves) {
FrameworkEnvironment env{};
auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).set_min_icd_interface_version(5);
+ auto phys_dev_handle_0 = driver.add_and_get_physical_device("physical_device_0").vk_physical_device.handle;
+ auto phys_dev_handle_1 = driver.add_and_get_physical_device("physical_device_1").vk_physical_device.handle;
+ auto phys_dev_handle_2 = driver.add_and_get_physical_device("physical_device_2").vk_physical_device.handle;
+ auto phys_dev_handle_3 = driver.add_and_get_physical_device("physical_device_3").vk_physical_device.handle;
- for (size_t i = 0; i < 4; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- }
std::array<std::vector<VkPhysicalDevice>, 8> physical_dev_handles;
InstWrapper inst{env.vulkan_functions};
@@ -1051,7 +1051,7 @@
ASSERT_EQ(physical_count, returned_physical_count);
// Delete the 2nd physical device (0, 2, 3)
- driver.physical_devices.erase(std::next(driver.physical_devices.begin()));
+ driver.physical_devices.erase(phys_dev_handle_1);
// Query using old number from last call (4), but it should only return 3
physical_count = static_cast<uint32_t>(driver.physical_devices.size());
@@ -1061,8 +1061,8 @@
physical_dev_handles[1].resize(returned_physical_count);
// Add two new physical devices to the front (A, B, 0, 2, 3)
- driver.physical_devices.emplace(driver.physical_devices.begin(), "physical_device_B");
- driver.physical_devices.emplace(driver.physical_devices.begin(), "physical_device_A");
+ auto phys_dev_handle_a = driver.add_physical_device_at_index(0, "physical_device_B").vk_physical_device.handle;
+ auto phys_dev_handle_b = driver.add_physical_device_at_index(1, "physical_device_A").vk_physical_device.handle;
// Query using old number from last call (3), but it should be 5
physical_count = static_cast<uint32_t>(driver.physical_devices.size());
@@ -1078,7 +1078,7 @@
ASSERT_EQ(physical_count, returned_physical_count);
// Delete last two physical devices (A, B, 0, 2)
- driver.physical_devices.pop_back();
+ driver.physical_devices.erase(phys_dev_handle_3);
// Query using old number from last call (5), but it should be 4
physical_count = static_cast<uint32_t>(driver.physical_devices.size());
@@ -1091,7 +1091,7 @@
ASSERT_EQ(VK_SUCCESS, inst->vkEnumeratePhysicalDevices(inst, &returned_physical_count, physical_dev_handles[5].data()));
// Insert a new physical device (A, B, C, 0, 2)
- driver.physical_devices.insert(driver.physical_devices.begin() + 2, "physical_device_C");
+ auto phys_dev_handle_c = driver.add_physical_device_at_index(2, "physical_device_C").vk_physical_device.handle;
// Query using old number from last call (4), but it should be 5
physical_count = static_cast<uint32_t>(driver.physical_devices.size());
@@ -1351,7 +1351,7 @@
auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
for (uint32_t i = 0; i < 100; i++) {
- driver.physical_devices.emplace_back("physical_device_0");
+ driver.add_physical_device("physical_device_0");
}
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -1368,7 +1368,7 @@
auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
for (uint32_t i = 0; i < 100; i++) {
- driver.physical_devices.emplace_back("physical_device_0");
+ driver.add_physical_device("physical_device_0");
}
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -1686,14 +1686,16 @@
.add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
// ICD contains 3 devices in two groups
+ std::array<PhysicalDevice*, 3> phys_devices;
for (size_t i = 0; i < 3; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- driver.physical_devices.back().properties.apiVersion = VK_API_VERSION_1_1;
+ auto& test_physical_device = driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
+ test_physical_device.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ test_physical_device.properties.apiVersion = VK_API_VERSION_1_1;
+ phys_devices[i] = &test_physical_device;
}
- driver.physical_device_groups.emplace_back(driver.physical_devices[0]);
- driver.physical_device_groups.back().use_physical_device(driver.physical_devices[1]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[2]);
+ driver.physical_device_groups.emplace_back(phys_devices[0]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[1]);
+ driver.physical_device_groups.emplace_back(phys_devices[2]);
const uint32_t max_physical_device_count = 3;
// Core function
@@ -1820,14 +1822,16 @@
.add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
// ICD contains 3 devices in two groups
+ std::array<PhysicalDevice*, 3> phys_devices;
for (size_t i = 0; i < 3; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- driver.physical_devices.back().properties.apiVersion = VK_API_VERSION_1_1;
+ auto& test_physical_device = driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
+ test_physical_device.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ test_physical_device.properties.apiVersion = VK_API_VERSION_1_1;
+ phys_devices[i] = &test_physical_device;
}
- driver.physical_device_groups.emplace_back(driver.physical_devices[0]);
- driver.physical_device_groups.back().use_physical_device(driver.physical_devices[1]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[2]);
+ driver.physical_device_groups.emplace_back(phys_devices[0]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[1]);
+ driver.physical_device_groups.emplace_back(phys_devices[2]);
const uint32_t max_physical_device_count = 3;
// Core function
@@ -1937,14 +1941,16 @@
.add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
// ICD contains 3 devices in two groups
+ std::array<PhysicalDevice*, 3> phys_devices;
for (size_t i = 0; i < 3; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- driver.physical_devices.back().properties.apiVersion = VK_API_VERSION_1_1;
+ auto& test_physical_device = driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
+ test_physical_device.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ test_physical_device.properties.apiVersion = VK_API_VERSION_1_1;
+ phys_devices[i] = &test_physical_device;
}
- driver.physical_device_groups.emplace_back(driver.physical_devices[0]);
- driver.physical_device_groups.back().use_physical_device(driver.physical_devices[1]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[2]);
+ driver.physical_device_groups.emplace_back(phys_devices[0]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[1]);
+ driver.physical_device_groups.emplace_back(phys_devices[2]);
// Core function
{
@@ -2038,19 +2044,19 @@
.add_instance_extension({VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME});
// Generate the devices
+ std::array<PhysicalDevice*, 6> phys_devices;
for (size_t i = 0; i < 6; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().properties.apiVersion = VK_API_VERSION_1_1;
+ auto& test_physical_device = driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
+ test_physical_device.properties.apiVersion = VK_API_VERSION_1_1;
+ phys_devices[i] = &test_physical_device;
}
// Generate the starting groups
- driver.physical_device_groups.emplace_back(driver.physical_devices[0]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[1]);
- driver.physical_device_groups.back()
- .use_physical_device(driver.physical_devices[2])
- .use_physical_device(driver.physical_devices[3]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[4]);
- driver.physical_device_groups.back().use_physical_device(driver.physical_devices[5]);
+ driver.physical_device_groups.emplace_back(phys_devices[0]);
+ driver.physical_device_groups.emplace_back(phys_devices[1]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[2]).use_physical_device(phys_devices[3]);
+ driver.physical_device_groups.emplace_back(phys_devices[4]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[5]);
uint32_t expected_counts[3] = {1, 3, 2};
uint32_t core_group_count = 0;
@@ -2126,19 +2132,19 @@
.set_icd_api_version(VK_API_VERSION_1_1);
// Generate the devices
+ std::array<PhysicalDevice*, 7> phys_devices;
for (size_t i = 0; i < 7; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().properties.apiVersion = VK_API_VERSION_1_1;
+ auto& test_physical_device = driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
+ test_physical_device.properties.apiVersion = VK_API_VERSION_1_1;
+ phys_devices[i] = &test_physical_device;
}
// Generate the starting groups
- driver.physical_device_groups.emplace_back(driver.physical_devices[0]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[1]);
- driver.physical_device_groups.back()
- .use_physical_device(driver.physical_devices[2])
- .use_physical_device(driver.physical_devices[3]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[4]);
- driver.physical_device_groups.back().use_physical_device(driver.physical_devices[5]);
+ driver.physical_device_groups.emplace_back(phys_devices[0]);
+ driver.physical_device_groups.emplace_back(phys_devices[1]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[2]).use_physical_device(phys_devices[3]);
+ driver.physical_device_groups.emplace_back(phys_devices[4]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[5]);
uint32_t before_expected_counts[3] = {1, 3, 2};
uint32_t after_expected_counts[4] = {1, 3, 1, 2};
@@ -2161,7 +2167,7 @@
}
// Insert new group after first two
- driver.physical_device_groups.insert(driver.physical_device_groups.begin() + 2, driver.physical_devices[6]);
+ driver.physical_device_groups.insert(driver.physical_device_groups.begin() + 2, phys_devices[6]);
std::vector<VkPhysicalDeviceGroupProperties> group_props_after{};
group_props_after.resize(before_group_count,
@@ -2221,20 +2227,20 @@
.set_icd_api_version(VK_API_VERSION_1_1);
// Generate the devices
+ std::array<PhysicalDevice*, 7> phys_devices;
for (size_t i = 0; i < 7; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().properties.apiVersion = VK_API_VERSION_1_1;
+ auto& test_physical_device = driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
+ test_physical_device.properties.apiVersion = VK_API_VERSION_1_1;
+ phys_devices[i] = &test_physical_device;
}
// Generate the starting groups
- driver.physical_device_groups.emplace_back(driver.physical_devices[0]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[1]);
- driver.physical_device_groups.back()
- .use_physical_device(driver.physical_devices[2])
- .use_physical_device(driver.physical_devices[3]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[4]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[5]);
- driver.physical_device_groups.back().use_physical_device(driver.physical_devices[6]);
+ driver.physical_device_groups.emplace_back(phys_devices[0]);
+ driver.physical_device_groups.emplace_back(phys_devices[1]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[2]).use_physical_device(phys_devices[3]);
+ driver.physical_device_groups.emplace_back(phys_devices[4]);
+ driver.physical_device_groups.emplace_back(phys_devices[5]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[6]);
uint32_t before_expected_counts[4] = {1, 3, 1, 2};
uint32_t after_expected_counts[3] = {1, 3, 2};
@@ -2308,19 +2314,19 @@
.set_icd_api_version(VK_API_VERSION_1_1);
// Generate the devices
+ std::array<PhysicalDevice*, 7> phys_devices;
for (size_t i = 0; i < 7; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().properties.apiVersion = VK_API_VERSION_1_1;
+ auto& test_physical_device = driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
+ test_physical_device.properties.apiVersion = VK_API_VERSION_1_1;
+ phys_devices[i] = &test_physical_device;
}
// Generate the starting groups
- driver.physical_device_groups.emplace_back(driver.physical_devices[0]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[1]);
- driver.physical_device_groups.back()
- .use_physical_device(driver.physical_devices[2])
- .use_physical_device(driver.physical_devices[3]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[4]);
- driver.physical_device_groups.back().use_physical_device(driver.physical_devices[5]);
+ driver.physical_device_groups.emplace_back(phys_devices[0]);
+ driver.physical_device_groups.emplace_back(phys_devices[1]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[2]).use_physical_device(phys_devices[3]);
+ driver.physical_device_groups.emplace_back(phys_devices[4]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[5]);
uint32_t expected_group_count = 3;
uint32_t before_expected_counts[3] = {1, 3, 2};
@@ -2342,7 +2348,7 @@
}
// Insert new device to 2nd group
- driver.physical_device_groups[1].use_physical_device(driver.physical_devices[6]);
+ driver.physical_device_groups[1].use_physical_device(phys_devices[6]);
std::vector<VkPhysicalDeviceGroupProperties> group_props_after{};
group_props_after.resize(expected_group_count,
@@ -2394,19 +2400,19 @@
.set_icd_api_version(VK_API_VERSION_1_1);
// Generate the devices
+ std::array<PhysicalDevice*, 6> phys_devices;
for (size_t i = 0; i < 6; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().properties.apiVersion = VK_API_VERSION_1_1;
+ auto& test_physical_device = driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
+ test_physical_device.properties.apiVersion = VK_API_VERSION_1_1;
+ phys_devices[i] = &test_physical_device;
}
// Generate the starting groups
- driver.physical_device_groups.emplace_back(driver.physical_devices[0]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[1]);
- driver.physical_device_groups.back()
- .use_physical_device(driver.physical_devices[2])
- .use_physical_device(driver.physical_devices[3]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[4]);
- driver.physical_device_groups.back().use_physical_device(driver.physical_devices[5]);
+ driver.physical_device_groups.emplace_back(phys_devices[0]);
+ driver.physical_device_groups.emplace_back(phys_devices[1]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[2]).use_physical_device(phys_devices[3]);
+ driver.physical_device_groups.emplace_back(phys_devices[4]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[5]);
uint32_t before_expected_counts[3] = {1, 3, 2};
uint32_t after_expected_counts[3] = {1, 2, 2};
@@ -2491,19 +2497,19 @@
.set_icd_api_version(VK_API_VERSION_1_1);
// Generate the devices
+ std::array<PhysicalDevice*, 9> phys_devices;
for (size_t i = 0; i < 9; i++) {
- driver.physical_devices.emplace_back(std::string("physical_device_") + std::to_string(i));
- driver.physical_devices.back().properties.apiVersion = VK_API_VERSION_1_1;
+ auto& test_physical_device = driver.add_and_get_physical_device(std::string("physical_device_") + std::to_string(i));
+ test_physical_device.properties.apiVersion = VK_API_VERSION_1_1;
+ phys_devices[i] = &test_physical_device;
}
// Generate the starting groups
- driver.physical_device_groups.emplace_back(driver.physical_devices[0]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[1]);
- driver.physical_device_groups.back()
- .use_physical_device(driver.physical_devices[2])
- .use_physical_device(driver.physical_devices[3]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[4]);
- driver.physical_device_groups.back().use_physical_device(driver.physical_devices[5]);
+ driver.physical_device_groups.emplace_back(phys_devices[0]);
+ driver.physical_device_groups.emplace_back(phys_devices[1]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[2]).use_physical_device(phys_devices[3]);
+ driver.physical_device_groups.emplace_back(phys_devices[4]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[5]);
uint32_t before_expected_counts[3] = {1, 3, 2};
uint32_t after_add_group_expected_counts[4] = {1, 3, 1, 2};
@@ -2530,7 +2536,7 @@
}
// Insert new group after first two
- driver.physical_device_groups.insert(driver.physical_device_groups.begin() + 2, driver.physical_devices[6]);
+ driver.physical_device_groups.insert(driver.physical_device_groups.begin() + 2, phys_devices[6]);
// Should be: 4 Groups { { 0 }, { 1, 2, 3 }, { 6 }, { 4, 5 } }
std::vector<VkPhysicalDeviceGroupProperties> group_props_after_add_group{};
@@ -2575,9 +2581,7 @@
}
// Add two devices to last group
- driver.physical_device_groups.back()
- .use_physical_device(driver.physical_devices[7])
- .use_physical_device(driver.physical_devices[8]);
+ driver.physical_device_groups.back().use_physical_device(phys_devices[7]).use_physical_device(phys_devices[8]);
// Should be: 3 Groups { { 2, 3 }, { 6 }, { 4, 5, 7, 8 } }
std::vector<VkPhysicalDeviceGroupProperties> group_props_after_add_device{};
@@ -2631,44 +2635,40 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA, VK_API_VERSION_1_1));
auto& cur_icd_0 = env.get_test_icd(0);
cur_icd_0.set_icd_api_version(VK_API_VERSION_1_1);
- cur_icd_0.physical_devices.push_back({"pd0"});
- cur_icd_0.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_0.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 888, 0xAAA001);
- cur_icd_0.physical_devices.push_back({"pd1"});
- cur_icd_0.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_0.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
- VK_API_VERSION_1_1, 888, 0xAAA002);
- cur_icd_0.physical_devices.push_back({"pd2"});
- cur_icd_0.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_0.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 888, 0xAAA003);
+ auto& test_physical_device_0 = cur_icd_0.add_and_get_physical_device({"pd0"});
+ test_physical_device_0.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_0.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA001);
+ auto& test_physical_device_1 = cur_icd_0.add_and_get_physical_device({"pd1"});
+ test_physical_device_1.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_1.properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA002);
+ auto& test_physical_device_2 = cur_icd_0.add_and_get_physical_device({"pd2"});
+ test_physical_device_2.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_2.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA003);
cur_icd_0.physical_device_groups.push_back({});
- cur_icd_0.physical_device_groups.back()
- .use_physical_device(cur_icd_0.physical_devices[0])
- .use_physical_device(cur_icd_0.physical_devices[2]);
- cur_icd_0.physical_device_groups.push_back({cur_icd_0.physical_devices[1]});
+ cur_icd_0.physical_device_groups.back().use_physical_device(test_physical_device_0).use_physical_device(test_physical_device_2);
+ cur_icd_0.physical_device_groups.push_back({test_physical_device_1});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA, VK_API_VERSION_1_1));
auto& cur_icd_1 = env.get_test_icd(1);
cur_icd_1.set_icd_api_version(VK_API_VERSION_1_1);
- cur_icd_1.physical_devices.push_back({"pd4"});
- cur_icd_1.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_1.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 75, 0xCCCC001);
- cur_icd_1.physical_devices.push_back({"pd5"});
- cur_icd_1.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_1.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 75, 0xCCCC002);
- cur_icd_1.physical_devices.push_back({"pd6"});
- cur_icd_1.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_1.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 75, 0xCCCC003);
+ auto& test_physical_device_4 = cur_icd_1.add_and_get_physical_device({"pd4"});
+ test_physical_device_4.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_4.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC001);
+ auto& test_physical_device_5 = cur_icd_1.add_and_get_physical_device({"pd5"});
+ test_physical_device_5.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_5.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC002);
+ auto& test_physical_device_6 = cur_icd_1.add_and_get_physical_device({"pd6"});
+ test_physical_device_6.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_6.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC003);
cur_icd_1.physical_device_groups.push_back({});
- cur_icd_1.physical_device_groups.back()
- .use_physical_device(cur_icd_1.physical_devices[1])
- .use_physical_device(cur_icd_1.physical_devices[2]);
- cur_icd_1.physical_device_groups.push_back({cur_icd_1.physical_devices[0]});
+ cur_icd_1.physical_device_groups.back().use_physical_device(test_physical_device_5).use_physical_device(test_physical_device_6);
+ cur_icd_1.physical_device_groups.push_back({test_physical_device_4});
InstWrapper inst(env.vulkan_functions);
inst.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -2755,10 +2755,9 @@
{ // core
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA, VK_API_VERSION_1_3))
- .add_physical_device({})
.set_supports_tooling_info_core(true)
.add_tooling_property(icd_tool_props)
- .physical_devices.back()
+ .add_and_get_physical_device({})
.properties.apiVersion = VK_MAKE_API_VERSION(0, 1, 3, 0);
InstWrapper inst{env.vulkan_functions};
@@ -2804,45 +2803,44 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({"pd0"});
- env.get_test_icd(0).physical_devices.back().set_pci_bus(7);
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_1, 888, 0xAAA001);
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- env.get_test_icd(0).physical_devices.push_back({"pd1"});
- env.get_test_icd(0).physical_devices.back().set_pci_bus(3);
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
- VK_API_VERSION_1_1, 888, 0xAAA002);
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_0 = env.get_test_icd(0).add_and_get_physical_device({"pd0"});
+ test_physical_device_0.set_pci_bus(7);
+ FillInRandomDeviceProps(test_physical_device_0.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA001);
+ test_physical_device_0.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_1 = env.get_test_icd(0).add_and_get_physical_device({"pd1"});
+ test_physical_device_1.set_pci_bus(3);
+ FillInRandomDeviceProps(test_physical_device_1.properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA002);
+ test_physical_device_1.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
env.get_test_icd(1).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(1).physical_devices.push_back({"pd2"});
- env.get_test_icd(1).physical_devices.back().set_pci_bus(0);
- FillInRandomDeviceProps(env.get_test_icd(1).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_0,
- 1, 0xBBBB001);
- env.get_test_icd(1).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_2 = env.get_test_icd(1).add_and_get_physical_device({"pd2"});
+ test_physical_device_2.set_pci_bus(0);
+ FillInRandomDeviceProps(test_physical_device_2.properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_0, 1, 0xBBBB001);
+ test_physical_device_2.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
env.get_test_icd(2).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(2).physical_devices.push_back({"pd3"});
- env.get_test_icd(2).physical_devices.back().set_pci_bus(1);
- FillInRandomDeviceProps(env.get_test_icd(2).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_1, 75, 0xCCCC001);
- env.get_test_icd(2).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- env.get_test_icd(2).physical_devices.push_back({"pd4"});
- env.get_test_icd(2).physical_devices.back().set_pci_bus(4);
- FillInRandomDeviceProps(env.get_test_icd(2).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_0, 75, 0xCCCC002);
- env.get_test_icd(2).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_3 = env.get_test_icd(2).add_and_get_physical_device({"pd3"});
+ test_physical_device_3.set_pci_bus(1);
+ FillInRandomDeviceProps(test_physical_device_3.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC001);
+ test_physical_device_3.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_4 = env.get_test_icd(2).add_and_get_physical_device({"pd4"});
+ test_physical_device_4.set_pci_bus(4);
+ FillInRandomDeviceProps(test_physical_device_4.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_0, 75,
+ 0xCCCC002);
+ test_physical_device_4.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
env.get_test_icd(3).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(3).physical_devices.push_back({"pd5"});
- env.get_test_icd(3).physical_devices.back().set_pci_bus(0);
- FillInRandomDeviceProps(env.get_test_icd(3).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
- VK_API_VERSION_1_1, 6940, 0xDDDD001);
- env.get_test_icd(3).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_5 = env.get_test_icd(3).add_and_get_physical_device({"pd5"});
+ test_physical_device_5.set_pci_bus(0);
+ FillInRandomDeviceProps(test_physical_device_5.properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_API_VERSION_1_1, 6940,
+ 0xDDDD001);
+ test_physical_device_5.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
InstWrapper instance(env.vulkan_functions);
instance.CheckCreate();
@@ -2912,45 +2910,44 @@
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({"pd0"});
- env.get_test_icd(0).physical_devices.back().set_pci_bus(7);
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_1, 888, 0xAAA001);
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- env.get_test_icd(0).physical_devices.push_back({"pd1"});
- env.get_test_icd(0).physical_devices.back().set_pci_bus(3);
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
- VK_API_VERSION_1_1, 888, 0xAAA002);
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_0 = env.get_test_icd(0).add_and_get_physical_device({"pd0"});
+ test_physical_device_0.set_pci_bus(7);
+ FillInRandomDeviceProps(test_physical_device_0.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA001);
+ test_physical_device_0.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_1 = env.get_test_icd(0).add_and_get_physical_device({"pd1"});
+ test_physical_device_1.set_pci_bus(3);
+ FillInRandomDeviceProps(test_physical_device_1.properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA002);
+ test_physical_device_1.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
env.get_test_icd(1).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(1).physical_devices.push_back({"pd2"});
- env.get_test_icd(1).physical_devices.back().set_pci_bus(0);
- FillInRandomDeviceProps(env.get_test_icd(1).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_0,
- 1, 0xBBBB001);
- env.get_test_icd(1).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_2 = env.get_test_icd(1).add_and_get_physical_device({"pd2"});
+ test_physical_device_2.set_pci_bus(0);
+ FillInRandomDeviceProps(test_physical_device_2.properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_0, 1, 0xBBBB001);
+ test_physical_device_2.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
env.get_test_icd(2).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(2).physical_devices.push_back({"pd3"});
- env.get_test_icd(2).physical_devices.back().set_pci_bus(1);
- FillInRandomDeviceProps(env.get_test_icd(2).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_1, 75, 0xCCCC001);
- env.get_test_icd(2).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- env.get_test_icd(2).physical_devices.push_back({"pd4"});
- env.get_test_icd(2).physical_devices.back().set_pci_bus(4);
- FillInRandomDeviceProps(env.get_test_icd(2).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_0, 75, 0xCCCC002);
- env.get_test_icd(2).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_3 = env.get_test_icd(2).add_and_get_physical_device({"pd3"});
+ test_physical_device_3.set_pci_bus(1);
+ FillInRandomDeviceProps(test_physical_device_3.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC001);
+ test_physical_device_3.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_4 = env.get_test_icd(2).add_and_get_physical_device({"pd4"});
+ test_physical_device_4.set_pci_bus(4);
+ FillInRandomDeviceProps(test_physical_device_4.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_0, 75,
+ 0xCCCC002);
+ test_physical_device_4.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
env.get_test_icd(3).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(3).physical_devices.push_back({"pd5"});
- env.get_test_icd(3).physical_devices.back().set_pci_bus(0);
- FillInRandomDeviceProps(env.get_test_icd(3).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
- VK_API_VERSION_1_1, 6940, 0xDDDD001);
- env.get_test_icd(3).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_5 = env.get_test_icd(3).add_and_get_physical_device({"pd5"});
+ test_physical_device_5.set_pci_bus(0);
+ FillInRandomDeviceProps(test_physical_device_5.properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_API_VERSION_1_1, 6940,
+ 0xDDDD001);
+ test_physical_device_5.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -3035,48 +3032,47 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
env.get_test_icd(0).set_icd_api_version(VK_API_VERSION_1_1);
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({"pd0"});
- env.get_test_icd(0).physical_devices.back().set_pci_bus(7);
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_0, 888, 0xAAA001);
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- env.get_test_icd(0).physical_devices.push_back({"pd1"});
- env.get_test_icd(0).physical_devices.back().set_pci_bus(3);
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
- VK_API_VERSION_1_0, 888, 0xAAA002);
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_0 = env.get_test_icd(0).add_and_get_physical_device({"pd0"});
+ test_physical_device_0.set_pci_bus(7);
+ FillInRandomDeviceProps(test_physical_device_0.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_0, 888,
+ 0xAAA001);
+ test_physical_device_0.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_1 = env.get_test_icd(0).add_and_get_physical_device({"pd1"});
+ test_physical_device_1.set_pci_bus(3);
+ FillInRandomDeviceProps(test_physical_device_1.properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, VK_API_VERSION_1_0, 888,
+ 0xAAA002);
+ test_physical_device_1.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
env.get_test_icd(1).set_icd_api_version(VK_API_VERSION_1_1);
env.get_test_icd(1).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(1).physical_devices.push_back({"pd2"});
- env.get_test_icd(1).physical_devices.back().set_pci_bus(0);
- FillInRandomDeviceProps(env.get_test_icd(1).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_0,
- 1, 0xBBBB001);
- env.get_test_icd(1).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_2 = env.get_test_icd(1).add_and_get_physical_device({"pd2"});
+ test_physical_device_2.set_pci_bus(0);
+ FillInRandomDeviceProps(test_physical_device_2.properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_0, 1, 0xBBBB001);
+ test_physical_device_2.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
env.get_test_icd(2).set_icd_api_version(VK_API_VERSION_1_1);
env.get_test_icd(2).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(2).physical_devices.push_back({"pd3"});
- env.get_test_icd(2).physical_devices.back().set_pci_bus(1);
- FillInRandomDeviceProps(env.get_test_icd(2).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_1, 75, 0xCCCC001);
- env.get_test_icd(2).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- env.get_test_icd(2).physical_devices.push_back({"pd4"});
- env.get_test_icd(2).physical_devices.back().set_pci_bus(4);
- FillInRandomDeviceProps(env.get_test_icd(2).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_1, 75, 0xCCCC002);
- env.get_test_icd(2).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_3 = env.get_test_icd(2).add_and_get_physical_device({"pd3"});
+ test_physical_device_3.set_pci_bus(1);
+ FillInRandomDeviceProps(test_physical_device_3.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC001);
+ test_physical_device_3.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_4 = env.get_test_icd(2).add_and_get_physical_device({"pd4"});
+ test_physical_device_4.set_pci_bus(4);
+ FillInRandomDeviceProps(test_physical_device_4.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC002);
+ test_physical_device_4.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
env.get_test_icd(3).set_icd_api_version(VK_API_VERSION_1_1);
env.get_test_icd(3).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(3).physical_devices.push_back({"pd5"});
- env.get_test_icd(3).physical_devices.back().set_pci_bus(0);
- FillInRandomDeviceProps(env.get_test_icd(3).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
- VK_API_VERSION_1_1, 6940, 0xDDDD001);
- env.get_test_icd(3).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_5 = env.get_test_icd(3).add_and_get_physical_device({"pd5"});
+ test_physical_device_5.set_pci_bus(0);
+ FillInRandomDeviceProps(test_physical_device_5.properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_API_VERSION_1_1, 6940,
+ 0xDDDD001);
+ test_physical_device_5.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
InstWrapper instance(env.vulkan_functions);
instance.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -3163,39 +3159,38 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
env.get_test_icd(0).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(0).physical_devices.push_back({"pd0"});
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_0, 888, 0xAAA001);
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- env.get_test_icd(0).physical_devices.push_back({"pd1"});
- FillInRandomDeviceProps(env.get_test_icd(0).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
- VK_API_VERSION_1_0, 888, 0xAAA002);
- env.get_test_icd(0).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_0 = env.get_test_icd(0).add_and_get_physical_device({"pd0"});
+ FillInRandomDeviceProps(test_physical_device_0.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_0, 888,
+ 0xAAA001);
+ test_physical_device_0.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_1 = env.get_test_icd(0).add_and_get_physical_device({"pd1"});
+ FillInRandomDeviceProps(test_physical_device_1.properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, VK_API_VERSION_1_0, 888,
+ 0xAAA002);
+ test_physical_device_1.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
env.get_test_icd(1).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(1).physical_devices.push_back({"pd2"});
- FillInRandomDeviceProps(env.get_test_icd(1).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_0,
- 1, 0xBBBB001);
- env.get_test_icd(1).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_2 = env.get_test_icd(1).add_and_get_physical_device({"pd2"});
+ FillInRandomDeviceProps(test_physical_device_2.properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_0, 1, 0xBBBB001);
+ test_physical_device_2.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
env.get_test_icd(2).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(2).physical_devices.push_back({"pd3"});
- FillInRandomDeviceProps(env.get_test_icd(2).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_0, 75, 0xCCCC001);
- env.get_test_icd(2).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- env.get_test_icd(2).physical_devices.push_back({"pd4"});
- FillInRandomDeviceProps(env.get_test_icd(2).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
- VK_API_VERSION_1_0, 75, 0xCCCC002);
- env.get_test_icd(2).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_3 = env.get_test_icd(2).add_and_get_physical_device({"pd3"});
+ FillInRandomDeviceProps(test_physical_device_3.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_0, 75,
+ 0xCCCC001);
+ test_physical_device_3.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_4 = env.get_test_icd(2).add_and_get_physical_device({"pd4"});
+ FillInRandomDeviceProps(test_physical_device_4.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_0, 75,
+ 0xCCCC002);
+ test_physical_device_4.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_0));
env.get_test_icd(3).add_instance_extension({VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME});
- env.get_test_icd(3).physical_devices.push_back({"pd5"});
- FillInRandomDeviceProps(env.get_test_icd(3).physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
- VK_API_VERSION_1_0, 6940, 0xDDDD001);
- env.get_test_icd(3).physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ auto& test_physical_device_5 = env.get_test_icd(3).add_and_get_physical_device({"pd5"});
+ FillInRandomDeviceProps(test_physical_device_5.properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_API_VERSION_1_0, 6940,
+ 0xDDDD001);
+ test_physical_device_5.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
InstWrapper instance(env.vulkan_functions);
instance.create_info.add_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
@@ -3265,68 +3260,63 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
auto& cur_icd_0 = env.get_test_icd(0);
cur_icd_0.set_icd_api_version(VK_API_VERSION_1_1);
- cur_icd_0.physical_devices.push_back({"pd0"});
- cur_icd_0.physical_devices.back().set_pci_bus(7);
- cur_icd_0.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_0.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 888, 0xAAA001);
- cur_icd_0.physical_devices.push_back({"pd1"});
- cur_icd_0.physical_devices.back().set_pci_bus(3);
- cur_icd_0.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_0.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
- VK_API_VERSION_1_1, 888, 0xAAA002);
- cur_icd_0.physical_devices.push_back({"pd2"});
- cur_icd_0.physical_devices.back().set_pci_bus(6);
- cur_icd_0.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_0.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 888, 0xAAA003);
+ auto& test_physical_device_0 = cur_icd_0.add_and_get_physical_device({"pd0"});
+ test_physical_device_0.set_pci_bus(7);
+ test_physical_device_0.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_0.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA001);
+ auto& test_physical_device_1 = cur_icd_0.add_and_get_physical_device({"pd1"});
+ test_physical_device_1.set_pci_bus(3);
+ test_physical_device_1.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_1.properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA002);
+ auto& test_physical_device_2 = cur_icd_0.add_and_get_physical_device({"pd2"});
+ test_physical_device_2.set_pci_bus(6);
+ test_physical_device_2.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_2.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA003);
cur_icd_0.physical_device_groups.push_back({});
- cur_icd_0.physical_device_groups.back()
- .use_physical_device(cur_icd_0.physical_devices[0])
- .use_physical_device(cur_icd_0.physical_devices[2]);
- cur_icd_0.physical_device_groups.push_back({cur_icd_0.physical_devices[1]});
+ cur_icd_0.physical_device_groups.back().use_physical_device(test_physical_device_0).use_physical_device(test_physical_device_2);
+ cur_icd_0.physical_device_groups.push_back({test_physical_device_1});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
auto& cur_icd_1 = env.get_test_icd(1);
cur_icd_1.set_icd_api_version(VK_API_VERSION_1_1);
- cur_icd_1.physical_devices.push_back({"pd3"});
- cur_icd_1.physical_devices.back().set_pci_bus(0);
- cur_icd_1.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_1.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_1, 1,
- 0xBBBB001);
+ auto& test_physical_device_3 = cur_icd_1.add_and_get_physical_device({"pd3"});
+ test_physical_device_3.set_pci_bus(0);
+ test_physical_device_3.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_3.properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_1, 1, 0xBBBB001);
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
auto& cur_icd_2 = env.get_test_icd(2);
cur_icd_2.set_icd_api_version(VK_API_VERSION_1_1);
- cur_icd_2.physical_devices.push_back({"pd4"});
- cur_icd_2.physical_devices.back().set_pci_bus(1);
- cur_icd_2.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_2.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 75, 0xCCCC001);
- cur_icd_2.physical_devices.push_back({"pd5"});
- cur_icd_2.physical_devices.back().set_pci_bus(4);
- cur_icd_2.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_2.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 75, 0xCCCC002);
- cur_icd_2.physical_devices.push_back({"pd6"});
- cur_icd_2.physical_devices.back().set_pci_bus(2);
- cur_icd_2.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_2.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 75, 0xCCCC003);
+ auto& test_physical_device_4 = cur_icd_2.add_and_get_physical_device({"pd4"});
+ test_physical_device_4.set_pci_bus(1);
+ test_physical_device_4.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_4.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC001);
+ auto& test_physical_device_5 = cur_icd_2.add_and_get_physical_device({"pd5"});
+ test_physical_device_5.set_pci_bus(4);
+ test_physical_device_5.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_5.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC002);
+ auto& test_physical_device_6 = cur_icd_2.add_and_get_physical_device({"pd6"});
+ test_physical_device_6.set_pci_bus(2);
+ test_physical_device_6.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_6.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC003);
cur_icd_2.physical_device_groups.push_back({});
- cur_icd_2.physical_device_groups.back()
- .use_physical_device(cur_icd_2.physical_devices[1])
- .use_physical_device(cur_icd_2.physical_devices[2]);
- cur_icd_2.physical_device_groups.push_back({cur_icd_2.physical_devices[0]});
+ cur_icd_2.physical_device_groups.back().use_physical_device(test_physical_device_5).use_physical_device(test_physical_device_6);
+ cur_icd_2.physical_device_groups.push_back({test_physical_device_4});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
auto& cur_icd_3 = env.get_test_icd(3);
cur_icd_3.set_icd_api_version(VK_API_VERSION_1_1);
- cur_icd_3.physical_devices.push_back({"pd7"});
- cur_icd_3.physical_devices.back().set_pci_bus(0);
- cur_icd_3.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_3.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_API_VERSION_1_1,
- 6940, 0xDDDD001);
+ auto& test_physical_device_7 = cur_icd_3.add_and_get_physical_device({"pd7"});
+ test_physical_device_7.set_pci_bus(0);
+ test_physical_device_7.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_7.properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_API_VERSION_1_1, 6940,
+ 0xDDDD001);
InstWrapper inst(env.vulkan_functions);
inst.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -3458,60 +3448,55 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
auto& cur_icd_0 = env.get_test_icd(0);
cur_icd_0.set_icd_api_version(VK_API_VERSION_1_1);
- cur_icd_0.physical_devices.push_back({"pd0"});
- cur_icd_0.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_0.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 888, 0xAAA001);
- cur_icd_0.physical_devices.push_back({"pd1"});
- cur_icd_0.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_0.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
- VK_API_VERSION_1_1, 888, 0xAAA002);
- cur_icd_0.physical_devices.push_back({"pd2"});
- cur_icd_0.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_0.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 888, 0xAAA003);
+ auto& test_physical_device_0 = cur_icd_0.add_and_get_physical_device({"pd0"});
+ test_physical_device_0.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_0.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA001);
+ auto& test_physical_device_1 = cur_icd_0.add_and_get_physical_device({"pd1"});
+ test_physical_device_1.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_1.properties, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA002);
+ auto& test_physical_device_2 = cur_icd_0.add_and_get_physical_device({"pd2"});
+ test_physical_device_2.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_2.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 888,
+ 0xAAA003);
cur_icd_0.physical_device_groups.push_back({});
- cur_icd_0.physical_device_groups.back()
- .use_physical_device(cur_icd_0.physical_devices[0])
- .use_physical_device(cur_icd_0.physical_devices[2]);
- cur_icd_0.physical_device_groups.push_back({cur_icd_0.physical_devices[1]});
+ cur_icd_0.physical_device_groups.back().use_physical_device(test_physical_device_0).use_physical_device(test_physical_device_2);
+ cur_icd_0.physical_device_groups.push_back({test_physical_device_1});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
auto& cur_icd_1 = env.get_test_icd(1);
cur_icd_1.set_icd_api_version(VK_API_VERSION_1_1);
- cur_icd_1.physical_devices.push_back({"pd3"});
- cur_icd_1.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_1.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_1, 1,
- 0xBBBB001);
+ auto& test_physical_device_3 = cur_icd_1.add_and_get_physical_device({"pd3"});
+ test_physical_device_3.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_3.properties, VK_PHYSICAL_DEVICE_TYPE_CPU, VK_API_VERSION_1_1, 1, 0xBBBB001);
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
auto& cur_icd_2 = env.get_test_icd(2);
cur_icd_2.set_icd_api_version(VK_API_VERSION_1_1);
- cur_icd_2.physical_devices.push_back({"pd4"});
- cur_icd_2.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_2.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 75, 0xCCCC001);
- cur_icd_2.physical_devices.push_back({"pd5"});
- cur_icd_2.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_2.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 75, 0xCCCC002);
- cur_icd_2.physical_devices.push_back({"pd6"});
- cur_icd_2.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_2.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1,
- 75, 0xCCCC003);
+ auto& test_physical_device_4 = cur_icd_2.add_and_get_physical_device({"pd4"});
+ test_physical_device_4.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_4.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC001);
+ auto& test_physical_device_5 = cur_icd_2.add_and_get_physical_device({"pd5"});
+ test_physical_device_5.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_5.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC002);
+ auto& test_physical_device_6 = cur_icd_2.add_and_get_physical_device({"pd6"});
+ test_physical_device_6.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_6.properties, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_API_VERSION_1_1, 75,
+ 0xCCCC003);
cur_icd_2.physical_device_groups.push_back({});
- cur_icd_2.physical_device_groups.back()
- .use_physical_device(cur_icd_2.physical_devices[1])
- .use_physical_device(cur_icd_2.physical_devices[2]);
- cur_icd_2.physical_device_groups.push_back({cur_icd_2.physical_devices[0]});
+ cur_icd_2.physical_device_groups.back().use_physical_device(test_physical_device_5).use_physical_device(test_physical_device_6);
+ cur_icd_2.physical_device_groups.push_back({test_physical_device_4});
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2, VK_API_VERSION_1_1));
auto& cur_icd_3 = env.get_test_icd(3);
cur_icd_3.set_icd_api_version(VK_API_VERSION_1_1);
- cur_icd_3.physical_devices.push_back({"pd7"});
- cur_icd_3.physical_devices.back().extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
- FillInRandomDeviceProps(cur_icd_3.physical_devices.back().properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_API_VERSION_1_1,
- 6940, 0xDDDD001);
+ auto& test_physical_device_7 = cur_icd_3.add_and_get_physical_device({"pd7"});
+ test_physical_device_7.extensions.push_back({VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 0});
+ FillInRandomDeviceProps(test_physical_device_7.properties, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_API_VERSION_1_1, 6940,
+ 0xDDDD001);
InstWrapper inst(env.vulkan_functions);
inst.create_info.set_api_version(VK_API_VERSION_1_1);
@@ -3665,10 +3650,10 @@
auto& driver0 = env.get_test_icd(0);
auto& driver1 = env.get_test_icd(1);
- driver0.physical_devices.emplace_back("physical_device_0");
+ driver0.add_and_get_physical_device("physical_device_0");
driver0.max_icd_interface_version = 1;
- driver1.physical_devices.emplace_back("portability_physical_device_1");
+ driver1.add_and_get_physical_device("portability_physical_device_1");
driver1.max_icd_interface_version = 1;
{ // enable portability extension and flag
InstWrapper inst{env.vulkan_functions};
@@ -3746,10 +3731,10 @@
auto& driver0 = env.get_test_icd(0);
auto& driver1 = env.get_test_icd(1);
- driver0.physical_devices.emplace_back("physical_device_0");
+ driver0.add_and_get_physical_device("physical_device_0");
driver0.max_icd_interface_version = 1;
- driver1.physical_devices.emplace_back("portability_physical_device_1");
+ driver1.add_and_get_physical_device("portability_physical_device_1");
driver1.add_instance_extension("VK_KHR_portability_enumeration");
driver1.max_icd_interface_version = 1;
@@ -3909,10 +3894,11 @@
TEST(LibraryLoading, SystemLocations) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2).set_library_path_type(LibraryPathType::default_search_paths))
- .add_physical_device({});
+ auto& test_physical_device =
+ env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2).set_library_path_type(LibraryPathType::default_search_paths))
+ .add_and_get_physical_device({});
const char* fake_ext_name = "VK_FAKE_extension";
- driver.physical_devices.back().add_extension(fake_ext_name);
+ test_physical_device.add_extension(fake_ext_name);
const char* layer_name = "TestLayer";
env.add_explicit_layer(
@@ -3996,11 +3982,11 @@
FrameworkEnvironment env{};
env.setup_macos_bundle();
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA).set_discovery_type(ManifestDiscoveryType::macos_bundle));
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.at(0).properties.deviceID = 1337;
+ auto& test_physical_device_0 = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device_0.properties.deviceID = 1337;
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
- env.get_test_icd(1).physical_devices.push_back({});
- env.get_test_icd(1).physical_devices.at(0).properties.deviceID = 9999;
+ auto& test_physical_device_1 = env.get_test_icd(1).add_and_get_physical_device({});
+ test_physical_device_1.properties.deviceID = 9999;
InstWrapper inst{env.vulkan_functions};
ASSERT_NO_FATAL_FAILURE(inst.CheckCreate());
@@ -4010,7 +3996,7 @@
// Verify that this is the 'right' GPU, aka the one from the bundle
VkPhysicalDeviceProperties props{};
inst->vkGetPhysicalDeviceProperties(physical_devices[0], &props);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.at(0).properties.deviceID, props.deviceID);
+ ASSERT_EQ(test_physical_device_0.properties.deviceID, props.deviceID);
}
// Add two drivers, one to the bundle and one using the driver env-var
@@ -4018,11 +4004,13 @@
FrameworkEnvironment env{};
env.setup_macos_bundle();
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA).set_discovery_type(ManifestDiscoveryType::macos_bundle));
- env.get_test_icd(0).physical_devices.push_back({});
- env.get_test_icd(0).physical_devices.at(0).properties.deviceID = 1337;
+
+ auto& test_physical_device_0 = env.get_test_icd(0).add_and_get_physical_device({});
+ test_physical_device_0.properties.deviceID = 1337;
+
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA).set_discovery_type(ManifestDiscoveryType::env_var));
- env.get_test_icd(1).physical_devices.push_back({});
- env.get_test_icd(1).physical_devices.at(0).properties.deviceID = 9999;
+ auto& test_physical_device_1 = env.get_test_icd(1).add_and_get_physical_device({});
+ test_physical_device_1.properties.deviceID = 9999;
InstWrapper inst{env.vulkan_functions};
ASSERT_NO_FATAL_FAILURE(inst.CheckCreate());
@@ -4032,7 +4020,7 @@
// Verify that this is the 'right' GPU, aka the one from the env-var
VkPhysicalDeviceProperties props{};
inst->vkGetPhysicalDeviceProperties(physical_devices[0], &props);
- ASSERT_EQ(env.get_test_icd(1).physical_devices.at(0).properties.deviceID, props.deviceID);
+ ASSERT_EQ(test_physical_device_1.properties.deviceID, props.deviceID);
}
#endif
@@ -4064,9 +4052,9 @@
TEST(LayerCreatesDevice, DifferentPhysicalDevice) {
FrameworkEnvironment env{};
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
- env.get_test_icd(0).physical_devices.emplace_back("Device0");
+ env.get_test_icd(0).add_and_get_physical_device("Device0");
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
- env.get_test_icd(1).physical_devices.emplace_back("Device1");
+ env.get_test_icd(1).add_and_get_physical_device("Device1");
env.add_implicit_layer(ManifestLayer{}.add_layer(ManifestLayer::LayerDescription{}
.set_name("implicit_layer_name")
@@ -4242,14 +4230,13 @@
inst.CheckCreate();
}
#if defined(WIN32)
-void add_dxgi_adapter(FrameworkEnvironment& env, std::filesystem::path const& name, LUID luid, uint32_t vendor_id) {
+VkPhysicalDevice add_dxgi_adapter(FrameworkEnvironment& env, std::filesystem::path const& name, LUID luid, uint32_t vendor_id) {
auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_6).set_discovery_type(ManifestDiscoveryType::null_dir));
driver.set_min_icd_interface_version(5);
driver.set_max_icd_interface_version(6);
driver.setup_WSI();
driver.set_icd_api_version(VK_API_VERSION_1_1);
- driver.physical_devices.emplace_back(name.string());
- auto& pd0 = driver.physical_devices.back();
+ auto& pd0 = driver.add_and_get_physical_device(name.string());
pd0.properties.apiVersion = VK_API_VERSION_1_1;
driver.set_adapterLUID(luid);
@@ -4276,6 +4263,7 @@
} else {
pAdapter->add_driver_manifest_path(env.get_icd_manifest_path(env.icds.size() - 1));
}
+ return pd0.vk_physical_device.handle;
}
TEST(EnumerateAdapterPhysicalDevices, SameAdapterLUID_reordered) {
@@ -4288,7 +4276,7 @@
// b) then in the reverse order to the drivers insertion into the test framework
add_dxgi_adapter(env, "physical_device_2", LUID{10, 100}, 2);
add_dxgi_adapter(env, "physical_device_1", LUID{20, 200}, 1);
- add_dxgi_adapter(env, "physical_device_0", LUID{10, 100}, 2);
+ auto phys_dev_handle = add_dxgi_adapter(env, "physical_device_0", LUID{10, 100}, 2);
{
uint32_t returned_physical_count = 0;
@@ -4332,7 +4320,8 @@
}
// Set the first physical device that is enumerated to be a 'layered' driver so it should be swapped with the first physical
// device
- env.get_test_icd(2).physical_devices.back().layered_driver_underlying_api = VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT;
+ env.get_test_icd(2).physical_devices.at(phys_dev_handle).layered_driver_underlying_api =
+ VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT;
{
uint32_t returned_physical_count = 0;
InstWrapper inst{env.vulkan_functions};
@@ -4384,12 +4373,13 @@
// Physical devices are enumerated:
// a) first in the order of LUIDs showing up in DXGIAdapter list
// b) then in the reverse order to the drivers insertion into the test framework
- add_dxgi_adapter(env, "physical_device_2", LUID{10, 100}, 2);
+ auto d3d12_physical_device = add_dxgi_adapter(env, "physical_device_2", LUID{10, 100}, 2);
add_dxgi_adapter(env, "physical_device_1", LUID{20, 200}, 1);
add_dxgi_adapter(env, "physical_device_0", LUID{10, 100}, 2);
- // Set the last physical device that is enumerated last to be a 'layered' physical device - no swapping should occur
- env.get_test_icd(0).physical_devices.back().layered_driver_underlying_api = VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT;
+ // Set the physical device that is enumerated last to be a 'layered' physical device - no swapping should occur
+ env.get_test_icd(0).physical_devices.at(d3d12_physical_device).layered_driver_underlying_api =
+ VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT;
uint32_t returned_physical_count = 0;
InstWrapper inst{env.vulkan_functions};
diff --git a/tests/loader_threading_tests.cpp b/tests/loader_threading_tests.cpp
index 482bd5f..91ce4e2 100644
--- a/tests/loader_threading_tests.cpp
+++ b/tests/loader_threading_tests.cpp
@@ -88,7 +88,7 @@
uint32_t num_loops_try_get_instance_proc_addr = 5;
uint32_t num_loops_try_get_device_proc_addr = 100;
- driver.physical_devices.emplace_back("physical_device_0")
+ driver.add_and_get_physical_device("physical_device_0")
.known_device_functions.push_back({"vkCmdBindPipeline", to_vkVoidFunction(test_vkCmdBindPipeline)});
std::vector<std::thread> instance_creation_threads;
@@ -112,7 +112,7 @@
uint32_t num_loops_create_destroy_device = 1000;
uint32_t num_loops_try_get_device_proc_addr = 5;
- driver.physical_devices.emplace_back("physical_device_0").known_device_functions = {
+ driver.add_and_get_physical_device("physical_device_0").known_device_functions = {
{"vkCmdBindPipeline", to_vkVoidFunction(test_vkCmdBindPipeline)},
{"vkCmdBindDescriptorSets", to_vkVoidFunction(test_vkCmdBindDescriptorSets)},
{"vkCmdBindVertexBuffers", to_vkVoidFunction(test_vkCmdBindVertexBuffers)},
diff --git a/tests/loader_unknown_ext_tests.cpp b/tests/loader_unknown_ext_tests.cpp
index 162ceab..08fbe6c 100644
--- a/tests/loader_unknown_ext_tests.cpp
+++ b/tests/loader_unknown_ext_tests.cpp
@@ -335,12 +335,13 @@
TEST(UnknownFunction, PhysicalDeviceFunction) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).add_physical_device({});
+ auto& test_physical_device =
+ env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).add_and_get_physical_device({});
uint32_t function_count = MAX_NUM_UNKNOWN_EXTS;
std::vector<std::string> function_names;
add_function_names(function_names, function_count);
- fill_implementation_functions(driver.physical_devices.at(0).custom_physical_device_functions, function_names,
+ fill_implementation_functions(test_physical_device.custom_physical_device_functions, function_names,
custom_physical_device_functions{}, function_count);
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -359,13 +360,15 @@
add_function_names(function_names, function_count);
// used to identify the GPUs
- driver_0.physical_devices.emplace_back("physical_device_0").properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
- driver_1.physical_devices.emplace_back("physical_device_1").properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU;
+ auto& test_physical_driver_0 = driver_0.add_and_get_physical_device("physical_device_0");
+ test_physical_driver_0.properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
+ auto& test_physical_driver_1 = driver_1.add_and_get_physical_device("physical_device_1");
+ test_physical_driver_1.properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU;
for (uint32_t i = 0; i < function_count / 10; i++) {
- fill_implementation_functions(driver_0.physical_devices.at(0).custom_physical_device_functions, function_names,
+ fill_implementation_functions(test_physical_driver_0.custom_physical_device_functions, function_names,
custom_physical_device_functions{}, 5, i * 10);
- fill_implementation_functions(driver_1.physical_devices.at(0).custom_physical_device_functions, function_names,
+ fill_implementation_functions(test_physical_driver_1.custom_physical_device_functions, function_names,
custom_physical_device_functions{}, 5, i * 10 + 5);
}
InstWrapper inst{env.vulkan_functions};
@@ -397,12 +400,14 @@
add_function_names(function_names, 1);
// used to identify the GPUs
- driver_0.physical_devices.emplace_back("physical_device_0").properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
- driver_1.physical_devices.emplace_back("physical_device_1").properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU;
+ auto& test_physical_driver_0 = driver_0.add_and_get_physical_device("physical_device_0");
+ test_physical_driver_0.properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
+ auto& test_physical_driver_1 = driver_1.add_and_get_physical_device("physical_device_1");
+ test_physical_driver_1.properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU;
function_names.push_back(std::string("vkNotIntRealFuncTEST_0"));
custom_physical_device_functions funcs{};
- driver_0.physical_devices.at(0).custom_physical_device_functions.push_back(
+ test_physical_driver_0.custom_physical_device_functions.push_back(
VulkanFunction{function_names.back(), to_vkVoidFunction(funcs.func_zero)});
InstWrapper inst{env.vulkan_functions};
@@ -454,12 +459,14 @@
add_function_names(function_names, function_count);
// used to identify the GPUs
- driver_0.physical_devices.emplace_back("physical_device_0").properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
- driver_1.physical_devices.emplace_back("physical_device_1").properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU;
+ auto& test_physical_device_0 = driver_0.add_and_get_physical_device("physical_device_0");
+ test_physical_device_0.properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
+ auto& test_physical_device_1 = driver_1.add_and_get_physical_device("physical_device_1");
+ test_physical_device_1.properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU;
for (uint32_t i = 0; i < function_count / 10; i++) {
- fill_implementation_functions(driver_0.physical_devices.at(0).custom_physical_device_functions, function_names,
+ fill_implementation_functions(test_physical_device_0.custom_physical_device_functions, function_names,
custom_physical_device_functions{}, 5, i * 10);
- fill_implementation_functions(driver_1.physical_devices.at(0).custom_physical_device_functions, function_names,
+ fill_implementation_functions(test_physical_device_1.custom_physical_device_functions, function_names,
custom_physical_device_functions{}, 5, i * 10 + 5);
}
@@ -515,11 +522,12 @@
TEST(UnknownFunction, PhysicalDeviceFunctionDriverSupportWithImplicitLayerInterception) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).add_physical_device({});
+ auto& test_physical_device =
+ env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).add_and_get_physical_device({});
uint32_t function_count = 100;
std::vector<std::string> function_names;
add_function_names(function_names, function_count);
- fill_implementation_functions(driver.physical_devices.at(0).custom_physical_device_functions, function_names,
+ fill_implementation_functions(test_physical_device.custom_physical_device_functions, function_names,
layer_implementation_physical_device_functions{}, function_count);
env.add_implicit_layer(ManifestLayer{}.add_layer(ManifestLayer::LayerDescription{}
.set_name("VK_LAYER_implicit_layer_unknown_function_intercept")
@@ -543,7 +551,7 @@
std::vector<std::string> function_names;
uint32_t function_count = MAX_NUM_UNKNOWN_EXTS;
add_function_names(function_names, function_count);
- driver.physical_devices.emplace_back("physical_device_0");
+ auto& test_physical_device = driver.add_and_get_physical_device("physical_device_0");
env.add_implicit_layer(ManifestLayer{}.add_layer(ManifestLayer::LayerDescription{}
.set_name("VK_LAYER_implicit_layer_unknown_function_intercept_0")
@@ -560,7 +568,7 @@
auto& layer_1 = env.get_test_layer(1);
layer_1.set_use_gipa_GetPhysicalDeviceProcAddr(false);
for (uint32_t i = 0; i < function_count / 10; i++) {
- fill_implementation_functions(driver.physical_devices.at(0).custom_physical_device_functions, function_names,
+ fill_implementation_functions(test_physical_device.custom_physical_device_functions, function_names,
layer_implementation_physical_device_functions{}, 5, i * 10);
fill_phys_dev_intercept_functions(layer_0, function_names, layer_intercept_physical_device_functions{}, 5, i * 10);
fill_phys_dev_intercept_functions(layer_1, function_names, layer_intercept_physical_device_functions{}, 5, i * 10 + 5);
@@ -628,18 +636,18 @@
using layer_intercept_functions_type = layer_intercept_functions<DispatchableHandleType>;
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).add_physical_device({});
+ auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
+ auto& pd = driver.add_and_get_physical_device({});
uint32_t function_count = MAX_NUM_UNKNOWN_EXTS;
std::vector<std::string> function_names;
add_function_names(function_names, function_count);
if (has_flag(flags, TestConfig::add_layer_interception)) {
- fill_implementation_functions(driver.physical_devices.back().known_device_functions, function_names,
- layer_implementation_functions_type{}, function_count);
+ fill_implementation_functions(pd.known_device_functions, function_names, layer_implementation_functions_type{},
+ function_count);
} else {
- fill_implementation_functions(driver.physical_devices.back().known_device_functions, function_names,
- custom_functions_type{}, function_count);
+ fill_implementation_functions(pd.known_device_functions, function_names, custom_functions_type{}, function_count);
}
TestLayer* layer_ptr = nullptr;
if (has_flag(flags, TestConfig::add_layer_implementation) || has_flag(flags, TestConfig::add_layer_interception)) {
@@ -1089,8 +1097,7 @@
TEST(UnknownFunction, PhysicalDeviceFunctionTwoLayerInterception) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).add_physical_device({});
- PhysicalDevice& pd = driver.physical_devices.back();
+ PhysicalDevice& pd = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).add_and_get_physical_device({});
UnknownFunction f{"vkFunc1"};
Functions::three::physical_device::add_to_driver(f, pd);
@@ -1122,8 +1129,8 @@
TEST(UnknownFunction, ManyCombinations) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).add_physical_device({});
- PhysicalDevice& physical_device = driver.physical_devices.back();
+ PhysicalDevice& physical_device =
+ env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).add_and_get_physical_device({});
std::vector<UnknownFunction> unknown_funcs;
unknown_funcs.emplace_back("vkZero_uint32_uint32_0");
diff --git a/tests/loader_version_tests.cpp b/tests/loader_version_tests.cpp
index e097ff3..a0f0c1c 100644
--- a/tests/loader_version_tests.cpp
+++ b/tests/loader_version_tests.cpp
@@ -101,8 +101,8 @@
TEST(ICDInterfaceVersion2PlusEnumerateAdapterPhysicalDevices, version_6_in_drivers_registry) {
FrameworkEnvironment env{};
auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_ENUMERATE_ADAPTER_PHYSICAL_DEVICES));
- driver.physical_devices.emplace_back("physical_device_1");
- driver.physical_devices.emplace_back("physical_device_0");
+ driver.add_and_get_physical_device("physical_device_1");
+ driver.add_and_get_physical_device("physical_device_0");
uint32_t physical_count = static_cast<uint32_t>(driver.physical_devices.size());
uint32_t returned_physical_count = static_cast<uint32_t>(driver.physical_devices.size());
std::vector<VkPhysicalDevice> physical_device_handles = std::vector<VkPhysicalDevice>(physical_count);
@@ -132,8 +132,8 @@
// The loader will only attempt to sort physical devices on an ICD if version 6 of the interface is supported.
// This version provides the vk_icdEnumerateAdapterPhysicalDevices function.
auto& driver = env.get_test_icd(0);
- driver.physical_devices.emplace_back("physical_device_1");
- driver.physical_devices.emplace_back("physical_device_0");
+ driver.add_and_get_physical_device("physical_device_1");
+ driver.add_and_get_physical_device("physical_device_0");
uint32_t physical_count = 2;
uint32_t returned_physical_count = physical_count;
std::vector<VkPhysicalDevice> physical_device_handles{physical_count};
@@ -183,8 +183,8 @@
auto& driver =
env.add_icd(TestICDDetails{TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA}.set_discovery_type(ManifestDiscoveryType::null_dir));
InstWrapper inst{env.vulkan_functions};
- driver.physical_devices.emplace_back("physical_device_1");
- driver.physical_devices.emplace_back("physical_device_0");
+ driver.add_and_get_physical_device("physical_device_1");
+ driver.add_and_get_physical_device("physical_device_0");
uint32_t physical_count = static_cast<uint32_t>(driver.physical_devices.size());
uint32_t returned_physical_count = static_cast<uint32_t>(driver.physical_devices.size());
std::vector<VkPhysicalDevice> physical_device_handles = std::vector<VkPhysicalDevice>(physical_count);
@@ -212,7 +212,7 @@
.set_icd_api_version(VK_API_VERSION_1_1);
const std::vector<std::string> physical_device_names = {"physical_device_4", "physical_device_3", "physical_device_2",
"physical_device_1", "physical_device_0"};
- for (const auto& dev_name : physical_device_names) driver.physical_devices.push_back(dev_name);
+ for (const auto& dev_name : physical_device_names) driver.add_physical_device(dev_name);
auto& known_driver = known_driver_list.at(2); // which drive this test pretends to be
DXGI_ADAPTER_DESC1 desc1{};
@@ -256,13 +256,16 @@
.set_icd_api_version(VK_API_VERSION_1_1);
const std::vector<std::string> physical_device_names = {"physical_device_4", "physical_device_3", "physical_device_2",
"physical_device_1", "physical_device_0"};
- for (const auto& dev_name : physical_device_names) {
- driver.physical_devices.push_back(dev_name);
- }
- driver.physical_device_groups.emplace_back(driver.physical_devices[0]).use_physical_device(driver.physical_devices[1]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[2]);
- driver.physical_device_groups.emplace_back(driver.physical_devices[3]).use_physical_device(driver.physical_devices[4]);
+ auto& test_physical_device_0 = driver.add_and_get_physical_device(physical_device_names[0]);
+ auto& test_physical_device_1 = driver.add_and_get_physical_device(physical_device_names[1]);
+ auto& test_physical_device_2 = driver.add_and_get_physical_device(physical_device_names[2]);
+ auto& test_physical_device_3 = driver.add_and_get_physical_device(physical_device_names[3]);
+ auto& test_physical_device_4 = driver.add_and_get_physical_device(physical_device_names[4]);
+
+ driver.physical_device_groups.emplace_back(test_physical_device_0).use_physical_device(test_physical_device_1);
+ driver.physical_device_groups.emplace_back(test_physical_device_2);
+ driver.physical_device_groups.emplace_back(test_physical_device_3).use_physical_device(test_physical_device_4);
auto& known_driver = known_driver_list.at(2); // which driver this test pretends to be
DXGI_ADAPTER_DESC1 desc1{};
@@ -330,17 +333,17 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
- env.get_test_icd(0).physical_devices.emplace_back("physical_device_0");
- env.get_test_icd(1).physical_devices.emplace_back("physical_device_1");
- env.get_test_icd(2).physical_devices.emplace_back("physical_device_2");
+ auto& phys_dev_0 = env.get_test_icd(0).add_and_get_physical_device("physical_device_0");
+ auto& phys_dev_1 = env.get_test_icd(1).add_and_get_physical_device("physical_device_1");
+ auto& phys_dev_2 = env.get_test_icd(2).add_and_get_physical_device("physical_device_2");
- env.get_test_icd(0).physical_devices.at(0).properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
- env.get_test_icd(1).physical_devices.at(0).properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU;
- env.get_test_icd(2).physical_devices.at(0).properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_CPU;
+ phys_dev_0.properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU;
+ phys_dev_1.properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU;
+ phys_dev_2.properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_CPU;
- std::string("dev0").copy(env.get_test_icd(0).physical_devices.at(0).properties.deviceName, VK_MAX_EXTENSION_NAME_SIZE);
- std::string("dev1").copy(env.get_test_icd(1).physical_devices.at(0).properties.deviceName, VK_MAX_EXTENSION_NAME_SIZE);
- std::string("dev2").copy(env.get_test_icd(2).physical_devices.at(0).properties.deviceName, VK_MAX_EXTENSION_NAME_SIZE);
+ std::string("dev0").copy(phys_dev_0.properties.deviceName, VK_MAX_EXTENSION_NAME_SIZE);
+ std::string("dev1").copy(phys_dev_1.properties.deviceName, VK_MAX_EXTENSION_NAME_SIZE);
+ std::string("dev2").copy(phys_dev_2.properties.deviceName, VK_MAX_EXTENSION_NAME_SIZE);
InstWrapper inst{env.vulkan_functions};
inst.CheckCreate();
@@ -349,9 +352,9 @@
uint32_t phys_dev_count = 3;
ASSERT_EQ(env.vulkan_functions.vkEnumeratePhysicalDevices(inst, &phys_dev_count, phys_devs_array.data()), VK_SUCCESS);
ASSERT_EQ(phys_dev_count, 3U);
- ASSERT_EQ(env.get_test_icd(0).physical_devices.at(0).properties.deviceType, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU);
- ASSERT_EQ(env.get_test_icd(1).physical_devices.at(0).properties.deviceType, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU);
- ASSERT_EQ(env.get_test_icd(2).physical_devices.at(0).properties.deviceType, VK_PHYSICAL_DEVICE_TYPE_CPU);
+ ASSERT_EQ(phys_dev_0.properties.deviceType, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU);
+ ASSERT_EQ(phys_dev_1.properties.deviceType, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU);
+ ASSERT_EQ(phys_dev_2.properties.deviceType, VK_PHYSICAL_DEVICE_TYPE_CPU);
}
TEST(MultipleDriverConfig, DifferentICDInterfaceVersions) {
@@ -361,11 +364,11 @@
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
TestICD& icd0 = env.get_test_icd(0);
- icd0.physical_devices.emplace_back("physical_device_0");
+ icd0.add_and_get_physical_device("physical_device_0");
icd0.max_icd_interface_version = 1;
TestICD& icd1 = env.get_test_icd(1);
- icd1.physical_devices.emplace_back("physical_device_1");
+ icd1.add_and_get_physical_device("physical_device_1");
icd1.min_icd_interface_version = 2;
icd1.max_icd_interface_version = 5;
@@ -388,18 +391,18 @@
// tests add multiple devices to a single ICD, this just makes sure the loader combines
// device info across multiple drivers properly.
TestICD& icd0 = env.get_test_icd(0);
- icd0.physical_devices.emplace_back("physical_device_0");
+ icd0.add_and_get_physical_device("physical_device_0");
icd0.min_icd_interface_version = 5;
icd0.max_icd_interface_version = 5;
TestICD& icd1 = env.get_test_icd(1);
- icd1.physical_devices.emplace_back("physical_device_1");
- icd1.physical_devices.emplace_back("physical_device_2");
+ icd1.add_and_get_physical_device("physical_device_1");
+ icd1.add_and_get_physical_device("physical_device_2");
icd1.min_icd_interface_version = 5;
icd1.max_icd_interface_version = 5;
TestICD& icd2 = env.get_test_icd(2);
- icd2.physical_devices.emplace_back("physical_device_3");
+ icd2.add_and_get_physical_device("physical_device_3");
icd2.min_icd_interface_version = 5;
icd2.max_icd_interface_version = 5;
@@ -426,26 +429,26 @@
// ICD 0 : No 1.1 support (so 1 device will become 1 group in loader)
TestICD& icd0 = env.get_test_icd(0);
- icd0.physical_devices.emplace_back("physical_device_0");
+ icd0.add_and_get_physical_device("physical_device_0");
icd0.min_icd_interface_version = 5;
icd0.max_icd_interface_version = 5;
icd0.set_icd_api_version(VK_API_VERSION_1_0);
// ICD 1 : 1.1 support (with 1 group with 2 devices)
TestICD& icd1 = env.get_test_icd(1);
- icd1.physical_devices.emplace_back("physical_device_1").set_api_version(VK_API_VERSION_1_1);
- icd1.physical_devices.emplace_back("physical_device_2").set_api_version(VK_API_VERSION_1_1);
- icd1.physical_device_groups.emplace_back(icd1.physical_devices[0]);
- icd1.physical_device_groups.back().use_physical_device(icd1.physical_devices[1]);
+ auto& pd1 = icd1.add_and_get_physical_device("physical_device_1").set_api_version(VK_API_VERSION_1_1);
+ auto& pd2 = icd1.add_and_get_physical_device("physical_device_2").set_api_version(VK_API_VERSION_1_1);
+ icd1.physical_device_groups.emplace_back(pd1);
+ icd1.physical_device_groups.back().use_physical_device(pd2);
icd1.min_icd_interface_version = 5;
icd1.max_icd_interface_version = 5;
icd1.set_icd_api_version(VK_API_VERSION_1_1);
// ICD 2 : No 1.1 support (so 3 devices will become 3 groups in loader)
TestICD& icd2 = env.get_test_icd(2);
- icd2.physical_devices.emplace_back("physical_device_3");
- icd2.physical_devices.emplace_back("physical_device_4");
- icd2.physical_devices.emplace_back("physical_device_5");
+ icd2.add_and_get_physical_device("physical_device_3");
+ icd2.add_and_get_physical_device("physical_device_4");
+ icd2.add_and_get_physical_device("physical_device_5");
icd2.min_icd_interface_version = 5;
icd2.max_icd_interface_version = 5;
icd2.set_icd_api_version(VK_API_VERSION_1_0);
@@ -489,20 +492,15 @@
driver_5.set_max_icd_interface_version(5);
driver_5.set_min_icd_interface_version(5);
driver_5.setup_WSI();
- driver_5.physical_devices.push_back({});
- driver_5.physical_devices.back().queue_family_properties.push_back(family_props);
- driver_5.physical_devices.push_back({});
- driver_5.physical_devices.back().queue_family_properties.push_back(family_props);
- driver_5.physical_devices.push_back({});
- driver_5.physical_devices.back().queue_family_properties.push_back(family_props);
+ driver_5.add_and_get_physical_device({}).queue_family_properties.push_back(family_props);
+ driver_5.add_and_get_physical_device({}).queue_family_properties.push_back(family_props);
+ driver_5.add_and_get_physical_device({}).queue_family_properties.push_back(family_props);
physical_count += static_cast<uint32_t>(driver_5.physical_devices.size());
auto& driver_6 = env.get_test_icd(i * 2);
driver_6.setup_WSI();
- driver_6.physical_devices.emplace_back("physical_device_0");
- driver_6.physical_devices.back().queue_family_properties.push_back(family_props);
- driver_6.physical_devices.emplace_back("physical_device_1");
- driver_6.physical_devices.back().queue_family_properties.push_back(family_props);
+ driver_6.add_and_get_physical_device("physical_device_0").queue_family_properties.push_back(family_props);
+ driver_6.add_and_get_physical_device("physical_device_1").queue_family_properties.push_back(family_props);
physical_count += static_cast<uint32_t>(driver_6.physical_devices.size());
driver_6.set_max_icd_interface_version(6);
@@ -589,8 +587,9 @@
TEST(MinorVersionUpdate, Version1_3) {
FrameworkEnvironment env{};
- auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA)).add_physical_device({});
- driver.physical_devices.back().known_device_functions = {
+ auto& driver = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2_EXPORT_ICD_GPDPA));
+ auto& pd = driver.add_and_get_physical_device({});
+ pd.known_device_functions = {
VulkanFunction{"vkCmdBeginRendering", to_vkVoidFunction(test_vkCmdBeginRendering)},
VulkanFunction{"vkCmdBindVertexBuffers2", to_vkVoidFunction(test_vkCmdBindVertexBuffers2)},
VulkanFunction{"vkCmdBlitImage2", to_vkVoidFunction(test_vkCmdBlitImage2)},
@@ -629,7 +628,7 @@
VulkanFunction{"vkQueueSubmit2", to_vkVoidFunction(test_vkQueueSubmit2)},
VulkanFunction{"vkSetPrivateData", to_vkVoidFunction(test_vkSetPrivateData)},
};
- driver.physical_devices.back().add_extension({"VK_SOME_EXT_haha"});
+ pd.add_extension({"VK_SOME_EXT_haha"});
InstWrapper inst{env.vulkan_functions};
inst.create_info.set_api_version(1, 3, 0);
inst.CheckCreate();
@@ -937,8 +936,7 @@
for (auto const& driver : direct_drivers) {
auto& direct_driver_icd = env.add_icd(driver.icd_details);
- direct_driver_icd.physical_devices.push_back({});
- direct_driver_icd.physical_devices.at(0).properties.driverVersion = driver.driver_version;
+ direct_driver_icd.add_and_get_physical_device({}).properties.driverVersion = driver.driver_version;
VkDirectDriverLoadingInfoLUNARG ddl_info{};
ddl_info.sType = VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG;
ddl_info.pfnGetInstanceProcAddr = env.icds.back().icd_library.get_symbol("vk_icdGetInstanceProcAddr");
@@ -950,8 +948,7 @@
for (auto const& driver : normal_drivers) {
auto& direct_driver_icd = env.add_icd(driver.icd_details);
- direct_driver_icd.physical_devices.push_back({});
- direct_driver_icd.physical_devices.at(0).properties.driverVersion = driver.driver_version;
+ direct_driver_icd.add_and_get_physical_device({}).properties.driverVersion = driver.driver_version;
if (!exclusive && driver.expect_to_find) {
expected_driver_count++;
}
@@ -1148,7 +1145,7 @@
FrameworkEnvironment env{};
auto& direct_driver_icd = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_7).set_discovery_type(ManifestDiscoveryType::none));
- direct_driver_icd.physical_devices.push_back({});
+ direct_driver_icd.add_physical_device({});
VkDirectDriverLoadingInfoLUNARG ddl_info{};
ddl_info.sType = VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG;
diff --git a/tests/loader_wsi_tests.cpp b/tests/loader_wsi_tests.cpp
index 6234605..057b5ea 100644
--- a/tests/loader_wsi_tests.cpp
+++ b/tests/loader_wsi_tests.cpp
@@ -127,7 +127,7 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extension({VK_KHR_SURFACE_EXTENSION_NAME});
cur_icd.add_instance_extension({VK_KHR_WIN32_SURFACE_EXTENSION_NAME});
- cur_icd.physical_devices.emplace_back("physical_device_0");
+ cur_icd.add_and_get_physical_device("physical_device_0");
cur_icd.enable_icd_wsi = false;
InstWrapper inst{env.vulkan_functions};
@@ -154,7 +154,7 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extension({VK_KHR_SURFACE_EXTENSION_NAME});
cur_icd.add_instance_extension({VK_KHR_WIN32_SURFACE_EXTENSION_NAME});
- cur_icd.physical_devices.emplace_back("physical_device_0");
+ cur_icd.add_and_get_physical_device("physical_device_0");
cur_icd.enable_icd_wsi = true;
InstWrapper inst{env.vulkan_functions};
@@ -181,8 +181,8 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extensions({first_ext, second_ext});
std::string dev_name = "phys_dev_" + std::to_string(icd);
- cur_icd.physical_devices.emplace_back(dev_name.c_str());
- cur_icd.physical_devices.back().add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true});
+ cur_icd.add_and_get_physical_device(dev_name.c_str())
+ .add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true});
cur_icd.enable_icd_wsi = true;
}
@@ -311,7 +311,7 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extension({VK_KHR_SURFACE_EXTENSION_NAME});
cur_icd.add_instance_extension({VK_KHR_XCB_SURFACE_EXTENSION_NAME});
- cur_icd.physical_devices.emplace_back("physical_device_0");
+ cur_icd.add_and_get_physical_device("physical_device_0");
cur_icd.enable_icd_wsi = false;
InstWrapper inst{env.vulkan_functions};
@@ -338,7 +338,7 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extension({VK_KHR_SURFACE_EXTENSION_NAME});
cur_icd.add_instance_extension({VK_KHR_XCB_SURFACE_EXTENSION_NAME});
- cur_icd.physical_devices.emplace_back("physical_device_0");
+ cur_icd.add_and_get_physical_device("physical_device_0");
cur_icd.enable_icd_wsi = true;
InstWrapper inst{env.vulkan_functions};
@@ -365,8 +365,8 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extensions({first_ext, second_ext});
std::string dev_name = "phys_dev_" + std::to_string(icd);
- cur_icd.physical_devices.emplace_back(dev_name.c_str());
- cur_icd.physical_devices.back().add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true});
+ cur_icd.add_and_get_physical_device(dev_name.c_str())
+ .add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true});
cur_icd.enable_icd_wsi = true;
}
@@ -495,7 +495,7 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extension({VK_KHR_SURFACE_EXTENSION_NAME});
cur_icd.add_instance_extension({VK_KHR_XLIB_SURFACE_EXTENSION_NAME});
- cur_icd.physical_devices.emplace_back("physical_device_0");
+ cur_icd.add_and_get_physical_device("physical_device_0");
cur_icd.enable_icd_wsi = false;
InstWrapper inst{env.vulkan_functions};
@@ -522,7 +522,7 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extension({VK_KHR_SURFACE_EXTENSION_NAME});
cur_icd.add_instance_extension({VK_KHR_XLIB_SURFACE_EXTENSION_NAME});
- cur_icd.physical_devices.emplace_back("physical_device_0");
+ cur_icd.add_and_get_physical_device("physical_device_0");
cur_icd.enable_icd_wsi = true;
InstWrapper inst{env.vulkan_functions};
@@ -549,8 +549,8 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extensions({first_ext, second_ext});
std::string dev_name = "phys_dev_" + std::to_string(icd);
- cur_icd.physical_devices.emplace_back(dev_name.c_str());
- cur_icd.physical_devices.back().add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true});
+ cur_icd.add_and_get_physical_device(dev_name.c_str())
+ .add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true});
cur_icd.enable_icd_wsi = true;
}
@@ -679,7 +679,7 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extension({VK_KHR_SURFACE_EXTENSION_NAME});
cur_icd.add_instance_extension({VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME});
- cur_icd.physical_devices.emplace_back("physical_device_0");
+ cur_icd.add_and_get_physical_device("physical_device_0");
cur_icd.enable_icd_wsi = false;
InstWrapper inst{env.vulkan_functions};
@@ -706,7 +706,7 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extension({VK_KHR_SURFACE_EXTENSION_NAME});
cur_icd.add_instance_extension({VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME});
- cur_icd.physical_devices.emplace_back("physical_device_0");
+ cur_icd.add_and_get_physical_device("physical_device_0");
cur_icd.enable_icd_wsi = true;
InstWrapper inst{env.vulkan_functions};
@@ -733,8 +733,8 @@
cur_icd.set_min_icd_interface_version(5);
cur_icd.add_instance_extensions({first_ext, second_ext});
std::string dev_name = "phys_dev_" + std::to_string(icd);
- cur_icd.physical_devices.emplace_back(dev_name.c_str());
- cur_icd.physical_devices.back().add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true});
+ cur_icd.add_and_get_physical_device(dev_name.c_str())
+ .add_queue_family_properties({{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true});
cur_icd.enable_icd_wsi = true;
}
@@ -925,15 +925,15 @@
VkSurfaceCapabilitiesKHR surface_caps{};
surface_caps.maxImageExtent = VkExtent2D{300, 300};
surface_caps.minImageExtent = VkExtent2D{100, 100};
- env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2))
- .setup_WSI()
- .add_instance_extension(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME)
- .add_physical_device(PhysicalDevice{}
- .add_extension("VK_KHR_swapchain")
- .set_deviceName("no")
- .set_surface_capabilities(surface_caps)
- .add_surface_present_modes(present_modes)
- .finish());
+ auto& test_physical_device_0 = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2))
+ .setup_WSI()
+ .add_instance_extension(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME)
+ .add_and_get_physical_device(PhysicalDevice{}
+ .add_extension("VK_KHR_swapchain")
+ .set_deviceName("no")
+ .set_surface_capabilities(surface_caps)
+ .add_surface_present_modes(present_modes)
+ .finish());
VkSurfacePresentScalingCapabilitiesEXT scaling_capabilities{};
scaling_capabilities.supportedPresentScaling = VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT;
scaling_capabilities.supportedPresentGravityX = VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT;
@@ -943,21 +943,22 @@
auto& icd2 = env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2))
.setup_WSI()
.add_instance_extension(VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME)
- .add_instance_extension(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME)
- .add_physical_device(PhysicalDevice{}
- .add_extension("VK_KHR_swapchain")
- .set_deviceName("yes")
- .set_surface_capabilities(surface_caps)
- .add_surface_present_modes(present_modes)
- .set_surface_present_scaling_capabilities(scaling_capabilities)
- .finish());
+ .add_instance_extension(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
+ auto& test_physical_device_1 =
+ icd2.add_and_get_physical_device(PhysicalDevice{}
+ .add_extension("VK_KHR_swapchain")
+ .set_deviceName("yes")
+ .set_surface_capabilities(surface_caps)
+ .add_surface_present_modes(present_modes)
+ .set_surface_present_scaling_capabilities(scaling_capabilities)
+ .finish());
std::vector<std::vector<VkPresentModeKHR>> compatible_present_modes{
{VK_PRESENT_MODE_FIFO_KHR, VK_PRESENT_MODE_FIFO_RELAXED_KHR},
{VK_PRESENT_MODE_IMMEDIATE_KHR, VK_PRESENT_MODE_MAILBOX_KHR},
{VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_IMMEDIATE_KHR},
{VK_PRESENT_MODE_FIFO_RELAXED_KHR, VK_PRESENT_MODE_FIFO_KHR},
};
- icd2.physical_devices[0].surface_present_mode_compatibility = compatible_present_modes;
+ test_physical_device_1.surface_present_mode_compatibility = compatible_present_modes;
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2))
.setup_WSI()
.add_physical_device(PhysicalDevice{}