summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>2015-03-03 14:11:02 +0000
committerDamien Lespiau <damien.lespiau@intel.com>2015-03-12 14:24:05 +0000
commitc7bac3c62ab27045ceec898787435bbb5678b015 (patch)
treebcd33674823b74102ab480ca40dfb71db40bbd32
parente36091d1c7010e825897dc4487f9985ab353973b (diff)
lib: Add support for new extension to the ADDFB2 ioctl.
New functionality accessesed via the __kms_addfb wrapper. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
-rw-r--r--lib/ioctl_wrappers.c26
-rw-r--r--lib/ioctl_wrappers.h9
2 files changed, 35 insertions, 0 deletions
diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
index 5cbb8738..baebf5c2 100644
--- a/lib/ioctl_wrappers.c
+++ b/lib/ioctl_wrappers.c
@@ -1165,3 +1165,29 @@ void igt_require_fb_modifiers(int fd)
igt_require(has_modifiers);
}
+
+int __kms_addfb(int fd, uint32_t handle, uint32_t width, uint32_t height,
+ uint32_t stride, uint32_t pixel_format, uint64_t modifier,
+ uint32_t flags, uint32_t *buf_id)
+{
+ struct local_drm_mode_fb_cmd2 f;
+ int ret;
+
+ igt_require_fb_modifiers(fd);
+
+ memset(&f, 0, sizeof(f));
+
+ f.width = width;
+ f.height = height;
+ f.pixel_format = pixel_format;
+ f.flags = flags;
+ f.handles[0] = handle;
+ f.pitches[0] = stride;
+ f.modifier[0] = modifier;
+
+ ret = drmIoctl(fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f);
+
+ *buf_id = f.fb_id;
+
+ return ret < 0 ? -errno : ret;
+}
diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
index 99fc7fd5..ced7ef3a 100644
--- a/lib/ioctl_wrappers.h
+++ b/lib/ioctl_wrappers.h
@@ -167,4 +167,13 @@ struct local_drm_mode_fb_cmd2 {
void igt_require_fb_modifiers(int fd);
+/**
+ * __kms_addfb:
+ *
+ * Creates a framebuffer object.
+ */
+int __kms_addfb(int fd, uint32_t handle, uint32_t width, uint32_t height,
+ uint32_t stride, uint32_t pixel_format, uint64_t modifier,
+ uint32_t flags, uint32_t *buf_id);
+
#endif /* IOCTL_WRAPPERS_H */