On Thu, 2008-12-11 at 15:11 -0800, Jesse Barnes wrote:
> Initially I thought the merge of the KMS bits into libdrm would be as easy as
> merging the  modesetting-gem branch into master.  But that branch has a ton of
> stuff in it, including code for radeon and nv that its maintainers probably
> don't want merged yet.  So I reverted my initial attempt and came up with this
> patch instead.
> 
> If it looks ok, I'll go ahead and commit it.  It basically just pulls over 
> the 
> xf86drmMode.* bits along with the new ioctl definitions in shared-core.
> 
> Thanks,
> -- 
> Jesse Barnes, Intel Open Source Technology Center
> 
> 
> diff --git a/libdrm/Makefile.am b/libdrm/Makefile.am
> index a5be36e..c3619a6 100644
> --- a/libdrm/Makefile.am
> +++ b/libdrm/Makefile.am
> @@ -22,13 +22,14 @@ SUBDIRS = . intel
>  
>  libdrm_la_LTLIBRARIES = libdrm.la
>  libdrm_ladir = $(libdir)
> -libdrm_la_LDFLAGS = -version-number 2:4:0 -no-undefined
> +libdrm_la_LDFLAGS = -version-number 2:3:0 -no-undefined
>  
>  AM_CFLAGS = -I$(top_srcdir)/shared-core
>  libdrm_la_SOURCES = xf86drm.c xf86drmHash.c xf86drmRandom.c xf86drmSL.c \
> +     xf86drmMode.c libdrm_lists.h
>       libdrm_lists.h
>  
>  libdrmincludedir = ${includedir}
> -libdrminclude_HEADERS = xf86drm.h
> +libdrminclude_HEADERS = xf86drm.h xf86drmMode.h
>  
>  EXTRA_DIST = ChangeLog TODO
> diff --git a/libdrm/intel/intel_bufmgr.h b/libdrm/intel/intel_bufmgr.h
> index f134f16..e8c2e06 100644
> --- a/libdrm/intel/intel_bufmgr.h
> +++ b/libdrm/intel/intel_bufmgr.h
> @@ -66,6 +66,11 @@ struct _drm_intel_bo {
>  
>      /** Buffer manager context associated with this buffer object */
>      drm_intel_bufmgr *bufmgr;
> +
> +    /**
> +     * MM-specific handle for accessing object
> +     */
> +    int handle;
>  };
>  

Yeah, I like having this in the drm_intel_bo struct.

>  drm_intel_bo *drm_intel_bo_alloc(drm_intel_bufmgr *bufmgr, const char *name,
> diff --git a/libdrm/intel/intel_bufmgr_fake.c 
> b/libdrm/intel/intel_bufmgr_fake.c
> index 6d8ee85..0e46530 100644
> --- a/libdrm/intel/intel_bufmgr_fake.c
> +++ b/libdrm/intel/intel_bufmgr_fake.c
> @@ -833,7 +833,7 @@ drm_intel_bo_fake_alloc_static(drm_intel_bufmgr *bufmgr, 
> const char *name,
>     bo_fake->refcount = 1;
>     bo_fake->id = ++bufmgr_fake->buf_nr;
>     bo_fake->name = name;
> -   bo_fake->flags = BM_PINNED | DRM_BO_FLAG_NO_MOVE;
> +   bo_fake->flags = BM_PINNED;
>     bo_fake->is_static = 1;
>  
>     DBG("drm_bo_alloc_static: (buf %d: %s, %d kb)\n", bo_fake->id, bo_fake-
> >name,
> @@ -1070,7 +1070,6 @@ drm_intel_fake_kick_all_locked(drm_intel_bufmgr_fake 
> *bufmgr_fake)
>        if (!(bo_fake->flags & BM_NO_BACKING_STORE))
>           bo_fake->dirty = 1;
>     }
> -
>  }
>  
>  static int
> diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c
> index e681eee..f7ad757 100644
> --- a/libdrm/intel/intel_bufmgr_gem.c
> +++ b/libdrm/intel/intel_bufmgr_gem.c
> @@ -352,6 +352,7 @@ drm_intel_gem_bo_alloc(drm_intel_bufmgr *bufmgr, const 
> char *name,
>  
>       ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_CREATE, &create);
>       bo_gem->gem_handle = create.handle;
> +     bo_gem->bo.handle = bo_gem->gem_handle;
>       if (ret != 0) {
>           free(bo_gem);
>           return NULL;
> @@ -426,6 +427,14 @@ drm_intel_gem_bo_reference(drm_intel_bo *bo)
>  }
>  
>  static void
> +dri_gem_bo_reference_locked(dri_bo *bo)
> +{
> +    drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *)bo;
> +
> +    bo_gem->refcount++;
> +}
> +
> +static void
>  drm_intel_gem_bo_reference_locked(drm_intel_bo *bo)
>  {
>      drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *)bo;

This hunk looks like a dupe of the function below it.

> diff --git a/libdrm/xf86drmMode.c b/libdrm/xf86drmMode.c
> new file mode 100644
> index 0000000..a0a164d
> --- /dev/null
> +++ b/libdrm/xf86drmMode.c
> @@ -0,0 +1,684 @@
> +/*
> + * \file xf86drmMode.c
> + * Header for DRM modesetting interface.
> + *
> + * \author Jakob Bornecrantz <[email protected]>
> + *
> + * \par Acknowledgements:
> + * Feb 2007, Dave Airlie <[email protected]>
> + */
> +
> +/*
> + * Copyright (c) <year> <copyright holders>

Copyright lols

> + * 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 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 
> THE
> + * AUTHORS OR COPYRIGHT HOLDERS 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.
> + *
> + */
> +
> +/*
> + * TODO the types we are after are defined in diffrent headers on diffrent
> + * platforms find which headers to include to get uint32_t
> + */
> +#include <stdint.h>
> +#include <sys/ioctl.h>
> +#include <stdio.h>
> +
> +#include "xf86drmMode.h"
> +#include "xf86drm.h"
> +#include <drm.h>
> +#include <string.h>
> +#include <dirent.h>
> +#include <errno.h>
> +
> +#define U642VOID(x) ((void *)(unsigned long)(x))
> +#define VOID2U64(x) ((uint64_t)(unsigned long)(x))
> +
> +/*
> + * Util functions
> + */
> +
> +void* drmAllocCpy(void *array, int count, int entry_size)
> +{
> +     char *r;
> +     int i;
> +
> +     if (!count || !array || !entry_size)
> +             return 0;
> +
> +     if (!(r = drmMalloc(count*entry_size)))
> +             return 0;
> +
> +     for (i = 0; i < count; i++)
> +             memcpy(r+(entry_size*i), array+(entry_size*i), entry_size);
> +
> +     return r;
> +}
> +
> +/*
> + * A couple of free functions.
> + */
> +
> +void drmModeFreeModeInfo(struct drm_mode_modeinfo *ptr)
> +{
> +     if (!ptr)
> +             return;
> +
> +     drmFree(ptr);
> +}
> +
> +void drmModeFreeResources(drmModeResPtr ptr)
> +{
> +     if (!ptr)
> +             return;
> +
> +     drmFree(ptr);
> +
> +}
> +
> +void drmModeFreeFB(drmModeFBPtr ptr)
> +{
> +     if (!ptr)
> +             return;
> +
> +     /* we might add more frees later. */
> +     drmFree(ptr);
> +}
> +
> +void drmModeFreeCrtc(drmModeCrtcPtr ptr)
> +{
> +     if (!ptr)
> +             return;
> +
> +     drmFree(ptr);
> +
> +}
> +
> +void drmModeFreeConnector(drmModeConnectorPtr ptr)
> +{
> +     if (!ptr)
> +             return;
> +
> +     drmFree(ptr->modes);
> +     drmFree(ptr);
> +
> +}
> +
> +void drmModeFreeEncoder(drmModeEncoderPtr ptr)
> +{
> +     drmFree(ptr);
> +}
> +
> +/*
> + * ModeSetting functions.
> + */
> +
> +drmModeResPtr drmModeGetResources(int fd)
> +{
> +     struct drm_mode_card_res res;
> +     drmModeResPtr r = 0;
> +
> +     memset(&res, 0, sizeof(struct drm_mode_card_res));
> +
> +     if (ioctl(fd, DRM_IOCTL_MODE_GETRESOURCES, &res))
> +             return 0;
> +
> +     if (res.count_fbs)
> +             res.fb_id_ptr = 
> VOID2U64(drmMalloc(res.count_fbs*sizeof(uint32_t)));
> +     if (res.count_crtcs)
> +             res.crtc_id_ptr = 
> VOID2U64(drmMalloc(res.count_crtcs*sizeof(uint32_t)));
> +     if (res.count_connectors)
> +             res.connector_id_ptr = 
> VOID2U64(drmMalloc(res.count_connectors*sizeof(uint32_t)));
> +     if (res.count_encoders)
> +             res.encoder_id_ptr = 
> VOID2U64(drmMalloc(res.count_encoders*sizeof(uint32_t)));
> +
> +     if (ioctl(fd, DRM_IOCTL_MODE_GETRESOURCES, &res)) {
> +             r = NULL;
> +             goto err_allocs;
> +     }


The X Server's going to hate you for using ioctl instead of drmIoctl
(not catching EINTR) all over here.

> diff --git a/libdrm/xf86drmMode.h b/libdrm/xf86drmMode.h
> new file mode 100644
> index 0000000..b68d146
> --- /dev/null
> +++ b/libdrm/xf86drmMode.h
> @@ -0,0 +1,256 @@
> +/*
> + * \file xf86drmMode.h
> + * Header for DRM modesetting interface.
> + *
> + * \author Jakob Bornecrantz <[email protected]>
> + *
> + * \par Acknowledgements:
> + * Feb 2007, Dave Airlie <[email protected]>
> + */
> +
> +/*
> + * Copyright (c) <year> <copyright holders>

Copyrights.


> diff --git a/shared-core/drm.h b/shared-core/drm.h
> index 507f047..e01af3c 100644
> --- a/shared-core/drm.h
> +++ b/shared-core/drm.h
> @@ -642,324 +642,6 @@ struct drm_set_version {
>       int drm_dd_minor;
>  };
>  
> -
> -#define DRM_FENCE_FLAG_EMIT                0x00000001
> -#define DRM_FENCE_FLAG_SHAREABLE           0x00000002
> -/**
> - * On hardware with no interrupt events for operation completion,
> - * indicates that the kernel should sleep while waiting for any blocking
> - * operation to complete rather than spinning.
> - *
> - * Has no effect otherwise.
> - */
> -#define DRM_FENCE_FLAG_WAIT_LAZY           0x00000004
> -#define DRM_FENCE_FLAG_NO_USER             0x00000010
> -
> -/* Reserved for driver use */
> -#define DRM_FENCE_MASK_DRIVER              0xFF000000
> -
> -#define DRM_FENCE_TYPE_EXE                 0x00000001
> -
> -struct drm_fence_arg {
> -     unsigned int handle;
> -     unsigned int fence_class;
> -     unsigned int type;
> -     unsigned int flags;
> -     unsigned int signaled;
> -     unsigned int error;
> -     unsigned int sequence;
> -     unsigned int pad64;
> -     uint64_t expand_pad[2]; /*Future expansion */
> -};
> -
> -/* Buffer permissions, referring to how the GPU uses the buffers.
> - * these translate to fence types used for the buffers.
> - * Typically a texture buffer is read, A destination buffer is write and
> - *  a command (batch-) buffer is exe. Can be or-ed together.
> - */
> -
> -#define DRM_BO_FLAG_READ        (1ULL << 0)
> -#define DRM_BO_FLAG_WRITE       (1ULL << 1)
> -#define DRM_BO_FLAG_EXE         (1ULL << 2)
> -
> -/*
> - * All of the bits related to access mode
> - */
> -#define DRM_BO_MASK_ACCESS   (DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE | 
> DRM_BO_FLAG_EXE)
> -/*
> - * Status flags. Can be read to determine the actual state of a buffer.
> - * Can also be set in the buffer mask before validation.
> - */
> -
> -/*
> - * Mask: Never evict this buffer. Not even with force. This type of buffer 
> is 
> only
> - * available to root and must be manually removed before buffer manager 
> shutdown
> - * or lock.
> - * Flags: Acknowledge
> - */
> -#define DRM_BO_FLAG_NO_EVICT    (1ULL << 4)
> -
> -/*
> - * Mask: Require that the buffer is placed in mappable memory when validated.
> - *       If not set the buffer may or may not be in mappable memory when 
> validated.
> - * Flags: If set, the buffer is in mappable memory.
> - */
> -#define DRM_BO_FLAG_MAPPABLE    (1ULL << 5)
> -
> -/* Mask: The buffer should be shareable with other processes.
> - * Flags: The buffer is shareable with other processes.
> - */
> -#define DRM_BO_FLAG_SHAREABLE   (1ULL << 6)
> -
> -/* Mask: If set, place the buffer in cache-coherent memory if available.
> - *       If clear, never place the buffer in cache coherent memory if 
> validated.
> - * Flags: The buffer is currently in cache-coherent memory.
> - */
> -#define DRM_BO_FLAG_CACHED      (1ULL << 7)
> -
> -/* Mask: Make sure that every time this buffer is validated,
> - *       it ends up on the same location provided that the memory mask is 
> the 
> same.
> - *       The buffer will also not be evicted when claiming space for
> - *       other buffers. Basically a pinned buffer but it may be thrown out as
> - *       part of buffer manager shutdown or locking.
> - * Flags: Acknowledge.
> - */
> -#define DRM_BO_FLAG_NO_MOVE     (1ULL << 8)
> -
> -/* Mask: Make sure the buffer is in cached memory when mapped.  In 
> conjunction
> - * with DRM_BO_FLAG_CACHED it also allows the buffer to be bound into the 
> GART
> - * with unsnooped PTEs instead of snooped, by using chipset-specific cache
> - * flushing at bind time.  A better name might be DRM_BO_FLAG_TT_UNSNOOPED,
> - * as the eviction to local memory (TTM unbind) on map is just a side effect
> - * to prevent aggressive cache prefetch from the GPU disturbing the cache
> - * management that the DRM is doing.
> - *
> - * Flags: Acknowledge.
> - * Buffers allocated with this flag should not be used for suballocators
> - * This type may have issues on CPUs with over-aggressive caching
> - * http://marc.info/?l=linux-kernel&m=102376926732464&w=2
> - */
> -#define DRM_BO_FLAG_CACHED_MAPPED    (1ULL << 19)
> -
> -
> -/* Mask: Force DRM_BO_FLAG_CACHED flag strictly also if it is set.
> - * Flags: Acknowledge.
> - */
> -#define DRM_BO_FLAG_FORCE_CACHING  (1ULL << 13)
> -
> -/*
> - * Mask: Force DRM_BO_FLAG_MAPPABLE flag strictly also if it is clear.
> - * Flags: Acknowledge.
> - */
> -#define DRM_BO_FLAG_FORCE_MAPPABLE (1ULL << 14)
> -#define DRM_BO_FLAG_TILE           (1ULL << 15)
> -
> -/*
> - * Memory type flags that can be or'ed together in the mask, but only
> - * one appears in flags.
> - */
> -
> -/* System memory */
> -#define DRM_BO_FLAG_MEM_LOCAL  (1ULL << 24)
> -/* Translation table memory */
> -#define DRM_BO_FLAG_MEM_TT     (1ULL << 25)
> -/* Vram memory */
> -#define DRM_BO_FLAG_MEM_VRAM   (1ULL << 26)
> -/* Up to the driver to define. */
> -#define DRM_BO_FLAG_MEM_PRIV0  (1ULL << 27)
> -#define DRM_BO_FLAG_MEM_PRIV1  (1ULL << 28)
> -#define DRM_BO_FLAG_MEM_PRIV2  (1ULL << 29)
> -#define DRM_BO_FLAG_MEM_PRIV3  (1ULL << 30)
> -#define DRM_BO_FLAG_MEM_PRIV4  (1ULL << 31)
> -/* We can add more of these now with a 64-bit flag type */
> -
> -/*
> - * This is a mask covering all of the memory type flags; easier to just
> - * use a single constant than a bunch of | values. It covers
> - * DRM_BO_FLAG_MEM_LOCAL through DRM_BO_FLAG_MEM_PRIV4
> - */
> -#define DRM_BO_MASK_MEM         0x00000000FF000000ULL
> -/*
> - * This adds all of the CPU-mapping options in with the memory
> - * type to label all bits which change how the page gets mapped
> - */
> -#define DRM_BO_MASK_MEMTYPE     (DRM_BO_MASK_MEM | \
> -                              DRM_BO_FLAG_CACHED_MAPPED | \
> -                              DRM_BO_FLAG_CACHED | \
> -                              DRM_BO_FLAG_MAPPABLE)
> -                              
> -/* Driver-private flags */
> -#define DRM_BO_MASK_DRIVER      0xFFFF000000000000ULL
> -
> -/*
> - * Don't block on validate and map. Instead, return EBUSY.
> - */
> -#define DRM_BO_HINT_DONT_BLOCK  0x00000002
> -/*
> - * Don't place this buffer on the unfenced list. This means
> - * that the buffer will not end up having a fence associated
> - * with it as a result of this operation
> - */
> -#define DRM_BO_HINT_DONT_FENCE  0x00000004
> -/**
> - * On hardware with no interrupt events for operation completion,
> - * indicates that the kernel should sleep while waiting for any blocking
> - * operation to complete rather than spinning.
> - *
> - * Has no effect otherwise.
> - */
> -#define DRM_BO_HINT_WAIT_LAZY   0x00000008
> -/*
> - * The client has compute relocations refering to this buffer using the
> - * offset in the presumed_offset field. If that offset ends up matching
> - * where this buffer lands, the kernel is free to skip executing those
> - * relocations
> - */
> -#define DRM_BO_HINT_PRESUMED_OFFSET 0x00000010
> -
> -#define DRM_BO_INIT_MAGIC 0xfe769812
> -#define DRM_BO_INIT_MAJOR 1
> -#define DRM_BO_INIT_MINOR 0
> -#define DRM_BO_INIT_PATCH 0
> -
> -
> -struct drm_bo_info_req {
> -     uint64_t mask;
> -     uint64_t flags;
> -     unsigned int handle;
> -     unsigned int hint;
> -     unsigned int fence_class;
> -     unsigned int desired_tile_stride;
> -     unsigned int tile_info;
> -     unsigned int pad64;
> -     uint64_t presumed_offset;
> -};
> -
> -struct drm_bo_create_req {
> -     uint64_t flags;
> -     uint64_t size;
> -     uint64_t buffer_start;
> -     unsigned int hint;
> -     unsigned int page_alignment;
> -};
> -
> -
> -/*
> - * Reply flags
> - */
> -
> -#define DRM_BO_REP_BUSY 0x00000001
> -
> -struct drm_bo_info_rep {
> -     uint64_t flags;
> -     uint64_t proposed_flags;
> -     uint64_t size;
> -     uint64_t offset;
> -     uint64_t arg_handle;
> -     uint64_t buffer_start;
> -     unsigned int handle;
> -     unsigned int fence_flags;
> -     unsigned int rep_flags;
> -     unsigned int page_alignment;
> -     unsigned int desired_tile_stride;
> -     unsigned int hw_tile_stride;
> -     unsigned int tile_info;
> -     unsigned int pad64;
> -     uint64_t expand_pad[4]; /*Future expansion */
> -};
> -
> -struct drm_bo_arg_rep {
> -     struct drm_bo_info_rep bo_info;
> -     int ret;
> -     unsigned int pad64;
> -};
> -
> -struct drm_bo_create_arg {
> -     union {
> -             struct drm_bo_create_req req;
> -             struct drm_bo_info_rep rep;
> -     } d;
> -};
> -
> -struct drm_bo_handle_arg {
> -     unsigned int handle;
> -};
> -
> -struct drm_bo_reference_info_arg {
> -     union {
> -             struct drm_bo_handle_arg req;
> -             struct drm_bo_info_rep rep;
> -     } d;
> -};
> -
> -struct drm_bo_map_wait_idle_arg {
> -     union {
> -             struct drm_bo_info_req req;
> -             struct drm_bo_info_rep rep;
> -     } d;
> -};
> -
> -struct drm_bo_op_req {
> -     enum {
> -             drm_bo_validate,
> -             drm_bo_fence,
> -             drm_bo_ref_fence,
> -     } op;
> -     unsigned int arg_handle;
> -     struct drm_bo_info_req bo_req;
> -};
> -
> -
> -struct drm_bo_op_arg {
> -     uint64_t next;
> -     union {
> -             struct drm_bo_op_req req;
> -             struct drm_bo_arg_rep rep;
> -     } d;
> -     int handled;
> -     unsigned int pad64;
> -};
> -
> -
> -#define DRM_BO_MEM_LOCAL 0
> -#define DRM_BO_MEM_TT 1
> -#define DRM_BO_MEM_VRAM 2
> -#define DRM_BO_MEM_PRIV0 3
> -#define DRM_BO_MEM_PRIV1 4
> -#define DRM_BO_MEM_PRIV2 5
> -#define DRM_BO_MEM_PRIV3 6
> -#define DRM_BO_MEM_PRIV4 7
> -
> -#define DRM_BO_MEM_TYPES 8 /* For now. */
> -
> -#define DRM_BO_LOCK_UNLOCK_BM       (1 << 0)
> -#define DRM_BO_LOCK_IGNORE_NO_EVICT (1 << 1)
> -
> -struct drm_bo_version_arg {
> -     uint32_t major;
> -     uint32_t minor;
> -     uint32_t patchlevel;
> -};
> -
> -struct drm_mm_type_arg {
> -     unsigned int mem_type;
> -     unsigned int lock_flags;
> -};
> -
> -struct drm_mm_init_arg {
> -     unsigned int magic;
> -     unsigned int major;
> -     unsigned int minor;
> -     unsigned int mem_type;
> -     uint64_t p_offset;
> -     uint64_t p_size;
> -};
> -
> -struct drm_mm_info_arg {
> -     unsigned int mem_type;
> -     uint64_t p_size;
> -};
> -

I think some of the drivers that are still left in the external kernel
code will get angry about this.

> @@ -363,6 +363,10 @@ typedef struct drm_i915_vblank_swap {
>  #define MMIO_REGS_CL_INVOCATION_COUNT                6
>  #define MMIO_REGS_PS_INVOCATION_COUNT                7
>  #define MMIO_REGS_PS_DEPTH_COUNT             8
> +#define MMIO_REGS_DOVSTA                     9
> +#define MMIO_REGS_GAMMA                              10
> +#define MMIO_REGS_FENCE                              11
> +#define MMIO_REGS_FENCE_NEW                  12
>  
>  typedef struct drm_i915_mmio_entry {
>       unsigned int flag;
> @@ -380,58 +384,6 @@ typedef struct drm_i915_hws_addr {
>       uint64_t addr;
>  } drm_i915_hws_addr_t;
>  
> -/*
> - * Relocation header is 4 uint32_ts
> - * 0 - 32 bit reloc count
> - * 1 - 32-bit relocation type
> - * 2-3 - 64-bit user buffer handle ptr for another list of relocs.
> - */
> -#define I915_RELOC_HEADER 4
> -
> -/*
> - * type 0 relocation has 4-uint32_t stride
> - * 0 - offset into buffer
> - * 1 - delta to add in
> - * 2 - buffer handle
> - * 3 - reserved (for optimisations later).
> - */
> -/*
> - * type 1 relocation has 4-uint32_t stride.
> - * Hangs off the first item in the op list.
> - * Performed after all valiations are done.
> - * Try to group relocs into the same relocatee together for
> - * performance reasons.
> - * 0 - offset into buffer
> - * 1 - delta to add in
> - * 2 - buffer index in op list.
> - * 3 - relocatee index in op list.
> - */
> -#define I915_RELOC_TYPE_0 0
> -#define I915_RELOC0_STRIDE 4
> -#define I915_RELOC_TYPE_1 1
> -#define I915_RELOC1_STRIDE 4
> -
> -
> -struct drm_i915_op_arg {
> -     uint64_t next;
> -     uint64_t reloc_ptr;
> -     int handled;
> -     unsigned int pad64;
> -     union {
> -             struct drm_bo_op_req req;
> -             struct drm_bo_arg_rep rep;
> -     } d;
> -
> -};
> -
> -struct drm_i915_execbuffer {
> -     uint64_t ops_list;
> -     uint32_t num_buffers;
> -     struct drm_i915_batchbuffer batch;
> -     drm_context_t context; /* for lockless use in the future */
> -     struct drm_fence_arg fence_arg;
> -};
> -
>  struct drm_i915_gem_init {
>       /**
>        * Beginning offset in the GTT to be managed by the DRM memory

Looks like it shouldn't be part of this patchset.


> --- /dev/null
> +++ b/tests/modedemo/demo.c
> @@ -0,0 +1,634 @@
> +/*
> + * Some defines to define the behavior of the program
> + */

This code should have a license on it if it's in our tree.

> --- /dev/null
> +++ b/tests/modefb/demo.c
> @@ -0,0 +1,230 @@
> +#include <stdio.h>
> +#include <unistd.h>
> +#include <stdlib.h>
> +#include <errno.h>
> +#include <fcntl.h>
> +#include <string.h>
> +#include "linux/fb.h"
> +#include <sys/mman.h>
> +#include "sys/ioctl.h"
> +#include "xf86drm.h"
> +#include "xf86drmMode.h"

Same.

> --- /dev/null
> +++ b/tests/modehotplug/demo.c
> @@ -0,0 +1,157 @@
> +
> +#include <assert.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <stdint.h>
> +#include <unistd.h>
> +#include <string.h>
> +
> +#include "xf86drm.h"
> +#include "xf86drmMode.h"

Same.

> diff --git a/tests/modeprint/modetest.c b/tests/modeprint/modetest.c
> new file mode 100644
> index 0000000..cefa526
> --- /dev/null
> +++ b/tests/modeprint/modetest.c
> @@ -0,0 +1,371 @@
> +
> +#include <assert.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <stdint.h>
> +#include <unistd.h>
> +#include <string.h>
> +
> +#include "xf86drm.h"
> +#include "xf86drmMode.h"

Same.

(Oh, and a nice doxygen about what the test app does would be awesome)

-- 
Eric Anholt
[email protected]                         [email protected]


Attachment: signature.asc
Description: This is a digitally signed message part

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
--
_______________________________________________
Dri-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to