OSDN Git Service

Bugfixes.
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>
Sun, 27 Aug 2006 20:01:33 +0000 (22:01 +0200)
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>
Sun, 27 Aug 2006 20:01:33 +0000 (22:01 +0200)
libdrm/xf86drm.c
libdrm/xf86drm.h
linux-core/drm_ttm.c

index e666df3..8867608 100644 (file)
@@ -2385,37 +2385,28 @@ static void split32(unsigned long val, unsigned *lo, unsigned *hi)
 
 int drmTTMCreate(int fd, drmTTM *ttm, unsigned long size, unsigned flags)
 {
-    drm_ttm_arg_t argTTM;
-    drm_bo_arg_t arg;
+    drm_ttm_arg_t arg;
 
-    arg.num_requests = 1;
-    arg.op = drm_op_ttm;
-    split32((unsigned long) &argTTM, &arg.data_lo, &arg.data_hi);
-
-    argTTM.op = drm_ttm_create;
-    argTTM.flags = flags;
-    split32((unsigned long) &size, &argTTM.size_lo, &argTTM.size_hi);
+    arg.op = drm_ttm_create;
+    arg.flags = flags;
+    split32((unsigned long) size, &arg.size_lo, &arg.size_hi);
 
     if (ioctl(fd, DRM_IOCTL_TTM, &arg))
        return -errno;
     
-    ttm->handle = argTTM.handle;
-    ttm->user_token = (drm_handle_t) argTTM.user_token;
-    ttm->flags = argTTM.flags;
-    ttm->size = combine64(argTTM.size_lo, argTTM.size_hi);
+    ttm->handle = arg.handle;
+    ttm->user_token = (drm_handle_t) arg.user_token;
+    ttm->flags = arg.flags;
+    ttm->size = combine64(arg.size_lo, arg.size_hi);
     return 0;
 }
 
 int drmTTMDestroy(int fd, const drmTTM *ttm)
 {
-    drm_ttm_arg_t argTTM;
-    drm_bo_arg_t arg;
+  drm_ttm_arg_t arg;
 
-    arg.num_requests = 1;
-    arg.op = drm_op_ttm;
-    split32((unsigned long) &argTTM, &arg.data_lo, &arg.data_hi);
-    argTTM.op = drm_ttm_destroy;
-    argTTM.handle = ttm->handle;
+    arg.op = drm_ttm_destroy;
+    arg.handle = ttm->handle;
     if (ioctl(fd, DRM_IOCTL_TTM, &arg))
        return -errno;
     return 0;
@@ -2424,31 +2415,25 @@ int drmTTMDestroy(int fd, const drmTTM *ttm)
 
 int drmTTMReference(int fd, unsigned handle, drmTTM *ttm)
 {
-    drm_ttm_arg_t argTTM;
-    drm_bo_arg_t arg;
-
-    arg.num_requests = 1;
-    arg.op = drm_op_ttm;
-    split32((unsigned long) &argTTM, &arg.data_lo, &arg.data_hi);
+    drm_ttm_arg_t arg;
 
-    argTTM.handle = handle;
-    argTTM.op = drm_ttm_reference;
+    arg.handle = handle;
+    arg.op = drm_ttm_reference;
     if (ioctl(fd, DRM_IOCTL_TTM, &arg))
        return -errno;
-    ttm->handle = argTTM.handle;
-    ttm->user_token = (drm_handle_t) argTTM.user_token;
-    ttm->flags = argTTM.flags;
-    ttm->size = combine64(argTTM.size_lo, argTTM.size_hi);
+    ttm->handle = arg.handle;
+    ttm->user_token = (drm_handle_t) arg.user_token;
+    ttm->flags = arg.flags;
+    ttm->size = combine64(arg.size_lo, arg.size_hi);
     return 0;
 }
 
 int drmTTMUnreference(int fd, const drmTTM *ttm)
 {
-    drm_ttm_arg_t argTTM;
-    drm_bo_arg_t arg;
+    drm_ttm_arg_t arg;
 
-    argTTM.op = drm_ttm_destroy;
-    argTTM.handle = ttm->handle;
+    arg.op = drm_ttm_destroy;
+    arg.handle = ttm->handle;
     if (ioctl(fd, DRM_IOCTL_TTM, &arg))
        return -errno;
     return 0;
index 92cef4c..433191b 100644 (file)
@@ -623,6 +623,13 @@ extern int           drmFenceWait(int fd, drmFence *fence, unsigned flush_type,
                                  int lazy, int ignore_signals);
 extern int           drmFenceEmit(int fd, drmFence *fence, unsigned emit_type);
 
+/* TTMS */
+extern int           drmTTMCreate(int fd, drmTTM *ttm, unsigned long size, 
+                                 unsigned flags);
+extern int           drmTTMDestroy(int fd, const drmTTM *ttm);
+extern int           drmTTMReference(int fd, unsigned handle, drmTTM *ttm);
+extern int           drmTTMUnreference(int fd, const drmTTM *ttm);
+extern drm_handle_t  drmTTMMapHandle(int fd, const drmTTM *ttm);
 
 
 /* Support routines */
index 950b0d4..ad7b279 100644 (file)
@@ -846,6 +846,7 @@ int drm_ttm_object_create(drm_device_t *dev, unsigned long size,
        object->base.unref = NULL;
 
        atomic_set(&object->usage, 1);
+       *ttm_object = object;
        return 0;
 }