OSDN Git Service

Don't use DRM_BO_FLAG_NO_MOVE in bufmgr fake. It's a ttm flag.
[android-x86/external-libdrm.git] / libdrm / xf86drm.h
index b44e428..f9dd1bf 100644 (file)
  *
  */
 
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h,v 1.26 2003/08/16 19:26:37 dawes Exp $ */
-
 #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 */
@@ -48,6 +49,7 @@
 
 #define DRM_DIR_NAME  "/dev/dri"
 #define DRM_DEV_NAME  "%s/card%d"
+#define DRM_CONTROL_DEV_NAME  "%s/controlD%d"
 #define DRM_PROC_NAME "/proc/dri/" /* For backward Linux compatibility */
 
 #define DRM_ERR_NO_DEVICE  (-1001)
 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 int drmIoctl(int fd, unsigned long request, void *arg);
+extern void *drmGetHashTable(void);
+extern drmHashEntry *drmGetEntry(int fd);
+
 /**
  * Driver version information.
  *
@@ -104,7 +122,8 @@ typedef enum {
     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_SCATTER_GATHER  = 4,     /**< PCI scatter/gather */
+    DRM_CONSISTENT      = 5      /**< PCI consistent */
 } drmMapType;
 
 typedef enum {
@@ -147,7 +166,9 @@ typedef enum {
 typedef enum {
     DRM_PAGE_ALIGN       = 0x01,
     DRM_AGP_BUFFER       = 0x02,
-    DRM_SG_BUFFER        = 0x04
+    DRM_SG_BUFFER        = 0x04,
+    DRM_FB_BUFFER        = 0x08,
+    DRM_PCI_BUFFER_RO    = 0x10
 } drmBufDescFlags;
 
 typedef enum {
@@ -250,6 +271,9 @@ typedef struct _drmTextureRegion {
 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;
 
@@ -278,14 +302,13 @@ typedef struct _drmSetVersion {
        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__)
+# if defined(__i386) || defined(__AMD64__) || defined(__x86_64__) || defined(__amd64__)
                                /* Reflect changes here to drmP.h */
 #define DRM_CAS(lock,old,new,__ret)                                    \
        do {                                                           \
@@ -317,8 +340,8 @@ typedef struct _drmSetVersion {
                 "       stl_c %1, %2\n"                \
                 "1:     xor   %1, 1, %1\n"     \
                 "       stl   %1, %3"          \
-                : "+r" (old32),                 \
-                 "+&r" (cur32),                \
+                : "=r" (old32),                 \
+                 "=&r" (cur32),                \
                    "=m" (__drm_dummy_lock(lock)),\
                    "=m" (ret)                  \
                : "r" (old),                    \
@@ -482,9 +505,12 @@ do {       register unsigned int __old __asm("o0");                \
             }                                                          \
        } while(0)
 
+
+
 /* General user-level programmer's API: unprivileged */
 extern int           drmAvailable(void);
 extern int           drmOpen(const char *name, const char *busid);
+extern int drmOpenControl(int minor);
 extern int           drmClose(int fd);
 extern drmVersionPtr drmGetVersion(int fd);
 extern drmVersionPtr drmGetLibVersion(int fd);
@@ -542,13 +568,11 @@ 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);
-extern int           drmInstallSIGIOHandler(int fd,
-                                           void (*f)(int fd,
-                                                     void *oldctx,
-                                                     void *newctx));
-extern int           drmRemoveSIGIOHandler(int fd);
 
 /* General user-level programmer's API: authenticated client and/or X */
 extern int           drmMap(int fd,
@@ -575,11 +599,11 @@ 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,
-                                unsigned long *handle);
-extern int           drmAgpFree(int fd, unsigned long handle);
-extern int          drmAgpBind(int fd, unsigned long handle,
+                                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, unsigned long handle);
+extern int           drmAgpUnbind(int fd, drm_handle_t handle);
 
 /* AGP/GART info: authenticated client and/or X */
 extern int           drmAgpVersionMajor(int fd);
@@ -594,12 +618,13 @@ extern unsigned int  drmAgpDeviceId(int fd);
 
 /* PCI scatter/gather support: X server (root) only */
 extern int           drmScatterGatherAlloc(int fd, unsigned long size,
-                                          unsigned long *handle);
-extern int           drmScatterGatherFree(int fd, unsigned long handle);
+                                          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);
@@ -633,4 +658,11 @@ 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);
+extern void drmMsg(const char *format, ...);
+
+extern int drmSetMaster(int fd);
+extern int drmDropMaster(int fd);
+
 #endif