From: Michel Dänzer Date: Thu, 28 Sep 2006 14:04:19 +0000 (+0000) Subject: Add driGetVBlankInterval() helper function. X-Git-Tag: 062012170305~20432 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7585fc989de1eabe7b978226b8750f912f06778c;p=profile%2Fivi%2Fmesa.git Add driGetVBlankInterval() helper function. This can be used by drivers to determine the current swap interval of a drawable. --- diff --git a/src/mesa/drivers/dri/common/vblank.c b/src/mesa/drivers/dri/common/vblank.c index 2ec3c12..9c219ea 100644 --- a/src/mesa/drivers/dri/common/vblank.c +++ b/src/mesa/drivers/dri/common/vblank.c @@ -268,6 +268,30 @@ void driDrawableInitVBlank( __DRIdrawablePrivate *priv, GLuint flags, /****************************************************************************/ /** + * Returns the current swap interval of the given drawable. + */ + +unsigned +driGetVBlankInterval( const __DRIdrawablePrivate *priv, GLuint flags ) +{ + if ( (flags & VBLANK_FLAG_INTERVAL) != 0 ) { + /* this must have been initialized when the drawable was first bound + * to a direct rendering context. */ + assert ( priv->pdraw->swap_interval != (unsigned)-1 ); + + return priv->pdraw->swap_interval; + } + else if ( (flags & (VBLANK_FLAG_THROTTLE | VBLANK_FLAG_SYNC)) != 0 ) { + return 1; + } + else { + return 0; + } +} + + +/****************************************************************************/ +/** * Waits for the vertical blank for use with glXSwapBuffers. * * \param vbl_seq Vertical blank sequence number (MSC) after the last buffer @@ -310,20 +334,7 @@ driWaitForVBlank( const __DRIdrawablePrivate *priv, GLuint * vbl_seq, */ original_seq = *vbl_seq; - - if ( (flags & VBLANK_FLAG_INTERVAL) != 0 ) { - interval = priv->pdraw->swap_interval; - /* this must have been initialized when the drawable was first bound - * to a direct rendering context. */ - assert ( interval != (unsigned)-1 ); - } - else if ( (flags & (VBLANK_FLAG_THROTTLE | VBLANK_FLAG_SYNC)) != 0 ) { - interval = 1; - } - else { - interval = 0; - } - + interval = driGetVBlankInterval(priv, flags); deadline = original_seq + interval; vbl.request.type = DRM_VBLANK_RELATIVE; diff --git a/src/mesa/drivers/dri/common/vblank.h b/src/mesa/drivers/dri/common/vblank.h index ca386a6..00f0e75 100644 --- a/src/mesa/drivers/dri/common/vblank.h +++ b/src/mesa/drivers/dri/common/vblank.h @@ -51,6 +51,8 @@ extern int driWaitForMSC32( __DRIdrawablePrivate *priv, extern GLuint driGetDefaultVBlankFlags( const driOptionCache *optionCache ); extern void driDrawableInitVBlank ( __DRIdrawablePrivate *priv, GLuint flags, GLuint *vbl_seq ); +extern unsigned driGetVBlankInterval( const __DRIdrawablePrivate *priv, + GLuint flags ); extern int driWaitForVBlank( const __DRIdrawablePrivate *priv, GLuint * vbl_seq, GLuint flags, GLboolean * missed_deadline );