loader: Activate layers at EnumerateGpus instead of CreateDevice
diff --git a/loader/loader.c b/loader/loader.c
index d5dcf8d..b9f315e 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1014,6 +1014,8 @@
                 const VkLayerDispatchTable **disp;
                 disp = (const VkLayerDispatchTable **) gpus[i];
                 *disp = icd->loader_dispatch + i;
+                loader_activate_layers(icd, i, ptr_instance->extension_count,
+                        (const char *const*) ptr_instance->extension_names);
             }
 
             count += n;
diff --git a/vk-generate.py b/vk-generate.py
index c25f254..464cff6 100755
--- a/vk-generate.py
+++ b/vk-generate.py
@@ -159,16 +159,6 @@
                 func.append("    VkResult res;")
             func.append("")
 
-            # active layers before dispatching CreateDevice
-            if proto.name == "CreateDevice":
-                func.append("    {")
-                func.append("        uint32_t gpu_index;")
-                func.append("        struct loader_icd *icd = loader_get_icd((const VkBaseLayerObject *) gpu, &gpu_index);")
-                func.append("        loader_activate_layers((void *) icd, gpu_index, %s->extensionCount, %s->ppEnabledExtensionNames);"
-                        % (proto.params[1].name, proto.params[1].name))
-                func.append("    }")
-                func.append("")
-
             # get dispatch table and unwrap GPUs
             for param in proto.params:
                 stmt = ""