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*/
103typedef 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*/
127typedef 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*/
147typedef 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*/
163typedef 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*/
174typedef 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*/
186typedef 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*/
197typedef 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*/
214typedef 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*/
225typedef 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*/
238typedef 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*/
249typedef 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*/
260typedef 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*/
274typedef 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*/
286typedef 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*/
301typedef 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*/
315typedef 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*/
326typedef 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*/
337typedef 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*/
352typedef 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*/
367typedef 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*/
378typedef 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*/
390typedef 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*/
405typedef 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*/
416typedef 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*/
432typedef 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*/
443typedef 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*/
461typedef 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*/
472typedef 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*/
486typedef 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*/
501typedef 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*/
512typedef 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*/
523typedef 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*/
536typedef 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*/
552typedef 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
562typedef 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
576typedef 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
590typedef 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
604typedef 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
618typedef 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
632typedef 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
646typedef 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
660typedef 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
674typedef 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
688typedef 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
702typedef 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
716typedef 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*/
737typedef 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*/
757typedef 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*/
775typedef 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*/
793typedef 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*/
812typedef 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*/
829typedef 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*/
846typedef 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*/
865typedef 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*/
882typedef 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*/
899typedef 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*/
920typedef 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*/
933typedef 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*/
950typedef 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
962typedef 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*/
979typedef 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
993typedef 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
1014typedef 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*/
1030typedef 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*/
1048typedef 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*/
1061typedef 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*/
1076typedef 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*/
1089typedef 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*/
1106typedef 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*/
1120typedef 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*/
1134typedef 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
1144typedef 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*/
1161typedef 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*/
1174typedef 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*/
1191typedef 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*/
1208typedef 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*/
1225typedef 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*/
1242typedef 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*/
1259typedef 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*/
1277typedef 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 */
1319typedef 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 */
1340typedef 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 */
1367typedef 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
1389typedef 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
1406typedef 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
1420typedef 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
1448typedef 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
1458typedef 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
1480typedef 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
1520typedef struct {
1521    __GLX_RENDER_HDR;
1522    __GLX_PIXEL_HDR;
1523    __GLX_BITMAP_HDR;
1524} __GLXbitmapHeader;
1525
1526typedef struct {
1527    __GLX_RENDER_LARGE_HDR;
1528    __GLX_PIXEL_HDR;
1529    __GLX_BITMAP_HDR;
1530} __GLXbitmapLargeHeader;
1531
1532typedef 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
1545typedef 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
1579typedef struct {
1580    __GLX_RENDER_HDR;
1581    __GLX_PIXEL_HDR;
1582    __GLX_TEXIMAGE_HDR;
1583} __GLXtexImageHeader;
1584
1585typedef struct {
1586    __GLX_RENDER_LARGE_HDR;
1587    __GLX_PIXEL_HDR;
1588    __GLX_TEXIMAGE_HDR;
1589} __GLXtexImageLargeHeader;
1590
1591typedef 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
1629typedef struct {
1630    __GLX_RENDER_HDR;
1631    __GLX_PIXEL_3D_HDR;
1632    __GLX_TEXIMAGE_3D_HDR;
1633} __GLXtexImage3DHeader;
1634
1635typedef struct {
1636    __GLX_RENDER_LARGE_HDR;
1637    __GLX_PIXEL_3D_HDR;
1638    __GLX_TEXIMAGE_3D_HDR;
1639} __GLXtexImage3DLargeHeader;
1640
1641typedef 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
1674typedef struct {
1675    __GLX_RENDER_HDR;
1676    __GLX_PIXEL_HDR;
1677    __GLX_TEXSUBIMAGE_HDR;
1678} __GLXtexSubImageHeader;
1679
1680typedef struct {
1681    __GLX_RENDER_LARGE_HDR;
1682    __GLX_PIXEL_HDR;
1683    __GLX_TEXSUBIMAGE_HDR;
1684} __GLXtexSubImageLargeHeader;
1685
1686typedef 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
1724typedef struct {
1725    __GLX_RENDER_HDR;
1726    __GLX_PIXEL_3D_HDR;
1727    __GLX_TEXSUBIMAGE_3D_HDR;
1728} __GLXtexSubImage3DHeader;
1729
1730typedef struct {
1731    __GLX_RENDER_LARGE_HDR;
1732    __GLX_PIXEL_3D_HDR;
1733    __GLX_TEXSUBIMAGE_3D_HDR;
1734} __GLXtexSubImage3DLargeHeader;
1735
1736typedef 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
1769typedef struct {
1770    __GLX_RENDER_HDR;
1771    __GLX_COMPRESSED_TEXIMAGE_HDR;
1772} __GLXcompressedTexImageHeader;
1773
1774typedef struct {
1775    __GLX_RENDER_LARGE_HDR;
1776    __GLX_COMPRESSED_TEXIMAGE_HDR;
1777} __GLXcompressedTexImageLargeHeader;
1778
1779typedef 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
1812typedef struct {
1813    __GLX_RENDER_HDR;
1814    __GLX_COMPRESSED_TEXSUBIMAGE_HDR;
1815} __GLXcompressedTexSubImageHeader;
1816
1817typedef struct {
1818    __GLX_RENDER_LARGE_HDR;
1819    __GLX_COMPRESSED_TEXSUBIMAGE_HDR;
1820} __GLXcompressedTexSubImageLargeHeader;
1821
1822typedef 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
1851typedef struct {
1852    __GLX_RENDER_HDR;
1853    __GLX_COMPRESSED_TEXIMAGE_3D_HDR;
1854} __GLXcompressedTexImage3DHeader;
1855
1856typedef struct {
1857    __GLX_RENDER_LARGE_HDR;
1858    __GLX_COMPRESSED_TEXIMAGE_3D_HDR;
1859} __GLXcompressedTexImage3DLargeHeader;
1860
1861typedef 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
1892typedef struct {
1893    __GLX_RENDER_HDR;
1894    __GLX_COMPRESSED_TEXSUBIMAGE_3D_HDR;
1895} __GLXcompressedTexSubImage3DHeader;
1896
1897typedef struct {
1898    __GLX_RENDER_LARGE_HDR;
1899    __GLX_COMPRESSED_TEXSUBIMAGE_3D_HDR;
1900} __GLXcompressedTexSubImage3DLargeHeader;
1901
1902typedef 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
1927typedef struct {
1928    __GLX_RENDER_HDR;
1929    __GLX_PIXEL_HDR;
1930    __GLX_DRAWPIXELS_HDR;
1931} __GLXdrawPixelsHeader;
1932
1933typedef struct {
1934    __GLX_RENDER_LARGE_HDR;
1935    __GLX_PIXEL_HDR;
1936    __GLX_DRAWPIXELS_HDR;
1937} __GLXdrawPixelsLargeHeader;
1938
1939typedef 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)
1967typedef struct {
1968    __GLX_RENDER_HDR;
1969    __GLX_PIXEL_HDR;
1970    __GLX_CONV_FILT_HDR;
1971} __GLXConvolutionFilterHeader;
1972
1973typedef struct {
1974    __GLX_RENDER_LARGE_HDR;
1975    __GLX_PIXEL_HDR;
1976    __GLX_CONV_FILT_HDR;
1977} __GLXConvolutionFilterLargeHeader;
1978
1979typedef 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
2003typedef struct {
2004    __GLX_RENDER_HDR;
2005    __GLX_DRAWARRAYS_HDR;
2006} __GLXdrawArraysHeader;
2007
2008typedef struct {
2009    __GLX_RENDER_LARGE_HDR;
2010    __GLX_DRAWARRAYS_HDR;
2011} __GLXdrawArraysLargeHeader;
2012
2013typedef struct {
2014    __GLX_DRAWARRAYS_HDR;
2015} __GLXdispatchDrawArraysHeader;
2016
2017#define __GLX_COMPONENT_HDR \
2018    CARD32	datatype;   \
2019    INT32	numVals;    \
2020    CARD32	component
2021
2022typedef 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
2048typedef struct {
2049    __GLX_RENDER_HDR;
2050    __GLX_PIXEL_HDR;
2051    __GLX_COLOR_TABLE_HDR;
2052} __GLXColorTableHeader;
2053
2054typedef struct {
2055    __GLX_RENDER_LARGE_HDR;
2056    __GLX_PIXEL_HDR;
2057    __GLX_COLOR_TABLE_HDR;
2058} __GLXColorTableLargeHeader;
2059
2060typedef 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
2086typedef struct {
2087    __GLX_RENDER_HDR;
2088    __GLX_PIXEL_HDR;
2089    __GLX_COLOR_SUBTABLE_HDR;
2090} __GLXColorSubTableHeader;
2091
2092typedef struct {
2093    __GLX_RENDER_LARGE_HDR;
2094    __GLX_PIXEL_HDR;
2095    __GLX_COLOR_SUBTABLE_HDR;
2096} __GLXColorSubTableLargeHeader;
2097
2098typedef 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