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