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