layers: Create desc_update_template map for new objs

Store unique_objects DescriptorUpdateTemplate data in a map
for parsing UpdateTempate buffers.

Change-Id: Iab0d95a1aa2f309a3d33c8859b16543f98ca549c
diff --git a/layers/unique_objects.h b/layers/unique_objects.h
index fb46b77..eebb01e 100644
--- a/layers/unique_objects.h
+++ b/layers/unique_objects.h
@@ -33,6 +33,14 @@
 // All increments must be guarded by global_lock
 static uint64_t global_unique_id = 1;
 
+struct TEMPLATE_STATE {
+    VkDescriptorUpdateTemplateKHR desc_update_template;
+    safe_VkDescriptorUpdateTemplateCreateInfoKHR create_info;
+
+    TEMPLATE_STATE(VkDescriptorUpdateTemplateKHR update_template, safe_VkDescriptorUpdateTemplateCreateInfoKHR *pCreateInfo)
+        : desc_update_template(update_template), create_info(*pCreateInfo) {}
+};
+
 struct layer_data {
     VkInstance instance;
 
@@ -47,6 +55,8 @@
     VkDebugReportCallbackCreateInfoEXT *tmp_dbg_create_infos;
     VkDebugReportCallbackEXT *tmp_callbacks;
 
+    std::unordered_map<uint64_t, std::unique_ptr<TEMPLATE_STATE>> desc_template_map;
+
     bool wsi_enabled;
     std::unordered_map<uint64_t, uint64_t> unique_id_mapping;  // Map uniqueID to actual object handle
     VkPhysicalDevice gpu;