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#ifndef DRI_STRUCT_H
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_STRUCT_H
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "xf86drm.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#include "xf86Crtc.h"
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin) ((DRIDrawablePrivPtr) \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync dixLookupPrivate(&(pWin)->devPrivates, DRIWindowPrivKey))
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_DRAWABLE_PRIV_FROM_PIXMAP(pPix) ((DRIDrawablePrivPtr) \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync dixLookupPrivate(&(pPix)->devPrivates, DRIWindowPrivKey))
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef struct _DRIDrawablePrivRec {
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_drawable_t hwDrawable;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int drawableIndex;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ScreenPtr pScreen;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int refCount;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int nrects;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync} DRIDrawablePrivRec, *DRIDrawablePrivPtr;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsyncstruct _DRIContextPrivRec {
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_context_t hwContext;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ScreenPtr pScreen;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool valid3D;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIContextFlags flags;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void **pContextStore;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync};
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_SCREEN_PRIV(pScreen) ((DRIScreenPrivPtr) \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync (dixPrivateKeyRegistered(DRIScreenPrivKey) ? \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync dixLookupPrivate(&(pScreen)->devPrivates, DRIScreenPrivKey) : NULL))
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_SCREEN_PRIV_FROM_INDEX(screenIndex) ((DRIScreenPrivPtr) \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync dixLookupPrivate(&screenInfo.screens[screenIndex]->devPrivates, \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIScreenPrivKey))
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#define DRI_ENT_PRIV(pScrn) \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ((DRIEntPrivIndex < 0) ? \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync NULL: \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ((DRIEntPrivPtr)(xf86GetEntityPrivate((pScrn)->entityList[0], \
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIEntPrivIndex)->ptr)))
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef struct _DRIScreenPrivRec {
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool directRenderingSupport;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int drmFD; /* File descriptor for /dev/video/? */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_handle_t hSAREA; /* Handle to SAREA, for mapping */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync XF86DRISAREAPtr pSAREA; /* Mapped pointer to SAREA */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_context_t myContext; /* DDX Driver's context */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIContextPrivPtr myContextPriv; /* Pointer to server's private area */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIContextPrivPtr lastPartial3DContext; /* last one partially saved */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void **hiddenContextStore; /* hidden X context */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync void **partial3DContextStore; /* parital 3D context */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIInfoPtr pDriverInfo;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int nrWindows;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int nrWindowsVisible;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int nrWalked;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_clip_rect_t private_buffer_rect; /* management of private buffers */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DrawablePtr fullscreen; /* pointer to fullscreen drawable */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_clip_rect_t fullscreen_rect; /* fake rect for fullscreen mode */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIWrappedFuncsRec wrap;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DestroyWindowProcPtr DestroyWindow;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DrawablePtr DRIDrawables[SAREA_MAX_DRAWABLES];
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync DRIContextPrivPtr dummyCtxPriv; /* Pointer to dummy context */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool createDummyCtx;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool createDummyCtxPriv;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool grabbedDRILock;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool drmSIGIOHandlerInstalled;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool wrapped;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool windowsTouched;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int lockRefCount;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_handle_t hLSAREA; /* Handle to SAREA containing lock, for mapping */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync XF86DRILSAREAPtr pLSAREA; /* Mapped pointer to SAREA containing lock */
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *pLockRefCount;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int *pLockingContext;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync xf86_crtc_notify_proc_ptr xf86_crtc_notify;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync} DRIScreenPrivRec, *DRIScreenPrivPtr;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsynctypedef struct _DRIEntPrivRec {
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int drmFD;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool drmOpened;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool sAreaGrabbed;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync drm_handle_t hLSAREA;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync XF86DRILSAREAPtr pLSAREA;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync unsigned long sAreaSize;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int lockRefCount;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int lockingContext;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync ScreenPtr resOwner;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync Bool keepFDOpen;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync int refCount;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync} DRIEntPrivRec, *DRIEntPrivPtr;
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync
a3f3701cea1ba388e7c877955252bb7375eedebdvboxsync#endif /* DRI_STRUCT_H */