freedreno: expose kernel driver version

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>
main
Rob Clark 2016-06-01 14:35:44 -04:00
parent fe07584e05
commit 904f1361ae
4 changed files with 12 additions and 2 deletions

View File

@ -140,3 +140,8 @@ int fd_device_fd(struct fd_device *dev)
{ {
return dev->fd; return dev->fd;
} }
enum fd_version fd_device_version(struct fd_device *dev)
{
return dev->version;
}

View File

@ -89,6 +89,11 @@ struct fd_device * fd_device_ref(struct fd_device *dev);
void fd_device_del(struct fd_device *dev); void fd_device_del(struct fd_device *dev);
int fd_device_fd(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: /* pipe functions:
*/ */

View File

@ -83,7 +83,7 @@ struct fd_bo_cache {
struct fd_device { struct fd_device {
int fd; int fd;
int version; enum fd_version version;
atomic_t refcnt; atomic_t refcnt;
/* tables to keep track of bo's, to avoid "evil-twin" fd_bo objects: /* tables to keep track of bo's, to avoid "evil-twin" fd_bo objects:

View File

@ -98,7 +98,7 @@ static int msm_bo_madvise(struct fd_bo *bo, int willneed)
int ret; int ret;
/* older kernels do not support this: */ /* older kernels do not support this: */
if (bo->dev->version < 1) if (bo->dev->version < FD_VERSION_MADVISE)
return willneed; return willneed;
ret = drmCommandWriteRead(bo->dev->fd, DRM_MSM_GEM_MADVISE, &req, sizeof(req)); ret = drmCommandWriteRead(bo->dev->fd, DRM_MSM_GEM_MADVISE, &req, sizeof(req));