OSDN Git Service

freedreno: expose kernel driver version
authorRob Clark <robclark@freedesktop.org>
Wed, 1 Jun 2016 18:35:44 +0000 (14:35 -0400)
committerRob Clark <robclark@freedesktop.org>
Wed, 20 Jul 2016 23:42:21 +0000 (19:42 -0400)
gallium needs to know if the kernel is new enough to support explicit
fencing, dynamically grown ringbuffers, etc.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
freedreno/freedreno_device.c
freedreno/freedreno_drmif.h
freedreno/freedreno_priv.h
freedreno/msm/msm_bo.c

index 3da5c7c..b99bce2 100644 (file)
@@ -140,3 +140,8 @@ int fd_device_fd(struct fd_device *dev)
 {
        return dev->fd;
 }
+
+enum fd_version fd_device_version(struct fd_device *dev)
+{
+       return dev->version;
+}
index 15ae075..af5e1da 100644 (file)
@@ -89,6 +89,11 @@ struct fd_device * fd_device_ref(struct fd_device *dev);
 void fd_device_del(struct fd_device *dev);
 int fd_device_fd(struct fd_device *dev);
 
+enum fd_version {
+       FD_VERSION_MADVISE = 1,            /* kernel supports madvise */
+       FD_VERSION_UNLIMITED_CMDS = 1,     /* submits w/ >4 cmd buffers (growable ringbuffer) */
+};
+enum fd_version fd_device_version(struct fd_device *dev);
 
 /* pipe functions:
  */
index f3ddd77..5e8f03d 100644 (file)
@@ -83,7 +83,7 @@ struct fd_bo_cache {
 
 struct fd_device {
        int fd;
-       int version;
+       enum fd_version version;
        atomic_t refcnt;
 
        /* tables to keep track of bo's, to avoid "evil-twin" fd_bo objects:
index cfaec82..72471df 100644 (file)
@@ -98,7 +98,7 @@ static int msm_bo_madvise(struct fd_bo *bo, int willneed)
        int ret;
 
        /* older kernels do not support this: */
-       if (bo->dev->version < 1)
+       if (bo->dev->version < FD_VERSION_MADVISE)
                return willneed;
 
        ret = drmCommandWriteRead(bo->dev->fd, DRM_MSM_GEM_MADVISE, &req, sizeof(req));