loader: Make VkInstance a dispatchable object and init with instance table
diff --git a/include/vkLayer.h b/include/vkLayer.h
index 65656a0..6d1c00d 100644
--- a/include/vkLayer.h
+++ b/include/vkLayer.h
@@ -25,8 +25,8 @@
 
 typedef struct VkLayerDispatchTable_
 {
-    PFN_vkGetProcAddr GetProcAddr;
     PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
+    PFN_vkGetProcAddr GetProcAddr;
     PFN_vkCreateInstance CreateInstance;
     PFN_vkDestroyInstance DestroyInstance;
     PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
@@ -155,6 +155,24 @@
     PFN_vkQueuePresentWSI QueuePresentWSI;
 } VkLayerDispatchTable;
 
+typedef struct VkLayerInstanceDispatchTable_
+{
+    PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
+    PFN_vkGetProcAddr GetProcAddr;
+    /* non-dispatchable PFN_vkCreateInstance CreateInstance; */
+    PFN_vkDestroyInstance DestroyInstance;
+    PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
+    PFN_vkGetPhysicalDeviceInfo GetPhysicalDeviceInfo;
+    PFN_vkCreateDevice CreateDevice;
+    /* non-dispatchable PFN_vkGetGlobalExtensionInfo GetGlobalExtensionInfo; */
+    PFN_vkGetPhysicalDeviceExtensionInfo GetPhysicalDeviceExtensionInfo;
+    PFN_vkEnumerateLayers EnumerateLayers;
+    PFN_vkGetMultiDeviceCompatibility GetMultiDeviceCompatibility;
+    PFN_vkDbgRegisterMsgCallback DbgRegisterMsgCallback;
+    PFN_vkDbgUnregisterMsgCallback DbgUnregisterMsgCallback;
+    PFN_vkDbgSetGlobalOption DbgSetGlobalOption;
+} VkLayerInstanceDispatchTable;
+
 // LL node for tree of dbg callback functions
 typedef struct _VK_LAYER_DBG_FUNCTION_NODE
 {