1bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson/** 2bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * \file sarea.h 3bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * SAREA definitions. 4bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * 5bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * \author Kevin E. Martin <kevin@precisioninsight.com> 6bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * \author Jens Owen <jens@tungstengraphics.com> 7bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * \author Rickard E. (Rik) Faith <faith@valinux.com> 8bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson */ 9bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 10bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson/* 11bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. 12bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * Copyright 2000 VA Linux Systems, Inc. 13bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * All Rights Reserved. 14bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * 15bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * Permission is hereby granted, free of charge, to any person obtaining a 16bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * copy of this software and associated documentation files (the 17bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * "Software"), to deal in the Software without restriction, including 18bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * without limitation the rights to use, copy, modify, merge, publish, 19bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * distribute, sub license, and/or sell copies of the Software, and to 20bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * permit persons to whom the Software is furnished to do so, subject to 21bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * the following conditions: 22bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * 23bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * The above copyright notice and this permission notice (including the 24bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * next paragraph) shall be included in all copies or substantial portions 25bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * of the Software. 26bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * 27bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 28bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 29bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 30bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 31bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 32bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 33bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 34bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson */ 35bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 36bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 37bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#ifndef _SAREA_H_ 38bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#define _SAREA_H_ 39bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 40bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#include "xf86drm.h" 41bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 42bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson/* SAREA area needs to be at least a page */ 43bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#if defined(__alpha__) 44bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#define SAREA_MAX 0x2000 45bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#elif defined(__ia64__) 46bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#define SAREA_MAX 0x10000 /* 64kB */ 47bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#else 48bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson/* Intel 830M driver needs at least 8k SAREA */ 49bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#define SAREA_MAX 0x2000 50bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#endif 51bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 52bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#define SAREA_MAX_DRAWABLES 256 53bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 54bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#define SAREA_DRAWABLE_CLAIMED_ENTRY 0x80000000 55bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 56bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson/** 57bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * SAREA per drawable information. 58bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * 59bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * \sa _XF86DRISAREA. 60bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson */ 61bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jacksontypedef struct _XF86DRISAREADrawable { 62bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson unsigned int stamp; 63bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson unsigned int flags; 64bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson} XF86DRISAREADrawableRec, *XF86DRISAREADrawablePtr; 65bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 66bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson/** 67bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * SAREA frame information. 68bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * 69bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * \sa _XF86DRISAREA. 70bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson */ 71bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jacksontypedef struct _XF86DRISAREAFrame { 72bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson unsigned int x; 73bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson unsigned int y; 74bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson unsigned int width; 75bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson unsigned int height; 76bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson unsigned int fullscreen; 77bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson} XF86DRISAREAFrameRec, *XF86DRISAREAFramePtr; 78bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 79bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson/** 80bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson * SAREA definition. 81bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson */ 82bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jacksontypedef struct _XF86DRISAREA { 83bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson /** first thing is always the DRM locking structure */ 84bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson drmLock lock; 85bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson /** \todo Use readers/writer lock for drawable_lock */ 86bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson drmLock drawable_lock; 87bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson XF86DRISAREADrawableRec drawableTable[SAREA_MAX_DRAWABLES]; 88bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson XF86DRISAREAFrameRec frame; 89bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson drm_context_t dummy_context; 90bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson} XF86DRISAREARec, *XF86DRISAREAPtr; 91bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson 92bcd8735546f3842f917f2cdc4ff530e4215f01a1Adam Jackson#endif 93