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;