summaryrefslogtreecommitdiff
path: root/include/drm
diff options
context:
space:
mode:
authorJakob Bornecrantz <jakob@vmware.com>2009-12-02 19:40:58 +0100
committerJakob Bornecrantz <jakob@vmware.com>2009-12-02 19:40:58 +0100
commit3bd834a2178ee1273fd84628e87210a500f8fc84 (patch)
treec123835954f8b2733cc72390934125d6d71badd3 /include/drm
parentbe957cc219d0811e2d1ed2a56549a03cb64a0f4b (diff)
parentac5595abc1c28b2c10a1463143e83d17415736f1 (diff)
Merge branch 'modesetting-dirty-libdrm'
Conflicts: include/drm/drm.h
Diffstat (limited to 'include/drm')
-rw-r--r--include/drm/drm.h1
-rw-r--r--include/drm/drm_mode.h39
2 files changed, 40 insertions, 0 deletions
diff --git a/include/drm/drm.h b/include/drm/drm.h
index 5408c08c..48221599 100644
--- a/include/drm/drm.h
+++ b/include/drm/drm.h
@@ -697,6 +697,7 @@ struct drm_gem_open {
#define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
#define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, unsigned int)
#define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
+#define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
/*@}*/
diff --git a/include/drm/drm_mode.h b/include/drm/drm_mode.h
index 1fd30266..dfc390ea 100644
--- a/include/drm/drm_mode.h
+++ b/include/drm/drm_mode.h
@@ -222,6 +222,45 @@ struct drm_mode_fb_cmd {
__u32 handle;
};
+#define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01
+#define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02
+#define DRM_MODE_FB_DIRTY_FLAGS 0x03
+
+/*
+ * Mark a region of a framebuffer as dirty.
+ *
+ * Some hardware does not automatically update display contents
+ * as a hardware or software draw to a framebuffer. This ioctl
+ * allows userspace to tell the kernel and the hardware what
+ * regions of the framebuffer have changed.
+ *
+ * The kernel or hardware is free to update more then just the
+ * region specified by the clip rects. The kernel or hardware
+ * may also delay and/or coalesce several calls to dirty into a
+ * single update.
+ *
+ * Userspace may annotate the updates, the annotates are a
+ * promise made by the caller that the change is either a copy
+ * of pixels or a fill of a single color in the region specified.
+ *
+ * If the DRM_MODE_FB_DIRTY_ANNOTATE_COPY flag is given then
+ * the number of updated regions are half of num_clips given,
+ * where the clip rects are paired in src and dst. The width and
+ * height of each one of the pairs must match.
+ *
+ * If the DRM_MODE_FB_DIRTY_ANNOTATE_FILL flag is given the caller
+ * promises that the region specified of the clip rects is filled
+ * completely with a single color as given in the color argument.
+ */
+
+struct drm_mode_fb_dirty_cmd {
+ __u32 fb_id;
+ __u32 flags;
+ __u32 color;
+ __u32 num_clips;
+ __u64 clips_ptr;
+};
+
struct drm_mode_mode_cmd {
__u32 connector_id;
struct drm_mode_modeinfo mode;