From 429f33a509fd059bb6861e47d2c4c67241ac090c Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Mon, 6 Feb 2017 17:02:03 -0700 Subject: layers:Fix queue state recording Handle case when multiple calls are made to GetPhysicalDeviceQueueFamilyProperties[2KHR]() funcs by resizing vector and assigning elements w/ [] operator instead of using emplace_back(). --- layers/object_tracker.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'layers/object_tracker.cpp') diff --git a/layers/object_tracker.cpp b/layers/object_tracker.cpp index 67dd0218..e0d70787 100644 --- a/layers/object_tracker.cpp +++ b/layers/object_tracker.cpp @@ -3266,8 +3266,11 @@ VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevi std::lock_guard lock(global_lock); if (pQueueFamilyProperties != NULL) { layer_data *instance_data = get_my_data_ptr(get_dispatch_key(physicalDevice), layer_data_map); + if (instance_data->queue_family_properties.size() < *pQueueFamilyPropertyCount) { + instance_data->queue_family_properties.resize(*pQueueFamilyPropertyCount); + } for (uint32_t i = 0; i < *pQueueFamilyPropertyCount; i++) { - instance_data->queue_family_properties.emplace_back(pQueueFamilyProperties[i]); + instance_data->queue_family_properties[i] = pQueueFamilyProperties[i]; } } } @@ -4063,8 +4066,11 @@ VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysical std::lock_guard lock(global_lock); if (pQueueFamilyProperties != NULL) { layer_data *instance_data = get_my_data_ptr(get_dispatch_key(physicalDevice), layer_data_map); + if (instance_data->queue_family_properties.size() < *pQueueFamilyPropertyCount) { + instance_data->queue_family_properties.resize(*pQueueFamilyPropertyCount); + } for (uint32_t i = 0; i < *pQueueFamilyPropertyCount; i++) { - instance_data->queue_family_properties.emplace_back(pQueueFamilyProperties[i].queueFamilyProperties); + instance_data->queue_family_properties[i] = pQueueFamilyProperties[i].queueFamilyProperties; } } } -- cgit v1.2.3