From 7539fde334d3164bc9d33cdabac9c5741d61d012 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Thu, 28 Sep 2006 14:03:41 +0000 Subject: driWaitForVBlank: Add support for secondary vertical blank. --- src/mesa/drivers/dri/common/vblank.c | 10 ++++++++-- src/mesa/drivers/dri/common/vblank.h | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers/dri/common') diff --git a/src/mesa/drivers/dri/common/vblank.c b/src/mesa/drivers/dri/common/vblank.c index c7c7b8296e..2ec3c12353 100644 --- a/src/mesa/drivers/dri/common/vblank.c +++ b/src/mesa/drivers/dri/common/vblank.c @@ -326,9 +326,12 @@ driWaitForVBlank( const __DRIdrawablePrivate *priv, GLuint * vbl_seq, deadline = original_seq + interval; - vbl.request.sequence = ((flags & VBLANK_FLAG_SYNC) != 0) ? 1 : 0; vbl.request.type = DRM_VBLANK_RELATIVE; - + if ( flags & VBLANK_FLAG_SECONDARY ) { + vbl.request.type |= DRM_VBLANK_SECONDARY; + } + vbl.request.sequence = ((flags & VBLANK_FLAG_SYNC) != 0) ? 1 : 0; + if ( do_wait( & vbl, vbl_seq, priv->driScreenPriv->fd ) != 0 ) { return -1; } @@ -343,6 +346,9 @@ driWaitForVBlank( const __DRIdrawablePrivate *priv, GLuint * vbl_seq, /* Wait until the target vertical blank. */ vbl.request.type = DRM_VBLANK_ABSOLUTE; + if ( flags & VBLANK_FLAG_SECONDARY ) { + vbl.request.type |= DRM_VBLANK_SECONDARY; + } vbl.request.sequence = deadline; if ( do_wait( & vbl, vbl_seq, priv->driScreenPriv->fd ) != 0 ) { diff --git a/src/mesa/drivers/dri/common/vblank.h b/src/mesa/drivers/dri/common/vblank.h index 2663956858..ca386a6a34 100644 --- a/src/mesa/drivers/dri/common/vblank.h +++ b/src/mesa/drivers/dri/common/vblank.h @@ -42,6 +42,8 @@ */ #define VBLANK_FLAG_NO_IRQ (1U << 7) /* DRM has no IRQ to wait on. */ +#define VBLANK_FLAG_SECONDARY (1U << 8) /* Wait for secondary vblank. + */ extern int driGetMSC32( __DRIscreenPrivate * priv, int64_t * count ); extern int driWaitForMSC32( __DRIdrawablePrivate *priv, -- cgit v1.2.3