1706f2543Smrg/* 2706f2543Smrg * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) 3706f2543Smrg * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved. 4706f2543Smrg * 5706f2543Smrg * Permission is hereby granted, free of charge, to any person obtaining a 6706f2543Smrg * copy of this software and associated documentation files (the "Software"), 7706f2543Smrg * to deal in the Software without restriction, including without limitation 8706f2543Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9706f2543Smrg * and/or sell copies of the Software, and to permit persons to whom the 10706f2543Smrg * Software is furnished to do so, subject to the following conditions: 11706f2543Smrg * 12706f2543Smrg * The above copyright notice including the dates of first publication and 13706f2543Smrg * either this permission notice or a reference to 14706f2543Smrg * http://oss.sgi.com/projects/FreeB/ 15706f2543Smrg * shall be included in all copies or substantial portions of the Software. 16706f2543Smrg * 17706f2543Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18706f2543Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19706f2543Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20706f2543Smrg * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21706f2543Smrg * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 22706f2543Smrg * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23706f2543Smrg * SOFTWARE. 24706f2543Smrg * 25706f2543Smrg * Except as contained in this notice, the name of Silicon Graphics, Inc. 26706f2543Smrg * shall not be used in advertising or otherwise to promote the sale, use or 27706f2543Smrg * other dealings in this Software without prior written authorization from 28706f2543Smrg * Silicon Graphics, Inc. 29706f2543Smrg */ 30706f2543Smrg 31706f2543Smrg#ifdef HAVE_DIX_CONFIG_H 32706f2543Smrg#include <dix-config.h> 33706f2543Smrg#endif 34706f2543Smrg 35706f2543Smrg#include <string.h> 36706f2543Smrg#include "glxserver.h" 37706f2543Smrg#include "glxutil.h" 38706f2543Smrg#include <GL/glxtokens.h> 39706f2543Smrg#include <unpack.h> 40706f2543Smrg#include <pixmapstr.h> 41706f2543Smrg#include <windowstr.h> 42706f2543Smrg#include "glxext.h" 43706f2543Smrg#include "glapitable.h" 44706f2543Smrg#include "glapi.h" 45706f2543Smrg#include "glthread.h" 46706f2543Smrg#include "dispatch.h" 47706f2543Smrg#include "indirect_dispatch.h" 48706f2543Smrg#include "indirect_table.h" 49706f2543Smrg#include "indirect_util.h" 50706f2543Smrg 51706f2543Smrg 52706f2543Smrg/************************************************************************/ 53706f2543Smrg 54706f2543Smrg/* 55706f2543Smrg** Byteswapping versions of GLX commands. In most cases they just swap 56706f2543Smrg** the incoming arguments and then call the unswapped routine. For commands 57706f2543Smrg** that have replies, a separate swapping routine for the reply is provided; 58706f2543Smrg** it is called at the end of the unswapped routine. 59706f2543Smrg*/ 60706f2543Smrg 61706f2543Smrgint __glXDispSwap_CreateContext(__GLXclientState *cl, GLbyte *pc) 62706f2543Smrg{ 63706f2543Smrg ClientPtr client = cl->client; 64706f2543Smrg xGLXCreateContextReq *req = (xGLXCreateContextReq *) pc; 65706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 66706f2543Smrg 67706f2543Smrg REQUEST_SIZE_MATCH(xGLXCreateContextReq); 68706f2543Smrg 69706f2543Smrg __GLX_SWAP_SHORT(&req->length); 70706f2543Smrg __GLX_SWAP_INT(&req->context); 71706f2543Smrg __GLX_SWAP_INT(&req->visual); 72706f2543Smrg __GLX_SWAP_INT(&req->screen); 73706f2543Smrg __GLX_SWAP_INT(&req->shareList); 74706f2543Smrg 75706f2543Smrg return __glXDisp_CreateContext(cl, pc); 76706f2543Smrg} 77706f2543Smrg 78706f2543Smrgint __glXDispSwap_CreateNewContext(__GLXclientState *cl, GLbyte *pc) 79706f2543Smrg{ 80706f2543Smrg ClientPtr client = cl->client; 81706f2543Smrg xGLXCreateNewContextReq *req = (xGLXCreateNewContextReq *) pc; 82706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 83706f2543Smrg 84706f2543Smrg REQUEST_SIZE_MATCH(xGLXCreateNewContextReq); 85706f2543Smrg 86706f2543Smrg __GLX_SWAP_SHORT(&req->length); 87706f2543Smrg __GLX_SWAP_INT(&req->context); 88706f2543Smrg __GLX_SWAP_INT(&req->fbconfig); 89706f2543Smrg __GLX_SWAP_INT(&req->screen); 90706f2543Smrg __GLX_SWAP_INT(&req->renderType); 91706f2543Smrg __GLX_SWAP_INT(&req->shareList); 92706f2543Smrg 93706f2543Smrg return __glXDisp_CreateNewContext(cl, pc); 94706f2543Smrg} 95706f2543Smrg 96706f2543Smrgint __glXDispSwap_CreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc) 97706f2543Smrg{ 98706f2543Smrg ClientPtr client = cl->client; 99706f2543Smrg xGLXCreateContextWithConfigSGIXReq *req = 100706f2543Smrg (xGLXCreateContextWithConfigSGIXReq *) pc; 101706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 102706f2543Smrg 103706f2543Smrg REQUEST_SIZE_MATCH(xGLXCreateContextWithConfigSGIXReq); 104706f2543Smrg 105706f2543Smrg __GLX_SWAP_SHORT(&req->length); 106706f2543Smrg __GLX_SWAP_INT(&req->context); 107706f2543Smrg __GLX_SWAP_INT(&req->fbconfig); 108706f2543Smrg __GLX_SWAP_INT(&req->screen); 109706f2543Smrg __GLX_SWAP_INT(&req->renderType); 110706f2543Smrg __GLX_SWAP_INT(&req->shareList); 111706f2543Smrg 112706f2543Smrg return __glXDisp_CreateContextWithConfigSGIX(cl, pc); 113706f2543Smrg} 114706f2543Smrg 115706f2543Smrgint __glXDispSwap_DestroyContext(__GLXclientState *cl, GLbyte *pc) 116706f2543Smrg{ 117706f2543Smrg ClientPtr client = cl->client; 118706f2543Smrg xGLXDestroyContextReq *req = (xGLXDestroyContextReq *) pc; 119706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 120706f2543Smrg 121706f2543Smrg REQUEST_SIZE_MATCH(xGLXDestroyContextReq); 122706f2543Smrg 123706f2543Smrg __GLX_SWAP_SHORT(&req->length); 124706f2543Smrg __GLX_SWAP_INT(&req->context); 125706f2543Smrg 126706f2543Smrg return __glXDisp_DestroyContext(cl, pc); 127706f2543Smrg} 128706f2543Smrg 129706f2543Smrgint __glXDispSwap_MakeCurrent(__GLXclientState *cl, GLbyte *pc) 130706f2543Smrg{ 131706f2543Smrg ClientPtr client = cl->client; 132706f2543Smrg xGLXMakeCurrentReq *req = (xGLXMakeCurrentReq *) pc; 133706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 134706f2543Smrg 135706f2543Smrg REQUEST_SIZE_MATCH(xGLXMakeCurrentReq); 136706f2543Smrg 137706f2543Smrg __GLX_SWAP_SHORT(&req->length); 138706f2543Smrg __GLX_SWAP_INT(&req->drawable); 139706f2543Smrg __GLX_SWAP_INT(&req->context); 140706f2543Smrg __GLX_SWAP_INT(&req->oldContextTag); 141706f2543Smrg 142706f2543Smrg return __glXDisp_MakeCurrent(cl, pc); 143706f2543Smrg} 144706f2543Smrg 145706f2543Smrgint __glXDispSwap_MakeContextCurrent(__GLXclientState *cl, GLbyte *pc) 146706f2543Smrg{ 147706f2543Smrg ClientPtr client = cl->client; 148706f2543Smrg xGLXMakeContextCurrentReq *req = (xGLXMakeContextCurrentReq *) pc; 149706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 150706f2543Smrg 151706f2543Smrg REQUEST_SIZE_MATCH(xGLXMakeContextCurrentReq); 152706f2543Smrg 153706f2543Smrg __GLX_SWAP_SHORT(&req->length); 154706f2543Smrg __GLX_SWAP_INT(&req->drawable); 155706f2543Smrg __GLX_SWAP_INT(&req->readdrawable); 156706f2543Smrg __GLX_SWAP_INT(&req->context); 157706f2543Smrg __GLX_SWAP_INT(&req->oldContextTag); 158706f2543Smrg 159706f2543Smrg return __glXDisp_MakeContextCurrent(cl, pc); 160706f2543Smrg} 161706f2543Smrg 162706f2543Smrgint __glXDispSwap_MakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc) 163706f2543Smrg{ 164706f2543Smrg ClientPtr client = cl->client; 165706f2543Smrg xGLXMakeCurrentReadSGIReq *req = (xGLXMakeCurrentReadSGIReq *) pc; 166706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 167706f2543Smrg 168706f2543Smrg REQUEST_SIZE_MATCH(xGLXMakeCurrentReadSGIReq); 169706f2543Smrg 170706f2543Smrg __GLX_SWAP_SHORT(&req->length); 171706f2543Smrg __GLX_SWAP_INT(&req->drawable); 172706f2543Smrg __GLX_SWAP_INT(&req->readable); 173706f2543Smrg __GLX_SWAP_INT(&req->context); 174706f2543Smrg __GLX_SWAP_INT(&req->oldContextTag); 175706f2543Smrg 176706f2543Smrg return __glXDisp_MakeCurrentReadSGI(cl, pc); 177706f2543Smrg} 178706f2543Smrg 179706f2543Smrgint __glXDispSwap_IsDirect(__GLXclientState *cl, GLbyte *pc) 180706f2543Smrg{ 181706f2543Smrg ClientPtr client = cl->client; 182706f2543Smrg xGLXIsDirectReq *req = (xGLXIsDirectReq *) pc; 183706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 184706f2543Smrg 185706f2543Smrg REQUEST_SIZE_MATCH(xGLXIsDirectReq); 186706f2543Smrg 187706f2543Smrg __GLX_SWAP_SHORT(&req->length); 188706f2543Smrg __GLX_SWAP_INT(&req->context); 189706f2543Smrg 190706f2543Smrg return __glXDisp_IsDirect(cl, pc); 191706f2543Smrg} 192706f2543Smrg 193706f2543Smrgint __glXDispSwap_QueryVersion(__GLXclientState *cl, GLbyte *pc) 194706f2543Smrg{ 195706f2543Smrg ClientPtr client = cl->client; 196706f2543Smrg xGLXQueryVersionReq *req = (xGLXQueryVersionReq *) pc; 197706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 198706f2543Smrg 199706f2543Smrg REQUEST_SIZE_MATCH(xGLXQueryVersionReq); 200706f2543Smrg 201706f2543Smrg __GLX_SWAP_SHORT(&req->length); 202706f2543Smrg __GLX_SWAP_INT(&req->majorVersion); 203706f2543Smrg __GLX_SWAP_INT(&req->minorVersion); 204706f2543Smrg 205706f2543Smrg return __glXDisp_QueryVersion(cl, pc); 206706f2543Smrg} 207706f2543Smrg 208706f2543Smrgint __glXDispSwap_WaitGL(__GLXclientState *cl, GLbyte *pc) 209706f2543Smrg{ 210706f2543Smrg ClientPtr client = cl->client; 211706f2543Smrg xGLXWaitGLReq *req = (xGLXWaitGLReq *) pc; 212706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 213706f2543Smrg 214706f2543Smrg REQUEST_SIZE_MATCH(xGLXWaitGLReq); 215706f2543Smrg 216706f2543Smrg __GLX_SWAP_SHORT(&req->length); 217706f2543Smrg __GLX_SWAP_INT(&req->contextTag); 218706f2543Smrg 219706f2543Smrg return __glXDisp_WaitGL(cl, pc); 220706f2543Smrg} 221706f2543Smrg 222706f2543Smrgint __glXDispSwap_WaitX(__GLXclientState *cl, GLbyte *pc) 223706f2543Smrg{ 224706f2543Smrg ClientPtr client = cl->client; 225706f2543Smrg xGLXWaitXReq *req = (xGLXWaitXReq *) pc; 226706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 227706f2543Smrg 228706f2543Smrg REQUEST_SIZE_MATCH(xGLXWaitXReq); 229706f2543Smrg 230706f2543Smrg __GLX_SWAP_SHORT(&req->length); 231706f2543Smrg __GLX_SWAP_INT(&req->contextTag); 232706f2543Smrg 233706f2543Smrg return __glXDisp_WaitX(cl, pc); 234706f2543Smrg} 235706f2543Smrg 236706f2543Smrgint __glXDispSwap_CopyContext(__GLXclientState *cl, GLbyte *pc) 237706f2543Smrg{ 238706f2543Smrg ClientPtr client = cl->client; 239706f2543Smrg xGLXCopyContextReq *req = (xGLXCopyContextReq *) pc; 240706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 241706f2543Smrg 242706f2543Smrg REQUEST_SIZE_MATCH(xGLXCopyContextReq); 243706f2543Smrg 244706f2543Smrg __GLX_SWAP_SHORT(&req->length); 245706f2543Smrg __GLX_SWAP_INT(&req->source); 246706f2543Smrg __GLX_SWAP_INT(&req->dest); 247706f2543Smrg __GLX_SWAP_INT(&req->mask); 248706f2543Smrg 249706f2543Smrg return __glXDisp_CopyContext(cl, pc); 250706f2543Smrg} 251706f2543Smrg 252706f2543Smrgint __glXDispSwap_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc) 253706f2543Smrg{ 254706f2543Smrg ClientPtr client = cl->client; 255706f2543Smrg xGLXGetVisualConfigsReq *req = (xGLXGetVisualConfigsReq *) pc; 256706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 257706f2543Smrg 258706f2543Smrg REQUEST_SIZE_MATCH(xGLXGetVisualConfigsReq); 259706f2543Smrg 260706f2543Smrg __GLX_SWAP_INT(&req->screen); 261706f2543Smrg return __glXDisp_GetVisualConfigs(cl, pc); 262706f2543Smrg} 263706f2543Smrg 264706f2543Smrgint __glXDispSwap_GetFBConfigs(__GLXclientState *cl, GLbyte *pc) 265706f2543Smrg{ 266706f2543Smrg ClientPtr client = cl->client; 267706f2543Smrg xGLXGetFBConfigsReq *req = (xGLXGetFBConfigsReq *) pc; 268706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 269706f2543Smrg 270706f2543Smrg REQUEST_SIZE_MATCH(xGLXGetFBConfigsReq); 271706f2543Smrg 272706f2543Smrg __GLX_SWAP_INT(&req->screen); 273706f2543Smrg return __glXDisp_GetFBConfigs(cl, pc); 274706f2543Smrg} 275706f2543Smrg 276706f2543Smrgint __glXDispSwap_GetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc) 277706f2543Smrg{ 278706f2543Smrg ClientPtr client = cl->client; 279706f2543Smrg xGLXGetFBConfigsSGIXReq *req = (xGLXGetFBConfigsSGIXReq *) pc; 280706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 281706f2543Smrg 282706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXGetFBConfigsSGIXReq); 283706f2543Smrg 284706f2543Smrg __GLX_SWAP_INT(&req->screen); 285706f2543Smrg return __glXDisp_GetFBConfigsSGIX(cl, pc); 286706f2543Smrg} 287706f2543Smrg 288706f2543Smrgint __glXDispSwap_CreateGLXPixmap(__GLXclientState *cl, GLbyte *pc) 289706f2543Smrg{ 290706f2543Smrg ClientPtr client = cl->client; 291706f2543Smrg xGLXCreateGLXPixmapReq *req = (xGLXCreateGLXPixmapReq *) pc; 292706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 293706f2543Smrg 294706f2543Smrg REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapReq); 295706f2543Smrg 296706f2543Smrg __GLX_SWAP_SHORT(&req->length); 297706f2543Smrg __GLX_SWAP_INT(&req->screen); 298706f2543Smrg __GLX_SWAP_INT(&req->visual); 299706f2543Smrg __GLX_SWAP_INT(&req->pixmap); 300706f2543Smrg __GLX_SWAP_INT(&req->glxpixmap); 301706f2543Smrg 302706f2543Smrg return __glXDisp_CreateGLXPixmap(cl, pc); 303706f2543Smrg} 304706f2543Smrg 305706f2543Smrgint __glXDispSwap_CreatePixmap(__GLXclientState *cl, GLbyte *pc) 306706f2543Smrg{ 307706f2543Smrg ClientPtr client = cl->client; 308706f2543Smrg xGLXCreatePixmapReq *req = (xGLXCreatePixmapReq *) pc; 309706f2543Smrg CARD32 *attribs; 310706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 311706f2543Smrg __GLX_DECLARE_SWAP_ARRAY_VARIABLES; 312706f2543Smrg 313706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXCreatePixmapReq); 314706f2543Smrg 315706f2543Smrg __GLX_SWAP_SHORT(&req->length); 316706f2543Smrg __GLX_SWAP_INT(&req->screen); 317706f2543Smrg __GLX_SWAP_INT(&req->fbconfig); 318706f2543Smrg __GLX_SWAP_INT(&req->pixmap); 319706f2543Smrg __GLX_SWAP_INT(&req->glxpixmap); 320706f2543Smrg __GLX_SWAP_INT(&req->numAttribs); 321706f2543Smrg 322706f2543Smrg if (req->numAttribs > (UINT32_MAX >> 3)) { 323706f2543Smrg client->errorValue = req->numAttribs; 324706f2543Smrg return BadValue; 325706f2543Smrg } 326706f2543Smrg REQUEST_FIXED_SIZE(xGLXCreatePixmapReq, req->numAttribs << 3); 327706f2543Smrg attribs = (CARD32*)(req + 1); 328706f2543Smrg __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1); 329706f2543Smrg 330706f2543Smrg return __glXDisp_CreatePixmap(cl, pc); 331706f2543Smrg} 332706f2543Smrg 333706f2543Smrgint __glXDispSwap_CreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc) 334706f2543Smrg{ 335706f2543Smrg ClientPtr client = cl->client; 336706f2543Smrg xGLXCreateGLXPixmapWithConfigSGIXReq *req = 337706f2543Smrg (xGLXCreateGLXPixmapWithConfigSGIXReq *) pc; 338706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 339706f2543Smrg 340706f2543Smrg REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapWithConfigSGIXReq); 341706f2543Smrg 342706f2543Smrg __GLX_SWAP_SHORT(&req->length); 343706f2543Smrg __GLX_SWAP_INT(&req->screen); 344706f2543Smrg __GLX_SWAP_INT(&req->fbconfig); 345706f2543Smrg __GLX_SWAP_INT(&req->pixmap); 346706f2543Smrg __GLX_SWAP_INT(&req->glxpixmap); 347706f2543Smrg 348706f2543Smrg return __glXDisp_CreateGLXPixmapWithConfigSGIX(cl, pc); 349706f2543Smrg} 350706f2543Smrg 351706f2543Smrgint __glXDispSwap_DestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc) 352706f2543Smrg{ 353706f2543Smrg ClientPtr client = cl->client; 354706f2543Smrg xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc; 355706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 356706f2543Smrg 357706f2543Smrg REQUEST_SIZE_MATCH(xGLXDestroyGLXPixmapReq); 358706f2543Smrg 359706f2543Smrg __GLX_SWAP_SHORT(&req->length); 360706f2543Smrg __GLX_SWAP_INT(&req->glxpixmap); 361706f2543Smrg 362706f2543Smrg return __glXDisp_DestroyGLXPixmap(cl, pc); 363706f2543Smrg} 364706f2543Smrg 365706f2543Smrgint __glXDispSwap_DestroyPixmap(__GLXclientState *cl, GLbyte *pc) 366706f2543Smrg{ 367706f2543Smrg ClientPtr client = cl->client; 368706f2543Smrg xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc; 369706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 370706f2543Smrg 371706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXDestroyGLXPixmapReq); 372706f2543Smrg 373706f2543Smrg __GLX_SWAP_SHORT(&req->length); 374706f2543Smrg __GLX_SWAP_INT(&req->glxpixmap); 375706f2543Smrg 376706f2543Smrg return __glXDisp_DestroyGLXPixmap(cl, pc); 377706f2543Smrg} 378706f2543Smrg 379706f2543Smrgint __glXDispSwap_QueryContext(__GLXclientState *cl, GLbyte *pc) 380706f2543Smrg{ 381706f2543Smrg ClientPtr client = cl->client; 382706f2543Smrg xGLXQueryContextReq *req = (xGLXQueryContextReq *) pc; 383706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 384706f2543Smrg 385706f2543Smrg REQUEST_SIZE_MATCH(xGLXQueryContextReq); 386706f2543Smrg 387706f2543Smrg __GLX_SWAP_INT(&req->context); 388706f2543Smrg 389706f2543Smrg return __glXDisp_QueryContext(cl, pc); 390706f2543Smrg} 391706f2543Smrg 392706f2543Smrgint __glXDispSwap_CreatePbuffer(__GLXclientState *cl, GLbyte *pc) 393706f2543Smrg{ 394706f2543Smrg ClientPtr client = cl->client; 395706f2543Smrg xGLXCreatePbufferReq *req = (xGLXCreatePbufferReq *) pc; 396706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 397706f2543Smrg __GLX_DECLARE_SWAP_ARRAY_VARIABLES; 398706f2543Smrg CARD32 *attribs; 399706f2543Smrg 400706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXCreatePbufferReq); 401706f2543Smrg 402706f2543Smrg __GLX_SWAP_INT(&req->screen); 403706f2543Smrg __GLX_SWAP_INT(&req->fbconfig); 404706f2543Smrg __GLX_SWAP_INT(&req->pbuffer); 405706f2543Smrg __GLX_SWAP_INT(&req->numAttribs); 406706f2543Smrg 407706f2543Smrg if (req->numAttribs > (UINT32_MAX >> 3)) { 408706f2543Smrg client->errorValue = req->numAttribs; 409706f2543Smrg return BadValue; 410706f2543Smrg } 411706f2543Smrg REQUEST_FIXED_SIZE(xGLXCreatePbufferReq, req->numAttribs << 3); 412706f2543Smrg attribs = (CARD32*)(req + 1); 413706f2543Smrg __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1); 414706f2543Smrg 415706f2543Smrg return __glXDisp_CreatePbuffer(cl, pc); 416706f2543Smrg} 417706f2543Smrg 418706f2543Smrgint __glXDispSwap_CreateGLXPbufferSGIX(__GLXclientState *cl, GLbyte *pc) 419706f2543Smrg{ 420706f2543Smrg ClientPtr client = cl->client; 421706f2543Smrg xGLXCreateGLXPbufferSGIXReq *req = (xGLXCreateGLXPbufferSGIXReq *) pc; 422706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 423706f2543Smrg 424706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXCreateGLXPbufferSGIXReq); 425706f2543Smrg 426706f2543Smrg __GLX_SWAP_INT(&req->screen); 427706f2543Smrg __GLX_SWAP_INT(&req->fbconfig); 428706f2543Smrg __GLX_SWAP_INT(&req->pbuffer); 429706f2543Smrg __GLX_SWAP_INT(&req->width); 430706f2543Smrg __GLX_SWAP_INT(&req->height); 431706f2543Smrg 432706f2543Smrg return __glXDisp_CreateGLXPbufferSGIX(cl, pc); 433706f2543Smrg} 434706f2543Smrg 435706f2543Smrgint __glXDispSwap_DestroyPbuffer(__GLXclientState *cl, GLbyte *pc) 436706f2543Smrg{ 437706f2543Smrg ClientPtr client = cl->client; 438706f2543Smrg xGLXDestroyPbufferReq *req = (xGLXDestroyPbufferReq *) pc; 439706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 440706f2543Smrg 441706f2543Smrg REQUEST_SIZE_MATCH(xGLXDestroyPbufferReq); 442706f2543Smrg 443706f2543Smrg __GLX_SWAP_INT(&req->pbuffer); 444706f2543Smrg 445706f2543Smrg return __glXDisp_DestroyPbuffer(cl, pc); 446706f2543Smrg} 447706f2543Smrg 448706f2543Smrgint __glXDispSwap_DestroyGLXPbufferSGIX(__GLXclientState *cl, GLbyte *pc) 449706f2543Smrg{ 450706f2543Smrg ClientPtr client = cl->client; 451706f2543Smrg xGLXDestroyGLXPbufferSGIXReq *req = (xGLXDestroyGLXPbufferSGIXReq *) pc; 452706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 453706f2543Smrg 454706f2543Smrg REQUEST_SIZE_MATCH(xGLXDestroyGLXPbufferSGIXReq); 455706f2543Smrg 456706f2543Smrg __GLX_SWAP_INT(&req->pbuffer); 457706f2543Smrg 458706f2543Smrg return __glXDisp_DestroyGLXPbufferSGIX(cl, pc); 459706f2543Smrg} 460706f2543Smrg 461706f2543Smrgint __glXDispSwap_ChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc) 462706f2543Smrg{ 463706f2543Smrg ClientPtr client = cl->client; 464706f2543Smrg xGLXChangeDrawableAttributesReq *req = 465706f2543Smrg (xGLXChangeDrawableAttributesReq *) pc; 466706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 467706f2543Smrg __GLX_DECLARE_SWAP_ARRAY_VARIABLES; 468706f2543Smrg CARD32 *attribs; 469706f2543Smrg 470706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesReq); 471706f2543Smrg 472706f2543Smrg __GLX_SWAP_INT(&req->drawable); 473706f2543Smrg __GLX_SWAP_INT(&req->numAttribs); 474706f2543Smrg 475706f2543Smrg if (req->numAttribs > (UINT32_MAX >> 3)) { 476706f2543Smrg client->errorValue = req->numAttribs; 477706f2543Smrg return BadValue; 478706f2543Smrg } 479706f2543Smrg if (((sizeof(xGLXChangeDrawableAttributesReq) + (req->numAttribs << 3)) >> 2) < client->req_len) 480706f2543Smrg return BadLength; 481706f2543Smrg 482706f2543Smrg attribs = (CARD32*)(req + 1); 483706f2543Smrg __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1); 484706f2543Smrg 485706f2543Smrg return __glXDisp_ChangeDrawableAttributes(cl, pc); 486706f2543Smrg} 487706f2543Smrg 488706f2543Smrgint __glXDispSwap_ChangeDrawableAttributesSGIX(__GLXclientState *cl, 489706f2543Smrg GLbyte *pc) 490706f2543Smrg{ 491706f2543Smrg ClientPtr client = cl->client; 492706f2543Smrg xGLXChangeDrawableAttributesSGIXReq *req = 493706f2543Smrg (xGLXChangeDrawableAttributesSGIXReq *) pc; 494706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 495706f2543Smrg __GLX_DECLARE_SWAP_ARRAY_VARIABLES; 496706f2543Smrg CARD32 *attribs; 497706f2543Smrg 498706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesSGIXReq); 499706f2543Smrg 500706f2543Smrg __GLX_SWAP_INT(&req->drawable); 501706f2543Smrg __GLX_SWAP_INT(&req->numAttribs); 502706f2543Smrg 503706f2543Smrg if (req->numAttribs > (UINT32_MAX >> 3)) { 504706f2543Smrg client->errorValue = req->numAttribs; 505706f2543Smrg return BadValue; 506706f2543Smrg } 507706f2543Smrg REQUEST_FIXED_SIZE(xGLXChangeDrawableAttributesSGIXReq, req->numAttribs << 3); 508706f2543Smrg attribs = (CARD32*)(req + 1); 509706f2543Smrg __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1); 510706f2543Smrg 511706f2543Smrg return __glXDisp_ChangeDrawableAttributesSGIX(cl, pc); 512706f2543Smrg} 513706f2543Smrg 514706f2543Smrgint __glXDispSwap_CreateWindow(__GLXclientState *cl, GLbyte *pc) 515706f2543Smrg{ 516706f2543Smrg ClientPtr client = cl->client; 517706f2543Smrg xGLXCreateWindowReq *req = (xGLXCreateWindowReq *) pc; 518706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 519706f2543Smrg __GLX_DECLARE_SWAP_ARRAY_VARIABLES; 520706f2543Smrg CARD32 *attribs; 521706f2543Smrg 522706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXCreateWindowReq); 523706f2543Smrg 524706f2543Smrg __GLX_SWAP_INT(&req->screen); 525706f2543Smrg __GLX_SWAP_INT(&req->fbconfig); 526706f2543Smrg __GLX_SWAP_INT(&req->window); 527706f2543Smrg __GLX_SWAP_INT(&req->glxwindow); 528706f2543Smrg __GLX_SWAP_INT(&req->numAttribs); 529706f2543Smrg 530706f2543Smrg if (req->numAttribs > (UINT32_MAX >> 3)) { 531706f2543Smrg client->errorValue = req->numAttribs; 532706f2543Smrg return BadValue; 533706f2543Smrg } 534706f2543Smrg REQUEST_FIXED_SIZE(xGLXCreateWindowReq, req->numAttribs << 3); 535706f2543Smrg attribs = (CARD32*)(req + 1); 536706f2543Smrg __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1); 537706f2543Smrg 538706f2543Smrg return __glXDisp_CreateWindow(cl, pc); 539706f2543Smrg} 540706f2543Smrg 541706f2543Smrgint __glXDispSwap_DestroyWindow(__GLXclientState *cl, GLbyte *pc) 542706f2543Smrg{ 543706f2543Smrg ClientPtr client = cl->client; 544706f2543Smrg xGLXDestroyWindowReq *req = (xGLXDestroyWindowReq *) pc; 545706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 546706f2543Smrg 547706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXDestroyWindowReq); 548706f2543Smrg 549706f2543Smrg __GLX_SWAP_INT(&req->glxwindow); 550706f2543Smrg 551706f2543Smrg return __glXDisp_DestroyWindow(cl, pc); 552706f2543Smrg} 553706f2543Smrg 554706f2543Smrgint __glXDispSwap_SwapBuffers(__GLXclientState *cl, GLbyte *pc) 555706f2543Smrg{ 556706f2543Smrg ClientPtr client = cl->client; 557706f2543Smrg xGLXSwapBuffersReq *req = (xGLXSwapBuffersReq *) pc; 558706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 559706f2543Smrg 560706f2543Smrg REQUEST_SIZE_MATCH(xGLXSwapBuffersReq); 561706f2543Smrg 562706f2543Smrg __GLX_SWAP_SHORT(&req->length); 563706f2543Smrg __GLX_SWAP_INT(&req->contextTag); 564706f2543Smrg __GLX_SWAP_INT(&req->drawable); 565706f2543Smrg 566706f2543Smrg return __glXDisp_SwapBuffers(cl, pc); 567706f2543Smrg} 568706f2543Smrg 569706f2543Smrgint __glXDispSwap_UseXFont(__GLXclientState *cl, GLbyte *pc) 570706f2543Smrg{ 571706f2543Smrg ClientPtr client = cl->client; 572706f2543Smrg xGLXUseXFontReq *req = (xGLXUseXFontReq *) pc; 573706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 574706f2543Smrg 575706f2543Smrg REQUEST_SIZE_MATCH(xGLXUseXFontReq); 576706f2543Smrg 577706f2543Smrg __GLX_SWAP_SHORT(&req->length); 578706f2543Smrg __GLX_SWAP_INT(&req->contextTag); 579706f2543Smrg __GLX_SWAP_INT(&req->font); 580706f2543Smrg __GLX_SWAP_INT(&req->first); 581706f2543Smrg __GLX_SWAP_INT(&req->count); 582706f2543Smrg __GLX_SWAP_INT(&req->listBase); 583706f2543Smrg 584706f2543Smrg return __glXDisp_UseXFont(cl, pc); 585706f2543Smrg} 586706f2543Smrg 587706f2543Smrg 588706f2543Smrgint __glXDispSwap_QueryExtensionsString(__GLXclientState *cl, GLbyte *pc) 589706f2543Smrg{ 590706f2543Smrg ClientPtr client = cl->client; 591706f2543Smrg xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *)pc; 592706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 593706f2543Smrg 594706f2543Smrg REQUEST_SIZE_MATCH(xGLXQueryExtensionsStringReq); 595706f2543Smrg 596706f2543Smrg __GLX_SWAP_SHORT(&req->length); 597706f2543Smrg __GLX_SWAP_INT(&req->screen); 598706f2543Smrg 599706f2543Smrg return __glXDisp_QueryExtensionsString(cl, pc); 600706f2543Smrg} 601706f2543Smrg 602706f2543Smrgint __glXDispSwap_QueryServerString(__GLXclientState *cl, GLbyte *pc) 603706f2543Smrg{ 604706f2543Smrg ClientPtr client = cl->client; 605706f2543Smrg xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *)pc; 606706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 607706f2543Smrg 608706f2543Smrg REQUEST_SIZE_MATCH(xGLXQueryServerStringReq); 609706f2543Smrg 610706f2543Smrg __GLX_SWAP_SHORT(&req->length); 611706f2543Smrg __GLX_SWAP_INT(&req->screen); 612706f2543Smrg __GLX_SWAP_INT(&req->name); 613706f2543Smrg 614706f2543Smrg return __glXDisp_QueryServerString(cl, pc); 615706f2543Smrg} 616706f2543Smrg 617706f2543Smrgint __glXDispSwap_ClientInfo(__GLXclientState *cl, GLbyte *pc) 618706f2543Smrg{ 619706f2543Smrg ClientPtr client = cl->client; 620706f2543Smrg xGLXClientInfoReq *req = (xGLXClientInfoReq *)pc; 621706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 622706f2543Smrg 623706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXClientInfoReq); 624706f2543Smrg 625706f2543Smrg __GLX_SWAP_SHORT(&req->length); 626706f2543Smrg __GLX_SWAP_INT(&req->major); 627706f2543Smrg __GLX_SWAP_INT(&req->minor); 628706f2543Smrg __GLX_SWAP_INT(&req->numbytes); 629706f2543Smrg 630706f2543Smrg return __glXDisp_ClientInfo(cl, pc); 631706f2543Smrg} 632706f2543Smrg 633706f2543Smrgint __glXDispSwap_QueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc) 634706f2543Smrg{ 635706f2543Smrg ClientPtr client = cl->client; 636706f2543Smrg xGLXQueryContextInfoEXTReq *req = (xGLXQueryContextInfoEXTReq *) pc; 637706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 638706f2543Smrg 639706f2543Smrg REQUEST_SIZE_MATCH(xGLXQueryContextInfoEXTReq); 640706f2543Smrg 641706f2543Smrg __GLX_SWAP_SHORT(&req->length); 642706f2543Smrg __GLX_SWAP_INT(&req->context); 643706f2543Smrg 644706f2543Smrg return __glXDisp_QueryContextInfoEXT(cl, pc); 645706f2543Smrg} 646706f2543Smrg 647706f2543Smrgint __glXDispSwap_BindTexImageEXT(__GLXclientState *cl, GLbyte *pc) 648706f2543Smrg{ 649706f2543Smrg ClientPtr client = cl->client; 650706f2543Smrg xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc; 651706f2543Smrg GLXDrawable *drawId; 652706f2543Smrg int *buffer; 653706f2543Smrg CARD32 *num_attribs; 654706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 655706f2543Smrg 656706f2543Smrg if ((sizeof(xGLXVendorPrivateReq) + 12) >> 2 > client->req_len) 657706f2543Smrg return BadLength; 658706f2543Smrg 659706f2543Smrg pc += __GLX_VENDPRIV_HDR_SIZE; 660706f2543Smrg 661706f2543Smrg drawId = ((GLXDrawable *) (pc)); 662706f2543Smrg buffer = ((int *) (pc + 4)); 663706f2543Smrg num_attribs = ((CARD32 *) (pc + 8)); 664706f2543Smrg 665706f2543Smrg __GLX_SWAP_SHORT(&req->length); 666706f2543Smrg __GLX_SWAP_INT(&req->contextTag); 667706f2543Smrg __GLX_SWAP_INT(drawId); 668706f2543Smrg __GLX_SWAP_INT(buffer); 669706f2543Smrg __GLX_SWAP_INT(num_attribs); 670706f2543Smrg 671706f2543Smrg return __glXDisp_BindTexImageEXT(cl, (GLbyte *)pc); 672706f2543Smrg} 673706f2543Smrg 674706f2543Smrgint __glXDispSwap_ReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc) 675706f2543Smrg{ 676706f2543Smrg ClientPtr client = cl->client; 677706f2543Smrg xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc; 678706f2543Smrg GLXDrawable *drawId; 679706f2543Smrg int *buffer; 680706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 681706f2543Smrg 682706f2543Smrg REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 8); 683706f2543Smrg 684706f2543Smrg pc += __GLX_VENDPRIV_HDR_SIZE; 685706f2543Smrg 686706f2543Smrg drawId = ((GLXDrawable *) (pc)); 687706f2543Smrg buffer = ((int *) (pc + 4)); 688706f2543Smrg 689706f2543Smrg __GLX_SWAP_SHORT(&req->length); 690706f2543Smrg __GLX_SWAP_INT(&req->contextTag); 691706f2543Smrg __GLX_SWAP_INT(drawId); 692706f2543Smrg __GLX_SWAP_INT(buffer); 693706f2543Smrg 694706f2543Smrg return __glXDisp_ReleaseTexImageEXT(cl, (GLbyte *)pc); 695706f2543Smrg} 696706f2543Smrg 697706f2543Smrgint __glXDispSwap_CopySubBufferMESA(__GLXclientState *cl, GLbyte *pc) 698706f2543Smrg{ 699706f2543Smrg ClientPtr client = cl->client; 700706f2543Smrg xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc; 701706f2543Smrg GLXDrawable *drawId; 702706f2543Smrg int *buffer; 703706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 704706f2543Smrg 705706f2543Smrg REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 20); 706706f2543Smrg 707706f2543Smrg (void) drawId; 708706f2543Smrg (void) buffer; 709706f2543Smrg 710706f2543Smrg pc += __GLX_VENDPRIV_HDR_SIZE; 711706f2543Smrg 712706f2543Smrg __GLX_SWAP_SHORT(&req->length); 713706f2543Smrg __GLX_SWAP_INT(&req->contextTag); 714706f2543Smrg __GLX_SWAP_INT(pc); 715706f2543Smrg __GLX_SWAP_INT(pc + 4); 716706f2543Smrg __GLX_SWAP_INT(pc + 8); 717706f2543Smrg __GLX_SWAP_INT(pc + 12); 718706f2543Smrg __GLX_SWAP_INT(pc + 16); 719706f2543Smrg 720706f2543Smrg return __glXDisp_CopySubBufferMESA(cl, pc); 721706f2543Smrg 722706f2543Smrg} 723706f2543Smrg 724706f2543Smrgint __glXDispSwap_GetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc) 725706f2543Smrg{ 726706f2543Smrg ClientPtr client = cl->client; 727706f2543Smrg xGLXVendorPrivateWithReplyReq *req = (xGLXVendorPrivateWithReplyReq *)pc; 728706f2543Smrg CARD32 *data; 729706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 730706f2543Smrg 731706f2543Smrg REQUEST_SIZE_MATCH(xGLXGetDrawableAttributesSGIXReq); 732706f2543Smrg 733706f2543Smrg data = (CARD32 *) (req + 1); 734706f2543Smrg __GLX_SWAP_SHORT(&req->length); 735706f2543Smrg __GLX_SWAP_INT(&req->contextTag); 736706f2543Smrg __GLX_SWAP_INT(data); 737706f2543Smrg 738706f2543Smrg return __glXDisp_GetDrawableAttributesSGIX(cl, pc); 739706f2543Smrg} 740706f2543Smrg 741706f2543Smrgint __glXDispSwap_GetDrawableAttributes(__GLXclientState *cl, GLbyte *pc) 742706f2543Smrg{ 743706f2543Smrg ClientPtr client = cl->client; 744706f2543Smrg xGLXGetDrawableAttributesReq *req = (xGLXGetDrawableAttributesReq *)pc; 745706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 746706f2543Smrg 747706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXGetDrawableAttributesReq); 748706f2543Smrg 749706f2543Smrg __GLX_SWAP_SHORT(&req->length); 750706f2543Smrg __GLX_SWAP_INT(&req->drawable); 751706f2543Smrg 752706f2543Smrg return __glXDisp_GetDrawableAttributes(cl, pc); 753706f2543Smrg} 754706f2543Smrg 755706f2543Smrg 756706f2543Smrg/************************************************************************/ 757706f2543Smrg 758706f2543Smrg/* 759706f2543Smrg** Swap replies. 760706f2543Smrg*/ 761706f2543Smrg 762706f2543Smrgvoid __glXSwapMakeCurrentReply(ClientPtr client, xGLXMakeCurrentReply *reply) 763706f2543Smrg{ 764706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 765706f2543Smrg __GLX_SWAP_SHORT(&reply->sequenceNumber); 766706f2543Smrg __GLX_SWAP_INT(&reply->length); 767706f2543Smrg __GLX_SWAP_INT(&reply->contextTag); 768706f2543Smrg WriteToClient(client, sz_xGLXMakeCurrentReply, (char *)reply); 769706f2543Smrg} 770706f2543Smrg 771706f2543Smrgvoid __glXSwapIsDirectReply(ClientPtr client, xGLXIsDirectReply *reply) 772706f2543Smrg{ 773706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 774706f2543Smrg __GLX_SWAP_SHORT(&reply->sequenceNumber); 775706f2543Smrg __GLX_SWAP_INT(&reply->length); 776706f2543Smrg WriteToClient(client, sz_xGLXIsDirectReply, (char *)reply); 777706f2543Smrg} 778706f2543Smrg 779706f2543Smrgvoid __glXSwapQueryVersionReply(ClientPtr client, xGLXQueryVersionReply *reply) 780706f2543Smrg{ 781706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 782706f2543Smrg __GLX_SWAP_SHORT(&reply->sequenceNumber); 783706f2543Smrg __GLX_SWAP_INT(&reply->length); 784706f2543Smrg __GLX_SWAP_INT(&reply->majorVersion); 785706f2543Smrg __GLX_SWAP_INT(&reply->minorVersion); 786706f2543Smrg WriteToClient(client, sz_xGLXQueryVersionReply, (char *)reply); 787706f2543Smrg} 788706f2543Smrg 789706f2543Smrgvoid glxSwapQueryExtensionsStringReply(ClientPtr client, 790706f2543Smrg xGLXQueryExtensionsStringReply *reply, char *buf) 791706f2543Smrg{ 792706f2543Smrg int length = reply->length; 793706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 794706f2543Smrg __GLX_DECLARE_SWAP_ARRAY_VARIABLES; 795706f2543Smrg __GLX_SWAP_SHORT(&reply->sequenceNumber); 796706f2543Smrg __GLX_SWAP_INT(&reply->length); 797706f2543Smrg __GLX_SWAP_INT(&reply->n); 798706f2543Smrg WriteToClient(client, sz_xGLXQueryExtensionsStringReply, (char *)reply); 799706f2543Smrg __GLX_SWAP_INT_ARRAY((int *)buf, length); 800706f2543Smrg WriteToClient(client, length << 2, buf); 801706f2543Smrg} 802706f2543Smrg 803706f2543Smrgvoid glxSwapQueryServerStringReply(ClientPtr client, 804706f2543Smrg xGLXQueryServerStringReply *reply, char *buf) 805706f2543Smrg{ 806706f2543Smrg int length = reply->length; 807706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 808706f2543Smrg __GLX_SWAP_SHORT(&reply->sequenceNumber); 809706f2543Smrg __GLX_SWAP_INT(&reply->length); 810706f2543Smrg __GLX_SWAP_INT(&reply->n); 811706f2543Smrg WriteToClient(client, sz_xGLXQueryServerStringReply, (char *)reply); 812706f2543Smrg /** no swap is needed for an array of chars **/ 813706f2543Smrg /* __GLX_SWAP_INT_ARRAY((int *)buf, length); */ 814706f2543Smrg WriteToClient(client, length << 2, buf); 815706f2543Smrg} 816706f2543Smrg 817706f2543Smrgvoid __glXSwapQueryContextInfoEXTReply(ClientPtr client, xGLXQueryContextInfoEXTReply *reply, int *buf) 818706f2543Smrg{ 819706f2543Smrg int length = reply->length; 820706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 821706f2543Smrg __GLX_DECLARE_SWAP_ARRAY_VARIABLES; 822706f2543Smrg __GLX_SWAP_SHORT(&reply->sequenceNumber); 823706f2543Smrg __GLX_SWAP_INT(&reply->length); 824706f2543Smrg __GLX_SWAP_INT(&reply->n); 825706f2543Smrg WriteToClient(client, sz_xGLXQueryContextInfoEXTReply, (char *)reply); 826706f2543Smrg __GLX_SWAP_INT_ARRAY((int *)buf, length); 827706f2543Smrg WriteToClient(client, length << 2, (char *)buf); 828706f2543Smrg} 829706f2543Smrg 830706f2543Smrgvoid __glXSwapGetDrawableAttributesReply(ClientPtr client, 831706f2543Smrg xGLXGetDrawableAttributesReply *reply, CARD32 *buf) 832706f2543Smrg{ 833706f2543Smrg int length = reply->length; 834706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 835706f2543Smrg __GLX_DECLARE_SWAP_ARRAY_VARIABLES; 836706f2543Smrg __GLX_SWAP_SHORT(&reply->sequenceNumber); 837706f2543Smrg __GLX_SWAP_INT(&reply->length); 838706f2543Smrg __GLX_SWAP_INT(&reply->numAttribs); 839706f2543Smrg WriteToClient(client, sz_xGLXGetDrawableAttributesReply, (char *)reply); 840706f2543Smrg __GLX_SWAP_INT_ARRAY((int *)buf, length); 841706f2543Smrg WriteToClient(client, length << 2, (char *)buf); 842706f2543Smrg} 843706f2543Smrg 844706f2543Smrg/************************************************************************/ 845706f2543Smrg 846706f2543Smrg/* 847706f2543Smrg** Render and Renderlarge are not in the GLX API. They are used by the GLX 848706f2543Smrg** client library to send batches of GL rendering commands. 849706f2543Smrg*/ 850706f2543Smrg 851706f2543Smrgint __glXDispSwap_Render(__GLXclientState *cl, GLbyte *pc) 852706f2543Smrg{ 853706f2543Smrg return __glXDisp_Render(cl, pc); 854706f2543Smrg} 855706f2543Smrg 856706f2543Smrg/* 857706f2543Smrg** Execute a large rendering request (one that spans multiple X requests). 858706f2543Smrg*/ 859706f2543Smrgint __glXDispSwap_RenderLarge(__GLXclientState *cl, GLbyte *pc) 860706f2543Smrg{ 861706f2543Smrg return __glXDisp_RenderLarge(cl, pc); 862706f2543Smrg} 863706f2543Smrg 864706f2543Smrg/************************************************************************/ 865706f2543Smrg 866706f2543Smrg/* 867706f2543Smrg** No support is provided for the vendor-private requests other than 868706f2543Smrg** allocating these entry points in the dispatch table. 869706f2543Smrg*/ 870706f2543Smrg 871706f2543Smrgint __glXDispSwap_VendorPrivate(__GLXclientState *cl, GLbyte *pc) 872706f2543Smrg{ 873706f2543Smrg ClientPtr client = cl->client; 874706f2543Smrg xGLXVendorPrivateReq *req; 875706f2543Smrg GLint vendorcode; 876706f2543Smrg __GLXdispatchVendorPrivProcPtr proc; 877706f2543Smrg 878706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 879706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateReq); 880706f2543Smrg 881706f2543Smrg req = (xGLXVendorPrivateReq *) pc; 882706f2543Smrg __GLX_SWAP_SHORT(&req->length); 883706f2543Smrg __GLX_SWAP_INT(&req->vendorCode); 884706f2543Smrg 885706f2543Smrg vendorcode = req->vendorCode; 886706f2543Smrg 887706f2543Smrg proc = (__GLXdispatchVendorPrivProcPtr) 888706f2543Smrg __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info, 889706f2543Smrg vendorcode, 1); 890706f2543Smrg if (proc != NULL) { 891706f2543Smrg (*proc)(cl, (GLbyte*)req); 892706f2543Smrg return Success; 893706f2543Smrg } 894706f2543Smrg 895706f2543Smrg cl->client->errorValue = req->vendorCode; 896706f2543Smrg return __glXError(GLXUnsupportedPrivateRequest); 897706f2543Smrg} 898706f2543Smrg 899706f2543Smrg 900706f2543Smrgint __glXDispSwap_VendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc) 901706f2543Smrg{ 902706f2543Smrg ClientPtr client = cl->client; 903706f2543Smrg xGLXVendorPrivateWithReplyReq *req; 904706f2543Smrg GLint vendorcode; 905706f2543Smrg __GLXdispatchVendorPrivProcPtr proc; 906706f2543Smrg 907706f2543Smrg __GLX_DECLARE_SWAP_VARIABLES; 908706f2543Smrg REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateWithReplyReq); 909706f2543Smrg 910706f2543Smrg req = (xGLXVendorPrivateWithReplyReq *) pc; 911706f2543Smrg __GLX_SWAP_SHORT(&req->length); 912706f2543Smrg __GLX_SWAP_INT(&req->vendorCode); 913706f2543Smrg 914706f2543Smrg vendorcode = req->vendorCode; 915706f2543Smrg 916706f2543Smrg proc = (__GLXdispatchVendorPrivProcPtr) 917706f2543Smrg __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info, 918706f2543Smrg vendorcode, 1); 919706f2543Smrg if (proc != NULL) { 920706f2543Smrg return (*proc)(cl, (GLbyte*)req); 921706f2543Smrg } 922706f2543Smrg 923706f2543Smrg cl->client->errorValue = req->vendorCode; 924706f2543Smrg return __glXError(GLXUnsupportedPrivateRequest); 925706f2543Smrg} 926