loader: Remove dead code from loader gen script
authorMark Lobodzinski <mark@lunarg.com>
Tue, 11 Oct 2016 15:17:57 +0000 (09:17 -0600)
committerMark Lobodzinski <mark@lunarg.com>
Wed, 12 Oct 2016 19:45:33 +0000 (13:45 -0600)
Change-Id: Ie6ad81c1f0097b93c3006a737d57a69d81ee70e8

loader/vk-loader-generate.py

index 1be9898..6df17b9 100755 (executable)
@@ -115,127 +115,6 @@ class Subcommand(object):
     def generate_footer(self):
         pass
 
-class DevExtTrampolineSubcommand(Subcommand):
-    def generate_header(self):
-        lines = []
-        lines.append("#include \"vk_loader_platform.h\"")
-        lines.append("#include \"loader.h\"")
-        lines.append("#if defined(__linux__)")
-        lines.append("#pragma GCC optimize(3)  // force gcc to use tail-calls")
-        lines.append("#endif")
-        return "\n".join(lines)
-
-    def generate_body(self):
-        lines = []
-        for i in range(250):
-            lines.append('\nVKAPI_ATTR void VKAPI_CALL vkDevExt%s(VkDevice device)' % i)
-            lines.append('{')
-            lines.append('    const struct loader_dev_dispatch_table *disp;')
-            lines.append('    disp = loader_get_dev_dispatch(device);')
-            lines.append('    disp->ext_dispatch.DevExt[%s](device);' % i)
-            lines.append('}')
-        lines.append('')
-        lines.append('void *loader_get_dev_ext_trampoline(uint32_t index)')
-        lines.append('{')
-        lines.append('    switch (index) {')
-        for i in range(250):
-            lines.append('        case %s:' % i)
-            lines.append('            return vkDevExt%s;' % i)
-        lines.append('    }')
-        lines.append('    return NULL;')
-        lines.append('}')
-        return "\n".join(lines)
-
-class LoaderEntrypointsSubcommand(Subcommand):
-    def generate_header(self):
-        return "#include \"loader.h\""
-
-    def _generate_object_setup(self, proto):
-        method = "loader_init_dispatch"
-        cond = "res == VK_SUCCESS"
-        setup = []
-
-        if not self._requires_special_trampoline_code(proto.name):
-           return setup
-
-        if "Get" in proto.name:
-            method = "loader_set_dispatch"
-
-        if proto.name == "GetSwapchainInfoKHR":
-            ptype = proto.params[-3].name
-            psize = proto.params[-2].name
-            pdata = proto.params[-1].name
-            cond = ("%s == VK_SWAP_CHAIN_INFO_TYPE_PERSISTENT_IMAGES_KHR && "
-                    "%s && %s" % (ptype, pdata, cond))
-            setup.append("VkSwapchainImageInfoKHR *info = %s;" % pdata)
-            setup.append("size_t count = *%s / sizeof(*info), i;" % psize)
-            setup.append("for (i = 0; i < count; i++) {")
-            setup.append("    %s(info[i].image, disp);" % method)
-            setup.append("    %s(info[i].memory, disp);" % method)
-            setup.append("}")
-        else:
-            obj_params = proto.object_out_params()
-            for param in obj_params:
-                setup.append("%s(*%s, disp);" % (method, param.name))
-
-        if setup:
-            joined = "\n        ".join(setup)
-            setup = []
-            setup.append("    if (%s) {" % cond)
-            setup.append("        " + joined)
-            setup.append("    }")
-
-        return "\n".join(setup)
-
-    def _generate_loader_dispatch_entrypoints(self, qual=""):
-        if qual:
-            qual += " "
-
-        funcs = []
-        for proto in self.protos:
-            if self._is_loader_non_trampoline_entrypoint(proto):
-                continue
-            func = []
-
-            obj_setup = self._generate_object_setup(proto)
-
-            func.append(qual + proto.c_func(prefix="vk", attr="VKAPI"))
-            func.append("{")
-
-            # declare local variables
-            func.append("    const VkLayerDispatchTable *disp;")
-            if proto.ret != 'void' and obj_setup:
-                func.append("    VkResult res;")
-            func.append("")
-
-            # get dispatch table
-            func.append("    disp = loader_get_dispatch(%s);" %
-                    proto.params[0].name)
-            func.append("")
-
-            # dispatch!
-            dispatch = "disp->%s;" % proto.c_call()
-            if proto.ret == 'void':
-                func.append("    " + dispatch)
-            elif not obj_setup:
-                func.append("    return " + dispatch)
-            else:
-                func.append("    res = " + dispatch)
-                func.append(obj_setup)
-                func.append("")
-                func.append("    return res;")
-
-            func.append("}")
-
-            funcs.append("\n".join(func))
-
-        return "\n\n".join(funcs)
-
-    def generate_body(self):
-        body = [self._generate_loader_dispatch_entrypoints("LOADER_EXPORT")]
-
-        return "\n\n".join(body)
-
 class DispatchTableOpsSubcommand(Subcommand):
     def run(self):
         if len(self.argv) != 1:
@@ -372,65 +251,6 @@ class WinDefFileSubcommand(Subcommand):
 
         return "\n".join(body)
 
-class LoaderGetProcAddrSubcommand(Subcommand):
-    def run(self):
-        self.prefix = "vk"
-
-        # we could get the list from argv if wanted
-        self.intercepted = [proto.name for proto in self.protos]
-
-        for proto in self.protos:
-            if proto.name == "GetDeviceProcAddr":
-                self.gpa = proto
-
-        super().run()
-
-    def generate_header(self):
-        return "\n".join(["#include <string.h>"])
-
-    def generate_body(self):
-        lookups = []
-        for proto in self.protos:
-            if proto.name not in self.intercepted:
-                lookups.append("/* no %s%s */" % (self.prefix, proto.name))
-                continue
-
-            lookups.append("if (!strcmp(name, \"%s\"))" % proto.name)
-            lookups.append("    return (%s) %s%s;" %
-                    (self.gpa.ret, self.prefix, proto.name))
-
-        special_lookups = []
-        for proto in self.protos:
-            if self._is_loader_non_trampoline_entrypoint(proto) or self._requires_special_trampoline_code(proto.name):
-                special_lookups.append("if (!strcmp(name, \"%s\"))" % proto.name)
-                special_lookups.append("    return (%s) %s%s;" %
-                        (self.gpa.ret, self.prefix, proto.name))
-            else:
-                continue
-        body = []
-        body.append("static inline %s globalGetProcAddr(const char *name)" %
-                self.gpa.ret)
-        body.append("{")
-        body.append(generate_get_proc_addr_check("name"))
-        body.append("")
-        body.append("    name += 2;")
-        body.append("    %s" % "\n    ".join(lookups))
-        body.append("")
-        body.append("    return NULL;")
-        body.append("}")
-        body.append("")
-        body.append("static inline void *loader_non_passthrough_gpa(const char *name)")
-        body.append("{")
-        body.append(generate_get_proc_addr_check("name"))
-        body.append("")
-        body.append("    name += 2;")
-        body.append("    %s" % "\n    ".join(special_lookups))
-        body.append("")
-        body.append("    return NULL;")
-        body.append("}")
-
-        return "\n".join(body)
-
 def main():
 
     wsi = {
@@ -443,11 +263,8 @@ def main():
     }
 
     subcommands = {
-            "dev-ext-trampoline": DevExtTrampolineSubcommand,
-            "loader-entrypoints": LoaderEntrypointsSubcommand,
             "dispatch-table-ops": DispatchTableOpsSubcommand,
             "win-def-file": WinDefFileSubcommand,
-            "loader-get-proc-addr": LoaderGetProcAddrSubcommand,
     }
 
     if len(sys.argv) < 3 or sys.argv[1] not in wsi or sys.argv[2] not in subcommands: