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