1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
3*4882a593Smuzhiyun * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Permission is hereby granted, free of charge, to any person obtaining a
6*4882a593Smuzhiyun * copy of this software and associated documentation files (the "Software"),
7*4882a593Smuzhiyun * to deal in the Software without restriction, including without limitation
8*4882a593Smuzhiyun * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9*4882a593Smuzhiyun * and/or sell copies of the Software, and to permit persons to whom the
10*4882a593Smuzhiyun * Software is furnished to do so, subject to the following conditions:
11*4882a593Smuzhiyun *
12*4882a593Smuzhiyun * The above copyright notice including the dates of first publication and
13*4882a593Smuzhiyun * either this permission notice or a reference to
14*4882a593Smuzhiyun * http://oss.sgi.com/projects/FreeB/
15*4882a593Smuzhiyun * shall be included in all copies or substantial portions of the Software.
16*4882a593Smuzhiyun *
17*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18*4882a593Smuzhiyun * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20*4882a593Smuzhiyun * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21*4882a593Smuzhiyun * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
22*4882a593Smuzhiyun * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23*4882a593Smuzhiyun * SOFTWARE.
24*4882a593Smuzhiyun *
25*4882a593Smuzhiyun * Except as contained in this notice, the name of Silicon Graphics, Inc.
26*4882a593Smuzhiyun * shall not be used in advertising or otherwise to promote the sale, use or
27*4882a593Smuzhiyun * other dealings in this Software without prior written authorization from
28*4882a593Smuzhiyun * Silicon Graphics, Inc.
29*4882a593Smuzhiyun */
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun #ifdef HAVE_DIX_CONFIG_H
32*4882a593Smuzhiyun #include <dix-config.h>
33*4882a593Smuzhiyun #endif
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun #include <string.h>
36*4882a593Smuzhiyun #include "glxserver.h"
37*4882a593Smuzhiyun #include "glxutil.h"
38*4882a593Smuzhiyun #include <GL/glxtokens.h>
39*4882a593Smuzhiyun #include <unpack.h>
40*4882a593Smuzhiyun #include <pixmapstr.h>
41*4882a593Smuzhiyun #include <windowstr.h>
42*4882a593Smuzhiyun #include "glxext.h"
43*4882a593Smuzhiyun #include "indirect_dispatch.h"
44*4882a593Smuzhiyun #include "indirect_table.h"
45*4882a593Smuzhiyun #include "indirect_util.h"
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun /************************************************************************/
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun /*
50*4882a593Smuzhiyun ** Byteswapping versions of GLX commands. In most cases they just swap
51*4882a593Smuzhiyun ** the incoming arguments and then call the unswapped routine. For commands
52*4882a593Smuzhiyun ** that have replies, a separate swapping routine for the reply is provided;
53*4882a593Smuzhiyun ** it is called at the end of the unswapped routine.
54*4882a593Smuzhiyun */
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun int
__glXDispSwap_CreateContext(__GLXclientState * cl,GLbyte * pc)57*4882a593Smuzhiyun __glXDispSwap_CreateContext(__GLXclientState * cl, GLbyte * pc)
58*4882a593Smuzhiyun {
59*4882a593Smuzhiyun xGLXCreateContextReq *req = (xGLXCreateContextReq *) pc;
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
64*4882a593Smuzhiyun __GLX_SWAP_INT(&req->context);
65*4882a593Smuzhiyun __GLX_SWAP_INT(&req->visual);
66*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
67*4882a593Smuzhiyun __GLX_SWAP_INT(&req->shareList);
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun return __glXDisp_CreateContext(cl, pc);
70*4882a593Smuzhiyun }
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun int
__glXDispSwap_CreateNewContext(__GLXclientState * cl,GLbyte * pc)73*4882a593Smuzhiyun __glXDispSwap_CreateNewContext(__GLXclientState * cl, GLbyte * pc)
74*4882a593Smuzhiyun {
75*4882a593Smuzhiyun xGLXCreateNewContextReq *req = (xGLXCreateNewContextReq *) pc;
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
80*4882a593Smuzhiyun __GLX_SWAP_INT(&req->context);
81*4882a593Smuzhiyun __GLX_SWAP_INT(&req->fbconfig);
82*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
83*4882a593Smuzhiyun __GLX_SWAP_INT(&req->renderType);
84*4882a593Smuzhiyun __GLX_SWAP_INT(&req->shareList);
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun return __glXDisp_CreateNewContext(cl, pc);
87*4882a593Smuzhiyun }
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun int
__glXDispSwap_CreateContextWithConfigSGIX(__GLXclientState * cl,GLbyte * pc)90*4882a593Smuzhiyun __glXDispSwap_CreateContextWithConfigSGIX(__GLXclientState * cl, GLbyte * pc)
91*4882a593Smuzhiyun {
92*4882a593Smuzhiyun ClientPtr client = cl->client;
93*4882a593Smuzhiyun xGLXCreateContextWithConfigSGIXReq *req =
94*4882a593Smuzhiyun (xGLXCreateContextWithConfigSGIXReq *) pc;
95*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun REQUEST_SIZE_MATCH(xGLXCreateContextWithConfigSGIXReq);
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
100*4882a593Smuzhiyun __GLX_SWAP_INT(&req->context);
101*4882a593Smuzhiyun __GLX_SWAP_INT(&req->fbconfig);
102*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
103*4882a593Smuzhiyun __GLX_SWAP_INT(&req->renderType);
104*4882a593Smuzhiyun __GLX_SWAP_INT(&req->shareList);
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun return __glXDisp_CreateContextWithConfigSGIX(cl, pc);
107*4882a593Smuzhiyun }
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun int
__glXDispSwap_DestroyContext(__GLXclientState * cl,GLbyte * pc)110*4882a593Smuzhiyun __glXDispSwap_DestroyContext(__GLXclientState * cl, GLbyte * pc)
111*4882a593Smuzhiyun {
112*4882a593Smuzhiyun xGLXDestroyContextReq *req = (xGLXDestroyContextReq *) pc;
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
117*4882a593Smuzhiyun __GLX_SWAP_INT(&req->context);
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun return __glXDisp_DestroyContext(cl, pc);
120*4882a593Smuzhiyun }
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun int
__glXDispSwap_MakeCurrent(__GLXclientState * cl,GLbyte * pc)123*4882a593Smuzhiyun __glXDispSwap_MakeCurrent(__GLXclientState * cl, GLbyte * pc)
124*4882a593Smuzhiyun {
125*4882a593Smuzhiyun return BadImplementation;
126*4882a593Smuzhiyun }
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun int
__glXDispSwap_MakeContextCurrent(__GLXclientState * cl,GLbyte * pc)129*4882a593Smuzhiyun __glXDispSwap_MakeContextCurrent(__GLXclientState * cl, GLbyte * pc)
130*4882a593Smuzhiyun {
131*4882a593Smuzhiyun return BadImplementation;
132*4882a593Smuzhiyun }
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun int
__glXDispSwap_MakeCurrentReadSGI(__GLXclientState * cl,GLbyte * pc)135*4882a593Smuzhiyun __glXDispSwap_MakeCurrentReadSGI(__GLXclientState * cl, GLbyte * pc)
136*4882a593Smuzhiyun {
137*4882a593Smuzhiyun return BadImplementation;
138*4882a593Smuzhiyun }
139*4882a593Smuzhiyun
140*4882a593Smuzhiyun int
__glXDispSwap_IsDirect(__GLXclientState * cl,GLbyte * pc)141*4882a593Smuzhiyun __glXDispSwap_IsDirect(__GLXclientState * cl, GLbyte * pc)
142*4882a593Smuzhiyun {
143*4882a593Smuzhiyun xGLXIsDirectReq *req = (xGLXIsDirectReq *) pc;
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
148*4882a593Smuzhiyun __GLX_SWAP_INT(&req->context);
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun return __glXDisp_IsDirect(cl, pc);
151*4882a593Smuzhiyun }
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun int
__glXDispSwap_QueryVersion(__GLXclientState * cl,GLbyte * pc)154*4882a593Smuzhiyun __glXDispSwap_QueryVersion(__GLXclientState * cl, GLbyte * pc)
155*4882a593Smuzhiyun {
156*4882a593Smuzhiyun xGLXQueryVersionReq *req = (xGLXQueryVersionReq *) pc;
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
161*4882a593Smuzhiyun __GLX_SWAP_INT(&req->majorVersion);
162*4882a593Smuzhiyun __GLX_SWAP_INT(&req->minorVersion);
163*4882a593Smuzhiyun
164*4882a593Smuzhiyun return __glXDisp_QueryVersion(cl, pc);
165*4882a593Smuzhiyun }
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun int
__glXDispSwap_WaitGL(__GLXclientState * cl,GLbyte * pc)168*4882a593Smuzhiyun __glXDispSwap_WaitGL(__GLXclientState * cl, GLbyte * pc)
169*4882a593Smuzhiyun {
170*4882a593Smuzhiyun xGLXWaitGLReq *req = (xGLXWaitGLReq *) pc;
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
175*4882a593Smuzhiyun __GLX_SWAP_INT(&req->contextTag);
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun return __glXDisp_WaitGL(cl, pc);
178*4882a593Smuzhiyun }
179*4882a593Smuzhiyun
180*4882a593Smuzhiyun int
__glXDispSwap_WaitX(__GLXclientState * cl,GLbyte * pc)181*4882a593Smuzhiyun __glXDispSwap_WaitX(__GLXclientState * cl, GLbyte * pc)
182*4882a593Smuzhiyun {
183*4882a593Smuzhiyun xGLXWaitXReq *req = (xGLXWaitXReq *) pc;
184*4882a593Smuzhiyun
185*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
188*4882a593Smuzhiyun __GLX_SWAP_INT(&req->contextTag);
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun return __glXDisp_WaitX(cl, pc);
191*4882a593Smuzhiyun }
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun int
__glXDispSwap_CopyContext(__GLXclientState * cl,GLbyte * pc)194*4882a593Smuzhiyun __glXDispSwap_CopyContext(__GLXclientState * cl, GLbyte * pc)
195*4882a593Smuzhiyun {
196*4882a593Smuzhiyun xGLXCopyContextReq *req = (xGLXCopyContextReq *) pc;
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
201*4882a593Smuzhiyun __GLX_SWAP_INT(&req->source);
202*4882a593Smuzhiyun __GLX_SWAP_INT(&req->dest);
203*4882a593Smuzhiyun __GLX_SWAP_INT(&req->mask);
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun return __glXDisp_CopyContext(cl, pc);
206*4882a593Smuzhiyun }
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun int
__glXDispSwap_GetVisualConfigs(__GLXclientState * cl,GLbyte * pc)209*4882a593Smuzhiyun __glXDispSwap_GetVisualConfigs(__GLXclientState * cl, GLbyte * pc)
210*4882a593Smuzhiyun {
211*4882a593Smuzhiyun xGLXGetVisualConfigsReq *req = (xGLXGetVisualConfigsReq *) pc;
212*4882a593Smuzhiyun
213*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
216*4882a593Smuzhiyun return __glXDisp_GetVisualConfigs(cl, pc);
217*4882a593Smuzhiyun }
218*4882a593Smuzhiyun
219*4882a593Smuzhiyun int
__glXDispSwap_GetFBConfigs(__GLXclientState * cl,GLbyte * pc)220*4882a593Smuzhiyun __glXDispSwap_GetFBConfigs(__GLXclientState * cl, GLbyte * pc)
221*4882a593Smuzhiyun {
222*4882a593Smuzhiyun xGLXGetFBConfigsReq *req = (xGLXGetFBConfigsReq *) pc;
223*4882a593Smuzhiyun
224*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
227*4882a593Smuzhiyun return __glXDisp_GetFBConfigs(cl, pc);
228*4882a593Smuzhiyun }
229*4882a593Smuzhiyun
230*4882a593Smuzhiyun int
__glXDispSwap_GetFBConfigsSGIX(__GLXclientState * cl,GLbyte * pc)231*4882a593Smuzhiyun __glXDispSwap_GetFBConfigsSGIX(__GLXclientState * cl, GLbyte * pc)
232*4882a593Smuzhiyun {
233*4882a593Smuzhiyun ClientPtr client = cl->client;
234*4882a593Smuzhiyun xGLXGetFBConfigsSGIXReq *req = (xGLXGetFBConfigsSGIXReq *) pc;
235*4882a593Smuzhiyun
236*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXGetFBConfigsSGIXReq);
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
241*4882a593Smuzhiyun return __glXDisp_GetFBConfigsSGIX(cl, pc);
242*4882a593Smuzhiyun }
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun int
__glXDispSwap_CreateGLXPixmap(__GLXclientState * cl,GLbyte * pc)245*4882a593Smuzhiyun __glXDispSwap_CreateGLXPixmap(__GLXclientState * cl, GLbyte * pc)
246*4882a593Smuzhiyun {
247*4882a593Smuzhiyun xGLXCreateGLXPixmapReq *req = (xGLXCreateGLXPixmapReq *) pc;
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
250*4882a593Smuzhiyun
251*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
252*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
253*4882a593Smuzhiyun __GLX_SWAP_INT(&req->visual);
254*4882a593Smuzhiyun __GLX_SWAP_INT(&req->pixmap);
255*4882a593Smuzhiyun __GLX_SWAP_INT(&req->glxpixmap);
256*4882a593Smuzhiyun
257*4882a593Smuzhiyun return __glXDisp_CreateGLXPixmap(cl, pc);
258*4882a593Smuzhiyun }
259*4882a593Smuzhiyun
260*4882a593Smuzhiyun int
__glXDispSwap_CreatePixmap(__GLXclientState * cl,GLbyte * pc)261*4882a593Smuzhiyun __glXDispSwap_CreatePixmap(__GLXclientState * cl, GLbyte * pc)
262*4882a593Smuzhiyun {
263*4882a593Smuzhiyun ClientPtr client = cl->client;
264*4882a593Smuzhiyun xGLXCreatePixmapReq *req = (xGLXCreatePixmapReq *) pc;
265*4882a593Smuzhiyun CARD32 *attribs;
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
268*4882a593Smuzhiyun __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXCreatePixmapReq);
271*4882a593Smuzhiyun
272*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
273*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
274*4882a593Smuzhiyun __GLX_SWAP_INT(&req->fbconfig);
275*4882a593Smuzhiyun __GLX_SWAP_INT(&req->pixmap);
276*4882a593Smuzhiyun __GLX_SWAP_INT(&req->glxpixmap);
277*4882a593Smuzhiyun __GLX_SWAP_INT(&req->numAttribs);
278*4882a593Smuzhiyun
279*4882a593Smuzhiyun if (req->numAttribs > (UINT32_MAX >> 3)) {
280*4882a593Smuzhiyun client->errorValue = req->numAttribs;
281*4882a593Smuzhiyun return BadValue;
282*4882a593Smuzhiyun }
283*4882a593Smuzhiyun REQUEST_FIXED_SIZE(xGLXCreatePixmapReq, req->numAttribs << 3);
284*4882a593Smuzhiyun attribs = (CARD32 *) (req + 1);
285*4882a593Smuzhiyun __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
286*4882a593Smuzhiyun
287*4882a593Smuzhiyun return __glXDisp_CreatePixmap(cl, pc);
288*4882a593Smuzhiyun }
289*4882a593Smuzhiyun
290*4882a593Smuzhiyun int
__glXDispSwap_CreateGLXPixmapWithConfigSGIX(__GLXclientState * cl,GLbyte * pc)291*4882a593Smuzhiyun __glXDispSwap_CreateGLXPixmapWithConfigSGIX(__GLXclientState * cl, GLbyte * pc)
292*4882a593Smuzhiyun {
293*4882a593Smuzhiyun ClientPtr client = cl->client;
294*4882a593Smuzhiyun xGLXCreateGLXPixmapWithConfigSGIXReq *req =
295*4882a593Smuzhiyun (xGLXCreateGLXPixmapWithConfigSGIXReq *) pc;
296*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapWithConfigSGIXReq);
299*4882a593Smuzhiyun
300*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
301*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
302*4882a593Smuzhiyun __GLX_SWAP_INT(&req->fbconfig);
303*4882a593Smuzhiyun __GLX_SWAP_INT(&req->pixmap);
304*4882a593Smuzhiyun __GLX_SWAP_INT(&req->glxpixmap);
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun return __glXDisp_CreateGLXPixmapWithConfigSGIX(cl, pc);
307*4882a593Smuzhiyun }
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun int
__glXDispSwap_DestroyGLXPixmap(__GLXclientState * cl,GLbyte * pc)310*4882a593Smuzhiyun __glXDispSwap_DestroyGLXPixmap(__GLXclientState * cl, GLbyte * pc)
311*4882a593Smuzhiyun {
312*4882a593Smuzhiyun xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
313*4882a593Smuzhiyun
314*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
315*4882a593Smuzhiyun
316*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
317*4882a593Smuzhiyun __GLX_SWAP_INT(&req->glxpixmap);
318*4882a593Smuzhiyun
319*4882a593Smuzhiyun return __glXDisp_DestroyGLXPixmap(cl, pc);
320*4882a593Smuzhiyun }
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun int
__glXDispSwap_DestroyPixmap(__GLXclientState * cl,GLbyte * pc)323*4882a593Smuzhiyun __glXDispSwap_DestroyPixmap(__GLXclientState * cl, GLbyte * pc)
324*4882a593Smuzhiyun {
325*4882a593Smuzhiyun ClientPtr client = cl->client;
326*4882a593Smuzhiyun xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
327*4882a593Smuzhiyun
328*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
329*4882a593Smuzhiyun
330*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXDestroyGLXPixmapReq);
331*4882a593Smuzhiyun
332*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
333*4882a593Smuzhiyun __GLX_SWAP_INT(&req->glxpixmap);
334*4882a593Smuzhiyun
335*4882a593Smuzhiyun return __glXDisp_DestroyGLXPixmap(cl, pc);
336*4882a593Smuzhiyun }
337*4882a593Smuzhiyun
338*4882a593Smuzhiyun int
__glXDispSwap_QueryContext(__GLXclientState * cl,GLbyte * pc)339*4882a593Smuzhiyun __glXDispSwap_QueryContext(__GLXclientState * cl, GLbyte * pc)
340*4882a593Smuzhiyun {
341*4882a593Smuzhiyun xGLXQueryContextReq *req = (xGLXQueryContextReq *) pc;
342*4882a593Smuzhiyun
343*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
344*4882a593Smuzhiyun
345*4882a593Smuzhiyun __GLX_SWAP_INT(&req->context);
346*4882a593Smuzhiyun
347*4882a593Smuzhiyun return __glXDisp_QueryContext(cl, pc);
348*4882a593Smuzhiyun }
349*4882a593Smuzhiyun
350*4882a593Smuzhiyun int
__glXDispSwap_CreatePbuffer(__GLXclientState * cl,GLbyte * pc)351*4882a593Smuzhiyun __glXDispSwap_CreatePbuffer(__GLXclientState * cl, GLbyte * pc)
352*4882a593Smuzhiyun {
353*4882a593Smuzhiyun ClientPtr client = cl->client;
354*4882a593Smuzhiyun xGLXCreatePbufferReq *req = (xGLXCreatePbufferReq *) pc;
355*4882a593Smuzhiyun
356*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
357*4882a593Smuzhiyun __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
358*4882a593Smuzhiyun CARD32 *attribs;
359*4882a593Smuzhiyun
360*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXCreatePbufferReq);
361*4882a593Smuzhiyun
362*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
363*4882a593Smuzhiyun __GLX_SWAP_INT(&req->fbconfig);
364*4882a593Smuzhiyun __GLX_SWAP_INT(&req->pbuffer);
365*4882a593Smuzhiyun __GLX_SWAP_INT(&req->numAttribs);
366*4882a593Smuzhiyun
367*4882a593Smuzhiyun if (req->numAttribs > (UINT32_MAX >> 3)) {
368*4882a593Smuzhiyun client->errorValue = req->numAttribs;
369*4882a593Smuzhiyun return BadValue;
370*4882a593Smuzhiyun }
371*4882a593Smuzhiyun REQUEST_FIXED_SIZE(xGLXCreatePbufferReq, req->numAttribs << 3);
372*4882a593Smuzhiyun attribs = (CARD32 *) (req + 1);
373*4882a593Smuzhiyun __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
374*4882a593Smuzhiyun
375*4882a593Smuzhiyun return __glXDisp_CreatePbuffer(cl, pc);
376*4882a593Smuzhiyun }
377*4882a593Smuzhiyun
378*4882a593Smuzhiyun int
__glXDispSwap_CreateGLXPbufferSGIX(__GLXclientState * cl,GLbyte * pc)379*4882a593Smuzhiyun __glXDispSwap_CreateGLXPbufferSGIX(__GLXclientState * cl, GLbyte * pc)
380*4882a593Smuzhiyun {
381*4882a593Smuzhiyun ClientPtr client = cl->client;
382*4882a593Smuzhiyun xGLXCreateGLXPbufferSGIXReq *req = (xGLXCreateGLXPbufferSGIXReq *) pc;
383*4882a593Smuzhiyun
384*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
385*4882a593Smuzhiyun
386*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXCreateGLXPbufferSGIXReq);
387*4882a593Smuzhiyun
388*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
389*4882a593Smuzhiyun __GLX_SWAP_INT(&req->fbconfig);
390*4882a593Smuzhiyun __GLX_SWAP_INT(&req->pbuffer);
391*4882a593Smuzhiyun __GLX_SWAP_INT(&req->width);
392*4882a593Smuzhiyun __GLX_SWAP_INT(&req->height);
393*4882a593Smuzhiyun
394*4882a593Smuzhiyun return __glXDisp_CreateGLXPbufferSGIX(cl, pc);
395*4882a593Smuzhiyun }
396*4882a593Smuzhiyun
397*4882a593Smuzhiyun int
__glXDispSwap_DestroyPbuffer(__GLXclientState * cl,GLbyte * pc)398*4882a593Smuzhiyun __glXDispSwap_DestroyPbuffer(__GLXclientState * cl, GLbyte * pc)
399*4882a593Smuzhiyun {
400*4882a593Smuzhiyun xGLXDestroyPbufferReq *req = (xGLXDestroyPbufferReq *) pc;
401*4882a593Smuzhiyun
402*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
403*4882a593Smuzhiyun
404*4882a593Smuzhiyun __GLX_SWAP_INT(&req->pbuffer);
405*4882a593Smuzhiyun
406*4882a593Smuzhiyun return __glXDisp_DestroyPbuffer(cl, pc);
407*4882a593Smuzhiyun }
408*4882a593Smuzhiyun
409*4882a593Smuzhiyun int
__glXDispSwap_DestroyGLXPbufferSGIX(__GLXclientState * cl,GLbyte * pc)410*4882a593Smuzhiyun __glXDispSwap_DestroyGLXPbufferSGIX(__GLXclientState * cl, GLbyte * pc)
411*4882a593Smuzhiyun {
412*4882a593Smuzhiyun ClientPtr client = cl->client;
413*4882a593Smuzhiyun xGLXDestroyGLXPbufferSGIXReq *req = (xGLXDestroyGLXPbufferSGIXReq *) pc;
414*4882a593Smuzhiyun
415*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
416*4882a593Smuzhiyun
417*4882a593Smuzhiyun REQUEST_SIZE_MATCH(xGLXDestroyGLXPbufferSGIXReq);
418*4882a593Smuzhiyun
419*4882a593Smuzhiyun __GLX_SWAP_INT(&req->pbuffer);
420*4882a593Smuzhiyun
421*4882a593Smuzhiyun return __glXDisp_DestroyGLXPbufferSGIX(cl, pc);
422*4882a593Smuzhiyun }
423*4882a593Smuzhiyun
424*4882a593Smuzhiyun int
__glXDispSwap_ChangeDrawableAttributes(__GLXclientState * cl,GLbyte * pc)425*4882a593Smuzhiyun __glXDispSwap_ChangeDrawableAttributes(__GLXclientState * cl, GLbyte * pc)
426*4882a593Smuzhiyun {
427*4882a593Smuzhiyun ClientPtr client = cl->client;
428*4882a593Smuzhiyun xGLXChangeDrawableAttributesReq *req =
429*4882a593Smuzhiyun (xGLXChangeDrawableAttributesReq *) pc;
430*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
431*4882a593Smuzhiyun __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
432*4882a593Smuzhiyun CARD32 *attribs;
433*4882a593Smuzhiyun
434*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesReq);
435*4882a593Smuzhiyun
436*4882a593Smuzhiyun __GLX_SWAP_INT(&req->drawable);
437*4882a593Smuzhiyun __GLX_SWAP_INT(&req->numAttribs);
438*4882a593Smuzhiyun
439*4882a593Smuzhiyun if (req->numAttribs > (UINT32_MAX >> 3)) {
440*4882a593Smuzhiyun client->errorValue = req->numAttribs;
441*4882a593Smuzhiyun return BadValue;
442*4882a593Smuzhiyun }
443*4882a593Smuzhiyun if (((sizeof(xGLXChangeDrawableAttributesReq) +
444*4882a593Smuzhiyun (req->numAttribs << 3)) >> 2) < client->req_len)
445*4882a593Smuzhiyun return BadLength;
446*4882a593Smuzhiyun
447*4882a593Smuzhiyun attribs = (CARD32 *) (req + 1);
448*4882a593Smuzhiyun __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
449*4882a593Smuzhiyun
450*4882a593Smuzhiyun return __glXDisp_ChangeDrawableAttributes(cl, pc);
451*4882a593Smuzhiyun }
452*4882a593Smuzhiyun
453*4882a593Smuzhiyun int
__glXDispSwap_ChangeDrawableAttributesSGIX(__GLXclientState * cl,GLbyte * pc)454*4882a593Smuzhiyun __glXDispSwap_ChangeDrawableAttributesSGIX(__GLXclientState * cl, GLbyte * pc)
455*4882a593Smuzhiyun {
456*4882a593Smuzhiyun ClientPtr client = cl->client;
457*4882a593Smuzhiyun xGLXChangeDrawableAttributesSGIXReq *req =
458*4882a593Smuzhiyun (xGLXChangeDrawableAttributesSGIXReq *) pc;
459*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
460*4882a593Smuzhiyun __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
461*4882a593Smuzhiyun CARD32 *attribs;
462*4882a593Smuzhiyun
463*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesSGIXReq);
464*4882a593Smuzhiyun
465*4882a593Smuzhiyun __GLX_SWAP_INT(&req->drawable);
466*4882a593Smuzhiyun __GLX_SWAP_INT(&req->numAttribs);
467*4882a593Smuzhiyun
468*4882a593Smuzhiyun if (req->numAttribs > (UINT32_MAX >> 3)) {
469*4882a593Smuzhiyun client->errorValue = req->numAttribs;
470*4882a593Smuzhiyun return BadValue;
471*4882a593Smuzhiyun }
472*4882a593Smuzhiyun REQUEST_FIXED_SIZE(xGLXChangeDrawableAttributesSGIXReq,
473*4882a593Smuzhiyun req->numAttribs << 3);
474*4882a593Smuzhiyun attribs = (CARD32 *) (req + 1);
475*4882a593Smuzhiyun __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
476*4882a593Smuzhiyun
477*4882a593Smuzhiyun return __glXDisp_ChangeDrawableAttributesSGIX(cl, pc);
478*4882a593Smuzhiyun }
479*4882a593Smuzhiyun
480*4882a593Smuzhiyun int
__glXDispSwap_CreateWindow(__GLXclientState * cl,GLbyte * pc)481*4882a593Smuzhiyun __glXDispSwap_CreateWindow(__GLXclientState * cl, GLbyte * pc)
482*4882a593Smuzhiyun {
483*4882a593Smuzhiyun ClientPtr client = cl->client;
484*4882a593Smuzhiyun xGLXCreateWindowReq *req = (xGLXCreateWindowReq *) pc;
485*4882a593Smuzhiyun
486*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
487*4882a593Smuzhiyun __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
488*4882a593Smuzhiyun CARD32 *attribs;
489*4882a593Smuzhiyun
490*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXCreateWindowReq);
491*4882a593Smuzhiyun
492*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
493*4882a593Smuzhiyun __GLX_SWAP_INT(&req->fbconfig);
494*4882a593Smuzhiyun __GLX_SWAP_INT(&req->window);
495*4882a593Smuzhiyun __GLX_SWAP_INT(&req->glxwindow);
496*4882a593Smuzhiyun __GLX_SWAP_INT(&req->numAttribs);
497*4882a593Smuzhiyun
498*4882a593Smuzhiyun if (req->numAttribs > (UINT32_MAX >> 3)) {
499*4882a593Smuzhiyun client->errorValue = req->numAttribs;
500*4882a593Smuzhiyun return BadValue;
501*4882a593Smuzhiyun }
502*4882a593Smuzhiyun REQUEST_FIXED_SIZE(xGLXCreateWindowReq, req->numAttribs << 3);
503*4882a593Smuzhiyun attribs = (CARD32 *) (req + 1);
504*4882a593Smuzhiyun __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
505*4882a593Smuzhiyun
506*4882a593Smuzhiyun return __glXDisp_CreateWindow(cl, pc);
507*4882a593Smuzhiyun }
508*4882a593Smuzhiyun
509*4882a593Smuzhiyun int
__glXDispSwap_DestroyWindow(__GLXclientState * cl,GLbyte * pc)510*4882a593Smuzhiyun __glXDispSwap_DestroyWindow(__GLXclientState * cl, GLbyte * pc)
511*4882a593Smuzhiyun {
512*4882a593Smuzhiyun ClientPtr client = cl->client;
513*4882a593Smuzhiyun xGLXDestroyWindowReq *req = (xGLXDestroyWindowReq *) pc;
514*4882a593Smuzhiyun
515*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
516*4882a593Smuzhiyun
517*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXDestroyWindowReq);
518*4882a593Smuzhiyun
519*4882a593Smuzhiyun __GLX_SWAP_INT(&req->glxwindow);
520*4882a593Smuzhiyun
521*4882a593Smuzhiyun return __glXDisp_DestroyWindow(cl, pc);
522*4882a593Smuzhiyun }
523*4882a593Smuzhiyun
524*4882a593Smuzhiyun int
__glXDispSwap_SwapBuffers(__GLXclientState * cl,GLbyte * pc)525*4882a593Smuzhiyun __glXDispSwap_SwapBuffers(__GLXclientState * cl, GLbyte * pc)
526*4882a593Smuzhiyun {
527*4882a593Smuzhiyun xGLXSwapBuffersReq *req = (xGLXSwapBuffersReq *) pc;
528*4882a593Smuzhiyun
529*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
530*4882a593Smuzhiyun
531*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
532*4882a593Smuzhiyun __GLX_SWAP_INT(&req->contextTag);
533*4882a593Smuzhiyun __GLX_SWAP_INT(&req->drawable);
534*4882a593Smuzhiyun
535*4882a593Smuzhiyun return __glXDisp_SwapBuffers(cl, pc);
536*4882a593Smuzhiyun }
537*4882a593Smuzhiyun
538*4882a593Smuzhiyun int
__glXDispSwap_UseXFont(__GLXclientState * cl,GLbyte * pc)539*4882a593Smuzhiyun __glXDispSwap_UseXFont(__GLXclientState * cl, GLbyte * pc)
540*4882a593Smuzhiyun {
541*4882a593Smuzhiyun xGLXUseXFontReq *req = (xGLXUseXFontReq *) pc;
542*4882a593Smuzhiyun
543*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
544*4882a593Smuzhiyun
545*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
546*4882a593Smuzhiyun __GLX_SWAP_INT(&req->contextTag);
547*4882a593Smuzhiyun __GLX_SWAP_INT(&req->font);
548*4882a593Smuzhiyun __GLX_SWAP_INT(&req->first);
549*4882a593Smuzhiyun __GLX_SWAP_INT(&req->count);
550*4882a593Smuzhiyun __GLX_SWAP_INT(&req->listBase);
551*4882a593Smuzhiyun
552*4882a593Smuzhiyun return __glXDisp_UseXFont(cl, pc);
553*4882a593Smuzhiyun }
554*4882a593Smuzhiyun
555*4882a593Smuzhiyun int
__glXDispSwap_QueryExtensionsString(__GLXclientState * cl,GLbyte * pc)556*4882a593Smuzhiyun __glXDispSwap_QueryExtensionsString(__GLXclientState * cl, GLbyte * pc)
557*4882a593Smuzhiyun {
558*4882a593Smuzhiyun xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *) pc;
559*4882a593Smuzhiyun
560*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
561*4882a593Smuzhiyun
562*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
563*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
564*4882a593Smuzhiyun
565*4882a593Smuzhiyun return __glXDisp_QueryExtensionsString(cl, pc);
566*4882a593Smuzhiyun }
567*4882a593Smuzhiyun
568*4882a593Smuzhiyun int
__glXDispSwap_QueryServerString(__GLXclientState * cl,GLbyte * pc)569*4882a593Smuzhiyun __glXDispSwap_QueryServerString(__GLXclientState * cl, GLbyte * pc)
570*4882a593Smuzhiyun {
571*4882a593Smuzhiyun xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *) pc;
572*4882a593Smuzhiyun
573*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
574*4882a593Smuzhiyun
575*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
576*4882a593Smuzhiyun __GLX_SWAP_INT(&req->screen);
577*4882a593Smuzhiyun __GLX_SWAP_INT(&req->name);
578*4882a593Smuzhiyun
579*4882a593Smuzhiyun return __glXDisp_QueryServerString(cl, pc);
580*4882a593Smuzhiyun }
581*4882a593Smuzhiyun
582*4882a593Smuzhiyun int
__glXDispSwap_ClientInfo(__GLXclientState * cl,GLbyte * pc)583*4882a593Smuzhiyun __glXDispSwap_ClientInfo(__GLXclientState * cl, GLbyte * pc)
584*4882a593Smuzhiyun {
585*4882a593Smuzhiyun ClientPtr client = cl->client;
586*4882a593Smuzhiyun xGLXClientInfoReq *req = (xGLXClientInfoReq *) pc;
587*4882a593Smuzhiyun
588*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
589*4882a593Smuzhiyun
590*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXClientInfoReq);
591*4882a593Smuzhiyun
592*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
593*4882a593Smuzhiyun __GLX_SWAP_INT(&req->major);
594*4882a593Smuzhiyun __GLX_SWAP_INT(&req->minor);
595*4882a593Smuzhiyun __GLX_SWAP_INT(&req->numbytes);
596*4882a593Smuzhiyun
597*4882a593Smuzhiyun return __glXDisp_ClientInfo(cl, pc);
598*4882a593Smuzhiyun }
599*4882a593Smuzhiyun
600*4882a593Smuzhiyun int
__glXDispSwap_QueryContextInfoEXT(__GLXclientState * cl,GLbyte * pc)601*4882a593Smuzhiyun __glXDispSwap_QueryContextInfoEXT(__GLXclientState * cl, GLbyte * pc)
602*4882a593Smuzhiyun {
603*4882a593Smuzhiyun ClientPtr client = cl->client;
604*4882a593Smuzhiyun xGLXQueryContextInfoEXTReq *req = (xGLXQueryContextInfoEXTReq *) pc;
605*4882a593Smuzhiyun
606*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
607*4882a593Smuzhiyun
608*4882a593Smuzhiyun REQUEST_SIZE_MATCH(xGLXQueryContextInfoEXTReq);
609*4882a593Smuzhiyun
610*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
611*4882a593Smuzhiyun __GLX_SWAP_INT(&req->context);
612*4882a593Smuzhiyun
613*4882a593Smuzhiyun return __glXDisp_QueryContextInfoEXT(cl, pc);
614*4882a593Smuzhiyun }
615*4882a593Smuzhiyun
616*4882a593Smuzhiyun int
__glXDispSwap_BindTexImageEXT(__GLXclientState * cl,GLbyte * pc)617*4882a593Smuzhiyun __glXDispSwap_BindTexImageEXT(__GLXclientState * cl, GLbyte * pc)
618*4882a593Smuzhiyun {
619*4882a593Smuzhiyun ClientPtr client = cl->client;
620*4882a593Smuzhiyun xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
621*4882a593Smuzhiyun GLXDrawable *drawId;
622*4882a593Smuzhiyun int *buffer;
623*4882a593Smuzhiyun CARD32 *num_attribs;
624*4882a593Smuzhiyun
625*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
626*4882a593Smuzhiyun
627*4882a593Smuzhiyun if ((sizeof(xGLXVendorPrivateReq) + 12) >> 2 > client->req_len)
628*4882a593Smuzhiyun return BadLength;
629*4882a593Smuzhiyun
630*4882a593Smuzhiyun pc += __GLX_VENDPRIV_HDR_SIZE;
631*4882a593Smuzhiyun
632*4882a593Smuzhiyun drawId = ((GLXDrawable *) (pc));
633*4882a593Smuzhiyun buffer = ((int *) (pc + 4));
634*4882a593Smuzhiyun num_attribs = ((CARD32 *) (pc + 8));
635*4882a593Smuzhiyun
636*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
637*4882a593Smuzhiyun __GLX_SWAP_INT(&req->contextTag);
638*4882a593Smuzhiyun __GLX_SWAP_INT(drawId);
639*4882a593Smuzhiyun __GLX_SWAP_INT(buffer);
640*4882a593Smuzhiyun __GLX_SWAP_INT(num_attribs);
641*4882a593Smuzhiyun
642*4882a593Smuzhiyun return __glXDisp_BindTexImageEXT(cl, (GLbyte *) pc);
643*4882a593Smuzhiyun }
644*4882a593Smuzhiyun
645*4882a593Smuzhiyun int
__glXDispSwap_ReleaseTexImageEXT(__GLXclientState * cl,GLbyte * pc)646*4882a593Smuzhiyun __glXDispSwap_ReleaseTexImageEXT(__GLXclientState * cl, GLbyte * pc)
647*4882a593Smuzhiyun {
648*4882a593Smuzhiyun ClientPtr client = cl->client;
649*4882a593Smuzhiyun xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
650*4882a593Smuzhiyun GLXDrawable *drawId;
651*4882a593Smuzhiyun int *buffer;
652*4882a593Smuzhiyun
653*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
654*4882a593Smuzhiyun
655*4882a593Smuzhiyun REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 8);
656*4882a593Smuzhiyun
657*4882a593Smuzhiyun pc += __GLX_VENDPRIV_HDR_SIZE;
658*4882a593Smuzhiyun
659*4882a593Smuzhiyun drawId = ((GLXDrawable *) (pc));
660*4882a593Smuzhiyun buffer = ((int *) (pc + 4));
661*4882a593Smuzhiyun
662*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
663*4882a593Smuzhiyun __GLX_SWAP_INT(&req->contextTag);
664*4882a593Smuzhiyun __GLX_SWAP_INT(drawId);
665*4882a593Smuzhiyun __GLX_SWAP_INT(buffer);
666*4882a593Smuzhiyun
667*4882a593Smuzhiyun return __glXDisp_ReleaseTexImageEXT(cl, (GLbyte *) pc);
668*4882a593Smuzhiyun }
669*4882a593Smuzhiyun
670*4882a593Smuzhiyun int
__glXDispSwap_CopySubBufferMESA(__GLXclientState * cl,GLbyte * pc)671*4882a593Smuzhiyun __glXDispSwap_CopySubBufferMESA(__GLXclientState * cl, GLbyte * pc)
672*4882a593Smuzhiyun {
673*4882a593Smuzhiyun ClientPtr client = cl->client;
674*4882a593Smuzhiyun xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
675*4882a593Smuzhiyun GLXDrawable *drawId;
676*4882a593Smuzhiyun int *buffer;
677*4882a593Smuzhiyun
678*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
679*4882a593Smuzhiyun
680*4882a593Smuzhiyun REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 20);
681*4882a593Smuzhiyun
682*4882a593Smuzhiyun (void) drawId;
683*4882a593Smuzhiyun (void) buffer;
684*4882a593Smuzhiyun
685*4882a593Smuzhiyun pc += __GLX_VENDPRIV_HDR_SIZE;
686*4882a593Smuzhiyun
687*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
688*4882a593Smuzhiyun __GLX_SWAP_INT(&req->contextTag);
689*4882a593Smuzhiyun __GLX_SWAP_INT(pc);
690*4882a593Smuzhiyun __GLX_SWAP_INT(pc + 4);
691*4882a593Smuzhiyun __GLX_SWAP_INT(pc + 8);
692*4882a593Smuzhiyun __GLX_SWAP_INT(pc + 12);
693*4882a593Smuzhiyun __GLX_SWAP_INT(pc + 16);
694*4882a593Smuzhiyun
695*4882a593Smuzhiyun return __glXDisp_CopySubBufferMESA(cl, pc);
696*4882a593Smuzhiyun
697*4882a593Smuzhiyun }
698*4882a593Smuzhiyun
699*4882a593Smuzhiyun int
__glXDispSwap_GetDrawableAttributesSGIX(__GLXclientState * cl,GLbyte * pc)700*4882a593Smuzhiyun __glXDispSwap_GetDrawableAttributesSGIX(__GLXclientState * cl, GLbyte * pc)
701*4882a593Smuzhiyun {
702*4882a593Smuzhiyun ClientPtr client = cl->client;
703*4882a593Smuzhiyun xGLXVendorPrivateWithReplyReq *req = (xGLXVendorPrivateWithReplyReq *) pc;
704*4882a593Smuzhiyun CARD32 *data;
705*4882a593Smuzhiyun
706*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
707*4882a593Smuzhiyun
708*4882a593Smuzhiyun REQUEST_SIZE_MATCH(xGLXGetDrawableAttributesSGIXReq);
709*4882a593Smuzhiyun
710*4882a593Smuzhiyun data = (CARD32 *) (req + 1);
711*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
712*4882a593Smuzhiyun __GLX_SWAP_INT(&req->contextTag);
713*4882a593Smuzhiyun __GLX_SWAP_INT(data);
714*4882a593Smuzhiyun
715*4882a593Smuzhiyun return __glXDisp_GetDrawableAttributesSGIX(cl, pc);
716*4882a593Smuzhiyun }
717*4882a593Smuzhiyun
718*4882a593Smuzhiyun int
__glXDispSwap_GetDrawableAttributes(__GLXclientState * cl,GLbyte * pc)719*4882a593Smuzhiyun __glXDispSwap_GetDrawableAttributes(__GLXclientState * cl, GLbyte * pc)
720*4882a593Smuzhiyun {
721*4882a593Smuzhiyun ClientPtr client = cl->client;
722*4882a593Smuzhiyun xGLXGetDrawableAttributesReq *req = (xGLXGetDrawableAttributesReq *) pc;
723*4882a593Smuzhiyun
724*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
725*4882a593Smuzhiyun
726*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXGetDrawableAttributesReq);
727*4882a593Smuzhiyun
728*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
729*4882a593Smuzhiyun __GLX_SWAP_INT(&req->drawable);
730*4882a593Smuzhiyun
731*4882a593Smuzhiyun return __glXDisp_GetDrawableAttributes(cl, pc);
732*4882a593Smuzhiyun }
733*4882a593Smuzhiyun
734*4882a593Smuzhiyun /************************************************************************/
735*4882a593Smuzhiyun
736*4882a593Smuzhiyun /*
737*4882a593Smuzhiyun ** Render and Renderlarge are not in the GLX API. They are used by the GLX
738*4882a593Smuzhiyun ** client library to send batches of GL rendering commands.
739*4882a593Smuzhiyun */
740*4882a593Smuzhiyun
741*4882a593Smuzhiyun int
__glXDispSwap_Render(__GLXclientState * cl,GLbyte * pc)742*4882a593Smuzhiyun __glXDispSwap_Render(__GLXclientState * cl, GLbyte * pc)
743*4882a593Smuzhiyun {
744*4882a593Smuzhiyun return __glXDisp_Render(cl, pc);
745*4882a593Smuzhiyun }
746*4882a593Smuzhiyun
747*4882a593Smuzhiyun /*
748*4882a593Smuzhiyun ** Execute a large rendering request (one that spans multiple X requests).
749*4882a593Smuzhiyun */
750*4882a593Smuzhiyun int
__glXDispSwap_RenderLarge(__GLXclientState * cl,GLbyte * pc)751*4882a593Smuzhiyun __glXDispSwap_RenderLarge(__GLXclientState * cl, GLbyte * pc)
752*4882a593Smuzhiyun {
753*4882a593Smuzhiyun return __glXDisp_RenderLarge(cl, pc);
754*4882a593Smuzhiyun }
755*4882a593Smuzhiyun
756*4882a593Smuzhiyun /************************************************************************/
757*4882a593Smuzhiyun
758*4882a593Smuzhiyun /*
759*4882a593Smuzhiyun ** No support is provided for the vendor-private requests other than
760*4882a593Smuzhiyun ** allocating these entry points in the dispatch table.
761*4882a593Smuzhiyun */
762*4882a593Smuzhiyun
763*4882a593Smuzhiyun int
__glXDispSwap_VendorPrivate(__GLXclientState * cl,GLbyte * pc)764*4882a593Smuzhiyun __glXDispSwap_VendorPrivate(__GLXclientState * cl, GLbyte * pc)
765*4882a593Smuzhiyun {
766*4882a593Smuzhiyun ClientPtr client = cl->client;
767*4882a593Smuzhiyun xGLXVendorPrivateReq *req;
768*4882a593Smuzhiyun GLint vendorcode;
769*4882a593Smuzhiyun __GLXdispatchVendorPrivProcPtr proc;
770*4882a593Smuzhiyun
771*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
772*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateReq);
773*4882a593Smuzhiyun
774*4882a593Smuzhiyun req = (xGLXVendorPrivateReq *) pc;
775*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
776*4882a593Smuzhiyun __GLX_SWAP_INT(&req->vendorCode);
777*4882a593Smuzhiyun
778*4882a593Smuzhiyun vendorcode = req->vendorCode;
779*4882a593Smuzhiyun
780*4882a593Smuzhiyun proc = (__GLXdispatchVendorPrivProcPtr)
781*4882a593Smuzhiyun __glXGetProtocolDecodeFunction(&VendorPriv_dispatch_info,
782*4882a593Smuzhiyun vendorcode, 1);
783*4882a593Smuzhiyun if (proc != NULL) {
784*4882a593Smuzhiyun return (*proc) (cl, (GLbyte *) req);
785*4882a593Smuzhiyun }
786*4882a593Smuzhiyun
787*4882a593Smuzhiyun cl->client->errorValue = req->vendorCode;
788*4882a593Smuzhiyun return __glXError(GLXUnsupportedPrivateRequest);
789*4882a593Smuzhiyun }
790*4882a593Smuzhiyun
791*4882a593Smuzhiyun int
__glXDispSwap_VendorPrivateWithReply(__GLXclientState * cl,GLbyte * pc)792*4882a593Smuzhiyun __glXDispSwap_VendorPrivateWithReply(__GLXclientState * cl, GLbyte * pc)
793*4882a593Smuzhiyun {
794*4882a593Smuzhiyun ClientPtr client = cl->client;
795*4882a593Smuzhiyun xGLXVendorPrivateWithReplyReq *req;
796*4882a593Smuzhiyun GLint vendorcode;
797*4882a593Smuzhiyun __GLXdispatchVendorPrivProcPtr proc;
798*4882a593Smuzhiyun
799*4882a593Smuzhiyun __GLX_DECLARE_SWAP_VARIABLES;
800*4882a593Smuzhiyun REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateWithReplyReq);
801*4882a593Smuzhiyun
802*4882a593Smuzhiyun req = (xGLXVendorPrivateWithReplyReq *) pc;
803*4882a593Smuzhiyun __GLX_SWAP_SHORT(&req->length);
804*4882a593Smuzhiyun __GLX_SWAP_INT(&req->vendorCode);
805*4882a593Smuzhiyun
806*4882a593Smuzhiyun vendorcode = req->vendorCode;
807*4882a593Smuzhiyun
808*4882a593Smuzhiyun proc = (__GLXdispatchVendorPrivProcPtr)
809*4882a593Smuzhiyun __glXGetProtocolDecodeFunction(&VendorPriv_dispatch_info,
810*4882a593Smuzhiyun vendorcode, 1);
811*4882a593Smuzhiyun if (proc != NULL) {
812*4882a593Smuzhiyun return (*proc) (cl, (GLbyte *) req);
813*4882a593Smuzhiyun }
814*4882a593Smuzhiyun
815*4882a593Smuzhiyun cl->client->errorValue = req->vendorCode;
816*4882a593Smuzhiyun return __glXError(GLXUnsupportedPrivateRequest);
817*4882a593Smuzhiyun }
818