diff options
| author | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-07-05 22:13:43 -0600 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-07-07 17:57:48 -0600 |
| commit | 5155afd6167b76fb484e94407af0beecaef75b78 (patch) | |
| tree | 29c240006cdc39ea74791e13f5bb1edb4ce284a4 | |
| parent | ff6e23a7f288cac766726f30422561df0370040b (diff) | |
| download | usermoji-5155afd6167b76fb484e94407af0beecaef75b78.tar.xz | |
object_track: Update extension & layer support
Move wsi enable into layer_data structure.
Add objtrack_extensions_enable to layer_data as
well to keep track if that extension has been
enabled or not.
Various updates to match latest layer & extension
proposal.
| -rw-r--r-- | layers/object_track.h | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/layers/object_track.h b/layers/object_track.h index 62bfa487..d9cd0875 100644 --- a/layers/object_track.h +++ b/layers/object_track.h @@ -23,6 +23,7 @@ */ #include "vk_layer.h" +#include "vk_layer_extension_utils.h" #include "vk_enum_string_helper.h" // Object Tracker ERROR codes @@ -74,6 +75,8 @@ typedef struct _layer_data { debug_report_data *report_data; //TODO: put instance data here VkDbgMsgCallback logging_callback; + bool wsi_lunarg_enabled; + bool objtrack_extensions_enabled; } layer_data; static std::unordered_map<void*, layer_data *> layer_data_map; @@ -101,21 +104,16 @@ template layer_data *get_my_data_ptr<layer_data>( // Internal Object Tracker Functions // -struct devExts { - bool wsi_lunarg_enabled; -}; - -static std::unordered_map<void *, struct devExts> deviceExtMap; - static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo, VkDevice device) { - uint32_t i, ext_idx; - VkLayerDispatchTable *pDisp = device_dispatch_table(device); - deviceExtMap[pDisp].wsi_lunarg_enabled = false; - for (i = 0; i < pCreateInfo->extensionCount; i++) { - if (strcmp(pCreateInfo->pEnabledExtensions[i].name, VK_WSI_LUNARG_EXTENSION_NAME) == 0) - deviceExtMap[pDisp].wsi_lunarg_enabled = true; + layer_data *my_device_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); + my_device_data->wsi_lunarg_enabled = false; + for (uint32_t i = 0; i < pCreateInfo->extensionCount; i++) { + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_WSI_LUNARG_EXTENSION_NAME) == 0) + my_device_data->wsi_lunarg_enabled = true; + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], "OBJTRACK_EXTENSIONS") == 0) + my_device_data->objtrack_extensions_enabled = true; } } @@ -457,10 +455,10 @@ explicit_CreateInstance( if (result == VK_SUCCESS) { layer_data *my_data = get_my_data_ptr(get_dispatch_key(*pInstance), layer_data_map); my_data->report_data = debug_report_create_instance( - pInstanceTable, - *pInstance, - pCreateInfo->extensionCount, - pCreateInfo->pEnabledExtensions); + pInstanceTable, + *pInstance, + pCreateInfo->extensionCount, + pCreateInfo->ppEnabledExtensionNames); initObjectTracker(my_data); create_obj(*pInstance, *pInstance, VK_OBJECT_TYPE_INSTANCE); @@ -570,7 +568,6 @@ explicit_DestroyDevice( dispatch_key key = get_dispatch_key(device); VkLayerDispatchTable *pDisp = get_dispatch_table(ObjectTracker_device_table_map, device); VkResult result = pDisp->DestroyDevice(device); - deviceExtMap.erase(pDisp); ObjectTracker_device_table_map.erase(key); assert(ObjectTracker_device_table_map.size() == 0 && "Should not have any instance mappings hanging around"); |
