xref: /OK3568_Linux_fs/external/xserver/hw/xquartz/xpr/appledri.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.7 2000/12/07 20:26:02 dawes Exp $ */
2*4882a593Smuzhiyun /**************************************************************************
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun    Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
5*4882a593Smuzhiyun    Copyright 2000 VA Linux Systems, Inc.
6*4882a593Smuzhiyun    Copyright (c) 2002-2012 Apple Computer, Inc.
7*4882a593Smuzhiyun    All Rights Reserved.
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun    Permission is hereby granted, free of charge, to any person obtaining a
10*4882a593Smuzhiyun    copy of this software and associated documentation files (the
11*4882a593Smuzhiyun    "Software"), to deal in the Software without restriction, including
12*4882a593Smuzhiyun    without limitation the rights to use, copy, modify, merge, publish,
13*4882a593Smuzhiyun    distribute, sub license, and/or sell copies of the Software, and to
14*4882a593Smuzhiyun    permit persons to whom the Software is furnished to do so, subject to
15*4882a593Smuzhiyun    the following conditions:
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun    The above copyright notice and this permission notice (including the
18*4882a593Smuzhiyun    next paragraph) shall be included in all copies or substantial portions
19*4882a593Smuzhiyun    of the Software.
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22*4882a593Smuzhiyun    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23*4882a593Smuzhiyun    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
24*4882a593Smuzhiyun    IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
25*4882a593Smuzhiyun    ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26*4882a593Smuzhiyun    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27*4882a593Smuzhiyun    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun **************************************************************************/
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun /*
32*4882a593Smuzhiyun  * Authors:
33*4882a593Smuzhiyun  *   Kevin E. Martin <martin@valinux.com>
34*4882a593Smuzhiyun  *   Jens Owen <jens@valinux.com>
35*4882a593Smuzhiyun  *   Rickard E. (Rik) Faith <faith@valinux.com>
36*4882a593Smuzhiyun  *   Jeremy Huddleston <jeremyhu@apple.com>
37*4882a593Smuzhiyun  *
38*4882a593Smuzhiyun  */
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #ifndef _APPLEDRI_H_
41*4882a593Smuzhiyun #define _APPLEDRI_H_
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun #include <X11/Xfuncproto.h>
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun #define X_AppleDRIQueryVersion                0
46*4882a593Smuzhiyun #define X_AppleDRIQueryDirectRenderingCapable 1
47*4882a593Smuzhiyun #define X_AppleDRICreateSurface               2
48*4882a593Smuzhiyun #define X_AppleDRIDestroySurface              3
49*4882a593Smuzhiyun #define X_AppleDRIAuthConnection              4
50*4882a593Smuzhiyun #define X_AppleDRICreateSharedBuffer          5
51*4882a593Smuzhiyun #define X_AppleDRISwapBuffers                 6
52*4882a593Smuzhiyun #define X_AppleDRICreatePixmap                7
53*4882a593Smuzhiyun #define X_AppleDRIDestroyPixmap               8
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun /* Requests up to and including 18 were used in a previous version */
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun /* Events */
58*4882a593Smuzhiyun #define AppleDRIObsoleteEvent1 0
59*4882a593Smuzhiyun #define AppleDRIObsoleteEvent2 1
60*4882a593Smuzhiyun #define AppleDRIObsoleteEvent3 2
61*4882a593Smuzhiyun #define AppleDRISurfaceNotify  3
62*4882a593Smuzhiyun #define AppleDRINumberEvents   4
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun /* Errors */
65*4882a593Smuzhiyun #define AppleDRIClientNotLocal        0
66*4882a593Smuzhiyun #define AppleDRIOperationNotSupported 1
67*4882a593Smuzhiyun #define AppleDRINumberErrors          (AppleDRIOperationNotSupported + 1)
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun /* Kinds of SurfaceNotify events: */
70*4882a593Smuzhiyun #define AppleDRISurfaceNotifyChanged   0
71*4882a593Smuzhiyun #define AppleDRISurfaceNotifyDestroyed 1
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun #ifndef _APPLEDRI_SERVER_
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun typedef struct {
76*4882a593Smuzhiyun     int type;               /* of event */
77*4882a593Smuzhiyun     unsigned long serial;   /* # of last request processed by server */
78*4882a593Smuzhiyun     Bool send_event;        /* true if this came frome a SendEvent request */
79*4882a593Smuzhiyun     Display *display;       /* Display the event was read from */
80*4882a593Smuzhiyun     Window window;          /* window of event */
81*4882a593Smuzhiyun     Time time;              /* server timestamp when event happened */
82*4882a593Smuzhiyun     int kind;               /* subtype of event */
83*4882a593Smuzhiyun     int arg;
84*4882a593Smuzhiyun } XAppleDRINotifyEvent;
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun _XFUNCPROTOBEGIN
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun Bool
89*4882a593Smuzhiyun XAppleDRIQueryExtension(Display *dpy, int *event_base, int *error_base);
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun Bool
92*4882a593Smuzhiyun XAppleDRIQueryVersion(Display *dpy, int *majorVersion, int *minorVersion,
93*4882a593Smuzhiyun                       int *patchVersion);
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun Bool
96*4882a593Smuzhiyun XAppleDRIQueryDirectRenderingCapable(Display *dpy, int screen,
97*4882a593Smuzhiyun                                      Bool *isCapable);
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun void *
100*4882a593Smuzhiyun XAppleDRISetSurfaceNotifyHandler(void (*fun)(Display *dpy, unsigned uid,
101*4882a593Smuzhiyun                                              int kind));
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun Bool
104*4882a593Smuzhiyun XAppleDRIAuthConnection(Display *dpy, int screen, unsigned int magic);
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun Bool XAppleDRICreateSurface(Display * dpy, int screen, Drawable drawable,
107*4882a593Smuzhiyun                             unsigned int client_id, unsigned int key[2],
108*4882a593Smuzhiyun                             unsigned int* uid);
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun Bool
111*4882a593Smuzhiyun XAppleDRIDestroySurface(Display *dpy, int screen, Drawable drawable);
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun Bool
114*4882a593Smuzhiyun XAppleDRISynchronizeSurfaces(Display *dpy);
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun Bool
117*4882a593Smuzhiyun XAppleDRICreateSharedBuffer(Display *dpy, int screen, Drawable drawable,
118*4882a593Smuzhiyun                             Bool doubleSwap, char *path, size_t pathlen,
119*4882a593Smuzhiyun                             int *width,
120*4882a593Smuzhiyun                             int *height);
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun Bool
123*4882a593Smuzhiyun XAppleDRISwapBuffers(Display *dpy, int screen, Drawable drawable);
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun Bool
126*4882a593Smuzhiyun XAppleDRICreatePixmap(Display *dpy, int screen, Drawable drawable, int *width,
127*4882a593Smuzhiyun                       int *height, int *pitch, int *bpp, size_t *size,
128*4882a593Smuzhiyun                       char *bufname,
129*4882a593Smuzhiyun                       size_t bufnamesize);
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun Bool
132*4882a593Smuzhiyun XAppleDRIDestroyPixmap(Display *dpy, Pixmap pixmap);
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun _XFUNCPROTOEND
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun #endif /* _APPLEDRI_SERVER_ */
137*4882a593Smuzhiyun #endif /* _APPLEDRI_H_ */
138