Implement drmGetCap() to query device/driver capabilities

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
main
Ben Skeggs 2011-02-21 11:27:19 +10:00 committed by Dave Airlie
parent 4473a7e823
commit 5c6c6913d1
3 changed files with 22 additions and 0 deletions

View File

@ -612,6 +612,12 @@ struct drm_gem_open {
__u64 size; __u64 size;
}; };
/** DRM_IOCTL_GET_CAP ioctl argument type */
struct drm_get_cap {
__u64 capability;
__u64 value;
};
#include "drm_mode.h" #include "drm_mode.h"
#define DRM_IOCTL_BASE 'd' #define DRM_IOCTL_BASE 'd'
@ -632,6 +638,7 @@ struct drm_gem_open {
#define DRM_IOCTL_GEM_CLOSE DRM_IOW (0x09, struct drm_gem_close) #define DRM_IOCTL_GEM_CLOSE DRM_IOW (0x09, struct drm_gem_close)
#define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink) #define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
#define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open) #define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
#define DRM_IOCTL_GET_CAP DRM_IOWR(0x0c, struct drm_get_cap)
#define DRM_IOCTL_SET_UNIQUE DRM_IOW( 0x10, struct drm_unique) #define DRM_IOCTL_SET_UNIQUE DRM_IOW( 0x10, struct drm_unique)
#define DRM_IOCTL_AUTH_MAGIC DRM_IOW( 0x11, struct drm_auth) #define DRM_IOCTL_AUTH_MAGIC DRM_IOW( 0x11, struct drm_auth)
@ -747,6 +754,8 @@ struct drm_event_vblank {
__u32 reserved; __u32 reserved;
}; };
#define DRM_CAP_DUMB_BUFFER 0x1
/* typedef area */ /* typedef area */
typedef struct drm_clip_rect drm_clip_rect_t; typedef struct drm_clip_rect drm_clip_rect_t;
typedef struct drm_drawable_info drm_drawable_info_t; typedef struct drm_drawable_info drm_drawable_info_t;

View File

@ -810,6 +810,18 @@ drmVersionPtr drmGetLibVersion(int fd)
return (drmVersionPtr)version; return (drmVersionPtr)version;
} }
int drmGetCap(int fd, uint64_t capability, uint64_t *value)
{
struct drm_get_cap cap = { capability, 0 };
int ret;
ret = drmIoctl(fd, DRM_IOCTL_GET_CAP, &cap);
if (ret)
return ret;
*value = cap.value;
return cap.value;
}
/** /**
* Free the bus ID information. * Free the bus ID information.

View File

@ -542,6 +542,7 @@ extern int drmOpenControl(int minor);
extern int drmClose(int fd); extern int drmClose(int fd);
extern drmVersionPtr drmGetVersion(int fd); extern drmVersionPtr drmGetVersion(int fd);
extern drmVersionPtr drmGetLibVersion(int fd); extern drmVersionPtr drmGetLibVersion(int fd);
extern int drmGetCap(int fd, uint64_t capability, uint64_t *value);
extern void drmFreeVersion(drmVersionPtr); extern void drmFreeVersion(drmVersionPtr);
extern int drmGetMagic(int fd, drm_magic_t * magic); extern int drmGetMagic(int fd, drm_magic_t * magic);
extern char *drmGetBusid(int fd); extern char *drmGetBusid(int fd);