Subversion Repositories Kolibri OS

Rev

Rev 6934 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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. /* SAREA area needs to be at least a page */
  38. #if defined(__alpha__)
  39. #define SAREA_MAX                       0x2000U
  40. #elif defined(__mips__)
  41. #define SAREA_MAX                       0x4000U
  42. #elif defined(__ia64__)
  43. #define SAREA_MAX                       0x10000U        /* 64kB */
  44. #else
  45. /* Intel 830M driver needs at least 8k SAREA */
  46. #define SAREA_MAX                       0x2000U
  47. #endif
  48.  
  49. /** Maximum number of drawables in the SAREA */
  50. #define SAREA_MAX_DRAWABLES             256
  51.  
  52. #define SAREA_DRAWABLE_CLAIMED_ENTRY    0x80000000
  53.  
  54. /** SAREA drawable */
  55. struct drm_sarea_drawable {
  56.         unsigned int stamp;
  57.         unsigned int flags;
  58. };
  59.  
  60. /** SAREA frame */
  61. struct drm_sarea_frame {
  62.         unsigned int x;
  63.         unsigned int y;
  64.         unsigned int width;
  65.         unsigned int height;
  66.         unsigned int fullscreen;
  67. };
  68.  
  69. /** SAREA */
  70. struct drm_sarea {
  71.     /** first thing is always the DRM locking structure */
  72.         struct drm_hw_lock lock;
  73.     /** \todo Use readers/writer lock for drm_sarea::drawable_lock */
  74.         struct drm_hw_lock drawable_lock;
  75.         struct drm_sarea_drawable drawableTable[SAREA_MAX_DRAWABLES];   /**< drawables */
  76.         struct drm_sarea_frame frame;   /**< frame */
  77.         drm_context_t dummy_context;
  78. };
  79.  
  80. #ifndef __KERNEL__
  81. typedef struct drm_sarea_drawable drm_sarea_drawable_t;
  82. typedef struct drm_sarea_frame drm_sarea_frame_t;
  83. typedef struct drm_sarea drm_sarea_t;
  84. #endif
  85.  
  86. #endif                          /* _DRM_SAREA_H_ */
  87.