[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