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;
}
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);
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:
*/

View 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:

View 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));