1*4882a593Smuzhiyun /************************************************************************** 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. 4*4882a593Smuzhiyun Copyright 2000 VA Linux Systems, Inc. 5*4882a593Smuzhiyun Copyright (c) 2002-2012 Apple Computer, Inc. 6*4882a593Smuzhiyun All Rights Reserved. 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun Permission is hereby granted, free of charge, to any person obtaining a 9*4882a593Smuzhiyun copy of this software and associated documentation files (the 10*4882a593Smuzhiyun "Software"), to deal in the Software without restriction, including 11*4882a593Smuzhiyun without limitation the rights to use, copy, modify, merge, publish, 12*4882a593Smuzhiyun distribute, sub license, and/or sell copies of the Software, and to 13*4882a593Smuzhiyun permit persons to whom the Software is furnished to do so, subject to 14*4882a593Smuzhiyun the following conditions: 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun The above copyright notice and this permission notice (including the 17*4882a593Smuzhiyun next paragraph) shall be included in all copies or substantial portions 18*4882a593Smuzhiyun of the Software. 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 21*4882a593Smuzhiyun OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22*4882a593Smuzhiyun MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 23*4882a593Smuzhiyun IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 24*4882a593Smuzhiyun ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 25*4882a593Smuzhiyun TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 26*4882a593Smuzhiyun SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun **************************************************************************/ 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* 31*4882a593Smuzhiyun * Authors: 32*4882a593Smuzhiyun * Kevin E. Martin <martin@valinux.com> 33*4882a593Smuzhiyun * Jens Owen <jens@valinux.com> 34*4882a593Smuzhiyun * Rickard E. (Rik) Fiath <faith@valinux.com> 35*4882a593Smuzhiyun * Jeremy Huddleston <jeremyhu@apple.com> 36*4882a593Smuzhiyun * 37*4882a593Smuzhiyun */ 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun #ifndef _APPLEDRISTR_H_ 40*4882a593Smuzhiyun #define _APPLEDRISTR_H_ 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #include "appledri.h" 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun #define APPLEDRINAME "Apple-DRI" 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun #define APPLE_DRI_MAJOR_VERSION 1 /* current version numbers */ 47*4882a593Smuzhiyun #define APPLE_DRI_MINOR_VERSION 0 48*4882a593Smuzhiyun #define APPLE_DRI_PATCH_VERSION 0 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun typedef struct _AppleDRIQueryVersion { 51*4882a593Smuzhiyun CARD8 reqType; /* always DRIReqCode */ 52*4882a593Smuzhiyun CARD8 driReqType; /* always X_DRIQueryVersion */ 53*4882a593Smuzhiyun CARD16 length B16; 54*4882a593Smuzhiyun } xAppleDRIQueryVersionReq; 55*4882a593Smuzhiyun #define sz_xAppleDRIQueryVersionReq 4 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun typedef struct { 58*4882a593Smuzhiyun BYTE type; /* X_Reply */ 59*4882a593Smuzhiyun BOOL pad1; 60*4882a593Smuzhiyun CARD16 sequenceNumber B16; 61*4882a593Smuzhiyun CARD32 length B32; 62*4882a593Smuzhiyun CARD16 majorVersion B16; /* major version of DRI protocol */ 63*4882a593Smuzhiyun CARD16 minorVersion B16; /* minor version of DRI protocol */ 64*4882a593Smuzhiyun CARD32 patchVersion B32; /* patch version of DRI protocol */ 65*4882a593Smuzhiyun CARD32 pad3 B32; 66*4882a593Smuzhiyun CARD32 pad4 B32; 67*4882a593Smuzhiyun CARD32 pad5 B32; 68*4882a593Smuzhiyun CARD32 pad6 B32; 69*4882a593Smuzhiyun } xAppleDRIQueryVersionReply; 70*4882a593Smuzhiyun #define sz_xAppleDRIQueryVersionReply 32 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun typedef struct _AppleDRIQueryDirectRenderingCapable { 73*4882a593Smuzhiyun CARD8 reqType; /* always DRIReqCode */ 74*4882a593Smuzhiyun CARD8 driReqType; /* X_DRIQueryDirectRenderingCapable */ 75*4882a593Smuzhiyun CARD16 length B16; 76*4882a593Smuzhiyun CARD32 screen B32; 77*4882a593Smuzhiyun } xAppleDRIQueryDirectRenderingCapableReq; 78*4882a593Smuzhiyun #define sz_xAppleDRIQueryDirectRenderingCapableReq 8 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun typedef struct { 81*4882a593Smuzhiyun BYTE type; /* X_Reply */ 82*4882a593Smuzhiyun BOOL pad1; 83*4882a593Smuzhiyun CARD16 sequenceNumber B16; 84*4882a593Smuzhiyun CARD32 length B32; 85*4882a593Smuzhiyun BOOL isCapable; 86*4882a593Smuzhiyun BOOL pad2; 87*4882a593Smuzhiyun BOOL pad3; 88*4882a593Smuzhiyun BOOL pad4; 89*4882a593Smuzhiyun CARD32 pad5 B32; 90*4882a593Smuzhiyun CARD32 pad6 B32; 91*4882a593Smuzhiyun CARD32 pad7 B32; 92*4882a593Smuzhiyun CARD32 pad8 B32; 93*4882a593Smuzhiyun CARD32 pad9 B32; 94*4882a593Smuzhiyun } xAppleDRIQueryDirectRenderingCapableReply; 95*4882a593Smuzhiyun #define sz_xAppleDRIQueryDirectRenderingCapableReply 32 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun typedef struct _AppleDRIAuthConnection { 98*4882a593Smuzhiyun CARD8 reqType; /* always DRIReqCode */ 99*4882a593Smuzhiyun CARD8 driReqType; /* always X_DRICloseConnection */ 100*4882a593Smuzhiyun CARD16 length B16; 101*4882a593Smuzhiyun CARD32 screen B32; 102*4882a593Smuzhiyun CARD32 magic B32; 103*4882a593Smuzhiyun } xAppleDRIAuthConnectionReq; 104*4882a593Smuzhiyun #define sz_xAppleDRIAuthConnectionReq 12 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun typedef struct { 107*4882a593Smuzhiyun BYTE type; 108*4882a593Smuzhiyun BOOL pad1; 109*4882a593Smuzhiyun CARD16 sequenceNumber B16; 110*4882a593Smuzhiyun CARD32 length B32; 111*4882a593Smuzhiyun CARD32 authenticated B32; 112*4882a593Smuzhiyun CARD32 pad2 B32; 113*4882a593Smuzhiyun CARD32 pad3 B32; 114*4882a593Smuzhiyun CARD32 pad4 B32; 115*4882a593Smuzhiyun CARD32 pad5 B32; 116*4882a593Smuzhiyun CARD32 pad6 B32; 117*4882a593Smuzhiyun } xAppleDRIAuthConnectionReply; 118*4882a593Smuzhiyun #define zx_xAppleDRIAuthConnectionReply 32 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun typedef struct _AppleDRICreateSurface { 121*4882a593Smuzhiyun CARD8 reqType; /* always DRIReqCode */ 122*4882a593Smuzhiyun CARD8 driReqType; /* always X_DRICreateSurface */ 123*4882a593Smuzhiyun CARD16 length B16; 124*4882a593Smuzhiyun CARD32 screen B32; 125*4882a593Smuzhiyun CARD32 drawable B32; 126*4882a593Smuzhiyun CARD32 client_id B32; 127*4882a593Smuzhiyun } xAppleDRICreateSurfaceReq; 128*4882a593Smuzhiyun #define sz_xAppleDRICreateSurfaceReq 16 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun typedef struct { 131*4882a593Smuzhiyun BYTE type; /* X_Reply */ 132*4882a593Smuzhiyun BOOL pad1; 133*4882a593Smuzhiyun CARD16 sequenceNumber B16; 134*4882a593Smuzhiyun CARD32 length B32; 135*4882a593Smuzhiyun CARD32 key_0 B32; 136*4882a593Smuzhiyun CARD32 key_1 B32; 137*4882a593Smuzhiyun CARD32 uid B32; 138*4882a593Smuzhiyun CARD32 pad4 B32; 139*4882a593Smuzhiyun CARD32 pad5 B32; 140*4882a593Smuzhiyun CARD32 pad6 B32; 141*4882a593Smuzhiyun } xAppleDRICreateSurfaceReply; 142*4882a593Smuzhiyun #define sz_xAppleDRICreateSurfaceReply 32 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun typedef struct _AppleDRIDestroySurface { 145*4882a593Smuzhiyun CARD8 reqType; /* always DRIReqCode */ 146*4882a593Smuzhiyun CARD8 driReqType; /* always X_DRIDestroySurface */ 147*4882a593Smuzhiyun CARD16 length B16; 148*4882a593Smuzhiyun CARD32 screen B32; 149*4882a593Smuzhiyun CARD32 drawable B32; 150*4882a593Smuzhiyun } xAppleDRIDestroySurfaceReq; 151*4882a593Smuzhiyun #define sz_xAppleDRIDestroySurfaceReq 12 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun typedef struct _AppleDRINotify { 154*4882a593Smuzhiyun BYTE type; /* always eventBase + event type */ 155*4882a593Smuzhiyun BYTE kind; 156*4882a593Smuzhiyun CARD16 sequenceNumber B16; 157*4882a593Smuzhiyun CARD32 time B32; /* time of change */ 158*4882a593Smuzhiyun CARD32 pad1 B32; 159*4882a593Smuzhiyun CARD32 arg B32; 160*4882a593Smuzhiyun CARD32 pad3 B32; 161*4882a593Smuzhiyun CARD32 pad4 B32; 162*4882a593Smuzhiyun CARD32 pad5 B32; 163*4882a593Smuzhiyun CARD32 pad6 B32; 164*4882a593Smuzhiyun } xAppleDRINotifyEvent; 165*4882a593Smuzhiyun #define sz_xAppleDRINotifyEvent 32 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun typedef struct { 168*4882a593Smuzhiyun CARD8 reqType; 169*4882a593Smuzhiyun CARD8 driReqType; 170*4882a593Smuzhiyun CARD16 length B16; 171*4882a593Smuzhiyun CARD32 screen B32; 172*4882a593Smuzhiyun CARD32 drawable B32; 173*4882a593Smuzhiyun BOOL doubleSwap; 174*4882a593Smuzhiyun CARD8 pad1, pad2, pad3; 175*4882a593Smuzhiyun } xAppleDRICreateSharedBufferReq; 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun #define sz_xAppleDRICreateSharedBufferReq 16 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun typedef struct { 180*4882a593Smuzhiyun BYTE type; 181*4882a593Smuzhiyun BYTE data1; 182*4882a593Smuzhiyun CARD16 sequenceNumber B16; 183*4882a593Smuzhiyun CARD32 length B32; 184*4882a593Smuzhiyun CARD32 stringLength B32; /* 0 on error */ 185*4882a593Smuzhiyun CARD32 width B32; 186*4882a593Smuzhiyun CARD32 height B32; 187*4882a593Smuzhiyun CARD32 pad1 B32; 188*4882a593Smuzhiyun CARD32 pad2 B32; 189*4882a593Smuzhiyun CARD32 pad3 B32; 190*4882a593Smuzhiyun } xAppleDRICreateSharedBufferReply; 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun #define sz_xAppleDRICreateSharedBufferReply 32 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun typedef struct { 195*4882a593Smuzhiyun CARD8 reqType; 196*4882a593Smuzhiyun CARD8 driReqType; 197*4882a593Smuzhiyun CARD16 length B16; 198*4882a593Smuzhiyun CARD32 screen B32; 199*4882a593Smuzhiyun CARD32 drawable B32; 200*4882a593Smuzhiyun } xAppleDRISwapBuffersReq; 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun #define sz_xAppleDRISwapBuffersReq 12 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun typedef struct { 205*4882a593Smuzhiyun CARD8 reqType; /*1 */ 206*4882a593Smuzhiyun CARD8 driReqType; /*2 */ 207*4882a593Smuzhiyun CARD16 length B16; /*4 */ 208*4882a593Smuzhiyun CARD32 screen B32; /*8 */ 209*4882a593Smuzhiyun CARD32 drawable B32; /*12 */ 210*4882a593Smuzhiyun } xAppleDRICreatePixmapReq; 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun #define sz_xAppleDRICreatePixmapReq 12 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun typedef struct { 215*4882a593Smuzhiyun BYTE type; /*1 */ 216*4882a593Smuzhiyun BOOL pad1; /*2 */ 217*4882a593Smuzhiyun CARD16 sequenceNumber B16; /*4 */ 218*4882a593Smuzhiyun CARD32 length B32; /*8 */ 219*4882a593Smuzhiyun CARD32 width B32; /*12 */ 220*4882a593Smuzhiyun CARD32 height B32; /*16 */ 221*4882a593Smuzhiyun CARD32 pitch B32; /*20 */ 222*4882a593Smuzhiyun CARD32 bpp B32; /*24 */ 223*4882a593Smuzhiyun CARD32 size B32; /*28 */ 224*4882a593Smuzhiyun CARD32 stringLength B32; /*32 */ 225*4882a593Smuzhiyun } xAppleDRICreatePixmapReply; 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun #define sz_xAppleDRICreatePixmapReply 32 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun typedef struct { 230*4882a593Smuzhiyun CARD8 reqType; /*1 */ 231*4882a593Smuzhiyun CARD8 driReqType; /*2 */ 232*4882a593Smuzhiyun CARD16 length B16; /*4 */ 233*4882a593Smuzhiyun CARD32 drawable B32; /*8 */ 234*4882a593Smuzhiyun } xAppleDRIDestroyPixmapReq; 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun #define sz_xAppleDRIDestroyPixmapReq 8 237*4882a593Smuzhiyun 238*4882a593Smuzhiyun #ifdef _APPLEDRI_SERVER_ 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun void AppleDRISendEvent( 241*4882a593Smuzhiyun #if NeedFunctionPrototypes 242*4882a593Smuzhiyun int /* type */, 243*4882a593Smuzhiyun unsigned int /* mask */, 244*4882a593Smuzhiyun int /* which */, 245*4882a593Smuzhiyun int /* arg */ 246*4882a593Smuzhiyun #endif 247*4882a593Smuzhiyun ); 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun #endif /* _APPLEDRI_SERVER_ */ 250*4882a593Smuzhiyun #endif /* _APPLEDRISTR_H_ */ 251