linux/include/uapi/drm/drm_sarea.h
<<
>>
Prefs
   1/**
   2 * \file drm_sarea.h
   3 * \brief SAREA definitions
   4 *
   5 * \author Michel Dänzer <michel@daenzer.net>
   6 */
   7
   8/*
   9 * Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas.
  10 * All Rights Reserved.
  11 *
  12 * Permission is hereby granted, free of charge, to any person obtaining a
  13 * copy of this software and associated documentation files (the "Software"),
  14 * to deal in the Software without restriction, including without limitation
  15 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  16 * and/or sell copies of the Software, and to permit persons to whom the
  17 * Software is furnished to do so, subject to the following conditions:
  18 *
  19 * The above copyright notice and this permission notice (including the next
  20 * paragraph) shall be included in all copies or substantial portions of the
  21 * Software.
  22 *
  23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  25 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  26 * TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
  27 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  28 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  29 * OTHER DEALINGS IN THE SOFTWARE.
  30 */
  31
  32#ifndef _DRM_SAREA_H_
  33#define _DRM_SAREA_H_
  34
  35#include "drm.h"
  36
  37#if defined(__cplusplus)
  38extern "C" {
  39#endif
  40
  41/* SAREA area needs to be at least a page */
  42#if defined(__alpha__)
  43#define SAREA_MAX                       0x2000U
  44#elif defined(__mips__)
  45#define SAREA_MAX                       0x4000U
  46#elif defined(__ia64__)
  47#define SAREA_MAX                       0x10000U        /* 64kB */
  48#else
  49/* Intel 830M driver needs at least 8k SAREA */
  50#define SAREA_MAX                       0x2000U
  51#endif
  52
  53/** Maximum number of drawables in the SAREA */
  54#define SAREA_MAX_DRAWABLES             256
  55
  56#define SAREA_DRAWABLE_CLAIMED_ENTRY    0x80000000
  57
  58/** SAREA drawable */
  59struct drm_sarea_drawable {
  60        unsigned int stamp;
  61        unsigned int flags;
  62};
  63
  64/** SAREA frame */
  65struct drm_sarea_frame {
  66        unsigned int x;
  67        unsigned int y;
  68        unsigned int width;
  69        unsigned int height;
  70        unsigned int fullscreen;
  71};
  72
  73/** SAREA */
  74struct drm_sarea {
  75    /** first thing is always the DRM locking structure */
  76        struct drm_hw_lock lock;
  77    /** \todo Use readers/writer lock for drm_sarea::drawable_lock */
  78        struct drm_hw_lock drawable_lock;
  79        struct drm_sarea_drawable drawableTable[SAREA_MAX_DRAWABLES];   /**< drawables */
  80        struct drm_sarea_frame frame;   /**< frame */
  81        drm_context_t dummy_context;
  82};
  83
  84#ifndef __KERNEL__
  85typedef struct drm_sarea_drawable drm_sarea_drawable_t;
  86typedef struct drm_sarea_frame drm_sarea_frame_t;
  87typedef struct drm_sarea drm_sarea_t;
  88#endif
  89
  90#if defined(__cplusplus)
  91}
  92#endif
  93
  94#endif                          /* _DRM_SAREA_H_ */
  95