a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync/**************************************************************************
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncCopyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncAll Rights Reserved.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncPermission is hereby granted, free of charge, to any person obtaining a
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynccopy of this software and associated documentation files (the
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync"Software"), to deal in the Software without restriction, including
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncwithout limitation the rights to use, copy, modify, merge, publish,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncdistribute, sub license, and/or sell copies of the Software, and to
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncpermit persons to whom the Software is furnished to do so, subject to
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncthe following conditions:
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncThe above copyright notice and this permission notice (including the
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncnext paragraph) shall be included in all copies or substantial portions
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncof the Software.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncIN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync**************************************************************************/
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync/*
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * Authors:
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * Jens Owen <jens@tungstengraphics.com>
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync *
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync/* Prototypes for DRI functions */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#ifndef _DRI_H_
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include <pciaccess.h>
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "scrnintstr.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "xf86dri.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef int DRISyncType;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_NO_SYNC 0
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_2D_SYNC 1
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_3D_SYNC 2
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef int DRIContextType;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef struct _DRIContextPrivRec DRIContextPrivRec, *DRIContextPrivPtr;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef enum _DRIContextFlags {
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRI_CONTEXT_2DONLY = 0x01,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRI_CONTEXT_PRESERVED = 0x02,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRI_CONTEXT_RESERVED = 0x04 /* DRI Only -- no kernel equivalent */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync} DRIContextFlags;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_NO_CONTEXT 0
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_2D_CONTEXT 1
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_3D_CONTEXT 2
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef int DRISwapMethod;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_HIDE_X_CONTEXT 0
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_SERVER_SWAP 1
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_KERNEL_SWAP 2
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef int DRIWindowRequests;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_NO_WINDOWS 0
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_3D_WINDOWS_ONLY 1
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_ALL_WINDOWS 2
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef void (*ClipNotifyPtr) (WindowPtr, int, int);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef void (*AdjustFramePtr) (ScrnInfoPtr pScrn, int x, int y);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync/*
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * These functions can be wrapped by the DRI. Each of these have
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * generic default funcs (initialized in DRICreateInfoRec) and can be
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * overridden by the driver in its [driver]DRIScreenInit function.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef struct {
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ScreenWakeupHandlerProcPtr WakeupHandler;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ScreenBlockHandlerProcPtr BlockHandler;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync WindowExposuresProcPtr WindowExposures;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync CopyWindowProcPtr CopyWindow;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ValidateTreeProcPtr ValidateTree;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync PostValidateTreeProcPtr PostValidateTree;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ClipNotifyProcPtr ClipNotify;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync AdjustFramePtr AdjustFrame;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync} DRIWrappedFuncsRec, *DRIWrappedFuncsPtr;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync/*
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * Prior to Xorg 6.8.99.8, the DRIInfoRec structure was implicitly versioned
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * by the XF86DRI_*_VERSION defines in xf86dristr.h. These numbers were also
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * being used to version the XFree86-DRI protocol. Bugs #3066 and #3163
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * showed that this was inadequate. The DRIInfoRec structure is now versioned
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * by the DRIINFO_*_VERSION defines in this file. - ajax, 2005-05-18.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync *
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * Revision history:
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * 4.1.0 and earlier: DRIQueryVersion returns XF86DRI_*_VERSION.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * 4.2.0: DRIQueryVersion begins returning DRIINFO_*_VERSION.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * 5.0.0: frameBufferPhysicalAddress changed from CARD32 to pointer.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRIINFO_MAJOR_VERSION 5
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRIINFO_MINOR_VERSION 4
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRIINFO_PATCH_VERSION 0
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef unsigned long long (*DRITexOffsetStartProcPtr) (PixmapPtr pPix);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef void (*DRITexOffsetFinishProcPtr) (PixmapPtr pPix);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef struct {
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync /* driver call back functions
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync *
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * New fields should be added at the end for backwards compatibility.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * Bump the DRIINFO patch number to indicate bugfixes.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * Bump the DRIINFO minor number to indicate new fields.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * Bump the DRIINFO major number to indicate binary-incompatible changes.
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool (*CreateContext) (ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync VisualPtr visual,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_context_t hHWContext,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void *pVisualConfigPriv, DRIContextType context);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*DestroyContext) (ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_context_t hHWContext, DRIContextType context);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*SwapContext) (ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRISyncType syncType,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIContextType readContextType,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void *readContextStore,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIContextType writeContextType,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void *writeContextStore);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*InitBuffers) (WindowPtr pWin, RegionPtr prgn, CARD32 indx);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*MoveBuffers) (WindowPtr pWin,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DDXPointRec ptOldOrg, RegionPtr prgnSrc, CARD32 indx);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*TransitionTo3d) (ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*TransitionTo2d) (ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*SetDrawableIndex) (WindowPtr pWin, CARD32 indx);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool (*OpenFullScreen) (ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool (*CloseFullScreen) (ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync /* wrapped functions */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIWrappedFuncsRec wrap;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync /* device info */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync char *drmDriverName;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync char *clientDriverName;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync char *busIdString;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int ddxDriverMajorVersion;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int ddxDriverMinorVersion;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int ddxDriverPatchVersion;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync pointer frameBufferPhysicalAddress;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync long frameBufferSize;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync long frameBufferStride;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync long SAREASize;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int maxDrawableTableEntry;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int ddxDrawableTableEntry;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync long contextSize;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRISwapMethod driverSwapMethod;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIWindowRequests bufferRequests;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int devPrivateSize;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void *devPrivate;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool createDummyCtx;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool createDummyCtxPriv;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync /* New with DRI version 4.1.0 */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*TransitionSingleToMulti3D) (ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*TransitionMultiToSingle3D) (ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync /* New with DRI version 5.1.0 */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*ClipNotify) (ScreenPtr pScreen, WindowPtr *ppWin, int num);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync /* New with DRI version 5.2.0 */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool allocSarea;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool keepFDOpen;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync /* New with DRI version 5.3.0 */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRITexOffsetStartProcPtr texOffsetStart;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRITexOffsetFinishProcPtr texOffsetFinish;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync /* New with DRI version 5.4.0 */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int dontMapFrameBuffer;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_handle_t hFrameBuffer; /* Handle to framebuffer, either
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync * mapped by DDX driver or DRI */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync} DRIInfoRec, *DRIInfoPtr;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIOpenDRMMaster(ScrnInfoPtr pScrn,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync unsigned long sAreaSize,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync const char *busID,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync const char *drmDriverName);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIScreenInit(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIInfoPtr pDRIInfo, int *pDRMFD);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRICloseScreen(ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern Bool DRIExtensionInit(void);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIReset(void);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIQueryDirectRenderingCapable(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool *isCapable);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIOpenConnection(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_handle_t * hSAREA,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync char **busIdString);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIAuthConnection(ScreenPtr pScreen, drm_magic_t magic);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRICloseConnection(ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIGetClientDriverName(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *ddxDriverMajorVersion,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *ddxDriverMinorVersion,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *ddxDriverPatchVersion,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync char **clientDriverName);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRICreateContext(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync VisualPtr visual,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync XID context, drm_context_t * pHWContext);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIDestroyContext(ScreenPtr pScreen, XID context);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIContextPrivDelete(pointer pResource, XID id);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRICreateDrawable(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ClientPtr client,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DrawablePtr pDrawable,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_drawable_t * hHWDrawable);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIDestroyDrawable(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ClientPtr client,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DrawablePtr pDrawable);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIDrawablePrivDelete(pointer pResource, XID id);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIGetDrawableInfo(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DrawablePtr pDrawable,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync unsigned int *indx,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync unsigned int *stamp,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *X,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *Y,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *W,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *H,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *numClipRects,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_clip_rect_t ** pClipRects,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *backX,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *backY,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *numBackClipRects,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_clip_rect_t ** pBackClipRects);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIGetDeviceInfo(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_handle_t * hFrameBuffer,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *fbOrigin,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *fbSize,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *fbStride,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *devPrivateSize, void **pDevPrivate);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT DRIInfoPtr DRICreateInfoRec(void);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIDestroyInfoRec(DRIInfoPtr DRIInfo);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIFinishScreenInit(ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIWakeupHandler(pointer wakeupData,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int result, pointer pReadmask);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIBlockHandler(pointer blockData,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync OSTimePtr pTimeout, pointer pReadmask);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIDoWakeupHandler(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync unsigned long result,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync pointer pReadmask);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIDoBlockHandler(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync pointer pTimeout, pointer pReadmask);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRISwapContext(int drmFD, void *oldctx, void *newctx);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void *DRIGetContextStore(DRIContextPrivPtr context);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIWindowExposures(WindowPtr pWin,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync RegionPtr prgn, RegionPtr bsreg);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIDestroyWindow(WindowPtr pWin);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRICopyWindow(WindowPtr pWin,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DDXPointRec ptOldOrg, RegionPtr prgnSrc);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT int DRIValidateTree(WindowPtr pParent,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync WindowPtr pChild, VTKind kind);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIPostValidateTree(WindowPtr pParent,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync WindowPtr pChild, VTKind kind);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIClipNotify(WindowPtr pWin, int dx, int dy);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT CARD32 DRIGetDrawableIndex(WindowPtr pWin);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIPrintDrawableLock(ScreenPtr pScreen, char *msg);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRILock(ScreenPtr pScreen, int flags);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIUnlock(ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT DRIWrappedFuncsRec *DRIGetWrappedFuncs(ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void *DRIGetSAREAPrivate(ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT unsigned int DRIGetDrawableStamp(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync CARD32 drawable_index);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT DRIContextPrivPtr DRICreateContextPriv(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_context_t *
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync pHWContext,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIContextFlags flags);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT DRIContextPrivPtr DRICreateContextPrivFromHandle(ScreenPtr
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_context_t
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync hHWContext,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIContextFlags
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync flags);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT Bool DRIDestroyContextPriv(DRIContextPrivPtr pDRIContextPriv);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT drm_context_t DRIGetContext(ScreenPtr pScreen);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIQueryVersion(int *majorVersion,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *minorVersion, int *patchVersion);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIAdjustFrame(ScrnInfoPtr pScrn, int x, int y);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIMoveBuffersHelper(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int dx,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int dy,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *xdir, int *ydir, RegionPtr reg);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT char *DRICreatePCIBusID(const struct pci_device *PciInfo);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT int drmInstallSIGIOHandler(int fd,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void (*f) (int, void *, void *));
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT int drmRemoveSIGIOHandler(int fd);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT int DRIMasterFD(ScrnInfoPtr pScrn);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void *DRIMasterSareaPointer(ScrnInfoPtr pScrn);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT drm_handle_t DRIMasterSareaHandle(ScrnInfoPtr pScrn);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncextern _X_EXPORT void DRIGetTexOffsetFuncs(ScreenPtr pScreen,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRITexOffsetStartProcPtr *
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync texOffsetStartFunc,
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRITexOffsetFinishProcPtr *
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync texOffsetFinishFunc);
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define _DRI_H_
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#endif