13fdd42f1fc3e519650037a920e6a54c24973866vboxsync/**
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * \file sarea.h
80096fb54d147045204dcc7e3ff273158de03f81vboxsync * SAREA definitions.
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync *
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * \author Kevin E. Martin <kevin@precisioninsight.com>
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * \author Jens Owen <jens@tungstengraphics.com>
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * \author Rickard E. (Rik) Faith <faith@valinux.com>
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync */
eaaf3e046ba9d319f5a391f7eccaa7b45c69bc92vboxsync
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync/*
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * Copyright 2000 VA Linux Systems, Inc.
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * All Rights Reserved.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync *
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Permission is hereby granted, free of charge, to any person obtaining a
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * copy of this software and associated documentation files (the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * "Software"), to deal in the Software without restriction, including
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * without limitation the rights to use, copy, modify, merge, publish,
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * distribute, sub license, and/or sell copies of the Software, and to
e7aa635d70dd0cdf083287ec896fe8cca2775466vboxsync * permit persons to whom the Software is furnished to do so, subject to
bb2a9191f4257063f21d010d02834fa9050117dcvboxsync * the following conditions:
72820d83a10e812195eb73172dda234592c8268dvboxsync *
72820d83a10e812195eb73172dda234592c8268dvboxsync * The above copyright notice and this permission notice (including the
e7aa635d70dd0cdf083287ec896fe8cca2775466vboxsync * next paragraph) shall be included in all copies or substantial portions
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * of the Software.
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync *
8117ff36d9fe9125ec6f520a84a6b37888c39dbcvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1a36a5b9d31d559ea3668e78e981ee4423515db0vboxsync * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
8117ff36d9fe9125ec6f520a84a6b37888c39dbcvboxsync * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
8117ff36d9fe9125ec6f520a84a6b37888c39dbcvboxsync * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
8117ff36d9fe9125ec6f520a84a6b37888c39dbcvboxsync * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
8117ff36d9fe9125ec6f520a84a6b37888c39dbcvboxsync * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
8117ff36d9fe9125ec6f520a84a6b37888c39dbcvboxsync * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8117ff36d9fe9125ec6f520a84a6b37888c39dbcvboxsync */
8117ff36d9fe9125ec6f520a84a6b37888c39dbcvboxsync
8117ff36d9fe9125ec6f520a84a6b37888c39dbcvboxsync
8117ff36d9fe9125ec6f520a84a6b37888c39dbcvboxsync#ifndef _SAREA_H_
0b689b4143f8a4f8fcbc2d80782572b2956c2ff8vboxsync#define _SAREA_H_
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync#include "xf86drm.h"
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync/* SAREA area needs to be at least a page */
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync#if defined(__alpha__)
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync#define SAREA_MAX 0x2000
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync#elif defined(__ia64__)
da77ffaf250671ba1273b7974c07bee60c9fbbb1vboxsync#define SAREA_MAX 0x10000 /* 64kB */
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync#else
da77ffaf250671ba1273b7974c07bee60c9fbbb1vboxsync/* Intel 830M driver needs at least 8k SAREA */
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync#define SAREA_MAX 0x2000
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync#endif
da77ffaf250671ba1273b7974c07bee60c9fbbb1vboxsync
da77ffaf250671ba1273b7974c07bee60c9fbbb1vboxsync#define SAREA_MAX_DRAWABLES 256
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync#define SAREA_DRAWABLE_CLAIMED_ENTRY 0x80000000
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync/**
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * SAREA per drawable information.
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync *
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync * \sa _XF86DRISAREA.
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync */
13fdd42f1fc3e519650037a920e6a54c24973866vboxsynctypedef struct _XF86DRISAREADrawable {
da77ffaf250671ba1273b7974c07bee60c9fbbb1vboxsync unsigned int stamp;
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync unsigned int flags;
da77ffaf250671ba1273b7974c07bee60c9fbbb1vboxsync} XF86DRISAREADrawableRec, *XF86DRISAREADrawablePtr;
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync/**
da77ffaf250671ba1273b7974c07bee60c9fbbb1vboxsync * SAREA frame information.
da77ffaf250671ba1273b7974c07bee60c9fbbb1vboxsync *
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * \sa _XF86DRISAREA.
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync */
60d03c38311c6e4c34add74be472fe2098f52d6evboxsynctypedef struct _XF86DRISAREAFrame {
c161379f4055372228230517aa1700c47e3b9b7fvboxsync unsigned int x;
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync unsigned int y;
c161379f4055372228230517aa1700c47e3b9b7fvboxsync unsigned int width;
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync unsigned int height;
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync unsigned int fullscreen;
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync} XF86DRISAREAFrameRec, *XF86DRISAREAFramePtr;
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync/**
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync * SAREA definition.
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync */
60d03c38311c6e4c34add74be472fe2098f52d6evboxsynctypedef struct _XF86DRISAREA {
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync /** first thing is always the DRM locking structure */
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync drmLock lock;
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync /** \todo Use readers/writer lock for drawable_lock */
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync drmLock drawable_lock;
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync XF86DRISAREADrawableRec drawableTable[SAREA_MAX_DRAWABLES];
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync XF86DRISAREAFrameRec frame;
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync drm_context_t dummy_context;
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync} XF86DRISAREARec, *XF86DRISAREAPtr;
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync
60d03c38311c6e4c34add74be472fe2098f52d6evboxsynctypedef struct _XF86DRILSAREA {
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync drmLock lock;
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync drmLock otherLocks[31];
60d03c38311c6e4c34add74be472fe2098f52d6evboxsync} XF86DRILSAREARec, *XF86DRILSAREAPtr;
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync#endif
13fdd42f1fc3e519650037a920e6a54c24973866vboxsync