diff options
| author | Chris Forbes <chrisforbes@google.com> | 2016-10-04 14:54:13 +1300 |
|---|---|---|
| committer | Chris Forbes <chrisforbes@google.com> | 2016-10-04 15:18:09 +1300 |
| commit | f45686b9b504490eb94f8e4d5ac63bfa07f009fe (patch) | |
| tree | 7ca48ff866aabe776864f3708ed6d5bdebe37b13 /layers | |
| parent | feb7c6bfe3e3b9e039bec03bab231d5459343813 (diff) | |
| download | usermoji-f45686b9b504490eb94f8e4d5ac63bfa07f009fe.tar.xz | |
layers: Tweak object_tracker for 32bit some more
The previous approach doesn't actually work.
Diffstat (limited to 'layers')
| -rw-r--r-- | layers/object_tracker.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/layers/object_tracker.cpp b/layers/object_tracker.cpp index 0a8f7a70..afbd906e 100644 --- a/layers/object_tracker.cpp +++ b/layers/object_tracker.cpp @@ -33,7 +33,6 @@ #include <string.h> #include <unordered_map> -#include <type_traits> #include "vk_layer_config.h" #include "vk_layer_data.h" @@ -243,13 +242,20 @@ static void CreateSwapchainImageObject(VkDevice dispatchable_object, VkImage swa device_data->swapchainImageMap[reinterpret_cast<uint64_t &>(swapchain_image)] = pNewObjNode; } +template<typename T> +uint64_t handle_value(T handle) { + return reinterpret_cast<uint64_t &>(handle); +} +template<typename T> +uint64_t handle_value(T *handle) { + return reinterpret_cast<uint64_t>(handle); +} + template <typename T1, typename T2> static void CreateObject(T1 dispatchable_object, T2 object, VkDebugReportObjectTypeEXT object_type, bool custom_allocator) { layer_data *instance_data = get_my_data_ptr(get_dispatch_key(dispatchable_object), layer_data_map); - auto object_handle = std::is_pointer<T2>::value - ? reinterpret_cast<uint64_t>(object) - : reinterpret_cast<uint64_t &>(object); + auto object_handle = handle_value(object); log_msg(instance_data->report_data, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, object_type, object_handle, __LINE__, OBJTRACK_NONE, LayerName, "OBJ[0x%" PRIxLEAST64 "] : CREATE %s object 0x%" PRIxLEAST64, object_track_index++, @@ -268,9 +274,7 @@ template <typename T1, typename T2> static void DestroyObject(T1 dispatchable_object, T2 object, VkDebugReportObjectTypeEXT object_type, bool custom_allocator) { layer_data *device_data = get_my_data_ptr(get_dispatch_key(dispatchable_object), layer_data_map); - auto object_handle = std::is_pointer<T2>::value - ? reinterpret_cast<uint64_t>(object) - : reinterpret_cast<uint64_t &>(object); + auto object_handle = handle_value(object); auto item = device_data->object_map[object_type].find(object_handle); if (item != device_data->object_map[object_type].end()) { @@ -311,9 +315,8 @@ static bool ValidateObject(T1 dispatchable_object, T2 object, VkDebugReportObjec if (null_allowed && (object == VK_NULL_HANDLE)) { return false; } - auto object_handle = std::is_pointer<T2>::value - ? reinterpret_cast<uint64_t>(object) - : reinterpret_cast<uint64_t &>(object); + auto object_handle = handle_value(object); + layer_data *device_data = get_my_data_ptr(get_dispatch_key(dispatchable_object), layer_data_map); if (device_data->object_map[object_type].find(object_handle) == device_data->object_map[object_type].end()) { // If object is an image, also look for it in the swapchain image map |
