layers: Fix bugs of display queries in unique_objects

- remove duplicate include
- `currentDisplay` in `vkGetPhysicalDeviceDisplayPlaneProperties` may be `VK_NULL_HANDLE`
- `vkGetDisplayPlaneSupportedDisplays` did not account for `VK_INCOMPLETE`
-  `vkGetDisplayPlaneCapabilitiesKHR` can be handled by generated code
diff --git a/layers/unique_objects.cpp b/layers/unique_objects.cpp
index b893149..45e945d 100644
--- a/layers/unique_objects.cpp
+++ b/layers/unique_objects.cpp
@@ -43,7 +43,6 @@
 #include "vk_layer_logging.h"
 #include "vk_layer_table.h"
 #include "vk_layer_utils.h"
-#include "vk_layer_utils.h"
 #include "vk_enum_string_helper.h"
 #include "vk_validation_error_messages.h"
 #include "vk_object_types.h"
@@ -845,7 +844,8 @@
     if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pProperties) {
         std::lock_guard<std::mutex> lock(global_lock);
         for (uint32_t idx0 = 0; idx0 < *pPropertyCount; ++idx0) {
-            pProperties[idx0].currentDisplay = WrapNew(pProperties[idx0].currentDisplay);
+            VkDisplayKHR &opt_display = pProperties[idx0].currentDisplay;
+            if (opt_display) opt_display = WrapNew(opt_display);
         }
     }
     return result;
@@ -861,8 +861,8 @@
     if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pProperties) {
         std::lock_guard<std::mutex> lock(global_lock);
         for (uint32_t idx0 = 0; idx0 < *pPropertyCount; ++idx0) {
-            pProperties[idx0].displayPlaneProperties.currentDisplay =
-                WrapNew(pProperties[idx0].displayPlaneProperties.currentDisplay);
+            VkDisplayKHR &opt_display = pProperties[idx0].displayPlaneProperties.currentDisplay;
+            if (opt_display) opt_display = WrapNew(opt_display);
         }
     }
     return result;
@@ -873,15 +873,13 @@
     instance_layer_data *my_map_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), instance_layer_data_map);
     VkResult result =
         my_map_data->dispatch_table.GetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays);
-    if (VK_SUCCESS == result) {
-        if ((*pDisplayCount > 0) && pDisplays) {
-            std::lock_guard<std::mutex> lock(global_lock);
-            for (uint32_t i = 0; i < *pDisplayCount; i++) {
-                // TODO: this looks like it really wants a /reverse/ mapping. What's going on here?
-                auto it = unique_id_mapping.find(reinterpret_cast<const uint64_t &>(pDisplays[i]));
-                assert(it != unique_id_mapping.end());
-                pDisplays[i] = reinterpret_cast<VkDisplayKHR &>(it->second);
-            }
+    if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pDisplays) {
+        std::lock_guard<std::mutex> lock(global_lock);
+        for (uint32_t i = 0; i < *pDisplayCount; ++i) {
+            // TODO: this looks like it really wants a /reverse/ mapping. What's going on here?
+            auto it = unique_id_mapping.find(reinterpret_cast<const uint64_t &>(pDisplays[i]));
+            assert(it != unique_id_mapping.end());
+            pDisplays[i] = reinterpret_cast<VkDisplayKHR &>(it->second);
         }
     }
     return result;
@@ -896,7 +894,7 @@
     }
 
     VkResult result = my_map_data->dispatch_table.GetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties);
-    if (result == VK_SUCCESS && pProperties) {
+    if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pProperties) {
         std::lock_guard<std::mutex> lock(global_lock);
         for (uint32_t idx0 = 0; idx0 < *pPropertyCount; ++idx0) {
             pProperties[idx0].displayMode = WrapNew(pProperties[idx0].displayMode);
@@ -915,7 +913,7 @@
 
     VkResult result =
         my_map_data->dispatch_table.GetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties);
-    if (result == VK_SUCCESS && pProperties) {
+    if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pProperties) {
         std::lock_guard<std::mutex> lock(global_lock);
         for (uint32_t idx0 = 0; idx0 < *pPropertyCount; ++idx0) {
             pProperties[idx0].displayModeProperties.displayMode = WrapNew(pProperties[idx0].displayModeProperties.displayMode);
@@ -924,17 +922,6 @@
     return result;
 }
 
-VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode,
-                                                              uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR *pCapabilities) {
-    instance_layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), instance_layer_data_map);
-    {
-        std::lock_guard<std::mutex> lock(global_lock);
-        mode = Unwrap(mode);
-    }
-    VkResult result = dev_data->dispatch_table.GetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
-    return result;
-}
-
 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInfoEXT *pTagInfo) {
     layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
     safe_VkDebugMarkerObjectTagInfoEXT local_tag_info(pTagInfo);