03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/**************************************************************************
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncCopyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncAll Rights Reserved.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncPermission is hereby granted, free of charge, to any person obtaining a
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynccopy of this software and associated documentation files (the
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync"Software"), to deal in the Software without restriction, including
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncwithout limitation the rights to use, copy, modify, merge, publish,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncdistribute, sub license, and/or sell copies of the Software, and to
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncpermit persons to whom the Software is furnished to do so, subject to
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncthe following conditions:
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncThe above copyright notice and this permission notice (including the
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncnext paragraph) shall be included in all copies or substantial portions
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncof the Software.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncIN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync**************************************************************************/
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/*
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Authors:
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Jens Owen <jens@tungstengraphics.com>
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#ifndef DRI_STRUCT_H
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define DRI_STRUCT_H
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "xf86drm.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "xf86Crtc.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin) ((DRIDrawablePrivPtr) \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync dixLookupPrivate(&(pWin)->devPrivates, DRIWindowPrivKey))
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define DRI_DRAWABLE_PRIV_FROM_PIXMAP(pPix) ((DRIDrawablePrivPtr) \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync dixLookupPrivate(&(pPix)->devPrivates, DRIWindowPrivKey))
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _DRIDrawablePrivRec {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync drm_drawable_t hwDrawable;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int drawableIndex;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ScreenPtr pScreen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int refCount;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int nrects;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} DRIDrawablePrivRec, *DRIDrawablePrivPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstruct _DRIContextPrivRec {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync drm_context_t hwContext;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ScreenPtr pScreen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool valid3D;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DRIContextFlags flags;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync void **pContextStore;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync};
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define DRI_SCREEN_PRIV(pScreen) ((DRIScreenPrivPtr) \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync (dixPrivateKeyRegistered(DRIScreenPrivKey) ? \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync dixLookupPrivate(&(pScreen)->devPrivates, DRIScreenPrivKey) : NULL))
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define DRI_SCREEN_PRIV_FROM_INDEX(screenIndex) ((DRIScreenPrivPtr) \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync dixLookupPrivate(&screenInfo.screens[screenIndex]->devPrivates, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DRIScreenPrivKey))
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define DRI_ENT_PRIV(pScrn) \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ((DRIEntPrivIndex < 0) ? \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync NULL: \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ((DRIEntPrivPtr)(xf86GetEntityPrivate((pScrn)->entityList[0], \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DRIEntPrivIndex)->ptr)))
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _DRIScreenPrivRec {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool directRenderingSupport;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int drmFD; /* File descriptor for /dev/video/? */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync drm_handle_t hSAREA; /* Handle to SAREA, for mapping */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XF86DRISAREAPtr pSAREA; /* Mapped pointer to SAREA */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync drm_context_t myContext; /* DDX Driver's context */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DRIContextPrivPtr myContextPriv; /* Pointer to server's private area */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DRIContextPrivPtr lastPartial3DContext; /* last one partially saved */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync void **hiddenContextStore; /* hidden X context */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync void **partial3DContextStore; /* parital 3D context */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DRIInfoPtr pDriverInfo;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int nrWindows;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int nrWindowsVisible;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int nrWalked;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync drm_clip_rect_t private_buffer_rect; /* management of private buffers */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DrawablePtr fullscreen; /* pointer to fullscreen drawable */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync drm_clip_rect_t fullscreen_rect; /* fake rect for fullscreen mode */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DRIWrappedFuncsRec wrap;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DestroyWindowProcPtr DestroyWindow;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DrawablePtr DRIDrawables[SAREA_MAX_DRAWABLES];
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DRIContextPrivPtr dummyCtxPriv; /* Pointer to dummy context */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool createDummyCtx;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool createDummyCtxPriv;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool grabbedDRILock;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool drmSIGIOHandlerInstalled;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool wrapped;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool windowsTouched;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int lockRefCount;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync drm_handle_t hLSAREA; /* Handle to SAREA containing lock, for mapping */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XF86DRILSAREAPtr pLSAREA; /* Mapped pointer to SAREA containing lock */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int *pLockRefCount;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int *pLockingContext;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xf86_crtc_notify_proc_ptr xf86_crtc_notify;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} DRIScreenPrivRec, *DRIScreenPrivPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _DRIEntPrivRec {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int drmFD;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool drmOpened;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool sAreaGrabbed;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync drm_handle_t hLSAREA;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XF86DRILSAREAPtr pLSAREA;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned long sAreaSize;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int lockRefCount;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int lockingContext;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ScreenPtr resOwner;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool keepFDOpen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int refCount;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} DRIEntPrivRec, *DRIEntPrivPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#endif /* DRI_STRUCT_H */