On Tue, Jul 05, 2011 at 11:26:47AM +0200, Michael Graph wrote: > Hi all, > > I have an application which works in triple buffering mode and flips buffers > with DSFLIP_ONSYNC flag (DSFLIP_WAIT flag is not used) - it's based on > df_andi scheme. If time of rendering one animation frame is less than time > between two VSyncs, it's possible to achieve following situation: > - buffer number 1 contains already rendered animation frame and it's already > displayed on the screen, > - next animation frame is rendering in buffer number 2 and when it's ready > Flip is calling - it returns immediatelly, physical buffers flip will be > performed on next VSync, application starts drawing on buffer number 3, > - next animation frame is rendering in buffer number 3 and when it's ready > Flip is calling - it returns immediatelly, physical buffers flip will be > performed on next VSync. Note that none VSync comes yet, so buffer number 1 > is still visible, > - application starts to render next animation frame in buffer number 1, > which is still displaying. > Result: tearing is visible on the screen. > > There can be few methods for solving this issue, so the question is: what is > the better method to fix it according to DirectFB design?
> Or maybe 1st flip should be skipped in this case and 2nd flip > should switch drawing buffer to number 2 instead of buffer 1? This is how it was designed to work. It's the reason dfb_surface_flip() has the 'swap' parameter. Currently only matrox_bes.c uses it though. -- Ville Syrjälä syrj...@sci.fi http://www.sci.fi/~syrjala/ _______________________________________________ directfb-dev mailing list directfb-dev@directfb.org http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev