• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright 2009 VMware, Inc.
3   * All Rights Reserved.
4   *
5   * Permission is hereby granted, free of charge, to any person obtaining a
6   * copy of this software and associated documentation files (the "Software"),
7   * to deal in the Software without restriction, including without limitation
8   * on the rights to use, copy, modify, merge, publish, distribute, sub
9   * license, and/or sell copies of the Software, and to permit persons to whom
10   * the Software is furnished to do so, subject to the following conditions:
11   *
12   * The above copyright notice and this permission notice (including the next
13   * paragraph) shall be included in all copies or substantial portions of the
14   * Software.
15   *
16   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18   * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
19   * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
20   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
21   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22   * USE OR OTHER DEALINGS IN THE SOFTWARE.
23   */
24  
25  #include "rbug.h"
26  
27  /**
28   * Small function that looks at the proto_header and selects the correct
29   * demarshal functions and return the result.
30   */
rbug_demarshal(struct rbug_proto_header * header)31  struct rbug_header * rbug_demarshal(struct rbug_proto_header *header)
32  {
33  	switch(header->opcode) {
34  	case RBUG_OP_NOOP:
35  		return (struct rbug_header *)rbug_demarshal_noop(header);
36  	case RBUG_OP_PING:
37  		return (struct rbug_header *)rbug_demarshal_ping(header);
38  	case RBUG_OP_ERROR:
39  		return (struct rbug_header *)rbug_demarshal_error(header);
40  	case RBUG_OP_PING_REPLY:
41  		return (struct rbug_header *)rbug_demarshal_ping_reply(header);
42  	case RBUG_OP_ERROR_REPLY:
43  		return (struct rbug_header *)rbug_demarshal_error_reply(header);
44  	case RBUG_OP_TEXTURE_LIST:
45  		return (struct rbug_header *)rbug_demarshal_texture_list(header);
46  	case RBUG_OP_TEXTURE_INFO:
47  		return (struct rbug_header *)rbug_demarshal_texture_info(header);
48  	case RBUG_OP_TEXTURE_WRITE:
49  		return (struct rbug_header *)rbug_demarshal_texture_write(header);
50  	case RBUG_OP_TEXTURE_READ:
51  		return (struct rbug_header *)rbug_demarshal_texture_read(header);
52  	case RBUG_OP_TEXTURE_LIST_REPLY:
53  		return (struct rbug_header *)rbug_demarshal_texture_list_reply(header);
54  	case RBUG_OP_TEXTURE_INFO_REPLY:
55  		return (struct rbug_header *)rbug_demarshal_texture_info_reply(header);
56  	case RBUG_OP_TEXTURE_READ_REPLY:
57  		return (struct rbug_header *)rbug_demarshal_texture_read_reply(header);
58  	case RBUG_OP_CONTEXT_LIST:
59  		return (struct rbug_header *)rbug_demarshal_context_list(header);
60  	case RBUG_OP_CONTEXT_INFO:
61  		return (struct rbug_header *)rbug_demarshal_context_info(header);
62  	case RBUG_OP_CONTEXT_DRAW_BLOCK:
63  		return (struct rbug_header *)rbug_demarshal_context_draw_block(header);
64  	case RBUG_OP_CONTEXT_DRAW_STEP:
65  		return (struct rbug_header *)rbug_demarshal_context_draw_step(header);
66  	case RBUG_OP_CONTEXT_DRAW_UNBLOCK:
67  		return (struct rbug_header *)rbug_demarshal_context_draw_unblock(header);
68  	case RBUG_OP_CONTEXT_DRAW_RULE:
69  		return (struct rbug_header *)rbug_demarshal_context_draw_rule(header);
70  	case RBUG_OP_CONTEXT_FLUSH:
71  		return (struct rbug_header *)rbug_demarshal_context_flush(header);
72  	case RBUG_OP_CONTEXT_LIST_REPLY:
73  		return (struct rbug_header *)rbug_demarshal_context_list_reply(header);
74  	case RBUG_OP_CONTEXT_INFO_REPLY:
75  		return (struct rbug_header *)rbug_demarshal_context_info_reply(header);
76  	case RBUG_OP_CONTEXT_DRAW_BLOCKED:
77  		return (struct rbug_header *)rbug_demarshal_context_draw_blocked(header);
78  	case RBUG_OP_SHADER_LIST:
79  		return (struct rbug_header *)rbug_demarshal_shader_list(header);
80  	case RBUG_OP_SHADER_INFO:
81  		return (struct rbug_header *)rbug_demarshal_shader_info(header);
82  	case RBUG_OP_SHADER_DISABLE:
83  		return (struct rbug_header *)rbug_demarshal_shader_disable(header);
84  	case RBUG_OP_SHADER_REPLACE:
85  		return (struct rbug_header *)rbug_demarshal_shader_replace(header);
86  	case RBUG_OP_SHADER_LIST_REPLY:
87  		return (struct rbug_header *)rbug_demarshal_shader_list_reply(header);
88  	case RBUG_OP_SHADER_INFO_REPLY:
89  		return (struct rbug_header *)rbug_demarshal_shader_info_reply(header);
90  	default:
91  		return NULL;
92  	}
93  }
94  
rbug_proto_get_name(enum rbug_opcode opcode)95  const char* rbug_proto_get_name(enum rbug_opcode opcode)
96  {
97  	switch(opcode) {
98  	case RBUG_OP_NOOP:
99  		return "RBUG_OP_NOOP";
100  	case RBUG_OP_PING:
101  		return "RBUG_OP_PING";
102  	case RBUG_OP_ERROR:
103  		return "RBUG_OP_ERROR";
104  	case RBUG_OP_PING_REPLY:
105  		return "RBUG_OP_PING_REPLY";
106  	case RBUG_OP_ERROR_REPLY:
107  		return "RBUG_OP_ERROR_REPLY";
108  	case RBUG_OP_TEXTURE_LIST:
109  		return "RBUG_OP_TEXTURE_LIST";
110  	case RBUG_OP_TEXTURE_INFO:
111  		return "RBUG_OP_TEXTURE_INFO";
112  	case RBUG_OP_TEXTURE_WRITE:
113  		return "RBUG_OP_TEXTURE_WRITE";
114  	case RBUG_OP_TEXTURE_READ:
115  		return "RBUG_OP_TEXTURE_READ";
116  	case RBUG_OP_TEXTURE_LIST_REPLY:
117  		return "RBUG_OP_TEXTURE_LIST_REPLY";
118  	case RBUG_OP_TEXTURE_INFO_REPLY:
119  		return "RBUG_OP_TEXTURE_INFO_REPLY";
120  	case RBUG_OP_TEXTURE_READ_REPLY:
121  		return "RBUG_OP_TEXTURE_READ_REPLY";
122  	case RBUG_OP_CONTEXT_LIST:
123  		return "RBUG_OP_CONTEXT_LIST";
124  	case RBUG_OP_CONTEXT_INFO:
125  		return "RBUG_OP_CONTEXT_INFO";
126  	case RBUG_OP_CONTEXT_DRAW_BLOCK:
127  		return "RBUG_OP_CONTEXT_DRAW_BLOCK";
128  	case RBUG_OP_CONTEXT_DRAW_STEP:
129  		return "RBUG_OP_CONTEXT_DRAW_STEP";
130  	case RBUG_OP_CONTEXT_DRAW_UNBLOCK:
131  		return "RBUG_OP_CONTEXT_DRAW_UNBLOCK";
132  	case RBUG_OP_CONTEXT_DRAW_RULE:
133  		return "RBUG_OP_CONTEXT_DRAW_RULE";
134  	case RBUG_OP_CONTEXT_FLUSH:
135  		return "RBUG_OP_CONTEXT_FLUSH";
136  	case RBUG_OP_CONTEXT_LIST_REPLY:
137  		return "RBUG_OP_CONTEXT_LIST_REPLY";
138  	case RBUG_OP_CONTEXT_INFO_REPLY:
139  		return "RBUG_OP_CONTEXT_INFO_REPLY";
140  	case RBUG_OP_CONTEXT_DRAW_BLOCKED:
141  		return "RBUG_OP_CONTEXT_DRAW_BLOCKED";
142  	case RBUG_OP_SHADER_LIST:
143  		return "RBUG_OP_SHADER_LIST";
144  	case RBUG_OP_SHADER_INFO:
145  		return "RBUG_OP_SHADER_INFO";
146  	case RBUG_OP_SHADER_DISABLE:
147  		return "RBUG_OP_SHADER_DISABLE";
148  	case RBUG_OP_SHADER_REPLACE:
149  		return "RBUG_OP_SHADER_REPLACE";
150  	case RBUG_OP_SHADER_LIST_REPLY:
151  		return "RBUG_OP_SHADER_LIST_REPLY";
152  	case RBUG_OP_SHADER_INFO_REPLY:
153  		return "RBUG_OP_SHADER_INFO_REPLY";
154  	default:
155  		return NULL;
156  	}
157  }
158