summaryrefslogtreecommitdiff
path: root/xc/extras/Mesa/src/Trace
diff options
context:
space:
mode:
Diffstat (limited to 'xc/extras/Mesa/src/Trace')
-rw-r--r--xc/extras/Mesa/src/Trace/tr_attrib.c0
-rw-r--r--xc/extras/Mesa/src/Trace/tr_commands.h644
-rw-r--r--xc/extras/Mesa/src/Trace/tr_context.c118
-rw-r--r--xc/extras/Mesa/src/Trace/tr_context.h80
-rw-r--r--xc/extras/Mesa/src/Trace/tr_control.c147
-rw-r--r--xc/extras/Mesa/src/Trace/tr_error.c40
-rw-r--r--xc/extras/Mesa/src/Trace/tr_error.h7
-rw-r--r--xc/extras/Mesa/src/Trace/tr_support.c584
-rw-r--r--xc/extras/Mesa/src/Trace/tr_support.h16
-rw-r--r--xc/extras/Mesa/src/Trace/tr_wrapper.c9311
-rw-r--r--xc/extras/Mesa/src/Trace/tr_wrapper.h8
-rw-r--r--xc/extras/Mesa/src/Trace/tr_write.c238
-rw-r--r--xc/extras/Mesa/src/Trace/tr_write.h68
13 files changed, 11261 insertions, 0 deletions
diff --git a/xc/extras/Mesa/src/Trace/tr_attrib.c b/xc/extras/Mesa/src/Trace/tr_attrib.c
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_attrib.c
diff --git a/xc/extras/Mesa/src/Trace/tr_commands.h b/xc/extras/Mesa/src/Trace/tr_commands.h
new file mode 100644
index 000000000..8b8516202
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_commands.h
@@ -0,0 +1,644 @@
+/* This may look like C code, but it is really -*- C++ -*- */
+/* $Id: tr_commands.h,v 1.3.2.1 2003/03/30 04:50:31 ldelgass Exp $ */
+
+/*
+ * DebugGL
+ * Version: 1.0
+ *
+ * Copyright (C) 1999-2000 Bernd Kreimeier, Loki Entertainment
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef TR_COMMANDS_H
+#define TR_COMMANDS_H
+
+
+/**
+ * Enumeration of GL commands, for metafile format
+ * and networking protocol. Has to be re-indexed
+ * if (ever) used as GLX stream. This uses the
+ * Mesa internal values.
+ */
+
+#define CMD_NEWLIST 0
+#define CMD_ENDLIST 1
+#define CMD_CALLLIST 2
+#define CMD_CALLLISTS 3
+#define CMD_DELETELISTS 4
+#define CMD_GENLISTS 5
+#define CMD_LISTBASE 6
+#define CMD_BEGIN 7
+#define CMD_BITMAP 8
+#define CMD_COLOR3B 9
+#define CMD_COLOR3BV 10
+#define CMD_COLOR3D 11
+#define CMD_COLOR3DV 12
+#define CMD_COLOR3F 13
+#define CMD_COLOR3FV 14
+#define CMD_COLOR3I 15
+#define CMD_COLOR3IV 16
+#define CMD_COLOR3S 17
+#define CMD_COLOR3SV 18
+#define CMD_COLOR3UB 19
+#define CMD_COLOR3UBV 20
+#define CMD_COLOR3UI 21
+#define CMD_COLOR3UIV 22
+#define CMD_COLOR3US 23
+#define CMD_COLOR3USV 24
+#define CMD_COLOR4B 25
+#define CMD_COLOR4BV 26
+#define CMD_COLOR4D 27
+#define CMD_COLOR4DV 28
+#define CMD_COLOR4F 29
+#define CMD_COLOR4FV 30
+#define CMD_COLOR4I 31
+#define CMD_COLOR4IV 32
+#define CMD_COLOR4S 33
+#define CMD_COLOR4SV 34
+#define CMD_COLOR4UB 35
+#define CMD_COLOR4UBV 36
+#define CMD_COLOR4UI 37
+#define CMD_COLOR4UIV 38
+#define CMD_COLOR4US 39
+#define CMD_COLOR4USV 40
+#define CMD_EDGEFLAG 41
+#define CMD_EDGEFLAGV 42
+#define CMD_END 43
+#define CMD_INDEXD 44
+#define CMD_INDEXDV 45
+#define CMD_INDEXF 46
+#define CMD_INDEXFV 47
+#define CMD_INDEXI 48
+#define CMD_INDEXIV 49
+#define CMD_INDEXS 50
+#define CMD_INDEXSV 51
+#define CMD_NORMAL3B 52
+#define CMD_NORMAL3BV 53
+#define CMD_NORMAL3D 54
+#define CMD_NORMAL3DV 55
+#define CMD_NORMAL3F 56
+#define CMD_NORMAL3FV 57
+#define CMD_NORMAL3I 58
+#define CMD_NORMAL3IV 59
+#define CMD_NORMAL3S 60
+#define CMD_NORMAL3SV 61
+#define CMD_RASTERPOS2D 62
+#define CMD_RASTERPOS2DV 63
+#define CMD_RASTERPOS2F 64
+#define CMD_RASTERPOS2FV 65
+#define CMD_RASTERPOS2I 66
+#define CMD_RASTERPOS2IV 67
+#define CMD_RASTERPOS2S 68
+#define CMD_RASTERPOS2SV 69
+#define CMD_RASTERPOS3D 70
+#define CMD_RASTERPOS3DV 71
+#define CMD_RASTERPOS3F 72
+#define CMD_RASTERPOS3FV 73
+#define CMD_RASTERPOS3I 74
+#define CMD_RASTERPOS3IV 75
+#define CMD_RASTERPOS3S 76
+#define CMD_RASTERPOS3SV 77
+#define CMD_RASTERPOS4D 78
+#define CMD_RASTERPOS4DV 79
+#define CMD_RASTERPOS4F 80
+#define CMD_RASTERPOS4FV 81
+#define CMD_RASTERPOS4I 82
+#define CMD_RASTERPOS4IV 83
+#define CMD_RASTERPOS4S 84
+#define CMD_RASTERPOS4SV 85
+#define CMD_RECTD 86
+#define CMD_RECTDV 87
+#define CMD_RECTF 88
+#define CMD_RECTFV 89
+#define CMD_RECTI 90
+#define CMD_RECTIV 91
+#define CMD_RECTS 92
+#define CMD_RECTSV 93
+#define CMD_TEXCOORD1D 94
+#define CMD_TEXCOORD1DV 95
+#define CMD_TEXCOORD1F 96
+#define CMD_TEXCOORD1FV 97
+#define CMD_TEXCOORD1I 98
+#define CMD_TEXCOORD1IV 99
+#define CMD_TEXCOORD1S 100
+#define CMD_TEXCOORD1SV 101
+#define CMD_TEXCOORD2D 102
+#define CMD_TEXCOORD2DV 103
+#define CMD_TEXCOORD2F 104
+#define CMD_TEXCOORD2FV 105
+#define CMD_TEXCOORD2I 106
+#define CMD_TEXCOORD2IV 107
+#define CMD_TEXCOORD2S 108
+#define CMD_TEXCOORD2SV 109
+#define CMD_TEXCOORD3D 110
+#define CMD_TEXCOORD3DV 111
+#define CMD_TEXCOORD3F 112
+#define CMD_TEXCOORD3FV 113
+#define CMD_TEXCOORD3I 114
+#define CMD_TEXCOORD3IV 115
+#define CMD_TEXCOORD3S 116
+#define CMD_TEXCOORD3SV 117
+#define CMD_TEXCOORD4D 118
+#define CMD_TEXCOORD4DV 119
+#define CMD_TEXCOORD4F 120
+#define CMD_TEXCOORD4FV 121
+#define CMD_TEXCOORD4I 122
+#define CMD_TEXCOORD4IV 123
+#define CMD_TEXCOORD4S 124
+#define CMD_TEXCOORD4SV 125
+#define CMD_VERTEX2D 126
+#define CMD_VERTEX2DV 127
+#define CMD_VERTEX2F 128
+#define CMD_VERTEX2FV 129
+#define CMD_VERTEX2I 130
+#define CMD_VERTEX2IV 131
+#define CMD_VERTEX2S 132
+#define CMD_VERTEX2SV 133
+#define CMD_VERTEX3D 134
+#define CMD_VERTEX3DV 135
+#define CMD_VERTEX3F 136
+#define CMD_VERTEX3FV 137
+#define CMD_VERTEX3I 138
+#define CMD_VERTEX3IV 139
+#define CMD_VERTEX3S 140
+#define CMD_VERTEX3SV 141
+#define CMD_VERTEX4D 142
+#define CMD_VERTEX4DV 143
+#define CMD_VERTEX4F 144
+#define CMD_VERTEX4FV 145
+#define CMD_VERTEX4I 146
+#define CMD_VERTEX4IV 147
+#define CMD_VERTEX4S 148
+#define CMD_VERTEX4SV 149
+#define CMD_CLIPPLANE 150
+#define CMD_COLORMATERIAL 151
+#define CMD_CULLFACE 152
+#define CMD_FOGF 153
+#define CMD_FOGFV 154
+#define CMD_FOGI 155
+#define CMD_FOGIV 156
+#define CMD_FRONTFACE 157
+#define CMD_HINT 158
+#define CMD_LIGHTF 159
+#define CMD_LIGHTFV 160
+#define CMD_LIGHTI 161
+#define CMD_LIGHTIV 162
+#define CMD_LIGHTMODELF 163
+#define CMD_LIGHTMODELFV 164
+#define CMD_LIGHTMODELI 165
+#define CMD_LIGHTMODELIV 166
+#define CMD_LINESTIPPLE 167
+#define CMD_LINEWIDTH 168
+#define CMD_MATERIALF 169
+#define CMD_MATERIALFV 170
+#define CMD_MATERIALI 171
+#define CMD_MATERIALIV 172
+#define CMD_POINTSIZE 173
+#define CMD_POLYGONMODE 174
+#define CMD_POLYGONSTIPPLE 175
+#define CMD_SCISSOR 176
+#define CMD_SHADEMODEL 177
+#define CMD_TEXPARAMETERF 178
+#define CMD_TEXPARAMETERFV 179
+#define CMD_TEXPARAMETERI 180
+#define CMD_TEXPARAMETERIV 181
+#define CMD_TEXIMAGE1D 182
+#define CMD_TEXIMAGE2D 183
+#define CMD_TEXENVF 184
+#define CMD_TEXENVFV 185
+#define CMD_TEXENVI 186
+#define CMD_TEXENVIV 187
+#define CMD_TEXGEND 188
+#define CMD_TEXGENDV 189
+#define CMD_TEXGENF 190
+#define CMD_TEXGENFV 191
+#define CMD_TEXGENI 192
+#define CMD_TEXGENIV 193
+#define CMD_FEEDBACKBUFFER 194
+#define CMD_SELECTBUFFER 195
+#define CMD_RENDERMODE 196
+#define CMD_INITNAMES 197
+#define CMD_LOADNAME 198
+#define CMD_PASSTHROUGH 199
+#define CMD_POPNAME 200
+#define CMD_PUSHNAME 201
+#define CMD_DRAWBUFFER 202
+#define CMD_CLEAR 203
+#define CMD_CLEARACCUM 204
+#define CMD_CLEARINDEX 205
+#define CMD_CLEARCOLOR 206
+#define CMD_CLEARSTENCIL 207
+#define CMD_CLEARDEPTH 208
+#define CMD_STENCILMASK 209
+#define CMD_COLORMASK 210
+#define CMD_DEPTHMASK 211
+#define CMD_INDEXMASK 212
+#define CMD_ACCUM 213
+#define CMD_DISABLE 214
+#define CMD_ENABLE 215
+#define CMD_FINISH 216
+#define CMD_FLUSH 217
+#define CMD_POPATTRIB 218
+#define CMD_PUSHATTRIB 219
+#define CMD_MAP1D 220
+#define CMD_MAP1F 221
+#define CMD_MAP2D 222
+#define CMD_MAP2F 223
+#define CMD_MAPGRID1D 224
+#define CMD_MAPGRID1F 225
+#define CMD_MAPGRID2D 226
+#define CMD_MAPGRID2F 227
+#define CMD_EVALCOORD1D 228
+#define CMD_EVALCOORD1DV 229
+#define CMD_EVALCOORD1F 230
+#define CMD_EVALCOORD1FV 231
+#define CMD_EVALCOORD2D 232
+#define CMD_EVALCOORD2DV 233
+#define CMD_EVALCOORD2F 234
+#define CMD_EVALCOORD2FV 235
+#define CMD_EVALMESH1 236
+#define CMD_EVALPOINT1 237
+#define CMD_EVALMESH2 238
+#define CMD_EVALPOINT2 239
+#define CMD_ALPHAFUNC 240
+#define CMD_BLENDFUNC 241
+#define CMD_LOGICOP 242
+#define CMD_STENCILFUNC 243
+#define CMD_STENCILOP 244
+#define CMD_DEPTHFUNC 245
+#define CMD_PIXELZOOM 246
+#define CMD_PIXELTRANSFERF 247
+#define CMD_PIXELTRANSFERI 248
+#define CMD_PIXELSTOREF 249
+#define CMD_PIXELSTOREI 250
+#define CMD_PIXELMAPFV 251
+#define CMD_PIXELMAPUIV 252
+#define CMD_PIXELMAPUSV 253
+#define CMD_READBUFFER 254
+#define CMD_COPYPIXELS 255
+#define CMD_READPIXELS 256
+#define CMD_DRAWPIXELS 257
+#define CMD_GETBOOLEANV 258
+#define CMD_GETCLIPPLANE 259
+#define CMD_GETDOUBLEV 260
+#define CMD_GETERROR 261
+#define CMD_GETFLOATV 262
+#define CMD_GETINTEGERV 263
+#define CMD_GETLIGHTFV 264
+#define CMD_GETLIGHTIV 265
+#define CMD_GETMAPDV 266
+#define CMD_GETMAPFV 267
+#define CMD_GETMAPIV 268
+#define CMD_GETMATERIALFV 269
+#define CMD_GETMATERIALIV 270
+#define CMD_GETPIXELMAPFV 271
+#define CMD_GETPIXELMAPUIV 272
+#define CMD_GETPIXELMAPUSV 273
+#define CMD_GETPOLYGONSTIPPLE 274
+#define CMD_GETSTRING 275
+#define CMD_GETTEXENVFV 276
+#define CMD_GETTEXENVIV 277
+#define CMD_GETTEXGENDV 278
+#define CMD_GETTEXGENFV 279
+#define CMD_GETTEXGENIV 280
+#define CMD_GETTEXIMAGE 281
+#define CMD_GETTEXPARAMETERFV 282
+#define CMD_GETTEXPARAMETERIV 283
+#define CMD_GETTEXLEVELPARAMETERFV 284
+#define CMD_GETTEXLEVELPARAMETERIV 285
+#define CMD_ISENABLED 286
+#define CMD_ISLIST 287
+#define CMD_DEPTHRANGE 288
+#define CMD_FRUSTUM 289
+#define CMD_LOADIDENTITY 290
+#define CMD_LOADMATRIXF 291
+#define CMD_LOADMATRIXD 292
+#define CMD_MATRIXMODE 293
+#define CMD_MULTMATRIXF 294
+#define CMD_MULTMATRIXD 295
+#define CMD_ORTHO 296
+#define CMD_POPMATRIX 297
+#define CMD_PUSHMATRIX 298
+#define CMD_ROTATED 299
+#define CMD_ROTATEF 300
+#define CMD_SCALED 301
+#define CMD_SCALEF 302
+#define CMD_TRANSLATED 303
+#define CMD_TRANSLATEF 304
+#define CMD_VIEWPORT 305
+#define CMD_ARRAYELEMENT 306
+#define CMD_BINDTEXTURE 307
+#define CMD_COLORPOINTER 308
+#define CMD_DISABLECLIENTSTATE 309
+#define CMD_DRAWARRAYS 310
+#define CMD_DRAWELEMENTS 311
+#define CMD_EDGEFLAGPOINTER 312
+#define CMD_ENABLECLIENTSTATE 313
+#define CMD_INDEXPOINTER 314
+#define CMD_INDEXUB 315
+#define CMD_INDEXUBV 316
+#define CMD_INTERLEAVEDARRAYS 317
+#define CMD_NORMALPOINTER 318
+#define CMD_POLYGONOFFSET 319
+#define CMD_TEXCOORDPOINTER 320
+#define CMD_VERTEXPOINTER 321
+#define CMD_ARETEXTURESRESIDENT 322
+#define CMD_COPYTEXIMAGE1D 323
+#define CMD_COPYTEXIMAGE2D 324
+#define CMD_COPYTEXSUBIMAGE1D 325
+#define CMD_COPYTEXSUBIMAGE2D 326
+#define CMD_DELETETEXTURES 327
+#define CMD_GENTEXTURES 328
+#define CMD_GETPOINTERV 329
+#define CMD_ISTEXTURE 330
+#define CMD_PRIORITIZETEXTURES 331
+#define CMD_TEXSUBIMAGE1D 332
+#define CMD_TEXSUBIMAGE2D 333
+#define CMD_POPCLIENTATTRIB 334
+#define CMD_PUSHCLIENTATTRIB 335
+#define CMD_BLENDCOLOR 336
+#define CMD_BLENDEQUATION 337
+#define CMD_DRAWRANGEELEMENTS 338
+#define CMD_COLORTABLE 339
+#define CMD_COLORTABLEPARAMETERFV 340
+#define CMD_COLORTABLEPARAMETERIV 341
+#define CMD_COPYCOLORTABLE 342
+#define CMD_GETCOLORTABLE 343
+#define CMD_GETCOLORTABLEPARAMETERFV 344
+#define CMD_GETCOLORTABLEPARAMETERIV 345
+#define CMD_COLORSUBTABLE 346
+#define CMD_COPYCOLORSUBTABLE 347
+#define CMD_CONVOLUTIONFILTER1D 348
+#define CMD_CONVOLUTIONFILTER2D 349
+#define CMD_CONVOLUTIONPARAMETERF 350
+#define CMD_CONVOLUTIONPARAMETERFV 351
+#define CMD_CONVOLUTIONPARAMETERI 352
+#define CMD_CONVOLUTIONPARAMETERIV 353
+#define CMD_COPYCONVOLUTIONFILTER1D 354
+#define CMD_COPYCONVOLUTIONFILTER2D 355
+#define CMD_GETCONVOLUTIONFILTER 356
+#define CMD_GETCONVOLUTIONPARAMETERFV 357
+#define CMD_GETCONVOLUTIONPARAMETERIV 358
+#define CMD_GETSEPARABLEFILTER 359
+#define CMD_SEPARABLEFILTER2D 360
+#define CMD_GETHISTOGRAM 361
+#define CMD_GETHISTOGRAMPARAMETERFV 362
+#define CMD_GETHISTOGRAMPARAMETERIV 363
+#define CMD_GETMINMAX 364
+#define CMD_GETMINMAXPARAMETERFV 365
+#define CMD_GETMINMAXPARAMETERIV 366
+#define CMD_HISTOGRAM 367
+#define CMD_MINMAX 368
+#define CMD_RESETHISTOGRAM 369
+#define CMD_RESETMINMAX 370
+#define CMD_TEXIMAGE3D 371
+#define CMD_TEXSUBIMAGE3D 372
+#define CMD_COPYTEXSUBIMAGE3D 373
+#define CMD_ACTIVETEXTUREARB 374
+#define CMD_CLIENTACTIVETEXTUREARB 375
+#define CMD_MULTITEXCOORD1DARB 376
+#define CMD_MULTITEXCOORD1DVARB 377
+#define CMD_MULTITEXCOORD1FARB 378
+#define CMD_MULTITEXCOORD1FVARB 379
+#define CMD_MULTITEXCOORD1IARB 380
+#define CMD_MULTITEXCOORD1IVARB 381
+#define CMD_MULTITEXCOORD1SARB 382
+#define CMD_MULTITEXCOORD1SVARB 383
+#define CMD_MULTITEXCOORD2DARB 384
+#define CMD_MULTITEXCOORD2DVARB 385
+#define CMD_MULTITEXCOORD2FARB 386
+#define CMD_MULTITEXCOORD2FVARB 387
+#define CMD_MULTITEXCOORD2IARB 388
+#define CMD_MULTITEXCOORD2IVARB 389
+#define CMD_MULTITEXCOORD2SARB 390
+#define CMD_MULTITEXCOORD2SVARB 391
+#define CMD_MULTITEXCOORD3DARB 392
+#define CMD_MULTITEXCOORD3DVARB 393
+#define CMD_MULTITEXCOORD3FARB 394
+#define CMD_MULTITEXCOORD3FVARB 395
+#define CMD_MULTITEXCOORD3IARB 396
+#define CMD_MULTITEXCOORD3IVARB 397
+#define CMD_MULTITEXCOORD3SARB 398
+#define CMD_MULTITEXCOORD3SVARB 399
+#define CMD_MULTITEXCOORD4DARB 400
+#define CMD_MULTITEXCOORD4DVARB 401
+#define CMD_MULTITEXCOORD4FARB 402
+#define CMD_MULTITEXCOORD4FVARB 403
+#define CMD_MULTITEXCOORD4IARB 404
+#define CMD_MULTITEXCOORD4IVARB 405
+#define CMD_MULTITEXCOORD4SARB 406
+#define CMD_MULTITEXCOORD4SVARB 407
+#define CMD_LOADTRANSPOSEMATRIXFARB 408
+#define CMD_LOADTRANSPOSEMATRIXDARB 409
+#define CMD_MULTTRANSPOSEMATRIXFARB 410
+#define CMD_MULTTRANSPOSEMATRIXDARB 411
+#define CMD_SAMPLECOVERAGEARB 412
+#define CMD_SAMPLEPASSARB 413
+#define CMD_POLYGONOFFSETEXT 414
+#define CMD_GETTEXFILTERFUNCSGIS 415
+#define CMD_TEXFILTERFUNCSGIS 416
+#define CMD_GETHISTOGRAMEXT 417
+#define CMD_GETHISTOGRAMPARAMETERFVEXT 418
+#define CMD_GETHISTOGRAMPARAMETERIVEXT 419
+#define CMD_GETMINMAXEXT 420
+#define CMD_GETMINMAXPARAMETERFVEXT 421
+#define CMD_GETMINMAXPARAMETERIVEXT 422
+#define CMD_GETCONVOLUTIONFILTEREXT 423
+#define CMD_GETCONVOLUTIONPARAMETERFVEXT 424
+#define CMD_GETCONVOLUTIONPARAMETERIVEXT 425
+#define CMD_GETSEPARABLEFILTEREXT 426
+#define CMD_GETCOLORTABLESGI 427
+#define CMD_GETCOLORTABLEPARAMETERFVSGI 428
+#define CMD_GETCOLORTABLEPARAMETERIVSGI 429
+#define CMD_PIXELTEXGENSGIX 430
+#define CMD_PIXELTEXGENPARAMETERISGIS 431
+#define CMD_PIXELTEXGENPARAMETERIVSGIS 432
+#define CMD_PIXELTEXGENPARAMETERFSGIS 433
+#define CMD_PIXELTEXGENPARAMETERFVSGIS 434
+#define CMD_GETPIXELTexGenPARAMETERIVSGIS 435
+#define CMD_GETPIXELTexGenPARAMETERFVSGIS 436
+#define CMD_TEXIMAGE4DSGIS 437
+#define CMD_TEXSUBIMAGE4DSGIS 438
+#define CMD_ARETEXTURESRESIDENTEXT 439
+#define CMD_GENTEXTURESEXT 440
+#define CMD_ISTEXTUREEXT 441
+#define CMD_DETAILTEXFUNCSGIS 442
+#define CMD_GETDETAILTEXFUNCSGIS 443
+#define CMD_SHARPENTEXFUNCSGIS 444
+#define CMD_GETSHARPENTEXFUNCSGIS 445
+#define CMD_SAMPLEMASKSGIS 446
+#define CMD_SAMPLEPATTERNSGIS 447
+#define CMD_COLORPOINTEREXT 448
+#define CMD_EDGEFLAGPOINTEREXT 449
+#define CMD_INDEXPOINTEREXT 450
+#define CMD_NORMALPOINTEREXT 451
+#define CMD_TEXCOORDPOINTEREXT 452
+#define CMD_VERTEXPOINTEREXT 453
+#define CMD_SPRITEPARAMETERFSGIX 454
+#define CMD_SPRITEPARAMETERFVSGIX 455
+#define CMD_SPRITEPARAMETERISGIX 456
+#define CMD_SPRITEPARAMETERIVSGIX 457
+#define CMD_POINTPARAMETERFEXT 458
+#define CMD_POINTPARAMETERFVEXT 459
+#define CMD_GETINSTRUMENTSSGIX 460
+#define CMD_INSTRUMENTSBUFFERSGIX 461
+#define CMD_POLLINSTRUMENTSSGIX 462
+#define CMD_READINSTRUMENTSSGIX 463
+#define CMD_STARTINSTRUMENTSSGIX 464
+#define CMD_STOPINSTRUMENTSSGIX 465
+#define CMD_FRAMEZOOMSGIX 466
+#define CMD_TAGSAMPLEBUFFERSGIX 467
+#define CMD_REFERENCEPLANESGIX 468
+#define CMD_FLUSHRASTERSGIX 469
+#define CMD_GETLISTPARAMETERFVSGIX 470
+#define CMD_GETLISTPARAMETERIVSGIX 471
+#define CMD_LISTPARAMETERFSGIX 472
+#define CMD_LISTPARAMETERFVSGIX 473
+#define CMD_LISTPARAMETERISGIX 474
+#define CMD_LISTPARAMETERIVSGIX 475
+#define CMD_FRAGMENTCOLORMATERIALSGIX 476
+#define CMD_FRAGMENTLIGHTFSGIX 477
+#define CMD_FRAGMENTLIGHTFVSGIX 478
+#define CMD_FRAGMENTLIGHTISGIX 479
+#define CMD_FRAGMENTLIGHTIVSGIX 480
+#define CMD_FRAGMENTLIGHTMODELFSGIX 481
+#define CMD_FRAGMENTLIGHTMODELFVSGIX 482
+#define CMD_FRAGMENTLIGHTMODELISGIX 483
+#define CMD_FRAGMENTLIGHTMODELIVSGIX 484
+#define CMD_FRAGMENTMATERIALFSGIX 485
+#define CMD_FRAGMENTMATERIALFVSGIX 486
+#define CMD_FRAGMENTMATERIALISGIX 487
+#define CMD_FRAGMENTMATERIALIVSGIX 488
+#define CMD_GETFRAGMENTLIGHTFVSGIX 489
+#define CMD_GETFRAGMENTLIGHTIVSGIX 490
+#define CMD_GETFRAGMENTMATERIALFVSGIX 491
+#define CMD_GETFRAGMENTMATERIALIVSGIX 492
+#define CMD_LIGHTENVISGIX 493
+#define CMD_VERTEXWEIGHTFEXT 494
+#define CMD_VERTEXWEIGHTFVEXT 495
+#define CMD_VERTEXWEIGHTPOINTEREXT 496
+#define CMD_FLUSHVERTEXARRAYRANGENV 497
+#define CMD_VERTEXARRAYRANGENV 498
+#define CMD_COMBINERPARAMETERFVNV 499
+#define CMD_COMBINERPARAMETERFNV 500
+#define CMD_COMBINERPARAMETERIVNV 501
+#define CMD_COMBINERPARAMETERINV 502
+#define CMD_COMBINERINPUTNV 503
+#define CMD_COMBINEROUTPUTNV 504
+#define CMD_FINALCOMBINERINPUTNV 505
+#define CMD_GETCOMBINERINPUTPARAMETERFVNV 506
+#define CMD_GETCOMBINERINPUTPARAMETERIVNV 507
+#define CMD_GETCOMBINEROUTPUTPARAMETERFVNV 508
+#define CMD_GETCOMBINEROUTPUTPARAMETERIVNV 509
+#define CMD_GETFINALCOMBINERINPUTPARAMETERFVNV 510
+#define CMD_GETFINALCOMBINERINPUTPARAMETERIVNV 511
+#define CMD_RESIZEBUFFERSMESA 512
+#define CMD_WINDOWPOS2DMESA 513
+#define CMD_WINDOWPOS2DVMESA 514
+#define CMD_WINDOWPOS2FMESA 515
+#define CMD_WINDOWPOS2FVMESA 516
+#define CMD_WINDOWPOS2IMESA 517
+#define CMD_WINDOWPOS2IVMESA 518
+#define CMD_WINDOWPOS2SMESA 519
+#define CMD_WINDOWPOS2SVMESA 520
+#define CMD_WINDOWPOS3DMESA 521
+#define CMD_WINDOWPOS3DVMESA 522
+#define CMD_WINDOWPOS3FMESA 523
+#define CMD_WINDOWPOS3FVMESA 524
+#define CMD_WINDOWPOS3IMESA 525
+#define CMD_WINDOWPOS3IVMESA 526
+#define CMD_WINDOWPOS3SMESA 527
+#define CMD_WINDOWPOS3SVMESA 528
+#define CMD_WINDOWPOS4DMESA 529
+#define CMD_WINDOWPOS4DVMESA 530
+#define CMD_WINDOWPOS4FMESA 531
+#define CMD_WINDOWPOS4FVMESA 532
+#define CMD_WINDOWPOS4IMESA 533
+#define CMD_WINDOWPOS4IVMESA 534
+#define CMD_WINDOWPOS4SMESA 535
+#define CMD_WINDOWPOS4SVMESA 536
+#define CMD_BLENDFUNCSEPARATEEXT 537
+#define CMD_INDEXMATERIALEXT 538
+#define CMD_INDEXFUNCEXT 539
+#define CMD_LOCKARRAYSEXT 540
+#define CMD_UNLOCKARRAYSEXT 541
+#define CMD_CULLPARAMETERDVEXT 542
+#define CMD_CULLPARAMETERFVEXT 543
+#define CMD_HINTPGI 544
+#define CMD_FOGCOORDFEXT 545
+#define CMD_FOGCOORDFVEXT 546
+#define CMD_FOGCOORDDEXT 547
+#define CMD_FOGCOORDDVEXT 548
+#define CMD_FOGCOORDPOINTEREXT 549
+#define CMD_GETCOLORTABLEEXT 550
+#define CMD_GETCOLORTABLEPARAMETERIVEXT 551
+#define CMD_GETCOLORTABLEPARAMETERFVEXT 552
+
+
+/* FIXME: Trace Extension itself - not yet defined. */
+#define CMD_NEWTRACEMESA 666
+#define CMD_ENDTRACEMESA 667
+#define CMD_TRACECOMMENTMESA 668
+
+
+
+/**
+ * Enumeration of non-GL entries in trace stream.
+ * This is (static) variable and "various" data,
+ * some of which optional. All these values are
+ * negative.
+ */
+#define VAR_VERSION -1 /* Metafile version. Mandatory. */
+#define VAR_CYCLES -2 /* Profiling, CPU cycles. Optional. */
+#define VAR_CONTEXT -3 /* Context ID. Optional. */
+#define VAR_THREAD -4 /* Thread ID. Optional. */
+#define VAR_STRING -5 /* Internally generated. Optional. */
+
+#define VAR_COLORELEMENT -6
+#define VAR_EDGEFLAGELEMENT -7
+#define VAR_INDEXELEMENT -8
+#define VAR_NORMALELEMENT -9
+#define VAR_TEXCOORDELEMENT -10
+#define VAR_VERTEXELEMENT -11 /* Dereferenced Vertex Array Data. */
+
+
+/* FIXME: more VAR_ as needed. */
+/*
+ * Mindbender - The following two vars are needed to surround the queries
+ * performed when the trace context is in a half initialized
+ * state.
+ */
+#define VAR_OOBBEGIN -14
+#define VAR_OOBEND -15
+
+/*
+ * Mindbender - These are needed when the pointer changes through one of the
+ * XXXPointer calls. Change these as needed.
+ */
+#define VAR_COLORPOINTER -8
+#define VAR_EDGEFLAGPOINTER -9
+#define VAR_INDEXPOINTER -10
+#define VAR_NORMALPOINTER -11
+#define VAR_TEXCOORDPOINTER -12
+#define VAR_VERTEXPOINTER -13
+
+
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_context.c b/xc/extras/Mesa/src/Trace/tr_context.c
new file mode 100644
index 000000000..df60240a1
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_context.c
@@ -0,0 +1,118 @@
+#ifdef MESA_TRACE
+
+#include "glheader.h"
+#include "glapi.h"
+#include "glapitable.h"
+#include "context.h"
+#include "tr_context.h"
+
+
+/* Full precision on floats/double, else human readable. */
+#define TR_FULL_PRECISION 0x000000001
+
+
+void trInitContext( trace_context_t * tr_context )
+{
+ int i;
+
+ if (!tr_context)
+ return;
+
+ tr_context->traceEnabled = GL_FALSE;
+ tr_context->logFP = stdout;
+ tr_context->traceName = NULL;
+
+ tr_context->traceAttribLogBits = GL_ALL_ATTRIB_BITS;
+ tr_context->traceEnableLogBits = GL_TRACE_ALL_BITS_MESA;
+
+ tr_context->betweenBeginEnd = GL_FALSE;
+
+ tr_context->framecounter = 0;
+
+ tr_context->trDoPrint = GL_TRUE;
+ tr_context->doExec = GL_TRUE;
+ tr_context->check_errors = GL_TRUE;
+
+ tr_context->head_errors = 0;
+ tr_context->tail_errors = 0;
+
+ for( i = 0; i < TR_MAX_QUEUED_ERRORS; i++ ) {
+ tr_context->cached_errors[i] = GL_NO_ERROR;
+ }
+
+#if 0
+ tr_context->doAsserts = GL_TRUE;
+ tr_context->clientStateValid = GL_FALSE;
+#endif
+}
+
+
+/**
+ * Get the current context.
+ */
+trace_context_t* trCtx() {
+ GLcontext * ctx;
+ ctx = (GLcontext *)_glapi_get_context();
+
+ assert(ctx);
+ assert(ctx->TraceCtx);
+ if( (!ctx) || !(ctx->TraceCtx) ) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ );
+ return NULL;
+ }
+
+ return ctx->TraceCtx;
+}
+
+
+/**
+ * Get the current, real dispatch table pointer.
+ */
+struct _glapi_table* trGetDispatch() {
+ return _glapi_get_dispatch();
+}
+
+
+void trSetTraceDispatch( void ) {
+ GLcontext * ctx;
+ ctx = (GLcontext *)_glapi_get_context();
+
+ assert( ctx );
+ assert( ctx->TraceCtx );
+ assert( ctx->TraceDispatch );
+
+ ctx->TraceCtx->traceEnabled = GL_TRUE;
+
+ /* XXX save returned value */
+ (void) _glapi_begin_dispatch_override(ctx->TraceDispatch);
+}
+
+
+void trSetOriginalDispatch( void ) {
+ GLcontext * ctx;
+ ctx = (GLcontext *)_glapi_get_context();
+
+ assert( ctx );
+ assert( ctx->TraceCtx );
+ assert( ctx->TraceDispatch );
+
+ ctx->TraceCtx->traceEnabled = GL_FALSE;
+
+ /* XXX pass value we got from _glapi_begin_dispatch_override() */
+ _glapi_end_dispatch_override(1);
+}
+
+
+/**
+ * Is error checking enabled?
+ */
+GLboolean trDoErrorCheck() {
+ return trCtx()->check_errors;
+}
+
+#else
+extern void tr_context_dummy_func(void);
+void tr_context_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_context.h b/xc/extras/Mesa/src/Trace/tr_context.h
new file mode 100644
index 000000000..68e78734d
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_context.h
@@ -0,0 +1,80 @@
+#ifndef TR_CONTEXT_H
+#define TR_CONTEXT_H
+
+#include "glheader.h"
+#include "glapitable.h"
+
+#define TR_MAX_QUEUED_ERRORS 8
+
+
+/**
+ * State Variables.
+ * To make this thread-safe we'd maintain such
+ * a set per thread/context.
+ */
+typedef struct t_t{
+
+ GLboolean traceEnabled;
+
+ /* The current log file pointer. */
+ FILE * logFP;
+
+ char * traceName;
+
+ /* What frame we're currently on. */
+ GLint framecounter;
+
+ /* Not yet used. This field will control which attributes should be logged. */
+ GLbitfield traceAttribLogBits;
+
+ GLbitfield traceEnableLogBits;
+
+ /* Used to short-circuit writing to the file, if the disk is full */
+ GLboolean trDoPrint;
+
+ /* Used to toggle whether the gl command should
+ * actually be executed. For now this will always be true.
+ */
+ GLboolean doExec;
+
+ /* Verify GL_NO_ERROR wherever possible. */
+ GLboolean check_errors;
+
+ /* Loop over all GL errors.
+ * TODO: We have to make sure the application gets
+ * the exact same errors despite our checking.
+ * That basically means we have to queue all
+ * errors from our internal checks.
+ */
+ GLint head_errors;
+ GLint tail_errors;
+
+ GLenum cached_errors[TR_MAX_QUEUED_ERRORS];
+
+ /* Not yet used. The 1st of many state flags used to
+ * track the current state of the GL state machine.
+ */
+ GLboolean betweenBeginEnd;
+
+#if 0
+ GLboolean doAsserts;
+ GLboolean clientStateValid;
+#endif
+
+} trace_context_t;
+
+
+extern void trInitContext( trace_context_t * tr_context );
+
+extern trace_context_t* trCtx( void );
+
+extern struct _glapi_table* trGetDispatch( void );
+
+extern void trSetTraceDispatch( void );
+
+extern void trSetOriginalDispatch( void );
+
+extern GLboolean trDoErrorCheck( void );
+
+
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_control.c b/xc/extras/Mesa/src/Trace/tr_control.c
new file mode 100644
index 000000000..ff67b15c3
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_control.c
@@ -0,0 +1,147 @@
+#ifdef MESA_TRACE
+#include "glheader.h"
+#include "glapi.h"
+#include "context.h" /* for _mesa_error */
+#include "mtypes.h"
+#include "tr_context.h"
+#include "tr_write.h"
+
+
+void glEnableTraceMESA( GLbitfield mask )
+{
+ trace_context_t * tctx = trCtx();
+
+ tctx->traceEnableLogBits = mask;
+ tctx->traceEnabled = GL_TRUE;
+}
+
+
+void glDisableTraceMESA( GLbitfield mask )
+{
+ /* Reset traceEnableLogBits ? */
+ trCtx()->traceEnabled = GL_FALSE;
+}
+
+
+void glNewTraceMESA( GLbitfield logbits, const GLubyte * traceName )
+{
+ char * newname;
+ GLint length;
+ GLcontext * ctx;
+ const char * defaultName = "traceGL";
+
+ ctx = (GLcontext *)_glapi_get_context();
+
+ assert(ctx);
+ assert(ctx->TraceCtx);
+ assert(ctx->TraceDispatch);
+ if( !ctx || /* Do we even have a context ? */
+ (ctx->TraceCtx->betweenBeginEnd == GL_TRUE) || /* Are we currently between glBegin and glEnd ? */
+ (ctx->TraceDispatch == _glapi_get_override_dispatch(1)) ) { /* Has a trace already started ? */
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ );
+ return;
+ }
+
+ /* FIXME!!! When do we free tracename after the app is finished? */
+ if( ctx->TraceCtx->traceName ) {
+ free( ctx->TraceCtx->traceName );
+ }
+
+ length = strlen((char *)traceName) + 1;
+ if( length != 1 ) {
+ newname = (char *)malloc( length );
+ strncpy( (char *)newname, (char *)traceName, length );
+ } else {
+ length = strlen( defaultName );
+ newname = (char *)malloc( length );
+ strncpy( (char *)newname, defaultName, length );
+ }
+ ctx->TraceCtx->traceName = newname;
+ ctx->TraceCtx->traceAttribLogBits = logbits;
+
+ trOpenLogFile();
+ trSetTraceDispatch();
+}
+
+
+void glEndTraceMESA(void)
+{
+ GLcontext * ctx;
+
+ ctx = (GLcontext *)_glapi_get_context();
+ assert(ctx);
+ assert(ctx->TraceCtx);
+ assert(ctx->TraceDispatch);
+
+ /* Do we even have a context ? */
+ /* Are we currently between glBegin and glEnd ? */
+ /* Are we sure the current dispatch _is_ the TraceDispatch ? */
+ if (!ctx ||
+ (ctx->TraceCtx->betweenBeginEnd == GL_TRUE) ||
+ (ctx->TraceDispatch != _glapi_get_override_dispatch(1)) ) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ );
+ return;
+ }
+
+#if 0
+ /* Always dump the max indices */
+// But not yet...
+ trWriteCMD( VAR_COLORPOINTER );
+ trWritei( ctx->TraceCtx->trColorPtrState.maxIndex );
+ trWriteCMD( VAR_EDGEFLAGPOINTER );
+ trWritei( ctx->TraceCtx->trEdgeFlagPtrState.maxIndex );
+ trWriteCMD( VAR_INDEXPOINTER );
+ trWritei( ctx->TraceCtx->trIndexPtrState.maxIndex );
+ trWriteCMD( VAR_NORMALPOINTER );
+ trWritei( ctx->TraceCtx->trNormalPtrState.maxIndex );
+ trWriteCMD( VAR_TEXCOORDPOINTER );
+ trWritei( ctx->TraceCtx->trTexCoordPtrState.maxIndex );
+ trWriteCMD( VAR_VERTEXPOINTER );
+ trWritei( ctx->TraceCtx->trVertexPtrState.maxIndex );
+#endif
+
+ trCloseLogFile();
+ trSetOriginalDispatch();
+}
+
+
+void glTraceAssertAttribMESA( GLbitfield attribMask )
+{
+#warning TraceAssertAttrib not implemented
+}
+
+
+void glTraceCommentMESA( const GLubyte * comment )
+{
+ trWriteString( (char *)comment );
+}
+
+
+void glTraceTextureMESA( GLuint name, const GLubyte* comment )
+{
+#warning TraceTexture not implemented
+}
+
+void glTraceListMESA( GLuint name, const GLubyte* comment )
+{
+#warning TraceList not implemented
+}
+
+
+void glTracePointerMESA( GLvoid* pointer, const GLubyte* comment )
+{
+#warning TracePointer not implemented
+}
+
+
+void glTracePointerRangeMESA( const GLvoid* first, const GLvoid* last, const GLubyte* comment )
+{
+#warning TracePointerRange not implemented
+}
+
+#else
+extern void tr_control_dummy_func(void);
+void tr_control_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_error.c b/xc/extras/Mesa/src/Trace/tr_error.c
new file mode 100644
index 000000000..24f439179
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_error.c
@@ -0,0 +1,40 @@
+#ifdef MESA_TRACE
+
+#include "tr_context.h"
+#include "tr_error.h"
+#include "tr_write.h"
+
+
+/* Have a Begin/End flag, skip checks if in-between. */
+
+
+/**
+ * Some GL implementations cache errors internally,
+ * thus we have to loop until we do not get
+ * any errors.
+ */
+void trError( void ) {
+ int sanity = 0; /* Bail out on endless loops. */
+ GLenum err;
+
+ if( !(trCtx()->check_errors) )
+ return;
+
+ while ( (err=trGetDispatch()->GetError())!=GL_NO_ERROR ) {
+ trWriteEnum(err);
+ sanity++;
+
+ if (sanity > TR_MAX_QUEUED_ERRORS ) {
+ /* Too many errors */
+ return;
+ }
+ }
+}
+
+
+#else
+extern void tr_error_dummy_func(void);
+void tr_error_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_error.h b/xc/extras/Mesa/src/Trace/tr_error.h
new file mode 100644
index 000000000..cf445bc88
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_error.h
@@ -0,0 +1,7 @@
+#ifndef TR_ERROR_H
+#define TR_ERROR_H
+
+extern void trError( void );
+
+#endif
+
diff --git a/xc/extras/Mesa/src/Trace/tr_support.c b/xc/extras/Mesa/src/Trace/tr_support.c
new file mode 100644
index 000000000..8428f108d
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_support.c
@@ -0,0 +1,584 @@
+#ifdef MESA_TRACE
+
+#include "GL/gl.h"
+#include "tr_context.h"
+#include "tr_support.h"
+#include "tr_write.h"
+
+
+#if 0
+static void trQueryConvolutionState( void ) {
+
+ if( trCtx()->trConvolutionWidth == -1 ) {
+ /* Query it */
+ trWriteCMD( VAR_OOBBEGIN );
+ trGetDispatch()->GetConvolutionParameteriv( GL_SEPARABLE_2D, GL_CONVOLUTION_WIDTH,
+ &(trCtx()->trConvolutionWidth) );
+ trWriteCMD( VAR_OOBEND );
+ }
+
+ if( trCtx()->trConvolutionHeight == -1 ) {
+ /* Query it */
+ trWriteCMD( VAR_OOBBEGIN );
+ trGetDispatch()->GetConvolutionParameteriv( GL_SEPARABLE_2D, GL_CONVOLUTION_HEIGHT,
+ &(trCtx()->trConvolutionHeight) );
+ trWriteCMD( VAR_OOBEND );
+ }
+}
+#endif
+
+
+void trZeroGetterData( GLenum pname, GLsizei typesize, GLvoid * params ) {
+
+ switch( pname ) {
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ memset( params, 0, typesize * 16 );
+ break;
+
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ memset( params, 0, typesize * 4 );
+ break;
+
+ case GL_CURRENT_NORMAL:
+ memset( params, 0, typesize * 3 );
+ break;
+
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_POLYGON_MODE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ memset( params, 0, typesize * 2 );
+ break;
+
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACTIVE_TEXTURE_ARB:
+ case GL_ALPHA_BIAS:
+ case GL_ALPHA_BITS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_AUX_BUFFERS:
+ case GL_BLEND:
+ case GL_BLEND_SRC:
+ case GL_BLUE_BIAS:
+ case GL_BLUE_BITS:
+ case GL_BLUE_SCALE:
+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_COLOR_ARRAY:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_LOGIC_OP:
+ case GL_COLOR_MATERIAL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_COLOR_TABLE:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_DEPTH_BIAS:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DITHER:
+ case GL_DOUBLEBUFFER:
+ case GL_DRAW_BUFFER:
+ case GL_EDGE_FLAG:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_FEEDBACK_BUFFER_SIZE:
+ case GL_FEEDBACK_BUFFER_TYPE:
+ case GL_FOG:
+ case GL_FOG_DENSITY:
+ case GL_FOG_END:
+ case GL_FOG_HINT:
+ case GL_FOG_INDEX:
+ case GL_FOG_MODE:
+ case GL_FOG_START:
+ case GL_FRONT_FACE:
+ case GL_GREEN_BIAS:
+ case GL_GREEN_BITS:
+ case GL_GREEN_SCALE:
+ case GL_HISTOGRAM:
+ case GL_INDEX_ARRAY:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_BITS:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_LOGIC_OP:
+ case GL_INDEX_MODE:
+ case GL_INDEX_OFFSET:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_WRITEMASK:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LINE_WIDTH:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_LIST_MODE:
+ case GL_LOGIC_OP_MODE:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_MATRIX_MODE:
+ case GL_MAX_3D_TEXTURE_SIZE:
+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_LIST_NESTING:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_MAX_TEXTURE_UNITS_ARB:
+ case GL_MINMAX:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_NAME_STACK_DEPTH:
+ case GL_NORMAL_ARRAY:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMALIZE:
+ case GL_PACK_ALIGNMENT:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_POINT_SIZE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_POLYGON_OFFSET_FILL:
+ case GL_POLYGON_OFFSET_LINE:
+ case GL_POLYGON_OFFSET_POINT:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_POLYGON_STIPPLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_READ_BUFFER:
+ case GL_RED_BIAS:
+ case GL_RED_BITS:
+ case GL_RED_SCALE:
+ case GL_RENDER_MODE:
+ case GL_RESCALE_NORMAL:
+ case GL_RGBA_MODE:
+ case GL_SCISSOR_TEST:
+ case GL_SELECTION_BUFFER_SIZE:
+ case GL_SEPARABLE_2D:
+ case GL_SHADE_MODEL:
+ case GL_SMOOTH_LINE_WIDTH_GRANULARITY:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_STENCIL_BITS:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_WRITEMASK:
+ case GL_STEREO:
+ case GL_SUBPIXEL_BITS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_VERTEX_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ memset( params, 0, typesize );
+ break;
+
+ default:
+ /* Bad enum. What should we do? */
+ break;
+ }
+}
+
+
+void trPrintColorTableData( GLenum pname, GLenum type, GLvoid * params ) {
+ if( !(trCtx()->doExec) ) {
+ switch( pname ) {
+ case GL_COLOR_TABLE_SCALE:
+ case GL_COLOR_TABLE_BIAS:
+ if( type == GL_FLOAT ) {
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ } else {
+ memset( params, 0, 4 * sizeof(GLint) );
+ }
+ break;
+
+ case GL_COLOR_TABLE_FORMAT:
+ case GL_COLOR_TABLE_WIDTH:
+ case GL_COLOR_TABLE_RED_SIZE:
+ case GL_COLOR_TABLE_GREEN_SIZE:
+ case GL_COLOR_TABLE_BLUE_SIZE:
+ case GL_COLOR_TABLE_ALPHA_SIZE:
+ case GL_COLOR_TABLE_LUMINANCE_SIZE:
+ case GL_COLOR_TABLE_INTENSITY_SIZE:
+ if( type == GL_FLOAT ) {
+ ((GLfloat *)params)[0] = 0.0;
+ } else {
+ ((GLint *)params)[0] = 0;
+ }
+ break;
+
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+ }
+
+ switch( pname ) {
+ case GL_COLOR_TABLE_SCALE:
+ case GL_COLOR_TABLE_BIAS:
+ if( type == GL_FLOAT ) {
+ trWriteArrayf( 4, (GLfloat *)params );
+ } else {
+ trWriteArrayi( 4, (GLint *)params );
+ }
+ break;
+
+ case GL_COLOR_TABLE_FORMAT:
+ case GL_COLOR_TABLE_WIDTH:
+ case GL_COLOR_TABLE_RED_SIZE:
+ case GL_COLOR_TABLE_GREEN_SIZE:
+ case GL_COLOR_TABLE_BLUE_SIZE:
+ case GL_COLOR_TABLE_ALPHA_SIZE:
+ case GL_COLOR_TABLE_LUMINANCE_SIZE:
+ case GL_COLOR_TABLE_INTENSITY_SIZE:
+ if( type == GL_FLOAT ) {
+ trWritef( ((GLfloat *)params)[0] );
+ } else {
+ trWritei( ((GLint *)params)[0] );
+ }
+ break;
+
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+}
+
+
+void trWriteTypeArray( GLenum type, GLsizei width, GLsizei pixelsize, GLint start, const GLvoid * ptr ) {
+
+ switch( type ) {
+ case GL_BYTE:
+ {
+ GLbyte * p = (GLbyte *)ptr + start * pixelsize;
+ trWriteArrayb( width * pixelsize, p );
+ }
+ break;
+
+ case GL_UNSIGNED_BYTE:
+ case GL_UNSIGNED_BYTE_3_3_2:
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ {
+ GLubyte * p = (GLubyte *)ptr + start * pixelsize;
+ trWriteArrayub( width * pixelsize, p );
+ }
+ break;
+
+ case GL_SHORT:
+ {
+ GLshort * p = (GLshort *)ptr + start * pixelsize;
+ trWriteArrays( width * pixelsize, p );
+ }
+ break;
+
+ case GL_UNSIGNED_SHORT:
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ {
+ GLushort * p = (GLushort *)ptr + start * pixelsize;
+ trWriteArrayus( width * pixelsize, p );
+ }
+ break;
+
+ case GL_INT:
+ {
+ GLint * p = (GLint *)ptr + start * pixelsize;
+ trWriteArrayi( width * pixelsize, p );
+ }
+ break;
+
+ case GL_UNSIGNED_INT:
+ case GL_UNSIGNED_INT_8_8_8_8:
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ case GL_UNSIGNED_INT_10_10_10_2:
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ {
+ GLuint * p = (GLuint *)ptr + start * pixelsize;
+ trWriteArrayui( width * pixelsize, p );
+ }
+ break;
+
+ case GL_FLOAT:
+ {
+ GLfloat * p = (GLfloat *)ptr + start * pixelsize;
+ trWriteArrayf( width * pixelsize, p );
+ }
+ break;
+
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+}
+
+
+static GLint trGetFormatSize( GLenum format ) {
+ GLint pixelsize;
+
+ switch( format ) {
+ case GL_RED:
+ case GL_GREEN:
+ case GL_BLUE:
+ case GL_ALPHA:
+ case GL_LUMINANCE:
+ case GL_INTENSITY:
+ case GL_COLOR_INDEX:
+ case GL_STENCIL_INDEX:
+ case GL_DEPTH_COMPONENT:
+ pixelsize = 1;
+ break;
+ case GL_LUMINANCE_ALPHA:
+ pixelsize = 2;
+ break;
+ case GL_RGB:
+ case GL_BGR:
+ pixelsize = 3;
+ break;
+ case GL_RGBA:
+ case GL_BGRA:
+ pixelsize = 4;
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ pixelsize = 0;
+ break;
+ }
+
+ return pixelsize;
+}
+
+
+GLint trGetPixelSize( GLenum format, GLenum type ) {
+ GLint retval;
+ GLint formatsize = trGetFormatSize( format );
+
+ switch( type ) {
+ case GL_BYTE:
+ case GL_UNSIGNED_BYTE:
+ retval = formatsize * sizeof(GLubyte);
+ break;
+
+ case GL_UNSIGNED_BYTE_3_3_2:
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ if( (type == GL_RGB) || (type == GL_BGR) ) {
+ retval = sizeof(GLubyte);
+ } else {
+ retval = -1;
+ }
+ break;
+
+ case GL_SHORT:
+ case GL_UNSIGNED_SHORT:
+ retval = sizeof(GLushort);
+ break;
+
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ if( (type == GL_RGB) || (type == GL_BGR) ) {
+ retval = sizeof(GLushort);
+ } else {
+ retval = -1;
+ }
+ break;
+
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ if( (type == GL_RGBA) || (type == GL_BGRA) ) {
+ retval = sizeof(GLushort);
+ } else {
+ retval = -1;
+ }
+ break;
+
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ retval = sizeof(GLuint);
+ break;
+
+ case GL_UNSIGNED_INT_8_8_8_8:
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ case GL_UNSIGNED_INT_10_10_10_2:
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ if( (type == GL_RGBA) || (type == GL_BGRA) ) {
+ retval = sizeof(GLuint);
+ } else {
+ retval = -1;
+ }
+ break;
+
+ case GL_FLOAT:
+ retval = sizeof(GLfloat);
+ break;
+
+ default:
+ retval = -1;
+ break;
+ }
+
+ return retval;
+}
+
+
+#else
+extern void tr_support_dummy_func(void);
+void tr_support_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_support.h b/xc/extras/Mesa/src/Trace/tr_support.h
new file mode 100644
index 000000000..8e6807d5f
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_support.h
@@ -0,0 +1,16 @@
+#ifndef TR_SUPPORT_H
+#define TR_SUPPORT_H
+
+
+extern void trQueryConvolutionState( void );
+
+extern void trZeroGetterData( GLenum pname, GLsizei typesize, GLvoid * params );
+
+extern void trPrintColorTableData( GLenum pname, GLenum type, GLvoid * params );
+
+extern void trWriteTypeArray( GLenum type, GLsizei width, GLsizei pixelsize, GLint start, const GLvoid * ptr );
+
+extern GLint trGetPixelSize( GLenum format, GLenum type );
+
+
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_wrapper.c b/xc/extras/Mesa/src/Trace/tr_wrapper.c
new file mode 100644
index 000000000..85758a374
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_wrapper.c
@@ -0,0 +1,9311 @@
+#ifdef MESA_TRACE
+
+#include "glheader.h"
+#include "glapitable.h"
+#include "tr_write.h"
+#include "tr_error.h"
+#include "tr_context.h"
+#include "tr_commands.h"
+#include "tr_support.h"
+#include "tr_wrapper.h"
+
+
+#ifdef GLAPI
+#undef GLAPI
+#endif
+#define GLAPI static
+
+#ifdef GLAPIENTRY
+#undef GLAPIENTRY
+#endif
+#define GLAPIENTRY
+
+
+GLAPI void GLAPIENTRY trAccum( GLenum op, GLfloat value ) {
+ trWriteCMD( CMD_ACCUM );
+ trWriteEnum( op );
+ trWritef( value );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Accum( op, value );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trActiveTextureARB( GLenum texture) {
+ trWriteCMD( CMD_ACTIVETEXTUREARB );
+ trWriteEnum( texture );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ActiveTextureARB( texture );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trAlphaFunc( GLenum func, GLclampf ref ) {
+ trWriteCMD( CMD_ALPHAFUNC );
+ trWriteEnum( func );
+ trWriteClampf( ref );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->AlphaFunc( func, ref );
+ trError();
+ }
+}
+
+
+GLAPI GLboolean GLAPIENTRY trAreTexturesResident( GLsizei n, const GLuint *textures, GLboolean *residences ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ARETEXTURESRESIDENT );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+ trWritePointer( (void *)residences );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->AreTexturesResident( n, textures, residences );
+ trError();
+ } else {
+ memset( residences, 0, n * sizeof(GLboolean) );
+ retval = GL_NO_ERROR;
+ }
+
+ trWriteBool( retval );
+ trWriteArrayBool( n, residences );
+
+ return retval;
+}
+
+
+GLAPI GLboolean GLAPIENTRY trAreTexturesResidentEXT( GLsizei n, const GLuint *textures, GLboolean *residences ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ARETEXTURESRESIDENTEXT );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+ trWritePointer( (void *)residences );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->AreTexturesResidentEXT( n, textures, residences );
+ trError();
+ } else {
+ memset( residences, 0, n * sizeof(GLboolean) );
+ retval = GL_NO_ERROR;
+ }
+
+ trWriteBool( retval );
+ trWriteArrayBool( n, residences );
+
+ return retval;
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trArrayElementEXT( GLint i ) {
+ trWriteCMD( CMD_ARRAYELEMENTEXT );
+ trWritei( i );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ArrayElementEXT( i );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trArrayElement( GLint i ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_ARRAYELEMENT );
+ trWritei( i );
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->ArrayElement( i );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trBegin( GLenum mode ) {
+ trWriteCMD( CMD_BEGIN );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Begin( mode );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trBindTextureEXT( GLenum target, GLuint texture ) {
+ trWriteCMD( CMD_BINDTEXTUREEXT );
+ trWriteEnum( target );
+ trWriteui( texture );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BindTextureEXT( target, texture );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trBindTexture( GLenum target, GLuint texture ) {
+ trWriteCMD( CMD_BINDTEXTURE );
+ trWriteEnum( target );
+ trWriteui( texture );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BindTexture( target, texture );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trBitmap( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap ) {
+ trWriteCMD( CMD_BITMAP );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWritef( xorig );
+ trWritef( yorig );
+ trWritef( xmove );
+ trWritef( ymove );
+ trWritePointer( (void *)bitmap );
+ trFileFlush();
+ trWriteArrayub( width * height / 8, bitmap );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Bitmap( width, height, xorig, yorig, xmove, ymove, bitmap );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trBlendColorEXT( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) {
+ trWriteCMD( CMD_BLENDCOLOREXT );
+ trWriteClampf( red );
+ trWriteClampf( green );
+ trWriteClampf( blue );
+ trWriteClampf( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BlendColorEXT( red, green, blue, alpha );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trBlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) {
+ trWriteCMD( CMD_BLENDCOLOR );
+ trWriteClampf( red );
+ trWriteClampf( green );
+ trWriteClampf( blue );
+ trWriteClampf( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BlendColor( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trBlendEquationEXT( GLenum mode ) {
+ trWriteCMD( CMD_BLENDEQUATIONEXT );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BlendEquationEXT( mode );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trBlendEquation( GLenum mode ) {
+ trWriteCMD( CMD_BLENDEQUATION );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BlendEquation( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trBlendFunc( GLenum sfactor, GLenum dfactor ) {
+ trWriteCMD( CMD_BLENDFUNC );
+ trWriteEnum( sfactor );
+ trWriteEnum( dfactor );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BlendFunc( sfactor, dfactor );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCallList( GLuint list ) {
+ trWriteCMD( CMD_CALLLIST );
+ trWriteui( list );
+
+ if( trCtx()->doExec ) {
+ trSetOriginalDispatch();
+ trGetDispatch()->CallList( list );
+ trSetTraceDispatch();
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCallLists( GLsizei n, GLenum type, const GLvoid *lists ) {
+ trWriteCMD( CMD_CALLLISTS );
+ trWriteSizei( n );
+ trWriteEnum( type );
+ trWritePointer( (void *)lists );
+ trFileFlush();
+
+ switch( type ) {
+ case GL_2_BYTES:
+ trWriteTypeArray( GL_UNSIGNED_BYTE, n, 2, 0, lists );
+ break;
+ case GL_3_BYTES:
+ trWriteTypeArray( GL_UNSIGNED_BYTE, n, 3, 0, lists );
+ break;
+ case GL_4_BYTES:
+ trWriteTypeArray( GL_UNSIGNED_BYTE, n, 4, 0, lists );
+ break;
+ default:
+ trWriteTypeArray( type, n, 1, 0, lists );
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trSetOriginalDispatch();
+ trGetDispatch()->CallLists( n, type, lists );
+ trSetTraceDispatch();
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) {
+ trWriteCMD( CMD_CLEARACCUM );
+ trWritef( red );
+ trWritef( green );
+ trWritef( blue );
+ trWritef( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClearAccum( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) {
+ trWriteCMD( CMD_CLEARCOLOR );
+ trWriteClampf( red );
+ trWriteClampf( green );
+ trWriteClampf( blue );
+ trWriteClampf( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClearColor( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClearDepth( GLclampd depth ) {
+ trWriteCMD( CMD_CLEARDEPTH );
+ trWriteClampd( depth );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClearDepth( depth );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClear( GLbitfield mask ) {
+ trWriteCMD( CMD_CLEAR );
+ trWriteBits( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Clear( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClearIndex( GLfloat c ) {
+ trWriteCMD( CMD_CLEARINDEX );
+ trWritef( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClearIndex( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClearStencil( GLint s ) {
+ trWriteCMD( CMD_CLEARSTENCIL );
+ trWritei( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClearStencil( s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClientActiveTextureARB( GLenum texture) {
+ trWriteCMD( CMD_CLIENTACTIVETEXTUREARB );
+ trWriteEnum( texture );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClientActiveTextureARB( texture );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClipPlane( GLenum plane, const GLdouble *equation ) {
+ trWriteCMD( CMD_CLIPPLANE );
+ trWriteEnum( plane );
+ trWritePointer( (void *)equation );
+ trFileFlush();
+ trWriteArrayd( 4, equation );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClipPlane( plane, equation );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3b( GLbyte red, GLbyte green, GLbyte blue ) {
+ trWriteCMD( CMD_COLOR3B );
+ trWriteb( red );
+ trWriteb( green );
+ trWriteb( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3b( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3bv( const GLbyte *v ) {
+ trWriteCMD( CMD_COLOR3BV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayb( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3bv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3d( GLdouble red, GLdouble green, GLdouble blue ) {
+ trWriteCMD( CMD_COLOR3D );
+ trWrited( red );
+ trWrited( green );
+ trWrited( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3d( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3dv( const GLdouble *v ) {
+ trWriteCMD( CMD_COLOR3DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3f( GLfloat red, GLfloat green, GLfloat blue ) {
+ trWriteCMD( CMD_COLOR3F );
+ trWritef( red );
+ trWritef( green );
+ trWritef( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3f( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3fv( const GLfloat *v ) {
+ trWriteCMD( CMD_COLOR3FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3i( GLint red, GLint green, GLint blue ) {
+ trWriteCMD( CMD_COLOR3I );
+ trWritei( red );
+ trWritei( green );
+ trWritei( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3i( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3iv( const GLint *v ) {
+ trWriteCMD( CMD_COLOR3IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3s( GLshort red, GLshort green, GLshort blue ) {
+ trWriteCMD( CMD_COLOR3S );
+ trWrites( red );
+ trWrites( green );
+ trWrites( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3s( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3sv( const GLshort *v ) {
+ trWriteCMD( CMD_COLOR3SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3ub( GLubyte red, GLubyte green, GLubyte blue ) {
+ trWriteCMD( CMD_COLOR3UB );
+ trWriteub( red );
+ trWriteub( green );
+ trWriteub( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3ub( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3ubv( const GLubyte *v ) {
+ trWriteCMD( CMD_COLOR3UBV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayub( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3ubv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3ui( GLuint red, GLuint green, GLuint blue ) {
+ trWriteCMD( CMD_COLOR3UI );
+ trWriteui( red );
+ trWriteui( green );
+ trWriteui( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3ui( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3uiv( const GLuint *v ) {
+ trWriteCMD( CMD_COLOR3UIV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayui( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3uiv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3us( GLushort red, GLushort green, GLushort blue ) {
+ trWriteCMD( CMD_COLOR3US );
+ trWriteus( red );
+ trWriteus( green );
+ trWriteus( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3us( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3usv( const GLushort *v ) {
+ trWriteCMD( CMD_COLOR3USV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayus( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3usv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha ) {
+ trWriteCMD( CMD_COLOR4B );
+ trWriteb( red );
+ trWriteb( green );
+ trWriteb( blue );
+ trWriteb( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4b( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4bv( const GLbyte *v ) {
+ trWriteCMD( CMD_COLOR4BV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayb( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4bv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha ) {
+ trWriteCMD( CMD_COLOR4D );
+ trWrited( red );
+ trWrited( green );
+ trWrited( blue );
+ trWrited( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4d( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4dv( const GLdouble *v ) {
+ trWriteCMD( CMD_COLOR4DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) {
+ trWriteCMD( CMD_COLOR4F );
+ trWritef( red );
+ trWritef( green );
+ trWritef( blue );
+ trWritef( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4f( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4fv( const GLfloat *v ) {
+ trWriteCMD( CMD_COLOR4FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4i( GLint red, GLint green, GLint blue, GLint alpha ) {
+ trWriteCMD( CMD_COLOR4I );
+ trWritei( red );
+ trWritei( green );
+ trWritei( blue );
+ trWritei( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4i( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4iv( const GLint *v ) {
+ trWriteCMD( CMD_COLOR4IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4s( GLshort red, GLshort green, GLshort blue, GLshort alpha ) {
+ trWriteCMD( CMD_COLOR4S );
+ trWrites( red );
+ trWrites( green );
+ trWrites( blue );
+ trWrites( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4s( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4sv( const GLshort *v ) {
+ trWriteCMD( CMD_COLOR4SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) {
+ trWriteCMD( CMD_COLOR4UB );
+ trWriteub( red );
+ trWriteub( green );
+ trWriteub( blue );
+ trWriteub( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4ub( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4ubv( const GLubyte *v ) {
+ trWriteCMD( CMD_COLOR4UBV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayub( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4ubv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha ) {
+ trWriteCMD( CMD_COLOR4UI );
+ trWriteui( red );
+ trWriteui( green );
+ trWriteui( blue );
+ trWriteui( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4ui( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4uiv( const GLuint *v ) {
+ trWriteCMD( CMD_COLOR4UIV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayui( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4uiv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4us( GLushort red, GLushort green, GLushort blue, GLushort alpha ) {
+ trWriteCMD( CMD_COLOR4US );
+ trWriteus( red );
+ trWriteus( green );
+ trWriteus( blue );
+ trWriteus( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4us( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4usv( const GLushort *v ) {
+ trWriteCMD( CMD_COLOR4USV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayus( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4usv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) {
+ trWriteCMD( CMD_COLORMASK );
+ trWriteBool( red );
+ trWriteBool( green );
+ trWriteBool( blue );
+ trWriteBool( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorMask( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorMaterial( GLenum face, GLenum mode ) {
+ trWriteCMD( CMD_COLORMATERIAL );
+ trWriteEnum( face );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorMaterial( face, mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorPointerEXT( GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_COLORPOINTEREXT );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorPointerEXT( size, type, stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_COLORPOINTER );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->ColorPointer( size, type, stride, ptr );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trColorSubTableEXT( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_COLORSUBTABLEEXT );
+ trWriteEnum( target );
+ trWriteSizei( start );
+ trWriteSizei( count );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)data );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ trWriteTypeArray( type, count, pixelsize, start, data );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorSubTableEXT( target, start, count, format, type, data );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trColorSubTable( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_COLORSUBTABLE );
+ trWriteEnum( target );
+ trWriteSizei( start );
+ trWriteSizei( count );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)data );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ trWriteTypeArray( type, count, pixelsize, start, data );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorSubTable( target, start, count, format, type, data );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trColorTableEXT( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_COLORTABLEEXT );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteSizei( width );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)table );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ trWriteTypeArray( type, width, pixelsize, 0, table );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorTableEXT( target, internalformat, width, format, type, table );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trColorTable( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_COLORTABLE );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteSizei( width );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)table );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorTable( target, internalformat, width, format, type, table );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorTableParameterfv( GLenum target, GLenum pname, const GLfloat *params) {
+ trWriteCMD( CMD_COLORTABLEPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+ trWriteArrayf( 4, params );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorTableParameterfv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorTableParameteriv( GLenum target, GLenum pname, const GLint *params) {
+ trWriteCMD( CMD_COLORTABLEPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+ trWriteArrayi( 4, params );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorTableParameteriv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionFilter1D( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_CONVOLUTIONFILTER1D );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteSizei( width );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)image );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ trWriteTypeArray( type, width, pixelsize, 0, image );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionFilter1D( target, internalformat, width, format, type, image );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image ) {
+ GLint i;
+ GLint pixelsize;
+
+ trWriteCMD( CMD_CONVOLUTIONFILTER2D );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)image );
+ trFileFlush();
+
+ /* p76 of GL spec says this isn't subject to unpack_row_width... */
+ pixelsize = trGetPixelSize( format, type );
+ for( i = 0; i < height; i++ ) {
+ trWriteTypeArray( type, width, pixelsize, i * width, image );
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionFilter2D( target, internalformat, width, height, format, type, image );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionParameterf( GLenum target, GLenum pname, GLfloat params ) {
+ trWriteCMD( CMD_CONVOLUTIONPARAMETERF );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritef( params );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionParameterf( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionParameterfv( GLenum target, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_CONVOLUTIONPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_CONVOLUTION_BORDER_MODE:
+ trWritef( params[0] );
+ break;
+ case GL_CONVOLUTION_BORDER_COLOR:
+ trWriteArrayf( 4, params );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionParameterfv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionParameteri( GLenum target, GLenum pname, GLint params ) {
+ trWriteCMD( CMD_CONVOLUTIONPARAMETERI );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritei( params );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionParameteri( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionParameteriv( GLenum target, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_CONVOLUTIONPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_CONVOLUTION_BORDER_MODE:
+ trWritei( params[0] );
+ break;
+ case GL_CONVOLUTION_BORDER_COLOR:
+ trWriteArrayi( 4, params );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionParameteriv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyColorSubTable( GLenum target, GLsizei start, GLint x, GLint y, GLsizei width ) {
+ trWriteCMD( CMD_COPYCOLORSUBTABLE );
+ trWriteEnum( target );
+ trWriteSizei( start );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyColorSubTable( target, start, x, y, width );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyColorTable( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ) {
+ trWriteCMD( CMD_COPYCOLORTABLE );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyColorTable( target, internalformat, x, y, width );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyConvolutionFilter1D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ) {
+ trWriteCMD( CMD_COPYCONVOLUTIONFILTER1D );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyConvolutionFilter1D( target, internalformat, x, y, width );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyConvolutionFilter2D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) {
+ trWriteCMD( CMD_COPYCONVOLUTIONFILTER2D );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyConvolutionFilter2D( target, internalformat, x, y, width, height );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type ) {
+ trWriteCMD( CMD_COPYPIXELS );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( type );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyPixels( x, y, width, height, type );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyTexImage1D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border ) {
+ trWriteCMD( CMD_COPYTEXIMAGE1D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( internalformat );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWritei( border );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexImage1D( target, level, internalformat, x, y, width, border );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) {
+ trWriteCMD( CMD_COPYTEXIMAGE2D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( internalformat );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWritei( border );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexImage2D( target, level, internalformat, x, y, width, height, border );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ) {
+ trWriteCMD( CMD_COPYTEXSUBIMAGE1D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexSubImage1D( target, level, xoffset, x, y, width );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) {
+ trWriteCMD( CMD_COPYTEXSUBIMAGE2D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexSubImage2D( target, level, xoffset, yoffset, x, y, width, height );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trCopyTexSubImage3DEXT( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) {
+ trWriteCMD( CMD_COPYTEXSUBIMAGE3DEXT );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWritei( zoffset );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexSubImage3DEXT( target, level, xoffset, yoffset, zoffset, x, y, width, height );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trCopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) {
+ trWriteCMD( CMD_COPYTEXSUBIMAGE3D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWritei( zoffset );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexSubImage3D( target, level, xoffset, yoffset, zoffset, x, y, width, height );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCullFace( GLenum mode ) {
+ trWriteCMD( CMD_CULLFACE );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CullFace( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDeleteLists( GLuint list, GLsizei range ) {
+ trWriteCMD( CMD_DELETELISTS );
+ trWriteui( list );
+ trWriteSizei( range );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DeleteLists( list, range );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trDeleteTexturesEXT( GLsizei n, const GLuint *textures) {
+ trWriteCMD( CMD_DELETETEXTURESEXT );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DeleteTexturesEXT( n, textures );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trDeleteTextures( GLsizei n, const GLuint *textures) {
+ trWriteCMD( CMD_DELETETEXTURES );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DeleteTextures( n, textures );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDepthFunc( GLenum func ) {
+ trWriteCMD( CMD_DEPTHFUNC );
+ trWriteEnum( func );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DepthFunc( func );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDepthMask( GLboolean flag ) {
+ trWriteCMD( CMD_DEPTHMASK );
+ trWriteBool( flag );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DepthMask( flag );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDepthRange( GLclampd near_val, GLclampd far_val ) {
+ trWriteCMD( CMD_DEPTHRANGE );
+ trWriteClampd( near_val );
+ trWriteClampd( far_val );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DepthRange( near_val, far_val );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDisableClientState( GLenum cap ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_DISABLECLIENTSTATE );
+ trWriteEnum( cap );
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->DisableClientState( cap );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDisable( GLenum cap ) {
+ trWriteCMD( CMD_DISABLE );
+ trWriteEnum( cap );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Disable( cap );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trDrawArraysEXT( GLenum mode, GLint first, GLsizei count ) {
+ trWriteCMD( CMD_DRAWARRAYSEXT );
+ trWriteEnum( mode );
+ trWritei( first );
+ trWriteSizei( count );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DrawArraysEXT( mode, first, count );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trDrawArrays( GLenum mode, GLint first, GLsizei count ) {
+
+ trWriteCMD( CMD_DRAWARRAYS );
+ trWriteEnum( mode );
+ trWritei( first );
+ trWriteSizei( count );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DrawArrays( mode, first, count );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDrawBuffer( GLenum mode ) {
+ trWriteCMD( CMD_DRAWBUFFER );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DrawBuffer( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_DRAWELEMENTS );
+ trWriteEnum( mode );
+ trWriteSizei( count );
+ trWriteEnum( type );
+ trWritePointer( (void *)indices );
+ trFileFlush();
+ /* Why isn't the indices a GLint * ? */
+ trWriteArrayi( count, (GLint *)indices );
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->DrawElements( mode, count, type, indices );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDrawPixels( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_DRAWPIXELS );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DrawPixels( width, height, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_DRAWRANGEELEMENTS );
+ trWriteEnum( mode );
+ trWriteui( start );
+ trWriteui( end );
+ trWriteSizei( count );
+ trWriteEnum( type );
+ trWritePointer( (void *)indices );
+ trFileFlush();
+ switch( type ) {
+ case GL_UNSIGNED_BYTE:
+ trWriteArrayub( count, (GLubyte *)indices );
+ break;
+ case GL_UNSIGNED_SHORT:
+ trWriteArrayus( count, (GLushort *)indices );
+ break;
+ case GL_UNSIGNED_INT:
+ trWriteArrayui( count, (GLuint *)indices );
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ tctx = trCtx();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DrawRangeElements( mode, start, end, count, type, indices );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEdgeFlag( GLboolean flag ) {
+ trWriteCMD( CMD_EDGEFLAG );
+ trWriteBool( flag );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EdgeFlag( flag );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEdgeFlagPointerEXT( GLsizei stride, GLsizei count, const GLboolean *ptr ) { /* TODO */
+ trWriteCMD( CMD_EDGEFLAGPOINTEREXT );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EdgeFlagPointerEXT( stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEdgeFlagPointer( GLsizei stride, const GLvoid *ptr ) { /* TODO */
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_EDGEFLAGPOINTER );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->EdgeFlagPointer( stride, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEdgeFlagv( const GLboolean *flag ) {
+ trWriteCMD( CMD_EDGEFLAGV );
+ trWritePointer( (void *)flag );
+ trFileFlush();
+ trWriteBool( flag[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EdgeFlagv( flag );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEnableClientState( GLenum cap ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_ENABLECLIENTSTATE );
+ trWriteEnum( cap );
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->EnableClientState( cap );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEnable( GLenum cap ) {
+ trWriteCMD( CMD_ENABLE );
+ trWriteEnum( cap );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Enable( cap );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEndList( void ) {
+ trWriteCMD( CMD_ENDLIST );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EndList( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEnd( void ) {
+ trWriteCMD( CMD_END );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->End( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord1d( GLdouble u ) {
+ trWriteCMD( CMD_EVALCOORD1D );
+ trWrited( u );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord1d( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord1dv( const GLdouble *u ) {
+ trWriteCMD( CMD_EVALCOORD1DV );
+ trWritePointer( (void *)u );
+ trFileFlush();
+ trWrited( u[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord1dv( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord1f( GLfloat u ) {
+ trWriteCMD( CMD_EVALCOORD1F );
+ trWritef( u );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord1f( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord1fv( const GLfloat *u ) {
+ trWriteCMD( CMD_EVALCOORD1FV );
+ trWritePointer( (void *)u );
+ trFileFlush();
+ trWritef( u[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord1fv( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord2d( GLdouble u, GLdouble v ) {
+ trWriteCMD( CMD_EVALCOORD2D );
+ trWrited( u );
+ trWrited( v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord2d( u, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord2dv( const GLdouble *u ) {
+ trWriteCMD( CMD_EVALCOORD2DV );
+ trWritePointer( (void *)u );
+ trFileFlush();
+ trWriteArrayd( 2, u );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord2dv( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord2f( GLfloat u, GLfloat v ) {
+ trWriteCMD( CMD_EVALCOORD2F );
+ trWritef( u );
+ trWritef( v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord2f( u, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord2fv( const GLfloat *u ) {
+ trWriteCMD( CMD_EVALCOORD2FV );
+ trWritePointer( (void *)u );
+ trFileFlush();
+ trWriteArrayf( 2, u );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord2fv( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalMesh1( GLenum mode, GLint i1, GLint i2 ) {
+ trWriteCMD( CMD_EVALMESH1 );
+ trWriteEnum( mode );
+ trWritei( i1 );
+ trWritei( i2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalMesh1( mode, i1, i2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ) {
+ trWriteCMD( CMD_EVALMESH2 );
+ trWriteEnum( mode );
+ trWritei( i1 );
+ trWritei( i2 );
+ trWritei( j1 );
+ trWritei( j2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalMesh2( mode, i1, i2, j1, j2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalPoint1( GLint i ) {
+ trWriteCMD( CMD_EVALPOINT1 );
+ trWritei( i );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalPoint1( i );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalPoint2( GLint i, GLint j ) {
+ trWriteCMD( CMD_EVALPOINT2 );
+ trWritei( i );
+ trWritei( j );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalPoint2( i, j );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer ) {
+ trWriteCMD( CMD_FEEDBACKBUFFER );
+ trWriteSizei( size );
+ trWriteEnum( type );
+ trWritePointer( (void *)buffer );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->FeedbackBuffer( size, type, buffer );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFinish( void ) {
+ trWriteCMD( CMD_FINISH );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Finish( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFlush( void ) {
+ trWriteCMD( CMD_FLUSH );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Flush( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFogf( GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_FOGF );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Fogf( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFogfv( GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_FOGFV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_FOG_MODE:
+ case GL_FOG_DENSITY:
+ case GL_FOG_START:
+ case GL_FOG_END:
+ case GL_FOG_INDEX:
+ trWritef( params[0] );
+ break;
+
+ case GL_FOG_COLOR:
+ trWriteArrayf( 4, params );
+ break;
+
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Fogfv( pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFogi( GLenum pname, GLint param ) {
+ trWriteCMD( CMD_FOGI );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Fogi( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFogiv( GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_FOGIV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_FOG_MODE:
+ case GL_FOG_DENSITY:
+ case GL_FOG_START:
+ case GL_FOG_END:
+ case GL_FOG_INDEX:
+ trWritei( params[0] );
+ break;
+
+ case GL_FOG_COLOR:
+ trWriteArrayi( 4, params );
+ break;
+
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Fogiv( pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFrontFace( GLenum mode ) {
+ trWriteCMD( CMD_FRONTFACE );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->FrontFace( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) {
+ trWriteCMD( CMD_FRUSTUM );
+ trWrited( left );
+ trWrited( right );
+ trWrited( bottom );
+ trWrited( top );
+ trWrited( near_val );
+ trWrited( far_val );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Frustum( left, right, bottom, top, near_val, far_val );
+ trError();
+ }
+}
+
+
+GLAPI GLuint GLAPIENTRY trGenLists( GLsizei range ) {
+ GLuint retval;
+
+ trWriteCMD( CMD_GENLISTS );
+ trWriteSizei( range );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->GenLists( range );
+ trError();
+ } else {
+ retval = 0;
+ }
+
+ trWriteui( retval );
+ return retval;
+}
+
+
+GLAPI void GLAPIENTRY trGenTexturesEXT( GLsizei n, GLuint *textures ) {
+ trWriteCMD( CMD_GENTEXTURESEXT );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GenTexturesEXT( n, textures );
+ trError();
+ }
+
+ if( !(trCtx()->doExec) ) {
+ memset( textures, 0, n * sizeof(GLuint) );
+ }
+
+ trWriteArrayui( n, textures );
+}
+
+
+GLAPI void GLAPIENTRY trGenTextures( GLsizei n, GLuint *textures ) {
+ trWriteCMD( CMD_GENTEXTURES );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GenTextures( n, textures );
+ trError();
+ }
+
+ if( !(trCtx()->doExec) ) {
+ memset( textures, 0, n * sizeof(GLuint) );
+ }
+
+ trWriteArrayui( n, textures );
+}
+
+
+GLAPI void GLAPIENTRY trGetBooleanv( GLenum pname, GLboolean *params ) { /* TODO */
+ trWriteCMD( CMD_GETBOOLEANV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ trWriteArrayBool( 16, params );
+ break;
+
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ trWriteArrayBool( 4, params );
+ break;
+
+ case GL_CURRENT_NORMAL:
+ trWriteArrayBool( 3, params );
+ break;
+
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_POLYGON_MODE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ trWriteArrayBool( 2, params );
+ break;
+
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACTIVE_TEXTURE_ARB:
+ case GL_ALPHA_BIAS:
+ case GL_ALPHA_BITS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_AUX_BUFFERS:
+ case GL_BLEND:
+ case GL_BLEND_SRC:
+ case GL_BLUE_BIAS:
+ case GL_BLUE_BITS:
+ case GL_BLUE_SCALE:
+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_COLOR_ARRAY:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_LOGIC_OP:
+ case GL_COLOR_MATERIAL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_COLOR_TABLE:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_DEPTH_BIAS:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DITHER:
+ case GL_DOUBLEBUFFER:
+ case GL_DRAW_BUFFER:
+ case GL_EDGE_FLAG:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_FEEDBACK_BUFFER_SIZE:
+ case GL_FEEDBACK_BUFFER_TYPE:
+ case GL_FOG:
+ case GL_FOG_DENSITY:
+ case GL_FOG_END:
+ case GL_FOG_HINT:
+ case GL_FOG_INDEX:
+ case GL_FOG_MODE:
+ case GL_FOG_START:
+ case GL_FRONT_FACE:
+ case GL_GREEN_BIAS:
+ case GL_GREEN_BITS:
+ case GL_GREEN_SCALE:
+ case GL_HISTOGRAM:
+ case GL_INDEX_ARRAY:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_BITS:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_LOGIC_OP:
+ case GL_INDEX_MODE:
+ case GL_INDEX_OFFSET:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_WRITEMASK:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LINE_WIDTH:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_LIST_MODE:
+ case GL_LOGIC_OP_MODE:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_MATRIX_MODE:
+ case GL_MAX_3D_TEXTURE_SIZE:
+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_LIST_NESTING:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_MAX_TEXTURE_UNITS_ARB:
+ case GL_MINMAX:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_NAME_STACK_DEPTH:
+ case GL_NORMAL_ARRAY:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMALIZE:
+ case GL_PACK_ALIGNMENT:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_POINT_SIZE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_POLYGON_OFFSET_FILL:
+ case GL_POLYGON_OFFSET_LINE:
+ case GL_POLYGON_OFFSET_POINT:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_POLYGON_STIPPLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_READ_BUFFER:
+ case GL_RED_BIAS:
+ case GL_RED_BITS:
+ case GL_RED_SCALE:
+ case GL_RENDER_MODE:
+ case GL_RESCALE_NORMAL:
+ case GL_RGBA_MODE:
+ case GL_SCISSOR_TEST:
+ case GL_SELECTION_BUFFER_SIZE:
+ case GL_SEPARABLE_2D:
+ case GL_SHADE_MODEL:
+ case GL_SMOOTH_LINE_WIDTH_GRANULARITY:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_STENCIL_BITS:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_WRITEMASK:
+ case GL_STEREO:
+ case GL_SUBPIXEL_BITS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_VERTEX_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ trWriteBool( params[0] );
+ break;
+
+ default:
+ /* Bad enum. What should we do? */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetBooleanv( pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetClipPlane( GLenum plane, GLdouble *equation ) {
+ trWriteCMD( CMD_GETCLIPPLANE );
+ trWriteEnum( plane );
+ trWritePointer( (void *)equation );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetClipPlane( plane, equation );
+ trError();
+ }
+
+ if( !(trCtx()->doExec) ) {
+ memset( equation, 0, sizeof(GLdouble) );
+ }
+
+ trWriteArrayd( 4, equation );
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTableEXT( GLenum target, GLenum format, GLenum type, GLvoid *table ) { /* TODO */
+
+ trWriteCMD( CMD_GETCOLORTABLEEXT );
+ trWriteEnum( target );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)table );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTableEXT( target, format, type, table );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTable( GLenum target, GLenum format, GLenum type, GLvoid *table ) { /* TODO */
+ trWriteCMD( CMD_GETCOLORTABLE );
+ trWriteEnum( target );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)table );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTable( target, format, type, table );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTableParameterfvEXT( GLenum target, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETCOLORTABLEPARAMETERFVEXT );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTableParameterfvEXT( target, pname, params );
+ trError();
+ } else {
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ memset( params, 0, sizeof(GLfloat) * 4 );
+ } else {
+ params[0] = 0.0;
+ }
+ }
+
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ trWriteArrayf( 4, params );
+ } else {
+ trWritef( params[0] );
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETCOLORTABLEPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTableParameterfv( target, pname, params );
+ trError();
+ } else {
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ memset( params, 0, sizeof(GLfloat) * 4 );
+ } else {
+ params[0] = 0.0;
+ }
+ }
+
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ trWriteArrayf( 4, params );
+ } else {
+ trWritef( params[0] );
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTableParameterivEXT( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETCOLORTABLEPARAMETERIVEXT );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTableParameterivEXT( target, pname, params );
+ trError();
+ } else {
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ memset( params, 0, sizeof(GLint) * 4 );
+ } else {
+ params[0] = 0;
+ }
+ }
+
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ trWriteArrayi( 4, params );
+ } else {
+ trWritei( params[0] );
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETCOLORTABLEPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTableParameteriv( target, pname, params );
+ trError();
+ } else {
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ memset( params, 0, sizeof(GLint) * 4 );
+ } else {
+ params[0] = 0;
+ }
+ }
+
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ trWriteArrayi( 4, params );
+ } else {
+ trWritei( params[0] );
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetConvolutionFilter( GLenum target, GLenum format, GLenum type, GLvoid *image ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_GETCONVOLUTIONFILTER );
+ trWriteEnum( target );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)image );
+ trFileFlush();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->GetConvolutionFilter( target, format, type, image );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetConvolutionParameterfv( GLenum target, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETCONVOLUTIONPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetConvolutionParameterfv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_CONVOLUTION_FILTER_SCALE:
+ case GL_CONVOLUTION_FILTER_BIAS:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ break;
+ case GL_CONVOLUTION_BORDER_MODE:
+ case GL_CONVOLUTION_BORDER_COLOR:
+ case GL_CONVOLUTION_FORMAT:
+ case GL_CONVOLUTION_WIDTH:
+ case GL_CONVOLUTION_HEIGHT:
+ case GL_MAX_CONVOLUTION_WIDTH:
+ case GL_MAX_CONVOLUTION_HEIGHT:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+ }
+
+ switch( pname ) {
+ case GL_CONVOLUTION_FILTER_SCALE:
+ case GL_CONVOLUTION_FILTER_BIAS:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_CONVOLUTION_BORDER_MODE:
+ case GL_CONVOLUTION_BORDER_COLOR:
+ case GL_CONVOLUTION_FORMAT:
+ case GL_CONVOLUTION_WIDTH:
+ case GL_CONVOLUTION_HEIGHT:
+ case GL_MAX_CONVOLUTION_WIDTH:
+ case GL_MAX_CONVOLUTION_HEIGHT:
+ trWritef( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetConvolutionParameteriv( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETCONVOLUTIONPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetConvolutionParameteriv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_CONVOLUTION_FILTER_SCALE:
+ case GL_CONVOLUTION_FILTER_BIAS:
+ memset( params, 0, 4 * sizeof(GLint) );
+ break;
+ case GL_CONVOLUTION_BORDER_MODE:
+ case GL_CONVOLUTION_BORDER_COLOR:
+ case GL_CONVOLUTION_FORMAT:
+ case GL_CONVOLUTION_WIDTH:
+ case GL_CONVOLUTION_HEIGHT:
+ case GL_MAX_CONVOLUTION_WIDTH:
+ case GL_MAX_CONVOLUTION_HEIGHT:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+ }
+
+ switch( pname ) {
+ case GL_CONVOLUTION_FILTER_SCALE:
+ case GL_CONVOLUTION_FILTER_BIAS:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_CONVOLUTION_BORDER_MODE:
+ case GL_CONVOLUTION_BORDER_COLOR:
+ case GL_CONVOLUTION_FORMAT:
+ case GL_CONVOLUTION_WIDTH:
+ case GL_CONVOLUTION_HEIGHT:
+ case GL_MAX_CONVOLUTION_WIDTH:
+ case GL_MAX_CONVOLUTION_HEIGHT:
+ trWritei( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetDoublev( GLenum pname, GLdouble *params ) {
+ trWriteCMD( CMD_GETDOUBLEV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetDoublev( pname, params );
+ trError();
+ } else {
+ trZeroGetterData( pname, sizeof(GLdouble), params );
+ }
+
+ switch( pname ) {
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ trWriteArrayd( 16, params );
+ break;
+
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ trWriteArrayd( 4, params );
+ break;
+
+ case GL_CURRENT_NORMAL:
+ trWriteArrayd( 3, params );
+ break;
+
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_POLYGON_MODE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ trWriteArrayd( 2, params );
+ break;
+
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACTIVE_TEXTURE_ARB:
+ case GL_ALPHA_BIAS:
+ case GL_ALPHA_BITS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_AUX_BUFFERS:
+ case GL_BLEND:
+ case GL_BLEND_SRC:
+ case GL_BLUE_BIAS:
+ case GL_BLUE_BITS:
+ case GL_BLUE_SCALE:
+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_COLOR_ARRAY:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_LOGIC_OP:
+ case GL_COLOR_MATERIAL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_COLOR_TABLE:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_DEPTH_BIAS:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DITHER:
+ case GL_DOUBLEBUFFER:
+ case GL_DRAW_BUFFER:
+ case GL_EDGE_FLAG:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_FEEDBACK_BUFFER_SIZE:
+ case GL_FEEDBACK_BUFFER_TYPE:
+ case GL_FOG:
+ case GL_FOG_DENSITY:
+ case GL_FOG_END:
+ case GL_FOG_HINT:
+ case GL_FOG_INDEX:
+ case GL_FOG_MODE:
+ case GL_FOG_START:
+ case GL_FRONT_FACE:
+ case GL_GREEN_BIAS:
+ case GL_GREEN_BITS:
+ case GL_GREEN_SCALE:
+ case GL_HISTOGRAM:
+ case GL_INDEX_ARRAY:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_BITS:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_LOGIC_OP:
+ case GL_INDEX_MODE:
+ case GL_INDEX_OFFSET:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_WRITEMASK:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LINE_WIDTH:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_LIST_MODE:
+ case GL_LOGIC_OP_MODE:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_MATRIX_MODE:
+ case GL_MAX_3D_TEXTURE_SIZE:
+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_LIST_NESTING:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_MAX_TEXTURE_UNITS_ARB:
+ case GL_MINMAX:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_NAME_STACK_DEPTH:
+ case GL_NORMAL_ARRAY:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMALIZE:
+ case GL_PACK_ALIGNMENT:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_POINT_SIZE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_POLYGON_OFFSET_FILL:
+ case GL_POLYGON_OFFSET_LINE:
+ case GL_POLYGON_OFFSET_POINT:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_POLYGON_STIPPLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_READ_BUFFER:
+ case GL_RED_BIAS:
+ case GL_RED_BITS:
+ case GL_RED_SCALE:
+ case GL_RENDER_MODE:
+ case GL_RESCALE_NORMAL:
+ case GL_RGBA_MODE:
+ case GL_SCISSOR_TEST:
+ case GL_SELECTION_BUFFER_SIZE:
+ case GL_SEPARABLE_2D:
+ case GL_SHADE_MODEL:
+ case GL_SMOOTH_LINE_WIDTH_GRANULARITY:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_STENCIL_BITS:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_WRITEMASK:
+ case GL_STEREO:
+ case GL_SUBPIXEL_BITS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_VERTEX_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ trWrited( params[0] );
+ break;
+
+ default:
+ /* Bad enum. What should we do? */
+ break;
+ }
+
+}
+
+
+GLAPI GLenum GLAPIENTRY trGetError( void ) {
+ GLenum retval;
+ trWriteCMD( CMD_GETERROR );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->GetError( );
+ trError();
+ } else {
+ retval = GL_NO_ERROR;
+ }
+
+ trWriteEnum( retval );
+ return retval;
+}
+
+
+GLAPI void GLAPIENTRY trGetFloatv( GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETFLOATV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetFloatv( pname, params );
+ trError();
+ } else {
+ trZeroGetterData( pname, sizeof(GLfloat), params );
+ }
+
+ switch( pname ) {
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ trWriteArrayf( 16, params );
+ break;
+
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ trWriteArrayf( 4, params );
+ break;
+
+ case GL_CURRENT_NORMAL:
+ trWriteArrayf( 3, params );
+ break;
+
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_POLYGON_MODE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ trWriteArrayf( 2, params );
+ break;
+
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACTIVE_TEXTURE_ARB:
+ case GL_ALPHA_BIAS:
+ case GL_ALPHA_BITS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_AUX_BUFFERS:
+ case GL_BLEND:
+ case GL_BLEND_SRC:
+ case GL_BLUE_BIAS:
+ case GL_BLUE_BITS:
+ case GL_BLUE_SCALE:
+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_COLOR_ARRAY:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_LOGIC_OP:
+ case GL_COLOR_MATERIAL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_COLOR_TABLE:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_DEPTH_BIAS:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DITHER:
+ case GL_DOUBLEBUFFER:
+ case GL_DRAW_BUFFER:
+ case GL_EDGE_FLAG:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_FEEDBACK_BUFFER_SIZE:
+ case GL_FEEDBACK_BUFFER_TYPE:
+ case GL_FOG:
+ case GL_FOG_DENSITY:
+ case GL_FOG_END:
+ case GL_FOG_HINT:
+ case GL_FOG_INDEX:
+ case GL_FOG_MODE:
+ case GL_FOG_START:
+ case GL_FRONT_FACE:
+ case GL_GREEN_BIAS:
+ case GL_GREEN_BITS:
+ case GL_GREEN_SCALE:
+ case GL_HISTOGRAM:
+ case GL_INDEX_ARRAY:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_BITS:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_LOGIC_OP:
+ case GL_INDEX_MODE:
+ case GL_INDEX_OFFSET:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_WRITEMASK:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LINE_WIDTH:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_LIST_MODE:
+ case GL_LOGIC_OP_MODE:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_MATRIX_MODE:
+ case GL_MAX_3D_TEXTURE_SIZE:
+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_LIST_NESTING:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_MAX_TEXTURE_UNITS_ARB:
+ case GL_MINMAX:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_NAME_STACK_DEPTH:
+ case GL_NORMAL_ARRAY:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMALIZE:
+ case GL_PACK_ALIGNMENT:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_POINT_SIZE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_POLYGON_OFFSET_FILL:
+ case GL_POLYGON_OFFSET_LINE:
+ case GL_POLYGON_OFFSET_POINT:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_POLYGON_STIPPLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_READ_BUFFER:
+ case GL_RED_BIAS:
+ case GL_RED_BITS:
+ case GL_RED_SCALE:
+ case GL_RENDER_MODE:
+ case GL_RESCALE_NORMAL:
+ case GL_RGBA_MODE:
+ case GL_SCISSOR_TEST:
+ case GL_SELECTION_BUFFER_SIZE:
+ case GL_SEPARABLE_2D:
+ case GL_SHADE_MODEL:
+ case GL_SMOOTH_LINE_WIDTH_GRANULARITY:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_STENCIL_BITS:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_WRITEMASK:
+ case GL_STEREO:
+ case GL_SUBPIXEL_BITS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_VERTEX_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ trWritef( params[0] );
+ break;
+
+ default:
+ /* Bad enum. What should we do? */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetHistogram( GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values ) { /* TODO */
+ trWriteCMD( CMD_GETHISTOGRAM );
+ trWriteEnum( target );
+ trWriteBool( reset );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)values );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetHistogram( target, reset, format, type, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetHistogramParameterfv( GLenum target, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETHISTOGRAMPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetHistogramParameterfv( target, pname, params );
+ trError();
+ } else {
+ params[0] = 0;
+ }
+
+ trWritef( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetHistogramParameteriv( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETHISTOGRAMPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetHistogramParameteriv( target, pname, params );
+ trError();
+ } else {
+ params[0] = 0;
+ }
+
+ trWritei( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetIntegerv( GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETINTEGERV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetIntegerv( pname, params );
+ trError();
+ } else {
+ trZeroGetterData( pname, sizeof(GLint), params );
+ }
+
+ switch( pname ) {
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ trWriteArrayi( 16, params );
+ break;
+
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ trWriteArrayi( 4, params );
+ break;
+
+ case GL_CURRENT_NORMAL:
+ trWriteArrayi( 3, params );
+ break;
+
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_POLYGON_MODE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ trWriteArrayi( 2, params );
+ break;
+
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACTIVE_TEXTURE_ARB:
+ case GL_ALPHA_BIAS:
+ case GL_ALPHA_BITS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_AUX_BUFFERS:
+ case GL_BLEND:
+ case GL_BLEND_SRC:
+ case GL_BLUE_BIAS:
+ case GL_BLUE_BITS:
+ case GL_BLUE_SCALE:
+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_COLOR_ARRAY:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_LOGIC_OP:
+ case GL_COLOR_MATERIAL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_COLOR_TABLE:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_DEPTH_BIAS:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DITHER:
+ case GL_DOUBLEBUFFER:
+ case GL_DRAW_BUFFER:
+ case GL_EDGE_FLAG:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_FEEDBACK_BUFFER_SIZE:
+ case GL_FEEDBACK_BUFFER_TYPE:
+ case GL_FOG:
+ case GL_FOG_DENSITY:
+ case GL_FOG_END:
+ case GL_FOG_HINT:
+ case GL_FOG_INDEX:
+ case GL_FOG_MODE:
+ case GL_FOG_START:
+ case GL_FRONT_FACE:
+ case GL_GREEN_BIAS:
+ case GL_GREEN_BITS:
+ case GL_GREEN_SCALE:
+ case GL_HISTOGRAM:
+ case GL_INDEX_ARRAY:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_BITS:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_LOGIC_OP:
+ case GL_INDEX_MODE:
+ case GL_INDEX_OFFSET:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_WRITEMASK:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LINE_WIDTH:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_LIST_MODE:
+ case GL_LOGIC_OP_MODE:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_MATRIX_MODE:
+ case GL_MAX_3D_TEXTURE_SIZE:
+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_LIST_NESTING:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_MAX_TEXTURE_UNITS_ARB:
+ case GL_MINMAX:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_NAME_STACK_DEPTH:
+ case GL_NORMAL_ARRAY:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMALIZE:
+ case GL_PACK_ALIGNMENT:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_POINT_SIZE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_POLYGON_OFFSET_FILL:
+ case GL_POLYGON_OFFSET_LINE:
+ case GL_POLYGON_OFFSET_POINT:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_POLYGON_STIPPLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_READ_BUFFER:
+ case GL_RED_BIAS:
+ case GL_RED_BITS:
+ case GL_RED_SCALE:
+ case GL_RENDER_MODE:
+ case GL_RESCALE_NORMAL:
+ case GL_RGBA_MODE:
+ case GL_SCISSOR_TEST:
+ case GL_SELECTION_BUFFER_SIZE:
+ case GL_SEPARABLE_2D:
+ case GL_SHADE_MODEL:
+ case GL_SMOOTH_LINE_WIDTH_GRANULARITY:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_STENCIL_BITS:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_WRITEMASK:
+ case GL_STEREO:
+ case GL_SUBPIXEL_BITS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_VERTEX_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ trWritei( params[0] );
+ break;
+
+ default:
+ /* Bad enum. What should we do? */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetLightfv( GLenum light, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETLIGHTFV );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetLightfv( light, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ break;
+ case GL_SPOT_DIRECTION:
+ memset( params, 0, 3 * sizeof(GLfloat) );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_SPOT_DIRECTION:
+ trWriteArrayf( 3, params );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ trWritef( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetLightiv( GLenum light, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETLIGHTIV );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetLightiv( light, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ memset( params, 0, 4 * sizeof(GLint) );
+ break;
+ case GL_SPOT_DIRECTION:
+ memset( params, 0, 3 * sizeof(GLint) );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_SPOT_DIRECTION:
+ trWriteArrayi( 3, params );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ trWritei( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMapdv( GLenum target, GLenum query, GLdouble *v ) { /* TODO */
+ trWriteCMD( CMD_GETMAPDV );
+ trWriteEnum( target );
+ trWriteEnum( query );
+ trWritePointer( (void *)v );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMapdv( target, query, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMapfv( GLenum target, GLenum query, GLfloat *v ) { /* TODO */
+ trWriteCMD( CMD_GETMAPFV );
+ trWriteEnum( target );
+ trWriteEnum( query );
+ trWritePointer( (void *)v );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMapfv( target, query, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMapiv( GLenum target, GLenum query, GLint *v ) { /* TODO */
+ trWriteCMD( CMD_GETMAPIV );
+ trWriteEnum( target );
+ trWriteEnum( query );
+ trWritePointer( (void *)v );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMapiv( target, query, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMaterialfv( GLenum face, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETMATERIALFV );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMaterialfv( face, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ break;
+ case GL_COLOR_INDEXES:
+ memset( params, 0, 3 * sizeof(GLfloat) );
+ break;
+ case GL_SHININESS:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass will pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_COLOR_INDEXES:
+ trWriteArrayf( 3, params );
+ break;
+ case GL_SHININESS:
+ trWritef( params[0] );
+ break;
+ default:
+ /* The 2nd pass will pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMaterialiv( GLenum face, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETMATERIALIV );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMaterialiv( face, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ memset( params, 0, 4 * sizeof(GLint) );
+ break;
+ case GL_COLOR_INDEXES:
+ memset( params, 0, 3 * sizeof(GLint) );
+ break;
+ case GL_SHININESS:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass will pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_COLOR_INDEXES:
+ trWriteArrayi( 3, params );
+ break;
+ case GL_SHININESS:
+ trWritei( params[0] );
+ break;
+ default:
+ /* The 2nd pass will pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMinmax( GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_GETMINMAX );
+ trWriteEnum( target );
+ trWriteBool( reset );
+ trWriteEnum( format );
+ trWriteEnum( types );
+ trWritePointer( (void *)values );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMinmax( target, reset, format, types, values );
+ trError();
+ } else {
+ switch( types ) {
+ case GL_BYTE:
+ ((GLbyte *)values)[0] = 0;
+ ((GLbyte *)values)[1] = 0;
+ break;
+
+ case GL_UNSIGNED_BYTE:
+ case GL_UNSIGNED_BYTE_3_3_2:
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ ((GLubyte *)values)[0] = 0;
+ ((GLubyte *)values)[1] = 0;
+ break;
+
+ case GL_SHORT:
+ ((GLshort *)values)[0] = 0;
+ ((GLshort *)values)[1] = 0;
+ break;
+
+ case GL_UNSIGNED_SHORT:
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ ((GLshort *)values)[0] = 0;
+ ((GLshort *)values)[1] = 0;
+ break;
+
+ case GL_INT:
+ ((GLint *)values)[0] = 0;
+ ((GLint *)values)[1] = 0;
+ break;
+
+ case GL_UNSIGNED_INT:
+ case GL_UNSIGNED_INT_8_8_8_8:
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ case GL_UNSIGNED_INT_10_10_10_2:
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ ((GLuint *)values)[0] = 0;
+ ((GLuint *)values)[1] = 0;
+ break;
+
+ case GL_FLOAT:
+ ((GLfloat *)values)[0] = 0.0;
+ ((GLfloat *)values)[1] = 0.0;
+ break;
+
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+ }
+
+ pixelsize = trGetPixelSize( format, types );
+ trWriteTypeArray( types, 2, pixelsize, 0, values );
+}
+
+
+GLAPI void GLAPIENTRY trGetMinmaxParameterfv( GLenum target, GLenum pname, GLfloat *params ) { /* TODO */
+ trWriteCMD( CMD_GETMINMAXPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMinmaxParameterfv( target, pname, params );
+ trError();
+ } else {
+ params[0] = 0.0;
+ }
+
+ trWritef( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetMinmaxParameteriv( GLenum target, GLenum pname, GLint *params ) { /* TODO */
+ trWriteCMD( CMD_GETMINMAXPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMinmaxParameteriv( target, pname, params );
+ trError();
+ } else {
+ params[0] = 0;
+ }
+
+ trWritei( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetPixelMapfv( GLenum map, GLfloat *values ) { /* TODO */
+ trWriteCMD( CMD_GETPIXELMAPFV );
+ trWriteEnum( map );
+ trWritePointer( (void *)values );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPixelMapfv( map, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetPixelMapuiv( GLenum map, GLuint *values ) { /* TODO */
+ trWriteCMD( CMD_GETPIXELMAPUIV );
+ trWriteEnum( map );
+ trWritePointer( (void *)values );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPixelMapuiv( map, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetPixelMapusv( GLenum map, GLushort *values ) { /* TODO */
+ trWriteCMD( CMD_GETPIXELMAPUSV );
+ trWriteEnum( map );
+ trWritePointer( (void *)values );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPixelMapusv( map, values );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trGetPointervEXT( GLenum pname, void **params ) {
+ trWriteCMD( CMD_GETPOINTERVEXT );
+ trWriteEnum( pname );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPointervEXT( pname, params );
+ trError();
+ } else {
+ *params = NULL;
+ }
+ trWritePointer( (void *)(*params) );
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trGetPointerv( GLenum pname, void **params ) {
+ trWriteCMD( CMD_GETPOINTERV );
+ trWriteEnum( pname );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPointerv( pname, params );
+ trError();
+ } else {
+ *params = NULL;
+ }
+ trWritePointer( (void *)(*params) );
+}
+
+
+GLAPI void GLAPIENTRY trGetPolygonStipple( GLubyte *mask ) {
+ GLint i;
+
+ trWriteCMD( CMD_GETPOLYGONSTIPPLE );
+ trWritePointer( (void *)mask );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPolygonStipple( mask );
+ trError();
+ } else {
+ for( i = 0; i < 8 * 8; i++ ) {
+ mask[i] = 0x0;
+ }
+ }
+ for( i = 0; i < 8 * 8; i++ ) {
+ trWriteub( mask[i] );
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetSeparableFilter( GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span ) {
+
+ trWriteCMD( CMD_GETSEPARABLEFILTER );
+ trWriteEnum( target );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)row );
+ trFileFlush();
+ trWritePointer( (void *)column );
+ trFileFlush();
+ trWritePointer( (void *)span );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetSeparableFilter( target, format, type, row, column, span );
+ trError();
+ }
+}
+
+
+GLAPI const GLubyte* GLAPIENTRY trGetString( GLenum name ) {
+ const GLubyte * tmpstring;
+
+ trWriteCMD( CMD_GETSTRING );
+ trWriteEnum( name );
+
+ if( trCtx()->doExec ) {
+ tmpstring = trGetDispatch()->GetString( name );
+ trError();
+ } else {
+ tmpstring = NULL;
+ }
+
+ trWriteString( (char *)tmpstring );
+ return tmpstring;
+}
+
+
+GLAPI void GLAPIENTRY trGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETTEXENVFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexEnvfv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ params[0] = 0.0;
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ trWritef( params[0] );
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ trWriteArrayf( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexEnviv( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETTEXENVIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexEnviv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ params[0] = 0;
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ memset( params, 0, 4 * sizeof(GLint) );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ trWritei( params[0] );
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ trWriteArrayi( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexGendv( GLenum coord, GLenum pname, GLdouble *params ) {
+ trWriteCMD( CMD_GETTEXGENDV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexGendv( coord, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ params[0] = 0.0;
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ memset( params, 0, 4 * sizeof(GLdouble) );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWrited( params[0] );
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayd( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETTEXGENFV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexGenfv( coord, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ params[0] = 0.0;
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWritef( params[0] );
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayf( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexGeniv( GLenum coord, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETTEXGENIV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexGeniv( coord, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ params[0] = 0;
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ memset( params, 0, 4 * sizeof(GLint) );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWritei( params[0] );
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayi( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexImage( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels ) { /* TODO */
+
+ trWriteCMD( CMD_GETTEXIMAGE );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexImage( target, level, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexLevelParameterfv( GLenum target, GLint level, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETTEXLEVELPARAMETERFV );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexLevelParameterfv( target, level, pname, params );
+ trError();
+ } else {
+ params[0] = 0.0;
+ }
+ trWritef( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetTexLevelParameteriv( GLenum target, GLint level, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETTEXLEVELPARAMETERIV );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexLevelParameteriv( target, level, pname, params );
+ trError();
+ } else {
+ params[0] = 0;
+ }
+ trWritei( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetTexParameterfv( GLenum target, GLenum pname, GLfloat *params) {
+ trWriteCMD( CMD_GETTEXPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexParameterfv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_MAG_FILTER:
+ case GL_TEXTURE_MIN_FILTER:
+ case GL_TEXTURE_MIN_LOD:
+ case GL_TEXTURE_MAX_LOD:
+ case GL_TEXTURE_BASE_LEVEL:
+ case GL_TEXTURE_MAX_LEVEL:
+ case GL_TEXTURE_WRAP_S:
+ case GL_TEXTURE_WRAP_T:
+ case GL_TEXTURE_WRAP_R:
+ case GL_TEXTURE_PRIORITY:
+ case GL_TEXTURE_RESIDENT:
+ params[0] = 0.0;
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_MAG_FILTER:
+ case GL_TEXTURE_MIN_FILTER:
+ case GL_TEXTURE_MIN_LOD:
+ case GL_TEXTURE_MAX_LOD:
+ case GL_TEXTURE_BASE_LEVEL:
+ case GL_TEXTURE_MAX_LEVEL:
+ case GL_TEXTURE_WRAP_S:
+ case GL_TEXTURE_WRAP_T:
+ case GL_TEXTURE_WRAP_R:
+ case GL_TEXTURE_PRIORITY:
+ case GL_TEXTURE_RESIDENT:
+ trWritef( params[0] );
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ trWriteArrayf( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexParameteriv( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETTEXPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexParameteriv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_MAG_FILTER:
+ case GL_TEXTURE_MIN_FILTER:
+ case GL_TEXTURE_MIN_LOD:
+ case GL_TEXTURE_MAX_LOD:
+ case GL_TEXTURE_BASE_LEVEL:
+ case GL_TEXTURE_MAX_LEVEL:
+ case GL_TEXTURE_WRAP_S:
+ case GL_TEXTURE_WRAP_T:
+ case GL_TEXTURE_WRAP_R:
+ case GL_TEXTURE_PRIORITY:
+ case GL_TEXTURE_RESIDENT:
+ params[0] = 0;
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ memset( params, 0, 4 * sizeof(GLint) );
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_MAG_FILTER:
+ case GL_TEXTURE_MIN_FILTER:
+ case GL_TEXTURE_MIN_LOD:
+ case GL_TEXTURE_MAX_LOD:
+ case GL_TEXTURE_BASE_LEVEL:
+ case GL_TEXTURE_MAX_LEVEL:
+ case GL_TEXTURE_WRAP_S:
+ case GL_TEXTURE_WRAP_T:
+ case GL_TEXTURE_WRAP_R:
+ case GL_TEXTURE_PRIORITY:
+ case GL_TEXTURE_RESIDENT:
+ trWritei( params[0] );
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ trWriteArrayi( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trHint( GLenum target, GLenum mode ) {
+ trWriteCMD( CMD_HINT );
+ trWriteEnum( target );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Hint( target, mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trHistogram( GLenum target, GLsizei width, GLenum internalformat, GLboolean sink ) {
+ trWriteCMD( CMD_HISTOGRAM );
+ trWriteEnum( target );
+ trWriteSizei( width );
+ trWriteEnum( internalformat );
+ trWriteBool( sink );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Histogram( target, width, internalformat, sink );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexd( GLdouble c ) {
+ trWriteCMD( CMD_INDEXD );
+ trWrited( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexd( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexdv( const GLdouble *c ) {
+ trWriteCMD( CMD_INDEXDV );
+ trWritePointer( (void *)c );
+ trFileFlush();
+ trWrited( c[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexdv( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexf( GLfloat c ) {
+ trWriteCMD( CMD_INDEXF );
+ trWritef( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexf( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexfv( const GLfloat *c ) {
+ trWriteCMD( CMD_INDEXFV );
+ trWritePointer( (void *)c );
+ trFileFlush();
+ trWritef( c[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexfv( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexi( GLint c ) {
+ trWriteCMD( CMD_INDEXI );
+ trWritei( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexi( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexiv( const GLint *c ) {
+ trWriteCMD( CMD_INDEXIV );
+ trWritePointer( (void *)c );
+ trFileFlush();
+ trWritei( c[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexiv( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexMask( GLuint mask ) {
+ trWriteCMD( CMD_INDEXMASK );
+ trWriteui( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->IndexMask( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexPointerEXT( GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_INDEXPOINTEREXT );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->IndexPointerEXT( type, stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexPointer( GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_INDEXPOINTER );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->IndexPointer( type, stride, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexs( GLshort c ) {
+ trWriteCMD( CMD_INDEXS );
+ trWrites( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexs( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexsv( const GLshort *c ) {
+ trWriteCMD( CMD_INDEXSV );
+ trWritePointer( (void *)c );
+ trFileFlush();
+ trWrites( c[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexsv( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexub( GLubyte c ) {
+ trWriteCMD( CMD_INDEXUB );
+ trWriteub( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexub( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexubv( const GLubyte *c ) {
+ trWriteCMD( CMD_INDEXUBV );
+ trWritePointer( (void *)c );
+ trFileFlush();
+ trWriteub( c[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexubv( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trInitNames( void ) {
+ trWriteCMD( CMD_INITNAMES );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->InitNames( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trInterleavedArrays( GLenum format, GLsizei stride, const GLvoid *pointer ) { /* TODO */
+ trace_context_t * tctx = trCtx();
+
+ trWriteCMD( CMD_INTERLEAVEDARRAYS );
+ trWriteEnum( format );
+ trWriteSizei( stride );
+ trWritePointer( (void *)pointer );
+ trFileFlush();
+
+ if( tctx->doExec ) {
+ trSetOriginalDispatch();
+ trGetDispatch()->InterleavedArrays( format, stride, pointer );
+ trSetTraceDispatch();
+ trError();
+ }
+}
+
+
+GLAPI GLboolean GLAPIENTRY trIsEnabled( GLenum cap ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ISENABLED );
+ trWriteEnum( cap );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->IsEnabled( cap );
+ trError();
+ } else {
+ retval = GL_FALSE;
+ }
+ trWriteBool( retval );
+ return retval;
+}
+
+
+GLAPI GLboolean GLAPIENTRY trIsList( GLuint list ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ISLIST );
+ trWriteui( list );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->IsList( list );
+ trError();
+ } else {
+ retval = GL_FALSE;
+ }
+ trWriteBool( retval );
+ return retval;
+}
+
+
+GLAPI GLboolean GLAPIENTRY trIsTexture( GLuint texture ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ISTEXTURE );
+ trWriteui( texture );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->IsTexture( texture );
+ trError();
+ } else {
+ retval = GL_FALSE;
+ }
+ trWriteBool( retval );
+ return retval;
+}
+
+
+GLAPI GLboolean GLAPIENTRY trIsTextureEXT( GLuint texture ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ISTEXTUREEXT );
+ trWriteui( texture );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->IsTextureEXT( texture );
+ trError();
+ } else {
+ retval = GL_FALSE;
+ }
+ trWriteBool( retval );
+ return retval;
+}
+
+
+GLAPI void GLAPIENTRY trLightf( GLenum light, GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_LIGHTF );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Lightf( light, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightfv( GLenum light, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_LIGHTFV );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_SPOT_DIRECTION:
+ trWriteArrayf( 3, params );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ trWritef( params[0] );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Lightfv( light, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLighti( GLenum light, GLenum pname, GLint param ) {
+ trWriteCMD( CMD_LIGHTI );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Lighti( light, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightiv( GLenum light, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_LIGHTIV );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_SPOT_DIRECTION:
+ trWriteArrayi( 3, params );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ trWritei( params[0] );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Lightiv( light, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightModelf( GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_LIGHTMODELF );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LightModelf( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightModelfv( GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_LIGHTMODELFV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_LIGHT_MODEL_AMBIENT:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ trWritef( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LightModelfv( pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightModeli( GLenum pname, GLint param ) {
+ trWriteCMD( CMD_LIGHTMODELI );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LightModeli( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightModeliv( GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_LIGHTMODELIV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_LIGHT_MODEL_AMBIENT:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ trWritei( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LightModeliv( pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLineStipple( GLint factor, GLushort pattern ) {
+ trWriteCMD( CMD_LINESTIPPLE );
+ trWritei( factor );
+ trWriteus( pattern );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LineStipple( factor, pattern );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLineWidth( GLfloat width ) {
+ trWriteCMD( CMD_LINEWIDTH );
+ trWritef( width );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LineWidth( width );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trListBase( GLuint base ) {
+ trWriteCMD( CMD_LISTBASE );
+ trWriteui( base );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ListBase( base );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLoadIdentity( void ) {
+ trWriteCMD( CMD_LOADIDENTITY );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LoadIdentity( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLoadMatrixd( const GLdouble *m ) {
+ trWriteCMD( CMD_LOADMATRIXD );
+ trWritePointer( (void *)m );
+ trFileFlush();
+ trWriteArrayd( 16, m );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LoadMatrixd( m );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLoadMatrixf( const GLfloat *m ) {
+ trWriteCMD( CMD_LOADMATRIXF );
+ trWritePointer( (void *)m );
+ trFileFlush();
+ trWriteArrayf( 16, m );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LoadMatrixf( m );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLoadName( GLuint name ) {
+ trWriteCMD( CMD_LOADNAME );
+ trWriteui( name );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LoadName( name );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLockArraysEXT( GLint first, GLsizei count ) {
+ trWriteCMD( CMD_LOCKARRAYSEXT );
+ trWritei( first );
+ trWriteSizei( count );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LockArraysEXT( first, count );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLogicOp( GLenum opcode ) {
+ trWriteCMD( CMD_LOGICOP );
+ trWriteEnum( opcode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LogicOp( opcode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMap1d( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points ) {
+ GLint i;
+
+ trWriteCMD( CMD_MAP1D );
+ trWriteEnum( target );
+ trWrited( u1 );
+ trWrited( u2 );
+ trWritei( stride );
+ trWritei( order );
+ trWritePointer( (void *)points );
+ trFileFlush();
+
+ switch( target ) {
+ case GL_MAP1_INDEX:
+ case GL_MAP1_TEXTURE_COORD_1:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWrited( points[i] );
+ }
+ break;
+ case GL_MAP1_TEXTURE_COORD_2:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWrited( points[i] );
+ trWrited( points[i + 1] );
+ }
+ break;
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_3:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWrited( points[i] );
+ trWrited( points[i + 1] );
+ trWrited( points[i + 2] );
+ }
+ break;
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP1_TEXTURE_COORD_4:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWrited( points[i] );
+ trWrited( points[i + 1] );
+ trWrited( points[i + 2] );
+ trWrited( points[i + 3] );
+ }
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Map1d( target, u1, u2, stride, order, points );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMap1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points ) {
+ GLint i;
+
+ trWriteCMD( CMD_MAP1F );
+ trWriteEnum( target );
+ trWritef( u1 );
+ trWritef( u2 );
+ trWritei( stride );
+ trWritei( order );
+ trWritePointer( (void *)points );
+ trFileFlush();
+
+ switch( target ) {
+ case GL_MAP1_INDEX:
+ case GL_MAP1_TEXTURE_COORD_1:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWritef( points[i] );
+ }
+ break;
+ case GL_MAP1_TEXTURE_COORD_2:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWritef( points[i] );
+ trWritef( points[i + 1] );
+ }
+ break;
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_3:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWritef( points[i] );
+ trWritef( points[i + 1] );
+ trWritef( points[i + 2] );
+ }
+ break;
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP1_TEXTURE_COORD_4:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWritef( points[i] );
+ trWritef( points[i + 1] );
+ trWritef( points[i + 2] );
+ trWritef( points[i + 3] );
+ }
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Map1f( target, u1, u2, stride, order, points );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMap2d( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points ) {
+ GLint i;
+ GLint j;
+
+ trWriteCMD( CMD_MAP2D );
+ trWriteEnum( target );
+ trWrited( u1 );
+ trWrited( u2 );
+ trWritei( ustride );
+ trWritei( uorder );
+ trWrited( v1 );
+ trWrited( v2 );
+ trWritei( vstride );
+ trWritei( vorder );
+ trWritePointer( (void *)points );
+ trFileFlush();
+
+ switch( target ) {
+ case GL_MAP1_INDEX:
+ case GL_MAP1_TEXTURE_COORD_1:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWrited( points[i + j] );
+ }
+ }
+ break;
+ case GL_MAP1_TEXTURE_COORD_2:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWrited( points[i + j] );
+ trWrited( points[i + j + 1] );
+ }
+ }
+ break;
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_3:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWrited( points[i + j] );
+ trWrited( points[i + j + 1] );
+ trWrited( points[i + j + 2] );
+ }
+ }
+ break;
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP1_TEXTURE_COORD_4:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWrited( points[i + j] );
+ trWrited( points[i + j + 1] );
+ trWrited( points[i + j + 2] );
+ trWrited( points[i + j + 3] );
+ }
+ }
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Map2d( target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMap2f( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points ) {
+ GLint i;
+ GLint j;
+
+ trWriteCMD( CMD_MAP2F );
+ trWriteEnum( target );
+ trWritef( u1 );
+ trWritef( u2 );
+ trWritei( ustride );
+ trWritei( uorder );
+ trWritef( v1 );
+ trWritef( v2 );
+ trWritei( vstride );
+ trWritei( vorder );
+ trWritePointer( (void *)points );
+ trFileFlush();
+
+ switch( target ) {
+ case GL_MAP1_INDEX:
+ case GL_MAP1_TEXTURE_COORD_1:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWritef( points[i + j] );
+ }
+ }
+ break;
+ case GL_MAP1_TEXTURE_COORD_2:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWritef( points[i + j] );
+ trWritef( points[i + j + 1] );
+ }
+ }
+ break;
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_3:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWritef( points[i + j] );
+ trWritef( points[i + j + 1] );
+ trWritef( points[i + j + 2] );
+ }
+ }
+ break;
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP1_TEXTURE_COORD_4:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWritef( points[i + j] );
+ trWritef( points[i + j + 1] );
+ trWritef( points[i + j + 2] );
+ trWritef( points[i + j + 3] );
+ }
+ }
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Map2f( target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMapGrid1d( GLint un, GLdouble u1, GLdouble u2 ) {
+ trWriteCMD( CMD_MAPGRID1D );
+ trWritei( un );
+ trWrited( u1 );
+ trWrited( u2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MapGrid1d( un, u1, u2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMapGrid1f( GLint un, GLfloat u1, GLfloat u2 ) {
+ trWriteCMD( CMD_MAPGRID1F );
+ trWritei( un );
+ trWritef( u1 );
+ trWritef( u2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MapGrid1f( un, u1, u2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMapGrid2d( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 ) {
+ trWriteCMD( CMD_MAPGRID2D );
+ trWritei( un );
+ trWrited( u1 );
+ trWrited( u2 );
+ trWritei( vn );
+ trWrited( v1 );
+ trWrited( v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MapGrid2d( un, u1, u2, vn, v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMapGrid2f( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 ) {
+ trWriteCMD( CMD_MAPGRID2F );
+ trWritei( un );
+ trWritef( u1 );
+ trWritef( u2 );
+ trWritei( vn );
+ trWritef( v1 );
+ trWritef( v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MapGrid2f( un, u1, u2, vn, v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMaterialf( GLenum face, GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_MATERIALF );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Materialf( face, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMaterialfv( GLenum face, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_MATERIALFV );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_AMBIENT_AND_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_SHININESS:
+ trWritef( params[0] );
+ break;
+ case GL_COLOR_INDEXES:
+ trWriteArrayf( 3, params );
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Materialfv( face, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMateriali( GLenum face, GLenum pname, GLint param ) {
+ trWriteCMD( CMD_MATERIALI );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Materiali( face, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMaterialiv( GLenum face, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_MATERIALIV );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_AMBIENT_AND_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_SHININESS:
+ trWritei( params[0] );
+ break;
+ case GL_COLOR_INDEXES:
+ trWriteArrayi( 3, params );
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Materialiv( face, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMatrixMode( GLenum mode ) {
+ trWriteCMD( CMD_MATRIXMODE );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MatrixMode( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMinmax( GLenum target, GLenum internalformat, GLboolean sink ) {
+ trWriteCMD( CMD_MINMAX );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteBool( sink );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Minmax( target, internalformat, sink );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1dARB( GLenum target, GLdouble s) {
+ trWriteCMD( CMD_MULTITEXCOORD1DARB );
+ trWriteEnum( target );
+ trWrited( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1dARB( target, s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1dvARB( GLenum target, const GLdouble *v) {
+ trWriteCMD( CMD_MULTITEXCOORD1DVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWrited( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1dvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1fARB( GLenum target, GLfloat s) {
+ trWriteCMD( CMD_MULTITEXCOORD1FARB );
+ trWriteEnum( target );
+ trWritef( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1fARB( target, s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1fvARB( GLenum target, const GLfloat *v) {
+ trWriteCMD( CMD_MULTITEXCOORD1FVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWritef( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1fvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1iARB( GLenum target, GLint s) {
+ trWriteCMD( CMD_MULTITEXCOORD1IARB );
+ trWriteEnum( target );
+ trWritei( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1iARB( target, s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1ivARB( GLenum target, const GLint *v) {
+ trWriteCMD( CMD_MULTITEXCOORD1IVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWritei( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1ivARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1sARB( GLenum target, GLshort s) {
+ trWriteCMD( CMD_MULTITEXCOORD1SARB );
+ trWriteEnum( target );
+ trWrites( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1sARB( target, s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1svARB( GLenum target, const GLshort *v) {
+ trWriteCMD( CMD_MULTITEXCOORD1SVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWrites( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1svARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2dARB( GLenum target, GLdouble s, GLdouble t) {
+ trWriteCMD( CMD_MULTITEXCOORD2DARB );
+ trWriteEnum( target );
+ trWrited( s );
+ trWrited( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2dARB( target, s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2dvARB( GLenum target, const GLdouble *v) {
+ trWriteCMD( CMD_MULTITEXCOORD2DVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2dvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2fARB( GLenum target, GLfloat s, GLfloat t) {
+ trWriteCMD( CMD_MULTITEXCOORD2FARB );
+ trWriteEnum( target );
+ trWritef( s );
+ trWritef( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2fARB( target, s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2fvARB( GLenum target, const GLfloat *v) {
+ trWriteCMD( CMD_MULTITEXCOORD2FVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2fvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2iARB( GLenum target, GLint s, GLint t) {
+ trWriteCMD( CMD_MULTITEXCOORD2IARB );
+ trWriteEnum( target );
+ trWritei( s );
+ trWritei( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2iARB( target, s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2ivARB( GLenum target, const GLint *v) {
+ trWriteCMD( CMD_MULTITEXCOORD2IVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2ivARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2sARB( GLenum target, GLshort s, GLshort t) {
+ trWriteCMD( CMD_MULTITEXCOORD2SARB );
+ trWriteEnum( target );
+ trWrites( s );
+ trWrites( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2sARB( target, s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2svARB( GLenum target, const GLshort *v) {
+ trWriteCMD( CMD_MULTITEXCOORD2SVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2svARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3dARB( GLenum target, GLdouble s, GLdouble t, GLdouble r) {
+ trWriteCMD( CMD_MULTITEXCOORD3DARB );
+ trWriteEnum( target );
+ trWrited( s );
+ trWrited( t );
+ trWrited( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3dARB( target, s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3dvARB( GLenum target, const GLdouble *v) {
+ trWriteCMD( CMD_MULTITEXCOORD3DVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3dvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3fARB( GLenum target, GLfloat s, GLfloat t, GLfloat r) {
+ trWriteCMD( CMD_MULTITEXCOORD3FARB );
+ trWriteEnum( target );
+ trWritef( s );
+ trWritef( t );
+ trWritef( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3fARB( target, s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3fvARB( GLenum target, const GLfloat *v) {
+ trWriteCMD( CMD_MULTITEXCOORD3FVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3fvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3iARB( GLenum target, GLint s, GLint t, GLint r) {
+ trWriteCMD( CMD_MULTITEXCOORD3IARB );
+ trWriteEnum( target );
+ trWritei( s );
+ trWritei( t );
+ trWritei( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3iARB( target, s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3ivARB( GLenum target, const GLint *v) {
+ trWriteCMD( CMD_MULTITEXCOORD3IVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3ivARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3sARB( GLenum target, GLshort s, GLshort t, GLshort r) {
+ trWriteCMD( CMD_MULTITEXCOORD3SARB );
+ trWriteEnum( target );
+ trWrites( s );
+ trWrites( t );
+ trWrites( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3sARB( target, s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3svARB( GLenum target, const GLshort *v) {
+ trWriteCMD( CMD_MULTITEXCOORD3SVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3svARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4dARB( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) {
+ trWriteCMD( CMD_MULTITEXCOORD4DARB );
+ trWriteEnum( target );
+ trWrited( s );
+ trWrited( t );
+ trWrited( r );
+ trWrited( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4dARB( target, s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4dvARB( GLenum target, const GLdouble *v) {
+ trWriteCMD( CMD_MULTITEXCOORD4DVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4dvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4fARB( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
+ trWriteCMD( CMD_MULTITEXCOORD4FARB );
+ trWriteEnum( target );
+ trWritef( s );
+ trWritef( t );
+ trWritef( r );
+ trWritef( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4fARB( target, s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4fvARB( GLenum target, const GLfloat *v) {
+ trWriteCMD( CMD_MULTITEXCOORD4FVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4fvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4iARB( GLenum target, GLint s, GLint t, GLint r, GLint q) {
+ trWriteCMD( CMD_MULTITEXCOORD4IARB );
+ trWriteEnum( target );
+ trWritei( s );
+ trWritei( t );
+ trWritei( r );
+ trWritei( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4iARB( target, s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4ivARB( GLenum target, const GLint *v) {
+ trWriteCMD( CMD_MULTITEXCOORD4IVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4ivARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4sARB( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) {
+ trWriteCMD( CMD_MULTITEXCOORD4SARB );
+ trWriteEnum( target );
+ trWrites( s );
+ trWrites( t );
+ trWrites( r );
+ trWrites( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4sARB( target, s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4svARB( GLenum target, const GLshort *v) {
+ trWriteCMD( CMD_MULTITEXCOORD4SVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4svARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultMatrixd( const GLdouble *m ) {
+ trWriteCMD( CMD_MULTMATRIXD );
+ trWritePointer( (void *)m );
+ trFileFlush();
+ trWriteArrayd( 16, m );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultMatrixd( m );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultMatrixf( const GLfloat *m ) {
+ trWriteCMD( CMD_MULTMATRIXF );
+ trWritePointer( (void *)m );
+ trFileFlush();
+ trWriteArrayf( 16, m );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultMatrixf( m );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNewList( GLuint list, GLenum mode ) {
+ trWriteCMD( CMD_NEWLIST );
+ trWriteui( list );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->NewList( list, mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3b( GLbyte nx, GLbyte ny, GLbyte nz ) {
+ trWriteCMD( CMD_NORMAL3B );
+ trWriteb( nx );
+ trWriteb( ny );
+ trWriteb( nz );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3b( nx, ny, nz );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3bv( const GLbyte *v ) {
+ trWriteCMD( CMD_NORMAL3BV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayb( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3bv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3d( GLdouble nx, GLdouble ny, GLdouble nz ) {
+ trWriteCMD( CMD_NORMAL3D );
+ trWrited( nx );
+ trWrited( ny );
+ trWrited( nz );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3d( nx, ny, nz );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3dv( const GLdouble *v ) {
+ trWriteCMD( CMD_NORMAL3DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3f( GLfloat nx, GLfloat ny, GLfloat nz ) {
+ trWriteCMD( CMD_NORMAL3F );
+ trWritef( nx );
+ trWritef( ny );
+ trWritef( nz );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3f( nx, ny, nz );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3fv( const GLfloat *v ) {
+ trWriteCMD( CMD_NORMAL3FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3i( GLint nx, GLint ny, GLint nz ) {
+ trWriteCMD( CMD_NORMAL3I );
+ trWritei( nx );
+ trWritei( ny );
+ trWritei( nz );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3i( nx, ny, nz );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3iv( const GLint *v ) {
+ trWriteCMD( CMD_NORMAL3IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3s( GLshort nx, GLshort ny, GLshort nz ) {
+ trWriteCMD( CMD_NORMAL3S );
+ trWrites( nx );
+ trWrites( ny );
+ trWrites( nz );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3s( nx, ny, nz );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3sv( const GLshort *v ) {
+ trWriteCMD( CMD_NORMAL3SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormalPointerEXT( GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_NORMALPOINTEREXT );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->NormalPointerEXT( type, stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormalPointer( GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_NORMALPOINTER );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->NormalPointer( type, stride, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) {
+ trWriteCMD( CMD_ORTHO );
+ trWrited( left );
+ trWrited( right );
+ trWrited( bottom );
+ trWrited( top );
+ trWrited( near_val );
+ trWrited( far_val );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Ortho( left, right, bottom, top, near_val, far_val );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPassThrough( GLfloat token ) {
+ trWriteCMD( CMD_PASSTHROUGH );
+ trWritef( token );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PassThrough( token );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelMapfv( GLenum map, GLint mapsize, const GLfloat *values ) {
+ trWriteCMD( CMD_PIXELMAPFV );
+ trWriteEnum( map );
+ trWritei( mapsize );
+ trWritePointer( (void *)values );
+ trFileFlush();
+ trWriteArrayf( mapsize, values );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelMapfv( map, mapsize, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelMapuiv( GLenum map, GLint mapsize, const GLuint *values ) {
+ trWriteCMD( CMD_PIXELMAPUIV );
+ trWriteEnum( map );
+ trWritei( mapsize );
+ trWritePointer( (void *)values );
+ trFileFlush();
+ trWriteArrayui( mapsize, values );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelMapuiv( map, mapsize, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelMapusv( GLenum map, GLint mapsize, const GLushort *values ) {
+ trWriteCMD( CMD_PIXELMAPUSV );
+ trWriteEnum( map );
+ trWritei( mapsize );
+ trWritePointer( (void *)values );
+ trFileFlush();
+ trWriteArrayus( mapsize, values );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelMapusv( map, mapsize, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelStoref( GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_PIXELSTOREF );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelStoref( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelStorei( GLenum pname, GLint param ) {
+ trWriteCMD( CMD_PIXELSTOREI );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelStorei( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelTransferf( GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_PIXELTRANSFERF );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelTransferf( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelTransferi( GLenum pname, GLint param ) {
+ trWriteCMD( CMD_PIXELTRANSFERI );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelTransferi( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelZoom( GLfloat xfactor, GLfloat yfactor ) {
+ trWriteCMD( CMD_PIXELZOOM );
+ trWritef( xfactor );
+ trWritef( yfactor );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelZoom( xfactor, yfactor );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPointParameterfEXT( GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_POINTPARAMETERFEXT );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PointParameterfEXT( pname, param );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trPointParameterfSGIS( GLenum pname, GLfloat param) {
+ trWriteCMD( CMD_POINTPARAMETERFSGIS );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PointParameterfSGIS( pname, param );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trPointParameterfvEXT( GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_POINTPARAMETERFVEXT );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_POINT_SIZE_MIN_EXT:
+ case GL_POINT_SIZE_MAX_EXT:
+ case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
+ trWritef( params[0] );
+ break;
+
+ case GL_DISTANCE_ATTENUATION_EXT:
+ trWriteArrayf( 3, params );
+ break;
+
+ default:
+ /* The 2nd pass should handle this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PointParameterfvEXT( pname, params );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trPointParameterfvSGIS( GLenum pname, const GLfloat *params) { /* TODO */
+ trWriteCMD( CMD_POINTPARAMETERFVSGIS );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PointParameterfvSGIS( pname, params );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trPointSize( GLfloat size ) {
+ trWriteCMD( CMD_POINTSIZE );
+ trWritef( size );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PointSize( size );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPolygonMode( GLenum face, GLenum mode ) {
+ trWriteCMD( CMD_POLYGONMODE );
+ trWriteEnum( face );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PolygonMode( face, mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPolygonOffsetEXT( GLfloat factor, GLfloat bias ) {
+ trWriteCMD( CMD_POLYGONOFFSETEXT );
+ trWritef( factor );
+ trWritef( bias );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PolygonOffsetEXT( factor, bias );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPolygonOffset( GLfloat factor, GLfloat units ) {
+ trWriteCMD( CMD_POLYGONOFFSET );
+ trWritef( factor );
+ trWritef( units );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PolygonOffset( factor, units );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPolygonStipple( const GLubyte *mask ) {
+ trWriteCMD( CMD_POLYGONSTIPPLE );
+ trWritePointer( (void *)mask );
+ trFileFlush();
+ trWriteArrayub( 64, mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PolygonStipple( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPopAttrib( void ) {
+ trWriteCMD( CMD_POPATTRIB );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PopAttrib( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPopClientAttrib( void ) {
+ trWriteCMD( CMD_POPCLIENTATTRIB );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PopClientAttrib( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPopMatrix( void ) {
+ trWriteCMD( CMD_POPMATRIX );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PopMatrix( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPopName( void ) {
+ trWriteCMD( CMD_POPNAME );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PopName( );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trPrioritizeTexturesEXT( GLsizei n, const GLuint *textures, const GLclampf *priorities ) {
+ trWriteCMD( CMD_PRIORITIZETEXTURESEXT );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+
+ trWritePointer( (void *)priorities );
+ trFileFlush();
+ /* FIXME!!! */
+ trWriteArrayf( n, priorities );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PrioritizeTexturesEXT( n, textures, priorities );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trPrioritizeTextures( GLsizei n, const GLuint *textures, const GLclampf *priorities ) {
+ trWriteCMD( CMD_PRIORITIZETEXTURES );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+
+ trWritePointer( (void *)priorities );
+ trFileFlush();
+ /* FIXME!!! */
+ trWriteArrayf( n, priorities );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PrioritizeTextures( n, textures, priorities );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPushAttrib( GLbitfield mask ) {
+ trWriteCMD( CMD_PUSHATTRIB );
+ trWriteBits( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PushAttrib( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPushClientAttrib( GLbitfield mask ) {
+ trWriteCMD( CMD_PUSHCLIENTATTRIB );
+ trWriteBits( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PushClientAttrib( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPushMatrix( void ) {
+ trWriteCMD( CMD_PUSHMATRIX );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PushMatrix( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPushName( GLuint name ) {
+ trWriteCMD( CMD_PUSHNAME );
+ trWriteui( name );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PushName( name );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2d( GLdouble x, GLdouble y ) {
+ trWriteCMD( CMD_RASTERPOS2D );
+ trWrited( x );
+ trWrited( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2d( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2dv( const GLdouble *v ) {
+ trWriteCMD( CMD_RASTERPOS2DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2f( GLfloat x, GLfloat y ) {
+ trWriteCMD( CMD_RASTERPOS2F );
+ trWritef( x );
+ trWritef( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2f( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2fv( const GLfloat *v ) {
+ trWriteCMD( CMD_RASTERPOS2FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2i( GLint x, GLint y ) {
+ trWriteCMD( CMD_RASTERPOS2I );
+ trWritei( x );
+ trWritei( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2i( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2iv( const GLint *v ) {
+ trWriteCMD( CMD_RASTERPOS2IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2s( GLshort x, GLshort y ) {
+ trWriteCMD( CMD_RASTERPOS2S );
+ trWrites( x );
+ trWrites( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2s( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2sv( const GLshort *v ) {
+ trWriteCMD( CMD_RASTERPOS2SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3d( GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_RASTERPOS3D );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3d( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3dv( const GLdouble *v ) {
+ trWriteCMD( CMD_RASTERPOS3DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3f( GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_RASTERPOS3F );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3f( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3fv( const GLfloat *v ) {
+ trWriteCMD( CMD_RASTERPOS3FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3i( GLint x, GLint y, GLint z ) {
+ trWriteCMD( CMD_RASTERPOS3I );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3i( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3iv( const GLint *v ) {
+ trWriteCMD( CMD_RASTERPOS3IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3s( GLshort x, GLshort y, GLshort z ) {
+ trWriteCMD( CMD_RASTERPOS3S );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3s( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3sv( const GLshort *v ) {
+ trWriteCMD( CMD_RASTERPOS3SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) {
+ trWriteCMD( CMD_RASTERPOS4D );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+ trWrited( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4d( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4dv( const GLdouble *v ) {
+ trWriteCMD( CMD_RASTERPOS4DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) {
+ trWriteCMD( CMD_RASTERPOS4F );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+ trWritef( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4f( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4fv( const GLfloat *v ) {
+ trWriteCMD( CMD_RASTERPOS4FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4i( GLint x, GLint y, GLint z, GLint w ) {
+ trWriteCMD( CMD_RASTERPOS4I );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+ trWritei( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4i( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4iv( const GLint *v ) {
+ trWriteCMD( CMD_RASTERPOS4IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w ) {
+ trWriteCMD( CMD_RASTERPOS4S );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+ trWrites( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4s( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4sv( const GLshort *v ) {
+ trWriteCMD( CMD_RASTERPOS4SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trReadBuffer( GLenum mode ) {
+ trWriteCMD( CMD_READBUFFER );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ReadBuffer( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_READPIXELS );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ReadPixels( x, y, width, height, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ) {
+ trWriteCMD( CMD_RECTD );
+ trWrited( x1 );
+ trWrited( y1 );
+ trWrited( x2 );
+ trWrited( y2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectd( x1, y1, x2, y2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectdv( const GLdouble *v1, const GLdouble *v2 ) {
+ trWriteCMD( CMD_RECTDV );
+ trWritePointer( (void *)v1 );
+ trFileFlush();
+ trWriteArrayd( 2, v1 );
+
+ trWritePointer( (void *)v2 );
+ trFileFlush();
+ trWriteArrayd( 2, v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectdv( v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ) {
+ trWriteCMD( CMD_RECTF );
+ trWritef( x1 );
+ trWritef( y1 );
+ trWritef( x2 );
+ trWritef( y2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectf( x1, y1, x2, y2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectfv( const GLfloat *v1, const GLfloat *v2 ) {
+ trWriteCMD( CMD_RECTFV );
+ trWritePointer( (void *)v1 );
+ trFileFlush();
+ trWriteArrayf( 2, v1 );
+
+ trWritePointer( (void *)v2 );
+ trFileFlush();
+ trWriteArrayf( 2, v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectfv( v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRecti( GLint x1, GLint y1, GLint x2, GLint y2 ) {
+ trWriteCMD( CMD_RECTI );
+ trWritei( x1 );
+ trWritei( y1 );
+ trWritei( x2 );
+ trWritei( y2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Recti( x1, y1, x2, y2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectiv( const GLint *v1, const GLint *v2 ) {
+ trWriteCMD( CMD_RECTIV );
+ trWritePointer( (void *)v1 );
+ trFileFlush();
+ trWriteArrayi( 2, v1 );
+
+ trWritePointer( (void *)v2 );
+ trFileFlush();
+ trWriteArrayi( 2, v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectiv( v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 ) {
+ trWriteCMD( CMD_RECTS );
+ trWrites( x1 );
+ trWrites( y1 );
+ trWrites( x2 );
+ trWrites( y2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rects( x1, y1, x2, y2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectsv( const GLshort *v1, const GLshort *v2 ) {
+ trWriteCMD( CMD_RECTSV );
+ trWritePointer( (void *)v1 );
+ trFileFlush();
+ trWriteArrays( 2, v1 );
+
+ trWritePointer( (void *)v2 );
+ trFileFlush();
+ trWriteArrays( 2, v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectsv( v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI GLint GLAPIENTRY trRenderMode( GLenum mode ) {
+ GLint retval;
+
+ trWriteCMD( CMD_RENDERMODE );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->RenderMode( mode );
+ trError();
+ } else {
+ retval = 0;
+ }
+
+ trWritei( retval );
+ return retval;
+}
+
+
+GLAPI void GLAPIENTRY trResetHistogram( GLenum target ) {
+ trWriteCMD( CMD_RESETHISTOGRAM );
+ trWriteEnum( target );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ResetHistogram( target );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trResetMinmax( GLenum target ) {
+ trWriteCMD( CMD_RESETMINMAX );
+ trWriteEnum( target );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ResetMinmax( target );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trResizeBuffersMESA( void ) {
+ trWriteCMD( CMD_RESIZEBUFFERSMESA );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ResizeBuffersMESA( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_ROTATED );
+ trWrited( angle );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rotated( angle, x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_ROTATEF );
+ trWritef( angle );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rotatef( angle, x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trScaled( GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_SCALED );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Scaled( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trScalef( GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_SCALEF );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Scalef( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trScissor( GLint x, GLint y, GLsizei width, GLsizei height) {
+ trWriteCMD( CMD_SCISSOR );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Scissor( x, y, width, height );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trSelectBuffer( GLsizei size, GLuint *buffer ) {
+ trWriteCMD( CMD_SELECTBUFFER );
+ trWriteSizei( size );
+ trWritePointer( (void *)buffer );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->SelectBuffer( size, buffer );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trSeparableFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_SEPARABLEFILTER2D );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)row );
+ trFileFlush();
+ trWritePointer( (void *)column );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ trWriteTypeArray( type, width, pixelsize, 0, row );
+ trWriteTypeArray( type, height, pixelsize, 0, column );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->SeparableFilter2D( target, internalformat, width, height, format, type, row, column );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trShadeModel( GLenum mode ) {
+ trWriteCMD( CMD_SHADEMODEL );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ShadeModel( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trStencilFunc( GLenum func, GLint ref, GLuint mask ) {
+ trWriteCMD( CMD_STENCILFUNC );
+ trWriteEnum( func );
+ trWritei( ref );
+ trWriteui( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->StencilFunc( func, ref, mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trStencilMask( GLuint mask ) {
+ trWriteCMD( CMD_STENCILMASK );
+ trWriteui( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->StencilMask( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trStencilOp( GLenum fail, GLenum zfail, GLenum zpass ) {
+ trWriteCMD( CMD_STENCILOP );
+ trWriteEnum( fail );
+ trWriteEnum( zfail );
+ trWriteEnum( zpass );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->StencilOp( fail, zfail, zpass );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1d( GLdouble s ) {
+ trWriteCMD( CMD_TEXCOORD1D );
+ trWrited( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1d( s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1dv( const GLdouble *v ) {
+ trWriteCMD( CMD_TEXCOORD1DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWrited( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1f( GLfloat s ) {
+ trWriteCMD( CMD_TEXCOORD1F );
+ trWritef( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1f( s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1fv( const GLfloat *v ) {
+ trWriteCMD( CMD_TEXCOORD1FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWritef( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1i( GLint s ) {
+ trWriteCMD( CMD_TEXCOORD1I );
+ trWritei( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1i( s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1iv( const GLint *v ) {
+ trWriteCMD( CMD_TEXCOORD1IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWritei( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1s( GLshort s ) {
+ trWriteCMD( CMD_TEXCOORD1S );
+ trWrites( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1s( s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1sv( const GLshort *v ) {
+ trWriteCMD( CMD_TEXCOORD1SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWrites( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2d( GLdouble s, GLdouble t ) {
+ trWriteCMD( CMD_TEXCOORD2D );
+ trWrited( s );
+ trWrited( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2d( s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2dv( const GLdouble *v ) {
+ trWriteCMD( CMD_TEXCOORD2DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2f( GLfloat s, GLfloat t ) {
+ trWriteCMD( CMD_TEXCOORD2F );
+ trWritef( s );
+ trWritef( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2f( s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2fv( const GLfloat *v ) {
+ trWriteCMD( CMD_TEXCOORD2FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2i( GLint s, GLint t ) {
+ trWriteCMD( CMD_TEXCOORD2I );
+ trWritei( s );
+ trWritei( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2i( s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2iv( const GLint *v ) {
+ trWriteCMD( CMD_TEXCOORD2IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2s( GLshort s, GLshort t ) {
+ trWriteCMD( CMD_TEXCOORD2S );
+ trWrites( s );
+ trWrites( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2s( s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2sv( const GLshort *v ) {
+ trWriteCMD( CMD_TEXCOORD2SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3d( GLdouble s, GLdouble t, GLdouble r ) {
+ trWriteCMD( CMD_TEXCOORD3D );
+ trWrited( s );
+ trWrited( t );
+ trWrited( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3d( s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3dv( const GLdouble *v ) {
+ trWriteCMD( CMD_TEXCOORD3DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3f( GLfloat s, GLfloat t, GLfloat r ) {
+ trWriteCMD( CMD_TEXCOORD3F );
+ trWritef( s );
+ trWritef( t );
+ trWritef( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3f( s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3fv( const GLfloat *v ) {
+ trWriteCMD( CMD_TEXCOORD3FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3i( GLint s, GLint t, GLint r ) {
+ trWriteCMD( CMD_TEXCOORD3I );
+ trWritei( s );
+ trWritei( t );
+ trWritei( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3i( s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3iv( const GLint *v ) {
+ trWriteCMD( CMD_TEXCOORD3IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3s( GLshort s, GLshort t, GLshort r ) {
+ trWriteCMD( CMD_TEXCOORD3S );
+ trWrites( s );
+ trWrites( t );
+ trWrites( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3s( s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3sv( const GLshort *v ) {
+ trWriteCMD( CMD_TEXCOORD3SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ) {
+ trWriteCMD( CMD_TEXCOORD4D );
+ trWrited( s );
+ trWrited( t );
+ trWrited( r );
+ trWrited( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4d( s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4dv( const GLdouble *v ) {
+ trWriteCMD( CMD_TEXCOORD4DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q ) {
+ trWriteCMD( CMD_TEXCOORD4F );
+ trWritef( s );
+ trWritef( t );
+ trWritef( r );
+ trWritef( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4f( s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4fv( const GLfloat *v ) {
+ trWriteCMD( CMD_TEXCOORD4FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4i( GLint s, GLint t, GLint r, GLint q ) {
+ trWriteCMD( CMD_TEXCOORD4I );
+ trWritei( s );
+ trWritei( t );
+ trWritei( r );
+ trWritei( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4i( s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4iv( const GLint *v ) {
+ trWriteCMD( CMD_TEXCOORD4IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ) {
+ trWriteCMD( CMD_TEXCOORD4S );
+ trWrites( s );
+ trWrites( t );
+ trWrites( r );
+ trWrites( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4s( s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4sv( const GLshort *v ) {
+ trWriteCMD( CMD_TEXCOORD4SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoordPointerEXT( GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_TEXCOORDPOINTEREXT );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoordPointerEXT( size, type, stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_TEXCOORDPOINTER );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->TexCoordPointer( size, type, stride, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexEnvf( GLenum target, GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_TEXENVF );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexEnvf( target, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexEnvfv( GLenum target, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_TEXENVFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ trWritef( params[0] );
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ trWriteArrayf( 4, params );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexEnvfv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexEnvi( GLenum target, GLenum pname, GLint param ) {
+ trWriteCMD( CMD_TEXENVI );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexEnvi( target, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexEnviv( GLenum target, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_TEXENVIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ trWritei( params[0] );
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ trWriteArrayi( 4, params );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexEnviv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGend( GLenum coord, GLenum pname, GLdouble param ) {
+ trWriteCMD( CMD_TEXGEND );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWrited( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGend( coord, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGendv( GLenum coord, GLenum pname, const GLdouble *params ) {
+ trWriteCMD( CMD_TEXGENDV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWrited( params[0] );
+ break;
+
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayd( 4, params );
+ break;
+
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGendv( coord, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGenf( GLenum coord, GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_TEXGENF );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGenf( coord, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGenfv( GLenum coord, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_TEXGENFV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWritef( params[0] );
+ break;
+
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayf( 4, params );
+ break;
+
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGenfv( coord, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGeni( GLenum coord, GLenum pname, GLint param ) {
+ trWriteCMD( CMD_TEXGENI );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGeni( coord, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGeniv( GLenum coord, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_TEXGENIV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWritei( params[0] );
+ break;
+
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayi( 4, params );
+ break;
+
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGeniv( coord, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexImage1D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXIMAGE1D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( internalFormat );
+ trWriteSizei( width );
+ trWritei( border );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexImage1D( target, level, internalFormat, width, border, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXIMAGE2D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( internalFormat );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWritei( border );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexImage2D( target, level, internalFormat, width, height, border, format, type, pixels );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trTexImage3DEXT( GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+
+ trWriteCMD( CMD_TEXIMAGE3DEXT );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( internalFormat );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteSizei( depth );
+ trWritei( border );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ /* Pixels isn't touched if target is GL_PROXY_TEXTURE_3D */
+ if( target != GL_PROXY_TEXTURE_3D ) {
+ pixelsize = trGetPixelSize( format, type );
+ trWritePixelArray( GL_FALSE, type, width, height, depth, pixelsize, pixels );
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexImage3DEXT( target, level, internalFormat, width, height, depth, border, format, type, pixels );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trTexImage3D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXIMAGE3D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( internalFormat );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteSizei( depth );
+ trWritei( border );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexImage3D( target, level, internalFormat, width, height, depth, border, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexParameterf( GLenum target, GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_TEXPARAMETERF );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexParameterf( target, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexParameterfv( GLenum target, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_TEXPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+ trWritef( params[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexParameterfv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexParameteri( GLenum target, GLenum pname, GLint param ) {
+ trWriteCMD( CMD_TEXPARAMETERI );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexParameteri( target, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexParameteriv( GLenum target, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_TEXPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+ trWritei( params[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexParameteriv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXSUBIMAGE1D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWriteSizei( width );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexSubImage1D( target, level, xoffset, width, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXSUBIMAGE2D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexSubImage2D( target, level, xoffset, yoffset, width, height, format, type, pixels );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trTexSubImage3DEXT( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXSUBIMAGE3DEXT );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWritei( zoffset );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteSizei( depth );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ /* Pixels isn't touched if target is GL_PROXY_TEXTURE_3D */
+ if( target != GL_PROXY_TEXTURE_3D ) {
+ pixelsize = trGetPixelSize( format, type );
+ trWritePixelArray( GL_FALSE, type, width, height, depth, pixelsize, pixels );
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexSubImage3DEXT( target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXSUBIMAGE3D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWritei( zoffset );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteSizei( depth );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexSubImage3D( target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTranslated( GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_TRANSLATED );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Translated( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTranslatef( GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_TRANSLATEF );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Translatef( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trUnlockArraysEXT( void ) {
+ trWriteCMD( CMD_UNLOCKARRAYSEXT );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->UnlockArraysEXT( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2d( GLdouble x, GLdouble y ) {
+ trWriteCMD( CMD_VERTEX2D );
+ trWrited( x );
+ trWrited( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2d( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2dv( const GLdouble *v ) {
+ trWriteCMD( CMD_VERTEX2DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2f( GLfloat x, GLfloat y ) {
+ trWriteCMD( CMD_VERTEX2F );
+ trWritef( x );
+ trWritef( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2f( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2fv( const GLfloat *v ) {
+ trWriteCMD( CMD_VERTEX2FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2i( GLint x, GLint y ) {
+ trWriteCMD( CMD_VERTEX2I );
+ trWritei( x );
+ trWritei( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2i( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2iv( const GLint *v ) {
+ trWriteCMD( CMD_VERTEX2IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2s( GLshort x, GLshort y ) {
+ trWriteCMD( CMD_VERTEX2S );
+ trWrites( x );
+ trWrites( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2s( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2sv( const GLshort *v ) {
+ trWriteCMD( CMD_VERTEX2SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3d( GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_VERTEX3D );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3d( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3dv( const GLdouble *v ) {
+ trWriteCMD( CMD_VERTEX3DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3f( GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_VERTEX3F );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3f( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3fv( const GLfloat *v ) {
+ trWriteCMD( CMD_VERTEX3FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3i( GLint x, GLint y, GLint z ) {
+ trWriteCMD( CMD_VERTEX3I );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3i( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3iv( const GLint *v ) {
+ trWriteCMD( CMD_VERTEX3IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3s( GLshort x, GLshort y, GLshort z ) {
+ trWriteCMD( CMD_VERTEX3S );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3s( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3sv( const GLshort *v ) {
+ trWriteCMD( CMD_VERTEX3SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) {
+ trWriteCMD( CMD_VERTEX4D );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+ trWrited( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4d( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4dv( const GLdouble *v ) {
+ trWriteCMD( CMD_VERTEX4DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) {
+ trWriteCMD( CMD_VERTEX4F );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+ trWritef( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4f( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4fv( const GLfloat *v ) {
+ trWriteCMD( CMD_VERTEX4FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4i( GLint x, GLint y, GLint z, GLint w ) {
+ trWriteCMD( CMD_VERTEX4I );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+ trWritei( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4i( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4iv( const GLint *v ) {
+ trWriteCMD( CMD_VERTEX4IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4s( GLshort x, GLshort y, GLshort z, GLshort w ) {
+ trWriteCMD( CMD_VERTEX4S );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+ trWrites( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4s( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4sv( const GLshort *v ) {
+ trWriteCMD( CMD_VERTEX4SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertexPointerEXT( GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_VERTEXPOINTEREXT );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->VertexPointerEXT( size, type, stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_VERTEXPOINTER );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->VertexPointer( size, type, stride, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trViewport( GLint x, GLint y, GLsizei width, GLsizei height ) {
+ trWriteCMD( CMD_VIEWPORT );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Viewport( x, y, width, height );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2dMESA( GLdouble x, GLdouble y ) {
+ trWriteCMD( CMD_WINDOWPOS2DMESA );
+ trWrited( x );
+ trWrited( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2dMESA( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2dvMESA( const GLdouble *p ) {
+ trWriteCMD( CMD_WINDOWPOS2DVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayd( 2, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2dvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2fMESA( GLfloat x, GLfloat y ) {
+ trWriteCMD( CMD_WINDOWPOS2FMESA );
+ trWritef( x );
+ trWritef( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2fMESA( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2fvMESA( const GLfloat *p ) {
+ trWriteCMD( CMD_WINDOWPOS2FVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayf( 2, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2fvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2iMESA( GLint x, GLint y ) {
+ trWriteCMD( CMD_WINDOWPOS2IMESA );
+ trWritei( x );
+ trWritei( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2iMESA( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2ivMESA( const GLint *p ) {
+ trWriteCMD( CMD_WINDOWPOS2IVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayi( 2, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2ivMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2sMESA( GLshort x, GLshort y ) {
+ trWriteCMD( CMD_WINDOWPOS2SMESA );
+ trWrites( x );
+ trWrites( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2sMESA( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2svMESA( const GLshort *p ) {
+ trWriteCMD( CMD_WINDOWPOS2SVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrays( 2, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2svMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3dMESA( GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_WINDOWPOS3DMESA );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3dMESA( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3dvMESA( const GLdouble *p ) {
+ trWriteCMD( CMD_WINDOWPOS3DVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayd( 3, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3dvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3fMESA( GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_WINDOWPOS3FMESA );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3fMESA( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3fvMESA( const GLfloat *p ) {
+ trWriteCMD( CMD_WINDOWPOS3FVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayf( 3, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3fvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3iMESA( GLint x, GLint y, GLint z ) {
+ trWriteCMD( CMD_WINDOWPOS3IMESA );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3iMESA( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3ivMESA( const GLint *p ) {
+ trWriteCMD( CMD_WINDOWPOS3IVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayi( 3, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3ivMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3sMESA( GLshort x, GLshort y, GLshort z ) {
+ trWriteCMD( CMD_WINDOWPOS3SMESA );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3sMESA( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3svMESA( const GLshort *p ) {
+ trWriteCMD( CMD_WINDOWPOS3SVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrays( 3, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3svMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4dMESA( GLdouble x, GLdouble y, GLdouble z, GLdouble w) {
+ trWriteCMD( CMD_WINDOWPOS4DMESA );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+ trWrited( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4dMESA( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4dvMESA( const GLdouble *p ) {
+ trWriteCMD( CMD_WINDOWPOS4DVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayd( 4, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4dvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) {
+ trWriteCMD( CMD_WINDOWPOS4FMESA );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+ trWritef( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4fMESA( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4fvMESA( const GLfloat *p ) {
+ trWriteCMD( CMD_WINDOWPOS4FVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayf( 4, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4fvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4iMESA( GLint x, GLint y, GLint z, GLint w ) {
+ trWriteCMD( CMD_WINDOWPOS4IMESA );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+ trWritei( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4iMESA( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4ivMESA( const GLint *p ) {
+ trWriteCMD( CMD_WINDOWPOS4IVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayi( 4, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4ivMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4sMESA( GLshort x, GLshort y, GLshort z, GLshort w ) {
+ trWriteCMD( CMD_WINDOWPOS4SMESA );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+ trWrites( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4sMESA( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4svMESA( const GLshort *p ) {
+ trWriteCMD( CMD_WINDOWPOS4SVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrays( 4, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4svMESA( p );
+ trError();
+ }
+}
+
+
+void trInitDispatch( struct _glapi_table* dispatch ) {
+
+ /* assert(dispatch); */
+ if (!dispatch)
+ return;
+
+ memset(dispatch,0,sizeof(struct _glapi_table));
+
+ dispatch->NewList = trNewList; /* 0 */
+ dispatch->EndList = trEndList; /* 1 */
+ dispatch->CallList = trCallList; /* 2 */
+ dispatch->CallLists = trCallLists; /* 3 */
+ dispatch->DeleteLists = trDeleteLists; /* 4 */
+ dispatch->GenLists = trGenLists; /* 5 */
+ dispatch->ListBase = trListBase; /* 6 */
+ dispatch->Begin = trBegin; /* 7 */
+ dispatch->Bitmap = trBitmap; /* 8 */
+ dispatch->Color3b = trColor3b; /* 9 */
+ dispatch->Color3bv = trColor3bv; /* 10 */
+ dispatch->Color3d = trColor3d; /* 11 */
+ dispatch->Color3dv = trColor3dv; /* 12 */
+ dispatch->Color3f = trColor3f; /* 13 */
+ dispatch->Color3fv = trColor3fv; /* 14 */
+ dispatch->Color3i = trColor3i; /* 15 */
+ dispatch->Color3iv = trColor3iv; /* 16 */
+ dispatch->Color3s = trColor3s; /* 17 */
+ dispatch->Color3sv = trColor3sv; /* 18 */
+ dispatch->Color3ub = trColor3ub; /* 19 */
+ dispatch->Color3ubv = trColor3ubv; /* 20 */
+ dispatch->Color3ui = trColor3ui; /* 21 */
+ dispatch->Color3uiv = trColor3uiv; /* 22 */
+ dispatch->Color3us = trColor3us; /* 23 */
+ dispatch->Color3usv = trColor3usv; /* 24 */
+ dispatch->Color4b = trColor4b; /* 25 */
+ dispatch->Color4bv = trColor4bv; /* 26 */
+ dispatch->Color4d = trColor4d; /* 27 */
+ dispatch->Color4dv = trColor4dv; /* 28 */
+ dispatch->Color4f = trColor4f; /* 29 */
+ dispatch->Color4fv = trColor4fv; /* 30 */
+ dispatch->Color4i = trColor4i; /* 31 */
+ dispatch->Color4iv = trColor4iv; /* 32 */
+ dispatch->Color4s = trColor4s; /* 33 */
+ dispatch->Color4sv = trColor4sv; /* 34 */
+ dispatch->Color4ub = trColor4ub; /* 35 */
+ dispatch->Color4ubv = trColor4ubv; /* 36 */
+ dispatch->Color4ui = trColor4ui; /* 37 */
+ dispatch->Color4uiv = trColor4uiv; /* 38 */
+ dispatch->Color4us = trColor4us; /* 39 */
+ dispatch->Color4usv = trColor4usv; /* 40 */
+ dispatch->EdgeFlag = trEdgeFlag; /* 41 */
+ dispatch->EdgeFlagv = trEdgeFlagv; /* 42 */
+ dispatch->End = trEnd; /* 43 */
+ dispatch->Indexd = trIndexd; /* 44 */
+ dispatch->Indexdv = trIndexdv; /* 45 */
+ dispatch->Indexf = trIndexf; /* 46 */
+ dispatch->Indexfv = trIndexfv; /* 47 */
+ dispatch->Indexi = trIndexi; /* 48 */
+ dispatch->Indexiv = trIndexiv; /* 49 */
+ dispatch->Indexs = trIndexs; /* 50 */
+ dispatch->Indexsv = trIndexsv; /* 51 */
+ dispatch->Normal3b = trNormal3b; /* 52 */
+ dispatch->Normal3bv = trNormal3bv; /* 53 */
+ dispatch->Normal3d = trNormal3d; /* 54 */
+ dispatch->Normal3dv = trNormal3dv; /* 55 */
+ dispatch->Normal3f = trNormal3f; /* 56 */
+ dispatch->Normal3fv = trNormal3fv; /* 57 */
+ dispatch->Normal3i = trNormal3i; /* 58 */
+ dispatch->Normal3iv = trNormal3iv; /* 59 */
+ dispatch->Normal3s = trNormal3s; /* 60 */
+ dispatch->Normal3sv = trNormal3sv; /* 61 */
+ dispatch->RasterPos2d = trRasterPos2d; /* 62 */
+ dispatch->RasterPos2dv = trRasterPos2dv; /* 63 */
+ dispatch->RasterPos2f = trRasterPos2f; /* 64 */
+ dispatch->RasterPos2fv = trRasterPos2fv; /* 65 */
+ dispatch->RasterPos2i = trRasterPos2i; /* 66 */
+ dispatch->RasterPos2iv = trRasterPos2iv; /* 67 */
+ dispatch->RasterPos2s = trRasterPos2s; /* 68 */
+ dispatch->RasterPos2sv = trRasterPos2sv; /* 69 */
+ dispatch->RasterPos3d = trRasterPos3d; /* 70 */
+ dispatch->RasterPos3dv = trRasterPos3dv; /* 71 */
+ dispatch->RasterPos3f = trRasterPos3f; /* 72 */
+ dispatch->RasterPos3fv = trRasterPos3fv; /* 73 */
+ dispatch->RasterPos3i = trRasterPos3i; /* 74 */
+ dispatch->RasterPos3iv = trRasterPos3iv; /* 75 */
+ dispatch->RasterPos3s = trRasterPos3s; /* 76 */
+ dispatch->RasterPos3sv = trRasterPos3sv; /* 77 */
+ dispatch->RasterPos4d = trRasterPos4d; /* 78 */
+ dispatch->RasterPos4dv = trRasterPos4dv; /* 79 */
+ dispatch->RasterPos4f = trRasterPos4f; /* 80 */
+ dispatch->RasterPos4fv = trRasterPos4fv; /* 81 */
+ dispatch->RasterPos4i = trRasterPos4i; /* 82 */
+ dispatch->RasterPos4iv = trRasterPos4iv; /* 83 */
+ dispatch->RasterPos4s = trRasterPos4s; /* 84 */
+ dispatch->RasterPos4sv = trRasterPos4sv; /* 85 */
+ dispatch->Rectd = trRectd; /* 86 */
+ dispatch->Rectdv = trRectdv; /* 87 */
+ dispatch->Rectf = trRectf; /* 88 */
+ dispatch->Rectfv = trRectfv; /* 89 */
+ dispatch->Recti = trRecti; /* 90 */
+ dispatch->Rectiv = trRectiv; /* 91 */
+ dispatch->Rects = trRects; /* 92 */
+ dispatch->Rectsv = trRectsv; /* 93 */
+ dispatch->TexCoord1d = trTexCoord1d; /* 94 */
+ dispatch->TexCoord1dv = trTexCoord1dv; /* 95 */
+ dispatch->TexCoord1f = trTexCoord1f; /* 96 */
+ dispatch->TexCoord1fv = trTexCoord1fv; /* 97 */
+ dispatch->TexCoord1i = trTexCoord1i; /* 98 */
+ dispatch->TexCoord1iv = trTexCoord1iv; /* 99 */
+ dispatch->TexCoord1s = trTexCoord1s; /* 100 */
+ dispatch->TexCoord1sv = trTexCoord1sv; /* 101 */
+ dispatch->TexCoord2d = trTexCoord2d; /* 102 */
+ dispatch->TexCoord2dv = trTexCoord2dv; /* 103 */
+ dispatch->TexCoord2f = trTexCoord2f; /* 104 */
+ dispatch->TexCoord2fv = trTexCoord2fv; /* 105 */
+ dispatch->TexCoord2i = trTexCoord2i; /* 106 */
+ dispatch->TexCoord2iv = trTexCoord2iv; /* 107 */
+ dispatch->TexCoord2s = trTexCoord2s; /* 108 */
+ dispatch->TexCoord2sv = trTexCoord2sv; /* 109 */
+ dispatch->TexCoord3d = trTexCoord3d; /* 110 */
+ dispatch->TexCoord3dv = trTexCoord3dv; /* 111 */
+ dispatch->TexCoord3f = trTexCoord3f; /* 112 */
+ dispatch->TexCoord3fv = trTexCoord3fv; /* 113 */
+ dispatch->TexCoord3i = trTexCoord3i; /* 114 */
+ dispatch->TexCoord3iv = trTexCoord3iv; /* 115 */
+ dispatch->TexCoord3s = trTexCoord3s; /* 116 */
+ dispatch->TexCoord3sv = trTexCoord3sv; /* 117 */
+ dispatch->TexCoord4d = trTexCoord4d; /* 118 */
+ dispatch->TexCoord4dv = trTexCoord4dv; /* 119 */
+ dispatch->TexCoord4f = trTexCoord4f; /* 120 */
+ dispatch->TexCoord4fv = trTexCoord4fv; /* 121 */
+ dispatch->TexCoord4i = trTexCoord4i; /* 122 */
+ dispatch->TexCoord4iv = trTexCoord4iv; /* 123 */
+ dispatch->TexCoord4s = trTexCoord4s; /* 124 */
+ dispatch->TexCoord4sv = trTexCoord4sv; /* 125 */
+ dispatch->Vertex2d = trVertex2d; /* 126 */
+ dispatch->Vertex2dv = trVertex2dv; /* 127 */
+ dispatch->Vertex2f = trVertex2f; /* 128 */
+ dispatch->Vertex2fv = trVertex2fv; /* 129 */
+ dispatch->Vertex2i = trVertex2i; /* 130 */
+ dispatch->Vertex2iv = trVertex2iv; /* 131 */
+ dispatch->Vertex2s = trVertex2s; /* 132 */
+ dispatch->Vertex2sv = trVertex2sv; /* 133 */
+ dispatch->Vertex3d = trVertex3d; /* 134 */
+ dispatch->Vertex3dv = trVertex3dv; /* 135 */
+ dispatch->Vertex3f = trVertex3f; /* 136 */
+ dispatch->Vertex3fv = trVertex3fv; /* 137 */
+ dispatch->Vertex3i = trVertex3i; /* 138 */
+ dispatch->Vertex3iv = trVertex3iv; /* 139 */
+ dispatch->Vertex3s = trVertex3s; /* 140 */
+ dispatch->Vertex3sv = trVertex3sv; /* 141 */
+ dispatch->Vertex4d = trVertex4d; /* 142 */
+ dispatch->Vertex4dv = trVertex4dv; /* 143 */
+ dispatch->Vertex4f = trVertex4f; /* 144 */
+ dispatch->Vertex4fv = trVertex4fv; /* 145 */
+ dispatch->Vertex4i = trVertex4i; /* 146 */
+ dispatch->Vertex4iv = trVertex4iv; /* 147 */
+ dispatch->Vertex4s = trVertex4s; /* 148 */
+ dispatch->Vertex4sv = trVertex4sv; /* 149 */
+ dispatch->ClipPlane = trClipPlane; /* 150 */
+ dispatch->ColorMaterial = trColorMaterial; /* 151 */
+ dispatch->CullFace = trCullFace; /* 152 */
+ dispatch->Fogf = trFogf; /* 153 */
+ dispatch->Fogfv = trFogfv; /* 154 */
+ dispatch->Fogi = trFogi; /* 155 */
+ dispatch->Fogiv = trFogiv; /* 156 */
+ dispatch->FrontFace = trFrontFace; /* 157 */
+ dispatch->Hint = trHint; /* 158 */
+ dispatch->Lightf = trLightf; /* 159 */
+ dispatch->Lightfv = trLightfv; /* 160 */
+ dispatch->Lighti = trLighti; /* 161 */
+ dispatch->Lightiv = trLightiv; /* 162 */
+ dispatch->LightModelf = trLightModelf; /* 163 */
+ dispatch->LightModelfv = trLightModelfv; /* 164 */
+ dispatch->LightModeli = trLightModeli; /* 165 */
+ dispatch->LightModeliv = trLightModeliv; /* 166 */
+ dispatch->LineStipple = trLineStipple; /* 167 */
+ dispatch->LineWidth = trLineWidth; /* 168 */
+ dispatch->Materialf = trMaterialf; /* 169 */
+ dispatch->Materialfv = trMaterialfv; /* 170 */
+ dispatch->Materiali = trMateriali; /* 171 */
+ dispatch->Materialiv = trMaterialiv; /* 172 */
+ dispatch->PointSize = trPointSize; /* 173 */
+ dispatch->PolygonMode = trPolygonMode; /* 174 */
+ dispatch->PolygonStipple = trPolygonStipple; /* 175 */
+ dispatch->Scissor = trScissor; /* 176 */
+ dispatch->ShadeModel = trShadeModel; /* 177 */
+ dispatch->TexParameterf = trTexParameterf; /* 178 */
+ dispatch->TexParameterfv = trTexParameterfv; /* 179 */
+ dispatch->TexParameteri = trTexParameteri; /* 180 */
+ dispatch->TexParameteriv = trTexParameteriv; /* 181 */
+ dispatch->TexImage1D = trTexImage1D; /* 182 */
+ dispatch->TexImage2D = trTexImage2D; /* 183 */
+ dispatch->TexEnvf = trTexEnvf; /* 184 */
+ dispatch->TexEnvfv = trTexEnvfv; /* 185 */
+ dispatch->TexEnvi = trTexEnvi; /* 186 */
+ dispatch->TexEnviv = trTexEnviv; /* 187 */
+ dispatch->TexGend = trTexGend; /* 188 */
+ dispatch->TexGendv = trTexGendv; /* 189 */
+ dispatch->TexGenf = trTexGenf; /* 190 */
+ dispatch->TexGenfv = trTexGenfv; /* 191 */
+ dispatch->TexGeni = trTexGeni; /* 192 */
+ dispatch->TexGeniv = trTexGeniv; /* 193 */
+ dispatch->FeedbackBuffer = trFeedbackBuffer; /* 194 */
+ dispatch->SelectBuffer = trSelectBuffer; /* 195 */
+ dispatch->RenderMode = trRenderMode; /* 196 */
+ dispatch->InitNames = trInitNames; /* 197 */
+ dispatch->LoadName = trLoadName; /* 198 */
+ dispatch->PassThrough = trPassThrough; /* 199 */
+ dispatch->PopName = trPopName; /* 200 */
+ dispatch->PushName = trPushName; /* 201 */
+ dispatch->DrawBuffer = trDrawBuffer; /* 202 */
+ dispatch->Clear = trClear; /* 203 */
+ dispatch->ClearAccum = trClearAccum; /* 204 */
+ dispatch->ClearIndex = trClearIndex; /* 205 */
+ dispatch->ClearColor = trClearColor; /* 206 */
+ dispatch->ClearStencil = trClearStencil; /* 207 */
+ dispatch->ClearDepth = trClearDepth; /* 208 */
+ dispatch->StencilMask = trStencilMask; /* 209 */
+ dispatch->ColorMask = trColorMask; /* 210 */
+ dispatch->DepthMask = trDepthMask; /* 211 */
+ dispatch->IndexMask = trIndexMask; /* 212 */
+ dispatch->Accum = trAccum; /* 213 */
+ dispatch->Disable = trDisable; /* 214 */
+ dispatch->Enable = trEnable; /* 215 */
+ dispatch->Finish = trFinish; /* 216 */
+ dispatch->Flush = trFlush; /* 217 */
+ dispatch->PopAttrib = trPopAttrib; /* 218 */
+ dispatch->PushAttrib = trPushAttrib; /* 219 */
+ dispatch->Map1d = trMap1d; /* 220 */
+ dispatch->Map1f = trMap1f; /* 221 */
+ dispatch->Map2d = trMap2d; /* 222 */
+ dispatch->Map2f = trMap2f; /* 223 */
+ dispatch->MapGrid1d = trMapGrid1d; /* 224 */
+ dispatch->MapGrid1f = trMapGrid1f; /* 225 */
+ dispatch->MapGrid2d = trMapGrid2d; /* 226 */
+ dispatch->MapGrid2f = trMapGrid2f; /* 227 */
+ dispatch->EvalCoord1d = trEvalCoord1d; /* 228 */
+ dispatch->EvalCoord1dv = trEvalCoord1dv; /* 229 */
+ dispatch->EvalCoord1f = trEvalCoord1f; /* 230 */
+ dispatch->EvalCoord1fv = trEvalCoord1fv; /* 231 */
+ dispatch->EvalCoord2d = trEvalCoord2d; /* 232 */
+ dispatch->EvalCoord2dv = trEvalCoord2dv; /* 233 */
+ dispatch->EvalCoord2f = trEvalCoord2f; /* 234 */
+ dispatch->EvalCoord2fv = trEvalCoord2fv; /* 235 */
+ dispatch->EvalMesh1 = trEvalMesh1; /* 236 */
+ dispatch->EvalPoint1 = trEvalPoint1; /* 237 */
+ dispatch->EvalMesh2 = trEvalMesh2; /* 238 */
+ dispatch->EvalPoint2 = trEvalPoint2; /* 239 */
+ dispatch->AlphaFunc = trAlphaFunc; /* 240 */
+ dispatch->BlendFunc = trBlendFunc; /* 241 */
+ dispatch->LogicOp = trLogicOp; /* 242 */
+ dispatch->StencilFunc = trStencilFunc; /* 243 */
+ dispatch->StencilOp = trStencilOp; /* 244 */
+ dispatch->DepthFunc = trDepthFunc; /* 245 */
+ dispatch->PixelZoom = trPixelZoom; /* 246 */
+ dispatch->PixelTransferf = trPixelTransferf; /* 247 */
+ dispatch->PixelTransferi = trPixelTransferi; /* 248 */
+ dispatch->PixelStoref = trPixelStoref; /* 249 */
+ dispatch->PixelStorei = trPixelStorei; /* 250 */
+ dispatch->PixelMapfv = trPixelMapfv; /* 251 */
+ dispatch->PixelMapuiv = trPixelMapuiv; /* 252 */
+ dispatch->PixelMapusv = trPixelMapusv; /* 253 */
+ dispatch->ReadBuffer = trReadBuffer; /* 254 */
+ dispatch->CopyPixels = trCopyPixels; /* 255 */
+ dispatch->ReadPixels = trReadPixels; /* 256 */
+ dispatch->DrawPixels = trDrawPixels; /* 257 */
+ dispatch->GetBooleanv = trGetBooleanv; /* 258 */
+ dispatch->GetClipPlane = trGetClipPlane; /* 259 */
+ dispatch->GetDoublev = trGetDoublev; /* 260 */
+ dispatch->GetError = trGetError; /* 261 */
+ dispatch->GetFloatv = trGetFloatv; /* 262 */
+ dispatch->GetIntegerv = trGetIntegerv; /* 263 */
+ dispatch->GetLightfv = trGetLightfv; /* 264 */
+ dispatch->GetLightiv = trGetLightiv; /* 265 */
+ dispatch->GetMapdv = trGetMapdv; /* 266 */
+ dispatch->GetMapfv = trGetMapfv; /* 267 */
+ dispatch->GetMapiv = trGetMapiv; /* 268 */
+ dispatch->GetMaterialfv = trGetMaterialfv; /* 269 */
+ dispatch->GetMaterialiv = trGetMaterialiv; /* 270 */
+ dispatch->GetPixelMapfv = trGetPixelMapfv; /* 271 */
+ dispatch->GetPixelMapuiv = trGetPixelMapuiv; /* 272 */
+ dispatch->GetPixelMapusv = trGetPixelMapusv; /* 273 */
+ dispatch->GetPolygonStipple = trGetPolygonStipple; /* 274 */
+ dispatch->GetString = trGetString; /* 275 */
+ dispatch->GetTexEnvfv = trGetTexEnvfv; /* 276 */
+ dispatch->GetTexEnviv = trGetTexEnviv; /* 277 */
+ dispatch->GetTexGendv = trGetTexGendv; /* 278 */
+ dispatch->GetTexGenfv = trGetTexGenfv; /* 279 */
+ dispatch->GetTexGeniv = trGetTexGeniv; /* 280 */
+ dispatch->GetTexImage = trGetTexImage; /* 281 */
+ dispatch->GetTexParameterfv = trGetTexParameterfv; /* 282 */
+ dispatch->GetTexParameteriv = trGetTexParameteriv; /* 283 */
+ dispatch->GetTexLevelParameterfv = trGetTexLevelParameterfv; /* 284 */
+ dispatch->GetTexLevelParameteriv = trGetTexLevelParameteriv; /* 285 */
+ dispatch->IsEnabled = trIsEnabled; /* 286 */
+ dispatch->IsList = trIsList; /* 287 */
+ dispatch->DepthRange = trDepthRange; /* 288 */
+ dispatch->Frustum = trFrustum; /* 289 */
+ dispatch->LoadIdentity = trLoadIdentity; /* 290 */
+ dispatch->LoadMatrixf = trLoadMatrixf; /* 291 */
+ dispatch->LoadMatrixd = trLoadMatrixd; /* 292 */
+ dispatch->MatrixMode = trMatrixMode; /* 293 */
+ dispatch->MultMatrixf = trMultMatrixf; /* 294 */
+ dispatch->MultMatrixd = trMultMatrixd; /* 295 */
+ dispatch->Ortho = trOrtho; /* 296 */
+ dispatch->PopMatrix = trPopMatrix; /* 297 */
+ dispatch->PushMatrix = trPushMatrix; /* 298 */
+ dispatch->Rotated = trRotated; /* 299 */
+ dispatch->Rotatef = trRotatef; /* 300 */
+ dispatch->Scaled = trScaled; /* 301 */
+ dispatch->Scalef = trScalef; /* 302 */
+ dispatch->Translated = trTranslated; /* 303 */
+ dispatch->Translatef = trTranslatef; /* 304 */
+ dispatch->Viewport = trViewport; /* 305 */
+ dispatch->ArrayElement = trArrayElement; /* 306 */
+ dispatch->BindTexture = trBindTexture; /* 307 */
+ dispatch->ColorPointer = trColorPointer; /* 308 */
+ dispatch->DisableClientState = trDisableClientState; /* 309 */
+ dispatch->DrawArrays = trDrawArrays; /* 310 */
+ dispatch->DrawElements = trDrawElements; /* 311 */
+ dispatch->EdgeFlagPointer = trEdgeFlagPointer; /* 312 */
+ dispatch->EnableClientState = trEnableClientState; /* 313 */
+ dispatch->IndexPointer = trIndexPointer; /* 314 */
+ dispatch->Indexub = trIndexub; /* 315 */
+ dispatch->Indexubv = trIndexubv; /* 316 */
+ dispatch->InterleavedArrays = trInterleavedArrays; /* 317 */
+ dispatch->NormalPointer = trNormalPointer; /* 318 */
+ dispatch->PolygonOffset = trPolygonOffset; /* 319 */
+ dispatch->TexCoordPointer = trTexCoordPointer; /* 320 */
+ dispatch->VertexPointer = trVertexPointer; /* 321 */
+ dispatch->AreTexturesResident = trAreTexturesResident; /* 322 */
+ dispatch->CopyTexImage1D = trCopyTexImage1D; /* 323 */
+ dispatch->CopyTexImage2D = trCopyTexImage2D; /* 324 */
+ dispatch->CopyTexSubImage1D = trCopyTexSubImage1D; /* 325 */
+ dispatch->CopyTexSubImage2D = trCopyTexSubImage2D; /* 326 */
+ dispatch->DeleteTextures = trDeleteTextures; /* 327 */
+ dispatch->GenTextures = trGenTextures; /* 328 */
+ dispatch->GetPointerv = trGetPointerv; /* 329 */
+ dispatch->IsTexture = trIsTexture; /* 330 */
+ dispatch->PrioritizeTextures = trPrioritizeTextures; /* 331 */
+ dispatch->TexSubImage1D = trTexSubImage1D; /* 332 */
+ dispatch->TexSubImage2D = trTexSubImage2D; /* 333 */
+ dispatch->PopClientAttrib = trPopClientAttrib; /* 334 */
+ dispatch->PushClientAttrib = trPushClientAttrib; /* 335 */
+#if 1
+ dispatch->BlendColor = trBlendColor; /* 336 */
+ dispatch->BlendEquation = trBlendEquation; /* 337 */
+ dispatch->DrawRangeElements = trDrawRangeElements; /* 338 */
+ dispatch->ColorTable = trColorTable; /* 339 */
+ dispatch->ColorTableParameterfv = trColorTableParameterfv; /* 340 */
+ dispatch->ColorTableParameteriv = trColorTableParameteriv; /* 341 */
+ dispatch->CopyColorTable = trCopyColorTable; /* 342 */
+ dispatch->GetColorTable = trGetColorTable; /* 343 */
+ dispatch->GetColorTableParameterfv = trGetColorTableParameterfv; /* 344 */
+ dispatch->GetColorTableParameteriv = trGetColorTableParameteriv; /* 345 */
+ dispatch->ColorSubTable = trColorSubTable; /* 346 */
+ dispatch->CopyColorSubTable = trCopyColorSubTable; /* 347 */
+ dispatch->ConvolutionFilter1D = trConvolutionFilter1D; /* 348 */
+ dispatch->ConvolutionFilter2D = trConvolutionFilter2D; /* 349 */
+ dispatch->ConvolutionParameterf = trConvolutionParameterf; /* 350 */
+ dispatch->ConvolutionParameterfv = trConvolutionParameterfv; /* 351 */
+ dispatch->ConvolutionParameteri = trConvolutionParameteri; /* 352 */
+ dispatch->ConvolutionParameteriv = trConvolutionParameteriv; /* 353 */
+ dispatch->CopyConvolutionFilter1D = trCopyConvolutionFilter1D; /* 354 */
+ dispatch->CopyConvolutionFilter2D = trCopyConvolutionFilter2D; /* 355 */
+ dispatch->GetConvolutionFilter = trGetConvolutionFilter; /* 356 */
+ dispatch->GetConvolutionParameterfv = trGetConvolutionParameterfv;/* 357 */
+ dispatch->GetConvolutionParameteriv = trGetConvolutionParameteriv;/* 358 */
+ dispatch->GetSeparableFilter = trGetSeparableFilter; /* 359 */
+ dispatch->SeparableFilter2D = trSeparableFilter2D; /* 360 */
+ dispatch->GetHistogram = trGetHistogram; /* 361 */
+ dispatch->GetHistogramParameterfv = trGetHistogramParameterfv; /* 362 */
+ dispatch->GetHistogramParameteriv = trGetHistogramParameteriv; /* 363 */
+ dispatch->GetMinmax = trGetMinmax; /* 364 */
+ dispatch->GetMinmaxParameterfv = trGetMinmaxParameterfv; /* 365 */
+ dispatch->GetMinmaxParameteriv = trGetMinmaxParameteriv; /* 366 */
+#endif
+#if 0
+ dispatch->Histogram = trHistogram /* 367 */
+ dispatch->Minmax = trMinmax /* 368 */
+ dispatch->ResetHistogram = trResetHistogram /* 369 */
+ dispatch->ResetMinmax = trResetMinmax /* 370 */
+ dispatch->TexImage3D = trTexImage3D /* 371 */
+ dispatch->TexSubImage3D = trTexSubImage3D /* 372 */
+ dispatch->CopyTexSubImage3D = trCopyTexSubImage3D /* 373 */
+ dispatch->ActiveTextureARB = trActiveTextureARB /* 374 */
+ dispatch->ClientActiveTextureARB = trClientActiveTextureARB /* 375 */
+ dispatch->MultiTexCoord1dARB = trMultiTexCoord1dARB /* 376 */
+ dispatch->MultiTexCoord1dvARB = trMultiTexCoord1dvARB /* 377 */
+ dispatch->MultiTexCoord1fARB = trMultiTexCoord1fARB /* 378 */
+ dispatch->MultiTexCoord1fvARB = trMultiTexCoord1fvARB /* 379 */
+ dispatch->MultiTexCoord1iARB = trMultiTexCoord1iARB /* 380 */
+ dispatch->MultiTexCoord1ivARB = trMultiTexCoord1ivARB /* 381 */
+ dispatch->MultiTexCoord1sARB = trMultiTexCoord1sARB /* 382 */
+ dispatch->MultiTexCoord1svARB = trMultiTexCoord1svARB /* 383 */
+ dispatch->MultiTexCoord2dARB = trMultiTexCoord2dARB /* 384 */
+ dispatch->MultiTexCoord2dvARB = trMultiTexCoord2dvARB /* 385 */
+ dispatch->MultiTexCoord2fARB = trMultiTexCoord2fARB /* 386 */
+ dispatch->MultiTexCoord2fvARB = trMultiTexCoord2fvARB /* 387 */
+ dispatch->MultiTexCoord2iARB = trMultiTexCoord2iARB /* 388 */
+ dispatch->MultiTexCoord2ivARB = trMultiTexCoord2ivARB /* 389 */
+ dispatch->MultiTexCoord2sARB = trMultiTexCoord2sARB /* 390 */
+ dispatch->MultiTexCoord2svARB = trMultiTexCoord2svARB /* 391 */
+ dispatch->MultiTexCoord3dARB = trMultiTexCoord3dARB /* 392 */
+ dispatch->MultiTexCoord3dvARB = trMultiTexCoord3dvARB /* 393 */
+ dispatch->MultiTexCoord3fARB = trMultiTexCoord3fARB /* 394 */
+ dispatch->MultiTexCoord3fvARB = trMultiTexCoord3fvARB /* 395 */
+ dispatch->MultiTexCoord3iARB = trMultiTexCoord3iARB /* 396 */
+ dispatch->MultiTexCoord3ivARB = trMultiTexCoord3ivARB /* 397 */
+ dispatch->MultiTexCoord3sARB = trMultiTexCoord3sARB /* 398 */
+ dispatch->MultiTexCoord3svARB = trMultiTexCoord3svARB /* 399 */
+ dispatch->MultiTexCoord4dARB = trMultiTexCoord4dARB /* 400 */
+ dispatch->MultiTexCoord4dvARB = trMultiTexCoord4dvARB /* 401 */
+ dispatch->MultiTexCoord4fARB = trMultiTexCoord4fARB /* 402 */
+ dispatch->MultiTexCoord4fvARB = trMultiTexCoord4fvARB /* 403 */
+ dispatch->MultiTexCoord4iARB = trMultiTexCoord4iARB /* 404 */
+ dispatch->MultiTexCoord4ivARB = trMultiTexCoord4ivARB /* 405 */
+ dispatch->MultiTexCoord4sARB = trMultiTexCoord4sARB /* 406 */
+ dispatch->MultiTexCoord4svARB = trMultiTexCoord4svARB /* 407 */
+ dispatch->LoadTransposeMatrixfARB = trLoadTransposeMatrixfARB /* 408 */
+ dispatch->LoadTransposeMatrixdARB = trLoadTransposeMatrixdARB /* 409 */
+ dispatch->MultTransposeMatrixfARB = trMultTransposeMatrixfARB /* 410 */
+ dispatch->MultTransposeMatrixdARB = trMultTransposeMatrixdARB /* 411 */
+ dispatch->SampleCoverageARB = trSampleCoverageARB /* 412 */
+ dispatch->SamplePassARB = trSamplePassARB /* 413 */
+ dispatch->PolygonOffsetEXT = trPolygonOffsetEXT /* 414 */
+ dispatch->GetTexFilterFuncSGIS = trGetTexFilterFuncSGIS /* 415 */
+ dispatch->TexFilterFuncSGIS = trTexFilterFuncSGIS /* 416 */
+ dispatch->GetHistogramEXT = trGetHistogramEXT /* 417 */
+ dispatch->GetHistogramParameterfvEXT = trGetHistogramParameterfvEXT /* 418 */
+ dispatch->GetHistogramParameterivEXT = trGetHistogramParameterivEXT /* 419 */
+ dispatch->GetMinmaxEXT = trGetMinmaxEXT /* 420 */
+ dispatch->GetMinmaxParameterfvEXT = trGetMinmaxParameterfvEXT /* 421 */
+ dispatch->GetMinmaxParameterivEXT = trGetMinmaxParameterivEXT /* 422 */
+ dispatch->GetConvolutionFilterEXT = trGetConvolutionFilterEXT /* 423 */
+ dispatch->GetConvolutionParameterfvEXT = trGetConvolutionParameterfvEXT /* 424 */
+ dispatch->GetConvolutionParameterivEXT = trGetConvolutionParameterivEXT /* 425 */
+ dispatch->GetSeparableFilterEXT = trGetSeparableFilterEXT /* 426 */
+ dispatch->GetColorTableSGI = trGetColorTableSGI /* 427 */
+ dispatch->GetColorTableParameterfvSGI = trGetColorTableParameterfvSGI /* 428 */
+ dispatch->GetColorTableParameterivSGI = trGetColorTableParameterivSGI /* 429 */
+ dispatch->PixelTexGenSGIX = trPixelTexGenSGIX /* 430 */
+ dispatch->PixelTexGenParameteriSGIS = trPixelTexGenParameteriSGIS /* 431 */
+ dispatch->PixelTexGenParameterivSGIS = trPixelTexGenParameterivSGIS /* 432 */
+ dispatch->PixelTexGenParameterfSGIS = trPixelTexGenParameterfSGIS /* 433 */
+ dispatch->PixelTexGenParameterfvSGIS = trPixelTexGenParameterfvSGIS /* 434 */
+ dispatch->GetPixelTexGenParameterivSGIS = trGetPixelTexGenParameterivSGIS /* 435 */
+ dispatch->GetPixelTexGenParameterfvSGIS = trGetPixelTexGenParameterfvSGIS /* 436 */
+ dispatch->TexImage4DSGIS = trTexImage4DSGIS /* 437 */
+ dispatch->TexSubImage4DSGIS = trTexSubImage4DSGIS /* 438 */
+ dispatch->AreTexturesResidentEXT = trAreTexturesResidentEXT /* 439 */
+ dispatch->GenTexturesEXT = trGenTexturesEXT /* 440 */
+ dispatch->IsTextureEXT = trIsTextureEXT /* 441 */
+ dispatch->DetailTexFuncSGIS = trDetailTexFuncSGIS /* 442 */
+ dispatch->GetDetailTexFuncSGIS = trGetDetailTexFuncSGIS /* 443 */
+ dispatch->SharpenTexFuncSGIS = trSharpenTexFuncSGIS /* 444 */
+ dispatch->GetSharpenTexFuncSGIS = trGetSharpenTexFuncSGIS /* 445 */
+ dispatch->SampleMaskSGIS = trSampleMaskSGIS /* 446 */
+ dispatch->SamplePatternSGIS = trSamplePatternSGIS /* 447 */
+ dispatch->ColorPointerEXT = trColorPointerEXT /* 448 */
+ dispatch->EdgeFlagPointerEXT = trEdgeFlagPointerEXT /* 449 */
+ dispatch->IndexPointerEXT = trIndexPointerEXT /* 450 */
+ dispatch->NormalPointerEXT = trNormalPointerEXT /* 451 */
+ dispatch->TexCoordPointerEXT = trTexCoordPointerEXT /* 452 */
+ dispatch->VertexPointerEXT = trVertexPointerEXT /* 453 */
+ dispatch->SpriteParameterfSGIX = trSpriteParameterfSGIX /* 454 */
+ dispatch->SpriteParameterfvSGIX = trSpriteParameterfvSGIX /* 455 */
+ dispatch->SpriteParameteriSGIX = trSpriteParameteriSGIX /* 456 */
+ dispatch->SpriteParameterivSGIX = trSpriteParameterivSGIX /* 457 */
+ dispatch->PointParameterfEXT = trPointParameterfEXT /* 458 */
+ dispatch->PointParameterfvEXT = trPointParameterfvEXT /* 459 */
+ dispatch->GetInstrumentsSGIX = trGetInstrumentsSGIX /* 460 */
+ dispatch->InstrumentsBufferSGIX = trInstrumentsBufferSGIX /* 461 */
+ dispatch->PollInstrumentsSGIX = trPollInstrumentsSGIX /* 462 */
+ dispatch->ReadInstrumentsSGIX = trReadInstrumentsSGIX /* 463 */
+ dispatch->StartInstrumentsSGIX = trStartInstrumentsSGIX /* 464 */
+ dispatch->StopInstrumentsSGIX = trStopInstrumentsSGIX /* 465 */
+ dispatch->FrameZoomSGIX = trFrameZoomSGIX /* 466 */
+ dispatch->TagSampleBufferSGIX = trTagSampleBufferSGIX /* 467 */
+ dispatch->ReferencePlaneSGIX = trReferencePlaneSGIX /* 468 */
+ dispatch->FlushRasterSGIX = trFlushRasterSGIX /* 469 */
+ dispatch->GetListParameterfvSGIX = trGetListParameterfvSGIX /* 470 */
+ dispatch->GetListParameterivSGIX = trGetListParameterivSGIX /* 471 */
+ dispatch->ListParameterfSGIX = trListParameterfSGIX /* 472 */
+ dispatch->ListParameterfvSGIX = trListParameterfvSGIX /* 473 */
+ dispatch->ListParameteriSGIX = trListParameteriSGIX /* 474 */
+ dispatch->ListParameterivSGIX = trListParameterivSGIX /* 475 */
+ dispatch->FragmentColorMaterialSGIX = trFragmentColorMaterialSGIX /* 476 */
+ dispatch->FragmentLightfSGIX = trFragmentLightfSGIX /* 477 */
+ dispatch->FragmentLightfvSGIX = trFragmentLightfvSGIX /* 478 */
+ dispatch->FragmentLightiSGIX = trFragmentLightiSGIX /* 479 */
+ dispatch->FragmentLightivSGIX = trFragmentLightivSGIX /* 480 */
+ dispatch->FragmentLightModelfSGIX = trFragmentLightModelfSGIX /* 481 */
+ dispatch->FragmentLightModelfvSGIX = trFragmentLightModelfvSGIX /* 482 */
+ dispatch->FragmentLightModeliSGIX = trFragmentLightModeliSGIX /* 483 */
+ dispatch->FragmentLightModelivSGIX = trFragmentLightModelivSGIX /* 484 */
+ dispatch->FragmentMaterialfSGIX = trFragmentMaterialfSGIX /* 485 */
+ dispatch->FragmentMaterialfvSGIX = trFragmentMaterialfvSGIX /* 486 */
+ dispatch->FragmentMaterialiSGIX = trFragmentMaterialiSGIX /* 487 */
+ dispatch->FragmentMaterialivSGIX = trFragmentMaterialivSGIX /* 488 */
+ dispatch->GetFragmentLightfvSGIX = trGetFragmentLightfvSGIX /* 489 */
+ dispatch->GetFragmentLightivSGIX = trGetFragmentLightivSGIX /* 490 */
+ dispatch->GetFragmentMaterialfvSGIX = trGetFragmentMaterialfvSGIX /* 491 */
+ dispatch->GetFragmentMaterialivSGIX = trGetFragmentMaterialivSGIX /* 492 */
+ dispatch->LightEnviSGIX = trLightEnviSGIX /* 493 */
+ dispatch->VertexWeightfEXT = trVertexWeightfEXT /* 494 */
+ dispatch->VertexWeightfvEXT = trVertexWeightfvEXT /* 495 */
+ dispatch->VertexWeightPointerEXT = trVertexWeightPointerEXT /* 496 */
+ dispatch->FlushVertexArrayRangeNV = trFlushVertexArrayRangeNV /* 497 */
+ dispatch->VertexArrayRangeNV = trVertexArrayRangeNV /* 498 */
+ dispatch->CombinerParameterfvNV = trCombinerParameterfvNV /* 499 */
+ dispatch->CombinerParameterfNV = trCombinerParameterfNV /* 500 */
+ dispatch->CombinerParameterivNV = trCombinerParameterivNV /* 501 */
+ dispatch->CombinerParameteriNV = trCombinerParameteriNV /* 502 */
+ dispatch->CombinerInputNV = trCombinerInputNV /* 503 */
+ dispatch->CombinerOutputNV = trCombinerOutputNV /* 504 */
+ dispatch->FinalCombinerInputNV = trFinalCombinerInputNV /* 505 */
+ dispatch->GetCombinerInputParameterfvNV = trGetCombinerInputParameterfvNV /* 506 */
+ dispatch->GetCombinerInputParameterivNV = trGetCombinerInputParameterivNV /* 507 */
+ dispatch->GetCombinerOutputParameterfvNV = trGetCombinerOutputParameterfvNV /* 508 */
+ dispatch->GetCombinerOutputParameterivNV = trGetCombinerOutputParameterivNV /* 509 */
+ dispatch->GetFinalCombinerInputParameterfvNV = trGetFinalCombinerInputParameterfvNV /* 510 */
+ dispatch->GetFinalCombinerInputParameterivNV = trGetFinalCombinerInputParameterivNV /* 511 */
+ dispatch->ResizeBuffersMESA = trResizeBuffersMESA /* 512 */
+ dispatch->WindowPos2dMESA = trWindowPos2dMESA /* 513 */
+ dispatch->WindowPos2dvMESA = trWindowPos2dvMESA /* 514 */
+ dispatch->WindowPos2fMESA = trWindowPos2fMESA /* 515 */
+ dispatch->WindowPos2fvMESA = trWindowPos2fvMESA /* 516 */
+ dispatch->WindowPos2iMESA = trWindowPos2iMESA /* 517 */
+ dispatch->WindowPos2ivMESA = trWindowPos2ivMESA /* 518 */
+ dispatch->WindowPos2sMESA = trWindowPos2sMESA /* 519 */
+ dispatch->WindowPos2svMESA = trWindowPos2svMESA /* 520 */
+ dispatch->WindowPos3dMESA = trWindowPos3dMESA /* 521 */
+ dispatch->WindowPos3dvMESA = trWindowPos3dvMESA /* 522 */
+ dispatch->WindowPos3fMESA = trWindowPos3fMESA /* 523 */
+ dispatch->WindowPos3fvMESA = trWindowPos3fvMESA /* 524 */
+ dispatch->WindowPos3iMESA = trWindowPos3iMESA /* 525 */
+ dispatch->WindowPos3ivMESA = trWindowPos3ivMESA /* 526 */
+ dispatch->WindowPos3sMESA = trWindowPos3sMESA /* 527 */
+ dispatch->WindowPos3svMESA = trWindowPos3svMESA /* 528 */
+ dispatch->WindowPos4dMESA = trWindowPos4dMESA /* 529 */
+ dispatch->WindowPos4dvMESA = trWindowPos4dvMESA /* 530 */
+ dispatch->WindowPos4fMESA = trWindowPos4fMESA /* 531 */
+ dispatch->WindowPos4fvMESA = trWindowPos4fvMESA /* 532 */
+ dispatch->WindowPos4iMESA = trWindowPos4iMESA /* 533 */
+ dispatch->WindowPos4ivMESA = trWindowPos4ivMESA /* 534 */
+ dispatch->WindowPos4sMESA = trWindowPos4sMESA /* 535 */
+ dispatch->WindowPos4svMESA = trWindowPos4svMESA /* 536 */
+ dispatch->BlendFuncSeparateEXT = trBlendFuncSeparateEXT /* 537 */
+ dispatch->IndexMaterialEXT = trIndexMaterialEXT /* 538 */
+ dispatch->IndexFuncEXT = trIndexFuncEXT /* 539 */
+ dispatch->LockArraysEXT = trLockArraysEXT /* 540 */
+ dispatch->UnlockArraysEXT = trUnlockArraysEXT /* 541 */
+ dispatch->CullParameterdvEXT = trCullParameterdvEXT /* 542 */
+ dispatch->CullParameterfvEXT = trCullParameterfvEXT /* 543 */
+ dispatch->HintPGI = trHintPGI /* 544 */
+ dispatch->FogCoordfEXT = trFogCoordfEXT /* 545 */
+ dispatch->FogCoordfvEXT = trFogCoordfvEXT /* 546 */
+ dispatch->FogCoorddEXT = trFogCoorddEXT /* 547 */
+ dispatch->FogCoorddvEXT = trFogCoorddvEXT /* 548 */
+ dispatch->FogCoordPointerEXT = trFogCoordPointerEXT /* 549 */
+ dispatch->GetColorTableEXT = trGetColorTableEXT /* 550 */
+ dispatch->GetColorTableParameterivEXT = trGetColorTableParameterivEXT /* 551 */
+ dispatch->GetColorTableParameterfvEXT = trGetColorTableParameterfvEXT /* 552 */
+#endif
+}
+
+
+#else
+extern void tr_wrapper_dummy_func(void);
+void tr_wrapper_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_wrapper.h b/xc/extras/Mesa/src/Trace/tr_wrapper.h
new file mode 100644
index 000000000..f65e99c82
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_wrapper.h
@@ -0,0 +1,8 @@
+#ifndef TR_WRAPPER_H
+#define TR_WRAPPER_H
+
+#include "glapitable.h"
+
+void trInitDispatch( struct _glapi_table* dispatch );
+
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_write.c b/xc/extras/Mesa/src/Trace/tr_write.c
new file mode 100644
index 000000000..37acb24af
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_write.c
@@ -0,0 +1,238 @@
+#ifdef MESA_TRACE
+
+#include "glheader.h"
+#include <time.h> /* XXX move into glheader.h */
+#include "tr_write.h"
+#include "tr_context.h"
+
+#define PATH_MAX 4098
+
+
+static void trWriteFile( const void * buf, GLint recsize, GLint numrecs, const char * funcname ) {
+ GLint recswritten;
+
+ if( !(trCtx()->trDoPrint) ) {
+ return;
+ }
+
+ recswritten = fwrite( buf, recsize, numrecs, trCtx()->logFP );
+ if( recswritten != numrecs ) {
+ fprintf( stderr, "Error writing to file in %s\n", funcname );
+ fprintf( stderr, "Perhaps the disk is full?\n" );
+ /* Should we abort ? */
+ trCtx()->trDoPrint = GL_FALSE;
+ }
+}
+
+
+static void (*trWrite)( const void *, GLint, GLint, const char *) = trWriteFile;
+
+
+void trWriteCMD( GLint cmd ) {
+ trWrite( (void*)&cmd, sizeof(GLint), 1, "trWriteCMD" );
+}
+
+void trWriteb( GLbyte b ) {
+ trWrite( (void*)&b, sizeof(GLbyte), 1, "trWriteb" );
+}
+
+void trWrited( GLdouble d ) {
+ trWrite( (void*)&d, sizeof(GLdouble), 1, "trWrited" );
+}
+
+void trWriteClampd( GLclampd cd ) {
+ trWrite( (void*)&cd, sizeof(GLclampd), 1, "trWriteClampd" );
+}
+
+void trWritef( GLfloat f ) {
+ trWrite( (void*)&f, sizeof(GLfloat), 1, "trWritef" );
+}
+
+void trWriteClampf( GLclampf cf ) {
+ trWrite( (void*)&cf, sizeof(GLclampf), 1, "trWriteClampf" );
+}
+
+void trWritei( GLint i ) {
+ trWrite( (void*)&i, sizeof(GLint), 1, "trWritei" );
+}
+
+void trWrites( GLshort s ) {
+ trWrite( (void*)&s, sizeof(GLshort), 1, "trWrites" );
+}
+
+void trWriteub( GLubyte ub ) {
+ trWrite( (void*)&ub, sizeof(GLubyte), 1, "trWriteub" );
+}
+
+void trWriteui( GLuint ui ) {
+ trWrite( (void*)&ui, sizeof(GLuint), 1, "trWriteui" );
+}
+
+void trWriteus( GLushort us ) {
+ trWrite( (void*)&us, sizeof(GLushort), 1, "trWriteus" );
+}
+
+void trWriteBool( GLboolean b ) {
+ trWrite( (void*)&b, sizeof(GLboolean), 1, "trWriteBool" );
+}
+
+void trWriteBits( GLbitfield bf ) {
+ trWrite( (void*)&bf, sizeof(GLbitfield), 1, "trWriteBits" );
+}
+
+void trWriteEnum( GLenum en ) {
+ trWrite( (void*)&en, sizeof(GLenum), 1, "trWriteEnum" );
+}
+
+void trWriteSizei( GLsizei si ) {
+ trWrite( (void*)&si, sizeof(GLsizei), 1, "trWriteSizei" );
+}
+
+
+void trWritePointer( const void * p ) {
+ trWrite( (void*)&p, sizeof(void *), 1, "trWritePointer" );
+}
+
+
+void trWriteArrayb( GLsizei n, const GLbyte * b ) {
+ trWrite( (void *)b, sizeof(GLbyte), n, "trWriteArrayb" );
+}
+
+
+void trWriteArrayub( GLsizei n, const GLubyte * ub ) {
+ trWrite( (void *)ub, sizeof(GLubyte), n, "trWriteArrayub" );
+}
+
+
+void trWriteArrays( GLsizei n, const GLshort * s ) {
+ trWrite( (void *)s, sizeof(GLshort), n, "trWriteArrays" );
+}
+
+
+void trWriteArrayus( GLsizei n, const GLushort * us ) {
+ trWrite( (void *)us, sizeof(GLushort), n, "trWriteArrayus" );
+}
+
+
+void trWriteArrayi( GLsizei n, const GLint * i ) {
+ trWrite( (void *)i, sizeof(GLint), n, "trWriteArrayi" );
+}
+
+
+void trWriteArrayui( GLsizei n, const GLuint * ui ) {
+ trWrite( (void *)ui, sizeof(GLuint), n, "trWriteArrayui" );
+}
+
+
+void trWriteArrayBool( GLsizei n, const GLboolean * b ) {
+ trWrite( (void *)b, sizeof(GLboolean), n, "trWriteArrayBool" );
+}
+
+
+void trWriteArrayf( GLsizei n, const GLfloat * f ) {
+ trWrite( (void *)f, sizeof(GLfloat), n, "trWriteArrayf" );
+}
+
+
+void trWriteArrayd( GLsizei n, const GLdouble * d ) {
+ trWrite( (void *)d, sizeof(GLdouble), n, "trWriteArrayd" );
+}
+
+
+void trWriteString( const char * str ) {
+ GLuint length = strlen(str);
+ trWriteui( length );
+ trWrite( (void *)str, sizeof(GLubyte), length, "trWriteString" );
+}
+
+
+void trFileFlush( void ) {
+ fflush( trCtx()->logFP );
+}
+
+
+static void trWriteTypeInformation( void ) {
+
+ trWriteub( sizeof(GLint) );
+ trWriteub( sizeof(GLshort) );
+ trWriteub( sizeof(GLfloat) );
+ trWriteub( sizeof(GLdouble) );
+ trWriteub( sizeof(GLboolean) );
+ trWriteub( sizeof(GLenum) );
+ trWriteub( sizeof(GLsizei) );
+ trWriteub( sizeof(GLbitfield) );
+ trWriteub( sizeof(GLclampf) );
+ trWriteub( sizeof(GLclampd) );
+ trWriteub( sizeof(GLvoid *) );
+
+}
+
+
+static void trWriteHeader( void ) {
+ struct tm *newtime;
+ time_t aclock;
+ char timestring[256];
+
+ trWriteString( "0.0.1" );
+ trWriteString( trCtx()->traceName );
+ trWritei( trCtx()->framecounter );
+
+ /* Always print this! */
+ time( &aclock );
+ newtime = localtime( &aclock );
+ asctime( newtime );
+ snprintf( timestring, sizeof(timestring), "Time: %s", asctime( newtime ) );
+ trWriteString( timestring );
+}
+
+
+static void trWriteGLState( void ) {
+ /*
+ * This function will write all the queryable GL state at
+ * the time the trace is started.
+ */
+}
+
+
+void trOpenLogFile( void ) {
+ GLint numchars;
+ char buffer[PATH_MAX];
+
+ numchars = snprintf( buffer, sizeof(buffer), "%s-gl.log.%d",
+ trCtx()->traceName, trCtx()->framecounter );
+ if( numchars > -1 && numchars < sizeof(buffer) ) {
+ trCtx()->logFP = fopen( buffer, "wb" );
+
+ /* This information is needed before we can extract _anything_ */
+ trWriteTypeInformation();
+ trWriteHeader();
+ trWriteGLState();
+
+ (trCtx()->framecounter)++;
+ } else if( numchars > -1 ) {
+ fprintf( stderr, "buffer needs to be %d bytes long for logging to work.\n",
+ numchars + 1 );
+ exit( -1 );
+ } else {
+ fprintf( stderr, "buffer needs to grow for logging to work. Try %d bytes.\n",
+ sizeof(buffer) * 2 );
+ exit( -1 );
+ }
+}
+
+
+void trCloseLogFile( void ) {
+ if( trCtx()->logFP != NULL ) {
+ fclose(trCtx()->logFP);
+ }
+
+ trCtx()->logFP = NULL;
+}
+
+
+#else
+extern void tr_write_dummy_func(void);
+void tr_write_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_write.h b/xc/extras/Mesa/src/Trace/tr_write.h
new file mode 100644
index 000000000..ed3c25a24
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_write.h
@@ -0,0 +1,68 @@
+/* This may look like C code, but it is really -*- C++ -*- */
+/* $Id: tr_write.h,v 1.3.2.1 2003/03/30 04:50:32 ldelgass Exp $ */
+
+/*
+ * DebugGL
+ * Version: 1.0
+ *
+ * Copyright (C) 1999-2000 Loki Entertainment
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef __TR_WRITE_H
+#define __TR_WRITE_H
+
+#include "GL/gl.h"
+
+void trWriteCMD( GLint opcode );
+void trWriteb( GLbyte byte );
+void trWriteub( GLubyte ub );
+void trWrited( GLdouble d );
+void trWritef( GLfloat f );
+void trWritei( GLint i );
+void trWriteui( GLuint ui );
+void trWrites( GLshort s );
+void trWriteus( GLushort us );
+void trWriteBool( GLboolean b );
+void trWriteBits( GLbitfield bf );
+void trWriteEnum( GLenum en );
+void trWriteSizei( GLsizei si );
+void trWriteClampf( GLclampf cf );
+void trWriteClampd( GLclampd cd );
+void trWritePointer( const void * p );
+
+void trWriteArrayb( GLsizei n, const GLbyte * b );
+void trWriteArrayub( GLsizei n, const GLubyte * ub );
+void trWriteArrays( GLsizei n, const GLshort * s );
+void trWriteArrayus( GLsizei n, const GLushort * us );
+void trWriteArrayi( GLsizei n, const GLint * i );
+void trWriteArrayui( GLsizei n, const GLuint * ui );
+void trWriteArrayBool( GLsizei n, const GLboolean * b );
+void trWriteArrayf( GLsizei n, const GLfloat * f );
+void trWriteArrayd( GLsizei n, const GLdouble * d );
+
+void trWriteString( const char * str );
+
+void trFileFlush( void );
+
+void trOpenLogFile( void );
+void trCloseLogFile( void );
+
+#endif