layers: Update objecttracker dispatch table handling

OT was using old style dispatch table handling (and for some reason
had multiple device dispatch tables!). Updated to be consistent with
all other validation layers.
diff --git a/scripts/object_tracker_generator.py b/scripts/object_tracker_generator.py
index 6bcfbcb..710d1e9 100644
--- a/scripts/object_tracker_generator.py
+++ b/scripts/object_tracker_generator.py
@@ -973,9 +973,13 @@
             # Pull out the text for each of the parameters, separate them by commas in a list
             paramstext = ', '.join([str(param.text) for param in params])
             # Use correct dispatch table
-            disp_type = cmdinfo.elem.find('param/type').text
             disp_name = cmdinfo.elem.find('param/name').text
-            dispatch_table = 'get_dispatch_table(ot_%s_table_map, %s)->' % (self.GetDispType(disp_type), disp_name)
+            disp_type = cmdinfo.elem.find('param/type').text
+            if disp_type in ["VkInstance", "VkPhysicalDevice"] or cmdname == 'vkCreateInstance':
+                object_type = 'instance'
+            else:
+                object_type = 'device'
+            dispatch_table = 'GetLayerDataPtr(get_dispatch_key(%s), layer_data_map)->%s_dispatch_table.' % (disp_name, object_type)
             API = cmdinfo.elem.attrib.get('name').replace('vk', dispatch_table, 1)
             # Put all this together for the final down-chain call
             if assignresult != '':