layers: Add initialization of instance dispatch table

Make the layer init  separate from either device or instance dispatch
table init, since these are done at different times.
diff --git a/vk-generate.py b/vk-generate.py
index aff0d59..c6f70f6 100755
--- a/vk-generate.py
+++ b/vk-generate.py
@@ -110,22 +110,30 @@
                           "#include <vkLayer.h>",
                           "#include <string.h>"])
 
-    def _generate_init(self):
+    def _generate_init(self, type):
         stmts = []
-        for proto in self.protos:
-            if proto.name != "GetGlobalExtensionInfo":
+        func = []
+        if type == "device":
+            for proto in self.protos:
                 stmts.append("table->%s = (PFN_vk%s) gpa(gpu, \"vk%s\");" %
                         (proto.name, proto.name, proto.name))
-            else:
-                stmts.append("table->%s = vk%s; /* non-dispatchable */" %
-                             (proto.name, proto.name))
-
-        func = []
-        func.append("static inline void %s_initialize_dispatch_table(VkLayerDispatchTable *table,"
+            func.append("static inline void %s_initialize_dispatch_table(VkLayerDispatchTable *table,"
                 % self.prefix)
-        func.append("%s                                              PFN_vkGetProcAddr gpa,"
+            func.append("%s                                              PFN_vkGetProcAddr gpa,"
                 % (" " * len(self.prefix)))
-        func.append("%s                                              VkPhysicalDevice gpu)"
+            func.append("%s                                              VkPhysicalDevice gpu)"
+                % (" " * len(self.prefix)))
+        else:
+            for proto in self.protos:
+                if proto.params[0].ty != "VkInstance" and proto.params[0].ty != "VkPhysicalDevice":
+                    continue
+                stmts.append("table->%s = (PFN_vk%s) gpa(instance, \"vk%s\");" %
+                          (proto.name, proto.name, proto.name))
+            func.append("static inline void %s_init_instance_dispatch_table(VkLayerInstanceDispatchTable *table,"
+                % self.prefix)
+            func.append("%s                                              PFN_vkGetInstanceProcAddr gpa,"
+                % (" " * len(self.prefix)))
+            func.append("%s                                              VkInstance instance)"
                 % (" " * len(self.prefix)))
         func.append("{")
         func.append("    %s" % "\n    ".join(stmts))
@@ -134,7 +142,8 @@
         return "\n".join(func)
 
     def generate_body(self):
-        body = [self._generate_init()]
+        body = [self._generate_init("device"),
+                self._generate_init("instance")]
 
         return "\n\n".join(body)