From 09854fbb01a3c10287b759e88f40e5c05c9be9ba Mon Sep 17 00:00:00 2001 From: Norbert Nopper Date: Fri, 25 Nov 2016 07:55:13 +0100 Subject: 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 --- layers/unique_objects.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'layers/unique_objects.cpp') diff --git a/layers/unique_objects.cpp b/layers/unique_objects.cpp index 3a0945a8..b8564f36 100644 --- a/layers/unique_objects.cpp +++ b/layers/unique_objects.cpp @@ -676,6 +676,26 @@ VKAPI_ATTR VkResult VKAPI_CALL GetDisplayModePropertiesKHR(VkPhysicalDevice phys } 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 lock(global_lock); + auto it = dev_data->unique_id_mapping.find(reinterpret_cast(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(mode); + + mode = reinterpret_cast(unique_id); + } else { + mode = reinterpret_cast(it->second); + } + } + VkResult result = + dev_data->instance_dispatch_table->GetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities); + return result; +} #endif } // namespace unique_objects -- cgit v1.2.3