loader: Activate layers at EnumerateGpus instead of CreateDevice
authorJon Ashburn <jon@lunarg.com>
Thu, 9 Apr 2015 00:20:54 +0000 (18:20 -0600)
committerChia-I Wu <olv@lunarg.com>
Thu, 16 Apr 2015 09:48:19 +0000 (17:48 +0800)
loader/loader.c
vk-generate.py

index d5dcf8d..b9f315e 100644 (file)
@@ -1014,6 +1014,8 @@ LOADER_EXPORT VkResult VKAPI vkEnumerateGpus(
                 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;
index c25f254..464cff6 100755 (executable)
@@ -159,16 +159,6 @@ class LoaderEntrypointsSubcommand(Subcommand):
                 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 = ""