return 0;
}
-int drmFenceCreate(int fd, int shareable, unsigned type, int emit,
+int drmFenceCreate(int fd, int shareable, int class,unsigned type,
+ int emit,
drmFence *fence)
{
drm_fence_arg_t arg;
arg.type = type;
+ arg.class = class;
arg.flags = (shareable) ? DRM_FENCE_FLAG_SHAREABLE : 0;
arg.flags |= (emit) ? DRM_FENCE_FLAG_EMIT : 0;
arg.op = drm_fence_create;
if (ioctl(fd, DRM_IOCTL_FENCE, &arg))
return -errno;
fence->handle = arg.handle;
+ fence->class = arg.class;
fence->type = arg.type;
fence->signaled = 0;
return 0;
if (ioctl(fd, DRM_IOCTL_FENCE, &arg))
return -errno;
fence->handle = arg.handle;
+ fence->class = arg.class;
fence->type = arg.type;
fence->signaled = arg.signaled;
return 0;
arg.op = drm_fence_flush;
if (ioctl(fd, DRM_IOCTL_FENCE, &arg))
return -errno;
+ fence->class = arg.class;
fence->type = arg.type;
fence->signaled = arg.signaled;
return 0;
arg.op = drm_fence_signaled;
if (ioctl(fd, DRM_IOCTL_FENCE, &arg))
return -errno;
+ fence->class = arg.class;
fence->type = arg.type;
fence->signaled = arg.signaled;
return 0;
arg.op = drm_fence_emit;
if (ioctl(fd, DRM_IOCTL_FENCE, &arg))
return -errno;
+ fence->class = arg.class;
fence->type = arg.type;
fence->signaled = arg.signaled;
return 0;
if (ret)
return -errno;
+ fence->class = arg.class;
fence->type = arg.type;
fence->signaled = arg.signaled;
return 0;
typedef struct _drmFence{
unsigned handle;
+ int class;
unsigned type;
unsigned signaled;
} drmFence;
/* Fencing */
-extern int drmFenceCreate(int fd, int shareable, unsigned type, int emit,
+extern int drmFenceCreate(int fd, int shareable, int class,
+ unsigned type, int emit,
drmFence *fence);
extern int drmFenceDestroy(int fd, const drmFence *fence);
extern int drmFenceReference(int fd, unsigned handle, drmFence *fence);
write_lock_irqsave(&fm->lock, flags);
INIT_LIST_HEAD(&fence->ring);
+ fence->class = 0;
fence->type = type;
fence->flush_mask = 0;
fence->submitted_flush = 0;
return -EINVAL;
}
read_lock_irqsave(&fm->lock, flags);
+ arg.class = fence->class;
arg.type = fence->type;
arg.signaled = fence->signaled;
read_unlock_irqrestore(&fm->lock, flags);