#ifndef _DRI_H_
#include "scrnintstr.h"
#include "xf86dri.h"
typedef int DRISyncType;
#define DRI_NO_SYNC 0
#define DRI_2D_SYNC 1
#define DRI_3D_SYNC 2
typedef int DRIContextType;
typedef struct _DRIContextPrivRec DRIContextPrivRec, *DRIContextPrivPtr;
typedef enum _DRIContextFlags
{
DRI_CONTEXT_2DONLY = 0x01,
DRI_CONTEXT_PRESERVED = 0x02,
DRI_CONTEXT_RESERVED = 0x04
} DRIContextFlags;
#define DRI_NO_CONTEXT 0
#define DRI_2D_CONTEXT 1
#define DRI_3D_CONTEXT 2
typedef int DRISwapMethod;
#define DRI_HIDE_X_CONTEXT 0
#define DRI_SERVER_SWAP 1
#define DRI_KERNEL_SWAP 2
typedef int DRIWindowRequests;
#define DRI_NO_WINDOWS 0
#define DRI_3D_WINDOWS_ONLY 1
#define DRI_ALL_WINDOWS 2
typedef void (*ClipNotifyPtr)( WindowPtr, int, int );
typedef void (*AdjustFramePtr)(int scrnIndex, int x, int y, int flags);
typedef struct {
ScreenWakeupHandlerProcPtr WakeupHandler;
ScreenBlockHandlerProcPtr BlockHandler;
WindowExposuresProcPtr WindowExposures;
CopyWindowProcPtr CopyWindow;
ValidateTreeProcPtr ValidateTree;
PostValidateTreeProcPtr PostValidateTree;
ClipNotifyProcPtr ClipNotify;
AdjustFramePtr AdjustFrame;
} DRIWrappedFuncsRec, *DRIWrappedFuncsPtr;
#define DRIINFO_MAJOR_VERSION 5
#define DRIINFO_MINOR_VERSION 0
#define DRIINFO_PATCH_VERSION 0
typedef struct {
Bool (*CreateContext)(ScreenPtr pScreen,
VisualPtr visual,
drm_context_t hHWContext,
void* pVisualConfigPriv,
DRIContextType context);
void (*DestroyContext)(ScreenPtr pScreen,
drm_context_t hHWContext,
DRIContextType context);
void (*SwapContext)(ScreenPtr pScreen,
DRISyncType syncType,
DRIContextType readContextType,
void* readContextStore,
DRIContextType writeContextType,
void* writeContextStore);
void (*InitBuffers)(WindowPtr pWin,
RegionPtr prgn,
CARD32 indx);
void (*MoveBuffers)(WindowPtr pWin,
DDXPointRec ptOldOrg,
RegionPtr prgnSrc,
CARD32 indx);
void (*TransitionTo3d)(ScreenPtr pScreen);
void (*TransitionTo2d)(ScreenPtr pScreen);
void (*SetDrawableIndex)(WindowPtr pWin, CARD32 indx);
Bool (*OpenFullScreen)(ScreenPtr pScreen);
Bool (*CloseFullScreen)(ScreenPtr pScreen);
DRIWrappedFuncsRec wrap;
char* drmDriverName;
char* clientDriverName;
char* busIdString;
int ddxDriverMajorVersion;
int ddxDriverMinorVersion;
int ddxDriverPatchVersion;
pointer frameBufferPhysicalAddress;
long frameBufferSize;
long frameBufferStride;
long SAREASize;
int maxDrawableTableEntry;
int ddxDrawableTableEntry;
long contextSize;
DRISwapMethod driverSwapMethod;
DRIWindowRequests bufferRequests;
int devPrivateSize;
void* devPrivate;
Bool createDummyCtx;
Bool createDummyCtxPriv;
void (*TransitionSingleToMulti3D)(ScreenPtr pScreen);
void (*TransitionMultiToSingle3D)(ScreenPtr pScreen);
} DRIInfoRec, *DRIInfoPtr;
extern Bool DRIScreenInit(ScreenPtr pScreen,
DRIInfoPtr pDRIInfo,
int *pDRMFD);
extern void DRICloseScreen(ScreenPtr pScreen);
extern Bool DRIExtensionInit(void);
extern void DRIReset(void);
extern Bool DRIQueryDirectRenderingCapable(ScreenPtr pScreen,
Bool *isCapable);
extern Bool DRIOpenConnection(ScreenPtr pScreen,
drm_handle_t * hSAREA,
char **busIdString);
extern Bool DRIAuthConnection(ScreenPtr pScreen, drm_magic_t magic);
extern Bool DRICloseConnection(ScreenPtr pScreen);
extern Bool DRIGetClientDriverName(ScreenPtr pScreen,
int* ddxDriverMajorVersion,
int* ddxDriverMinorVersion,
int* ddxDriverPatchVersion,
char** clientDriverName);
extern Bool DRICreateContext(ScreenPtr pScreen,
VisualPtr visual,
XID context,
drm_context_t * pHWContext);
extern Bool DRIDestroyContext(ScreenPtr pScreen, XID context);
extern Bool DRIContextPrivDelete(pointer pResource, XID id);
extern Bool DRICreateDrawable(ScreenPtr pScreen,
Drawable id,
DrawablePtr pDrawable,
drm_drawable_t * hHWDrawable);
extern Bool DRIDestroyDrawable(ScreenPtr pScreen,
Drawable id,
DrawablePtr pDrawable);
extern Bool DRIDrawablePrivDelete(pointer pResource,
XID id);
extern Bool DRIGetDrawableInfo(ScreenPtr pScreen,
DrawablePtr pDrawable,
unsigned int* indx,
unsigned int* stamp,
int* X,
int* Y,
int* W,
int* H,
int* numClipRects,
drm_clip_rect_t ** pClipRects,
int* backX,
int* backY,
int* numBackClipRects,
drm_clip_rect_t ** pBackClipRects);
extern Bool DRIGetDeviceInfo(ScreenPtr pScreen,
drm_handle_t * hFrameBuffer,
int* fbOrigin,
int* fbSize,
int* fbStride,
int* devPrivateSize,
void** pDevPrivate);
extern DRIInfoPtr DRICreateInfoRec(void);
extern void DRIDestroyInfoRec(DRIInfoPtr DRIInfo);
extern Bool DRIFinishScreenInit(ScreenPtr pScreen);
extern void DRIWakeupHandler(pointer wakeupData,
int result,
pointer pReadmask);
extern void DRIBlockHandler(pointer blockData,
OSTimePtr pTimeout,
pointer pReadmask);
extern void DRIDoWakeupHandler(int screenNum,
pointer wakeupData,
unsigned long result,
pointer pReadmask);
extern void DRIDoBlockHandler(int screenNum,
pointer blockData,
pointer pTimeout,
pointer pReadmask);
extern void DRISwapContext(int drmFD,
void *oldctx,
void *newctx);
extern void *DRIGetContextStore(DRIContextPrivPtr context);
extern void DRIWindowExposures(WindowPtr pWin,
RegionPtr prgn,
RegionPtr bsreg);
extern void DRICopyWindow(WindowPtr pWin,
DDXPointRec ptOldOrg,
RegionPtr prgnSrc);
extern int DRIValidateTree(WindowPtr pParent,
WindowPtr pChild,
VTKind kind);
extern void DRIPostValidateTree(WindowPtr pParent,
WindowPtr pChild,
VTKind kind);
extern void DRIClipNotify(WindowPtr pWin,
int dx,
int dy);
extern CARD32 DRIGetDrawableIndex(WindowPtr pWin);
extern void DRIPrintDrawableLock(ScreenPtr pScreen, char *msg);
extern void DRILock(ScreenPtr pScreen, int flags);
extern void DRIUnlock(ScreenPtr pScreen);
extern DRIWrappedFuncsRec *DRIGetWrappedFuncs(ScreenPtr pScreen);
extern void *DRIGetSAREAPrivate(ScreenPtr pScreen);
extern unsigned int DRIGetDrawableStamp(ScreenPtr pScreen,
CARD32 drawable_index);
extern DRIContextPrivPtr DRICreateContextPriv(ScreenPtr pScreen,
drm_context_t * pHWContext,
DRIContextFlags flags);
extern DRIContextPrivPtr DRICreateContextPrivFromHandle(ScreenPtr pScreen,
drm_context_t hHWContext,
DRIContextFlags flags);
extern Bool DRIDestroyContextPriv(DRIContextPrivPtr pDRIContextPriv);
extern drm_context_t DRIGetContext(ScreenPtr pScreen);
extern void DRIQueryVersion(int *majorVersion,
int *minorVersion,
int *patchVersion);
extern void DRIAdjustFrame(int scrnIndex, int x, int y, int flags);
extern void DRIMoveBuffersHelper(ScreenPtr pScreen,
int dx,
int dy,
int *xdir,
int *ydir,
RegionPtr reg);
extern char *DRICreatePCIBusID(pciVideoPtr PciInfo);
extern int drmInstallSIGIOHandler(int fd, void (*f)(int, void *, void *));
extern int drmRemoveSIGIOHandler(int fd);
#define _DRI_H_
#endif