• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  ** Copyright 2011, The Android Open Source Project
3  **
4  ** Licensed under the Apache License, Version 2.0 (the "License");
5  ** you may not use this file except in compliance with the License.
6  ** You may obtain a copy of the License at
7  **
8  **     http://www.apache.org/licenses/LICENSE-2.0
9  **
10  ** Unless required by applicable law or agreed to in writing, software
11  ** distributed under the License is distributed on an "AS IS" BASIS,
12  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  ** See the License for the specific language governing permissions and
14  ** limitations under the License.
15  */
16 
17 // auto generated by generate_MessageFormatter_java.py"
18 
19 package com.android.ide.eclipse.gldebugger;
20 
21 import java.nio.ByteBuffer;
22 
23 public class MessageFormatter {
24 
formatFloats(int count, final ByteBuffer data)25     static String formatFloats(int count, final ByteBuffer data) {
26         if (data.remaining() == 0)
27             return "{}";
28         data.order(GLFramesView.TARGET_BYTE_ORDER);
29         String ret = "{";
30         for (int i = 0; i < count; i++) {
31             ret += Float.intBitsToFloat(data.getInt());
32             if (i < count - 1)
33                 ret += ", ";
34         }
35         return ret + "}";
36     }
37 
formatInts(int count, final ByteBuffer data)38     static String formatInts(int count, final ByteBuffer data) {
39         if (data.remaining() == 0)
40             return "{}";
41         data.order(GLFramesView.TARGET_BYTE_ORDER);
42         String ret = "{";
43         for (int i = 0; i < count; i++) {
44             ret += data.getInt();
45             if (i < count - 1)
46                 ret += ", ";
47         }
48         return ret + "}";
49     }
50 
formatUInts(int count, final ByteBuffer data)51     static String formatUInts(int count, final ByteBuffer data) {
52         if (data.remaining() == 0)
53             return "{}";
54         data.order(GLFramesView.TARGET_BYTE_ORDER);
55         String ret = "{";
56         for (int i = 0; i < count; i++) {
57             long bits = data.getInt() & 0xffffffff;
58             ret += bits;
59             if (i < count - 1)
60                 ret += ", ";
61         }
62         return ret + "}";
63     }
64 
formatMatrix(int columns, int count, final ByteBuffer data)65     static String formatMatrix(int columns, int count, final ByteBuffer data) {
66         if (data.remaining() == 0)
67             return "{}";
68         data.order(GLFramesView.TARGET_BYTE_ORDER);
69         String ret = "{";
70         for (int i = 0; i < count; i++) {
71             ret += Float.intBitsToFloat(data.getInt());
72             if (i < count - 1)
73                 ret += ", ";
74             if (i % columns == columns - 1)
75                 ret += "\n                                             ";
76         }
77         return ret + "}";
78     }
79 
format(final DebuggerMessage.Message msg, final boolean code)80     public static String format(final DebuggerMessage.Message msg,
81                                 final boolean code) {
82         String str;
83         switch (msg.getFunction()) {
84             case glActiveTexture:
85                 str = String.format("%s(%s%s)",
86                     (code ? "glActiveTexture" : "void")
87                     , (code ? "/*texture*/ " : "texture=")
88                     , GLEnum.valueOf(msg.getArg0()));
89                 break;
90             case glAttachShader:
91                 str = String.format("%s(%s%s, %s%s)",
92                     (code ? "glAttachShader" : "void")
93                     , (code ? "/*program*/ " : "program=")
94                     , (code ? "program_" : "") + msg.getArg0()
95                     , (code ? "/*shader*/ " : "shader=")
96                     , (code ? "shader_" : "") + msg.getArg1());
97                 break;
98             case glBindAttribLocation:
99                 str = String.format("%s(%s%s, %s%s, %s%s)",
100                     (code ? "glBindAttribLocation" : "void")
101                     , (code ? "/*program*/ " : "program=")
102                     , (code ? "program_" : "") + msg.getArg0()
103                     , (code ? "/*index*/ " : "index=")
104                     , msg.getArg1()
105                     , (code ? "/*name*/ " : "name=")
106                     , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
107                 break;
108             case glBindBuffer:
109                 str = String.format("%s(%s%s, %s%s)",
110                     (code ? "glBindBuffer" : "void")
111                     , (code ? "/*target*/ " : "target=")
112                     , GLEnum.valueOf(msg.getArg0())
113                     , (code ? "/*buffer*/ " : "buffer=")
114                     , (code ? "buffer_" : "") + msg.getArg1());
115                 break;
116             case glBindFramebuffer:
117                 str = String.format("%s(%s%s, %s%s)",
118                     (code ? "glBindFramebuffer" : "void")
119                     , (code ? "/*target*/ " : "target=")
120                     , GLEnum.valueOf(msg.getArg0())
121                     , (code ? "/*framebuffer*/ " : "framebuffer=")
122                     , (code ? "framebuffer_" : "") + msg.getArg1());
123                 break;
124             case glBindRenderbuffer:
125                 str = String.format("%s(%s%s, %s%s)",
126                     (code ? "glBindRenderbuffer" : "void")
127                     , (code ? "/*target*/ " : "target=")
128                     , GLEnum.valueOf(msg.getArg0())
129                     , (code ? "/*renderbuffer*/ " : "renderbuffer=")
130                     , (code ? "renderbuffer_" : "") + msg.getArg1());
131                 break;
132             case glBindTexture:
133                 str = String.format("%s(%s%s, %s%s)",
134                     (code ? "glBindTexture" : "void")
135                     , (code ? "/*target*/ " : "target=")
136                     , GLEnum.valueOf(msg.getArg0())
137                     , (code ? "/*texture*/ " : "texture=")
138                     , (code ? "texture_" : "") + msg.getArg1());
139                 break;
140             case glBlendColor:
141                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
142                     (code ? "glBlendColor" : "void")
143                     , (code ? "/*red*/ " : "red=")
144                     , Float.intBitsToFloat(msg.getArg0())
145                     , (code ? "/*green*/ " : "green=")
146                     , Float.intBitsToFloat(msg.getArg1())
147                     , (code ? "/*blue*/ " : "blue=")
148                     , Float.intBitsToFloat(msg.getArg2())
149                     , (code ? "/*alpha*/ " : "alpha=")
150                     , Float.intBitsToFloat(msg.getArg3()));
151                 break;
152             case glBlendEquation:
153                 str = String.format("%s(%s%s)",
154                     (code ? "glBlendEquation" : "void")
155                     , (code ? "/*mode*/ " : "mode=")
156                     , GLEnum.valueOf(msg.getArg0()));
157                 break;
158             case glBlendEquationSeparate:
159                 str = String.format("%s(%s%s, %s%s)",
160                     (code ? "glBlendEquationSeparate" : "void")
161                     , (code ? "/*modeRGB*/ " : "modeRGB=")
162                     , GLEnum.valueOf(msg.getArg0())
163                     , (code ? "/*modeAlpha*/ " : "modeAlpha=")
164                     , GLEnum.valueOf(msg.getArg1()));
165                 break;
166             case glBlendFunc:
167                 str = String.format("%s(%s%s, %s%s)",
168                     (code ? "glBlendFunc" : "void")
169                     , (code ? "/*sfactor*/ " : "sfactor=")
170                     , GLEnum.valueOf(msg.getArg0())
171                     , (code ? "/*dfactor*/ " : "dfactor=")
172                     , GLEnum.valueOf(msg.getArg1()));
173                 break;
174             case glBlendFuncSeparate:
175                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
176                     (code ? "glBlendFuncSeparate" : "void")
177                     , (code ? "/*srcRGB*/ " : "srcRGB=")
178                     , GLEnum.valueOf(msg.getArg0())
179                     , (code ? "/*dstRGB*/ " : "dstRGB=")
180                     , GLEnum.valueOf(msg.getArg1())
181                     , (code ? "/*srcAlpha*/ " : "srcAlpha=")
182                     , GLEnum.valueOf(msg.getArg2())
183                     , (code ? "/*dstAlpha*/ " : "dstAlpha=")
184                     , GLEnum.valueOf(msg.getArg3()));
185                 break;
186             case glBufferData:
187                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
188                     (code ? "glBufferData" : "void")
189                     , (code ? "/*target*/ " : "target=")
190                     , GLEnum.valueOf(msg.getArg0())
191                     , (code ? "/*size*/ " : "size=")
192                     , msg.getArg1()
193                     , (code ? "/*data*/ " : "data=")
194                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
195                     , (code ? "/*usage*/ " : "usage=")
196                     , GLEnum.valueOf(msg.getArg3()));
197                 break;
198             case glBufferSubData:
199                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
200                     (code ? "glBufferSubData" : "void")
201                     , (code ? "/*target*/ " : "target=")
202                     , GLEnum.valueOf(msg.getArg0())
203                     , (code ? "/*offset*/ " : "offset=")
204                     , msg.getArg1()
205                     , (code ? "/*size*/ " : "size=")
206                     , msg.getArg2()
207                     , (code ? "/*data*/ " : "data=")
208                     , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
209                 break;
210             case glCheckFramebufferStatus:
211                 str = String.format("%s(%s%s)",
212                     (code ? "glCheckFramebufferStatus" : GLEnum.valueOf(msg.getRet()))
213                     , (code ? "/*target*/ " : "target=")
214                     , GLEnum.valueOf(msg.getArg0()));
215                 break;
216             case glClear:
217                 str = String.format("%s(%s%s)",
218                     (code ? "glClear" : "void")
219                     , (code ? "/*mask*/ " : "mask=")
220                     , msg.getArg0());
221                 break;
222             case glClearColor:
223                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
224                     (code ? "glClearColor" : "void")
225                     , (code ? "/*red*/ " : "red=")
226                     , Float.intBitsToFloat(msg.getArg0())
227                     , (code ? "/*green*/ " : "green=")
228                     , Float.intBitsToFloat(msg.getArg1())
229                     , (code ? "/*blue*/ " : "blue=")
230                     , Float.intBitsToFloat(msg.getArg2())
231                     , (code ? "/*alpha*/ " : "alpha=")
232                     , Float.intBitsToFloat(msg.getArg3()));
233                 break;
234             case glClearDepthf:
235                 str = String.format("%s(%s%s)",
236                     (code ? "glClearDepthf" : "void")
237                     , (code ? "/*depth*/ " : "depth=")
238                     , Float.intBitsToFloat(msg.getArg0()));
239                 break;
240             case glClearStencil:
241                 str = String.format("%s(%s%s)",
242                     (code ? "glClearStencil" : "void")
243                     , (code ? "/*s*/ " : "s=")
244                     , msg.getArg0());
245                 break;
246             case glColorMask:
247                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
248                     (code ? "glColorMask" : "void")
249                     , (code ? "/*red*/ " : "red=")
250                     , msg.getArg0()
251                     , (code ? "/*green*/ " : "green=")
252                     , msg.getArg1()
253                     , (code ? "/*blue*/ " : "blue=")
254                     , msg.getArg2()
255                     , (code ? "/*alpha*/ " : "alpha=")
256                     , msg.getArg3());
257                 break;
258             case glCompileShader:
259                 str = String.format("%s(%s%s)",
260                     (code ? "glCompileShader" : "void")
261                     , (code ? "/*shader*/ " : "shader=")
262                     , (code ? "shader_" : "") + msg.getArg0());
263                 break;
264             case glCompressedTexImage2D:
265                 // FIXME: this function uses pointers, debugger may send data in msg.data
266                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
267                     (code ? "glCompressedTexImage2D" : "void")
268                     , (code ? "/*target*/ " : "target=")
269                     , GLEnum.valueOf(msg.getArg0())
270                     , (code ? "/*level*/ " : "level=")
271                     , msg.getArg1()
272                     , (code ? "/*internalformat*/ " : "internalformat=")
273                     , GLEnum.valueOf(msg.getArg2())
274                     , (code ? "/*width*/ " : "width=")
275                     , msg.getArg3()
276                     , (code ? "/*height*/ " : "height=")
277                     , msg.getArg4()
278                     , (code ? "/*border*/ " : "border=")
279                     , msg.getArg5()
280                     , (code ? "/*imageSize*/ " : "imageSize=")
281                     , msg.getArg6()
282                     , (code ? "/*data*/ " : "data=")
283                     , (code ? "arg7" : "0x" + Integer.toHexString(msg.getArg7())));
284                 break;
285             case glCompressedTexSubImage2D:
286                 // FIXME: this function uses pointers, debugger may send data in msg.data
287                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
288                     (code ? "glCompressedTexSubImage2D" : "void")
289                     , (code ? "/*target*/ " : "target=")
290                     , GLEnum.valueOf(msg.getArg0())
291                     , (code ? "/*level*/ " : "level=")
292                     , msg.getArg1()
293                     , (code ? "/*xoffset*/ " : "xoffset=")
294                     , msg.getArg2()
295                     , (code ? "/*yoffset*/ " : "yoffset=")
296                     , msg.getArg3()
297                     , (code ? "/*width*/ " : "width=")
298                     , msg.getArg4()
299                     , (code ? "/*height*/ " : "height=")
300                     , msg.getArg5()
301                     , (code ? "/*format*/ " : "format=")
302                     , GLEnum.valueOf(msg.getArg6())
303                     , (code ? "/*imageSize*/ " : "imageSize=")
304                     , msg.getArg7()
305                     , (code ? "/*data*/ " : "data=")
306                     , (code ? "arg8" : "0x" + Integer.toHexString(msg.getArg8())));
307                 break;
308             case glCopyTexImage2D:
309                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
310                     (code ? "glCopyTexImage2D" : "void")
311                     , (code ? "/*target*/ " : "target=")
312                     , GLEnum.valueOf(msg.getArg0())
313                     , (code ? "/*level*/ " : "level=")
314                     , msg.getArg1()
315                     , (code ? "/*internalformat*/ " : "internalformat=")
316                     , GLEnum.valueOf(msg.getArg2())
317                     , (code ? "/*x*/ " : "x=")
318                     , msg.getArg3()
319                     , (code ? "/*y*/ " : "y=")
320                     , msg.getArg4()
321                     , (code ? "/*width*/ " : "width=")
322                     , msg.getArg5()
323                     , (code ? "/*height*/ " : "height=")
324                     , msg.getArg6()
325                     , (code ? "/*border*/ " : "border=")
326                     , msg.getArg7());
327                 break;
328             case glCopyTexSubImage2D:
329                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
330                     (code ? "glCopyTexSubImage2D" : "void")
331                     , (code ? "/*target*/ " : "target=")
332                     , GLEnum.valueOf(msg.getArg0())
333                     , (code ? "/*level*/ " : "level=")
334                     , msg.getArg1()
335                     , (code ? "/*xoffset*/ " : "xoffset=")
336                     , msg.getArg2()
337                     , (code ? "/*yoffset*/ " : "yoffset=")
338                     , msg.getArg3()
339                     , (code ? "/*x*/ " : "x=")
340                     , msg.getArg4()
341                     , (code ? "/*y*/ " : "y=")
342                     , msg.getArg5()
343                     , (code ? "/*width*/ " : "width=")
344                     , msg.getArg6()
345                     , (code ? "/*height*/ " : "height=")
346                     , msg.getArg7());
347                 break;
348             case glCreateProgram:
349                 str = String.format("%s()",
350                     (code ? "glCreateProgram" : msg.getRet())
351 );
352                 break;
353             case glCreateShader:
354                 str = String.format("%s(%s%s)",
355                     (code ? "glCreateShader" : msg.getRet())
356                     , (code ? "/*type*/ " : "type=")
357                     , GLEnum.valueOf(msg.getArg0()));
358                 break;
359             case glCullFace:
360                 str = String.format("%s(%s%s)",
361                     (code ? "glCullFace" : "void")
362                     , (code ? "/*mode*/ " : "mode=")
363                     , GLEnum.valueOf(msg.getArg0()));
364                 break;
365             case glDeleteBuffers:
366                 str = String.format("%s(%s%s, %s%s)",
367                     (code ? "glDeleteBuffers" : "void")
368                     , (code ? "/*n*/ " : "n=")
369                     , msg.getArg0()
370                     , (code ? "/*buffers*/ " : "buffers=")
371                     , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
372                 break;
373             case glDeleteFramebuffers:
374                 str = String.format("%s(%s%s, %s%s)",
375                     (code ? "glDeleteFramebuffers" : "void")
376                     , (code ? "/*n*/ " : "n=")
377                     , msg.getArg0()
378                     , (code ? "/*framebuffers*/ " : "framebuffers=")
379                     , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
380                 break;
381             case glDeleteProgram:
382                 str = String.format("%s(%s%s)",
383                     (code ? "glDeleteProgram" : "void")
384                     , (code ? "/*program*/ " : "program=")
385                     , (code ? "program_" : "") + msg.getArg0());
386                 break;
387             case glDeleteRenderbuffers:
388                 str = String.format("%s(%s%s, %s%s)",
389                     (code ? "glDeleteRenderbuffers" : "void")
390                     , (code ? "/*n*/ " : "n=")
391                     , msg.getArg0()
392                     , (code ? "/*renderbuffers*/ " : "renderbuffers=")
393                     , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
394                 break;
395             case glDeleteShader:
396                 str = String.format("%s(%s%s)",
397                     (code ? "glDeleteShader" : "void")
398                     , (code ? "/*shader*/ " : "shader=")
399                     , (code ? "shader_" : "") + msg.getArg0());
400                 break;
401             case glDeleteTextures:
402                 str = String.format("%s(%s%s, %s%s)",
403                     (code ? "glDeleteTextures" : "void")
404                     , (code ? "/*n*/ " : "n=")
405                     , msg.getArg0()
406                     , (code ? "/*textures*/ " : "textures=")
407                     , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
408                 break;
409             case glDepthFunc:
410                 str = String.format("%s(%s%s)",
411                     (code ? "glDepthFunc" : "void")
412                     , (code ? "/*func*/ " : "func=")
413                     , GLEnum.valueOf(msg.getArg0()));
414                 break;
415             case glDepthMask:
416                 str = String.format("%s(%s%s)",
417                     (code ? "glDepthMask" : "void")
418                     , (code ? "/*flag*/ " : "flag=")
419                     , msg.getArg0());
420                 break;
421             case glDepthRangef:
422                 str = String.format("%s(%s%s, %s%s)",
423                     (code ? "glDepthRangef" : "void")
424                     , (code ? "/*zNear*/ " : "zNear=")
425                     , Float.intBitsToFloat(msg.getArg0())
426                     , (code ? "/*zFar*/ " : "zFar=")
427                     , Float.intBitsToFloat(msg.getArg1()));
428                 break;
429             case glDetachShader:
430                 str = String.format("%s(%s%s, %s%s)",
431                     (code ? "glDetachShader" : "void")
432                     , (code ? "/*program*/ " : "program=")
433                     , (code ? "program_" : "") + msg.getArg0()
434                     , (code ? "/*shader*/ " : "shader=")
435                     , (code ? "shader_" : "") + msg.getArg1());
436                 break;
437             case glDisable:
438                 str = String.format("%s(%s%s)",
439                     (code ? "glDisable" : "void")
440                     , (code ? "/*cap*/ " : "cap=")
441                     , GLEnum.valueOf(msg.getArg0()));
442                 break;
443             case glDisableVertexAttribArray:
444                 str = String.format("%s(%s%s)",
445                     (code ? "glDisableVertexAttribArray" : "void")
446                     , (code ? "/*index*/ " : "index=")
447                     , msg.getArg0());
448                 break;
449             case glDrawArrays:
450                 str = String.format("%s(%s%s, %s%s, %s%s)",
451                     (code ? "glDrawArrays" : "void")
452                     , (code ? "/*mode*/ " : "mode=")
453                     , GLEnum.valueOf(msg.getArg0())
454                     , (code ? "/*first*/ " : "first=")
455                     , msg.getArg1()
456                     , (code ? "/*count*/ " : "count=")
457                     , msg.getArg2());
458                 break;
459             case glDrawElements:
460                 // FIXME: this function uses pointers, debugger may send data in msg.data
461                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
462                     (code ? "glDrawElements" : "void")
463                     , (code ? "/*mode*/ " : "mode=")
464                     , GLEnum.valueOf(msg.getArg0())
465                     , (code ? "/*count*/ " : "count=")
466                     , msg.getArg1()
467                     , (code ? "/*type*/ " : "type=")
468                     , GLEnum.valueOf(msg.getArg2())
469                     , (code ? "/*indices*/ " : "indices=")
470                     , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
471                 break;
472             case glEnable:
473                 str = String.format("%s(%s%s)",
474                     (code ? "glEnable" : "void")
475                     , (code ? "/*cap*/ " : "cap=")
476                     , GLEnum.valueOf(msg.getArg0()));
477                 break;
478             case glEnableVertexAttribArray:
479                 str = String.format("%s(%s%s)",
480                     (code ? "glEnableVertexAttribArray" : "void")
481                     , (code ? "/*index*/ " : "index=")
482                     , msg.getArg0());
483                 break;
484             case glFinish:
485                 str = String.format("%s()",
486                     (code ? "glFinish" : "void")
487 );
488                 break;
489             case glFlush:
490                 str = String.format("%s()",
491                     (code ? "glFlush" : "void")
492 );
493                 break;
494             case glFramebufferRenderbuffer:
495                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
496                     (code ? "glFramebufferRenderbuffer" : "void")
497                     , (code ? "/*target*/ " : "target=")
498                     , GLEnum.valueOf(msg.getArg0())
499                     , (code ? "/*attachment*/ " : "attachment=")
500                     , GLEnum.valueOf(msg.getArg1())
501                     , (code ? "/*renderbuffertarget*/ " : "renderbuffertarget=")
502                     , GLEnum.valueOf(msg.getArg2())
503                     , (code ? "/*renderbuffer*/ " : "renderbuffer=")
504                     , (code ? "renderbuffer_" : "") + msg.getArg3());
505                 break;
506             case glFramebufferTexture2D:
507                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
508                     (code ? "glFramebufferTexture2D" : "void")
509                     , (code ? "/*target*/ " : "target=")
510                     , GLEnum.valueOf(msg.getArg0())
511                     , (code ? "/*attachment*/ " : "attachment=")
512                     , GLEnum.valueOf(msg.getArg1())
513                     , (code ? "/*textarget*/ " : "textarget=")
514                     , GLEnum.valueOf(msg.getArg2())
515                     , (code ? "/*texture*/ " : "texture=")
516                     , (code ? "texture_" : "") + msg.getArg3()
517                     , (code ? "/*level*/ " : "level=")
518                     , msg.getArg4());
519                 break;
520             case glFrontFace:
521                 str = String.format("%s(%s%s)",
522                     (code ? "glFrontFace" : "void")
523                     , (code ? "/*mode*/ " : "mode=")
524                     , GLEnum.valueOf(msg.getArg0()));
525                 break;
526             case glGenBuffers:
527                 str = String.format("%s(%s%s, %s%s)",
528                     (code ? "glGenBuffers" : "void")
529                     , (code ? "/*n*/ " : "n=")
530                     , msg.getArg0()
531                     , (code ? "/*buffers*/ " : "buffers=")
532                     , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
533                 break;
534             case glGenerateMipmap:
535                 str = String.format("%s(%s%s)",
536                     (code ? "glGenerateMipmap" : "void")
537                     , (code ? "/*target*/ " : "target=")
538                     , GLEnum.valueOf(msg.getArg0()));
539                 break;
540             case glGenFramebuffers:
541                 str = String.format("%s(%s%s, %s%s)",
542                     (code ? "glGenFramebuffers" : "void")
543                     , (code ? "/*n*/ " : "n=")
544                     , msg.getArg0()
545                     , (code ? "/*framebuffers*/ " : "framebuffers=")
546                     , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
547                 break;
548             case glGenRenderbuffers:
549                 str = String.format("%s(%s%s, %s%s)",
550                     (code ? "glGenRenderbuffers" : "void")
551                     , (code ? "/*n*/ " : "n=")
552                     , msg.getArg0()
553                     , (code ? "/*renderbuffers*/ " : "renderbuffers=")
554                     , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
555                 break;
556             case glGenTextures:
557                 str = String.format("%s(%s%s, %s%s)",
558                     (code ? "glGenTextures" : "void")
559                     , (code ? "/*n*/ " : "n=")
560                     , msg.getArg0()
561                     , (code ? "/*textures*/ " : "textures=")
562                     , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
563                 break;
564             case glGetActiveAttrib:
565                 // FIXME: this function uses pointers, debugger may send data in msg.data
566                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
567                     (code ? "glGetActiveAttrib" : "void")
568                     , (code ? "/*program*/ " : "program=")
569                     , (code ? "program_" : "") + msg.getArg0()
570                     , (code ? "/*index*/ " : "index=")
571                     , msg.getArg1()
572                     , (code ? "/*bufsize*/ " : "bufsize=")
573                     , msg.getArg2()
574                     , (code ? "/*length*/ " : "length=")
575                     , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3()))
576                     , (code ? "/*size*/ " : "size=")
577                     , (code ? "arg4" : "0x" + Integer.toHexString(msg.getArg4()))
578                     , (code ? "/*type*/ " : "type=")
579                     , (code ? "arg5" : "0x" + Integer.toHexString(msg.getArg5()))
580                     , (code ? "/*name*/ " : "name=")
581                     , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
582                 break;
583             case glGetActiveUniform:
584                 // FIXME: this function uses pointers, debugger may send data in msg.data
585                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
586                     (code ? "glGetActiveUniform" : "void")
587                     , (code ? "/*program*/ " : "program=")
588                     , (code ? "program_" : "") + msg.getArg0()
589                     , (code ? "/*index*/ " : "index=")
590                     , msg.getArg1()
591                     , (code ? "/*bufsize*/ " : "bufsize=")
592                     , msg.getArg2()
593                     , (code ? "/*length*/ " : "length=")
594                     , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3()))
595                     , (code ? "/*size*/ " : "size=")
596                     , (code ? "arg4" : "0x" + Integer.toHexString(msg.getArg4()))
597                     , (code ? "/*type*/ " : "type=")
598                     , (code ? "arg5" : "0x" + Integer.toHexString(msg.getArg5()))
599                     , (code ? "/*name*/ " : "name=")
600                     , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
601                 break;
602             case glGetAttachedShaders:
603                 // FIXME: this function uses pointers, debugger may send data in msg.data
604                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
605                     (code ? "glGetAttachedShaders" : "void")
606                     , (code ? "/*program*/ " : "program=")
607                     , (code ? "program_" : "") + msg.getArg0()
608                     , (code ? "/*maxcount*/ " : "maxcount=")
609                     , msg.getArg1()
610                     , (code ? "/*count*/ " : "count=")
611                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
612                     , (code ? "/*shaders*/ " : "shaders=")
613                     , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
614                 break;
615             case glGetAttribLocation:
616                 str = String.format("%s(%s%s, %s%s)",
617                     (code ? "glGetAttribLocation" : msg.getRet())
618                     , (code ? "/*program*/ " : "program=")
619                     , (code ? "program_" : "") + msg.getArg0()
620                     , (code ? "/*name*/ " : "name=")
621                     , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
622                 break;
623             case glGetBooleanv:
624                 // FIXME: this function uses pointers, debugger may send data in msg.data
625                 str = String.format("%s(%s%s, %s%s)",
626                     (code ? "glGetBooleanv" : "void")
627                     , (code ? "/*pname*/ " : "pname=")
628                     , GLEnum.valueOf(msg.getArg0())
629                     , (code ? "/*params*/ " : "params=")
630                     , (code ? "arg1" : "0x" + Integer.toHexString(msg.getArg1())));
631                 break;
632             case glGetBufferParameteriv:
633                 // FIXME: this function uses pointers, debugger may send data in msg.data
634                 str = String.format("%s(%s%s, %s%s, %s%s)",
635                     (code ? "glGetBufferParameteriv" : "void")
636                     , (code ? "/*target*/ " : "target=")
637                     , GLEnum.valueOf(msg.getArg0())
638                     , (code ? "/*pname*/ " : "pname=")
639                     , GLEnum.valueOf(msg.getArg1())
640                     , (code ? "/*params*/ " : "params=")
641                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
642                 break;
643             case glGetError:
644                 str = String.format("%s()",
645                     (code ? "glGetError" : GLEnum.valueOf(msg.getRet()))
646 );
647                 break;
648             case glGetFloatv:
649                 // FIXME: this function uses pointers, debugger may send data in msg.data
650                 str = String.format("%s(%s%s, %s%s)",
651                     (code ? "glGetFloatv" : "void")
652                     , (code ? "/*pname*/ " : "pname=")
653                     , GLEnum.valueOf(msg.getArg0())
654                     , (code ? "/*params*/ " : "params=")
655                     , (code ? "arg1" : "0x" + Integer.toHexString(msg.getArg1())));
656                 break;
657             case glGetFramebufferAttachmentParameteriv:
658                 // FIXME: this function uses pointers, debugger may send data in msg.data
659                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
660                     (code ? "glGetFramebufferAttachmentParameteriv" : "void")
661                     , (code ? "/*target*/ " : "target=")
662                     , GLEnum.valueOf(msg.getArg0())
663                     , (code ? "/*attachment*/ " : "attachment=")
664                     , GLEnum.valueOf(msg.getArg1())
665                     , (code ? "/*pname*/ " : "pname=")
666                     , GLEnum.valueOf(msg.getArg2())
667                     , (code ? "/*params*/ " : "params=")
668                     , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
669                 break;
670             case glGetIntegerv:
671                 // FIXME: this function uses pointers, debugger may send data in msg.data
672                 str = String.format("%s(%s%s, %s%s)",
673                     (code ? "glGetIntegerv" : "void")
674                     , (code ? "/*pname*/ " : "pname=")
675                     , GLEnum.valueOf(msg.getArg0())
676                     , (code ? "/*params*/ " : "params=")
677                     , (code ? "arg1" : "0x" + Integer.toHexString(msg.getArg1())));
678                 break;
679             case glGetProgramiv:
680                 str = String.format("%s(%s%s, %s%s, %s%s)",
681                     (code ? "glGetProgramiv" : "void")
682                     , (code ? "/*program*/ " : "program=")
683                     , (code ? "program_" : "") + msg.getArg0()
684                     , (code ? "/*pname*/ " : "pname=")
685                     , GLEnum.valueOf(msg.getArg1())
686                     , (code ? "/*params*/ " : "params=")
687                     , (code ? "(GLint [])" : "") + formatInts(1, msg.getData().asReadOnlyByteBuffer()));
688                 break;
689             case glGetProgramInfoLog:
690                 // FIXME: this function uses pointers, debugger may send data in msg.data
691                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
692                     (code ? "glGetProgramInfoLog" : "void")
693                     , (code ? "/*program*/ " : "program=")
694                     , (code ? "program_" : "") + msg.getArg0()
695                     , (code ? "/*bufsize*/ " : "bufsize=")
696                     , msg.getArg1()
697                     , (code ? "/*length*/ " : "length=")
698                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
699                     , (code ? "/*infolog*/ " : "infolog=")
700                     , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
701                 break;
702             case glGetRenderbufferParameteriv:
703                 // FIXME: this function uses pointers, debugger may send data in msg.data
704                 str = String.format("%s(%s%s, %s%s, %s%s)",
705                     (code ? "glGetRenderbufferParameteriv" : "void")
706                     , (code ? "/*target*/ " : "target=")
707                     , GLEnum.valueOf(msg.getArg0())
708                     , (code ? "/*pname*/ " : "pname=")
709                     , GLEnum.valueOf(msg.getArg1())
710                     , (code ? "/*params*/ " : "params=")
711                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
712                 break;
713             case glGetShaderiv:
714                 str = String.format("%s(%s%s, %s%s, %s%s)",
715                     (code ? "glGetShaderiv" : "void")
716                     , (code ? "/*shader*/ " : "shader=")
717                     , (code ? "shader_" : "") + msg.getArg0()
718                     , (code ? "/*pname*/ " : "pname=")
719                     , GLEnum.valueOf(msg.getArg1())
720                     , (code ? "/*params*/ " : "params=")
721                     , (code ? "(GLint [])" : "") + formatInts(1, msg.getData().asReadOnlyByteBuffer()));
722                 break;
723             case glGetShaderInfoLog:
724                 // FIXME: this function uses pointers, debugger may send data in msg.data
725                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
726                     (code ? "glGetShaderInfoLog" : "void")
727                     , (code ? "/*shader*/ " : "shader=")
728                     , (code ? "shader_" : "") + msg.getArg0()
729                     , (code ? "/*bufsize*/ " : "bufsize=")
730                     , msg.getArg1()
731                     , (code ? "/*length*/ " : "length=")
732                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
733                     , (code ? "/*infolog*/ " : "infolog=")
734                     , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
735                 break;
736             case glGetShaderPrecisionFormat:
737                 // FIXME: this function uses pointers, debugger may send data in msg.data
738                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
739                     (code ? "glGetShaderPrecisionFormat" : "void")
740                     , (code ? "/*shadertype*/ " : "shadertype=")
741                     , GLEnum.valueOf(msg.getArg0())
742                     , (code ? "/*precisiontype*/ " : "precisiontype=")
743                     , GLEnum.valueOf(msg.getArg1())
744                     , (code ? "/*range*/ " : "range=")
745                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
746                     , (code ? "/*precision*/ " : "precision=")
747                     , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
748                 break;
749             case glGetShaderSource:
750                 // FIXME: this function uses pointers, debugger may send data in msg.data
751                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
752                     (code ? "glGetShaderSource" : "void")
753                     , (code ? "/*shader*/ " : "shader=")
754                     , (code ? "shader_" : "") + msg.getArg0()
755                     , (code ? "/*bufsize*/ " : "bufsize=")
756                     , msg.getArg1()
757                     , (code ? "/*length*/ " : "length=")
758                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
759                     , (code ? "/*source*/ " : "source=")
760                     , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
761                 break;
762             case glGetString:
763                 // FIXME: this function uses pointers, debugger may send data in msg.data
764                 str = String.format("%s(%s%s)",
765                     (code ? "glGetString" : "0x" + Integer.toHexString(msg.getRet()))
766                     , (code ? "/*name*/ " : "name=")
767                     , GLEnum.valueOf(msg.getArg0()));
768                 break;
769             case glGetTexParameterfv:
770                 // FIXME: this function uses pointers, debugger may send data in msg.data
771                 str = String.format("%s(%s%s, %s%s, %s%s)",
772                     (code ? "glGetTexParameterfv" : "void")
773                     , (code ? "/*target*/ " : "target=")
774                     , GLEnum.valueOf(msg.getArg0())
775                     , (code ? "/*pname*/ " : "pname=")
776                     , GLEnum.valueOf(msg.getArg1())
777                     , (code ? "/*params*/ " : "params=")
778                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
779                 break;
780             case glGetTexParameteriv:
781                 // FIXME: this function uses pointers, debugger may send data in msg.data
782                 str = String.format("%s(%s%s, %s%s, %s%s)",
783                     (code ? "glGetTexParameteriv" : "void")
784                     , (code ? "/*target*/ " : "target=")
785                     , GLEnum.valueOf(msg.getArg0())
786                     , (code ? "/*pname*/ " : "pname=")
787                     , GLEnum.valueOf(msg.getArg1())
788                     , (code ? "/*params*/ " : "params=")
789                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
790                 break;
791             case glGetUniformfv:
792                 // FIXME: this function uses pointers, debugger may send data in msg.data
793                 str = String.format("%s(%s%s, %s%s, %s%s)",
794                     (code ? "glGetUniformfv" : "void")
795                     , (code ? "/*program*/ " : "program=")
796                     , (code ? "program_" : "") + msg.getArg0()
797                     , (code ? "/*location*/ " : "location=")
798                     , msg.getArg1()
799                     , (code ? "/*params*/ " : "params=")
800                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
801                 break;
802             case glGetUniformiv:
803                 // FIXME: this function uses pointers, debugger may send data in msg.data
804                 str = String.format("%s(%s%s, %s%s, %s%s)",
805                     (code ? "glGetUniformiv" : "void")
806                     , (code ? "/*program*/ " : "program=")
807                     , (code ? "program_" : "") + msg.getArg0()
808                     , (code ? "/*location*/ " : "location=")
809                     , msg.getArg1()
810                     , (code ? "/*params*/ " : "params=")
811                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
812                 break;
813             case glGetUniformLocation:
814                 str = String.format("%s(%s%s, %s%s)",
815                     (code ? "glGetUniformLocation" : msg.getRet())
816                     , (code ? "/*program*/ " : "program=")
817                     , (code ? "program_" : "") + msg.getArg0()
818                     , (code ? "/*name*/ " : "name=")
819                     , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
820                 break;
821             case glGetVertexAttribfv:
822                 // FIXME: this function uses pointers, debugger may send data in msg.data
823                 str = String.format("%s(%s%s, %s%s, %s%s)",
824                     (code ? "glGetVertexAttribfv" : "void")
825                     , (code ? "/*index*/ " : "index=")
826                     , msg.getArg0()
827                     , (code ? "/*pname*/ " : "pname=")
828                     , GLEnum.valueOf(msg.getArg1())
829                     , (code ? "/*params*/ " : "params=")
830                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
831                 break;
832             case glGetVertexAttribiv:
833                 // FIXME: this function uses pointers, debugger may send data in msg.data
834                 str = String.format("%s(%s%s, %s%s, %s%s)",
835                     (code ? "glGetVertexAttribiv" : "void")
836                     , (code ? "/*index*/ " : "index=")
837                     , msg.getArg0()
838                     , (code ? "/*pname*/ " : "pname=")
839                     , GLEnum.valueOf(msg.getArg1())
840                     , (code ? "/*params*/ " : "params=")
841                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
842                 break;
843             case glGetVertexAttribPointerv:
844                 // FIXME: this function uses pointers, debugger may send data in msg.data
845                 str = String.format("%s(%s%s, %s%s, %s%s)",
846                     (code ? "glGetVertexAttribPointerv" : "void")
847                     , (code ? "/*index*/ " : "index=")
848                     , msg.getArg0()
849                     , (code ? "/*pname*/ " : "pname=")
850                     , GLEnum.valueOf(msg.getArg1())
851                     , (code ? "/*pointer*/ " : "pointer=")
852                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
853                 break;
854             case glHint:
855                 str = String.format("%s(%s%s, %s%s)",
856                     (code ? "glHint" : "void")
857                     , (code ? "/*target*/ " : "target=")
858                     , GLEnum.valueOf(msg.getArg0())
859                     , (code ? "/*mode*/ " : "mode=")
860                     , GLEnum.valueOf(msg.getArg1()));
861                 break;
862             case glIsBuffer:
863                 str = String.format("%s(%s%s)",
864                     (code ? "glIsBuffer" : msg.getRet())
865                     , (code ? "/*buffer*/ " : "buffer=")
866                     , (code ? "buffer_" : "") + msg.getArg0());
867                 break;
868             case glIsEnabled:
869                 str = String.format("%s(%s%s)",
870                     (code ? "glIsEnabled" : msg.getRet())
871                     , (code ? "/*cap*/ " : "cap=")
872                     , GLEnum.valueOf(msg.getArg0()));
873                 break;
874             case glIsFramebuffer:
875                 str = String.format("%s(%s%s)",
876                     (code ? "glIsFramebuffer" : msg.getRet())
877                     , (code ? "/*framebuffer*/ " : "framebuffer=")
878                     , (code ? "framebuffer_" : "") + msg.getArg0());
879                 break;
880             case glIsProgram:
881                 str = String.format("%s(%s%s)",
882                     (code ? "glIsProgram" : msg.getRet())
883                     , (code ? "/*program*/ " : "program=")
884                     , (code ? "program_" : "") + msg.getArg0());
885                 break;
886             case glIsRenderbuffer:
887                 str = String.format("%s(%s%s)",
888                     (code ? "glIsRenderbuffer" : msg.getRet())
889                     , (code ? "/*renderbuffer*/ " : "renderbuffer=")
890                     , (code ? "renderbuffer_" : "") + msg.getArg0());
891                 break;
892             case glIsShader:
893                 str = String.format("%s(%s%s)",
894                     (code ? "glIsShader" : msg.getRet())
895                     , (code ? "/*shader*/ " : "shader=")
896                     , (code ? "shader_" : "") + msg.getArg0());
897                 break;
898             case glIsTexture:
899                 str = String.format("%s(%s%s)",
900                     (code ? "glIsTexture" : msg.getRet())
901                     , (code ? "/*texture*/ " : "texture=")
902                     , (code ? "texture_" : "") + msg.getArg0());
903                 break;
904             case glLineWidth:
905                 str = String.format("%s(%s%s)",
906                     (code ? "glLineWidth" : "void")
907                     , (code ? "/*width*/ " : "width=")
908                     , Float.intBitsToFloat(msg.getArg0()));
909                 break;
910             case glLinkProgram:
911                 str = String.format("%s(%s%s)",
912                     (code ? "glLinkProgram" : "void")
913                     , (code ? "/*program*/ " : "program=")
914                     , (code ? "program_" : "") + msg.getArg0());
915                 break;
916             case glPixelStorei:
917                 str = String.format("%s(%s%s, %s%s)",
918                     (code ? "glPixelStorei" : "void")
919                     , (code ? "/*pname*/ " : "pname=")
920                     , GLEnum.valueOf(msg.getArg0())
921                     , (code ? "/*param*/ " : "param=")
922                     , msg.getArg1());
923                 break;
924             case glPolygonOffset:
925                 str = String.format("%s(%s%s, %s%s)",
926                     (code ? "glPolygonOffset" : "void")
927                     , (code ? "/*factor*/ " : "factor=")
928                     , Float.intBitsToFloat(msg.getArg0())
929                     , (code ? "/*units*/ " : "units=")
930                     , Float.intBitsToFloat(msg.getArg1()));
931                 break;
932             case glReadPixels:
933                 // FIXME: this function uses pointers, debugger may send data in msg.data
934                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
935                     (code ? "glReadPixels" : "void")
936                     , (code ? "/*x*/ " : "x=")
937                     , msg.getArg0()
938                     , (code ? "/*y*/ " : "y=")
939                     , msg.getArg1()
940                     , (code ? "/*width*/ " : "width=")
941                     , msg.getArg2()
942                     , (code ? "/*height*/ " : "height=")
943                     , msg.getArg3()
944                     , (code ? "/*format*/ " : "format=")
945                     , GLEnum.valueOf(msg.getArg4())
946                     , (code ? "/*type*/ " : "type=")
947                     , GLEnum.valueOf(msg.getArg5())
948                     , (code ? "/*pixels*/ " : "pixels=")
949                     , (code ? "arg6" : "0x" + Integer.toHexString(msg.getArg6())));
950                 break;
951             case glReleaseShaderCompiler:
952                 str = String.format("%s()",
953                     (code ? "glReleaseShaderCompiler" : "void")
954 );
955                 break;
956             case glRenderbufferStorage:
957                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
958                     (code ? "glRenderbufferStorage" : "void")
959                     , (code ? "/*target*/ " : "target=")
960                     , GLEnum.valueOf(msg.getArg0())
961                     , (code ? "/*internalformat*/ " : "internalformat=")
962                     , GLEnum.valueOf(msg.getArg1())
963                     , (code ? "/*width*/ " : "width=")
964                     , msg.getArg2()
965                     , (code ? "/*height*/ " : "height=")
966                     , msg.getArg3());
967                 break;
968             case glSampleCoverage:
969                 str = String.format("%s(%s%s, %s%s)",
970                     (code ? "glSampleCoverage" : "void")
971                     , (code ? "/*value*/ " : "value=")
972                     , Float.intBitsToFloat(msg.getArg0())
973                     , (code ? "/*invert*/ " : "invert=")
974                     , msg.getArg1());
975                 break;
976             case glScissor:
977                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
978                     (code ? "glScissor" : "void")
979                     , (code ? "/*x*/ " : "x=")
980                     , msg.getArg0()
981                     , (code ? "/*y*/ " : "y=")
982                     , msg.getArg1()
983                     , (code ? "/*width*/ " : "width=")
984                     , msg.getArg2()
985                     , (code ? "/*height*/ " : "height=")
986                     , msg.getArg3());
987                 break;
988             case glShaderBinary:
989                 // FIXME: this function uses pointers, debugger may send data in msg.data
990                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
991                     (code ? "glShaderBinary" : "void")
992                     , (code ? "/*n*/ " : "n=")
993                     , msg.getArg0()
994                     , (code ? "/*shaders*/ " : "shaders=")
995                     , (code ? "arg1" : "0x" + Integer.toHexString(msg.getArg1()))
996                     , (code ? "/*binaryformat*/ " : "binaryformat=")
997                     , GLEnum.valueOf(msg.getArg2())
998                     , (code ? "/*binary*/ " : "binary=")
999                     , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3()))
1000                     , (code ? "/*length*/ " : "length=")
1001                     , msg.getArg4());
1002                 break;
1003             case glShaderSource:
1004                 // FIXME: this function uses pointers, debugger may send data in msg.data
1005                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
1006                     (code ? "glShaderSource" : "void")
1007                     , (code ? "/*shader*/ " : "shader=")
1008                     , (code ? "shader_" : "") + msg.getArg0()
1009                     , (code ? "/*count*/ " : "count=")
1010                     , msg.getArg1()
1011                     , (code ? "/*string*/ " : "string=")
1012                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
1013                     , (code ? "/*length*/ " : "length=")
1014                     , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
1015                 break;
1016             case glStencilFunc:
1017                 str = String.format("%s(%s%s, %s%s, %s%s)",
1018                     (code ? "glStencilFunc" : "void")
1019                     , (code ? "/*func*/ " : "func=")
1020                     , GLEnum.valueOf(msg.getArg0())
1021                     , (code ? "/*ref*/ " : "ref=")
1022                     , msg.getArg1()
1023                     , (code ? "/*mask*/ " : "mask=")
1024                     , msg.getArg2());
1025                 break;
1026             case glStencilFuncSeparate:
1027                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
1028                     (code ? "glStencilFuncSeparate" : "void")
1029                     , (code ? "/*face*/ " : "face=")
1030                     , GLEnum.valueOf(msg.getArg0())
1031                     , (code ? "/*func*/ " : "func=")
1032                     , GLEnum.valueOf(msg.getArg1())
1033                     , (code ? "/*ref*/ " : "ref=")
1034                     , msg.getArg2()
1035                     , (code ? "/*mask*/ " : "mask=")
1036                     , msg.getArg3());
1037                 break;
1038             case glStencilMask:
1039                 str = String.format("%s(%s%s)",
1040                     (code ? "glStencilMask" : "void")
1041                     , (code ? "/*mask*/ " : "mask=")
1042                     , msg.getArg0());
1043                 break;
1044             case glStencilMaskSeparate:
1045                 str = String.format("%s(%s%s, %s%s)",
1046                     (code ? "glStencilMaskSeparate" : "void")
1047                     , (code ? "/*face*/ " : "face=")
1048                     , GLEnum.valueOf(msg.getArg0())
1049                     , (code ? "/*mask*/ " : "mask=")
1050                     , msg.getArg1());
1051                 break;
1052             case glStencilOp:
1053                 str = String.format("%s(%s%s, %s%s, %s%s)",
1054                     (code ? "glStencilOp" : "void")
1055                     , (code ? "/*fail*/ " : "fail=")
1056                     , GLEnum.valueOf(msg.getArg0())
1057                     , (code ? "/*zfail*/ " : "zfail=")
1058                     , GLEnum.valueOf(msg.getArg1())
1059                     , (code ? "/*zpass*/ " : "zpass=")
1060                     , GLEnum.valueOf(msg.getArg2()));
1061                 break;
1062             case glStencilOpSeparate:
1063                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
1064                     (code ? "glStencilOpSeparate" : "void")
1065                     , (code ? "/*face*/ " : "face=")
1066                     , GLEnum.valueOf(msg.getArg0())
1067                     , (code ? "/*fail*/ " : "fail=")
1068                     , GLEnum.valueOf(msg.getArg1())
1069                     , (code ? "/*zfail*/ " : "zfail=")
1070                     , GLEnum.valueOf(msg.getArg2())
1071                     , (code ? "/*zpass*/ " : "zpass=")
1072                     , GLEnum.valueOf(msg.getArg3()));
1073                 break;
1074             case glTexImage2D:
1075                 // FIXME: this function uses pointers, debugger may send data in msg.data
1076                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
1077                     (code ? "glTexImage2D" : "void")
1078                     , (code ? "/*target*/ " : "target=")
1079                     , GLEnum.valueOf(msg.getArg0())
1080                     , (code ? "/*level*/ " : "level=")
1081                     , msg.getArg1()
1082                     , (code ? "/*internalformat*/ " : "internalformat=")
1083                     , msg.getArg2()
1084                     , (code ? "/*width*/ " : "width=")
1085                     , msg.getArg3()
1086                     , (code ? "/*height*/ " : "height=")
1087                     , msg.getArg4()
1088                     , (code ? "/*border*/ " : "border=")
1089                     , msg.getArg5()
1090                     , (code ? "/*format*/ " : "format=")
1091                     , GLEnum.valueOf(msg.getArg6())
1092                     , (code ? "/*type*/ " : "type=")
1093                     , GLEnum.valueOf(msg.getArg7())
1094                     , (code ? "/*pixels*/ " : "pixels=")
1095                     , (code ? "arg8" : "0x" + Integer.toHexString(msg.getArg8())));
1096                 break;
1097             case glTexParameterf:
1098                 str = String.format("%s(%s%s, %s%s, %s%s)",
1099                     (code ? "glTexParameterf" : "void")
1100                     , (code ? "/*target*/ " : "target=")
1101                     , GLEnum.valueOf(msg.getArg0())
1102                     , (code ? "/*pname*/ " : "pname=")
1103                     , GLEnum.valueOf(msg.getArg1())
1104                     , (code ? "/*param*/ " : "param=")
1105                     , Float.intBitsToFloat(msg.getArg2()));
1106                 break;
1107             case glTexParameterfv:
1108                 // FIXME: this function uses pointers, debugger may send data in msg.data
1109                 str = String.format("%s(%s%s, %s%s, %s%s)",
1110                     (code ? "glTexParameterfv" : "void")
1111                     , (code ? "/*target*/ " : "target=")
1112                     , GLEnum.valueOf(msg.getArg0())
1113                     , (code ? "/*pname*/ " : "pname=")
1114                     , GLEnum.valueOf(msg.getArg1())
1115                     , (code ? "/*params*/ " : "params=")
1116                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
1117                 break;
1118             case glTexParameteri:
1119                 str = String.format("%s(%s%s, %s%s, %s%s)",
1120                     (code ? "glTexParameteri" : "void")
1121                     , (code ? "/*target*/ " : "target=")
1122                     , GLEnum.valueOf(msg.getArg0())
1123                     , (code ? "/*pname*/ " : "pname=")
1124                     , GLEnum.valueOf(msg.getArg1())
1125                     , (code ? "/*param*/ " : "param=")
1126                     , msg.getArg2());
1127                 break;
1128             case glTexParameteriv:
1129                 // FIXME: this function uses pointers, debugger may send data in msg.data
1130                 str = String.format("%s(%s%s, %s%s, %s%s)",
1131                     (code ? "glTexParameteriv" : "void")
1132                     , (code ? "/*target*/ " : "target=")
1133                     , GLEnum.valueOf(msg.getArg0())
1134                     , (code ? "/*pname*/ " : "pname=")
1135                     , GLEnum.valueOf(msg.getArg1())
1136                     , (code ? "/*params*/ " : "params=")
1137                     , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
1138                 break;
1139             case glTexSubImage2D:
1140                 // FIXME: this function uses pointers, debugger may send data in msg.data
1141                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
1142                     (code ? "glTexSubImage2D" : "void")
1143                     , (code ? "/*target*/ " : "target=")
1144                     , GLEnum.valueOf(msg.getArg0())
1145                     , (code ? "/*level*/ " : "level=")
1146                     , msg.getArg1()
1147                     , (code ? "/*xoffset*/ " : "xoffset=")
1148                     , msg.getArg2()
1149                     , (code ? "/*yoffset*/ " : "yoffset=")
1150                     , msg.getArg3()
1151                     , (code ? "/*width*/ " : "width=")
1152                     , msg.getArg4()
1153                     , (code ? "/*height*/ " : "height=")
1154                     , msg.getArg5()
1155                     , (code ? "/*format*/ " : "format=")
1156                     , GLEnum.valueOf(msg.getArg6())
1157                     , (code ? "/*type*/ " : "type=")
1158                     , GLEnum.valueOf(msg.getArg7())
1159                     , (code ? "/*pixels*/ " : "pixels=")
1160                     , (code ? "arg8" : "0x" + Integer.toHexString(msg.getArg8())));
1161                 break;
1162             case glUniform1f:
1163                 str = String.format("%s(%s%s, %s%s)",
1164                     (code ? "glUniform1f" : "void")
1165                     , (code ? "/*location*/ " : "location=")
1166                     , msg.getArg0()
1167                     , (code ? "/*x*/ " : "x=")
1168                     , Float.intBitsToFloat(msg.getArg1()));
1169                 break;
1170             case glUniform1fv:
1171                 str = String.format("%s(%s%s, %s%s, %s%s)",
1172                     (code ? "glUniform1fv" : "void")
1173                     , (code ? "/*location*/ " : "location=")
1174                     , msg.getArg0()
1175                     , (code ? "/*count*/ " : "count=")
1176                     , msg.getArg1()
1177                     , (code ? "/*v*/ " : "v=")
1178                     , (code ? "(GLfloat [])" : "") +  formatFloats(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1179                 break;
1180             case glUniform1i:
1181                 str = String.format("%s(%s%s, %s%s)",
1182                     (code ? "glUniform1i" : "void")
1183                     , (code ? "/*location*/ " : "location=")
1184                     , msg.getArg0()
1185                     , (code ? "/*x*/ " : "x=")
1186                     , msg.getArg1());
1187                 break;
1188             case glUniform1iv:
1189                 str = String.format("%s(%s%s, %s%s, %s%s)",
1190                     (code ? "glUniform1iv" : "void")
1191                     , (code ? "/*location*/ " : "location=")
1192                     , msg.getArg0()
1193                     , (code ? "/*count*/ " : "count=")
1194                     , msg.getArg1()
1195                     , (code ? "/*v*/ " : "v=")
1196                     , (code ? "(GLint [])" : "") +  formatInts(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1197                 break;
1198             case glUniform2f:
1199                 str = String.format("%s(%s%s, %s%s, %s%s)",
1200                     (code ? "glUniform2f" : "void")
1201                     , (code ? "/*location*/ " : "location=")
1202                     , msg.getArg0()
1203                     , (code ? "/*x*/ " : "x=")
1204                     , Float.intBitsToFloat(msg.getArg1())
1205                     , (code ? "/*y*/ " : "y=")
1206                     , Float.intBitsToFloat(msg.getArg2()));
1207                 break;
1208             case glUniform2fv:
1209                 str = String.format("%s(%s%s, %s%s, %s%s)",
1210                     (code ? "glUniform2fv" : "void")
1211                     , (code ? "/*location*/ " : "location=")
1212                     , msg.getArg0()
1213                     , (code ? "/*count*/ " : "count=")
1214                     , msg.getArg1()
1215                     , (code ? "/*v*/ " : "v=")
1216                     , (code ? "(GLfloat [])" : "") +  formatFloats(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1217                 break;
1218             case glUniform2i:
1219                 str = String.format("%s(%s%s, %s%s, %s%s)",
1220                     (code ? "glUniform2i" : "void")
1221                     , (code ? "/*location*/ " : "location=")
1222                     , msg.getArg0()
1223                     , (code ? "/*x*/ " : "x=")
1224                     , msg.getArg1()
1225                     , (code ? "/*y*/ " : "y=")
1226                     , msg.getArg2());
1227                 break;
1228             case glUniform2iv:
1229                 str = String.format("%s(%s%s, %s%s, %s%s)",
1230                     (code ? "glUniform2iv" : "void")
1231                     , (code ? "/*location*/ " : "location=")
1232                     , msg.getArg0()
1233                     , (code ? "/*count*/ " : "count=")
1234                     , msg.getArg1()
1235                     , (code ? "/*v*/ " : "v=")
1236                     , (code ? "(GLint [])" : "") +  formatInts(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1237                 break;
1238             case glUniform3f:
1239                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
1240                     (code ? "glUniform3f" : "void")
1241                     , (code ? "/*location*/ " : "location=")
1242                     , msg.getArg0()
1243                     , (code ? "/*x*/ " : "x=")
1244                     , Float.intBitsToFloat(msg.getArg1())
1245                     , (code ? "/*y*/ " : "y=")
1246                     , Float.intBitsToFloat(msg.getArg2())
1247                     , (code ? "/*z*/ " : "z=")
1248                     , Float.intBitsToFloat(msg.getArg3()));
1249                 break;
1250             case glUniform3fv:
1251                 str = String.format("%s(%s%s, %s%s, %s%s)",
1252                     (code ? "glUniform3fv" : "void")
1253                     , (code ? "/*location*/ " : "location=")
1254                     , msg.getArg0()
1255                     , (code ? "/*count*/ " : "count=")
1256                     , msg.getArg1()
1257                     , (code ? "/*v*/ " : "v=")
1258                     , (code ? "(GLfloat [])" : "") +  formatFloats(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1259                 break;
1260             case glUniform3i:
1261                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
1262                     (code ? "glUniform3i" : "void")
1263                     , (code ? "/*location*/ " : "location=")
1264                     , msg.getArg0()
1265                     , (code ? "/*x*/ " : "x=")
1266                     , msg.getArg1()
1267                     , (code ? "/*y*/ " : "y=")
1268                     , msg.getArg2()
1269                     , (code ? "/*z*/ " : "z=")
1270                     , msg.getArg3());
1271                 break;
1272             case glUniform3iv:
1273                 str = String.format("%s(%s%s, %s%s, %s%s)",
1274                     (code ? "glUniform3iv" : "void")
1275                     , (code ? "/*location*/ " : "location=")
1276                     , msg.getArg0()
1277                     , (code ? "/*count*/ " : "count=")
1278                     , msg.getArg1()
1279                     , (code ? "/*v*/ " : "v=")
1280                     , (code ? "(GLint [])" : "") +  formatInts(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1281                 break;
1282             case glUniform4f:
1283                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
1284                     (code ? "glUniform4f" : "void")
1285                     , (code ? "/*location*/ " : "location=")
1286                     , msg.getArg0()
1287                     , (code ? "/*x*/ " : "x=")
1288                     , Float.intBitsToFloat(msg.getArg1())
1289                     , (code ? "/*y*/ " : "y=")
1290                     , Float.intBitsToFloat(msg.getArg2())
1291                     , (code ? "/*z*/ " : "z=")
1292                     , Float.intBitsToFloat(msg.getArg3())
1293                     , (code ? "/*w*/ " : "w=")
1294                     , Float.intBitsToFloat(msg.getArg4()));
1295                 break;
1296             case glUniform4fv:
1297                 str = String.format("%s(%s%s, %s%s, %s%s)",
1298                     (code ? "glUniform4fv" : "void")
1299                     , (code ? "/*location*/ " : "location=")
1300                     , msg.getArg0()
1301                     , (code ? "/*count*/ " : "count=")
1302                     , msg.getArg1()
1303                     , (code ? "/*v*/ " : "v=")
1304                     , (code ? "(GLfloat [])" : "") +  formatFloats(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1305                 break;
1306             case glUniform4i:
1307                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
1308                     (code ? "glUniform4i" : "void")
1309                     , (code ? "/*location*/ " : "location=")
1310                     , msg.getArg0()
1311                     , (code ? "/*x*/ " : "x=")
1312                     , msg.getArg1()
1313                     , (code ? "/*y*/ " : "y=")
1314                     , msg.getArg2()
1315                     , (code ? "/*z*/ " : "z=")
1316                     , msg.getArg3()
1317                     , (code ? "/*w*/ " : "w=")
1318                     , msg.getArg4());
1319                 break;
1320             case glUniform4iv:
1321                 str = String.format("%s(%s%s, %s%s, %s%s)",
1322                     (code ? "glUniform4iv" : "void")
1323                     , (code ? "/*location*/ " : "location=")
1324                     , msg.getArg0()
1325                     , (code ? "/*count*/ " : "count=")
1326                     , msg.getArg1()
1327                     , (code ? "/*v*/ " : "v=")
1328                     , (code ? "(GLint [])" : "") +  formatInts(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1329                 break;
1330             case glUniformMatrix2fv:
1331                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
1332                     (code ? "glUniformMatrix2fv" : "void")
1333                     , (code ? "/*location*/ " : "location=")
1334                     , msg.getArg0()
1335                     , (code ? "/*count*/ " : "count=")
1336                     , msg.getArg1()
1337                     , (code ? "/*transpose*/ " : "transpose=")
1338                     , msg.getArg2()
1339                     , (code ? "/*value*/ " : "value=")
1340                     , (code ? "(GLfloat [])" : "") + formatMatrix(2, 4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1341                 break;
1342             case glUniformMatrix3fv:
1343                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
1344                     (code ? "glUniformMatrix3fv" : "void")
1345                     , (code ? "/*location*/ " : "location=")
1346                     , msg.getArg0()
1347                     , (code ? "/*count*/ " : "count=")
1348                     , msg.getArg1()
1349                     , (code ? "/*transpose*/ " : "transpose=")
1350                     , msg.getArg2()
1351                     , (code ? "/*value*/ " : "value=")
1352                     , (code ? "(GLfloat [])" : "") + formatMatrix(3, 9 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1353                 break;
1354             case glUniformMatrix4fv:
1355                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
1356                     (code ? "glUniformMatrix4fv" : "void")
1357                     , (code ? "/*location*/ " : "location=")
1358                     , msg.getArg0()
1359                     , (code ? "/*count*/ " : "count=")
1360                     , msg.getArg1()
1361                     , (code ? "/*transpose*/ " : "transpose=")
1362                     , msg.getArg2()
1363                     , (code ? "/*value*/ " : "value=")
1364                     , (code ? "(GLfloat [])" : "") + formatMatrix(4, 16 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
1365                 break;
1366             case glUseProgram:
1367                 str = String.format("%s(%s%s)",
1368                     (code ? "glUseProgram" : "void")
1369                     , (code ? "/*program*/ " : "program=")
1370                     , (code ? "program_" : "") + msg.getArg0());
1371                 break;
1372             case glValidateProgram:
1373                 str = String.format("%s(%s%s)",
1374                     (code ? "glValidateProgram" : "void")
1375                     , (code ? "/*program*/ " : "program=")
1376                     , (code ? "program_" : "") + msg.getArg0());
1377                 break;
1378             case glVertexAttrib1f:
1379                 str = String.format("%s(%s%s, %s%s)",
1380                     (code ? "glVertexAttrib1f" : "void")
1381                     , (code ? "/*indx*/ " : "indx=")
1382                     , msg.getArg0()
1383                     , (code ? "/*x*/ " : "x=")
1384                     , Float.intBitsToFloat(msg.getArg1()));
1385                 break;
1386             case glVertexAttrib1fv:
1387                 str = String.format("%s(%s%s, %s%s)",
1388                     (code ? "glVertexAttrib1fv" : "void")
1389                     , (code ? "/*indx*/ " : "indx=")
1390                     , msg.getArg0()
1391                     , (code ? "/*values*/ " : "values=")
1392                     , (code ? "(GLfloat [])" : "") + formatFloats(1, msg.getData().asReadOnlyByteBuffer()));
1393                 break;
1394             case glVertexAttrib2f:
1395                 str = String.format("%s(%s%s, %s%s, %s%s)",
1396                     (code ? "glVertexAttrib2f" : "void")
1397                     , (code ? "/*indx*/ " : "indx=")
1398                     , msg.getArg0()
1399                     , (code ? "/*x*/ " : "x=")
1400                     , Float.intBitsToFloat(msg.getArg1())
1401                     , (code ? "/*y*/ " : "y=")
1402                     , Float.intBitsToFloat(msg.getArg2()));
1403                 break;
1404             case glVertexAttrib2fv:
1405                 str = String.format("%s(%s%s, %s%s)",
1406                     (code ? "glVertexAttrib2fv" : "void")
1407                     , (code ? "/*indx*/ " : "indx=")
1408                     , msg.getArg0()
1409                     , (code ? "/*values*/ " : "values=")
1410                     , (code ? "(GLfloat [])" : "") + formatFloats(2, msg.getData().asReadOnlyByteBuffer()));
1411                 break;
1412             case glVertexAttrib3f:
1413                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
1414                     (code ? "glVertexAttrib3f" : "void")
1415                     , (code ? "/*indx*/ " : "indx=")
1416                     , msg.getArg0()
1417                     , (code ? "/*x*/ " : "x=")
1418                     , Float.intBitsToFloat(msg.getArg1())
1419                     , (code ? "/*y*/ " : "y=")
1420                     , Float.intBitsToFloat(msg.getArg2())
1421                     , (code ? "/*z*/ " : "z=")
1422                     , Float.intBitsToFloat(msg.getArg3()));
1423                 break;
1424             case glVertexAttrib3fv:
1425                 str = String.format("%s(%s%s, %s%s)",
1426                     (code ? "glVertexAttrib3fv" : "void")
1427                     , (code ? "/*indx*/ " : "indx=")
1428                     , msg.getArg0()
1429                     , (code ? "/*values*/ " : "values=")
1430                     , (code ? "(GLfloat [])" : "") + formatFloats(3, msg.getData().asReadOnlyByteBuffer()));
1431                 break;
1432             case glVertexAttrib4f:
1433                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
1434                     (code ? "glVertexAttrib4f" : "void")
1435                     , (code ? "/*indx*/ " : "indx=")
1436                     , msg.getArg0()
1437                     , (code ? "/*x*/ " : "x=")
1438                     , Float.intBitsToFloat(msg.getArg1())
1439                     , (code ? "/*y*/ " : "y=")
1440                     , Float.intBitsToFloat(msg.getArg2())
1441                     , (code ? "/*z*/ " : "z=")
1442                     , Float.intBitsToFloat(msg.getArg3())
1443                     , (code ? "/*w*/ " : "w=")
1444                     , Float.intBitsToFloat(msg.getArg4()));
1445                 break;
1446             case glVertexAttrib4fv:
1447                 str = String.format("%s(%s%s, %s%s)",
1448                     (code ? "glVertexAttrib4fv" : "void")
1449                     , (code ? "/*indx*/ " : "indx=")
1450                     , msg.getArg0()
1451                     , (code ? "/*values*/ " : "values=")
1452                     , (code ? "(GLfloat [])" : "") + formatFloats(4, msg.getData().asReadOnlyByteBuffer()));
1453                 break;
1454             case glVertexAttribPointer:
1455                 // FIXME: this function uses pointers, debugger may send data in msg.data
1456                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
1457                     (code ? "glVertexAttribPointer" : "void")
1458                     , (code ? "/*indx*/ " : "indx=")
1459                     , msg.getArg0()
1460                     , (code ? "/*size*/ " : "size=")
1461                     , msg.getArg1()
1462                     , (code ? "/*type*/ " : "type=")
1463                     , GLEnum.valueOf(msg.getArg2())
1464                     , (code ? "/*normalized*/ " : "normalized=")
1465                     , msg.getArg3()
1466                     , (code ? "/*stride*/ " : "stride=")
1467                     , msg.getArg4()
1468                     , (code ? "/*ptr*/ " : "ptr=")
1469                     , (code ? "arg5" : "0x" + Integer.toHexString(msg.getArg5())));
1470                 break;
1471             case glViewport:
1472                 str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
1473                     (code ? "glViewport" : "void")
1474                     , (code ? "/*x*/ " : "x=")
1475                     , msg.getArg0()
1476                     , (code ? "/*y*/ " : "y=")
1477                     , msg.getArg1()
1478                     , (code ? "/*width*/ " : "width=")
1479                     , msg.getArg2()
1480                     , (code ? "/*height*/ " : "height=")
1481                     , msg.getArg3());
1482                 break;
1483             default:
1484                 str = msg.toString();
1485         }
1486         return str;
1487     }
1488 }
1489