Hi Alex,

Below is a patch against the master branch of libdrm that adds support 
for waits for vblank events on CRTCs that are greater than 1 (and thus 
cannot be represented using current primary/secondary flags interface). 
The patch adds a new DRM_CAP so that the application can check whether the 
new vblank interface is supported and also adds the new DRM_VBLANK mask 
and shift value so that the application can construct vblank_wait ioctls 
that refer to crtc > 1

The issue was discussed on the dri-devel list in these two threads

http://lists.freedesktop.org/archives/dri-devel/2011-March/009009.html
http://lists.freedesktop.org/archives/dri-devel/2011-March/009025.html

Regards,

Ilija

Reviewed-by: Mario Kleiner <mario.kleiner at tuebingen.mpg.de>
Acked-by: Mario Kleiner <mario.kleiner at tuebingen.mpg.de>


diff --git a/include/drm/drm.h b/include/drm/drm.h
index 416673a..10afaf1 100644
--- a/include/drm/drm.h
+++ b/include/drm/drm.h
@@ -755,6 +755,7 @@ struct drm_event_vblank {
  };

  #define DRM_CAP_DUMB_BUFFER 0x1
+#define DRM_CAP_HIGH_CRTC   0x2

  /* typedef area */
  typedef struct drm_clip_rect drm_clip_rect_t;
diff --git a/xf86drm.h b/xf86drm.h
index bf0d5df..e2bea06 100644
--- a/xf86drm.h
+++ b/xf86drm.h
@@ -302,6 +302,8 @@ typedef enum {
      DRM_VBLANK_SECONDARY = 0x20000000,        /**< Secondary display 
controller */
      DRM_VBLANK_SIGNAL   = 0x40000000  /* Send signal instead of blocking */
  } drmVBlankSeqType;
+#define DRM_VBLANK_HIGH_CRTC_SHIFT 16
+#define DRM_VBLANK_HIGH_CRTC_MASK 0x001F0000

  typedef struct _drmVBlankReq {
        drmVBlankSeqType type;

Reply via email to