summaryrefslogtreecommitdiff
path: root/libdrm
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2008-06-04 13:49:43 +1000
committerDave Airlie <airlied@redhat.com>2008-06-04 13:50:51 +1000
commit382aa3ceeb79165a9bdddc8f944de131c8cbf2dd (patch)
tree1c61f11da47cd9bfb7b9b34c0fa3cdcf888e3e7c /libdrm
parent9f31bd09c1e748f72a30f6a0861cd72d93258992 (diff)
drm: introduce generation counter to interface.
Idea being if you want to add new crtc/output/encoder dynamically later, you just increase the generation counter and userspace should re-read all the resources
Diffstat (limited to 'libdrm')
-rw-r--r--libdrm/xf86drmMode.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/libdrm/xf86drmMode.h b/libdrm/xf86drmMode.h
index 56908d8f..3bd30a92 100644
--- a/libdrm/xf86drmMode.h
+++ b/libdrm/xf86drmMode.h
@@ -51,9 +51,16 @@
* buffer object interface. This object needs to be pinned.
*/
+/*
+ * generation - these are to be read by userspace, and if it notices
+ * while calling a get output or get crtc that the generation has changed
+ * it should re-call the mode resource functions resync its view of the
+ * outputs with current view.
+ */
typedef struct _drmModeRes {
+ uint32_t generation;
int count_fbs;
uint32_t *fbs;
@@ -93,6 +100,7 @@ typedef struct _drmModeProperty {
typedef struct _drmModeCrtc {
unsigned int crtc_id;
unsigned int buffer_id; /**< FB id to connect to 0 = disconnect*/
+ uint32_t generation;
uint32_t x, y; /**< Position on the frameuffer */
uint32_t width, height;
@@ -110,6 +118,7 @@ typedef struct _drmModeCrtc {
} drmModeCrtc, *drmModeCrtcPtr;
typedef struct _drmModeEncoder {
+ uint32_t generation;
unsigned int encoder_id;
unsigned int encoder_type;
uint32_t crtc;
@@ -133,8 +142,8 @@ typedef enum {
} drmModeSubPixel;
typedef struct _drmModeConnector {
+ uint32_t generation;
unsigned int connector_id;
-
unsigned int encoder; /**< Crtc currently connected to */
unsigned int connector_type;
unsigned int connector_type_id;