Implement drmGetCap() to query device/driver capabilities
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>main
parent
4473a7e823
commit
5c6c6913d1
|
@ -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;
|
||||||
|
|
12
xf86drm.c
12
xf86drm.c
|
@ -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.
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue