diff options
Diffstat (limited to 'libdrm')
| -rw-r--r-- | libdrm/xf86drm.c | 311 | ||||
| -rw-r--r-- | libdrm/xf86drm.h | 1 | ||||
| -rw-r--r-- | libdrm/xf86drmHash.c | 1 | ||||
| -rw-r--r-- | libdrm/xf86drmRandom.c | 1 | ||||
| -rw-r--r-- | libdrm/xf86drmSL.c | 1 | ||||
| -rw-r--r-- | libdrm/xf86mm.h | 23 | 
6 files changed, 146 insertions, 192 deletions
| diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c index 93185512..8cee4fbc 100644 --- a/libdrm/xf86drm.c +++ b/libdrm/xf86drm.c @@ -49,7 +49,6 @@  #include <sys/mman.h>  #include <sys/time.h>  #include <stdarg.h> -#include "drm.h"  /* Not all systems have MAP_FAILED defined */  #ifndef MAP_FAILED @@ -2355,8 +2354,7 @@ int drmFenceCreate(int fd, unsigned flags, int class, unsigned type,      arg.flags = flags;      arg.type = type;      arg.class = class; -    arg.op = drm_fence_create; -    if (ioctl(fd, DRM_IOCTL_FENCE, &arg)) +    if (ioctl(fd, DRM_IOCTL_FENCE_CREATE, &arg))  	return -errno;      fence->handle = arg.handle;      fence->class = arg.class; @@ -2378,8 +2376,8 @@ int drmFenceBuffers(int fd, unsigned flags, drmFence *fence)      memset(&arg, 0, sizeof(arg));      arg.flags = flags; -    arg.op = drm_fence_buffers; -    if (ioctl(fd, DRM_IOCTL_FENCE, &arg)) + +    if (ioctl(fd, DRM_IOCTL_FENCE_BUFFERS, &arg))  	return -errno;      fence->handle = arg.handle;      fence->class = arg.class; @@ -2395,8 +2393,8 @@ int drmFenceDestroy(int fd, const drmFence *fence)      memset(&arg, 0, sizeof(arg));      arg.handle = fence->handle; -    arg.op = drm_fence_destroy; -    if (ioctl(fd, DRM_IOCTL_FENCE, &arg)) + +    if (ioctl(fd, DRM_IOCTL_FENCE_DESTROY, &arg))  	return -errno;      return 0;  } @@ -2407,8 +2405,8 @@ int drmFenceReference(int fd, unsigned handle, drmFence *fence)      memset(&arg, 0, sizeof(arg));      arg.handle = handle; -    arg.op = drm_fence_reference; -    if (ioctl(fd, DRM_IOCTL_FENCE, &arg)) + +    if (ioctl(fd, DRM_IOCTL_FENCE_REFERENCE, &arg))  	return -errno;      fence->handle = arg.handle;      fence->class = arg.class; @@ -2424,8 +2422,8 @@ int drmFenceUnreference(int fd, const drmFence *fence)      memset(&arg, 0, sizeof(arg));      arg.handle = fence->handle; -    arg.op = drm_fence_unreference; -    if (ioctl(fd, DRM_IOCTL_FENCE, &arg)) + +    if (ioctl(fd, DRM_IOCTL_FENCE_UNREFERENCE, &arg))  	return -errno;      return 0;  } @@ -2437,8 +2435,8 @@ int drmFenceFlush(int fd, drmFence *fence, unsigned flush_type)      memset(&arg, 0, sizeof(arg));      arg.handle = fence->handle;      arg.type = flush_type; -    arg.op = drm_fence_flush; -    if (ioctl(fd, DRM_IOCTL_FENCE, &arg)) + +    if (ioctl(fd, DRM_IOCTL_FENCE_FLUSH, &arg))  	return -errno;      fence->class = arg.class;      fence->type = arg.type; @@ -2452,8 +2450,8 @@ int drmFenceUpdate(int fd, drmFence *fence)      memset(&arg, 0, sizeof(arg));      arg.handle = fence->handle; -    arg.op = drm_fence_signaled; -    if (ioctl(fd, DRM_IOCTL_FENCE, &arg)) + +    if (ioctl(fd, DRM_IOCTL_FENCE_SIGNALED, &arg))  	return -errno;      fence->class = arg.class;      fence->type = arg.type; @@ -2492,8 +2490,8 @@ int drmFenceEmit(int fd, unsigned flags, drmFence *fence, unsigned emit_type)      arg.flags = flags;      arg.handle = fence->handle;      arg.type = emit_type; -    arg.op = drm_fence_emit; -    if (ioctl(fd, DRM_IOCTL_FENCE, &arg)) + +    if (ioctl(fd, DRM_IOCTL_FENCE_EMIT, &arg))  	return -errno;      fence->class = arg.class;      fence->type = arg.type; @@ -2526,9 +2524,9 @@ int drmFenceWait(int fd, unsigned flags, drmFence *fence, unsigned flush_type)      arg.handle = fence->handle;      arg.type = flush_type;      arg.flags = flags; -    arg.op = drm_fence_wait; +      do { -	ret = ioctl(fd, DRM_IOCTL_FENCE, &arg); +	ret = ioctl(fd, DRM_IOCTL_FENCE_WAIT, &arg);      } while (ret != 0 && errno == EAGAIN);      if (ret) @@ -2678,7 +2676,7 @@ int drmBOCreateList(int numTarget, drmBOList *list)      return drmAdjustListNodes(list);  } -static void drmBOCopyReply(const drm_bo_arg_reply_t *rep, drmBO *buf) +static void drmBOCopyReply(const struct drm_bo_info_rep *rep, drmBO *buf)  {      buf->handle = rep->handle;      buf->flags = rep->flags; @@ -2690,16 +2688,21 @@ static void drmBOCopyReply(const drm_bo_arg_reply_t *rep, drmBO *buf)      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 start, unsigned long size,  -		unsigned pageAlignment, void *user_buffer, drm_bo_type_t type,  -		unsigned mask, + + +int drmBOCreate(int fd, unsigned long start, unsigned long size, +		unsigned pageAlignment, void *user_buffer, drm_bo_type_t type, +		uint64_t mask,  		unsigned hint, drmBO *buf)  { -    drm_bo_arg_t arg; -    drm_bo_arg_request_t *req = &arg.d.req; -    drm_bo_arg_reply_t *rep = &arg.d.rep; +    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)); @@ -2726,21 +2729,13 @@ int drmBOCreate(int fd, unsigned long start, unsigned long size,      default:  	return -EINVAL;      } -    req->op = drm_bo_create;      do { -	ret = ioctl(fd, DRM_IOCTL_BUFOBJ, &arg); +	ret = ioctl(fd, DRM_IOCTL_BO_CREATE, &arg);      } while (ret != 0 && errno == EAGAIN);      if (ret)  	return -errno; -    if (!arg.handled) { -	return -EFAULT; -    } -    if (rep->ret) { -        fprintf(stderr, "Error %d\n", rep->ret); -	return rep->ret; -    }      drmBOCopyReply(rep, buf);      buf->mapVirtual = NULL; @@ -2751,9 +2746,7 @@ int drmBOCreate(int fd, unsigned long start, unsigned long size,  int drmBODestroy(int fd, drmBO *buf)  { -    drm_bo_arg_t arg; -    drm_bo_arg_request_t *req = &arg.d.req; -    drm_bo_arg_reply_t *rep = &arg.d.rep; +    struct drm_bo_handle_arg arg;      if (buf->mapVirtual && (buf->type != drm_bo_type_fake)) {  	(void) drmUnmap(buf->mapVirtual, buf->start + buf->size); @@ -2762,40 +2755,26 @@ int drmBODestroy(int fd, drmBO *buf)      }      memset(&arg, 0, sizeof(arg)); -    req->handle = buf->handle; -    req->op = drm_bo_destroy; +    arg.handle = buf->handle; -    if (ioctl(fd, DRM_IOCTL_BUFOBJ, &arg)) +    if (ioctl(fd, DRM_IOCTL_BO_DESTROY, &arg))  	return -errno; -    if (!arg.handled) { -	return -EFAULT; -    } -    if (rep->ret) { -	return rep->ret; -    }      buf->handle = 0;      return 0;  } -  +  int drmBOReference(int fd, unsigned handle, drmBO *buf)  { -    drm_bo_arg_t arg; -    drm_bo_arg_request_t *req = &arg.d.req; -    drm_bo_arg_reply_t *rep = &arg.d.rep; +    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; -    req->op = drm_bo_reference; -    if (ioctl(fd, DRM_IOCTL_BUFOBJ, &arg)) +    if (ioctl(fd, DRM_IOCTL_BO_REFERENCE, &arg))  	return -errno; -    if (!arg.handled) { -	return -EFAULT; -    } -    if (rep->ret) { -	return rep->ret; -    }      drmBOCopyReply(rep, buf);      buf->type = drm_bo_type_dc; @@ -2808,9 +2787,7 @@ int drmBOReference(int fd, unsigned handle, drmBO *buf)  int drmBOUnReference(int fd, drmBO *buf)  { -    drm_bo_arg_t arg; -    drm_bo_arg_request_t *req = &arg.d.req; -    drm_bo_arg_reply_t *rep = &arg.d.rep; +    struct drm_bo_handle_arg arg;      if (buf->mapVirtual && (buf->type != drm_bo_type_fake)) {  	(void) munmap(buf->mapVirtual, buf->start + buf->size); @@ -2819,22 +2796,16 @@ int drmBOUnReference(int fd, drmBO *buf)      }      memset(&arg, 0, sizeof(arg)); -    req->handle = buf->handle; -    req->op = drm_bo_unreference; +    arg.handle = buf->handle; -    if (ioctl(fd, DRM_IOCTL_BUFOBJ, &arg)) +    if (ioctl(fd, DRM_IOCTL_BO_UNREFERENCE, &arg))  	return -errno; -    if (!arg.handled) { -	return -EFAULT; -    } -    if (rep->ret) { -	return rep->ret; -    }      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 @@ -2844,9 +2815,9 @@ int drmBOUnReference(int fd, drmBO *buf)  int drmBOMap(int fd, drmBO *buf, unsigned mapFlags, unsigned mapHint,  	     void **address)  { -    drm_bo_arg_t arg; -    drm_bo_arg_request_t *req = &arg.d.req; -    drm_bo_arg_reply_t *rep = &arg.d.rep; +    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;      /* @@ -2871,7 +2842,6 @@ int drmBOMap(int fd, drmBO *buf, unsigned mapFlags, unsigned mapHint,      req->handle = buf->handle;      req->mask = mapFlags;      req->hint = mapHint; -    req->op = drm_bo_map;      /*       * May hang if the buffer object is busy. @@ -2879,15 +2849,11 @@ int drmBOMap(int fd, drmBO *buf, unsigned mapFlags, unsigned mapHint,       */      do { -	ret = ioctl(fd, DRM_IOCTL_BUFOBJ, &arg); +	ret = ioctl(fd, DRM_IOCTL_BO_MAP, &arg);      } while (ret != 0 && errno == EAGAIN);      if (ret)   	return -errno; -    if (!arg.handled)  -	return -EFAULT; -    if (rep->ret) -	return rep->ret;      drmBOCopyReply(rep, buf);	      buf->mapFlags = mapFlags; @@ -2897,44 +2863,39 @@ int drmBOMap(int fd, drmBO *buf, unsigned mapFlags, unsigned mapHint,      return 0;  } +  int drmBOUnmap(int fd, drmBO *buf)  { -    drm_bo_arg_t arg; -    drm_bo_arg_request_t *req = &arg.d.req; -    drm_bo_arg_reply_t *rep = &arg.d.rep; +    struct drm_bo_handle_arg arg;      memset(&arg, 0, sizeof(arg)); -    req->handle = buf->handle; -    req->op = drm_bo_unmap; +    arg.handle = buf->handle; -    if (ioctl(fd, DRM_IOCTL_BUFOBJ, &arg)) { +    if (ioctl(fd, DRM_IOCTL_BO_UNMAP, &arg)) {  	return -errno;      } -    if (!arg.handled)  -        return -EFAULT; -    if (rep->ret) -	return rep->ret; -      return 0;  } -     -int drmBOValidate(int fd, drmBO *buf, unsigned flags, unsigned mask,  + +int drmBOValidate(int fd, drmBO *buf, +		  uint64_t flags, uint64_t mask,  		  unsigned hint)  { -    drm_bo_arg_t arg; -    drm_bo_arg_request_t *req = &arg.d.req; -    drm_bo_arg_reply_t *rep = &arg.d.rep; +    struct drm_bo_op_arg arg; +    struct drm_bo_op_req *req = &arg.d.req; +    struct drm_bo_arg_rep *rep = &arg.d.rep;      int ret = 0;      memset(&arg, 0, sizeof(arg)); -    req->handle = buf->handle; -    req->mask = flags; -    req->hint = hint; -    req->arg_handle = mask; /* Encode mask in the arg_handle field :/ */ +    req->bo_req.handle = buf->handle; +    req->bo_req.flags = flags; +    req->bo_req.mask = mask; +    req->bo_req.hint = hint; +    req->bo_req.fence_class = 0; /* Backwards compatibility. */      req->op = drm_bo_validate;      do{ -	ret = ioctl(fd, DRM_IOCTL_BUFOBJ, &arg); +	ret = ioctl(fd, DRM_IOCTL_BO_OP, &arg);      } while (ret && errno == EAGAIN);      if (ret)  @@ -2944,26 +2905,25 @@ int drmBOValidate(int fd, drmBO *buf, unsigned flags, unsigned mask,      if (rep->ret)  	return rep->ret; -    drmBOCopyReply(rep, buf); +    drmBOCopyReply(&rep->bo_info, buf);      return 0;  }  int drmBOFence(int fd, drmBO *buf, unsigned flags, unsigned fenceHandle)  { -    drm_bo_arg_t arg; -    drm_bo_arg_request_t *req = &arg.d.req; -    drm_bo_arg_reply_t *rep = &arg.d.rep; +    struct drm_bo_op_arg arg; +    struct drm_bo_op_req *req = &arg.d.req; +    struct drm_bo_arg_rep *rep = &arg.d.rep;      int ret = 0;      memset(&arg, 0, sizeof(arg)); -    req->handle = buf->handle; -    req->mask = flags; +    req->bo_req.handle = buf->handle; +    req->bo_req.flags = flags;      req->arg_handle = fenceHandle;      req->op = drm_bo_fence; -    ret = ioctl(fd, DRM_IOCTL_BUFOBJ, &arg); - +    ret = ioctl(fd, DRM_IOCTL_BO_OP, &arg);      if (ret)   	return -errno;      if (!arg.handled) @@ -2975,51 +2935,42 @@ int drmBOFence(int fd, drmBO *buf, unsigned flags, unsigned fenceHandle)  int drmBOInfo(int fd, drmBO *buf)  { -    drm_bo_arg_t arg; -    drm_bo_arg_request_t *req = &arg.d.req; -    drm_bo_arg_reply_t *rep = &arg.d.rep; +    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; -    req->op = drm_bo_info; - -    ret = ioctl(fd, DRM_IOCTL_BUFOBJ, &arg); +    ret = ioctl(fd, DRM_IOCTL_BO_INFO, &arg);      if (ret)   	return -errno; -    if (!arg.handled) -	return -EFAULT; -    if (rep->ret) -	return rep->ret; +      drmBOCopyReply(rep, buf);      return 0;  }  int drmBOWaitIdle(int fd, drmBO *buf, unsigned hint)  { -    drm_bo_arg_t arg; -    drm_bo_arg_request_t *req = &arg.d.req; -    drm_bo_arg_reply_t *rep = &arg.d.rep; +    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->op = drm_bo_wait_idle;  	req->hint = hint;  	do { -	    ret = ioctl(fd, DRM_IOCTL_BUFOBJ, &arg); +	    ret = ioctl(fd, DRM_IOCTL_BO_WAIT_IDLE, &arg);  	} while (ret && errno == EAGAIN);  	if (ret)   	    return -errno; -	if (!arg.handled) -	    return -EFAULT; -	if (rep->ret) -	    return rep->ret; +  	drmBOCopyReply(rep, buf);      }      return 0; @@ -3041,7 +2992,6 @@ int drmBOBusy(int fd, drmBO *buf, int *busy)      }  } -      int drmAddValidateItem(drmBOList *list, drmBO *buf, unsigned flags,   		       unsigned mask,  		       int *newItem) @@ -3103,74 +3053,74 @@ int drmBOValidateList(int fd, drmBOList *list)  {      drmBONode *node;      drmMMListHead *l; -    drm_bo_arg_t *arg, *first; -    drm_bo_arg_request_t *req; -    drm_bo_arg_reply_t *rep; -    drm_u64_t *prevNext = NULL; +    struct drm_bo_op_arg *arg, *first; +    struct drm_bo_op_req *req; +    struct drm_bo_arg_rep *rep; +    uint64_t *prevNext = NULL;      drmBO *buf;      int ret;      first = NULL;      for (l = list->list.next; l != &list->list; l = l->next) { -	node = DRMLISTENTRY(drmBONode, l, head); +        node = DRMLISTENTRY(drmBONode, l, head); -	arg = &node->bo_arg; -	req = &arg->d.req; +        arg = &node->bo_arg; +        req = &arg->d.req; -	if (!first) -	    first = arg; +        if (!first) +            first = arg;  	if (prevNext)  	    *prevNext = (unsigned long) arg;  	memset(arg, 0, sizeof(*arg));  	prevNext = &arg->next; -	req->handle = node->buf->handle; +	req->bo_req.handle = node->buf->handle;  	req->op = drm_bo_validate; -	req->mask = node->arg0; -	req->hint = 0; -	req->arg_handle = node->arg1; +	req->bo_req.flags = node->arg0; +	req->bo_req.hint = 0; +	req->bo_req.mask = node->arg1; +	req->bo_req.fence_class = 0; /* Backwards compat. */      } -   -    if (!first)  + +    if (!first)  	return 0; -    do { -	ret = ioctl(fd, DRM_IOCTL_BUFOBJ, first); +    do{ +	ret = ioctl(fd, DRM_IOCTL_BO_OP, first);      } while (ret && errno == EAGAIN);      if (ret)  	return -errno; -   +      for (l = list->list.next; l != &list->list; l = l->next) {  	node = DRMLISTENTRY(drmBONode, l, head);  	arg = &node->bo_arg;  	rep = &arg->d.rep; - +        	if (!arg->handled) {  	    drmMsg("Unhandled request\n");  	    return -EFAULT;  	}  	if (rep->ret)  	    return rep->ret; - +	  	buf = node->buf; -	drmBOCopyReply(rep, buf); +	drmBOCopyReply(&rep->bo_info, buf);      } - +          return 0;  } -  int drmBOFenceList(int fd, drmBOList *list, unsigned fenceHandle)  {      drmBONode *node;      drmMMListHead *l; -    drm_bo_arg_t *arg, *first; -    drm_bo_arg_request_t *req; -    drm_bo_arg_reply_t *rep; -    drm_u64_t *prevNext = NULL; +    struct drm_bo_op_arg *arg, *first; +    struct drm_bo_op_req *req; +    struct drm_bo_arg_rep *rep; +    uint64_t *prevNext = NULL;      drmBO *buf;      unsigned fence_flags;      int ret; @@ -3178,8 +3128,8 @@ int drmBOFenceList(int fd, drmBOList *list, unsigned fenceHandle)      first = NULL;      for (l = list->list.next; l != &list->list; l = l->next) { -	node = DRMLISTENTRY(drmBONode, l, head); - +        node = DRMLISTENTRY(drmBONode, l, head); +	  	arg = &node->bo_arg;  	req = &arg->d.req; @@ -3191,29 +3141,31 @@ int drmBOFenceList(int fd, drmBOList *list, unsigned fenceHandle)  	memset(arg, 0, sizeof(*arg));  	prevNext = &arg->next; -	req->handle = node->buf->handle; +	req->bo_req.handle = node->buf->handle;  	req->op = drm_bo_fence; -	req->mask = node->arg0; +	req->bo_req.mask = node->arg0;  	req->arg_handle = fenceHandle;      }      if (!first)   	return 0; -    ret = ioctl(fd, DRM_IOCTL_BUFOBJ, first); +    ret = ioctl(fd, DRM_IOCTL_BO_OP, first);      if (ret)  	return -errno;      for (l = list->list.next; l != &list->list; l = l->next) {  	node = DRMLISTENTRY(drmBONode, l, head); +  	arg = &node->bo_arg;  	rep = &arg->d.rep; +        	if (!arg->handled)  	    return -EFAULT;  	if (rep->ret)  	    return rep->ret; -	drmBOCopyReply(rep, node->buf); +	drmBOCopyReply(&rep->bo_info, node->buf);      }      return 0; @@ -3222,13 +3174,16 @@ int drmBOFenceList(int fd, drmBOList *list, unsigned fenceHandle)  int drmMMInit(int fd, unsigned long pOffset, unsigned long pSize,  	      unsigned memType)  { -    drm_mm_init_arg_t arg; +    struct drm_mm_init_arg arg;      memset(&arg, 0, sizeof(arg)); -    arg.req.op = mm_init; -    arg.req.p_offset = pOffset; -    arg.req.p_size = pSize; -    arg.req.mem_type = memType; + +    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; @@ -3237,28 +3192,26 @@ int drmMMInit(int fd, unsigned long pOffset, unsigned long pSize,  int drmMMTakedown(int fd, unsigned memType)  { -    drm_mm_init_arg_t arg; +    struct drm_mm_type_arg arg;      memset(&arg, 0, sizeof(arg)); -    arg.req.op = mm_takedown; -    arg.req.mem_type = memType; +    arg.mem_type = memType; -    if (ioctl(fd, DRM_IOCTL_MM_INIT, &arg)) +    if (ioctl(fd, DRM_IOCTL_MM_TAKEDOWN, &arg))  	return -errno;      return 0;	  }  int drmMMLock(int fd, unsigned memType)  { -    drm_mm_init_arg_t arg; +    struct drm_mm_type_arg arg;      int ret;      memset(&arg, 0, sizeof(arg)); -    arg.req.op = mm_lock; -    arg.req.mem_type = memType; +    arg.mem_type = memType;      do{ -	ret = ioctl(fd, DRM_IOCTL_MM_INIT, &arg); +        ret = ioctl(fd, DRM_IOCTL_MM_LOCK, &arg);      } while (ret && errno == EAGAIN);      return (ret) ? -errno : 0; @@ -3266,15 +3219,15 @@ int drmMMLock(int fd, unsigned memType)  int drmMMUnlock(int fd, unsigned memType)  { -    drm_mm_init_arg_t arg; +    struct drm_mm_type_arg arg;      int ret;      memset(&arg, 0, sizeof(arg)); -    arg.req.op = mm_unlock; -    arg.req.mem_type = memType; +     +    arg.mem_type = memType;      do{ -	ret = ioctl(fd, DRM_IOCTL_MM_INIT, &arg); +	ret = ioctl(fd, DRM_IOCTL_MM_UNLOCK, &arg);      } while (ret && errno == EAGAIN);      return (ret) ? -errno : 0; diff --git a/libdrm/xf86drm.h b/libdrm/xf86drm.h index d4260cc9..230f54ce 100644 --- a/libdrm/xf86drm.h +++ b/libdrm/xf86drm.h @@ -36,6 +36,7 @@  #include <stdarg.h>  #include <sys/types.h> +#include <stdint.h>  #include <drm.h>  				/* Defaults, if nothing set in xf86config */ diff --git a/libdrm/xf86drmHash.c b/libdrm/xf86drmHash.c index d1ade063..82cbc2a5 100644 --- a/libdrm/xf86drmHash.c +++ b/libdrm/xf86drmHash.c @@ -74,7 +74,6 @@  #define HASH_MAIN 0  #if !HASH_MAIN -# include "drm.h"  # include "xf86drm.h"  #endif diff --git a/libdrm/xf86drmRandom.c b/libdrm/xf86drmRandom.c index 61ffb078..ecab9e2d 100644 --- a/libdrm/xf86drmRandom.c +++ b/libdrm/xf86drmRandom.c @@ -77,7 +77,6 @@  #define RANDOM_MAIN 0  #if !RANDOM_MAIN -# include "drm.h"  # include "xf86drm.h"  #endif diff --git a/libdrm/xf86drmSL.c b/libdrm/xf86drmSL.c index ce60648d..58aefac7 100644 --- a/libdrm/xf86drmSL.c +++ b/libdrm/xf86drmSL.c @@ -44,7 +44,6 @@  #define SL_MAIN 0  #if !SL_MAIN -# include "drm.h"  # include "xf86drm.h"  #else  # include <sys/time.h> diff --git a/libdrm/xf86mm.h b/libdrm/xf86mm.h index b3822d4d..d1e0b28f 100644 --- a/libdrm/xf86mm.h +++ b/libdrm/xf86mm.h @@ -107,9 +107,9 @@ typedef struct _drmBO  {      drm_bo_type_t type;      unsigned handle; -    drm_u64_t mapHandle; -    unsigned flags; -    unsigned mask; +    uint64_t mapHandle; +    uint64_t flags; +    uint64_t mask;      unsigned mapFlags;      unsigned long size;      unsigned long offset; @@ -117,6 +117,9 @@ typedef struct _drmBO      unsigned replyFlags;      unsigned fenceFlags;      unsigned pageAlignment; +    unsigned tileInfo; +    unsigned hwTileStride; +    unsigned desiredTileStride;      void *virtual;      void *mapVirtual;      int mapCount; @@ -127,7 +130,7 @@ typedef struct _drmBONode  {      drmMMListHead head;      drmBO *buf; -    drm_bo_arg_t bo_arg; +    struct drm_bo_op_arg bo_arg;      unsigned long arg0;      unsigned long arg1;  } drmBONode; @@ -176,8 +179,8 @@ extern int drmBOCreateList(int numTarget, drmBOList *list);   */  extern int drmBOCreate(int fd, unsigned long start, unsigned long size, -		       unsigned pageAlignment,void *user_buffer,  -		       drm_bo_type_t type, unsigned mask, +		       unsigned pageAlignment,void *user_buffer, +		       drm_bo_type_t type, uint64_t mask,  		       unsigned hint, drmBO *buf);  extern int drmBODestroy(int fd, drmBO *buf);  extern int drmBOReference(int fd, unsigned handle, drmBO *buf); @@ -185,14 +188,14 @@ extern int drmBOUnReference(int fd, drmBO *buf);  extern int drmBOMap(int fd, drmBO *buf, unsigned mapFlags, unsigned mapHint,  		    void **address);  extern int drmBOUnmap(int fd, drmBO *buf); -extern int drmBOValidate(int fd, drmBO *buf, unsigned flags, unsigned mask,  -			 unsigned hint); +extern int drmBOValidate(int fd, drmBO *buf, uint64_t flags, +			 uint64_t mask, unsigned hint); +  extern int drmBOFence(int fd, drmBO *buf, unsigned flags, unsigned fenceHandle);  extern int drmBOInfo(int fd, drmBO *buf);  extern int drmBOBusy(int fd, drmBO *buf, int *busy); - -extern int drmAddValidateItem(drmBOList *list, drmBO *buf, unsigned flags,  +extern int drmAddValidateItem(drmBOList *list, drmBO *buf, unsigned flags,  		       unsigned mask,  		       int *newItem);  extern int drmBOValidateList(int fd, drmBOList *list); | 
