common: add common code for all drivers

The common code includes

 - XGL API except xglInitAndEnumerateGpus
 - helper and utility functions
diff --git a/xgl-generate.py b/xgl-generate.py
index 73e1ec2..5ffa583 100755
--- a/xgl-generate.py
+++ b/xgl-generate.py
@@ -145,10 +145,46 @@
 
         return "\n\n".join(body)
 
+class IcdDispatchTableSubcommand(Subcommand):
+    def generate_header(self):
+        return "\n".join([
+            "#include <xgl.h>",
+            "#include <xglDbg.h>"])
+
+    def generate_body(self):
+        return self._generate_icd_dispatch_table()
+
+class IcdDispatchTableSubcommand(Subcommand):
+    def generate_header(self):
+        return "\n".join([
+            "#include <xgl.h>",
+            "#include <xglDbg.h>"])
+
+    def generate_body(self):
+        return self._generate_icd_dispatch_table()
+
+class IcdDispatchEntrypointsSubcommand(Subcommand):
+    def run(self):
+        if len(self.argv) != 1:
+            print("IcdDispatchEntrypointsSubcommand requires a header to include")
+            return
+        super().run()
+
+    def generate_header(self):
+        return "\n".join([
+            "#include <xgl.h>",
+            "#include <xglDbg.h>",
+            "#include \"%s\"" % self.argv[0]])
+
+    def generate_body(self):
+        return self._generate_icd_dispatch_entrypoints()
+
 def main():
     subcommands = {
             "pretty-dummy": PrettyDummySubcommand,
             "loader": LoaderSubcommand,
+            "icd-dispatch-table": IcdDispatchTableSubcommand,
+            "icd-dispatch-entrypoints": IcdDispatchEntrypointsSubcommand,
     }
 
     if len(sys.argv) < 2 or sys.argv[1] not in subcommands: