layers:Add physicalDevice check
authorTobin Ehlis <tobine@google.com>
Tue, 7 Feb 2017 22:21:00 +0000 (15:21 -0700)
committerTobin Ehlis <tobine@google.com>
Tue, 7 Feb 2017 23:44:24 +0000 (16:44 -0700)
Update GetPhysicalDeviceQueueFamilyProperties() in object_tracker to
verify that physicalDevice is valid.

layers/object_tracker.cpp

index e0d7078..39d1c63 100644 (file)
@@ -3261,6 +3261,15 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateDevice(VkPhysicalDevice physicalDevice, con
 VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice,
                                                                   uint32_t *pQueueFamilyPropertyCount,
                                                                   VkQueueFamilyProperties *pQueueFamilyProperties) {
+    bool skip = false;
+    {
+        std::lock_guard<std::mutex> lock(global_lock);
+        skip |= ValidateObject(physicalDevice, physicalDevice, VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, false,
+                               VALIDATION_ERROR_00028);
+    }
+    if (skip) {
+        return;
+    }
     get_dispatch_table(ot_instance_table_map, physicalDevice)
         ->GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
     std::lock_guard<std::mutex> lock(global_lock);