xref: /OK3568_Linux_fs/external/xserver/hw/xfree86/dri/dri.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /**************************************************************************
2*4882a593Smuzhiyun 
3*4882a593Smuzhiyun Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
4*4882a593Smuzhiyun All Rights Reserved.
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun Permission is hereby granted, free of charge, to any person obtaining a
7*4882a593Smuzhiyun copy of this software and associated documentation files (the
8*4882a593Smuzhiyun "Software"), to deal in the Software without restriction, including
9*4882a593Smuzhiyun without limitation the rights to use, copy, modify, merge, publish,
10*4882a593Smuzhiyun distribute, sub license, and/or sell copies of the Software, and to
11*4882a593Smuzhiyun permit persons to whom the Software is furnished to do so, subject to
12*4882a593Smuzhiyun the following conditions:
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun The above copyright notice and this permission notice (including the
15*4882a593Smuzhiyun next paragraph) shall be included in all copies or substantial portions
16*4882a593Smuzhiyun of the Software.
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19*4882a593Smuzhiyun OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20*4882a593Smuzhiyun MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21*4882a593Smuzhiyun IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
22*4882a593Smuzhiyun ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23*4882a593Smuzhiyun TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24*4882a593Smuzhiyun SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun **************************************************************************/
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun /*
29*4882a593Smuzhiyun  * Authors:
30*4882a593Smuzhiyun  *   Jens Owen <jens@tungstengraphics.com>
31*4882a593Smuzhiyun  *
32*4882a593Smuzhiyun  */
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun /* Prototypes for DRI functions */
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun #ifndef _DRI_H_
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun #include <pciaccess.h>
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #include "scrnintstr.h"
41*4882a593Smuzhiyun #include "xf86dri.h"
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun typedef int DRISyncType;
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun #define DRI_NO_SYNC 0
46*4882a593Smuzhiyun #define DRI_2D_SYNC 1
47*4882a593Smuzhiyun #define DRI_3D_SYNC 2
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun typedef int DRIContextType;
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun typedef struct _DRIContextPrivRec DRIContextPrivRec, *DRIContextPrivPtr;
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun typedef enum _DRIContextFlags {
54*4882a593Smuzhiyun     DRI_CONTEXT_2DONLY = 0x01,
55*4882a593Smuzhiyun     DRI_CONTEXT_PRESERVED = 0x02,
56*4882a593Smuzhiyun     DRI_CONTEXT_RESERVED = 0x04 /* DRI Only -- no kernel equivalent */
57*4882a593Smuzhiyun } DRIContextFlags;
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun #define DRI_NO_CONTEXT 0
60*4882a593Smuzhiyun #define DRI_2D_CONTEXT 1
61*4882a593Smuzhiyun #define DRI_3D_CONTEXT 2
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun typedef int DRISwapMethod;
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun #define DRI_HIDE_X_CONTEXT 0
66*4882a593Smuzhiyun #define DRI_SERVER_SWAP    1
67*4882a593Smuzhiyun #define DRI_KERNEL_SWAP    2
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun typedef int DRIWindowRequests;
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun #define DRI_NO_WINDOWS       0
72*4882a593Smuzhiyun #define DRI_3D_WINDOWS_ONLY  1
73*4882a593Smuzhiyun #define DRI_ALL_WINDOWS      2
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun typedef void (*ClipNotifyPtr) (WindowPtr, int, int);
76*4882a593Smuzhiyun typedef void (*AdjustFramePtr) (ScrnInfoPtr pScrn, int x, int y);
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun /*
79*4882a593Smuzhiyun  * These functions can be wrapped by the DRI.  Each of these have
80*4882a593Smuzhiyun  * generic default funcs (initialized in DRICreateInfoRec) and can be
81*4882a593Smuzhiyun  * overridden by the driver in its [driver]DRIScreenInit function.
82*4882a593Smuzhiyun  */
83*4882a593Smuzhiyun typedef struct {
84*4882a593Smuzhiyun     ScreenWakeupHandlerProcPtr WakeupHandler;
85*4882a593Smuzhiyun     ScreenBlockHandlerProcPtr BlockHandler;
86*4882a593Smuzhiyun     WindowExposuresProcPtr WindowExposures;
87*4882a593Smuzhiyun     CopyWindowProcPtr CopyWindow;
88*4882a593Smuzhiyun     ClipNotifyProcPtr ClipNotify;
89*4882a593Smuzhiyun     AdjustFramePtr AdjustFrame;
90*4882a593Smuzhiyun } DRIWrappedFuncsRec, *DRIWrappedFuncsPtr;
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun /*
93*4882a593Smuzhiyun  * Prior to Xorg 6.8.99.8, the DRIInfoRec structure was implicitly versioned
94*4882a593Smuzhiyun  * by the XF86DRI_*_VERSION defines in xf86dristr.h.  These numbers were also
95*4882a593Smuzhiyun  * being used to version the XFree86-DRI protocol.  Bugs #3066 and #3163
96*4882a593Smuzhiyun  * showed that this was inadequate.  The DRIInfoRec structure is now versioned
97*4882a593Smuzhiyun  * by the DRIINFO_*_VERSION defines in this file. - ajax, 2005-05-18.
98*4882a593Smuzhiyun  *
99*4882a593Smuzhiyun  * Revision history:
100*4882a593Smuzhiyun  * 4.1.0 and earlier: DRIQueryVersion returns XF86DRI_*_VERSION.
101*4882a593Smuzhiyun  * 4.2.0: DRIQueryVersion begins returning DRIINFO_*_VERSION.
102*4882a593Smuzhiyun  * 5.0.0: frameBufferPhysicalAddress changed from CARD32 to pointer.
103*4882a593Smuzhiyun  */
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun #define DRIINFO_MAJOR_VERSION   5
106*4882a593Smuzhiyun #define DRIINFO_MINOR_VERSION   4
107*4882a593Smuzhiyun #define DRIINFO_PATCH_VERSION   0
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun typedef unsigned long long (*DRITexOffsetStartProcPtr) (PixmapPtr pPix);
110*4882a593Smuzhiyun typedef void (*DRITexOffsetFinishProcPtr) (PixmapPtr pPix);
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun typedef struct {
113*4882a593Smuzhiyun     /* driver call back functions
114*4882a593Smuzhiyun      *
115*4882a593Smuzhiyun      * New fields should be added at the end for backwards compatibility.
116*4882a593Smuzhiyun      * Bump the DRIINFO patch number to indicate bugfixes.
117*4882a593Smuzhiyun      * Bump the DRIINFO minor number to indicate new fields.
118*4882a593Smuzhiyun      * Bump the DRIINFO major number to indicate binary-incompatible changes.
119*4882a593Smuzhiyun      */
120*4882a593Smuzhiyun     Bool (*CreateContext) (ScreenPtr pScreen,
121*4882a593Smuzhiyun                            VisualPtr visual,
122*4882a593Smuzhiyun                            drm_context_t hHWContext,
123*4882a593Smuzhiyun                            void *pVisualConfigPriv, DRIContextType context);
124*4882a593Smuzhiyun     void (*DestroyContext) (ScreenPtr pScreen,
125*4882a593Smuzhiyun                             drm_context_t hHWContext, DRIContextType context);
126*4882a593Smuzhiyun     void (*SwapContext) (ScreenPtr pScreen,
127*4882a593Smuzhiyun                          DRISyncType syncType,
128*4882a593Smuzhiyun                          DRIContextType readContextType,
129*4882a593Smuzhiyun                          void *readContextStore,
130*4882a593Smuzhiyun                          DRIContextType writeContextType,
131*4882a593Smuzhiyun                          void *writeContextStore);
132*4882a593Smuzhiyun     void (*InitBuffers) (WindowPtr pWin, RegionPtr prgn, CARD32 indx);
133*4882a593Smuzhiyun     void (*MoveBuffers) (WindowPtr pWin,
134*4882a593Smuzhiyun                          DDXPointRec ptOldOrg, RegionPtr prgnSrc, CARD32 indx);
135*4882a593Smuzhiyun     void (*TransitionTo3d) (ScreenPtr pScreen);
136*4882a593Smuzhiyun     void (*TransitionTo2d) (ScreenPtr pScreen);
137*4882a593Smuzhiyun 
138*4882a593Smuzhiyun     void (*SetDrawableIndex) (WindowPtr pWin, CARD32 indx);
139*4882a593Smuzhiyun     Bool (*OpenFullScreen) (ScreenPtr pScreen);
140*4882a593Smuzhiyun     Bool (*CloseFullScreen) (ScreenPtr pScreen);
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun     /* wrapped functions */
143*4882a593Smuzhiyun     DRIWrappedFuncsRec wrap;
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun     /* device info */
146*4882a593Smuzhiyun     char *drmDriverName;
147*4882a593Smuzhiyun     char *clientDriverName;
148*4882a593Smuzhiyun     char *busIdString;
149*4882a593Smuzhiyun     int ddxDriverMajorVersion;
150*4882a593Smuzhiyun     int ddxDriverMinorVersion;
151*4882a593Smuzhiyun     int ddxDriverPatchVersion;
152*4882a593Smuzhiyun     void *frameBufferPhysicalAddress;
153*4882a593Smuzhiyun     long frameBufferSize;
154*4882a593Smuzhiyun     long frameBufferStride;
155*4882a593Smuzhiyun     long SAREASize;
156*4882a593Smuzhiyun     int maxDrawableTableEntry;
157*4882a593Smuzhiyun     int ddxDrawableTableEntry;
158*4882a593Smuzhiyun     long contextSize;
159*4882a593Smuzhiyun     DRISwapMethod driverSwapMethod;
160*4882a593Smuzhiyun     DRIWindowRequests bufferRequests;
161*4882a593Smuzhiyun     int devPrivateSize;
162*4882a593Smuzhiyun     void *devPrivate;
163*4882a593Smuzhiyun     Bool createDummyCtx;
164*4882a593Smuzhiyun     Bool createDummyCtxPriv;
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun     /* New with DRI version 4.1.0 */
167*4882a593Smuzhiyun     void (*TransitionSingleToMulti3D) (ScreenPtr pScreen);
168*4882a593Smuzhiyun     void (*TransitionMultiToSingle3D) (ScreenPtr pScreen);
169*4882a593Smuzhiyun 
170*4882a593Smuzhiyun     /* New with DRI version 5.1.0 */
171*4882a593Smuzhiyun     void (*ClipNotify) (ScreenPtr pScreen, WindowPtr *ppWin, int num);
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun     /* New with DRI version 5.2.0 */
174*4882a593Smuzhiyun     Bool allocSarea;
175*4882a593Smuzhiyun     Bool keepFDOpen;
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun     /* New with DRI version 5.3.0 */
178*4882a593Smuzhiyun     DRITexOffsetStartProcPtr texOffsetStart;
179*4882a593Smuzhiyun     DRITexOffsetFinishProcPtr texOffsetFinish;
180*4882a593Smuzhiyun 
181*4882a593Smuzhiyun     /* New with DRI version 5.4.0 */
182*4882a593Smuzhiyun     int dontMapFrameBuffer;
183*4882a593Smuzhiyun     drm_handle_t hFrameBuffer;  /* Handle to framebuffer, either
184*4882a593Smuzhiyun                                  * mapped by DDX driver or DRI */
185*4882a593Smuzhiyun 
186*4882a593Smuzhiyun } DRIInfoRec, *DRIInfoPtr;
187*4882a593Smuzhiyun 
188*4882a593Smuzhiyun extern _X_EXPORT Bool DRIOpenDRMMaster(ScrnInfoPtr pScrn,
189*4882a593Smuzhiyun                                        unsigned long sAreaSize,
190*4882a593Smuzhiyun                                        const char *busID,
191*4882a593Smuzhiyun                                        const char *drmDriverName);
192*4882a593Smuzhiyun 
193*4882a593Smuzhiyun extern _X_EXPORT Bool DRIScreenInit(ScreenPtr pScreen,
194*4882a593Smuzhiyun                                     DRIInfoPtr pDRIInfo, int *pDRMFD);
195*4882a593Smuzhiyun 
196*4882a593Smuzhiyun extern _X_EXPORT void DRICloseScreen(ScreenPtr pScreen);
197*4882a593Smuzhiyun 
198*4882a593Smuzhiyun extern Bool DRIExtensionInit(void);
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun extern _X_EXPORT void DRIReset(void);
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun extern _X_EXPORT Bool DRIQueryDirectRenderingCapable(ScreenPtr pScreen,
203*4882a593Smuzhiyun                                                      Bool *isCapable);
204*4882a593Smuzhiyun 
205*4882a593Smuzhiyun extern _X_EXPORT Bool DRIOpenConnection(ScreenPtr pScreen,
206*4882a593Smuzhiyun                                         drm_handle_t * hSAREA,
207*4882a593Smuzhiyun                                         char **busIdString);
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun extern _X_EXPORT Bool DRIAuthConnection(ScreenPtr pScreen, drm_magic_t magic);
210*4882a593Smuzhiyun 
211*4882a593Smuzhiyun extern _X_EXPORT Bool DRICloseConnection(ScreenPtr pScreen);
212*4882a593Smuzhiyun 
213*4882a593Smuzhiyun extern _X_EXPORT Bool DRIGetClientDriverName(ScreenPtr pScreen,
214*4882a593Smuzhiyun                                              int *ddxDriverMajorVersion,
215*4882a593Smuzhiyun                                              int *ddxDriverMinorVersion,
216*4882a593Smuzhiyun                                              int *ddxDriverPatchVersion,
217*4882a593Smuzhiyun                                              char **clientDriverName);
218*4882a593Smuzhiyun 
219*4882a593Smuzhiyun extern _X_EXPORT Bool DRICreateContext(ScreenPtr pScreen,
220*4882a593Smuzhiyun                                        VisualPtr visual,
221*4882a593Smuzhiyun                                        XID context, drm_context_t * pHWContext);
222*4882a593Smuzhiyun 
223*4882a593Smuzhiyun extern _X_EXPORT Bool DRIDestroyContext(ScreenPtr pScreen, XID context);
224*4882a593Smuzhiyun 
225*4882a593Smuzhiyun extern _X_EXPORT Bool DRIContextPrivDelete(void *pResource, XID id);
226*4882a593Smuzhiyun 
227*4882a593Smuzhiyun extern _X_EXPORT Bool DRICreateDrawable(ScreenPtr pScreen,
228*4882a593Smuzhiyun                                         ClientPtr client,
229*4882a593Smuzhiyun                                         DrawablePtr pDrawable,
230*4882a593Smuzhiyun                                         drm_drawable_t * hHWDrawable);
231*4882a593Smuzhiyun 
232*4882a593Smuzhiyun extern _X_EXPORT Bool DRIDestroyDrawable(ScreenPtr pScreen,
233*4882a593Smuzhiyun                                          ClientPtr client,
234*4882a593Smuzhiyun                                          DrawablePtr pDrawable);
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun extern _X_EXPORT Bool DRIDrawablePrivDelete(void *pResource, XID id);
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun extern _X_EXPORT Bool DRIGetDrawableInfo(ScreenPtr pScreen,
239*4882a593Smuzhiyun                                          DrawablePtr pDrawable,
240*4882a593Smuzhiyun                                          unsigned int *indx,
241*4882a593Smuzhiyun                                          unsigned int *stamp,
242*4882a593Smuzhiyun                                          int *X,
243*4882a593Smuzhiyun                                          int *Y,
244*4882a593Smuzhiyun                                          int *W,
245*4882a593Smuzhiyun                                          int *H,
246*4882a593Smuzhiyun                                          int *numClipRects,
247*4882a593Smuzhiyun                                          drm_clip_rect_t ** pClipRects,
248*4882a593Smuzhiyun                                          int *backX,
249*4882a593Smuzhiyun                                          int *backY,
250*4882a593Smuzhiyun                                          int *numBackClipRects,
251*4882a593Smuzhiyun                                          drm_clip_rect_t ** pBackClipRects);
252*4882a593Smuzhiyun 
253*4882a593Smuzhiyun extern _X_EXPORT Bool DRIGetDeviceInfo(ScreenPtr pScreen,
254*4882a593Smuzhiyun                                        drm_handle_t * hFrameBuffer,
255*4882a593Smuzhiyun                                        int *fbOrigin,
256*4882a593Smuzhiyun                                        int *fbSize,
257*4882a593Smuzhiyun                                        int *fbStride,
258*4882a593Smuzhiyun                                        int *devPrivateSize, void **pDevPrivate);
259*4882a593Smuzhiyun 
260*4882a593Smuzhiyun extern _X_EXPORT DRIInfoPtr DRICreateInfoRec(void);
261*4882a593Smuzhiyun 
262*4882a593Smuzhiyun extern _X_EXPORT void DRIDestroyInfoRec(DRIInfoPtr DRIInfo);
263*4882a593Smuzhiyun 
264*4882a593Smuzhiyun extern _X_EXPORT Bool DRIFinishScreenInit(ScreenPtr pScreen);
265*4882a593Smuzhiyun 
266*4882a593Smuzhiyun extern _X_EXPORT void DRIWakeupHandler(void *wakeupData, int result);
267*4882a593Smuzhiyun 
268*4882a593Smuzhiyun extern _X_EXPORT void DRIBlockHandler(void *blockData, void *timeout);
269*4882a593Smuzhiyun 
270*4882a593Smuzhiyun extern _X_EXPORT void DRIDoWakeupHandler(ScreenPtr pScreen, int result);
271*4882a593Smuzhiyun 
272*4882a593Smuzhiyun extern _X_EXPORT void DRIDoBlockHandler(ScreenPtr pScreen, void *timeout);
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun extern _X_EXPORT void DRISwapContext(int drmFD, void *oldctx, void *newctx);
275*4882a593Smuzhiyun 
276*4882a593Smuzhiyun extern _X_EXPORT void *DRIGetContextStore(DRIContextPrivPtr context);
277*4882a593Smuzhiyun 
278*4882a593Smuzhiyun extern _X_EXPORT void DRIWindowExposures(WindowPtr pWin, RegionPtr prgn);
279*4882a593Smuzhiyun 
280*4882a593Smuzhiyun extern _X_EXPORT Bool DRIDestroyWindow(WindowPtr pWin);
281*4882a593Smuzhiyun 
282*4882a593Smuzhiyun extern _X_EXPORT void DRICopyWindow(WindowPtr pWin,
283*4882a593Smuzhiyun                                     DDXPointRec ptOldOrg, RegionPtr prgnSrc);
284*4882a593Smuzhiyun 
285*4882a593Smuzhiyun extern _X_EXPORT void DRIClipNotify(WindowPtr pWin, int dx, int dy);
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun extern _X_EXPORT CARD32 DRIGetDrawableIndex(WindowPtr pWin);
288*4882a593Smuzhiyun 
289*4882a593Smuzhiyun extern _X_EXPORT void DRIPrintDrawableLock(ScreenPtr pScreen, char *msg);
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun extern _X_EXPORT void DRILock(ScreenPtr pScreen, int flags);
292*4882a593Smuzhiyun 
293*4882a593Smuzhiyun extern _X_EXPORT void DRIUnlock(ScreenPtr pScreen);
294*4882a593Smuzhiyun 
295*4882a593Smuzhiyun extern _X_EXPORT DRIWrappedFuncsRec *DRIGetWrappedFuncs(ScreenPtr pScreen);
296*4882a593Smuzhiyun 
297*4882a593Smuzhiyun extern _X_EXPORT void *DRIGetSAREAPrivate(ScreenPtr pScreen);
298*4882a593Smuzhiyun 
299*4882a593Smuzhiyun extern _X_EXPORT unsigned int DRIGetDrawableStamp(ScreenPtr pScreen,
300*4882a593Smuzhiyun                                                   CARD32 drawable_index);
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun extern _X_EXPORT DRIContextPrivPtr DRICreateContextPriv(ScreenPtr pScreen,
303*4882a593Smuzhiyun                                                         drm_context_t *
304*4882a593Smuzhiyun                                                         pHWContext,
305*4882a593Smuzhiyun                                                         DRIContextFlags flags);
306*4882a593Smuzhiyun 
307*4882a593Smuzhiyun extern _X_EXPORT DRIContextPrivPtr DRICreateContextPrivFromHandle(ScreenPtr
308*4882a593Smuzhiyun                                                                   pScreen,
309*4882a593Smuzhiyun                                                                   drm_context_t
310*4882a593Smuzhiyun                                                                   hHWContext,
311*4882a593Smuzhiyun                                                                   DRIContextFlags
312*4882a593Smuzhiyun                                                                   flags);
313*4882a593Smuzhiyun 
314*4882a593Smuzhiyun extern _X_EXPORT Bool DRIDestroyContextPriv(DRIContextPrivPtr pDRIContextPriv);
315*4882a593Smuzhiyun 
316*4882a593Smuzhiyun extern _X_EXPORT drm_context_t DRIGetContext(ScreenPtr pScreen);
317*4882a593Smuzhiyun 
318*4882a593Smuzhiyun extern _X_EXPORT void DRIQueryVersion(int *majorVersion,
319*4882a593Smuzhiyun                                       int *minorVersion, int *patchVersion);
320*4882a593Smuzhiyun 
321*4882a593Smuzhiyun extern _X_EXPORT void DRIAdjustFrame(ScrnInfoPtr pScrn, int x, int y);
322*4882a593Smuzhiyun 
323*4882a593Smuzhiyun extern _X_EXPORT void DRIMoveBuffersHelper(ScreenPtr pScreen,
324*4882a593Smuzhiyun                                            int dx,
325*4882a593Smuzhiyun                                            int dy,
326*4882a593Smuzhiyun                                            int *xdir, int *ydir, RegionPtr reg);
327*4882a593Smuzhiyun 
328*4882a593Smuzhiyun extern _X_EXPORT int DRIMasterFD(ScrnInfoPtr pScrn);
329*4882a593Smuzhiyun 
330*4882a593Smuzhiyun extern _X_EXPORT void *DRIMasterSareaPointer(ScrnInfoPtr pScrn);
331*4882a593Smuzhiyun 
332*4882a593Smuzhiyun extern _X_EXPORT drm_handle_t DRIMasterSareaHandle(ScrnInfoPtr pScrn);
333*4882a593Smuzhiyun 
334*4882a593Smuzhiyun extern _X_EXPORT void DRIGetTexOffsetFuncs(ScreenPtr pScreen,
335*4882a593Smuzhiyun                                            DRITexOffsetStartProcPtr *
336*4882a593Smuzhiyun                                            texOffsetStartFunc,
337*4882a593Smuzhiyun                                            DRITexOffsetFinishProcPtr *
338*4882a593Smuzhiyun                                            texOffsetFinishFunc);
339*4882a593Smuzhiyun 
340*4882a593Smuzhiyun #define _DRI_H_
341*4882a593Smuzhiyun 
342*4882a593Smuzhiyun #endif
343