1 #ifndef _GLX_glxproto_h_
2 #define _GLX_glxproto_h_
3 
4 /*
5  * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
6  * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the "Software"),
10  * to deal in the Software without restriction, including without limitation
11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14  *
15  * The above copyright notice including the dates of first publication and
16  * either this permission notice or a reference to
17  * http://oss.sgi.com/projects/FreeB/
18  * shall be included in all copies or substantial portions of the Software.
19  *
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23  * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
25  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26  * SOFTWARE.
27  *
28  * Except as contained in this notice, the name of Silicon Graphics, Inc.
29  * shall not be used in advertising or otherwise to promote the sale, use or
30  * other dealings in this Software without prior written authorization from
31  * Silicon Graphics, Inc.
32  */
33 
34 #include <GL/glxmd.h>
35 
36 /*****************************************************************************/
37 
38 /*
39 ** Errors.
40 */
41 #define GLXBadContext		0
42 #define GLXBadContextState	1
43 #define GLXBadDrawable		2
44 #define GLXBadPixmap		3
45 #define GLXBadContextTag	4
46 #define GLXBadCurrentWindow	5
47 #define GLXBadRenderRequest	6
48 #define GLXBadLargeRequest	7
49 #define GLXUnsupportedPrivateRequest	8
50 #define GLXBadFBConfig		9
51 #define GLXBadPbuffer		10
52 #define GLXBadCurrentDrawable	11
53 #define GLXBadWindow		12
54 #define GLXBadProfileARB        13
55 
56 #define __GLX_NUMBER_ERRORS 14
57 
58 /*
59 ** Events.
60 ** __GLX_NUMBER_EVENTS is set to 17 to account for the BufferClobberSGIX
61 **  event - this helps initialization if the server supports the pbuffer
62 **  extension and the client doesn't.
63 */
64 #define GLX_PbufferClobber	0
65 #define GLX_BufferSwapComplete	1
66 
67 #define __GLX_NUMBER_EVENTS 17
68 
69 #define GLX_EXTENSION_NAME	"GLX"
70 #define GLX_EXTENSION_ALIAS	"SGI-GLX"
71 
72 #define __GLX_MAX_CONTEXT_PROPS 3
73 
74 #ifndef GLX_VENDOR
75 #define GLX_VENDOR		0x1
76 #endif
77 #ifndef GLX_VERSION
78 #define GLX_VERSION		0x2
79 #endif
80 #ifndef GLX_EXTENSIONS
81 #define GLX_EXTENSIONS		0x3
82 #endif
83 
84 /*****************************************************************************/
85 
86 /*
87 ** For the structure definitions in this file, we must redefine these types in
88 ** terms of Xmd.h types, which may include bitfields.  All of these are
89 ** undef'ed at the end of this file, restoring the definitions in glx.h.
90 */
91 #define GLXContextID CARD32
92 #define GLXPixmap CARD32
93 #define GLXDrawable CARD32
94 #define GLXPbuffer CARD32
95 #define GLXWindow CARD32
96 #define GLXFBConfigID CARD32
97 #define GLXFBConfigIDSGIX CARD32
98 #define GLXPbufferSGIX CARD32
99 
100 /*
101 ** ContextTag is not exposed to the API.
102 */
103 typedef CARD32 GLXContextTag;
104 
105 /*****************************************************************************/
106 
107 /*
108 ** Sizes of basic wire types.
109 */
110 #define __GLX_SIZE_INT8		1
111 #define __GLX_SIZE_INT16	2
112 #define __GLX_SIZE_INT32	4
113 #define __GLX_SIZE_CARD8	1
114 #define __GLX_SIZE_CARD16	2
115 #define __GLX_SIZE_CARD32	4
116 #define __GLX_SIZE_FLOAT32	4
117 #define __GLX_SIZE_FLOAT64	8
118 
119 /*****************************************************************************/
120 
121 /* Requests */
122 
123 /*
124 ** Render command request.  A bunch of rendering commands are packed into
125 ** a single X extension request.
126 */
127 typedef struct GLXRender {
128     CARD8	reqType;
129     CARD8	glxCode;
130     CARD16	length;
131     GLXContextTag contextTag;
132 } xGLXRenderReq;
133 #define sz_xGLXRenderReq 8
134 
135 /*
136 ** The maximum size that a GLXRender command can be.  The value must fit
137 ** in 16 bits and should be a multiple of 4.
138 */
139 #define __GLX_MAX_RENDER_CMD_SIZE	64000
140 
141 /*
142 ** Large render command request.  A single large rendering command
143 ** is output in multiple X extension requests.	The first packet
144 ** contains an opcode dependent header (see below) that describes
145 ** the data that follows.
146 */
147 typedef struct GLXRenderLarge {
148     CARD8	reqType;
149     CARD8	glxCode;
150     CARD16	length;
151     GLXContextTag contextTag;
152     CARD16	requestNumber;
153     CARD16	requestTotal;
154     CARD32	dataBytes;
155 } xGLXRenderLargeReq;
156 #define sz_xGLXRenderLargeReq 16
157 
158 /*
159 ** GLX single request.	Commands that go over as single GLX protocol
160 ** requests use this structure.  The glxCode will be one of the X_GLsop
161 ** opcodes.
162 */
163 typedef struct GLXSingle {
164     CARD8	reqType;
165     CARD8	glxCode;
166     CARD16	length;
167     GLXContextTag contextTag;
168 } xGLXSingleReq;
169 #define sz_xGLXSingleReq 8
170 
171 /*
172 ** glXQueryVersion request
173 */
174 typedef struct GLXQueryVersion {
175     CARD8	reqType;
176     CARD8	glxCode;
177     CARD16	length;
178     CARD32	majorVersion;
179     CARD32	minorVersion;
180 } xGLXQueryVersionReq;
181 #define sz_xGLXQueryVersionReq 12
182 
183 /*
184 ** glXIsDirect request
185 */
186 typedef struct GLXIsDirect {
187     CARD8	reqType;
188     CARD8	glxCode;
189     CARD16	length;
190     GLXContextID context;
191 } xGLXIsDirectReq;
192 #define sz_xGLXIsDirectReq 8
193 
194 /*
195 ** glXCreateContext request
196 */
197 typedef struct GLXCreateContext {
198     CARD8	reqType;
199     CARD8	glxCode;
200     CARD16	length;
201     GLXContextID context;
202     CARD32	visual;
203     CARD32	screen;
204     GLXContextID shareList;
205     BOOL	isDirect;
206     CARD8	reserved1;
207     CARD16	reserved2;
208 } xGLXCreateContextReq;
209 #define sz_xGLXCreateContextReq 24
210 
211 /*
212 ** glXDestroyContext request
213 */
214 typedef struct GLXDestroyContext {
215     CARD8	reqType;
216     CARD8	glxCode;
217     CARD16	length;
218     GLXContextID context;
219 } xGLXDestroyContextReq;
220 #define sz_xGLXDestroyContextReq 8
221 
222 /*
223 ** glXMakeCurrent request
224 */
225 typedef struct GLXMakeCurrent {
226     CARD8	reqType;
227     CARD8	glxCode;
228     CARD16	length;
229     GLXDrawable drawable;
230     GLXContextID context;
231     GLXContextTag oldContextTag;
232 } xGLXMakeCurrentReq;
233 #define sz_xGLXMakeCurrentReq 16
234 
235 /*
236 ** glXWaitGL request
237 */
238 typedef struct GLXWaitGL {
239     CARD8	reqType;
240     CARD8	glxCode;
241     CARD16	length;
242     GLXContextTag contextTag;
243 } xGLXWaitGLReq;
244 #define sz_xGLXWaitGLReq 8
245 
246 /*
247 ** glXWaitX request
248 */
249 typedef struct GLXWaitX {
250     CARD8	reqType;
251     CARD8	glxCode;
252     CARD16	length;
253     GLXContextTag contextTag;
254 } xGLXWaitXReq;
255 #define sz_xGLXWaitXReq 8
256 
257 /*
258 ** glXCopyContext request
259 */
260 typedef struct GLXCopyContext {
261     CARD8	reqType;
262     CARD8	glxCode;
263     CARD16	length;
264     GLXContextID source;
265     GLXContextID dest;
266     CARD32	mask;
267     GLXContextTag contextTag;
268 } xGLXCopyContextReq;
269 #define sz_xGLXCopyContextReq 20
270 
271 /*
272 ** glXSwapBuffers request
273 */
274 typedef struct GLXSwapBuffers {
275     CARD8	reqType;
276     CARD8	glxCode;
277     CARD16	length;
278     GLXContextTag contextTag;
279     GLXDrawable drawable;
280 } xGLXSwapBuffersReq;
281 #define sz_xGLXSwapBuffersReq 12
282 
283 /*
284 ** glXUseXFont request
285 */
286 typedef struct GLXUseXFont {
287     CARD8	reqType;
288     CARD8	glxCode;
289     CARD16	length;
290     GLXContextTag contextTag;
291     CARD32	font;
292     CARD32	first;
293     CARD32	count;
294     CARD32	listBase;
295 } xGLXUseXFontReq;
296 #define sz_xGLXUseXFontReq 24
297 
298 /*
299 ** glXCreateGLXPixmap request
300 */
301 typedef struct GLXCreateGLXPixmap {
302     CARD8	reqType;
303     CARD8	glxCode;
304     CARD16	length;
305     CARD32	screen;
306     CARD32	visual;
307     CARD32	pixmap;
308     GLXPixmap	glxpixmap;
309 } xGLXCreateGLXPixmapReq;
310 #define sz_xGLXCreateGLXPixmapReq 20
311 
312 /*
313 ** glXDestroyGLXPixmap request
314 */
315 typedef struct GLXDestroyGLXPixmap {
316     CARD8	reqType;
317     CARD8	glxCode;
318     CARD16	length;
319     GLXPixmap	glxpixmap;
320 } xGLXDestroyGLXPixmapReq;
321 #define sz_xGLXDestroyGLXPixmapReq 8
322 
323 /*
324 ** glXGetVisualConfigs request
325 */
326 typedef struct GLXGetVisualConfigs {
327     CARD8	reqType;
328     CARD8	glxCode;
329     CARD16	length;
330     CARD32	screen;
331 } xGLXGetVisualConfigsReq;
332 #define sz_xGLXGetVisualConfigsReq 8
333 
334 /*
335 ** glXVendorPrivate request.
336 */
337 typedef struct GLXVendorPrivate {
338     CARD8	reqType;
339     CARD8	glxCode;
340     CARD16	length;
341     CARD32	vendorCode;		/* vendor-specific opcode */
342     GLXContextTag contextTag;
343     /*
344     ** More data may follow; this is just the header.
345     */
346 } xGLXVendorPrivateReq;
347 #define sz_xGLXVendorPrivateReq 12
348 
349 /*
350 ** glXVendorPrivateWithReply request
351 */
352 typedef struct GLXVendorPrivateWithReply {
353     CARD8	reqType;
354     CARD8	glxCode;
355     CARD16	length;
356     CARD32	vendorCode;		/* vendor-specific opcode */
357     GLXContextTag contextTag;
358     /*
359     ** More data may follow; this is just the header.
360     */
361 } xGLXVendorPrivateWithReplyReq;
362 #define sz_xGLXVendorPrivateWithReplyReq 12
363 
364 /*
365 ** glXQueryExtensionsString request
366 */
367 typedef struct GLXQueryExtensionsString {
368     CARD8	reqType;
369     CARD8	glxCode;
370     CARD16	length;
371     CARD32	screen;
372 } xGLXQueryExtensionsStringReq;
373 #define sz_xGLXQueryExtensionsStringReq 8
374 
375 /*
376 ** glXQueryServerString request
377 */
378 typedef struct GLXQueryServerString {
379     CARD8	reqType;
380     CARD8	glxCode;
381     CARD16	length;
382     CARD32	screen;
383     CARD32	name;
384 } xGLXQueryServerStringReq;
385 #define sz_xGLXQueryServerStringReq 12
386 
387 /*
388 ** glXClientInfo request
389 */
390 typedef struct GLXClientInfo {
391     CARD8	reqType;
392     CARD8	glxCode;
393     CARD16	length;
394     CARD32	major;
395     CARD32	minor;
396     CARD32	numbytes;
397 } xGLXClientInfoReq;
398 #define sz_xGLXClientInfoReq 16
399 
400 /*** Start of GLX 1.3 requests */
401 
402 /*
403 ** glXGetFBConfigs request
404 */
405 typedef struct GLXGetFBConfigs {
406     CARD8	reqType;
407     CARD8	glxCode;
408     CARD16	length;
409     CARD32	screen;
410 } xGLXGetFBConfigsReq;
411 #define sz_xGLXGetFBConfigsReq 8
412 
413 /*
414 ** glXCreatePixmap request
415 */
416 typedef struct GLXCreatePixmap {
417     CARD8	reqType;
418     CARD8	glxCode;
419     CARD16	length;
420     CARD32	screen;
421     GLXFBConfigID fbconfig;
422     CARD32	pixmap;
423     GLXPixmap	glxpixmap;
424     CARD32	numAttribs;
425     /* followed by attribute list */
426 } xGLXCreatePixmapReq;
427 #define sz_xGLXCreatePixmapReq 24
428 
429 /*
430 ** glXDestroyPixmap request
431 */
432 typedef struct GLXDestroyPixmap {
433     CARD8	reqType;
434     CARD8	glxCode;
435     CARD16	length;
436     GLXPixmap	glxpixmap;
437 } xGLXDestroyPixmapReq;
438 #define sz_xGLXDestroyPixmapReq 8
439 
440 /*
441 ** glXCreateNewContext request
442 */
443 typedef struct GLXCreateNewContext {
444     CARD8	reqType;
445     CARD8	glxCode;
446     CARD16	length;
447     GLXContextID context;
448     GLXFBConfigID fbconfig;
449     CARD32	screen;
450     CARD32	renderType;
451     GLXContextID shareList;
452     BOOL	isDirect;
453     CARD8	reserved1;
454     CARD16	reserved2;
455 } xGLXCreateNewContextReq;
456 #define sz_xGLXCreateNewContextReq 28
457 
458 /*
459 ** glXQueryContext request
460 */
461 typedef struct GLXQueryContext {
462     CARD8	reqType;
463     CARD8	glxCode;
464     CARD16	length;
465     GLXContextID context;
466 } xGLXQueryContextReq;
467 #define sz_xGLXQueryContextReq 8
468 
469 /*
470 ** glXMakeContextCurrent request
471 */
472 typedef struct GLXMakeContextCurrent {
473     CARD8	reqType;
474     CARD8	glxCode;
475     CARD16	length;
476     GLXContextTag oldContextTag;
477     GLXDrawable drawable;
478     GLXDrawable readdrawable;
479     GLXContextID context;
480 } xGLXMakeContextCurrentReq;
481 #define sz_xGLXMakeContextCurrentReq 20
482 
483 /*
484 ** glXCreatePbuffer request
485 */
486 typedef struct GLXCreatePbuffer {
487     CARD8	reqType;
488     CARD8	glxCode;
489     CARD16	length;
490     CARD32	screen;
491     GLXFBConfigID fbconfig;
492     GLXPbuffer	pbuffer;
493     CARD32	numAttribs;
494     /* followed by attribute list */
495 } xGLXCreatePbufferReq;
496 #define sz_xGLXCreatePbufferReq 20
497 
498 /*
499 ** glXDestroyPbuffer request
500 */
501 typedef struct GLXDestroyPbuffer {
502     CARD8	reqType;
503     CARD8	glxCode;
504     CARD16	length;
505     GLXPbuffer	pbuffer;
506 } xGLXDestroyPbufferReq;
507 #define sz_xGLXDestroyPbufferReq 8
508 
509 /*
510 ** glXGetDrawableAttributes request
511 */
512 typedef struct GLXGetDrawableAttributes {
513     CARD8	reqType;
514     CARD8	glxCode;
515     CARD16	length;
516     GLXDrawable drawable;
517 } xGLXGetDrawableAttributesReq;
518 #define sz_xGLXGetDrawableAttributesReq 8
519 
520 /*
521 ** glXChangeDrawableAttributes request
522 */
523 typedef struct GLXChangeDrawableAttributes {
524     CARD8	reqType;
525     CARD8	glxCode;
526     CARD16	length;
527     GLXDrawable drawable;
528     CARD32	numAttribs;
529     /* followed by attribute list */
530 } xGLXChangeDrawableAttributesReq;
531 #define sz_xGLXChangeDrawableAttributesReq 12
532 
533 /*
534 ** glXCreateWindow request
535 */
536 typedef struct GLXCreateWindow {
537     CARD8	reqType;
538     CARD8	glxCode;
539     CARD16	length;
540     CARD32	screen;
541     GLXFBConfigID fbconfig;
542     CARD32	window;
543     GLXWindow	glxwindow;
544     CARD32	numAttribs;
545     /* followed by attribute list */
546 } xGLXCreateWindowReq;
547 #define sz_xGLXCreateWindowReq 24
548 
549 /*
550 ** glXDestroyWindow request
551 */
552 typedef struct GLXDestroyWindow {
553     CARD8	reqType;
554     CARD8	glxCode;
555     CARD16	length;
556     GLXWindow	glxwindow;
557 } xGLXDestroyWindowReq;
558 #define sz_xGLXDestroyWindowReq 8
559 
560 /* Replies */
561 
562 typedef struct {
563     BYTE	type;			/* X_Reply */
564     CARD8	unused;			/* not used */
565     CARD16	sequenceNumber;
566     CARD32	length;
567     CARD32	error;
568     CARD32	pad2;
569     CARD32	pad3;
570     CARD32	pad4;
571     CARD32	pad5;
572     CARD32	pad6;
573 } xGLXGetErrorReply;
574 #define sz_xGLXGetErrorReply 32
575 
576 typedef struct {
577     BYTE	type;			/* X_Reply */
578     CARD8	unused;			/* not used */
579     CARD16	sequenceNumber;
580     CARD32	length;
581     GLXContextTag contextTag;
582     CARD32	pad2;
583     CARD32	pad3;
584     CARD32	pad4;
585     CARD32	pad5;
586     CARD32	pad6;
587 } xGLXMakeCurrentReply;
588 #define sz_xGLXMakeCurrentReply 32
589 
590 typedef struct {
591     BYTE	type;			/* X_Reply */
592     CARD8	unused;			/* not used */
593     CARD16	sequenceNumber;
594     CARD32	length;
595     CARD32	pad1;
596     CARD32	pad2;
597     CARD32	pad3;
598     CARD32	pad4;
599     CARD32	pad5;
600     CARD32	pad6;
601 } xGLXReadPixelsReply;
602 #define sz_xGLXReadPixelsReply 32
603 
604 typedef struct {
605     BYTE	type;			/* X_Reply */
606     CARD8	unused;			/* not used */
607     CARD16	sequenceNumber;
608     CARD32	length;
609     CARD32	pad1;
610     CARD32	pad2;
611     CARD32	width;
612     CARD32	height;
613     CARD32	depth;
614     CARD32	pad6;
615 } xGLXGetTexImageReply;
616 #define sz_xGLXGetTexImageReply 32
617 
618 typedef struct {
619     BYTE	type;			/* X_Reply */
620     CARD8	unused;			/* not used */
621     CARD16	sequenceNumber;
622     CARD32	length;
623     CARD32	pad1;
624     CARD32	pad2;
625     CARD32	width;
626     CARD32	height;
627     CARD32	pad5;
628     CARD32	pad6;
629 } xGLXGetSeparableFilterReply;
630 #define sz_xGLXGetSeparableFilterReply 32
631 
632 typedef struct {
633     BYTE	type;			/* X_Reply */
634     CARD8	unused;			/* not used */
635     CARD16	sequenceNumber;
636     CARD32	length;
637     CARD32	pad1;
638     CARD32	pad2;
639     CARD32	width;
640     CARD32	height;
641     CARD32	pad5;
642     CARD32	pad6;
643 } xGLXGetConvolutionFilterReply;
644 #define sz_xGLXGetConvolutionFilterReply 32
645 
646 typedef struct {
647     BYTE	type;			/* X_Reply */
648     CARD8	unused;			/* not used */
649     CARD16	sequenceNumber;
650     CARD32	length;
651     CARD32	pad1;
652     CARD32	pad2;
653     CARD32	width;
654     CARD32	pad4;
655     CARD32	pad5;
656     CARD32	pad6;
657 } xGLXGetHistogramReply;
658 #define sz_xGLXGetHistogramReply 32
659 
660 typedef struct {
661     BYTE	type;			/* X_Reply */
662     CARD8	unused;			/* not used */
663     CARD16	sequenceNumber;
664     CARD32	length;
665     CARD32	pad1;
666     CARD32	pad2;
667     CARD32	pad3;
668     CARD32	pad4;
669     CARD32	pad5;
670     CARD32	pad6;
671 } xGLXGetMinmaxReply;
672 #define sz_xGLXGetMinmaxReply 32
673 
674 typedef struct {
675     BYTE	type;			/* X_Reply */
676     CARD8	unused;			/* not used */
677     CARD16	sequenceNumber;
678     CARD32	length;
679     CARD32	retval;
680     CARD32	size;
681     CARD32	newMode;
682     CARD32	pad4;
683     CARD32	pad5;
684     CARD32	pad6;
685 } xGLXRenderModeReply;
686 #define sz_xGLXRenderModeReply 32
687 
688 typedef struct {
689     BYTE	type;			/* X_Reply */
690     CARD8	unused;			/* not used */
691     CARD16	sequenceNumber;
692     CARD32	length;
693     CARD32	majorVersion;
694     CARD32	minorVersion;
695     CARD32	pad3;
696     CARD32	pad4;
697     CARD32	pad5;
698     CARD32	pad6;
699 } xGLXQueryVersionReply;
700 #define sz_xGLXQueryVersionReply 32
701 
702 typedef struct {
703     BYTE	type;			/* X_Reply */
704     CARD8	unused;			/* not used */
705     CARD16	sequenceNumber;
706     CARD32	length;
707     CARD32	numVisuals;
708     CARD32	numProps;
709     CARD32	pad3;
710     CARD32	pad4;
711     CARD32	pad5;
712     CARD32	pad6;
713 } xGLXGetVisualConfigsReply;
714 #define sz_xGLXGetVisualConfigsReply 32
715 
716 typedef struct {
717     BYTE	type;			/* X_Reply */
718     CARD8	unused;			/* not used */
719     CARD16	sequenceNumber;
720     CARD32	length;
721     BOOL	isDirect;
722     CARD8	pad1;
723     CARD16	pad2;
724     CARD32	pad3;
725     CARD32	pad4;
726     CARD32	pad5;
727     CARD32	pad6;
728     CARD32	pad7;
729 } xGLXIsDirectReply;
730 #define sz_xGLXIsDirectReply	32
731 
732 /*
733 ** This reply structure is used for all single replies.  Single replies
734 ** ship either 1 piece of data or N pieces of data.  In these cases
735 ** size indicates how much data is to be returned.
736 */
737 typedef struct {
738     BYTE	type;			/* X_Reply */
739     CARD8	unused;			/* not used */
740     CARD16	sequenceNumber;
741     CARD32	length;
742     CARD32	retval;
743     CARD32	size;
744     CARD32	pad3;			/* NOTE: may hold a single value */
745     CARD32	pad4;			/* NOTE: may hold half a double */
746     CARD32	pad5;
747     CARD32	pad6;
748 } xGLXSingleReply;
749 #define sz_xGLXSingleReply 32
750 
751 /*
752 ** This reply structure is used for all Vendor Private replies. Vendor
753 ** Private replies can ship up to 24 bytes within the header or can
754 ** be variable sized, in which case, the reply length field indicates
755 ** the number of words of data which follow the header.
756 */
757 typedef struct {
758     BYTE	type;			/* X_Reply */
759     CARD8	unused;			/* not used */
760     CARD16	sequenceNumber;
761     CARD32	length;
762     CARD32	retval;
763     CARD32	size;
764     CARD32	pad3;
765     CARD32	pad4;
766     CARD32	pad5;
767     CARD32	pad6;
768 } xGLXVendorPrivReply;
769 #define sz_xGLXVendorPrivReply 32
770 
771 /*
772 **  QueryExtensionsStringReply
773 **  n indicates the number of bytes to be returned.
774 */
775 typedef struct {
776     BYTE	type;			/* X_Reply */
777     CARD8	unused;			/* not used */
778     CARD16	sequenceNumber;
779     CARD32	length;
780     CARD32	pad1;
781     CARD32	n;
782     CARD32	pad3;
783     CARD32	pad4;
784     CARD32	pad5;
785     CARD32	pad6;
786 } xGLXQueryExtensionsStringReply;
787 #define sz_xGLXQueryExtensionsStringReply 32
788 
789 /*
790 ** QueryServerString Reply struct
791 ** n indicates the number of bytes to be returned.
792 */
793 typedef struct {
794     BYTE	type;			/* X_Reply */
795     CARD8	unused;			/* not used */
796     CARD16	sequenceNumber;
797     CARD32	length;
798     CARD32	pad1;
799     CARD32	n;
800     CARD32	pad3;			/* NOTE: may hold a single value */
801     CARD32	pad4;			/* NOTE: may hold half a double */
802     CARD32	pad5;
803     CARD32	pad6;
804 } xGLXQueryServerStringReply;
805 #define sz_xGLXQueryServerStringReply 32
806 
807 /*** Start of GLX 1.3 replies */
808 
809 /*
810 ** glXGetFBConfigs reply
811 */
812 typedef struct {
813     BYTE	type;			/* X_Reply */
814     CARD8	unused;			/* not used */
815     CARD16	sequenceNumber;
816     CARD32	length;
817     CARD32	numFBConfigs;
818     CARD32	numAttribs;
819     CARD32	pad3;
820     CARD32	pad4;
821     CARD32	pad5;
822     CARD32	pad6;
823 } xGLXGetFBConfigsReply;
824 #define sz_xGLXGetFBConfigsReply 32
825 
826 /*
827 ** glXQueryContext reply
828 */
829 typedef struct {
830     BYTE	type;			/* X_Reply */
831     CARD8	unused;			/* not used */
832     CARD16	sequenceNumber;
833     CARD32	length;
834     CARD32	n;			/* number of attribute/value pairs */
835     CARD32	pad2;
836     CARD32	pad3;
837     CARD32	pad4;
838     CARD32	pad5;
839     CARD32	pad6;
840 } xGLXQueryContextReply;
841 #define sz_xGLXQueryContextReply 32
842 
843 /*
844 ** glXMakeContextCurrent reply
845 */
846 typedef struct {
847     BYTE	type;			/* X_Reply */
848     CARD8	unused;			/* not used */
849     CARD16	sequenceNumber;
850     CARD32	length;
851     GLXContextTag contextTag;
852     CARD32	pad2;
853     CARD32	pad3;
854     CARD32	pad4;
855     CARD32	pad5;
856     CARD32	pad6;
857 } xGLXMakeContextCurrentReply;
858 #define sz_xGLXMakeContextCurrentReply 32
859 
860 /*
861 ** glXCreateGLXPbuffer reply
862 ** This is used only in the direct rendering case on SGIs - otherwise
863 **  CreateGLXPbuffer has no reply. It is not part of GLX 1.3.
864 */
865 typedef struct {
866     BYTE	type;			/* X_Reply */
867     CARD8	success;
868     CARD16	sequenceNumber;
869     CARD32	length;
870     CARD32	pad1;
871     CARD32	pad2;
872     CARD32	pad3;
873     CARD32	pad4;
874     CARD32	pad5;
875     CARD32	pad6;
876 } xGLXCreateGLXPbufferReply;
877 #define sz_xGLXCreateGLXPbufferReply 32
878 
879 /*
880 ** glXGetDrawableAttributes reply
881 */
882 typedef struct {
883     BYTE	type;			/* X_Reply */
884     CARD8	unused;			/* not used */
885     CARD16	sequenceNumber;
886     CARD32	length;
887     CARD32	numAttribs;
888     CARD32	pad2;
889     CARD32	pad3;
890     CARD32	pad4;
891     CARD32	pad5;
892     CARD32	pad6;
893 } xGLXGetDrawableAttributesReply;
894 #define sz_xGLXGetDrawableAttributesReply 32
895 
896 /*
897 ** glXGetColorTable reply
898 */
899 typedef struct {
900     BYTE	type;		       /* X_Reply */
901     CARD8	unused;		       /* not used */
902     CARD16	sequenceNumber;
903     CARD32	length;
904     CARD32	pad1;
905     CARD32	pad2;
906     CARD32	width;
907     CARD32	pad4;
908     CARD32	pad5;
909     CARD32	pad6;
910 } xGLXGetColorTableReply;
911 #define sz_xGLXGetColorTableReply 32
912 
913 /************************************************************************/
914 
915 /* GLX extension requests and replies */
916 
917 /*
918 ** glXQueryContextInfoEXT request
919 */
920 typedef struct GLXQueryContextInfoEXT {
921     CARD8	reqType;
922     CARD8	glxCode;
923     CARD16	length;
924     CARD32	vendorCode;		/* vendor-specific opcode */
925     CARD32	pad1;	/* unused; corresponds to contextTag in header */
926     GLXContextID context;
927 } xGLXQueryContextInfoEXTReq;
928 #define sz_xGLXQueryContextInfoEXTReq 16
929 
930 /*
931 ** glXQueryContextInfoEXT reply
932 */
933 typedef struct {
934     BYTE	type;			/* X_Reply */
935     CARD8	unused;			/* not used */
936     CARD16	sequenceNumber;
937     CARD32	length;
938     CARD32	n;			/* number of attribute/value pairs */
939     CARD32	pad2;
940     CARD32	pad3;
941     CARD32	pad4;
942     CARD32	pad5;
943     CARD32	pad6;
944 } xGLXQueryContextInfoEXTReply;
945 #define sz_xGLXQueryContextInfoEXTReply 32
946 
947 /*
948 ** glXMakeCurrentReadSGI request
949 */
950 typedef struct GLXMakeCurrentReadSGI {
951     CARD8	reqType;
952     CARD8	glxCode;
953     CARD16	length;
954     CARD32	vendorCode;		/* vendor-specific opcode */
955     GLXContextTag oldContextTag;
956     GLXDrawable drawable;
957     GLXDrawable readable;
958     GLXContextID context;
959 } xGLXMakeCurrentReadSGIReq;
960 #define sz_xGLXMakeCurrentReadSGIReq 24
961 
962 typedef struct {
963     BYTE	type;			/* X_Reply */
964     CARD8	unused;			/* not used */
965     CARD16	sequenceNumber;
966     CARD32	length;
967     GLXContextTag contextTag;
968     CARD32	writeVid;
969     CARD32	writeType;
970     CARD32	readVid;
971     CARD32	readType;
972     CARD32	pad6;
973 } xGLXMakeCurrentReadSGIReply;
974 #define sz_xGLXMakeCurrentReadSGIReply 32
975 
976 /*
977 ** glXGetFBConfigsSGIX request
978 */
979 typedef struct GLXGetFBConfigsSGIX {
980     CARD8	reqType;
981     CARD8	glxCode;
982     CARD16	length;
983     CARD32	vendorCode;		/* vendor-specific opcode */
984     CARD32	pad1;   /* unused; corresponds to contextTag in header */
985     CARD32	screen;
986 } xGLXGetFBConfigsSGIXReq;
987 #define sz_xGLXGetFBConfigsSGIXReq 16
988 
989 /*
990 ** glXCreateContextWithConfigSGIX request
991 */
992 
993 typedef struct GLXCreateContextWithConfigSGIX {
994     CARD8	reqType;
995     CARD8	glxCode;
996     CARD16	length;
997     CARD32	vendorCode;		/* vendor-specific opcode */
998     CARD32	pad1;   /* unused; corresponds to contextTag in header */
999     GLXContextID context;
1000     GLXFBConfigID fbconfig;
1001     CARD32	screen;
1002     CARD32	renderType;
1003     GLXContextID shareList;
1004     BOOL	isDirect;
1005     CARD8	reserved1;
1006     CARD16	reserved2;
1007 } xGLXCreateContextWithConfigSGIXReq;
1008 #define sz_xGLXCreateContextWithConfigSGIXReq 36
1009 
1010 /*
1011 ** glXCreatePixmapWithConfigSGIX request
1012 */
1013 
1014 typedef struct GLXCreateGLXPixmapWithConfigSGIX {
1015     CARD8	reqType;
1016     CARD8	glxCode;
1017     CARD16	length;
1018     CARD32	vendorCode;		/* vendor-specific opcode */
1019     CARD32	pad1;   /* unused; corresponds to contextTag in header */
1020     CARD32	screen;
1021     GLXFBConfigID fbconfig;
1022     CARD32	pixmap;
1023     GLXPixmap	glxpixmap;
1024 } xGLXCreateGLXPixmapWithConfigSGIXReq;
1025 #define sz_xGLXCreateGLXPixmapWithConfigSGIXReq 28
1026 
1027 /*
1028 ** glXCreateGLXPbufferSGIX request
1029 */
1030 typedef struct GLXCreateGLXPbufferSGIX {
1031     CARD8	reqType;
1032     CARD8	glxCode;
1033     CARD16	length;
1034     CARD32	vendorCode;		/* vendor-specific opcode */
1035     CARD32	pad1;   /* unused; corresponds to contextTag in header */
1036     CARD32	screen;
1037     GLXFBConfigID fbconfig;
1038     GLXPbuffer	pbuffer;
1039     CARD32	width;
1040     CARD32	height;
1041     /* followed by attribute list */
1042 } xGLXCreateGLXPbufferSGIXReq;
1043 #define sz_xGLXCreateGLXPbufferSGIXReq 32
1044 
1045 /*
1046 ** glXDestroyGLXPbufferSGIX request
1047 */
1048 typedef struct GLXDestroyGLXPbuffer {
1049     CARD8	reqType;
1050     CARD8	glxCode;
1051     CARD16	length;
1052     CARD32	vendorCode;		/* vendor-specific opcode */
1053     CARD32	pad1;   /* unused; corresponds to contextTag in header */
1054     GLXPbuffer	pbuffer;
1055 } xGLXDestroyGLXPbufferSGIXReq;
1056 #define sz_xGLXDestroyGLXPbufferSGIXReq 16
1057 
1058 /*
1059 ** glXChangeDrawableAttributesSGIX request
1060 */
1061 typedef struct GLXChangeDrawableAttributesSGIX {
1062     CARD8	reqType;
1063     CARD8	glxCode;
1064     CARD16	length;
1065     CARD32	vendorCode;		/* vendor-specific opcode */
1066     CARD32	pad1;   /* unused; corresponds to contextTag in header */
1067     GLXDrawable drawable;
1068     CARD32	numAttribs;
1069     /* followed by attribute list */
1070 } xGLXChangeDrawableAttributesSGIXReq;
1071 #define sz_xGLXChangeDrawableAttributesSGIXReq 20
1072 
1073 /*
1074 ** glXGetDrawableAttributesSGIX request
1075 */
1076 typedef struct GLXGetDrawableAttributesSGIX {
1077     CARD8	reqType;
1078     CARD8	glxCode;
1079     CARD16	length;
1080     CARD32	vendorCode;		/* vendor-specific opcode */
1081     CARD32	pad1;   /* unused; corresponds to contextTag in header */
1082     GLXDrawable drawable;
1083 } xGLXGetDrawableAttributesSGIXReq;
1084 #define sz_xGLXGetDrawableAttributesSGIXReq 16
1085 
1086 /*
1087 ** glXGetDrawableAttributesSGIX reply
1088 */
1089 typedef struct {
1090     BYTE	type;			/* X_Reply */
1091     CARD8	unused;			/* not used */
1092     CARD16	sequenceNumber;
1093     CARD32	length;
1094     CARD32	numAttribs;
1095     CARD32	pad2;
1096     CARD32	pad3;
1097     CARD32	pad4;
1098     CARD32	pad5;
1099     CARD32	pad6;
1100 } xGLXGetDrawableAttributesSGIXReply;
1101 #define sz_xGLXGetDrawableAttributesSGIXReply 32
1102 
1103 /*
1104 ** glXJoinSwapGroupSGIX request
1105 */
1106 typedef struct GLXJoinSwapGroupSGIX {
1107     CARD8	reqType;
1108     CARD8	glxCode;
1109     CARD16	length;
1110     CARD32	vendorCode;		/* vendor-specific opcode */
1111     CARD32 	unused;		/* corresponds to contextTag in hdr */
1112     GLXDrawable	drawable;
1113     GLXDrawable	member;
1114 } xGLXJoinSwapGroupSGIXReq;
1115 #define sz_xGLXJoinSwapGroupSGIXReq 20
1116 
1117 /*
1118 ** glXBindSwapBarrierSGIX request
1119 */
1120 typedef struct GLXBindSwapBarrierSGIX {
1121     CARD8	reqType;
1122     CARD8	glxCode;
1123     CARD16	length;
1124     CARD32	vendorCode;		/* vendor-specific opcode */
1125     CARD32 	unused;		/* corresponds to contextTag in hdr */
1126     GLXDrawable	drawable;
1127     CARD32	barrier;
1128 } xGLXBindSwapBarrierSGIXReq;
1129 #define sz_xGLXBindSwapBarrierSGIXReq 20
1130 
1131 /*
1132 ** glXQueryMaxSwapBarriersSGIX request
1133 */
1134 typedef struct GLXQueryMaxSwapBarriersSGIX {
1135     CARD8	reqType;
1136     CARD8	glxCode;
1137     CARD16	length;
1138     CARD32	vendorCode;		/* vendor-specific opcode */
1139     CARD32 	unused;		/* corresponds to contextTag in hdr */
1140     CARD32	screen;
1141 } xGLXQueryMaxSwapBarriersSGIXReq;
1142 #define sz_xGLXQueryMaxSwapBarriersSGIXReq 16
1143 
1144 typedef struct {
1145     BYTE	type;			/* X_Reply */
1146     CARD8	unused;			/* not used */
1147     CARD16	sequenceNumber;
1148     CARD32	length;
1149     CARD32	max;
1150     CARD32	size;
1151     CARD32	pad3;
1152     CARD32	pad4;
1153     CARD32	pad5;
1154     CARD32	pad6;
1155 } xGLXQueryMaxSwapBarriersSGIXReply;
1156 #define sz_xGLXQueryMaxSwapBarriersSGIXReply 32
1157 
1158 /*
1159 ** glXQueryHyperpipeNetworkSGIX request
1160 */
1161 typedef struct GLXQueryHyperpipeNetworkSGIX {
1162     CARD8       reqType;
1163     CARD8       glxCode;
1164     CARD16      length;
1165     CARD32      vendorCode;		/* vendor-specific opcode */
1166     CARD32      pad1;   /* unused; corresponds to contextTag in header */
1167     CARD32      screen;
1168 } xGLXQueryHyperpipeNetworkSGIXReq;
1169 #define sz_xGLXQueryHyperpipeNetworkSGIXReq 16
1170 
1171 /*
1172 ** glXQueryHyperpipeNetworkSGIX reply
1173 */
1174 typedef struct {
1175     BYTE        type;                   /* X_Reply */
1176     CARD8       unused;                 /* not used */
1177     CARD16      sequenceNumber;
1178     CARD32      length;
1179     CARD32      pad1;
1180     CARD32      n;
1181     CARD32	npipes;			/* NOTE: may hold a single value */
1182     CARD32	pad4;			/* NOTE: may hold half a double */
1183     CARD32      pad5;
1184     CARD32      pad6;
1185 } xGLXQueryHyperpipeNetworkSGIXReply;
1186 #define sz_xGLXQueryHyperpipeNetworkSGIXReply 32
1187 
1188 /*
1189 ** glXDestroyHyperpipeConfigSGIX request
1190 */
1191 typedef struct GLXDestroyHyperpipeConfigSGIX {
1192     CARD8       reqType;
1193     CARD8       glxCode;
1194     CARD16      length;
1195     CARD32      vendorCode;		/* vendor-specific opcode */
1196     CARD32      pad1;   /* unused; corresponds to contextTag in header */
1197     CARD32      screen;
1198     CARD32      hpId;
1199     CARD32      pad2;
1200     CARD32      pad3;
1201     CARD32      pad4;
1202 } xGLXDestroyHyperpipeConfigSGIXReq;
1203 #define sz_xGLXDestroyHyperpipeConfigSGIXReq 32
1204 
1205 /*
1206 ** glXDestroyHyperpipeConfigSGIX reply
1207 */
1208 typedef struct {
1209     BYTE        type;                   /* X_Reply */
1210     CARD8       unused;                 /* not used */
1211     CARD16      sequenceNumber;
1212     CARD32      length;
1213     CARD32      pad1;
1214     CARD32      n;
1215     CARD32      success;		/* NOTE: may hold a single value */
1216     CARD32      pad4;			/* NOTE: may hold half a double */
1217     CARD32      pad5;
1218     CARD32      pad6;
1219 } xGLXDestroyHyperpipeConfigSGIXReply;
1220 #define sz_xGLXDestroyHyperpipeConfigSGIXReply 32
1221 
1222 /*
1223 ** glXQueryHyperpipeConfigSGIX request
1224 */
1225 typedef struct GLXQueryHyperpipeConfigSGIX {
1226     CARD8       reqType;
1227     CARD8       glxCode;
1228     CARD16      length;
1229     CARD32      vendorCode;		/* vendor-specific opcode */
1230     CARD32      pad1;   /* unused; corresponds to contextTag in header */
1231     CARD32      screen;
1232     CARD32      hpId;
1233     CARD32      pad2;
1234     CARD32      pad3;
1235     CARD32      pad4;
1236 } xGLXQueryHyperpipeConfigSGIXReq;
1237 #define sz_xGLXQueryHyperpipeConfigSGIXReq 32
1238 
1239 /*
1240 ** glXQueryHyperpipeConfigSGIX reply
1241 */
1242 typedef struct {
1243     BYTE        type;                   /* X_Reply */
1244     CARD8       unused;                 /* not used */
1245     CARD16      sequenceNumber;
1246     CARD32      length;
1247     CARD32      pad1;
1248     CARD32      n;
1249     CARD32      npipes;
1250     CARD32      pad4;
1251     CARD32      pad5;
1252     CARD32      pad6;
1253 } xGLXQueryHyperpipeConfigSGIXReply;
1254 #define sz_xGLXQueryHyperpipeConfigSGIXReply 32
1255 
1256 /*
1257 ** glXHyperpipeConfigSGIX request
1258 */
1259 typedef struct {
1260     CARD8       reqType;
1261     CARD8       glxCode;
1262     CARD16      length;
1263     CARD32      vendorCode;		/* vendor-specific opcode */
1264     CARD32      pad1;   /* unused; corresponds to contextTag in header */
1265     CARD32      screen;
1266     CARD32      npipes;
1267     CARD32      networkId;
1268     CARD32      pad2;
1269     CARD32      pad3;
1270     /* followed by attribute list */
1271 } xGLXHyperpipeConfigSGIXReq;
1272 #define sz_xGLXHyperpipeConfigSGIXReq 32
1273 
1274 /*
1275 ** glXHyperpipeConfigSGIX reply
1276 */
1277 typedef struct {
1278     BYTE        type;                   /* X_Reply */
1279     CARD8       unused;                 /* not used */
1280     CARD16      sequenceNumber;
1281     CARD32      length;
1282     CARD32      pad1;
1283     CARD32      n;
1284     CARD32      npipes;
1285     CARD32      hpId;
1286     CARD32      pad5;
1287     CARD32      pad6;
1288 } xGLXHyperpipeConfigSGIXReply;
1289 #define sz_xGLXHyperpipeConfigSGIXReply 32
1290 
1291 /**
1292  * \name Protocol structures for GLX_ARB_create_context and
1293  * GLX_ARB_create_context_profile
1294  */
1295 /*@{*/
1296 /**
1297  * Protocol header for glXSetClientInfoARB
1298  *
1299  * This structure is followed by \c numVersions * 2 \c CARD32 values listing
1300  * the OpenGL versions supported by the client.  The pairs of values are an
1301  * OpenGL major version followed by a minor version.  For example,
1302  *
1303  *      CARD32 versions[4] = { 2, 1, 3, 0 };
1304  *
1305  * says that the client supports OpenGL 2.1 and OpenGL 3.0.
1306  *
1307  * These are followed by \c numGLExtensionBytes bytes of \c STRING8 containing
1308  * the OpenGL extension string supported by the client and up to 3 bytes of
1309  * padding.
1310  *
1311  * The list of OpenGL extensions is followed by \c numGLXExtensionBytes bytes
1312  * of \c STRING8 containing the GLX extension string supported by the client
1313  * and up to 3 bytes of padding.
1314  *
1315  * This protocol replaces \c GLXClientInfo.
1316  *
1317  * \sa GLXClientInfo, GLXSetClientInfo2ARB
1318  */
1319 typedef struct GLXSetClientInfoARB {
1320     CARD8	reqType;
1321     CARD8	glxCode;
1322     CARD16	length;
1323     CARD32	major;
1324     CARD32	minor;
1325     CARD32	numVersions;
1326     CARD32	numGLExtensionBytes;
1327     CARD32	numGLXExtensionBytes;
1328     /*
1329     ** More data may follow; this is just the header.
1330     */
1331 } xGLXSetClientInfoARBReq;
1332 #define sz_xGLXSetClientInfoARBReq 24
1333 
1334 /**
1335  * Protocol head for glXCreateContextAttribsARB
1336  *
1337  * This protocol replaces \c GLXCreateContext, \c GLXCreateNewContext, and
1338  * \c GLXCreateContextWithConfigSGIX.
1339  */
1340 typedef struct GLXCreateContextAttribsARB {
1341     CARD8	reqType;
1342     CARD8	glxCode;
1343     CARD16	length;
1344     GLXContextID	context;
1345     GLXFBConfigID	fbconfig;
1346     CARD32	screen;
1347     GLXContextID	shareList;
1348     BOOL	isDirect;
1349     CARD8	reserved1;
1350     CARD16	reserved2;
1351     CARD32	numAttribs;
1352     /* followed by attribute list */
1353 } xGLXCreateContextAttribsARBReq;
1354 #define sz_xGLXCreateContextAttribsARBReq 28
1355 
1356 /**
1357  * Protocol header for glXSetClientInfo2ARB
1358  *
1359  * The glXSetClientInfo2ARB protocol differs from glXSetClientInfoARB in that
1360  * the list of OpenGL versions supported by the client is 3 \c CARD32 values
1361  * per version: major version, minor version, and supported profile mask.
1362  *
1363  * This protocol replaces \c GLXClientInfo and \c GLXSetClientInfoARB.
1364  *
1365  * \sa GLXClientInfo, GLXSetClientInfoARB
1366  */
1367 typedef struct GLXSetClientInfo2ARB {
1368     CARD8	reqType;
1369     CARD8	glxCode;
1370     CARD16	length;
1371     CARD32	major;
1372     CARD32	minor;
1373     CARD32	numVersions;
1374     CARD32	numGLExtensionBytes;
1375     CARD32	numGLXExtensionBytes;
1376     /*
1377     ** More data may follow; this is just the header.
1378     */
1379 } xGLXSetClientInfo2ARBReq;
1380 #define sz_xGLXSetClientInfo2ARBReq 24
1381 /*@}*/
1382 
1383 /************************************************************************/
1384 
1385 /*
1386 ** Events
1387 */
1388 
1389 typedef struct {
1390     BYTE type;
1391     BYTE pad;
1392     CARD16 sequenceNumber;
1393     CARD16 event_type;  /*** was clobber_class */
1394     CARD16 draw_type;
1395     CARD32 drawable;
1396     CARD32 buffer_mask; /*** was mask */
1397     CARD16 aux_buffer;
1398     CARD16 x;
1399     CARD16 y;
1400     CARD16 width;
1401     CARD16 height;
1402     CARD16 count;
1403     CARD32 unused2;
1404 } xGLXPbufferClobberEvent;
1405 
1406 typedef struct {
1407     BYTE type;
1408     BYTE pad;
1409     CARD16 sequenceNumber;
1410     CARD16 event_type;
1411     CARD32 drawable;
1412     CARD32 ust_hi;
1413     CARD32 ust_lo;
1414     CARD32 msc_hi;
1415     CARD32 msc_lo;
1416     CARD32 sbc_hi;
1417     CARD32 sbc_lo;
1418 } xGLXBufferSwapComplete;
1419 
1420 typedef struct {
1421     BYTE type;
1422     BYTE pad;
1423     CARD16 sequenceNumber;
1424     CARD16 event_type;
1425     CARD16 pad2;
1426     CARD32 drawable;
1427     CARD32 ust_hi;
1428     CARD32 ust_lo;
1429     CARD32 msc_hi;
1430     CARD32 msc_lo;
1431     CARD32 sbc;
1432 } xGLXBufferSwapComplete2;
1433 
1434 /************************************************************************/
1435 
1436 /*
1437 ** Size of the standard X request header.
1438 */
1439 #define __GLX_SINGLE_HDR_SIZE sz_xGLXSingleReq
1440 #define __GLX_VENDPRIV_HDR_SIZE sz_xGLXVendorPrivateReq
1441 
1442 #define __GLX_RENDER_HDR    \
1443     CARD16	length;	    \
1444     CARD16	opcode
1445 
1446 #define __GLX_RENDER_HDR_SIZE 4
1447 
1448 typedef struct {
1449     __GLX_RENDER_HDR;
1450 } __GLXrenderHeader;
1451 
1452 #define __GLX_RENDER_LARGE_HDR \
1453     CARD32	length;	       \
1454     CARD32	opcode
1455 
1456 #define __GLX_RENDER_LARGE_HDR_SIZE 8
1457 
1458 typedef struct {
1459     __GLX_RENDER_LARGE_HDR;
1460 } __GLXrenderLargeHeader;
1461 
1462 /*
1463 ** The glBitmap, glPolygonStipple, glTexImage[12]D, glTexSubImage[12]D
1464 ** and glDrawPixels calls all have a pixel header transmitted after the
1465 ** Render or RenderLarge header and before their own opcode specific
1466 ** headers.
1467 */
1468 #define __GLX_PIXEL_HDR		\
1469     BOOL	swapBytes;	\
1470     BOOL	lsbFirst;	\
1471     CARD8	reserved0;	\
1472     CARD8	reserved1;	\
1473     CARD32	rowLength;	\
1474     CARD32	skipRows;	\
1475     CARD32	skipPixels;	\
1476     CARD32	alignment
1477 
1478 #define __GLX_PIXEL_HDR_SIZE 20
1479 
1480 typedef struct {
1481     __GLX_PIXEL_HDR;
1482 } __GLXpixelHeader;
1483 
1484 /*
1485 ** glTexImage[34]D and glTexSubImage[34]D calls
1486 ** all have a pixel header transmitted after the Render or RenderLarge
1487 ** header and before their own opcode specific headers.
1488 */
1489 #define __GLX_PIXEL_3D_HDR		\
1490     BOOL	swapBytes;		\
1491     BOOL	lsbFirst;		\
1492     CARD8	reserved0;		\
1493     CARD8	reserved1;		\
1494     CARD32	rowLength;		\
1495     CARD32	imageHeight;		\
1496     CARD32	imageDepth;		\
1497     CARD32	skipRows;		\
1498     CARD32	skipImages;		\
1499     CARD32	skipVolumes;		\
1500     CARD32	skipPixels;		\
1501     CARD32	alignment
1502 
1503 #define __GLX_PIXEL_3D_HDR_SIZE 36
1504 
1505 /*
1506 ** Data that is specific to a glBitmap call.  The data is sent in the
1507 ** following order:
1508 **	Render or RenderLarge header
1509 **	Pixel header
1510 **	Bitmap header
1511 */
1512 #define __GLX_BITMAP_HDR    \
1513     CARD32	width;	    \
1514     CARD32	height;	    \
1515     FLOAT32	xorig F32;  \
1516     FLOAT32	yorig F32;  \
1517     FLOAT32	xmove F32;  \
1518     FLOAT32	ymove F32
1519 
1520 typedef struct {
1521     __GLX_RENDER_HDR;
1522     __GLX_PIXEL_HDR;
1523     __GLX_BITMAP_HDR;
1524 } __GLXbitmapHeader;
1525 
1526 typedef struct {
1527     __GLX_RENDER_LARGE_HDR;
1528     __GLX_PIXEL_HDR;
1529     __GLX_BITMAP_HDR;
1530 } __GLXbitmapLargeHeader;
1531 
1532 typedef struct {
1533     __GLX_PIXEL_HDR;
1534     __GLX_BITMAP_HDR;
1535 } __GLXdispatchBitmapHeader;
1536 
1537 #define __GLX_BITMAP_HDR_SIZE 24
1538 
1539 #define __GLX_BITMAP_CMD_HDR_SIZE \
1540     (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_BITMAP_HDR_SIZE)
1541 
1542 #define __GLX_BITMAP_CMD_DISPATCH_HDR_SIZE \
1543     (__GLX_PIXEL_HDR_SIZE + __GLX_BITMAP_HDR_SIZE)
1544 
1545 typedef struct {
1546     __GLX_RENDER_HDR;
1547     __GLX_PIXEL_HDR;
1548 } __GLXpolygonStippleHeader;
1549 
1550 #define __GLX_POLYGONSTIPPLE_CMD_HDR_SIZE \
1551     (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE)
1552 
1553 /*
1554 ** Data that is specific to a glTexImage1D or glTexImage2D call.  The
1555 ** data is sent in the following order:
1556 **	Render or RenderLarge header
1557 **	Pixel header
1558 **	TexImage header
1559 ** When a glTexImage1D call the height field is unexamined by the server.
1560 */
1561 #define __GLX_TEXIMAGE_HDR	\
1562     CARD32	target;		\
1563     CARD32	level;		\
1564     CARD32	components;	\
1565     CARD32	width;		\
1566     CARD32	height;		\
1567     CARD32	border;		\
1568     CARD32	format;		\
1569     CARD32	type
1570 
1571 #define __GLX_TEXIMAGE_HDR_SIZE 32
1572 
1573 #define __GLX_TEXIMAGE_CMD_HDR_SIZE \
1574     (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_TEXIMAGE_HDR_SIZE)
1575 
1576 #define __GLX_TEXIMAGE_CMD_DISPATCH_HDR_SIZE \
1577     (__GLX_PIXEL_HDR_SIZE + __GLX_TEXIMAGE_HDR_SIZE)
1578 
1579 typedef struct {
1580     __GLX_RENDER_HDR;
1581     __GLX_PIXEL_HDR;
1582     __GLX_TEXIMAGE_HDR;
1583 } __GLXtexImageHeader;
1584 
1585 typedef struct {
1586     __GLX_RENDER_LARGE_HDR;
1587     __GLX_PIXEL_HDR;
1588     __GLX_TEXIMAGE_HDR;
1589 } __GLXtexImageLargeHeader;
1590 
1591 typedef struct {
1592     __GLX_PIXEL_HDR;
1593     __GLX_TEXIMAGE_HDR;
1594 } __GLXdispatchTexImageHeader;
1595 
1596 /*
1597 ** Data that is specific to a glTexImage3D or glTexImage4D call.  The
1598 ** data is sent in the following order:
1599 **	Render or RenderLarge header
1600 **	Pixel 3D header
1601 **	TexImage 3D header
1602 ** When a glTexImage3D call the size4d and woffset fields are unexamined
1603 ** by the server.
1604 ** Could be used by all TexImage commands and perhaps should be in the
1605 ** future.
1606 */
1607 #define __GLX_TEXIMAGE_3D_HDR \
1608     CARD32	target;		\
1609     CARD32	level;		\
1610     CARD32	internalformat;	\
1611     CARD32	width;		\
1612     CARD32	height;		\
1613     CARD32	depth;		\
1614     CARD32	size4d;		\
1615     CARD32	border;		\
1616     CARD32	format;		\
1617     CARD32	type;		\
1618     CARD32	nullimage
1619 
1620 #define __GLX_TEXIMAGE_3D_HDR_SIZE 44
1621 
1622 #define __GLX_TEXIMAGE_3D_CMD_HDR_SIZE \
1623     (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_3D_HDR_SIZE + \
1624 		__GLX_TEXIMAGE_3D_HDR_SIZE)
1625 
1626 #define __GLX_TEXIMAGE_3D_CMD_DISPATCH_HDR_SIZE \
1627     (__GLX_PIXEL_3D_HDR_SIZE + __GLX_TEXIMAGE_3D_HDR_SIZE)
1628 
1629 typedef struct {
1630     __GLX_RENDER_HDR;
1631     __GLX_PIXEL_3D_HDR;
1632     __GLX_TEXIMAGE_3D_HDR;
1633 } __GLXtexImage3DHeader;
1634 
1635 typedef struct {
1636     __GLX_RENDER_LARGE_HDR;
1637     __GLX_PIXEL_3D_HDR;
1638     __GLX_TEXIMAGE_3D_HDR;
1639 } __GLXtexImage3DLargeHeader;
1640 
1641 typedef struct {
1642     __GLX_PIXEL_3D_HDR;
1643     __GLX_TEXIMAGE_3D_HDR;
1644 } __GLXdispatchTexImage3DHeader;
1645 
1646 /*
1647 ** Data that is specific to a glTexSubImage1D or glTexSubImage2D call.	The
1648 ** data is sent in the following order:
1649 **	Render or RenderLarge header
1650 **	Pixel header
1651 **	TexSubImage header
1652 ** When a glTexSubImage1D call is made, the yoffset and height fields
1653 ** are unexamined by the server and are  considered to be padding.
1654 */
1655 #define __GLX_TEXSUBIMAGE_HDR	\
1656     CARD32	target;		\
1657     CARD32	level;		\
1658     CARD32	xoffset;	\
1659     CARD32	yoffset;	\
1660     CARD32	width;		\
1661     CARD32	height;		\
1662     CARD32	format;		\
1663     CARD32	type;		\
1664     CARD32	nullImage	\
1665 
1666 #define __GLX_TEXSUBIMAGE_HDR_SIZE 36
1667 
1668 #define __GLX_TEXSUBIMAGE_CMD_HDR_SIZE \
1669     (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_TEXSUBIMAGE_HDR_SIZE)
1670 
1671 #define __GLX_TEXSUBIMAGE_CMD_DISPATCH_HDR_SIZE \
1672     (__GLX_PIXEL_HDR_SIZE + __GLX_TEXSUBIMAGE_HDR_SIZE)
1673 
1674 typedef struct {
1675     __GLX_RENDER_HDR;
1676     __GLX_PIXEL_HDR;
1677     __GLX_TEXSUBIMAGE_HDR;
1678 } __GLXtexSubImageHeader;
1679 
1680 typedef struct {
1681     __GLX_RENDER_LARGE_HDR;
1682     __GLX_PIXEL_HDR;
1683     __GLX_TEXSUBIMAGE_HDR;
1684 } __GLXtexSubImageLargeHeader;
1685 
1686 typedef struct {
1687     __GLX_PIXEL_HDR;
1688     __GLX_TEXSUBIMAGE_HDR;
1689 } __GLXdispatchTexSubImageHeader;
1690 
1691 /*
1692 ** Data that is specific to a glTexSubImage3D and 4D calls.  The
1693 ** data is sent in the following order:
1694 **	Render or RenderLarge header
1695 **	Pixel 3D header
1696 **	TexSubImage 3D header
1697 ** When a glTexSubImage3D call is made, the woffset and size4d fields
1698 ** are unexamined by the server and are considered to be padding.
1699 */
1700 #define __GLX_TEXSUBIMAGE_3D_HDR	\
1701     CARD32	target;			\
1702     CARD32	level;			\
1703     CARD32	xoffset;		\
1704     CARD32	yoffset;		\
1705     CARD32	zoffset;		\
1706     CARD32	woffset;		\
1707     CARD32	width;			\
1708     CARD32	height;			\
1709     CARD32	depth;			\
1710     CARD32	size4d;			\
1711     CARD32	format;			\
1712     CARD32	type;			\
1713     CARD32	nullImage		\
1714 
1715 #define __GLX_TEXSUBIMAGE_3D_HDR_SIZE 52
1716 
1717 #define __GLX_TEXSUBIMAGE_3D_CMD_HDR_SIZE \
1718     (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_3D_HDR_SIZE + \
1719 		__GLX_TEXSUBIMAGE_3D_HDR_SIZE)
1720 
1721 #define __GLX_TEXSUBIMAGE_3D_CMD_DISPATCH_HDR_SIZE \
1722     (__GLX_PIXEL_3D_HDR_SIZE + __GLX_TEXSUBIMAGE_3D_HDR_SIZE)
1723 
1724 typedef struct {
1725     __GLX_RENDER_HDR;
1726     __GLX_PIXEL_3D_HDR;
1727     __GLX_TEXSUBIMAGE_3D_HDR;
1728 } __GLXtexSubImage3DHeader;
1729 
1730 typedef struct {
1731     __GLX_RENDER_LARGE_HDR;
1732     __GLX_PIXEL_3D_HDR;
1733     __GLX_TEXSUBIMAGE_3D_HDR;
1734 } __GLXtexSubImage3DLargeHeader;
1735 
1736 typedef struct {
1737     __GLX_PIXEL_3D_HDR;
1738     __GLX_TEXSUBIMAGE_3D_HDR;
1739 } __GLXdispatchTexSubImage3DHeader;
1740 
1741 /**
1742  * Data that is specific to a \c glCompressedTexImage1D or
1743  * \c glCompressedTexImage2D call.  The data is sent in the following
1744  * order:
1745  *     - Render or RenderLarge header
1746  *     - CompressedTexImage header
1747  *
1748  * When a \c glCompressedTexImage1D call is made, the \c height field is
1749  * not examined by the server and is considered padding.
1750  */
1751 
1752 #define __GLX_COMPRESSED_TEXIMAGE_HDR \
1753     CARD32     target;		      \
1754     CARD32     level;		      \
1755     CARD32     internalFormat;	      \
1756     CARD32     width;		      \
1757     CARD32     height;		      \
1758     CARD32     border;		      \
1759     CARD32     imageSize
1760 
1761 #define __GLX_COMPRESSED_TEXIMAGE_HDR_SIZE 28
1762 
1763 #define __GLX_COMPRESSED_TEXIMAGE_CMD_HDR_SIZE \
1764     (__GLX_RENDER_HDR_SIZE + __GLX_COMPRESSED_TEXIMAGE_HDR_SIZE)
1765 
1766 #define __GLX_COMPRESSED_TEXIMAGE_DISPATCH_HDR_SIZE \
1767     (__GLX_COMPRESSED_TEXIMAGE_HDR_SIZE)
1768 
1769 typedef struct {
1770     __GLX_RENDER_HDR;
1771     __GLX_COMPRESSED_TEXIMAGE_HDR;
1772 } __GLXcompressedTexImageHeader;
1773 
1774 typedef struct {
1775     __GLX_RENDER_LARGE_HDR;
1776     __GLX_COMPRESSED_TEXIMAGE_HDR;
1777 } __GLXcompressedTexImageLargeHeader;
1778 
1779 typedef struct {
1780     __GLX_COMPRESSED_TEXIMAGE_HDR;
1781 } __GLXdispatchCompressedTexImageHeader;
1782 
1783 /**
1784  * Data that is specifi to a \c glCompressedTexSubImage1D or
1785  * \c glCompressedTexSubImage2D call.  The data is sent in the following
1786  * order:
1787  *     - Render or RenderLarge header
1788  *     - CompressedTexSubImage header
1789  *
1790  * When a \c glCompressedTexSubImage1D call is made, the \c yoffset and
1791  * \c height fields are not examined by the server and are considered padding.
1792  */
1793 
1794 #define __GLX_COMPRESSED_TEXSUBIMAGE_HDR \
1795     CARD32     target;			 \
1796     CARD32     level;			 \
1797     CARD32     xoffset;			 \
1798     CARD32     yoffset;			 \
1799     CARD32     width;			 \
1800     CARD32     height;			 \
1801     CARD32     format;			 \
1802     CARD32     imageSize
1803 
1804 #define __GLX_COMPRESSED_TEXSUBIMAGE_HDR_SIZE 32
1805 
1806 #define __GLX_COMPRESSED_TEXSUBIMAGE_CMD_HDR_SIZE \
1807     (__GLX_RENDER_HDR_SIZE + __GLX_COMPRESSED_TEXSUBIMAGE_HDR_SIZE)
1808 
1809 #define __GLX_COMPRESSED_TEXSUBIMAGE_DISPATCH_HDR_SIZE \
1810     (__GLX_COMPRESSED_TEXSUBIMAGE_HDR_SIZE)
1811 
1812 typedef struct {
1813     __GLX_RENDER_HDR;
1814     __GLX_COMPRESSED_TEXSUBIMAGE_HDR;
1815 } __GLXcompressedTexSubImageHeader;
1816 
1817 typedef struct {
1818     __GLX_RENDER_LARGE_HDR;
1819     __GLX_COMPRESSED_TEXSUBIMAGE_HDR;
1820 } __GLXcompressedTexSubImageLargeHeader;
1821 
1822 typedef struct {
1823     __GLX_COMPRESSED_TEXSUBIMAGE_HDR;
1824 } __GLXdispatchCompressedTexSubImageHeader;
1825 
1826 /**
1827  * Data that is specific to a \c glCompressedTexImage3D call.  The data is
1828  * sent in the following order:
1829  *     - Render or RenderLarge header
1830  *     - CompressedTexImage3D header
1831  */
1832 
1833 #define __GLX_COMPRESSED_TEXIMAGE_3D_HDR \
1834     CARD32     target;			 \
1835     CARD32     level;			 \
1836     CARD32     internalFormat;		 \
1837     CARD32     width;			 \
1838     CARD32     height;			 \
1839     CARD32     depth;			 \
1840     CARD32     border;			 \
1841     CARD32     imageSize
1842 
1843 #define __GLX_COMPRESSED_TEXIMAGE_3D_HDR_SIZE 32
1844 
1845 #define __GLX_COMPRESSED_TEXIMAGE_3D_CMD_HDR_SIZE \
1846     (__GLX_RENDER_HDR_SIZE + __GLX_COMPRESSED_TEXIMAGE_3D_HDR_SIZE)
1847 
1848 #define __GLX_COMPRESSED_TEXIMAGE_3D_DISPATCH_HDR_SIZE \
1849     (__GLX_COMPRESSED_TEXIMAGE_3D_HDR_SIZE)
1850 
1851 typedef struct {
1852     __GLX_RENDER_HDR;
1853     __GLX_COMPRESSED_TEXIMAGE_3D_HDR;
1854 } __GLXcompressedTexImage3DHeader;
1855 
1856 typedef struct {
1857     __GLX_RENDER_LARGE_HDR;
1858     __GLX_COMPRESSED_TEXIMAGE_3D_HDR;
1859 } __GLXcompressedTexImage3DLargeHeader;
1860 
1861 typedef struct {
1862     __GLX_COMPRESSED_TEXIMAGE_3D_HDR;
1863 } __GLXdispatchCompressedTexImage3DHeader;
1864 
1865 /**
1866  * Data that is specifi to a \c glCompressedTexSubImage3D call.  The data is
1867  * sent in the following order:
1868  *     - Render or RenderLarge header
1869  *     - CompressedTexSubImage3D header
1870  */
1871 
1872 #define __GLX_COMPRESSED_TEXSUBIMAGE_3D_HDR \
1873     CARD32     target;			    \
1874     CARD32     level;			    \
1875     CARD32     xoffset;			    \
1876     CARD32     yoffset;			    \
1877     CARD32     zoffset;			    \
1878     CARD32     width;			    \
1879     CARD32     height;			    \
1880     CARD32     depth;			    \
1881     CARD32     format;			    \
1882     CARD32     imageSize
1883 
1884 #define __GLX_COMPRESSED_TEXSUBIMAGE_3D_HDR_SIZE 32
1885 
1886 #define __GLX_COMPRESSED_TEXSUBIMAGE_3D_CMD_HDR_SIZE \
1887     (__GLX_RENDER_HDR_SIZE + __GLX_COMPRESSED_TEXSUBIMAGE_3D_HDR_SIZE)
1888 
1889 #define __GLX_COMPRESSED_TEXSUBIMAGE_3D_DISPATCH_HDR_SIZE \
1890     (__GLX_COMPRESSED_TEXSUBIMAGE_3D_HDR_SIZE)
1891 
1892 typedef struct {
1893     __GLX_RENDER_HDR;
1894     __GLX_COMPRESSED_TEXSUBIMAGE_3D_HDR;
1895 } __GLXcompressedTexSubImage3DHeader;
1896 
1897 typedef struct {
1898     __GLX_RENDER_LARGE_HDR;
1899     __GLX_COMPRESSED_TEXSUBIMAGE_3D_HDR;
1900 } __GLXcompressedTexSubImage3DLargeHeader;
1901 
1902 typedef struct {
1903     __GLX_COMPRESSED_TEXSUBIMAGE_3D_HDR;
1904 } __GLXdispatchCompressedTexSubImage3DHeader;
1905 
1906 /*
1907 ** Data that is specific to a glDrawPixels call.  The data is sent in the
1908 ** following order:
1909 **	Render or RenderLarge header
1910 **	Pixel header
1911 **	DrawPixels header
1912 */
1913 #define __GLX_DRAWPIXELS_HDR \
1914     CARD32	width;	     \
1915     CARD32	height;	     \
1916     CARD32	format;	     \
1917     CARD32	type
1918 
1919 #define __GLX_DRAWPIXELS_HDR_SIZE 16
1920 
1921 #define __GLX_DRAWPIXELS_CMD_HDR_SIZE \
1922     (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_DRAWPIXELS_HDR_SIZE)
1923 
1924 #define __GLX_DRAWPIXELS_CMD_DISPATCH_HDR_SIZE \
1925     (__GLX_PIXEL_HDR_SIZE + __GLX_DRAWPIXELS_HDR_SIZE)
1926 
1927 typedef struct {
1928     __GLX_RENDER_HDR;
1929     __GLX_PIXEL_HDR;
1930     __GLX_DRAWPIXELS_HDR;
1931 } __GLXdrawPixelsHeader;
1932 
1933 typedef struct {
1934     __GLX_RENDER_LARGE_HDR;
1935     __GLX_PIXEL_HDR;
1936     __GLX_DRAWPIXELS_HDR;
1937 } __GLXdrawPixelsLargeHeader;
1938 
1939 typedef struct {
1940     __GLX_PIXEL_HDR;
1941     __GLX_DRAWPIXELS_HDR;
1942 } __GLXdispatchDrawPixelsHeader;
1943 
1944 /*
1945 ** Data that is specific to a glConvolutionFilter1D or glConvolutionFilter2D
1946 ** call.  The data is sent in the following order:
1947 **	Render or RenderLarge header
1948 **	Pixel header
1949 **	ConvolutionFilter header
1950 ** When a glConvolutionFilter1D call the height field is unexamined by the server.
1951 */
1952 #define __GLX_CONV_FILT_HDR	\
1953     CARD32	target;		\
1954     CARD32	internalformat;	\
1955     CARD32	width;		\
1956     CARD32	height;		\
1957     CARD32	format;		\
1958     CARD32	type
1959 
1960 #define __GLX_CONV_FILT_HDR_SIZE 24
1961 
1962 #define __GLX_CONV_FILT_CMD_HDR_SIZE \
1963     (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_CONV_FILT_HDR_SIZE)
1964 
1965 #define __GLX_CONV_FILT_CMD_DISPATCH_HDR_SIZE \
1966     (__GLX_PIXEL_HDR_SIZE + __GLX_CONV_FILT_HDR_SIZE)
1967 typedef struct {
1968     __GLX_RENDER_HDR;
1969     __GLX_PIXEL_HDR;
1970     __GLX_CONV_FILT_HDR;
1971 } __GLXConvolutionFilterHeader;
1972 
1973 typedef struct {
1974     __GLX_RENDER_LARGE_HDR;
1975     __GLX_PIXEL_HDR;
1976     __GLX_CONV_FILT_HDR;
1977 } __GLXConvolutionFilterLargeHeader;
1978 
1979 typedef struct {
1980     __GLX_PIXEL_HDR;
1981     __GLX_CONV_FILT_HDR;
1982 } __GLXdispatchConvolutionFilterHeader;
1983 
1984 /*
1985 ** Data that is specific to a glDrawArraysEXT call.  The data is sent in the
1986 ** following order:
1987 **	Render or RenderLarge header
1988 **	Draw Arrays header
1989 **	a variable number of Component headers
1990 **	vertex data for each component type
1991 */
1992 
1993 #define __GLX_DRAWARRAYS_HDR \
1994     CARD32	numVertexes;   \
1995     CARD32	numComponents; \
1996     CARD32	primType
1997 
1998 #define __GLX_DRAWARRAYS_HDR_SIZE 12
1999 
2000 #define __GLX_DRAWARRAYS_CMD_HDR_SIZE \
2001     (__GLX_RENDER_HDR_SIZE + __GLX_DRAWARRAYS_HDR_SIZE)
2002 
2003 typedef struct {
2004     __GLX_RENDER_HDR;
2005     __GLX_DRAWARRAYS_HDR;
2006 } __GLXdrawArraysHeader;
2007 
2008 typedef struct {
2009     __GLX_RENDER_LARGE_HDR;
2010     __GLX_DRAWARRAYS_HDR;
2011 } __GLXdrawArraysLargeHeader;
2012 
2013 typedef struct {
2014     __GLX_DRAWARRAYS_HDR;
2015 } __GLXdispatchDrawArraysHeader;
2016 
2017 #define __GLX_COMPONENT_HDR \
2018     CARD32	datatype;   \
2019     INT32	numVals;    \
2020     CARD32	component
2021 
2022 typedef struct {
2023     __GLX_COMPONENT_HDR;
2024 } __GLXdispatchDrawArraysComponentHeader;
2025 
2026 #define __GLX_COMPONENT_HDR_SIZE 12
2027 
2028 /*
2029 ** Data that is specific to a glColorTable call
2030 **	The data is sent in the following order:
2031 **	Render or RenderLarge header
2032 **	Pixel header
2033 **	ColorTable header
2034 */
2035 
2036 #define __GLX_COLOR_TABLE_HDR	     \
2037     CARD32	target;		     \
2038     CARD32	internalformat;	     \
2039     CARD32	width;		     \
2040     CARD32	format;		     \
2041     CARD32	type
2042 
2043 #define __GLX_COLOR_TABLE_HDR_SIZE 20
2044 
2045 #define __GLX_COLOR_TABLE_CMD_HDR_SIZE \
2046     (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_COLOR_TABLE_HDR_SIZE)
2047 
2048 typedef struct {
2049     __GLX_RENDER_HDR;
2050     __GLX_PIXEL_HDR;
2051     __GLX_COLOR_TABLE_HDR;
2052 } __GLXColorTableHeader;
2053 
2054 typedef struct {
2055     __GLX_RENDER_LARGE_HDR;
2056     __GLX_PIXEL_HDR;
2057     __GLX_COLOR_TABLE_HDR;
2058 } __GLXColorTableLargeHeader;
2059 
2060 typedef struct {
2061     __GLX_PIXEL_HDR;
2062     __GLX_COLOR_TABLE_HDR;
2063 } __GLXdispatchColorTableHeader;
2064 
2065 /*
2066 ** Data that is specific to a glColorSubTable call
2067 **	The data is sent in the following order:
2068 **	Render or RenderLarge header
2069 **	Pixel header
2070 **	ColorTable header
2071 */
2072 
2073 #define __GLX_COLOR_SUBTABLE_HDR    \
2074     CARD32	target;		    \
2075     CARD32	start;		    \
2076     CARD32	count;		    \
2077     CARD32	format;		    \
2078     CARD32	type
2079 
2080 #define __GLX_COLOR_SUBTABLE_HDR_SIZE 20
2081 
2082 #define __GLX_COLOR_SUBTABLE_CMD_HDR_SIZE \
2083     (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + \
2084      __GLX_COLOR_SUBTABLE_HDR_SIZE)
2085 
2086 typedef struct {
2087     __GLX_RENDER_HDR;
2088     __GLX_PIXEL_HDR;
2089     __GLX_COLOR_SUBTABLE_HDR;
2090 } __GLXColorSubTableHeader;
2091 
2092 typedef struct {
2093     __GLX_RENDER_LARGE_HDR;
2094     __GLX_PIXEL_HDR;
2095     __GLX_COLOR_SUBTABLE_HDR;
2096 } __GLXColorSubTableLargeHeader;
2097 
2098 typedef struct {
2099     __GLX_PIXEL_HDR;
2100     __GLX_COLOR_SUBTABLE_HDR;
2101 } __GLXdispatchColorSubTableHeader;
2102 
2103 #define GLX_WINDOW_TYPE		1
2104 #define GLX_PIXMAP_TYPE		2
2105 #define GLX_VIDEO_SOURCE_TYPE	3
2106 #define GLX_PBUFFER_TYPE	4
2107 /* 5 is for DM_PBUFFER */
2108 #define GLX_GLXWINDOW_TYPE	6
2109 
2110 /*****************************************************************************/
2111 
2112 /*
2113 ** Restore these definitions back to the typedefs in glx.h
2114 */
2115 #undef GLXContextID
2116 #undef GLXPixmap
2117 #undef GLXDrawable
2118 #undef GLXPbuffer
2119 #undef GLXWindow
2120 #undef GLXFBConfigID
2121 #undef GLXFBConfigIDSGIX
2122 #undef GLXPbufferSGIX
2123 
2124 
2125 /* Opcodes for GLX commands */
2126 
2127 #define X_GLXRender                       1
2128 #define X_GLXRenderLarge                  2
2129 #define X_GLXCreateContext                3
2130 #define X_GLXDestroyContext               4
2131 #define X_GLXMakeCurrent                  5
2132 #define X_GLXIsDirect                     6
2133 #define X_GLXQueryVersion                 7
2134 #define X_GLXWaitGL                       8
2135 #define X_GLXWaitX                        9
2136 #define X_GLXCopyContext                 10
2137 #define X_GLXSwapBuffers                 11
2138 #define X_GLXUseXFont                    12
2139 #define X_GLXCreateGLXPixmap             13
2140 #define X_GLXGetVisualConfigs            14
2141 #define X_GLXDestroyGLXPixmap            15
2142 #define X_GLXVendorPrivate               16
2143 #define X_GLXVendorPrivateWithReply      17
2144 #define X_GLXQueryExtensionsString       18
2145 #define X_GLXQueryServerString           19
2146 #define X_GLXClientInfo                  20
2147 #define X_GLXGetFBConfigs                21
2148 #define X_GLXCreatePixmap                22
2149 #define X_GLXDestroyPixmap               23
2150 #define X_GLXCreateNewContext            24
2151 #define X_GLXQueryContext                25
2152 #define X_GLXMakeContextCurrent          26
2153 #define X_GLXCreatePbuffer               27
2154 #define X_GLXDestroyPbuffer              28
2155 #define X_GLXGetDrawableAttributes       29
2156 #define X_GLXChangeDrawableAttributes    30
2157 #define X_GLXCreateWindow                31
2158 #define X_GLXDestroyWindow               32
2159 #define X_GLXSetClientInfoARB            33
2160 #define X_GLXCreateContextAttribsARB     34
2161 #define X_GLXSetClientInfo2ARB           35
2162 
2163 /* typo compatibility with older headers */
2164 #define X_GLXCreateContextAtrribsARB     34
2165 #define X_GLXSetConfigInfo2ARB           35
2166 
2167 /* Opcodes for single commands (part of GLX command space) */
2168 
2169 #define X_GLsop_NewList                    101
2170 #define X_GLsop_EndList                    102
2171 #define X_GLsop_DeleteLists                103
2172 #define X_GLsop_GenLists                   104
2173 #define X_GLsop_FeedbackBuffer             105
2174 #define X_GLsop_SelectBuffer               106
2175 #define X_GLsop_RenderMode                 107
2176 #define X_GLsop_Finish                     108
2177 #define X_GLsop_Flush                      142
2178 #define X_GLsop_PixelStoref                109
2179 #define X_GLsop_PixelStorei                110
2180 #define X_GLsop_ReadPixels                 111
2181 #define X_GLsop_GetBooleanv                112
2182 #define X_GLsop_GetClipPlane               113
2183 #define X_GLsop_GetDoublev                 114
2184 #define X_GLsop_GetError                   115
2185 #define X_GLsop_GetFloatv                  116
2186 #define X_GLsop_GetIntegerv                117
2187 #define X_GLsop_GetLightfv                 118
2188 #define X_GLsop_GetLightiv                 119
2189 #define X_GLsop_GetMapdv                   120
2190 #define X_GLsop_GetMapfv                   121
2191 #define X_GLsop_GetMapiv                   122
2192 #define X_GLsop_GetMaterialfv              123
2193 #define X_GLsop_GetMaterialiv              124
2194 #define X_GLsop_GetPixelMapfv              125
2195 #define X_GLsop_GetPixelMapuiv             126
2196 #define X_GLsop_GetPixelMapusv             127
2197 #define X_GLsop_GetPolygonStipple          128
2198 #define X_GLsop_GetString                  129
2199 #define X_GLsop_GetTexEnvfv                130
2200 #define X_GLsop_GetTexEnviv                131
2201 #define X_GLsop_GetTexGendv                132
2202 #define X_GLsop_GetTexGenfv                133
2203 #define X_GLsop_GetTexGeniv                134
2204 #define X_GLsop_GetTexImage                135
2205 #define X_GLsop_GetTexParameterfv          136
2206 #define X_GLsop_GetTexParameteriv          137
2207 #define X_GLsop_GetTexLevelParameterfv     138
2208 #define X_GLsop_GetTexLevelParameteriv     139
2209 #define X_GLsop_IsEnabled                  140
2210 #define X_GLsop_IsList                     141
2211 #define X_GLsop_AreTexturesResident        143
2212 #define X_GLsop_DeleteTextures             144
2213 #define X_GLsop_GenTextures                145
2214 #define X_GLsop_IsTexture                  146
2215 #define X_GLsop_GetColorTable              147
2216 #define X_GLsop_GetColorTableParameterfv   148
2217 #define X_GLsop_GetColorTableParameteriv   149
2218 #define X_GLsop_GetConvolutionFilter       150
2219 #define X_GLsop_GetConvolutionParameterfv  151
2220 #define X_GLsop_GetConvolutionParameteriv  152
2221 #define X_GLsop_GetSeparableFilter         153
2222 #define X_GLsop_GetHistogram               154
2223 #define X_GLsop_GetHistogramParameterfv    155
2224 #define X_GLsop_GetHistogramParameteriv    156
2225 #define X_GLsop_GetMinmax                  157
2226 #define X_GLsop_GetMinmaxParameterfv       158
2227 #define X_GLsop_GetMinmaxParameteriv       159
2228 #define X_GLsop_GetCompressedTexImage      160
2229 
2230 
2231 /* Opcodes for rendering commands */
2232 
2233 #define X_GLrop_CallList                     1
2234 #define X_GLrop_CallLists                    2
2235 #define X_GLrop_ListBase                     3
2236 #define X_GLrop_Begin                        4
2237 #define X_GLrop_Bitmap                       5
2238 #define X_GLrop_Color3bv                     6
2239 #define X_GLrop_Color3dv                     7
2240 #define X_GLrop_Color3fv                     8
2241 #define X_GLrop_Color3iv                     9
2242 #define X_GLrop_Color3sv                    10
2243 #define X_GLrop_Color3ubv                   11
2244 #define X_GLrop_Color3uiv                   12
2245 #define X_GLrop_Color3usv                   13
2246 #define X_GLrop_Color4bv                    14
2247 #define X_GLrop_Color4dv                    15
2248 #define X_GLrop_Color4fv                    16
2249 #define X_GLrop_Color4iv                    17
2250 #define X_GLrop_Color4sv                    18
2251 #define X_GLrop_Color4ubv                   19
2252 #define X_GLrop_Color4uiv                   20
2253 #define X_GLrop_Color4usv                   21
2254 #define X_GLrop_EdgeFlagv                   22
2255 #define X_GLrop_End                         23
2256 #define X_GLrop_Indexdv                     24
2257 #define X_GLrop_Indexfv                     25
2258 #define X_GLrop_Indexiv                     26
2259 #define X_GLrop_Indexsv                     27
2260 #define X_GLrop_Normal3bv                   28
2261 #define X_GLrop_Normal3dv                   29
2262 #define X_GLrop_Normal3fv                   30
2263 #define X_GLrop_Normal3iv                   31
2264 #define X_GLrop_Normal3sv                   32
2265 #define X_GLrop_RasterPos2dv                33
2266 #define X_GLrop_RasterPos2fv                34
2267 #define X_GLrop_RasterPos2iv                35
2268 #define X_GLrop_RasterPos2sv                36
2269 #define X_GLrop_RasterPos3dv                37
2270 #define X_GLrop_RasterPos3fv                38
2271 #define X_GLrop_RasterPos3iv                39
2272 #define X_GLrop_RasterPos3sv                40
2273 #define X_GLrop_RasterPos4dv                41
2274 #define X_GLrop_RasterPos4fv                42
2275 #define X_GLrop_RasterPos4iv                43
2276 #define X_GLrop_RasterPos4sv                44
2277 #define X_GLrop_Rectdv                      45
2278 #define X_GLrop_Rectfv                      46
2279 #define X_GLrop_Rectiv                      47
2280 #define X_GLrop_Rectsv                      48
2281 #define X_GLrop_TexCoord1dv                 49
2282 #define X_GLrop_TexCoord1fv                 50
2283 #define X_GLrop_TexCoord1iv                 51
2284 #define X_GLrop_TexCoord1sv                 52
2285 #define X_GLrop_TexCoord2dv                 53
2286 #define X_GLrop_TexCoord2fv                 54
2287 #define X_GLrop_TexCoord2iv                 55
2288 #define X_GLrop_TexCoord2sv                 56
2289 #define X_GLrop_TexCoord3dv                 57
2290 #define X_GLrop_TexCoord3fv                 58
2291 #define X_GLrop_TexCoord3iv                 59
2292 #define X_GLrop_TexCoord3sv                 60
2293 #define X_GLrop_TexCoord4dv                 61
2294 #define X_GLrop_TexCoord4fv                 62
2295 #define X_GLrop_TexCoord4iv                 63
2296 #define X_GLrop_TexCoord4sv                 64
2297 #define X_GLrop_Vertex2dv                   65
2298 #define X_GLrop_Vertex2fv                   66
2299 #define X_GLrop_Vertex2iv                   67
2300 #define X_GLrop_Vertex2sv                   68
2301 #define X_GLrop_Vertex3dv                   69
2302 #define X_GLrop_Vertex3fv                   70
2303 #define X_GLrop_Vertex3iv                   71
2304 #define X_GLrop_Vertex3sv                   72
2305 #define X_GLrop_Vertex4dv                   73
2306 #define X_GLrop_Vertex4fv                   74
2307 #define X_GLrop_Vertex4iv                   75
2308 #define X_GLrop_Vertex4sv                   76
2309 #define X_GLrop_ClipPlane                   77
2310 #define X_GLrop_ColorMaterial               78
2311 #define X_GLrop_CullFace                    79
2312 #define X_GLrop_Fogf                        80
2313 #define X_GLrop_Fogfv                       81
2314 #define X_GLrop_Fogi                        82
2315 #define X_GLrop_Fogiv                       83
2316 #define X_GLrop_FrontFace                   84
2317 #define X_GLrop_Hint                        85
2318 #define X_GLrop_Lightf                      86
2319 #define X_GLrop_Lightfv                     87
2320 #define X_GLrop_Lighti                      88
2321 #define X_GLrop_Lightiv                     89
2322 #define X_GLrop_LightModelf                 90
2323 #define X_GLrop_LightModelfv                91
2324 #define X_GLrop_LightModeli                 92
2325 #define X_GLrop_LightModeliv                93
2326 #define X_GLrop_LineStipple                 94
2327 #define X_GLrop_LineWidth                   95
2328 #define X_GLrop_Materialf                   96
2329 #define X_GLrop_Materialfv                  97
2330 #define X_GLrop_Materiali                   98
2331 #define X_GLrop_Materialiv                  99
2332 #define X_GLrop_PointSize                  100
2333 #define X_GLrop_PolygonMode                101
2334 #define X_GLrop_PolygonStipple             102
2335 #define X_GLrop_Scissor                    103
2336 #define X_GLrop_ShadeModel                 104
2337 #define X_GLrop_TexParameterf              105
2338 #define X_GLrop_TexParameterfv             106
2339 #define X_GLrop_TexParameteri              107
2340 #define X_GLrop_TexParameteriv             108
2341 #define X_GLrop_TexImage1D                 109
2342 #define X_GLrop_TexImage2D                 110
2343 #define X_GLrop_TexEnvf                    111
2344 #define X_GLrop_TexEnvfv                   112
2345 #define X_GLrop_TexEnvi                    113
2346 #define X_GLrop_TexEnviv                   114
2347 #define X_GLrop_TexGend                    115
2348 #define X_GLrop_TexGendv                   116
2349 #define X_GLrop_TexGenf                    117
2350 #define X_GLrop_TexGenfv                   118
2351 #define X_GLrop_TexGeni                    119
2352 #define X_GLrop_TexGeniv                   120
2353 #define X_GLrop_InitNames                  121
2354 #define X_GLrop_LoadName                   122
2355 #define X_GLrop_PassThrough                123
2356 #define X_GLrop_PopName                    124
2357 #define X_GLrop_PushName                   125
2358 #define X_GLrop_DrawBuffer                 126
2359 #define X_GLrop_Clear                      127
2360 #define X_GLrop_ClearAccum                 128
2361 #define X_GLrop_ClearIndex                 129
2362 #define X_GLrop_ClearColor                 130
2363 #define X_GLrop_ClearStencil               131
2364 #define X_GLrop_ClearDepth                 132
2365 #define X_GLrop_StencilMask                133
2366 #define X_GLrop_ColorMask                  134
2367 #define X_GLrop_DepthMask                  135
2368 #define X_GLrop_IndexMask                  136
2369 #define X_GLrop_Accum                      137
2370 #define X_GLrop_Disable                    138
2371 #define X_GLrop_Enable                     139
2372 #define X_GLrop_PopAttrib                  141
2373 #define X_GLrop_PushAttrib                 142
2374 #define X_GLrop_Map1d                      143
2375 #define X_GLrop_Map1f                      144
2376 #define X_GLrop_Map2d                      145
2377 #define X_GLrop_Map2f                      146
2378 #define X_GLrop_MapGrid1d                  147
2379 #define X_GLrop_MapGrid1f                  148
2380 #define X_GLrop_MapGrid2d                  149
2381 #define X_GLrop_MapGrid2f                  150
2382 #define X_GLrop_EvalCoord1dv               151
2383 #define X_GLrop_EvalCoord1fv               152
2384 #define X_GLrop_EvalCoord2dv               153
2385 #define X_GLrop_EvalCoord2fv               154
2386 #define X_GLrop_EvalMesh1                  155
2387 #define X_GLrop_EvalPoint1                 156
2388 #define X_GLrop_EvalMesh2                  157
2389 #define X_GLrop_EvalPoint2                 158
2390 #define X_GLrop_AlphaFunc                  159
2391 #define X_GLrop_BlendFunc                  160
2392 #define X_GLrop_LogicOp                    161
2393 #define X_GLrop_StencilFunc                162
2394 #define X_GLrop_StencilOp                  163
2395 #define X_GLrop_DepthFunc                  164
2396 #define X_GLrop_PixelZoom                  165
2397 #define X_GLrop_PixelTransferf             166
2398 #define X_GLrop_PixelTransferi             167
2399 #define X_GLrop_PixelMapfv                 168
2400 #define X_GLrop_PixelMapuiv                169
2401 #define X_GLrop_PixelMapusv                170
2402 #define X_GLrop_ReadBuffer                 171
2403 #define X_GLrop_CopyPixels                 172
2404 #define X_GLrop_DrawPixels                 173
2405 #define X_GLrop_DepthRange                 174
2406 #define X_GLrop_Frustum                    175
2407 #define X_GLrop_LoadIdentity               176
2408 #define X_GLrop_LoadMatrixf                177
2409 #define X_GLrop_LoadMatrixd                178
2410 #define X_GLrop_MatrixMode                 179
2411 #define X_GLrop_MultMatrixf                180
2412 #define X_GLrop_MultMatrixd                181
2413 #define X_GLrop_Ortho                      182
2414 #define X_GLrop_PopMatrix                  183
2415 #define X_GLrop_PushMatrix                 184
2416 #define X_GLrop_Rotated                    185
2417 #define X_GLrop_Rotatef                    186
2418 #define X_GLrop_Scaled                     187
2419 #define X_GLrop_Scalef                     188
2420 #define X_GLrop_Translated                 189
2421 #define X_GLrop_Translatef                 190
2422 #define X_GLrop_Viewport                   191
2423 #define X_GLrop_DrawArrays                 193
2424 #define X_GLrop_PolygonOffset              192
2425 #define X_GLrop_CopyTexImage1D             4119
2426 #define X_GLrop_CopyTexImage2D             4120
2427 #define X_GLrop_CopyTexSubImage1D          4121
2428 #define X_GLrop_CopyTexSubImage2D          4122
2429 #define X_GLrop_TexSubImage1D              4099
2430 #define X_GLrop_TexSubImage2D              4100
2431 #define X_GLrop_BindTexture                4117
2432 #define X_GLrop_PrioritizeTextures         4118
2433 #define X_GLrop_Indexubv                   194
2434 #define X_GLrop_BlendColor                 4096
2435 #define X_GLrop_BlendEquation              4097
2436 #define X_GLrop_ColorTable                 2053
2437 #define X_GLrop_ColorTableParameterfv      2054
2438 #define X_GLrop_ColorTableParameteriv      2055
2439 #define X_GLrop_CopyColorTable             2056
2440 #define X_GLrop_ColorSubTable              195
2441 #define X_GLrop_CopyColorSubTable          196
2442 #define X_GLrop_ConvolutionFilter1D        4101
2443 #define X_GLrop_ConvolutionFilter2D        4102
2444 #define X_GLrop_ConvolutionParameterf      4103
2445 #define X_GLrop_ConvolutionParameterfv     4104
2446 #define X_GLrop_ConvolutionParameteri      4105
2447 #define X_GLrop_ConvolutionParameteriv     4106
2448 #define X_GLrop_CopyConvolutionFilter1D    4107
2449 #define X_GLrop_CopyConvolutionFilter2D    4108
2450 #define X_GLrop_SeparableFilter2D          4109
2451 #define X_GLrop_Histogram                  4110
2452 #define X_GLrop_Minmax                     4111
2453 #define X_GLrop_ResetHistogram             4112
2454 #define X_GLrop_ResetMinmax                4113
2455 #define X_GLrop_TexImage3D                 4114
2456 #define X_GLrop_TexSubImage3D              4115
2457 #define X_GLrop_CopyTexSubImage3D          4123
2458 #define X_GLrop_DrawArraysEXT              4116
2459 
2460 /* Added for core GL version 1.3 */
2461 
2462 #define X_GLrop_ActiveTextureARB            197
2463 #define X_GLrop_MultiTexCoord1dvARB         198
2464 #define X_GLrop_MultiTexCoord1fvARB         199
2465 #define X_GLrop_MultiTexCoord1ivARB         200
2466 #define X_GLrop_MultiTexCoord1svARB         201
2467 #define X_GLrop_MultiTexCoord2dvARB         202
2468 #define X_GLrop_MultiTexCoord2fvARB         203
2469 #define X_GLrop_MultiTexCoord2ivARB         204
2470 #define X_GLrop_MultiTexCoord2svARB         205
2471 #define X_GLrop_MultiTexCoord3dvARB         206
2472 #define X_GLrop_MultiTexCoord3fvARB         207
2473 #define X_GLrop_MultiTexCoord3ivARB         208
2474 #define X_GLrop_MultiTexCoord3svARB         209
2475 #define X_GLrop_MultiTexCoord4dvARB         210
2476 #define X_GLrop_MultiTexCoord4fvARB         211
2477 #define X_GLrop_MultiTexCoord4ivARB         212
2478 #define X_GLrop_MultiTexCoord4svARB         213
2479 #define X_GLrop_CompressedTexImage1D        214
2480 #define X_GLrop_CompressedTexImage2D        215
2481 #define X_GLrop_CompressedTexImage3D        216
2482 #define X_GLrop_CompressedTexSubImage1D     217
2483 #define X_GLrop_CompressedTexSubImage2D     218
2484 #define X_GLrop_CompressedTexSubImage3D     219
2485 #define X_GLrop_SampleCoverageARB           229
2486 
2487 /* Added for core GL version 1.4 */
2488 
2489 #define X_GLrop_WindowPos3fARB              230
2490 #define X_GLrop_FogCoordfv                  4124
2491 #define X_GLrop_FogCoorddv                  4125
2492 #define X_GLrop_PointParameterfARB          2065
2493 #define X_GLrop_PointParameterfvARB         2066
2494 #define X_GLrop_SecondaryColor3bv           4126
2495 #define X_GLrop_SecondaryColor3sv           4127
2496 #define X_GLrop_SecondaryColor3iv           4128
2497 #define X_GLrop_SecondaryColor3fv           4129
2498 #define X_GLrop_SecondaryColor3dv           4130
2499 #define X_GLrop_SecondaryColor3ubv          4131
2500 #define X_GLrop_SecondaryColor3usv          4132
2501 #define X_GLrop_SecondaryColor3uiv          4133
2502 #define X_GLrop_BlendFuncSeparate           4134
2503 #define X_GLrop_PointParameteri             4221
2504 #define X_GLrop_PointParameteriv            4222
2505 
2506 /* Added for core GL version 1.5 */
2507 /* XXX opcodes not defined in the spec */
2508 
2509 /* Opcodes for Vendor Private commands */
2510 
2511 
2512 #define X_GLvop_GetConvolutionFilterEXT        1
2513 #define X_GLvop_GetConvolutionParameterfvEXT   2
2514 #define X_GLvop_GetConvolutionParameterivEXT   3
2515 #define X_GLvop_GetSeparableFilterEXT          4
2516 #define X_GLvop_GetHistogramEXT                5
2517 #define X_GLvop_GetHistogramParameterfvEXT     6
2518 #define X_GLvop_GetHistogramParameterivEXT     7
2519 #define X_GLvop_GetMinmaxEXT                   8
2520 #define X_GLvop_GetMinmaxParameterfvEXT        9
2521 #define X_GLvop_GetMinmaxParameterivEXT        10
2522 #define X_GLvop_AreTexturesResidentEXT         11
2523 #define X_GLvop_DeleteTexturesEXT              12
2524 #define X_GLvop_GenTexturesEXT                 13
2525 #define X_GLvop_IsTextureEXT                   14
2526 #define X_GLvop_GetCombinerInputParameterfvNV  1270
2527 #define X_GLvop_GetCombinerInputParameterivNV  1271
2528 #define X_GLvop_GetCombinerOutputParameterfvNV 1272
2529 #define X_GLvop_GetCombinerOutputParameterivNV 1273
2530 #define X_GLvop_GetFinalCombinerOutputParameterfvNV 1274
2531 #define X_GLvop_GetFinalCombinerOutputParameterivNV 1275
2532 #define X_GLvop_DeleteFenceNV                  1276
2533 #define X_GLvop_GenFencesNV                    1277
2534 #define X_GLvop_IsFenceNV                      1278
2535 #define X_GLvop_TestFenceNV                    1279
2536 #define X_GLvop_GetFenceivNV                   1280
2537 #define X_GLvop_AreProgramsResidentNV          1293
2538 #define X_GLvop_DeleteProgramARB               1294
2539 #define X_GLvop_GenProgramsARB                 1295
2540 #define X_GLvop_GetProgramEnvParameterfvARB    1296
2541 #define X_GLvop_GetProgramEnvParameterdvARB    1297
2542 #define X_GLvop_GetProgramEnvParameterivNV     1298
2543 #define X_GLvop_GetProgramStringNV             1299
2544 #define X_GLvop_GetTrackMatrixivNV             1300
2545 #define X_GLvop_GetVertexAttribdvARB           1301
2546 #define X_GLvop_GetVertexAttribfvARB           1302
2547 #define X_GLvop_GetVertexAttribivARB           1303
2548 #define X_GLvop_IsProgramARB                   1304
2549 #define X_GLvop_GetProgramLocalParameterfvARB  1305
2550 #define X_GLvop_GetProgramLocalParameterdvARB  1306
2551 #define X_GLvop_GetProgramivARB                1307
2552 #define X_GLvop_GetProgramStringARB            1308
2553 #define X_GLvop_GetProgramNamedParameter4fvNV  1310
2554 #define X_GLvop_GetProgramNamedParameter4dvNV  1311
2555 #define X_GLvop_SampleMaskSGIS                 2048
2556 #define X_GLvop_SamplePatternSGIS              2049
2557 #define X_GLvop_GetDetailTexFuncSGIS           4096
2558 #define X_GLvop_GetSharpenTexFuncSGIS          4097
2559 #define X_GLvop_GetColorTableSGI               4098
2560 #define X_GLvop_GetColorTableParameterfvSGI    4099
2561 #define X_GLvop_GetColorTableParameterivSGI    4100
2562 #define X_GLvop_GetTexFilterFuncSGIS           4101
2563 #define X_GLvop_GetInstrumentsSGIX             4102
2564 #define X_GLvop_InstrumentsBufferSGIX          4103
2565 #define X_GLvop_PollInstrumentsSGIX            4104
2566 #define X_GLvop_FlushRasterSGIX                4105
2567 
2568 /* Opcodes for GLX vendor private commands */
2569 
2570 #define X_GLXvop_QueryContextInfoEXT            1024
2571 #define X_GLXvop_BindTexImageEXT                1330
2572 #define X_GLXvop_ReleaseTexImageEXT             1331
2573 #define X_GLXvop_SwapIntervalSGI                65536
2574 #define X_GLXvop_MakeCurrentReadSGI             65537
2575 #define X_GLXvop_CreateGLXVideoSourceSGIX       65538
2576 #define X_GLXvop_DestroyGLXVideoSourceSGIX      65539
2577 #define X_GLXvop_GetFBConfigsSGIX               65540
2578 #define X_GLXvop_CreateContextWithConfigSGIX    65541
2579 #define X_GLXvop_CreateGLXPixmapWithConfigSGIX  65542
2580 #define X_GLXvop_CreateGLXPbufferSGIX           65543
2581 #define X_GLXvop_DestroyGLXPbufferSGIX          65544
2582 #define X_GLXvop_ChangeDrawableAttributesSGIX   65545
2583 #define X_GLXvop_GetDrawableAttributesSGIX      65546
2584 #define X_GLXvop_JoinSwapGroupSGIX              65547
2585 #define X_GLXvop_BindSwapBarrierSGIX            65548
2586 #define X_GLXvop_QueryMaxSwapBarriersSGIX       65549
2587 #define X_GLXvop_QueryHyperpipeNetworkSGIX      65550
2588 #define X_GLXvop_QueryHyperpipeConfigSGIX       65551
2589 #define X_GLXvop_HyperpipeConfigSGIX            65552
2590 #define X_GLXvop_DestroyHyperpipeConfigSGIX     65553
2591 
2592 /* ARB extension opcodes */
2593 
2594 /*  1. GL_ARB_multitexture - see GL 1.2 opcodes */
2595 /*  5. GL_ARB_multisample - see GL 1.3 opcodes */
2596 /* 12. GL_ARB_texture_compression - see GL 1.3 opcodes */
2597 /* 14. GL_ARB_point_parameters - see GL 1.4 opcodees */
2598 
2599 /* 15. GL_ARB_vertex_blend */
2600 #define X_GLrop_WeightbvARB                  220
2601 #define X_GLrop_WeightubvARB                 221
2602 #define X_GLrop_WeightsvARB                  222
2603 #define X_GLrop_WeightusvARB                 223
2604 #define X_GLrop_WeightivARB                  224
2605 #define X_GLrop_WeightuivARB                 225
2606 #define X_GLrop_VertexBlendARB               226
2607 #define X_GLrop_WeightfvARB                  227
2608 #define X_GLrop_WeightdvARB                  228
2609 
2610 /* 16. GL_ARB_matrix_palette */
2611 /* XXX opcodes not defined in the spec */
2612 
2613 /* 25. GL_ARB_window_pos - see GL 1.4 opcodes */
2614 
2615 /* 26. GL_ARB_vertex_program */
2616 #define X_GLrop_BindProgramARB              4180
2617 #define X_GLrop_ProgramEnvParameter4fvARB   4184
2618 #define X_GLrop_ProgramEnvParameter4dvARB   4185
2619 #define X_GLrop_VertexAttrib1svARB          4189
2620 #define X_GLrop_VertexAttrib2svARB          4190
2621 #define X_GLrop_VertexAttrib3svARB          4191
2622 #define X_GLrop_VertexAttrib4svARB          4192
2623 #define X_GLrop_VertexAttrib1fvARB          4193
2624 #define X_GLrop_VertexAttrib2fvARB          4194
2625 #define X_GLrop_VertexAttrib3fvARB          4195
2626 #define X_GLrop_VertexAttrib4fvARB          4196
2627 #define X_GLrop_VertexAttrib1dvARB          4197
2628 #define X_GLrop_VertexAttrib2dvARB          4198
2629 #define X_GLrop_VertexAttrib3dvARB          4199
2630 #define X_GLrop_ProgramLocalParameter4fvARB 4215
2631 #define X_GLrop_ProgramLocalParameter4dvARB 4216
2632 #define X_GLrop_ProgramStringARB            4217
2633 #define X_GLrop_VertexAttrib4dvARB          4200
2634 #define X_GLrop_VertexAttrib4NubvARB        4201
2635 #define X_GLrop_VertexAttrib4bvARB          4230
2636 #define X_GLrop_VertexAttrib4ivARB          4231
2637 #define X_GLrop_VertexAttrib4ubvARB         4232
2638 #define X_GLrop_VertexAttrib4usvARB         4233
2639 #define X_GLrop_VertexAttrib4uivARB         4234
2640 #define X_GLrop_VertexAttrib4NbvARB         4235
2641 #define X_GLrop_VertexAttrib4NsvARB         4236
2642 #define X_GLrop_VertexAttrib4NivARB         4237
2643 #define X_GLrop_VertexAttrib4NusvARB        4238
2644 #define X_GLrop_VertexAttrib4NuivARB        4239
2645 
2646 /* 27. GL_ARB_fragment_program - see GL_ARB_vertex_program opcodes */
2647 
2648 /* 29. GL_ARB_occlusion_query */
2649 /* XXX opcodes not defined in the spec */
2650 
2651 
2652 /* New extension opcodes */
2653 
2654 /* 145. GL_EXT_secondary_color - see GL 1.4 opcodes */
2655 
2656 /* 188. GL_EXT_vertex_weighting */
2657 #define X_GLrop_VertexWeightfvEXT           4135
2658 
2659 /* 191. GL_NV_register_combiners */
2660 #define X_GLrop_CombinerParameterfNV        4136
2661 #define X_GLrop_CombinerParameterfvNV       4137
2662 #define X_GLrop_CombinerParameteriNV        4138
2663 #define X_GLrop_CombinerParameterivNV       4139
2664 #define X_GLrop_CombinerInputNV             4140
2665 #define X_GLrop_CombinerOutputNV            4141
2666 #define X_GLrop_FinalCombinerInputNV        4142
2667 
2668 /* 222. GL_NV_fence */
2669 #define X_GLrop_SetFenceNV                  4143
2670 #define X_GLrop_FinishFenceNV               4144
2671 
2672 /* 227. GL_NV_register_combiners2 */
2673 /* XXX opcodes not defined in the spec */
2674 
2675 /* 233. GL_NV_vertex_program - see also GL_ARB_vertex_program opcodes */
2676 #define X_GLrop_ExecuteProgramNV            4181
2677 #define X_GLrop_RequestResidentProgramsNV   4182
2678 #define X_GLrop_LoadProgamNV                4183
2679 #define X_GLrop_ProgramParameters4fvNV      4186
2680 #define X_GLrop_ProgramParameters4dvNV      4187
2681 #define X_GLrop_TrackMatrixNV               4188
2682 #define X_GLrop_VertexAttribs1svNV          4202
2683 #define X_GLrop_VertexAttribs2svNV          4203
2684 #define X_GLrop_VertexAttribs3svNV          4204
2685 #define X_GLrop_VertexAttribs4svNV          4205
2686 #define X_GLrop_VertexAttribs1fvNV          4206
2687 #define X_GLrop_VertexAttribs2fvNV          4207
2688 #define X_GLrop_VertexAttribs3fvNV          4208
2689 #define X_GLrop_VertexAttribs4fvNV          4209
2690 #define X_GLrop_VertexAttribs1dvNV          4210
2691 #define X_GLrop_VertexAttribs2dvNV          4211
2692 #define X_GLrop_VertexAttribs3dvNV          4212
2693 #define X_GLrop_VertexAttribs4dvNV          4213
2694 #define X_GLrop_VertexAttribs4ubvNV         4214
2695 
2696 /* 261. GL_NV_occlusion_query */
2697 /* XXX opcodes not defined in the spec */
2698 
2699 /* 262. GL_NV_point_sprite - see GL 1.4 opcodes */
2700 
2701 /* 268. GL_EXT_stencil_two_side */
2702 #define X_GLrop_ActiveStencilFaceEXT        4220
2703 
2704 /* 282. GL_NV_fragment_program - see also GL_NV_vertex_program and GL_ARB_vertex_program opcodes */
2705 #define X_GLrop_ProgramNamedParameter4fvNV  4218
2706 #define X_GLrop_ProgramNamedParameter4dvNV  4219
2707 
2708 /* 285. GL_NV_primitive_restart */
2709 /* XXX opcodes not defined in the spec */
2710 
2711 /* 297. GL_EXT_depth_bounds_test */
2712 #define X_GLrop_DepthBoundsEXT              4229
2713 
2714 /* 299. GL_EXT_blend_equation_separate */
2715 #define X_GLrop_BlendEquationSeparateEXT    4228
2716 
2717 /* 310. GL_EXT_framebuffer_object */
2718 #define X_GLvop_IsRenderbufferEXT                      1422
2719 #define X_GLvop_GenRenderbuffersEXT                    1423
2720 #define X_GLvop_GetRenderbufferParameterivEXT          1424
2721 #define X_GLvop_IsFramebufferEXT                       1425
2722 #define X_GLvop_GenFramebuffersEXT                     1426
2723 #define X_GLvop_CheckFramebufferStatusEXT              1427
2724 #define X_GLvop_GetFramebufferAttachmentParameterivEXT 1428
2725 
2726 #endif /* _GLX_glxproto_h_ */
2727