layers: Complete support for VK_KHR_Display ext
Fixed using display extension only crash.
Added vkGetDisplayPlaneCapabilitiesKHR.
Fixes, that unique objects works for display extension.
Change-Id: I66727a430b9d55bfa40fdddc884f40c91aa29f11
diff --git a/layers/unique_objects.cpp b/layers/unique_objects.cpp
index 3a0945a..b8564f3 100644
--- a/layers/unique_objects.cpp
+++ b/layers/unique_objects.cpp
@@ -676,6 +676,26 @@
}
return result;
}
+
+VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode,
+ uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR *pCapabilities) {
+ layer_data *dev_data = get_my_data_ptr(get_dispatch_key(physicalDevice), layer_data_map);
+ {
+ std::lock_guard<std::mutex> lock(global_lock);
+ auto it = dev_data->unique_id_mapping.find(reinterpret_cast<uint64_t &>(mode));
+ if (it == dev_data->unique_id_mapping.end()) {
+ uint64_t unique_id = global_unique_id++;
+ dev_data->unique_id_mapping[unique_id] = reinterpret_cast<uint64_t &>(mode);
+
+ mode = reinterpret_cast<VkDisplayModeKHR &>(unique_id);
+ } else {
+ mode = reinterpret_cast<VkDisplayModeKHR &>(it->second);
+ }
+ }
+ VkResult result =
+ dev_data->instance_dispatch_table->GetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
+ return result;
+}
#endif
} // namespace unique_objects