aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobin@lunarg.com>2014-12-09 07:50:34 -0700
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2014-12-11 16:07:34 -0700
commitd7ae15d39c62ce2116fba87440d3136fc5619ff8 (patch)
tree2fa70e9fdca985a10fc43fdb4f85fb95d481b30b
parent16bd1411e3787d8dbe18ac59a40eff0f8e96afc6 (diff)
downloadusermoji-d7ae15d39c62ce2116fba87440d3136fc5619ff8.tar.xz
glave: Made Wsi & Dbg structs code-generated. All glave trace files now code-generated.
-rwxr-xr-xxgl-layer-generate.py56
1 files changed, 52 insertions, 4 deletions
diff --git a/xgl-layer-generate.py b/xgl-layer-generate.py
index cdec92d3..cb634f79 100755
--- a/xgl-layer-generate.py
+++ b/xgl-layer-generate.py
@@ -1534,6 +1534,28 @@ class Subcommand(object):
if_body.append('}\n')
return "\n".join(if_body)
+ def _generate_interp_funcs_ext(self, func_class='Wsi'):
+ if_body = []
+ for proto in self.protos:
+ if func_class in proto.name:
+ if_body.append('typedef struct struct_xgl%s {' % proto.name)
+ if_body.append(' glv_trace_packet_header* pHeader;')
+ for p in proto.params:
+ if_body.append(' %s %s;' % (p.ty, p.name))
+ if 'XGL_VOID' != proto.ret:
+ if_body.append(' %s result;' % proto.ret)
+ if_body.append('} struct_xgl%s;\n' % proto.name)
+ if_body.append('static struct_xgl%s* interpret_body_as_xgl%s(glv_trace_packet_header* pHeader)' % (proto.name, proto.name))
+ if_body.append('{')
+ if_body.append(' struct_xgl%s* pPacket = (struct_xgl%s*)pHeader->pBody;' % (proto.name, proto.name))
+ if_body.append(' pPacket->pHeader = pHeader;')
+ for p in proto.params:
+ if '*' in p.ty:
+ if_body.append(' pPacket->%s = (%s)glv_trace_packet_interpret_buffer_pointer(pHeader, (intptr_t)pPacket->%s);' % (p.name, p.ty, p.name))
+ if_body.append(' return pPacket;')
+ if_body.append('}\n')
+ return "\n".join(if_body)
+
class LayerFuncsSubcommand(Subcommand):
def generate_header(self):
return '#include <xglLayer.h>\n#include "loader.h"'
@@ -1920,7 +1942,7 @@ class GlavePacketID(Subcommand):
return "\n".join(body)
-class GlaveStructsCore(Subcommand):
+class GlaveCoreStructs(Subcommand):
def generate_header(self):
header_txt = []
header_txt.append('#pragma once\n')
@@ -1971,6 +1993,19 @@ class GlaveWsiC(Subcommand):
return "\n".join(body)
+class GlaveWsiStructs(Subcommand):
+ def generate_header(self):
+ header_txt = []
+ header_txt.append('#pragma once\n')
+ header_txt.append('#include "xglWsiX11Ext.h"')
+ header_txt.append('#include "glv_trace_packet_utils.h"\n')
+ return "\n".join(header_txt)
+
+ def generate_body(self):
+ body = [self._generate_interp_funcs_ext()]
+
+ return "\n".join(body)
+
class GlaveDbgHeader(Subcommand):
def generate_header(self):
header_txt = []
@@ -2009,6 +2044,19 @@ class GlaveDbgC(Subcommand):
return "\n".join(body)
+class GlaveDbgStructs(Subcommand):
+ def generate_header(self):
+ header_txt = []
+ header_txt.append('#pragma once\n')
+ header_txt.append('#include "xglDbg.h"')
+ header_txt.append('#include "glv_trace_packet_utils.h"\n')
+ return "\n".join(header_txt)
+
+ def generate_body(self):
+ body = [self._generate_interp_funcs_ext('Dbg')]
+
+ return "\n".join(body)
+
def main():
subcommands = {
"layer-funcs" : LayerFuncsSubcommand,
@@ -2021,13 +2069,13 @@ def main():
"glave-trace-h" : GlaveTraceHeader,
"glave-trace-c" : GlaveTraceC,
"glave-packet-id" : GlavePacketID,
- "glave-core-structs" : GlaveStructsCore,
+ "glave-core-structs" : GlaveCoreStructs,
"glave-wsi-trace-h" : GlaveWsiHeader,
"glave-wsi-trace-c" : GlaveWsiC,
-# "glave-wsi-trace-structs" : GlaveWsiStructs,
+ "glave-wsi-trace-structs" : GlaveWsiStructs,
"glave-dbg-trace-h" : GlaveDbgHeader,
"glave-dbg-trace-c" : GlaveDbgC,
-# "glave-dbg-trace-structs" : GlaveDbgStructs,
+ "glave-dbg-trace-structs" : GlaveDbgStructs,
}
if len(sys.argv) < 2 or sys.argv[1] not in subcommands: