diff options
| author | Tobin Ehlis <tobin@lunarg.com> | 2014-12-09 07:50:34 -0700 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2014-12-11 16:07:34 -0700 |
| commit | d7ae15d39c62ce2116fba87440d3136fc5619ff8 (patch) | |
| tree | 2fa70e9fdca985a10fc43fdb4f85fb95d481b30b | |
| parent | 16bd1411e3787d8dbe18ac59a40eff0f8e96afc6 (diff) | |
| download | usermoji-d7ae15d39c62ce2116fba87440d3136fc5619ff8.tar.xz | |
glave: Made Wsi & Dbg structs code-generated. All glave trace files now code-generated.
| -rwxr-xr-x | xgl-layer-generate.py | 56 |
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: |
