[79256] trunk/dports/x11/mesa

jeremyhu at macports.org jeremyhu at macports.org
Mon Jun 6 20:38:42 PDT 2011


Revision: 79256
          http://trac.macports.org/changeset/79256
Author:   jeremyhu at macports.org
Date:     2011-06-06 20:38:39 -0700 (Mon, 06 Jun 2011)
Log Message:
-----------
mesa: Remove unneeded drm_headers patch

Modified Paths:
--------------
    trunk/dports/x11/mesa/Portfile

Removed Paths:
-------------
    trunk/dports/x11/mesa/files/mesa-7.2-drm_headers.patch

Modified: trunk/dports/x11/mesa/Portfile
===================================================================
--- trunk/dports/x11/mesa/Portfile	2011-06-07 03:08:59 UTC (rev 79255)
+++ trunk/dports/x11/mesa/Portfile	2011-06-07 03:38:39 UTC (rev 79256)
@@ -53,7 +53,6 @@
 
 patch.pre_args -p1
 patchfiles \
-	mesa-7.2-drm_headers.patch \
 	mesa-7.10.2-api-fixes.patch 
 
 build.target default

Deleted: trunk/dports/x11/mesa/files/mesa-7.2-drm_headers.patch
===================================================================
--- trunk/dports/x11/mesa/files/mesa-7.2-drm_headers.patch	2011-06-07 03:08:59 UTC (rev 79255)
+++ trunk/dports/x11/mesa/files/mesa-7.2-drm_headers.patch	2011-06-07 03:38:39 UTC (rev 79256)
@@ -1,1441 +0,0 @@
-diff --git a/src/glx/x11/drm.h b/src/glx/x11/drm.h
-new file mode 100644
-index 0000000..82a486f
---- /dev/null
-+++ Mesa-7.2/src/glx/x11/drm.h
-@@ -0,0 +1,768 @@
-+/**
-+ * \file drm.h
-+ * Header for the Direct Rendering Manager
-+ *
-+ * \author Rickard E. (Rik) Faith <faith at valinux.com>
-+ *
-+ * \par Acknowledgments:
-+ * Dec 1999, Richard Henderson <rth at twiddle.net>, move to generic \c cmpxchg.
-+ */
-+
-+/*
-+ * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
-+ * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
-+ * All rights reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the "Software"),
-+ * to deal in the Software without restriction, including without limitation
-+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+ * and/or sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the next
-+ * paragraph) shall be included in all copies or substantial portions of the
-+ * Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-+ * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/**
-+ * \mainpage
-+ *
-+ * The Direct Rendering Manager (DRM) is a device-independent kernel-level
-+ * device driver that provides support for the XFree86 Direct Rendering
-+ * Infrastructure (DRI).
-+ *
-+ * The DRM supports the Direct Rendering Infrastructure (DRI) in four major
-+ * ways:
-+ *     -# The DRM provides synchronized access to the graphics hardware via
-+ *        the use of an optimized two-tiered lock.
-+ *     -# The DRM enforces the DRI security policy for access to the graphics
-+ *        hardware by only allowing authenticated X11 clients access to
-+ *        restricted regions of memory.
-+ *     -# The DRM provides a generic DMA engine, complete with multiple
-+ *        queues and the ability to detect the need for an OpenGL context
-+ *        switch.
-+ *     -# The DRM is extensible via the use of small device-specific modules
-+ *        that rely extensively on the API exported by the DRM module.
-+ *
-+ */
-+
-+#ifndef _DRM_H_
-+#define _DRM_H_
-+
-+#ifndef __user
-+#define __user
-+#endif
-+#ifndef __iomem
-+#define __iomem
-+#endif
-+
-+#ifdef __GNUC__
-+# define DEPRECATED  __attribute__ ((deprecated))
-+#else
-+# define DEPRECATED
-+#endif
-+
-+#if defined(__linux__)
-+#include <asm/ioctl.h>		/* For _IO* macros */
-+#define DRM_IOCTL_NR(n)		_IOC_NR(n)
-+#define DRM_IOC_VOID		_IOC_NONE
-+#define DRM_IOC_READ		_IOC_READ
-+#define DRM_IOC_WRITE		_IOC_WRITE
-+#define DRM_IOC_READWRITE	_IOC_READ|_IOC_WRITE
-+#define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size)
-+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-+#include <sys/ioccom.h>
-+#define DRM_IOCTL_NR(n)		((n) & 0xff)
-+#define DRM_IOC_VOID		IOC_VOID
-+#define DRM_IOC_READ		IOC_OUT
-+#define DRM_IOC_WRITE		IOC_IN
-+#define DRM_IOC_READWRITE	IOC_INOUT
-+#define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size)
-+#endif
-+
-+#ifdef __OpenBSD__
-+#define DRM_MAJOR       81
-+#endif
-+#if defined(__linux__) || defined(__NetBSD__)
-+#define DRM_MAJOR       226
-+#endif
-+#define DRM_MAX_MINOR   15
-+
-+#define DRM_NAME	"drm"	  /**< Name in kernel, /dev, and /proc */
-+#define DRM_MIN_ORDER	5	  /**< At least 2^5 bytes = 32 bytes */
-+#define DRM_MAX_ORDER	22	  /**< Up to 2^22 bytes = 4MB */
-+#define DRM_RAM_PERCENT 10	  /**< How much system ram can we lock? */
-+
-+#define _DRM_LOCK_HELD	0x80000000U /**< Hardware lock is held */
-+#define _DRM_LOCK_CONT	0x40000000U /**< Hardware lock is contended */
-+#define _DRM_LOCK_IS_HELD(lock)	   ((lock) & _DRM_LOCK_HELD)
-+#define _DRM_LOCK_IS_CONT(lock)	   ((lock) & _DRM_LOCK_CONT)
-+#define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD|_DRM_LOCK_CONT))
-+
-+#if defined(__linux__)
-+typedef unsigned int drm_handle_t;
-+#else
-+#include <sys/types.h>
-+typedef unsigned long drm_handle_t;	/**< To mapped regions */
-+#endif
-+typedef unsigned int drm_context_t;	/**< GLXContext handle */
-+typedef unsigned int drm_drawable_t;
-+typedef unsigned int drm_magic_t;	/**< Magic for authentication */
-+
-+/**
-+ * Cliprect.
-+ *
-+ * \warning If you change this structure, make sure you change
-+ * XF86DRIClipRectRec in the server as well
-+ *
-+ * \note KW: Actually it's illegal to change either for
-+ * backwards-compatibility reasons.
-+ */
-+struct drm_clip_rect {
-+	unsigned short x1;
-+	unsigned short y1;
-+	unsigned short x2;
-+	unsigned short y2;
-+};
-+
-+/**
-+ * Texture region,
-+ */
-+struct drm_tex_region {
-+	unsigned char next;
-+	unsigned char prev;
-+	unsigned char in_use;
-+	unsigned char padding;
-+	unsigned int age;
-+};
-+
-+/**
-+ * Hardware lock.
-+ *
-+ * The lock structure is a simple cache-line aligned integer.  To avoid
-+ * processor bus contention on a multiprocessor system, there should not be any
-+ * other data stored in the same cache line.
-+ */
-+struct drm_hw_lock {
-+	__volatile__ unsigned int lock;		/**< lock variable */
-+	char padding[60];			/**< Pad to cache line */
-+};
-+
-+/* This is beyond ugly, and only works on GCC.  However, it allows me to use
-+ * drm.h in places (i.e., in the X-server) where I can't use size_t.  The real
-+ * fix is to use uint32_t instead of size_t, but that fix will break existing
-+ * LP64 (i.e., PowerPC64, SPARC64, IA-64, Alpha, etc.) systems.  That *will*
-+ * eventually happen, though.  I chose 'unsigned long' to be the fallback type
-+ * because that works on all the platforms I know about.  Hopefully, the
-+ * real fix will happen before that bites us.
-+ */
-+
-+#ifdef __SIZE_TYPE__
-+# define DRM_SIZE_T __SIZE_TYPE__
-+#else
-+# warning "__SIZE_TYPE__ not defined.  Assuming sizeof(size_t) == sizeof(unsigned long)!"
-+# define DRM_SIZE_T unsigned long
-+#endif
-+
-+/**
-+ * DRM_IOCTL_VERSION ioctl argument type.
-+ *
-+ * \sa drmGetVersion().
-+ */
-+struct drm_version {
-+	int version_major;	  /**< Major version */
-+	int version_minor;	  /**< Minor version */
-+	int version_patchlevel;	  /**< Patch level */
-+	DRM_SIZE_T name_len;	  /**< Length of name buffer */
-+	char __user *name;		  /**< Name of driver */
-+	DRM_SIZE_T date_len;	  /**< Length of date buffer */
-+	char __user *date;		  /**< User-space buffer to hold date */
-+	DRM_SIZE_T desc_len;	  /**< Length of desc buffer */
-+	char __user *desc;		  /**< User-space buffer to hold desc */
-+};
-+
-+/**
-+ * DRM_IOCTL_GET_UNIQUE ioctl argument type.
-+ *
-+ * \sa drmGetBusid() and drmSetBusId().
-+ */
-+struct drm_unique {
-+	DRM_SIZE_T unique_len;	  /**< Length of unique */
-+	char __user *unique;		  /**< Unique name for driver instantiation */
-+};
-+
-+#undef DRM_SIZE_T
-+
-+struct drm_list {
-+	int count;		  /**< Length of user-space structures */
-+	struct drm_version __user *version;
-+};
-+
-+struct drm_block {
-+	int unused;
-+};
-+
-+/**
-+ * DRM_IOCTL_CONTROL ioctl argument type.
-+ *
-+ * \sa drmCtlInstHandler() and drmCtlUninstHandler().
-+ */
-+struct drm_control {
-+	enum {
-+		DRM_ADD_COMMAND,
-+		DRM_RM_COMMAND,
-+		DRM_INST_HANDLER,
-+		DRM_UNINST_HANDLER
-+	} func;
-+	int irq;
-+};
-+
-+/**
-+ * Type of memory to map.
-+ */
-+enum drm_map_type {
-+	_DRM_FRAME_BUFFER = 0,	  /**< WC (no caching), no core dump */
-+	_DRM_REGISTERS = 1,	  /**< no caching, no core dump */
-+	_DRM_SHM = 2,		  /**< shared, cached */
-+	_DRM_AGP = 3,		  /**< AGP/GART */
-+	_DRM_SCATTER_GATHER = 4,  /**< Scatter/gather memory for PCI DMA */
-+	_DRM_CONSISTENT = 5,	  /**< Consistent memory for PCI DMA */
-+};
-+
-+/**
-+ * Memory mapping flags.
-+ */
-+enum drm_map_flags {
-+	_DRM_RESTRICTED = 0x01,	     /**< Cannot be mapped to user-virtual */
-+	_DRM_READ_ONLY = 0x02,
-+	_DRM_LOCKED = 0x04,	     /**< shared, cached, locked */
-+	_DRM_KERNEL = 0x08,	     /**< kernel requires access */
-+	_DRM_WRITE_COMBINING = 0x10, /**< use write-combining if available */
-+	_DRM_CONTAINS_LOCK = 0x20,   /**< SHM page that contains lock */
-+	_DRM_REMOVABLE = 0x40,	     /**< Removable mapping */
-+	_DRM_DRIVER = 0x80	     /**< Managed by driver */
-+};
-+
-+struct drm_ctx_priv_map {
-+	unsigned int ctx_id;	 /**< Context requesting private mapping */
-+	void *handle;		 /**< Handle of map */
-+};
-+
-+/**
-+ * DRM_IOCTL_GET_MAP, DRM_IOCTL_ADD_MAP and DRM_IOCTL_RM_MAP ioctls
-+ * argument type.
-+ *
-+ * \sa drmAddMap().
-+ */
-+struct drm_map {
-+	unsigned long offset;	 /**< Requested physical address (0 for SAREA)*/
-+	unsigned long size;	 /**< Requested physical size (bytes) */
-+	enum drm_map_type type;	 /**< Type of memory to map */
-+	enum drm_map_flags flags;	 /**< Flags */
-+	void *handle;		 /**< User-space: "Handle" to pass to mmap() */
-+				 /**< Kernel-space: kernel-virtual address */
-+	int mtrr;		 /**< MTRR slot used */
-+	/*   Private data */
-+};
-+
-+/**
-+ * DRM_IOCTL_GET_CLIENT ioctl argument type.
-+ */
-+struct drm_client {
-+	int idx;		/**< Which client desired? */
-+	int auth;		/**< Is client authenticated? */
-+	unsigned long pid;	/**< Process ID */
-+	unsigned long uid;	/**< User ID */
-+	unsigned long magic;	/**< Magic */
-+	unsigned long iocs;	/**< Ioctl count */
-+};
-+
-+enum drm_stat_type {
-+	_DRM_STAT_LOCK,
-+	_DRM_STAT_OPENS,
-+	_DRM_STAT_CLOSES,
-+	_DRM_STAT_IOCTLS,
-+	_DRM_STAT_LOCKS,
-+	_DRM_STAT_UNLOCKS,
-+	_DRM_STAT_VALUE,	/**< Generic value */
-+	_DRM_STAT_BYTE,		/**< Generic byte counter (1024bytes/K) */
-+	_DRM_STAT_COUNT,	/**< Generic non-byte counter (1000/k) */
-+
-+	_DRM_STAT_IRQ,		/**< IRQ */
-+	_DRM_STAT_PRIMARY,	/**< Primary DMA bytes */
-+	_DRM_STAT_SECONDARY,	/**< Secondary DMA bytes */
-+	_DRM_STAT_DMA,		/**< DMA */
-+	_DRM_STAT_SPECIAL,	/**< Special DMA (e.g., priority or polled) */
-+	_DRM_STAT_MISSED	/**< Missed DMA opportunity */
-+	    /* Add to the *END* of the list */
-+};
-+
-+/**
-+ * DRM_IOCTL_GET_STATS ioctl argument type.
-+ */
-+struct drm_stats {
-+	unsigned long count;
-+	struct {
-+		unsigned long value;
-+		enum drm_stat_type type;
-+	} data[15];
-+};
-+
-+/**
-+ * Hardware locking flags.
-+ */
-+enum drm_lock_flags {
-+	_DRM_LOCK_READY = 0x01,	     /**< Wait until hardware is ready for DMA */
-+	_DRM_LOCK_QUIESCENT = 0x02,  /**< Wait until hardware quiescent */
-+	_DRM_LOCK_FLUSH = 0x04,	     /**< Flush this context's DMA queue first */
-+	_DRM_LOCK_FLUSH_ALL = 0x08,  /**< Flush all DMA queues first */
-+	/* These *HALT* flags aren't supported yet
-+	   -- they will be used to support the
-+	   full-screen DGA-like mode. */
-+	_DRM_HALT_ALL_QUEUES = 0x10, /**< Halt all current and future queues */
-+	_DRM_HALT_CUR_QUEUES = 0x20  /**< Halt all current queues */
-+};
-+
-+/**
-+ * DRM_IOCTL_LOCK, DRM_IOCTL_UNLOCK and DRM_IOCTL_FINISH ioctl argument type.
-+ *
-+ * \sa drmGetLock() and drmUnlock().
-+ */
-+struct drm_lock {
-+	int context;
-+	enum drm_lock_flags flags;
-+};
-+
-+/**
-+ * DMA flags
-+ *
-+ * \warning
-+ * These values \e must match xf86drm.h.
-+ *
-+ * \sa drm_dma.
-+ */
-+enum drm_dma_flags {
-+	/* Flags for DMA buffer dispatch */
-+	_DRM_DMA_BLOCK = 0x01,	      /**<
-+				       * Block until buffer dispatched.
-+				       *
-+				       * \note The buffer may not yet have
-+				       * been processed by the hardware --
-+				       * getting a hardware lock with the
-+				       * hardware quiescent will ensure
-+				       * that the buffer has been
-+				       * processed.
-+				       */
-+	_DRM_DMA_WHILE_LOCKED = 0x02, /**< Dispatch while lock held */
-+	_DRM_DMA_PRIORITY = 0x04,     /**< High priority dispatch */
-+
-+	/* Flags for DMA buffer request */
-+	_DRM_DMA_WAIT = 0x10,	      /**< Wait for free buffers */
-+	_DRM_DMA_SMALLER_OK = 0x20,   /**< Smaller-than-requested buffers OK */
-+	_DRM_DMA_LARGER_OK = 0x40     /**< Larger-than-requested buffers OK */
-+};
-+
-+/**
-+ * DRM_IOCTL_ADD_BUFS and DRM_IOCTL_MARK_BUFS ioctl argument type.
-+ *
-+ * \sa drmAddBufs().
-+ */
-+struct drm_buf_desc {
-+	int count;		 /**< Number of buffers of this size */
-+	int size;		 /**< Size in bytes */
-+	int low_mark;		 /**< Low water mark */
-+	int high_mark;		 /**< High water mark */
-+	enum {
-+		_DRM_PAGE_ALIGN = 0x01,	/**< Align on page boundaries for DMA */
-+		_DRM_AGP_BUFFER = 0x02,	/**< Buffer is in AGP space */
-+		_DRM_SG_BUFFER  = 0x04,	/**< Scatter/gather memory buffer */
-+		_DRM_FB_BUFFER  = 0x08, /**< Buffer is in frame buffer */
-+		_DRM_PCI_BUFFER_RO = 0x10 /**< Map PCI DMA buffer read-only */
-+	} flags;
-+	unsigned long agp_start; /**<
-+				  * Start address of where the AGP buffers are
-+				  * in the AGP aperture
-+				  */
-+};
-+
-+/**
-+ * DRM_IOCTL_INFO_BUFS ioctl argument type.
-+ */
-+struct drm_buf_info {
-+	int count;		  /**< Number of buffers described in list */
-+	struct drm_buf_desc __user *list; /**< List of buffer descriptions */
-+};
-+
-+/**
-+ * DRM_IOCTL_FREE_BUFS ioctl argument type.
-+ */
-+struct drm_buf_free {
-+	int count;
-+	int __user *list;
-+};
-+
-+/**
-+ * Buffer information
-+ *
-+ * \sa drm_buf_map.
-+ */
-+struct drm_buf_pub {
-+	int idx;		       /**< Index into the master buffer list */
-+	int total;		       /**< Buffer size */
-+	int used;		       /**< Amount of buffer in use (for DMA) */
-+	void __user *address;	       /**< Address of buffer */
-+};
-+
-+/**
-+ * DRM_IOCTL_MAP_BUFS ioctl argument type.
-+ */
-+struct drm_buf_map {
-+	int count;		/**< Length of the buffer list */
-+#if defined(__cplusplus)
-+	void __user *c_virtual;
-+#else
-+	void __user *virtual;		/**< Mmap'd area in user-virtual */
-+#endif
-+	struct drm_buf_pub __user *list;	/**< Buffer information */
-+};
-+
-+/**
-+ * DRM_IOCTL_DMA ioctl argument type.
-+ *
-+ * Indices here refer to the offset into the buffer list in drm_buf_get.
-+ *
-+ * \sa drmDMA().
-+ */
-+struct drm_dma {
-+	int context;			  /**< Context handle */
-+	int send_count;			  /**< Number of buffers to send */
-+	int __user *send_indices;	  /**< List of handles to buffers */
-+	int __user *send_sizes;		  /**< Lengths of data to send */
-+	enum drm_dma_flags flags;	  /**< Flags */
-+	int request_count;		  /**< Number of buffers requested */
-+	int request_size;		  /**< Desired size for buffers */
-+	int __user *request_indices;	 /**< Buffer information */
-+	int __user *request_sizes;
-+	int granted_count;		  /**< Number of buffers granted */
-+};
-+
-+enum drm_ctx_flags {
-+	_DRM_CONTEXT_PRESERVED = 0x01,
-+	_DRM_CONTEXT_2DONLY = 0x02
-+};
-+
-+/**
-+ * DRM_IOCTL_ADD_CTX ioctl argument type.
-+ *
-+ * \sa drmCreateContext() and drmDestroyContext().
-+ */
-+struct drm_ctx {
-+	drm_context_t handle;
-+	enum drm_ctx_flags flags;
-+};
-+
-+/**
-+ * DRM_IOCTL_RES_CTX ioctl argument type.
-+ */
-+struct drm_ctx_res {
-+	int count;
-+	struct drm_ctx __user *contexts;
-+};
-+
-+/**
-+ * DRM_IOCTL_ADD_DRAW and DRM_IOCTL_RM_DRAW ioctl argument type.
-+ */
-+struct drm_draw {
-+	drm_drawable_t handle;
-+};
-+
-+/**
-+ * DRM_IOCTL_UPDATE_DRAW ioctl argument type.
-+ */
-+typedef enum {
-+	DRM_DRAWABLE_CLIPRECTS,
-+} drm_drawable_info_type_t;
-+
-+struct drm_update_draw {
-+	drm_drawable_t handle;
-+	unsigned int type;
-+	unsigned int num;
-+	unsigned long long data;
-+};
-+
-+/**
-+ * DRM_IOCTL_GET_MAGIC and DRM_IOCTL_AUTH_MAGIC ioctl argument type.
-+ */
-+struct drm_auth {
-+	drm_magic_t magic;
-+};
-+
-+/**
-+ * DRM_IOCTL_IRQ_BUSID ioctl argument type.
-+ *
-+ * \sa drmGetInterruptFromBusID().
-+ */
-+struct drm_irq_busid {
-+	int irq;	/**< IRQ number */
-+	int busnum;	/**< bus number */
-+	int devnum;	/**< device number */
-+	int funcnum;	/**< function number */
-+};
-+
-+enum drm_vblank_seq_type {
-+	_DRM_VBLANK_ABSOLUTE = 0x0,	/**< Wait for specific vblank sequence number */
-+	_DRM_VBLANK_RELATIVE = 0x1,	/**< Wait for given number of vblanks */
-+	_DRM_VBLANK_FLIP = 0x8000000,	/**< Scheduled buffer swap should flip */
-+	_DRM_VBLANK_NEXTONMISS = 0x10000000,	/**< If missed, wait for next vblank */
-+	_DRM_VBLANK_SECONDARY = 0x20000000,	/**< Secondary display controller */
-+	_DRM_VBLANK_SIGNAL = 0x40000000	/**< Send signal instead of blocking */
-+};
-+
-+#define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE)
-+#define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_SIGNAL | _DRM_VBLANK_SECONDARY | \
-+				_DRM_VBLANK_NEXTONMISS)
-+
-+struct drm_wait_vblank_request {
-+	enum drm_vblank_seq_type type;
-+	unsigned int sequence;
-+	unsigned long signal;
-+};
-+
-+struct drm_wait_vblank_reply {
-+	enum drm_vblank_seq_type type;
-+	unsigned int sequence;
-+	long tval_sec;
-+	long tval_usec;
-+};
-+
-+/**
-+ * DRM_IOCTL_WAIT_VBLANK ioctl argument type.
-+ *
-+ * \sa drmWaitVBlank().
-+ */
-+union drm_wait_vblank {
-+	struct drm_wait_vblank_request request;
-+	struct drm_wait_vblank_reply reply;
-+};
-+
-+
-+#define _DRM_PRE_MODESET 1
-+#define _DRM_POST_MODESET 2
-+
-+/**
-+ * DRM_IOCTL_MODESET_CTL ioctl argument type
-+ *
-+ * \sa drmModesetCtl().
-+ */
-+struct drm_modeset_ctl {
-+	uint32_t crtc;
-+	uint32_t cmd;
-+};
-+
-+/**
-+ * DRM_IOCTL_AGP_ENABLE ioctl argument type.
-+ *
-+ * \sa drmAgpEnable().
-+ */
-+struct drm_agp_mode {
-+	unsigned long mode;	/**< AGP mode */
-+};
-+
-+/**
-+ * DRM_IOCTL_AGP_ALLOC and DRM_IOCTL_AGP_FREE ioctls argument type.
-+ *
-+ * \sa drmAgpAlloc() and drmAgpFree().
-+ */
-+struct drm_agp_buffer {
-+	unsigned long size;	/**< In bytes -- will round to page boundary */
-+	unsigned long handle;	/**< Used for binding / unbinding */
-+	unsigned long type;	/**< Type of memory to allocate */
-+	unsigned long physical;	/**< Physical used by i810 */
-+};
-+
-+/**
-+ * DRM_IOCTL_AGP_BIND and DRM_IOCTL_AGP_UNBIND ioctls argument type.
-+ *
-+ * \sa drmAgpBind() and drmAgpUnbind().
-+ */
-+struct drm_agp_binding {
-+	unsigned long handle;	/**< From drm_agp_buffer */
-+	unsigned long offset;	/**< In bytes -- will round to page boundary */
-+};
-+
-+/**
-+ * DRM_IOCTL_AGP_INFO ioctl argument type.
-+ *
-+ * \sa drmAgpVersionMajor(), drmAgpVersionMinor(), drmAgpGetMode(),
-+ * drmAgpBase(), drmAgpSize(), drmAgpMemoryUsed(), drmAgpMemoryAvail(),
-+ * drmAgpVendorId() and drmAgpDeviceId().
-+ */
-+struct drm_agp_info {
-+	int agp_version_major;
-+	int agp_version_minor;
-+	unsigned long mode;
-+	unsigned long aperture_base;   /**< physical address */
-+	unsigned long aperture_size;   /**< bytes */
-+	unsigned long memory_allowed;  /**< bytes */
-+	unsigned long memory_used;
-+
-+	/** \name PCI information */
-+	/*@{ */
-+	unsigned short id_vendor;
-+	unsigned short id_device;
-+	/*@} */
-+};
-+
-+/**
-+ * DRM_IOCTL_SG_ALLOC ioctl argument type.
-+ */
-+struct drm_scatter_gather {
-+	unsigned long size;	/**< In bytes -- will round to page boundary */
-+	unsigned long handle;	/**< Used for mapping / unmapping */
-+};
-+
-+/**
-+ * DRM_IOCTL_SET_VERSION ioctl argument type.
-+ */
-+struct drm_set_version {
-+	int drm_di_major;
-+	int drm_di_minor;
-+	int drm_dd_major;
-+	int drm_dd_minor;
-+};
-+
-+/**
-+ * \name Ioctls Definitions
-+ */
-+/*@{*/
-+
-+#define DRM_IOCTL_BASE			'd'
-+#define DRM_IO(nr)			_IO(DRM_IOCTL_BASE,nr)
-+#define DRM_IOR(nr,type)		_IOR(DRM_IOCTL_BASE,nr,type)
-+#define DRM_IOW(nr,type)		_IOW(DRM_IOCTL_BASE,nr,type)
-+#define DRM_IOWR(nr,type)		_IOWR(DRM_IOCTL_BASE,nr,type)
-+
-+#define DRM_IOCTL_VERSION		DRM_IOWR(0x00, struct drm_version)
-+#define DRM_IOCTL_GET_UNIQUE		DRM_IOWR(0x01, struct drm_unique)
-+#define DRM_IOCTL_GET_MAGIC		DRM_IOR( 0x02, struct drm_auth)
-+#define DRM_IOCTL_IRQ_BUSID		DRM_IOWR(0x03, struct drm_irq_busid)
-+#define DRM_IOCTL_GET_MAP               DRM_IOWR(0x04, struct drm_map)
-+#define DRM_IOCTL_GET_CLIENT            DRM_IOWR(0x05, struct drm_client)
-+#define DRM_IOCTL_GET_STATS             DRM_IOR( 0x06, struct drm_stats)
-+#define DRM_IOCTL_SET_VERSION		DRM_IOWR(0x07, struct drm_set_version)
-+#define DRM_IOCTL_MODESET_CTL           DRM_IOW(0x08, struct drm_modeset_ctl)
-+
-+#define DRM_IOCTL_SET_UNIQUE		DRM_IOW( 0x10, struct drm_unique)
-+#define DRM_IOCTL_AUTH_MAGIC		DRM_IOW( 0x11, struct drm_auth)
-+#define DRM_IOCTL_BLOCK			DRM_IOWR(0x12, struct drm_block)
-+#define DRM_IOCTL_UNBLOCK		DRM_IOWR(0x13, struct drm_block)
-+#define DRM_IOCTL_CONTROL		DRM_IOW( 0x14, struct drm_control)
-+#define DRM_IOCTL_ADD_MAP		DRM_IOWR(0x15, struct drm_map)
-+#define DRM_IOCTL_ADD_BUFS		DRM_IOWR(0x16, struct drm_buf_desc)
-+#define DRM_IOCTL_MARK_BUFS		DRM_IOW( 0x17, struct drm_buf_desc)
-+#define DRM_IOCTL_INFO_BUFS		DRM_IOWR(0x18, struct drm_buf_info)
-+#define DRM_IOCTL_MAP_BUFS		DRM_IOWR(0x19, struct drm_buf_map)
-+#define DRM_IOCTL_FREE_BUFS		DRM_IOW( 0x1a, struct drm_buf_free)
-+
-+#define DRM_IOCTL_RM_MAP		DRM_IOW( 0x1b, struct drm_map)
-+
-+#define DRM_IOCTL_SET_SAREA_CTX		DRM_IOW( 0x1c, struct drm_ctx_priv_map)
-+#define DRM_IOCTL_GET_SAREA_CTX		DRM_IOWR(0x1d, struct drm_ctx_priv_map)
-+
-+#define DRM_IOCTL_ADD_CTX		DRM_IOWR(0x20, struct drm_ctx)
-+#define DRM_IOCTL_RM_CTX		DRM_IOWR(0x21, struct drm_ctx)
-+#define DRM_IOCTL_MOD_CTX		DRM_IOW( 0x22, struct drm_ctx)
-+#define DRM_IOCTL_GET_CTX		DRM_IOWR(0x23, struct drm_ctx)
-+#define DRM_IOCTL_SWITCH_CTX		DRM_IOW( 0x24, struct drm_ctx)
-+#define DRM_IOCTL_NEW_CTX		DRM_IOW( 0x25, struct drm_ctx)
-+#define DRM_IOCTL_RES_CTX		DRM_IOWR(0x26, struct drm_ctx_res)
-+#define DRM_IOCTL_ADD_DRAW		DRM_IOWR(0x27, struct drm_draw)
-+#define DRM_IOCTL_RM_DRAW		DRM_IOWR(0x28, struct drm_draw)
-+#define DRM_IOCTL_DMA			DRM_IOWR(0x29, struct drm_dma)
-+#define DRM_IOCTL_LOCK			DRM_IOW( 0x2a, struct drm_lock)
-+#define DRM_IOCTL_UNLOCK		DRM_IOW( 0x2b, struct drm_lock)
-+#define DRM_IOCTL_FINISH		DRM_IOW( 0x2c, struct drm_lock)
-+
-+#define DRM_IOCTL_AGP_ACQUIRE		DRM_IO(  0x30)
-+#define DRM_IOCTL_AGP_RELEASE		DRM_IO(  0x31)
-+#define DRM_IOCTL_AGP_ENABLE		DRM_IOW( 0x32, struct drm_agp_mode)
-+#define DRM_IOCTL_AGP_INFO		DRM_IOR( 0x33, struct drm_agp_info)
-+#define DRM_IOCTL_AGP_ALLOC		DRM_IOWR(0x34, struct drm_agp_buffer)
-+#define DRM_IOCTL_AGP_FREE		DRM_IOW( 0x35, struct drm_agp_buffer)
-+#define DRM_IOCTL_AGP_BIND		DRM_IOW( 0x36, struct drm_agp_binding)
-+#define DRM_IOCTL_AGP_UNBIND		DRM_IOW( 0x37, struct drm_agp_binding)
-+
-+#define DRM_IOCTL_SG_ALLOC		DRM_IOWR(0x38, struct drm_scatter_gather)
-+#define DRM_IOCTL_SG_FREE		DRM_IOW( 0x39, struct drm_scatter_gather)
-+
-+#define DRM_IOCTL_WAIT_VBLANK		DRM_IOWR(0x3a, union drm_wait_vblank)
-+
-+#define DRM_IOCTL_UPDATE_DRAW           DRM_IOW(0x3f, struct drm_update_draw)
-+
-+/*@}*/
-+
-+/**
-+ * Device specific ioctls should only be in their respective headers
-+ * The device specific ioctl range is from 0x40 to 0x99.
-+ * Generic IOCTLS restart at 0xA0.
-+ *
-+ * \sa drmCommandNone(), drmCommandRead(), drmCommandWrite(), and
-+ * drmCommandReadWrite().
-+ */
-+#define DRM_COMMAND_BASE                0x40
-+#define DRM_COMMAND_END                 0xA0
-+
-+/* typedef area */
-+#if !defined(__KERNEL__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
-+typedef struct drm_clip_rect drm_clip_rect_t;
-+typedef struct drm_tex_region drm_tex_region_t;
-+typedef struct drm_hw_lock drm_hw_lock_t;
-+typedef struct drm_version drm_version_t;
-+typedef struct drm_unique drm_unique_t;
-+typedef struct drm_list drm_list_t;
-+typedef struct drm_block drm_block_t;
-+typedef struct drm_control drm_control_t;
-+typedef enum drm_map_type drm_map_type_t;
-+typedef enum drm_map_flags drm_map_flags_t;
-+typedef struct drm_ctx_priv_map drm_ctx_priv_map_t;
-+typedef struct drm_map drm_map_t;
-+typedef struct drm_client drm_client_t;
-+typedef enum drm_stat_type drm_stat_type_t;
-+typedef struct drm_stats drm_stats_t;
-+typedef enum drm_lock_flags drm_lock_flags_t;
-+typedef struct drm_lock drm_lock_t;
-+typedef enum drm_dma_flags drm_dma_flags_t;
-+typedef struct drm_buf_desc drm_buf_desc_t;
-+typedef struct drm_buf_info drm_buf_info_t;
-+typedef struct drm_buf_free drm_buf_free_t;
-+typedef struct drm_buf_pub drm_buf_pub_t;
-+typedef struct drm_buf_map drm_buf_map_t;
-+typedef struct drm_dma drm_dma_t;
-+typedef union drm_wait_vblank drm_wait_vblank_t;
-+typedef struct drm_agp_mode drm_agp_mode_t;
-+typedef enum drm_ctx_flags drm_ctx_flags_t;
-+typedef struct drm_ctx drm_ctx_t;
-+typedef struct drm_ctx_res drm_ctx_res_t;
-+typedef struct drm_draw drm_draw_t;
-+typedef struct drm_update_draw drm_update_draw_t;
-+typedef struct drm_auth drm_auth_t;
-+typedef struct drm_irq_busid drm_irq_busid_t;
-+typedef enum drm_vblank_seq_type drm_vblank_seq_type_t;
-+typedef struct drm_agp_buffer drm_agp_buffer_t;
-+typedef struct drm_agp_binding drm_agp_binding_t;
-+typedef struct drm_agp_info drm_agp_info_t;
-+typedef struct drm_scatter_gather drm_scatter_gather_t;
-+typedef struct drm_set_version drm_set_version_t;
-+
-+#endif
-+
-+#endif
-diff --git a/src/glx/x11/xf86drm.h b/src/glx/x11/xf86drm.h
-new file mode 100644
-index 0000000..fd22ccb
---- /dev/null
-+++ Mesa-7.2/src/glx/x11/xf86drm.h
-@@ -0,0 +1,661 @@
-+/**
-+ * \file xf86drm.h 
-+ * OS-independent header for DRM user-level library interface.
-+ *
-+ * \author Rickard E. (Rik) Faith <faith at valinux.com>
-+ */
-+ 
-+/*
-+ * Copyright 1999, 2000 Precision Insight, Inc., Cedar Park, Texas.
-+ * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
-+ * All Rights Reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the "Software"),
-+ * to deal in the Software without restriction, including without limitation
-+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+ * and/or sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the next
-+ * paragraph) shall be included in all copies or substantial portions of the
-+ * Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-+ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+ * DEALINGS IN THE SOFTWARE.
-+ *
-+ */
-+
-+#ifndef _XF86DRM_H_
-+#define _XF86DRM_H_
-+
-+#include <stdarg.h>
-+#include <sys/types.h>
-+#include <stdint.h>
-+#include <drm.h>
-+
-+				/* Defaults, if nothing set in xf86config */
-+#define DRM_DEV_UID	 0
-+#define DRM_DEV_GID	 0
-+/* Default /dev/dri directory permissions 0755 */
-+#define DRM_DEV_DIRMODE	 	\
-+	(S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
-+#define DRM_DEV_MODE	 (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP)
-+
-+#define DRM_DIR_NAME  "/dev/dri"
-+#define DRM_DEV_NAME  "%s/card%d"
-+#define DRM_PROC_NAME "/proc/dri/" /* For backward Linux compatibility */
-+
-+#define DRM_ERR_NO_DEVICE  (-1001)
-+#define DRM_ERR_NO_ACCESS  (-1002)
-+#define DRM_ERR_NOT_ROOT   (-1003)
-+#define DRM_ERR_INVALID    (-1004)
-+#define DRM_ERR_NO_FD      (-1005)
-+
-+#define DRM_AGP_NO_HANDLE 0
-+
-+typedef unsigned int  drmSize,     *drmSizePtr;	    /**< For mapped regions */
-+typedef void          *drmAddress, **drmAddressPtr; /**< For mapped regions */
-+
-+typedef struct _drmServerInfo {
-+  int (*debug_print)(const char *format, va_list ap);
-+  int (*load_module)(const char *name);
-+  void (*get_perms)(gid_t *, mode_t *);
-+} drmServerInfo, *drmServerInfoPtr;
-+
-+typedef struct drmHashEntry {
-+    int      fd;
-+    void     (*f)(int, void *, void *);
-+    void     *tagTable;
-+} drmHashEntry;
-+
-+extern void *drmGetHashTable(void);
-+extern drmHashEntry *drmGetEntry(int fd);
-+
-+/**
-+ * Driver version information.
-+ *
-+ * \sa drmGetVersion() and drmSetVersion().
-+ */
-+typedef struct _drmVersion {
-+    int     version_major;        /**< Major version */
-+    int     version_minor;        /**< Minor version */
-+    int     version_patchlevel;   /**< Patch level */
-+    int     name_len; 	          /**< Length of name buffer */
-+    char    *name;	          /**< Name of driver */
-+    int     date_len;             /**< Length of date buffer */
-+    char    *date;                /**< User-space buffer to hold date */
-+    int     desc_len;	          /**< Length of desc buffer */
-+    char    *desc;                /**< User-space buffer to hold desc */
-+} drmVersion, *drmVersionPtr;
-+
-+typedef struct _drmStats {
-+    unsigned long count;	     /**< Number of data */
-+    struct {
-+	unsigned long value;	     /**< Value from kernel */
-+	const char    *long_format;  /**< Suggested format for long_name */
-+	const char    *long_name;    /**< Long name for value */
-+	const char    *rate_format;  /**< Suggested format for rate_name */
-+	const char    *rate_name;    /**< Short name for value per second */
-+	int           isvalue;       /**< True if value (vs. counter) */
-+	const char    *mult_names;   /**< Multiplier names (e.g., "KGM") */
-+	int           mult;          /**< Multiplier value (e.g., 1024) */
-+	int           verbose;       /**< Suggest only in verbose output */
-+    } data[15];
-+} drmStatsT;
-+
-+
-+				/* All of these enums *MUST* match with the
-+                                   kernel implementation -- so do *NOT*
-+                                   change them!  (The drmlib implementation
-+                                   will just copy the flags instead of
-+                                   translating them.) */
-+typedef enum {
-+    DRM_FRAME_BUFFER    = 0,      /**< WC, no caching, no core dump */
-+    DRM_REGISTERS       = 1,      /**< no caching, no core dump */
-+    DRM_SHM             = 2,      /**< shared, cached */
-+    DRM_AGP             = 3,	  /**< AGP/GART */
-+    DRM_SCATTER_GATHER  = 4,	  /**< PCI scatter/gather */
-+    DRM_CONSISTENT      = 5	  /**< PCI consistent */
-+} drmMapType;
-+
-+typedef enum {
-+    DRM_RESTRICTED      = 0x0001, /**< Cannot be mapped to client-virtual */
-+    DRM_READ_ONLY       = 0x0002, /**< Read-only in client-virtual */
-+    DRM_LOCKED          = 0x0004, /**< Physical pages locked */
-+    DRM_KERNEL          = 0x0008, /**< Kernel requires access */
-+    DRM_WRITE_COMBINING = 0x0010, /**< Use write-combining, if available */
-+    DRM_CONTAINS_LOCK   = 0x0020, /**< SHM page that contains lock */
-+    DRM_REMOVABLE	= 0x0040  /**< Removable mapping */
-+} drmMapFlags;
-+
-+/**
-+ * \warning These values *MUST* match drm.h
-+ */
-+typedef enum {
-+    /** \name Flags for DMA buffer dispatch */
-+    /*@{*/
-+    DRM_DMA_BLOCK        = 0x01, /**< 
-+				  * Block until buffer dispatched.
-+				  * 
-+				  * \note the buffer may not yet have been
-+				  * processed by the hardware -- getting a
-+				  * hardware lock with the hardware quiescent
-+				  * will ensure that the buffer has been
-+				  * processed.
-+				  */
-+    DRM_DMA_WHILE_LOCKED = 0x02, /**< Dispatch while lock held */
-+    DRM_DMA_PRIORITY     = 0x04, /**< High priority dispatch */
-+    /*@}*/
-+
-+    /** \name Flags for DMA buffer request */
-+    /*@{*/
-+    DRM_DMA_WAIT         = 0x10, /**< Wait for free buffers */
-+    DRM_DMA_SMALLER_OK   = 0x20, /**< Smaller-than-requested buffers OK */
-+    DRM_DMA_LARGER_OK    = 0x40  /**< Larger-than-requested buffers OK */
-+    /*@}*/
-+} drmDMAFlags;
-+
-+typedef enum {
-+    DRM_PAGE_ALIGN       = 0x01,
-+    DRM_AGP_BUFFER       = 0x02,
-+    DRM_SG_BUFFER        = 0x04,
-+    DRM_FB_BUFFER        = 0x08,
-+    DRM_PCI_BUFFER_RO    = 0x10
-+} drmBufDescFlags;
-+
-+typedef enum {
-+    DRM_LOCK_READY      = 0x01, /**< Wait until hardware is ready for DMA */
-+    DRM_LOCK_QUIESCENT  = 0x02, /**< Wait until hardware quiescent */
-+    DRM_LOCK_FLUSH      = 0x04, /**< Flush this context's DMA queue first */
-+    DRM_LOCK_FLUSH_ALL  = 0x08, /**< Flush all DMA queues first */
-+				/* These *HALT* flags aren't supported yet
-+                                   -- they will be used to support the
-+                                   full-screen DGA-like mode. */
-+    DRM_HALT_ALL_QUEUES = 0x10, /**< Halt all current and future queues */
-+    DRM_HALT_CUR_QUEUES = 0x20  /**< Halt all current queues */
-+} drmLockFlags;
-+
-+typedef enum {
-+    DRM_CONTEXT_PRESERVED = 0x01, /**< This context is preserved and
-+				     never swapped. */
-+    DRM_CONTEXT_2DONLY    = 0x02  /**< This context is for 2D rendering only. */
-+} drm_context_tFlags, *drm_context_tFlagsPtr;
-+
-+typedef struct _drmBufDesc {
-+    int              count;	  /**< Number of buffers of this size */
-+    int              size;	  /**< Size in bytes */
-+    int              low_mark;	  /**< Low water mark */
-+    int              high_mark;	  /**< High water mark */
-+} drmBufDesc, *drmBufDescPtr;
-+
-+typedef struct _drmBufInfo {
-+    int              count;	  /**< Number of buffers described in list */
-+    drmBufDescPtr    list;	  /**< List of buffer descriptions */
-+} drmBufInfo, *drmBufInfoPtr;
-+
-+typedef struct _drmBuf {
-+    int              idx;	  /**< Index into the master buffer list */
-+    int              total;	  /**< Buffer size */
-+    int              used;	  /**< Amount of buffer in use (for DMA) */
-+    drmAddress       address;	  /**< Address */
-+} drmBuf, *drmBufPtr;
-+
-+/**
-+ * Buffer mapping information.
-+ *
-+ * Used by drmMapBufs() and drmUnmapBufs() to store information about the
-+ * mapped buffers.
-+ */
-+typedef struct _drmBufMap {
-+    int              count;	  /**< Number of buffers mapped */
-+    drmBufPtr        list;	  /**< Buffers */
-+} drmBufMap, *drmBufMapPtr;
-+
-+typedef struct _drmLock {
-+    volatile unsigned int lock;
-+    char                      padding[60];
-+    /* This is big enough for most current (and future?) architectures:
-+       DEC Alpha:              32 bytes
-+       Intel Merced:           ?
-+       Intel P5/PPro/PII/PIII: 32 bytes
-+       Intel StrongARM:        32 bytes
-+       Intel i386/i486:        16 bytes
-+       MIPS:                   32 bytes (?)
-+       Motorola 68k:           16 bytes
-+       Motorola PowerPC:       32 bytes
-+       Sun SPARC:              32 bytes
-+    */
-+} drmLock, *drmLockPtr;
-+
-+/**
-+ * Indices here refer to the offset into
-+ * list in drmBufInfo
-+ */
-+typedef struct _drmDMAReq {
-+    drm_context_t    context;  	  /**< Context handle */
-+    int           send_count;     /**< Number of buffers to send */
-+    int           *send_list;     /**< List of handles to buffers */
-+    int           *send_sizes;    /**< Lengths of data to send, in bytes */
-+    drmDMAFlags   flags;          /**< Flags */
-+    int           request_count;  /**< Number of buffers requested */
-+    int           request_size;	  /**< Desired size of buffers requested */
-+    int           *request_list;  /**< Buffer information */
-+    int           *request_sizes; /**< Minimum acceptable sizes */
-+    int           granted_count;  /**< Number of buffers granted at this size */
-+} drmDMAReq, *drmDMAReqPtr;
-+
-+typedef struct _drmRegion {
-+    drm_handle_t     handle;
-+    unsigned int  offset;
-+    drmSize       size;
-+    drmAddress    map;
-+} drmRegion, *drmRegionPtr;
-+
-+typedef struct _drmTextureRegion {
-+    unsigned char next;
-+    unsigned char prev;
-+    unsigned char in_use;
-+    unsigned char padding;	/**< Explicitly pad this out */
-+    unsigned int  age;
-+} drmTextureRegion, *drmTextureRegionPtr;
-+
-+
-+typedef enum {
-+    DRM_VBLANK_ABSOLUTE = 0x0,	/**< Wait for specific vblank sequence number */
-+    DRM_VBLANK_RELATIVE = 0x1,	/**< Wait for given number of vblanks */
-+    DRM_VBLANK_FLIP = 0x8000000,	/**< Scheduled buffer swap should flip */
-+    DRM_VBLANK_NEXTONMISS = 0x10000000,	/**< If missed, wait for next vblank */
-+    DRM_VBLANK_SECONDARY = 0x20000000,	/**< Secondary display controller */
-+    DRM_VBLANK_SIGNAL   = 0x40000000	/* Send signal instead of blocking */
-+} drmVBlankSeqType;
-+
-+typedef struct _drmVBlankReq {
-+	drmVBlankSeqType type;
-+	unsigned int sequence;
-+	unsigned long signal;
-+} drmVBlankReq, *drmVBlankReqPtr;
-+
-+typedef struct _drmVBlankReply {
-+	drmVBlankSeqType type;
-+	unsigned int sequence;
-+	long tval_sec;
-+	long tval_usec;
-+} drmVBlankReply, *drmVBlankReplyPtr;
-+
-+typedef union _drmVBlank {
-+	drmVBlankReq request;
-+	drmVBlankReply reply;
-+} drmVBlank, *drmVBlankPtr;
-+
-+typedef struct _drmSetVersion {
-+	int drm_di_major;
-+	int drm_di_minor;
-+	int drm_dd_major;
-+	int drm_dd_minor;
-+} drmSetVersion, *drmSetVersionPtr;
-+
-+#define __drm_dummy_lock(lock) (*(__volatile__ unsigned int *)lock)
-+
-+#define DRM_LOCK_HELD  0x80000000U /**< Hardware lock is held */
-+#define DRM_LOCK_CONT  0x40000000U /**< Hardware lock is contended */
-+
-+#if defined(__GNUC__) && (__GNUC__ >= 2)
-+# if defined(__i386) || defined(__AMD64__) || defined(__x86_64__) || defined(__amd64__)
-+				/* Reflect changes here to drmP.h */
-+#define DRM_CAS(lock,old,new,__ret)                                    \
-+	do {                                                           \
-+                int __dummy;	/* Can't mark eax as clobbered */      \
-+		__asm__ __volatile__(                                  \
-+			"lock ; cmpxchg %4,%1\n\t"                     \
-+                        "setnz %0"                                     \
-+			: "=d" (__ret),                                \
-+   			  "=m" (__drm_dummy_lock(lock)),               \
-+                          "=a" (__dummy)                               \
-+			: "2" (old),                                   \
-+			  "r" (new));                                  \
-+	} while (0)
-+
-+#elif defined(__alpha__)
-+
-+#define	DRM_CAS(lock, old, new, ret) 		\
-+ 	do {					\
-+ 		int old32;                      \
-+ 		int cur32;			\
-+ 		__asm__ __volatile__(		\
-+ 		"       mb\n"			\
-+ 		"       zap   %4, 0xF0, %0\n"   \
-+ 		"       ldl_l %1, %2\n"		\
-+ 		"       zap   %1, 0xF0, %1\n"   \
-+                "       cmpeq %0, %1, %1\n"	\
-+                "       beq   %1, 1f\n"		\
-+ 		"       bis   %5, %5, %1\n"	\
-+                "       stl_c %1, %2\n"		\
-+                "1:     xor   %1, 1, %1\n"	\
-+                "       stl   %1, %3"		\
-+                : "=r" (old32),                 \
-+		  "=&r" (cur32),		\
-+                   "=m" (__drm_dummy_lock(lock)),\
-+                   "=m" (ret)			\
-+ 		: "r" (old),			\
-+ 		  "r" (new));			\
-+ 	} while(0)
-+
-+#elif defined(__sparc__)
-+
-+#define DRM_CAS(lock,old,new,__ret)				\
-+do {	register unsigned int __old __asm("o0");		\
-+	register unsigned int __new __asm("o1");		\
-+	register volatile unsigned int *__lock __asm("o2");	\
-+	__old = old;						\
-+	__new = new;						\
-+	__lock = (volatile unsigned int *)lock;			\
-+	__asm__ __volatile__(					\
-+		/*"cas [%2], %3, %0"*/				\
-+		".word 0xd3e29008\n\t"				\
-+		/*"membar #StoreStore | #StoreLoad"*/		\
-+		".word 0x8143e00a"				\
-+		: "=&r" (__new)					\
-+		: "0" (__new),					\
-+		  "r" (__lock),					\
-+		  "r" (__old)					\
-+		: "memory");					\
-+	__ret = (__new != __old);				\
-+} while(0)
-+
-+#elif defined(__ia64__)
-+
-+#ifdef __INTEL_COMPILER
-+/* this currently generates bad code (missing stop bits)... */
-+#include <ia64intrin.h>
-+
-+#define DRM_CAS(lock,old,new,__ret)					      \
-+	do {								      \
-+		unsigned long __result, __old = (old) & 0xffffffff;		\
-+		__mf();							      	\
-+		__result = _InterlockedCompareExchange_acq(&__drm_dummy_lock(lock), (new), __old);\
-+		__ret = (__result) != (__old);					\
-+/*		__ret = (__sync_val_compare_and_swap(&__drm_dummy_lock(lock), \
-+						     (old), (new))	      \
-+			 != (old));					      */\
-+	} while (0)
-+
-+#else
-+#define DRM_CAS(lock,old,new,__ret)					  \
-+	do {								  \
-+		unsigned int __result, __old = (old);			  \
-+		__asm__ __volatile__(					  \
-+			"mf\n"						  \
-+			"mov ar.ccv=%2\n"				  \
-+			";;\n"						  \
-+			"cmpxchg4.acq %0=%1,%3,ar.ccv"			  \
-+			: "=r" (__result), "=m" (__drm_dummy_lock(lock))  \
-+			: "r" ((unsigned long)__old), "r" (new)			  \
-+			: "memory");					  \
-+		__ret = (__result) != (__old);				  \
-+	} while (0)
-+
-+#endif
-+
-+#elif defined(__powerpc__)
-+
-+#define DRM_CAS(lock,old,new,__ret)			\
-+	do {						\
-+		__asm__ __volatile__(			\
-+			"sync;"				\
-+			"0:    lwarx %0,0,%1;"		\
-+			"      xor. %0,%3,%0;"		\
-+			"      bne 1f;"			\
-+			"      stwcx. %2,0,%1;"		\
-+			"      bne- 0b;"		\
-+			"1:    "			\
-+			"sync;"				\
-+		: "=&r"(__ret)				\
-+		: "r"(lock), "r"(new), "r"(old)		\
-+		: "cr0", "memory");			\
-+	} while (0)
-+
-+#endif /* architecture */
-+#endif /* __GNUC__ >= 2 */
-+
-+#ifndef DRM_CAS
-+#define DRM_CAS(lock,old,new,ret) do { ret=1; } while (0) /* FAST LOCK FAILS */
-+#endif
-+
-+#if defined(__alpha__) || defined(__powerpc__)
-+#define DRM_CAS_RESULT(_result)		int _result
-+#else
-+#define DRM_CAS_RESULT(_result)		char _result
-+#endif
-+
-+#define DRM_LIGHT_LOCK(fd,lock,context)                                \
-+	do {                                                           \
-+                DRM_CAS_RESULT(__ret);                                 \
-+		DRM_CAS(lock,context,DRM_LOCK_HELD|context,__ret);     \
-+                if (__ret) drmGetLock(fd,context,0);                   \
-+        } while(0)
-+
-+				/* This one counts fast locks -- for
-+                                   benchmarking only. */
-+#define DRM_LIGHT_LOCK_COUNT(fd,lock,context,count)                    \
-+	do {                                                           \
-+                DRM_CAS_RESULT(__ret);                                 \
-+		DRM_CAS(lock,context,DRM_LOCK_HELD|context,__ret);     \
-+                if (__ret) drmGetLock(fd,context,0);                   \
-+                else       ++count;                                    \
-+        } while(0)
-+
-+#define DRM_LOCK(fd,lock,context,flags)                                \
-+	do {                                                           \
-+		if (flags) drmGetLock(fd,context,flags);               \
-+		else       DRM_LIGHT_LOCK(fd,lock,context);            \
-+	} while(0)
-+
-+#define DRM_UNLOCK(fd,lock,context)                                    \
-+	do {                                                           \
-+                DRM_CAS_RESULT(__ret);                                 \
-+		DRM_CAS(lock,DRM_LOCK_HELD|context,context,__ret);     \
-+                if (__ret) drmUnlock(fd,context);                      \
-+        } while(0)
-+
-+				/* Simple spin locks */
-+#define DRM_SPINLOCK(spin,val)                                         \
-+	do {                                                           \
-+            DRM_CAS_RESULT(__ret);                                     \
-+	    do {                                                       \
-+		DRM_CAS(spin,0,val,__ret);                             \
-+		if (__ret) while ((spin)->lock);                       \
-+	    } while (__ret);                                           \
-+	} while(0)
-+
-+#define DRM_SPINLOCK_TAKE(spin,val)                                    \
-+	do {                                                           \
-+            DRM_CAS_RESULT(__ret);                                     \
-+            int  cur;                                                  \
-+	    do {                                                       \
-+                cur = (*spin).lock;                                    \
-+		DRM_CAS(spin,cur,val,__ret);                           \
-+	    } while (__ret);                                           \
-+	} while(0)
-+
-+#define DRM_SPINLOCK_COUNT(spin,val,count,__ret)                       \
-+	do {                                                           \
-+            int  __i;                                                  \
-+            __ret = 1;                                                 \
-+            for (__i = 0; __ret && __i < count; __i++) {               \
-+		DRM_CAS(spin,0,val,__ret);                             \
-+		if (__ret) for (;__i < count && (spin)->lock; __i++);  \
-+	    }                                                          \
-+	} while(0)
-+
-+#define DRM_SPINUNLOCK(spin,val)                                       \
-+	do {                                                           \
-+            DRM_CAS_RESULT(__ret);                                     \
-+            if ((*spin).lock == val) { /* else server stole lock */    \
-+	        do {                                                   \
-+		    DRM_CAS(spin,val,0,__ret);                         \
-+	        } while (__ret);                                       \
-+            }                                                          \
-+	} while(0)
-+
-+
-+
-+/* General user-level programmer's API: unprivileged */
-+extern int           drmAvailable(void);
-+extern int           drmOpen(const char *name, const char *busid);
-+extern int           drmClose(int fd);
-+extern drmVersionPtr drmGetVersion(int fd);
-+extern drmVersionPtr drmGetLibVersion(int fd);
-+extern void          drmFreeVersion(drmVersionPtr);
-+extern int           drmGetMagic(int fd, drm_magic_t * magic);
-+extern char          *drmGetBusid(int fd);
-+extern int           drmGetInterruptFromBusID(int fd, int busnum, int devnum,
-+					      int funcnum);
-+extern int           drmGetMap(int fd, int idx, drm_handle_t *offset,
-+			       drmSize *size, drmMapType *type,
-+			       drmMapFlags *flags, drm_handle_t *handle,
-+			       int *mtrr);
-+extern int           drmGetClient(int fd, int idx, int *auth, int *pid,
-+				  int *uid, unsigned long *magic,
-+				  unsigned long *iocs);
-+extern int           drmGetStats(int fd, drmStatsT *stats);
-+extern int           drmSetInterfaceVersion(int fd, drmSetVersion *version);
-+extern int           drmCommandNone(int fd, unsigned long drmCommandIndex);
-+extern int           drmCommandRead(int fd, unsigned long drmCommandIndex,
-+                                    void *data, unsigned long size);
-+extern int           drmCommandWrite(int fd, unsigned long drmCommandIndex,
-+                                     void *data, unsigned long size);
-+extern int           drmCommandWriteRead(int fd, unsigned long drmCommandIndex,
-+                                         void *data, unsigned long size);
-+
-+/* General user-level programmer's API: X server (root) only  */
-+extern void          drmFreeBusid(const char *busid);
-+extern int           drmSetBusid(int fd, const char *busid);
-+extern int           drmAuthMagic(int fd, drm_magic_t magic);
-+extern int           drmAddMap(int fd,
-+			       drm_handle_t offset,
-+			       drmSize size,
-+			       drmMapType type,
-+			       drmMapFlags flags,
-+			       drm_handle_t * handle);
-+extern int	     drmRmMap(int fd, drm_handle_t handle);
-+extern int	     drmAddContextPrivateMapping(int fd, drm_context_t ctx_id,
-+						 drm_handle_t handle);
-+
-+extern int           drmAddBufs(int fd, int count, int size,
-+				drmBufDescFlags flags,
-+				int agp_offset);
-+extern int           drmMarkBufs(int fd, double low, double high);
-+extern int           drmCreateContext(int fd, drm_context_t * handle);
-+extern int           drmSetContextFlags(int fd, drm_context_t context,
-+					drm_context_tFlags flags);
-+extern int           drmGetContextFlags(int fd, drm_context_t context,
-+					drm_context_tFlagsPtr flags);
-+extern int           drmAddContextTag(int fd, drm_context_t context, void *tag);
-+extern int           drmDelContextTag(int fd, drm_context_t context);
-+extern void          *drmGetContextTag(int fd, drm_context_t context);
-+extern drm_context_t * drmGetReservedContextList(int fd, int *count);
-+extern void          drmFreeReservedContextList(drm_context_t *);
-+extern int           drmSwitchToContext(int fd, drm_context_t context);
-+extern int           drmDestroyContext(int fd, drm_context_t handle);
-+extern int           drmCreateDrawable(int fd, drm_drawable_t * handle);
-+extern int           drmDestroyDrawable(int fd, drm_drawable_t handle);
-+extern int           drmUpdateDrawableInfo(int fd, drm_drawable_t handle,
-+					   drm_drawable_info_type_t type,
-+					   unsigned int num, void *data);
-+extern int           drmCtlInstHandler(int fd, int irq);
-+extern int           drmCtlUninstHandler(int fd);
-+
-+/* General user-level programmer's API: authenticated client and/or X */
-+extern int           drmMap(int fd,
-+			    drm_handle_t handle,
-+			    drmSize size,
-+			    drmAddressPtr address);
-+extern int           drmUnmap(drmAddress address, drmSize size);
-+extern drmBufInfoPtr drmGetBufInfo(int fd);
-+extern drmBufMapPtr  drmMapBufs(int fd);
-+extern int           drmUnmapBufs(drmBufMapPtr bufs);
-+extern int           drmDMA(int fd, drmDMAReqPtr request);
-+extern int           drmFreeBufs(int fd, int count, int *list);
-+extern int           drmGetLock(int fd,
-+			        drm_context_t context,
-+			        drmLockFlags flags);
-+extern int           drmUnlock(int fd, drm_context_t context);
-+extern int           drmFinish(int fd, int context, drmLockFlags flags);
-+extern int	     drmGetContextPrivateMapping(int fd, drm_context_t ctx_id, 
-+						 drm_handle_t * handle);
-+
-+/* AGP/GART support: X server (root) only */
-+extern int           drmAgpAcquire(int fd);
-+extern int           drmAgpRelease(int fd);
-+extern int           drmAgpEnable(int fd, unsigned long mode);
-+extern int           drmAgpAlloc(int fd, unsigned long size,
-+				 unsigned long type, unsigned long *address,
-+				 drm_handle_t *handle);
-+extern int           drmAgpFree(int fd, drm_handle_t handle);
-+extern int 	     drmAgpBind(int fd, drm_handle_t handle,
-+				unsigned long offset);
-+extern int           drmAgpUnbind(int fd, drm_handle_t handle);
-+
-+/* AGP/GART info: authenticated client and/or X */
-+extern int           drmAgpVersionMajor(int fd);
-+extern int           drmAgpVersionMinor(int fd);
-+extern unsigned long drmAgpGetMode(int fd);
-+extern unsigned long drmAgpBase(int fd); /* Physical location */
-+extern unsigned long drmAgpSize(int fd); /* Bytes */
-+extern unsigned long drmAgpMemoryUsed(int fd);
-+extern unsigned long drmAgpMemoryAvail(int fd);
-+extern unsigned int  drmAgpVendorId(int fd);
-+extern unsigned int  drmAgpDeviceId(int fd);
-+
-+/* PCI scatter/gather support: X server (root) only */
-+extern int           drmScatterGatherAlloc(int fd, unsigned long size,
-+					   drm_handle_t *handle);
-+extern int           drmScatterGatherFree(int fd, drm_handle_t handle);
-+
-+extern int           drmWaitVBlank(int fd, drmVBlankPtr vbl);
-+
-+/* Support routines */
-+extern void          drmSetServerInfo(drmServerInfoPtr info);
-+extern int           drmError(int err, const char *label);
-+extern void          *drmMalloc(int size);
-+extern void          drmFree(void *pt);
-+
-+/* Hash table routines */
-+extern void *drmHashCreate(void);
-+extern int  drmHashDestroy(void *t);
-+extern int  drmHashLookup(void *t, unsigned long key, void **value);
-+extern int  drmHashInsert(void *t, unsigned long key, void *value);
-+extern int  drmHashDelete(void *t, unsigned long key);
-+extern int  drmHashFirst(void *t, unsigned long *key, void **value);
-+extern int  drmHashNext(void *t, unsigned long *key, void **value);
-+
-+/* PRNG routines */
-+extern void          *drmRandomCreate(unsigned long seed);
-+extern int           drmRandomDestroy(void *state);
-+extern unsigned long drmRandom(void *state);
-+extern double        drmRandomDouble(void *state);
-+
-+/* Skip list routines */
-+
-+extern void *drmSLCreate(void);
-+extern int  drmSLDestroy(void *l);
-+extern int  drmSLLookup(void *l, unsigned long key, void **value);
-+extern int  drmSLInsert(void *l, unsigned long key, void *value);
-+extern int  drmSLDelete(void *l, unsigned long key);
-+extern int  drmSLNext(void *l, unsigned long *key, void **value);
-+extern int  drmSLFirst(void *l, unsigned long *key, void **value);
-+extern void drmSLDump(void *l);
-+extern int  drmSLLookupNeighbors(void *l, unsigned long key,
-+				 unsigned long *prev_key, void **prev_value,
-+				 unsigned long *next_key, void **next_value);
-+
-+extern int drmOpenOnce(void *unused, const char *BusID, int *newlyopened);
-+extern void drmCloseOnce(int fd);
-+
-+#endif
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20110606/9a937560/attachment-0001.html>


More information about the macports-changes mailing list