[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libdrm: Changes to 'upstream-experimental'



 .gitignore                        |   66 
 Makefile.am                       |    2 
 README                            |   71 
 bsd-core/Makefile                 |   65 
 bsd-core/ati_pcigart.c            |   35 
 bsd-core/drm.h                    |    1 
 bsd-core/drmP.h                   |  462 -
 bsd-core/drm_agpsupport.c         |   73 
 bsd-core/drm_auth.c               |  126 
 bsd-core/drm_bufs.c               |  318 
 bsd-core/drm_context.c            |  151 
 bsd-core/drm_dma.c                |   35 
 bsd-core/drm_drawable.c           |  154 
 bsd-core/drm_drv.c                |  320 
 bsd-core/drm_fops.c               |   17 
 bsd-core/drm_internal.h           |    1 
 bsd-core/drm_ioctl.c              |  176 
 bsd-core/drm_irq.c                |  401 -
 bsd-core/drm_lock.c               |   73 
 bsd-core/drm_memory.c             |   13 
 bsd-core/drm_pci.c                |   19 
 bsd-core/drm_sarea.h              |    1 
 bsd-core/drm_scatter.c            |   50 
 bsd-core/drm_sysctl.c             |   17 
 bsd-core/drm_vm.c                 |   11 
 bsd-core/i915_dma.c               |    1 
 bsd-core/i915_drm.h               |    1 
 bsd-core/i915_drv.c               |   15 
 bsd-core/i915_drv.h               |    1 
 bsd-core/i915_irq.c               |    1 
 bsd-core/i915_mem.c               |    1 
 bsd-core/mach64_dma.c             |    1 
 bsd-core/mach64_drm.h             |    1 
 bsd-core/mach64_drv.c             |   12 
 bsd-core/mach64_drv.h             |    1 
 bsd-core/mach64_irq.c             |    1 
 bsd-core/mach64_state.c           |    1 
 bsd-core/mga_dma.c                |    1 
 bsd-core/mga_drm.h                |    1 
 bsd-core/mga_drv.c                |   16 
 bsd-core/mga_drv.h                |    1 
 bsd-core/mga_irq.c                |    1 
 bsd-core/mga_state.c              |    1 
 bsd-core/mga_ucode.h              |    1 
 bsd-core/mga_warp.c               |    1 
 bsd-core/r128_cce.c               |    1 
 bsd-core/r128_drm.h               |    1 
 bsd-core/r128_drv.c               |   16 
 bsd-core/r128_drv.h               |    1 
 bsd-core/r128_irq.c               |    1 
 bsd-core/r128_state.c             |    1 
 bsd-core/r300_cmdbuf.c            |    1 
 bsd-core/r300_reg.h               |    1 
 bsd-core/radeon_cp.c              |    1 
 bsd-core/radeon_drm.h             |    1 
 bsd-core/radeon_drv.c             |   17 
 bsd-core/radeon_drv.h             |    1 
 bsd-core/radeon_irq.c             |    1 
 bsd-core/radeon_mem.c             |    1 
 bsd-core/radeon_state.c           |    1 
 bsd-core/savage_bci.c             |    1 
 bsd-core/savage_drm.h             |    1 
 bsd-core/savage_drv.c             |    8 
 bsd-core/savage_drv.h             |    1 
 bsd-core/savage_state.c           |    1 
 bsd-core/sis_drm.h                |    1 
 bsd-core/sis_drv.c                |   10 
 bsd-core/sis_drv.h                |    1 
 bsd-core/sis_ds.c                 |    1 
 bsd-core/sis_ds.h                 |    1 
 bsd-core/sis_mm.c                 |    1 
 bsd-core/tdfx_drv.c               |   12 
 bsd-core/tdfx_drv.h               |    1 
 bsd-core/via_3d_reg.h             |    1 
 bsd-core/via_dma.c                |    1 
 bsd-core/via_drm.h                |    1 
 bsd-core/via_drv.c                |   10 
 bsd-core/via_drv.h                |    1 
 bsd-core/via_ds.c                 |    1 
 bsd-core/via_ds.h                 |    1 
 bsd-core/via_irq.c                |    1 
 bsd-core/via_map.c                |    1 
 bsd-core/via_mm.c                 |    1 
 bsd-core/via_mm.h                 |    1 
 bsd-core/via_verifier.c           |    1 
 bsd-core/via_verifier.h           |    1 
 bsd-core/via_video.c              |    1 
 configure.ac                      |    9 
 libdrm/Makefile.am                |    5 
 libdrm/xf86drm.c                  | 1351 ---
 libdrm/xf86drm.h                  |    6 
 libdrm/xf86drmHash.c              |   20 
 libdrm/xf86drmRandom.c            |   20 
 libdrm/xf86drmSL.c                |   23 
 libdrm/xf86mm.h                   |  121 
 linux-core/.gitignore             |    1 
 linux-core/Kconfig                |   15 
 linux-core/Makefile               |  102 
 linux-core/Makefile.kernel        |   27 
 linux-core/README.drm             |   23 
 linux-core/ati_pcigart.c          |  151 
 linux-core/drm.h                  |    1 
 linux-core/drmP.h                 | 1187 +--
 linux-core/drm_agpsupport.c       |  375 
 linux-core/drm_auth.c             |   82 
 linux-core/drm_bo.c               | 3238 +++++---
 linux-core/drm_bo_lock.c          |  189 
 linux-core/drm_bo_move.c          |  630 +
 linux-core/drm_bufs.c             |  411 -
 linux-core/drm_compat.c           |  601 +
 linux-core/drm_compat.h           |  268 
 linux-core/drm_context.c          |  342 
 linux-core/drm_dma.c              |   23 
 linux-core/drm_drawable.c         |  192 
 linux-core/drm_drv.c              |  512 -
 linux-core/drm_fence.c            |  970 +-
 linux-core/drm_fops.c             |  253 
 linux-core/drm_hashtab.c          |   37 
 linux-core/drm_hashtab.h          |   25 
 linux-core/drm_internal.h         |    1 
 linux-core/drm_ioc32.c            |   92 
 linux-core/drm_ioctl.c            |  235 
 linux-core/drm_irq.c              |  504 +
 linux-core/drm_lock.c             |  221 
 linux-core/drm_memory.c           |  170 
 linux-core/drm_memory.h           |  174 
 linux-core/drm_memory_debug.c     |   75 
 linux-core/drm_memory_debug.h     |   70 
 linux-core/drm_mm.c               |  144 
 linux-core/drm_object.c           |  163 
 linux-core/drm_objects.h          |  827 ++
 linux-core/drm_os_linux.h         |   64 
 linux-core/drm_pci.c              |    8 
 linux-core/drm_proc.c             |  142 
 linux-core/drm_regman.c           |  200 
 linux-core/drm_sarea.h            |    1 
 linux-core/drm_scatter.c          |   76 
 linux-core/drm_sman.c             |   94 
 linux-core/drm_sman.h             |   50 
 linux-core/drm_stub.c             |  216 
 linux-core/drm_sysfs.c            |  234 
 linux-core/drm_ttm.c              |  639 -
 linux-core/drm_ttm.h              |  145 
 linux-core/drm_vm.c               |  745 -
 linux-core/drm_vm_nopage_compat.c |  267 
 linux-core/ffb_context.c          |   22 
 linux-core/ffb_drv.c              |    8 
 linux-core/ffb_drv.h              |    6 
 linux-core/i810_dma.c             |  483 -
 linux-core/i810_drm.h             |   30 
 linux-core/i810_drv.h             |   79 
 linux-core/i830_dma.c             | 1599 ----
 linux-core/i830_drm.h             |  342 
 linux-core/i830_drv.c             |  117 
 linux-core/i830_drv.h             |  290 
 linux-core/i830_irq.c             |  198 
 linux-core/i915_buffer.c          |  265 
 linux-core/i915_compat.c          |  215 
 linux-core/i915_dma.c             |    1 
 linux-core/i915_drm.h             |    1 
 linux-core/i915_drv.c             |  550 +
 linux-core/i915_drv.h             |    1 
 linux-core/i915_execbuf.c         |  917 ++
 linux-core/i915_fence.c           |  275 
 linux-core/i915_ioc32.c           |   90 
 linux-core/i915_irq.c             |    1 
 linux-core/i915_mem.c             |    1 
 linux-core/linux                  |    1 
 linux-core/mach64_dma.c           |    1 
 linux-core/mach64_drm.h           |    1 
 linux-core/mach64_drv.c           |    6 
 linux-core/mach64_drv.h           |    1 
 linux-core/mach64_irq.c           |    1 
 linux-core/mach64_state.c         |    1 
 linux-core/mga_dma.c              |    1 
 linux-core/mga_drm.h              |    1 
 linux-core/mga_drv.c              |   17 
 linux-core/mga_drv.h              |    1 
 linux-core/mga_ioc32.c            |   33 
 linux-core/mga_irq.c              |    1 
 linux-core/mga_state.c            |    1 
 linux-core/mga_ucode.h            |    1 
 linux-core/mga_warp.c             |    1 
 linux-core/nouveau_bo.c           |  296 
 linux-core/nouveau_dma.c          |    1 
 linux-core/nouveau_dma.h          |    1 
 linux-core/nouveau_drm.h          |    1 
 linux-core/nouveau_drv.c          |  120 
 linux-core/nouveau_drv.h          |    1 
 linux-core/nouveau_fence.c        |  119 
 linux-core/nouveau_fifo.c         |    1 
 linux-core/nouveau_ioc32.c        |   72 
 linux-core/nouveau_irq.c          |    1 
 linux-core/nouveau_mem.c          |    1 
 linux-core/nouveau_notifier.c     |    1 
 linux-core/nouveau_object.c       |    1 
 linux-core/nouveau_reg.h          |    1 
 linux-core/nouveau_sgdma.c        |  341 
 linux-core/nouveau_state.c        |    1 
 linux-core/nouveau_swmthd.c       |    1 
 linux-core/nouveau_swmthd.h       |    1 
 linux-core/nv04_fb.c              |    1 
 linux-core/nv04_fifo.c            |    1 
 linux-core/nv04_graph.c           |    1 
 linux-core/nv04_instmem.c         |    1 
 linux-core/nv04_mc.c              |    1 
 linux-core/nv04_timer.c           |    1 
 linux-core/nv10_fb.c              |    1 
 linux-core/nv10_fifo.c            |    1 
 linux-core/nv10_graph.c           |    1 
 linux-core/nv20_graph.c           |    1 
 linux-core/nv40_fb.c              |    1 
 linux-core/nv40_fifo.c            |    1 
 linux-core/nv40_graph.c           |    1 
 linux-core/nv40_mc.c              |    1 
 linux-core/nv50_fifo.c            |    1 
 linux-core/nv50_graph.c           |    1 
 linux-core/nv50_instmem.c         |    1 
 linux-core/nv50_mc.c              |    1 
 linux-core/nv_drv.h               |    1 
 linux-core/r128_cce.c             |    1 
 linux-core/r128_drm.h             |    1 
 linux-core/r128_drv.c             |    7 
 linux-core/r128_drv.h             |    1 
 linux-core/r128_ioc32.c           |    7 
 linux-core/r128_irq.c             |    1 
 linux-core/r128_state.c           |    1 
 linux-core/r300_cmdbuf.c          |    1 
 linux-core/r300_reg.h             |    1 
 linux-core/radeon_cp.c            |    1 
 linux-core/radeon_drm.h           |    1 
 linux-core/radeon_drv.c           |    9 
 linux-core/radeon_drv.h           |    1 
 linux-core/radeon_ioc32.c         |   46 
 linux-core/radeon_irq.c           |    1 
 linux-core/radeon_mem.c           |    1 
 linux-core/radeon_microcode.h     |    1 
 linux-core/radeon_state.c         |    1 
 linux-core/savage_bci.c           |    1 
 linux-core/savage_drm.h           |    1 
 linux-core/savage_drv.h           |    1 
 linux-core/savage_state.c         |    1 
 linux-core/sis_drm.h              |    1 
 linux-core/sis_drv.c              |    8 
 linux-core/sis_drv.h              |    1 
 linux-core/sis_mm.c               |  134 
 linux-core/tdfx_drv.h             |    1 
 linux-core/via_3d_reg.h           |    1 
 linux-core/via_buffer.c           |  163 
 linux-core/via_dma.c              |    1 
 linux-core/via_dmablit.c          |  270 
 linux-core/via_dmablit.h          |   86 
 linux-core/via_drm.h              |    1 
 linux-core/via_drv.c              |    1 
 linux-core/via_drv.h              |    1 
 linux-core/via_fence.c            |  169 
 linux-core/via_irq.c              |    1 
 linux-core/via_map.c              |    1 
 linux-core/via_mm.c               |   87 
 linux-core/via_verifier.c         |    1 
 linux-core/via_verifier.h         |    1 
 linux-core/via_video.c            |    1 
 linux-core/xgi_cmdlist.c          |  326 
 linux-core/xgi_cmdlist.h          |   66 
 linux-core/xgi_drm.h              |    1 
 linux-core/xgi_drv.c              |  422 +
 linux-core/xgi_drv.h              |  117 
 linux-core/xgi_fb.c               |  130 
 linux-core/xgi_fence.c            |  122 
 linux-core/xgi_ioc32.c            |  140 
 linux-core/xgi_misc.c             |  477 +
 linux-core/xgi_misc.h             |   37 
 linux-core/xgi_pcie.c             |  127 
 linux-core/xgi_regs.h             |  169 
 scripts/create_lk_drm.sh          |   26 
 scripts/drm-scripts-gentree.pl    |  254 
 shared-core/drm.h                 |  575 -
 shared-core/drm_drawable.c        |  330 
 shared-core/drm_internal.h        |   40 
 shared-core/drm_pciids.txt        |  151 
 shared-core/drm_sarea.h           |   30 
 shared-core/i915_dma.c            |  824 +-
 shared-core/i915_drm.h            |  118 
 shared-core/i915_drv.h            | 1141 ++-
 shared-core/i915_irq.c            |  953 +-
 shared-core/i915_mem.c            |  139 
 shared-core/mach64_dma.c          |  507 -
 shared-core/mach64_drm.h          |    4 
 shared-core/mach64_drv.h          |  557 -
 shared-core/mach64_irq.c          |  103 
 shared-core/mach64_state.c        |  237 
 shared-core/mga_dma.c             |  307 
 shared-core/mga_drm.h             |   22 
 shared-core/mga_drv.h             |  178 
 shared-core/mga_irq.c             |   88 
 shared-core/mga_state.c           |  261 
 shared-core/mga_warp.c            |    8 
 shared-core/nouveau_dma.c         |  172 
 shared-core/nouveau_dma.h         |   96 
 shared-core/nouveau_drm.h         |  170 
 shared-core/nouveau_drv.h         |  606 +
 shared-core/nouveau_fifo.c        |  598 +
 shared-core/nouveau_irq.c         |  568 +
 shared-core/nouveau_mem.c         |  784 ++
 shared-core/nouveau_notifier.c    |  165 
 shared-core/nouveau_object.c      | 1171 +++
 shared-core/nouveau_reg.h         |  593 +
 shared-core/nouveau_state.c       |  700 +
 shared-core/nouveau_swmthd.c      |  191 
 shared-core/nouveau_swmthd.h      |   33 
 shared-core/nv04_fb.c             |   23 
 shared-core/nv04_fifo.c           |  138 
 shared-core/nv04_graph.c          |  516 +
 shared-core/nv04_instmem.c        |  159 
 shared-core/nv04_mc.c             |   22 
 shared-core/nv04_timer.c          |   53 
 shared-core/nv10_fb.c             |   25 
 shared-core/nv10_fifo.c           |  169 
 shared-core/nv10_graph.c          |  914 ++
 shared-core/nv20_graph.c          |  909 ++
 shared-core/nv40_fb.c             |   62 
 shared-core/nv40_fifo.c           |  209 
 shared-core/nv40_graph.c          | 2195 +++++
 shared-core/nv40_mc.c             |   38 
 shared-core/nv50_fifo.c           |  339 
 shared-core/nv50_graph.c          | 2196 +++++
 shared-core/nv50_instmem.c        |  324 
 shared-core/nv50_mc.c             |   43 
 shared-core/r128_cce.c            |  183 
 shared-core/r128_drm.h            |   22 
 shared-core/r128_drv.h            |   53 
 shared-core/r128_irq.c            |   64 
 shared-core/r128_state.c          |  452 -
 shared-core/r300_cmdbuf.c         |  367 
 shared-core/r300_reg.h            | 1096 +-
 shared-core/r600_microcode.h      |14275 ++++++++++++++++++++++++++++++++++++++
 shared-core/radeon_cp.c           | 1392 +--
 shared-core/radeon_drm.h          |   41 
 shared-core/radeon_drv.h          |  408 -
 shared-core/radeon_irq.c          |  303 
 shared-core/radeon_mem.c          |  114 
 shared-core/radeon_microcode.h    | 1844 ++++
 shared-core/radeon_state.c        |  894 +-
 shared-core/savage_bci.c          |  211 
 shared-core/savage_drm.h          |    4 
 shared-core/savage_drv.h          |   32 
 shared-core/savage_state.c        |  403 -
 shared-core/sis_drv.h             |   29 
 shared-core/sis_mm.c              |  190 
 shared-core/via_3d_reg.h          |    1 
 shared-core/via_dma.c             |  454 -
 shared-core/via_drm.h             |   48 
 shared-core/via_drv.c             |   51 
 shared-core/via_drv.h             |  115 
 shared-core/via_irq.c             |  232 
 shared-core/via_map.c             |   46 
 shared-core/via_mm.c              |   49 
 shared-core/via_verifier.c        |   80 
 shared-core/via_verifier.h        |   19 
 shared-core/via_video.c           |   24 
 shared-core/xgi_drm.h             |  133 
 tests/Makefile                    |   27 
 tests/Makefile.am                 |   29 
 tests/auth.c                      |  137 
 tests/drmtest.c                   |   83 
 tests/drmtest.h                   |   37 
 tests/getclient.c                 |   60 
 tests/getstats.c                  |   51 
 tests/getversion.c                |   47 
 tests/lock.c                      |  263 
 tests/openclose.c                 |   37 
 tests/setversion.c                |   84 
 tests/ttmtest/AUTHORS             |    1 
 tests/ttmtest/ChangeLog           |   23 
 tests/ttmtest/Makefile.am         |    1 
 tests/ttmtest/configure.ac        |   33 
 tests/ttmtest/reconf              |    2 
 tests/ttmtest/src/Makefile.am     |    8 
 tests/ttmtest/src/ttmtest.c       |  430 +
 tests/ttmtest/src/xf86dri.c       |  604 +
 tests/ttmtest/src/xf86dri.h       |  116 
 tests/ttmtest/src/xf86dristr.h    |  390 +
 tests/updatedraw.c                |  148 
 383 files changed, 58487 insertions(+), 18072 deletions(-)

New commits:
commit 409d6818eba8a2e2938e0f9281c9318928ba5a35
Author: Dave Airlie <airlied@redhat.com>
Date:   Tue Jun 3 12:42:49 2008 +1000

    drm: sg alloc should write back the handle to userspace
    (cherry picked from commit d5ae19ebcf2dc6402872e0575b5786b6e8117b6f)

diff --git a/shared-core/drm.h b/shared-core/drm.h
index 0ae04b2..82a486f 100644
--- a/shared-core/drm.h
+++ b/shared-core/drm.h
@@ -701,7 +701,7 @@ struct drm_set_version {
 #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_IOW( 0x38, struct drm_scatter_gather)
+#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)

commit f892b4adf4021e82a7d4f2eb06256d6f4200ed15
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed May 28 15:31:18 2008 +1000

    remove include

diff --git a/libdrm/xf86drm.h b/libdrm/xf86drm.h
index 230f54c..fd22ccb 100644
--- a/libdrm/xf86drm.h
+++ b/libdrm/xf86drm.h
@@ -658,6 +658,4 @@ extern int  drmSLLookupNeighbors(void *l, unsigned long key,
 extern int drmOpenOnce(void *unused, const char *BusID, int *newlyopened);
 extern void drmCloseOnce(int fd);
 
-#include "xf86mm.h"
-
 #endif

commit c28c1cf756979cebb67ffd64bc29ba371f1a9c4b
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed May 28 15:08:08 2008 +1000

    libdrm: make a branch for libdrm which drops all the TTM apis.
    
    This will be the next release of libdrm as 2.3.1, Mesa needs to deal with this for 7.1.

diff --git a/libdrm/Makefile.am b/libdrm/Makefile.am
index e7e07e4..d7a2ea3 100644
--- a/libdrm/Makefile.am
+++ b/libdrm/Makefile.am
@@ -20,12 +20,13 @@
 
 libdrm_la_LTLIBRARIES = libdrm.la
 libdrm_ladir = $(libdir)
-libdrm_la_LDFLAGS = -version-number 2:3:0 -no-undefined
+libdrm_la_LDFLAGS = -version-number 2:3:1 -no-undefined
 
 AM_CFLAGS = -I$(top_srcdir)/shared-core
 libdrm_la_SOURCES = xf86drm.c xf86drmHash.c xf86drmRandom.c xf86drmSL.c
 
 libdrmincludedir = ${includedir}
-libdrminclude_HEADERS = xf86drm.h xf86mm.h
+
+libdrminclude_HEADERS = xf86drm.h
 
 EXTRA_DIST = ChangeLog TODO
diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
index 28f481f..d32fc6f 100644
--- a/libdrm/xf86drm.c
+++ b/libdrm/xf86drm.c
@@ -2337,579 +2337,6 @@ int drmCommandWriteRead(int fd, unsigned long drmCommandIndex, void *data,
     return 0;
 }
 
-
-/*
- * Valid flags are 
- * DRM_FENCE_FLAG_EMIT
- * DRM_FENCE_FLAG_SHAREABLE
- * DRM_FENCE_MASK_DRIVER
- */
-
-int drmFenceCreate(int fd, unsigned flags, int fence_class, unsigned type,
-		   drmFence *fence)
-{
-    drm_fence_arg_t arg;
-
-    memset(&arg, 0, sizeof(arg));
-    arg.flags = flags;
-    arg.type = type;
-    arg.fence_class = fence_class;
-
-    if (ioctl(fd, DRM_IOCTL_FENCE_CREATE, &arg))
-	return -errno;
-    fence->handle = arg.handle;
-    fence->fence_class = arg.fence_class;
-    fence->type = arg.type;
-    fence->flags = arg.flags;
-    fence->signaled = 0;
-    return 0;
-}
-
-/*
- * Valid flags are 
- * DRM_FENCE_FLAG_SHAREABLE
- * DRM_FENCE_MASK_DRIVER
- */
-
-int drmFenceBuffers(int fd, unsigned flags, uint32_t fence_class, drmFence *fence)
-{
-    drm_fence_arg_t arg;
-
-    memset(&arg, 0, sizeof(arg));
-    arg.flags = flags;
-    arg.fence_class = fence_class;
-
-    if (ioctl(fd, DRM_IOCTL_FENCE_BUFFERS, &arg))
-	return -errno;
-    fence->handle = arg.handle;
-    fence->fence_class = arg.fence_class;
-    fence->type = arg.type;
-    fence->flags = arg.flags;
-    fence->sequence = arg.sequence;
-    fence->signaled = 0;
-    return 0;
-}
-
-int drmFenceReference(int fd, unsigned handle, drmFence *fence)
-{
-    drm_fence_arg_t arg;
-
-    memset(&arg, 0, sizeof(arg));
-    arg.handle = handle;
-
-    if (ioctl(fd, DRM_IOCTL_FENCE_REFERENCE, &arg))
-	return -errno;
-    fence->handle = arg.handle;
-    fence->fence_class = arg.fence_class;
-    fence->type = arg.type;
-    fence->flags = arg.flags;
-    fence->signaled = arg.signaled;
-    return 0;
-}
-
-int drmFenceUnreference(int fd, const drmFence *fence)
-{
-    drm_fence_arg_t arg;
-
-    memset(&arg, 0, sizeof(arg));
-    arg.handle = fence->handle;
-
-    if (ioctl(fd, DRM_IOCTL_FENCE_UNREFERENCE, &arg))
-	return -errno;
-    return 0;
-}
-
-int drmFenceFlush(int fd, drmFence *fence, unsigned flush_type)
-{
-    drm_fence_arg_t arg;
-
-    memset(&arg, 0, sizeof(arg));
-    arg.handle = fence->handle;
-    arg.type = flush_type;
-
-    if (ioctl(fd, DRM_IOCTL_FENCE_FLUSH, &arg))
-	return -errno;
-    fence->fence_class = arg.fence_class;
-    fence->type = arg.type;
-    fence->signaled = arg.signaled;
-    return arg.error;
-}
-
-int drmFenceUpdate(int fd, drmFence *fence)
-{
-    drm_fence_arg_t arg;
-
-    memset(&arg, 0, sizeof(arg));
-    arg.handle = fence->handle;
-
-    if (ioctl(fd, DRM_IOCTL_FENCE_SIGNALED, &arg))
-	return -errno;
-    fence->fence_class = arg.fence_class;
-    fence->type = arg.type;
-    fence->signaled = arg.signaled;
-    return 0;
-}
-
-int drmFenceSignaled(int fd, drmFence *fence, unsigned fenceType, 
-		     int *signaled)
-{
-    if ((fence->flags & DRM_FENCE_FLAG_SHAREABLE) ||
-	((fenceType & fence->signaled) != fenceType)) {
-	int ret = drmFenceFlush(fd, fence, fenceType);
-	if (ret)
-	    return ret;
-    }
-
-    *signaled = ((fenceType & fence->signaled) == fenceType);
-
-    return 0;
-}
-
-/*
- * Valid flags are 
- * DRM_FENCE_FLAG_SHAREABLE
- * DRM_FENCE_MASK_DRIVER
- */
-
-
-int drmFenceEmit(int fd, unsigned flags, drmFence *fence, unsigned emit_type)
-{
-    drm_fence_arg_t arg;
-
-    memset(&arg, 0, sizeof(arg));
-    arg.fence_class = fence->fence_class;
-    arg.flags = flags;
-    arg.handle = fence->handle;
-    arg.type = emit_type;
-
-    if (ioctl(fd, DRM_IOCTL_FENCE_EMIT, &arg))
-	return -errno;
-    fence->fence_class = arg.fence_class;
-    fence->type = arg.type;
-    fence->signaled = arg.signaled;
-    fence->sequence = arg.sequence;
-    return 0;
-}
-
-/*
- * Valid flags are 
- * DRM_FENCE_FLAG_WAIT_LAZY
- * DRM_FENCE_FLAG_WAIT_IGNORE_SIGNALS
- */
-
-#define DRM_IOCTL_TIMEOUT_USEC 3000000UL
-
-static unsigned long
-drmTimeDiff(struct timeval *now, struct timeval *then)
-{
-    uint64_t val;
-
-    val = now->tv_sec - then->tv_sec;
-    val *= 1000000LL;
-    val += now->tv_usec;
-    val -= then->tv_usec;
-
-    return (unsigned long) val;
-}
-
-static int
-drmIoctlTimeout(int fd, unsigned long request, void *argp)
-{
-    int haveThen = 0;
-    struct timeval then, now;
-    int ret;
-
-    do {
-	ret = ioctl(fd, request, argp);
-	if (ret != 0 && errno == EAGAIN) {
-	    if (!haveThen) {
-		gettimeofday(&then, NULL);
-		haveThen = 1;
-	    }
-	    gettimeofday(&now, NULL);
-	}
-    } while (ret != 0 && errno == EAGAIN && 
-	     drmTimeDiff(&now, &then) < DRM_IOCTL_TIMEOUT_USEC);
-    
-    if (ret != 0)
-	return ((errno == EAGAIN) ? -EBUSY : -errno);
-
-    return 0;
-}
-    
-	
-
-
-int drmFenceWait(int fd, unsigned flags, drmFence *fence, unsigned flush_type)
-{
-    drm_fence_arg_t arg;
-    int ret;
-
-    if (flush_type == 0) {
-	flush_type = fence->type;
-    }
-
-    if (!(fence->flags & DRM_FENCE_FLAG_SHAREABLE)) {
-	if ((flush_type & fence->signaled) == flush_type) {
-	    return 0;
-	}
-    }
-
-    memset(&arg, 0, sizeof(arg));
-    arg.handle = fence->handle;
-    arg.type = flush_type;
-    arg.flags = flags;
-
-
-    ret = drmIoctlTimeout(fd, DRM_IOCTL_FENCE_WAIT, &arg);
-    if (ret)
-	return ret;
-
-    fence->fence_class = arg.fence_class;
-    fence->type = arg.type;
-    fence->signaled = arg.signaled;
-    return arg.error;
-}    
-
-static void drmBOCopyReply(const struct drm_bo_info_rep *rep, drmBO *buf)
-{
-    buf->handle = rep->handle;
-    buf->flags = rep->flags;
-    buf->size = rep->size;
-    buf->offset = rep->offset;
-    buf->mapHandle = rep->arg_handle;
-    buf->proposedFlags = rep->proposed_flags;
-    buf->start = rep->buffer_start;
-    buf->fenceFlags = rep->fence_flags;
-    buf->replyFlags = rep->rep_flags;
-    buf->pageAlignment = rep->page_alignment;
-    buf->tileInfo = rep->tile_info;
-    buf->hwTileStride = rep->hw_tile_stride;
-    buf->desiredTileStride = rep->desired_tile_stride;
-}
-
-
-
-int drmBOCreate(int fd, unsigned long size,
-		unsigned pageAlignment, void *user_buffer,
-		uint64_t flags,
-		unsigned hint, drmBO *buf)
-{
-    struct drm_bo_create_arg arg;
-    struct drm_bo_create_req *req = &arg.d.req;
-    struct drm_bo_info_rep *rep = &arg.d.rep;
-    int ret;
-
-    memset(buf, 0, sizeof(*buf));
-    memset(&arg, 0, sizeof(arg));
-    req->flags = flags;
-    req->hint = hint;
-    req->size = size;
-    req->page_alignment = pageAlignment;
-    req->buffer_start = (unsigned long) user_buffer;
-
-    buf->virtual = NULL;
-
-    ret = drmIoctlTimeout(fd, DRM_IOCTL_BO_CREATE, &arg);
-    if (ret)
-	return ret;
-
-    drmBOCopyReply(rep, buf);
-    buf->virtual = user_buffer;
-    buf->mapCount = 0;
-
-    return 0;
-}
-
-int drmBOReference(int fd, unsigned handle, drmBO *buf)
-{
-    struct drm_bo_reference_info_arg arg;
-    struct drm_bo_handle_arg *req = &arg.d.req;
-    struct drm_bo_info_rep *rep = &arg.d.rep;
-    
-    memset(&arg, 0, sizeof(arg));
-    req->handle = handle;
-    
-    if (ioctl(fd, DRM_IOCTL_BO_REFERENCE, &arg))
-	return -errno;
-
-    drmBOCopyReply(rep, buf);
-    buf->mapVirtual = NULL;
-    buf->mapCount = 0;
-    buf->virtual = NULL;
-
-    return 0;
-}
-
-int drmBOUnreference(int fd, drmBO *buf)
-{
-    struct drm_bo_handle_arg arg;
-
-    if (buf->mapVirtual && buf->mapHandle) {
-	(void) munmap(buf->mapVirtual, buf->start + buf->size);
-	buf->mapVirtual = NULL;
-	buf->virtual = NULL;
-    }
-
-    memset(&arg, 0, sizeof(arg));
-    arg.handle = buf->handle;
-
-    if (ioctl(fd, DRM_IOCTL_BO_UNREFERENCE, &arg))
-	return -errno;
-
-    buf->handle = 0;
-    return 0;
-}   
-
-
-/*
- * Flags can be  DRM_BO_FLAG_READ, DRM_BO_FLAG_WRITE or'ed together
- * Hint currently be DRM_BO_HINT_DONT_BLOCK, which makes the
- * call return an -EBUSY if it can' immediately honor the mapping request.
- */
-
-int drmBOMap(int fd, drmBO *buf, unsigned mapFlags, unsigned mapHint,
-	     void **address)
-{
-    struct drm_bo_map_wait_idle_arg arg;
-    struct drm_bo_info_req *req = &arg.d.req;
-    struct drm_bo_info_rep *rep = &arg.d.rep;
-    int ret = 0;
-
-    /*
-     * Make sure we have a virtual address of the buffer.
-     */
-
-    if (!buf->virtual) {
-	drmAddress virtual;
-	virtual = mmap(0, buf->size + buf->start, 
-		       PROT_READ | PROT_WRITE, MAP_SHARED,
-		       fd, buf->mapHandle);
-	if (virtual == MAP_FAILED) {
-	    ret = -errno;
-	}
-	if (ret) 
-	    return ret;
-	buf->mapVirtual = virtual;
-	buf->virtual = ((char *) virtual) + buf->start;
-    }
-
-    memset(&arg, 0, sizeof(arg));
-    req->handle = buf->handle;
-    req->mask = mapFlags;
-    req->hint = mapHint;
-
-    /*
-     * May hang if the buffer object is busy.
-     * This IOCTL synchronizes the buffer.
-     */
-    
-    ret = drmIoctlTimeout(fd, DRM_IOCTL_BO_MAP, &arg);
-    if (ret)
-	return ret;
-
-    drmBOCopyReply(rep, buf);	
-    buf->mapFlags = mapFlags;
-    ++buf->mapCount;
-    *address = buf->virtual;
-
-    return 0;
-}
-
-
-int drmBOUnmap(int fd, drmBO *buf)
-{
-    struct drm_bo_handle_arg arg;
-
-    memset(&arg, 0, sizeof(arg));
-    arg.handle = buf->handle;
-
-    if (ioctl(fd, DRM_IOCTL_BO_UNMAP, &arg)) {
-	return -errno;
-    }
-    buf->mapCount--;
-    return 0;
-}
-
-int drmBOSetStatus(int fd, drmBO *buf, 
-		   uint64_t flags, uint64_t mask,
-		   unsigned int hint, 
-		   unsigned int desired_tile_stride,
-		   unsigned int tile_info)
-{
-
-    struct drm_bo_map_wait_idle_arg arg;
-    struct drm_bo_info_req *req = &arg.d.req;
-    struct drm_bo_info_rep *rep = &arg.d.rep;
-    int ret = 0;
-
-    memset(&arg, 0, sizeof(arg));
-    req->mask = mask;
-    req->flags = flags;
-    req->handle = buf->handle;
-    req->hint = hint;
-    req->desired_tile_stride = desired_tile_stride;
-    req->tile_info = tile_info;
-    
-    ret = drmIoctlTimeout(fd, DRM_IOCTL_BO_SETSTATUS, &arg);
-    if (ret) 
-	    return ret;
-
-    drmBOCopyReply(rep, buf);
-    return 0;
-}
-	    
-
-int drmBOInfo(int fd, drmBO *buf)
-{
-    struct drm_bo_reference_info_arg arg;
-    struct drm_bo_handle_arg *req = &arg.d.req;
-    struct drm_bo_info_rep *rep = &arg.d.rep;
-    int ret = 0;
-
-    memset(&arg, 0, sizeof(arg));
-    req->handle = buf->handle;
-
-    ret = ioctl(fd, DRM_IOCTL_BO_INFO, &arg);
-    if (ret) 
-	return -errno;
-
-    drmBOCopyReply(rep, buf);
-    return 0;
-}
-
-int drmBOWaitIdle(int fd, drmBO *buf, unsigned hint)
-{
-    struct drm_bo_map_wait_idle_arg arg;
-    struct drm_bo_info_req *req = &arg.d.req;
-    struct drm_bo_info_rep *rep = &arg.d.rep;
-    int ret = 0;
-
-    if ((buf->flags & DRM_BO_FLAG_SHAREABLE) ||
-	(buf->replyFlags & DRM_BO_REP_BUSY)) {
-        memset(&arg, 0, sizeof(arg));
-	req->handle = buf->handle;
-	req->hint = hint;
-
-	ret = drmIoctlTimeout(fd, DRM_IOCTL_BO_WAIT_IDLE, &arg);
-	if (ret) 
-	    return ret;
-
-	drmBOCopyReply(rep, buf);
-    }
-    return 0;
-}
-
-int drmBOBusy(int fd, drmBO *buf, int *busy)
-{
-    int ret = drmBOInfo(fd, buf);
-
-    if (ret)
-	return ret;
-
-    *busy = (buf->replyFlags & DRM_BO_REP_BUSY);
-    return 0;
-}
-
-int drmMMInit(int fd, unsigned long pOffset, unsigned long pSize,
-	      unsigned memType)
-{
-    struct drm_mm_init_arg arg;
-
-    memset(&arg, 0, sizeof(arg));
-
-    arg.magic = DRM_BO_INIT_MAGIC;
-    arg.major = DRM_BO_INIT_MAJOR;
-    arg.minor = DRM_BO_INIT_MINOR;
-    arg.p_offset = pOffset;
-    arg.p_size = pSize;
-    arg.mem_type = memType;
-
-    if (ioctl(fd, DRM_IOCTL_MM_INIT, &arg))
-	return -errno;
-    return 0;	
-}
-
-int drmMMTakedown(int fd, unsigned memType)
-{
-    struct drm_mm_type_arg arg;
-
-    memset(&arg, 0, sizeof(arg));
-    arg.mem_type = memType;
-
-    if (ioctl(fd, DRM_IOCTL_MM_TAKEDOWN, &arg))
-	return -errno;
-    return 0;	
-}
-
-/*
- * If this function returns an error, and lockBM was set to 1,
- * the buffer manager is NOT locked.
- */
-
-int drmMMLock(int fd, unsigned memType, int lockBM, int ignoreNoEvict)
-{
-    struct drm_mm_type_arg arg;
-
-    memset(&arg, 0, sizeof(arg));
-    arg.mem_type = memType;
-    arg.lock_flags |= (lockBM) ? DRM_BO_LOCK_UNLOCK_BM : 0;
-    arg.lock_flags |= (ignoreNoEvict) ? DRM_BO_LOCK_IGNORE_NO_EVICT : 0;
-
-    return drmIoctlTimeout(fd, DRM_IOCTL_MM_LOCK, &arg);
-}
-
-int drmMMUnlock(int fd, unsigned memType, int unlockBM)
-{
-    struct drm_mm_type_arg arg;
-
-    memset(&arg, 0, sizeof(arg));
-    
-    arg.mem_type = memType;
-    arg.lock_flags |= (unlockBM) ? DRM_BO_LOCK_UNLOCK_BM : 0;
-
-    return drmIoctlTimeout(fd, DRM_IOCTL_MM_UNLOCK, &arg);
-}
-
-int drmMMInfo(int fd, unsigned memType, uint64_t *size)
-{
-    struct drm_mm_info_arg arg;
-
-    memset(&arg, 0, sizeof(arg));


Reply to: