aboutsummaryrefslogtreecommitdiff
path: root/layers/unique_objects.cpp
diff options
context:
space:
mode:
authorNorbert Nopper <Norbert.Nopper@nxp.com>2016-11-25 07:55:13 +0100
committerMark Lobodzinski <mark@lunarg.com>2016-11-29 13:24:05 -0700
commit09854fbb01a3c10287b759e88f40e5c05c9be9ba (patch)
tree11a85a8261e364b5e0f10155fe6320bf8c769c04 /layers/unique_objects.cpp
parentd328f5199e828b2ab80f13d05871f31c1c9d0a96 (diff)
downloadusermoji-09854fbb01a3c10287b759e88f40e5c05c9be9ba.tar.xz
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
Diffstat (limited to 'layers/unique_objects.cpp')
-rw-r--r--layers/unique_objects.cpp20
1 files changed, 20 insertions, 0 deletions
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<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