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