Hi,

I have added Overlay support the the i810 gfxdriver that I wrote.  I
noticed that rendering to the backbuffer is not supported.  Significant
'tearing' effects can be seen when playing video using 'mplayer -vo
directfb'.  Mplayer, by default, blits or memcopies to the frontbuffer
directly which causes the 'tearing' effects. 

I traced this to allocate_surface() which creates a surface with a
DSCAPS_FRONTONLY capability.  Is is possible that it also passes a
DSCAPS_FLIPPING if config->buffermode == DLBM_BACKVIDEO aside from
writing a gfxdriver-specific xxxAllocateSurface?

Because I wanted to eliminte this 'tearing' effect, I modified
allocate_surface() so it also passes DSCAPS_FLIPPING depending on the
buffermode.  I also experimented with mplayer and modified it so it
renders to the backbuffer then calls layer->Flip() afterwards. The
tearing effects disappear this way.  Also, flipping, instead of
blitting, effectively bypasses the YV12 blit problem.  

Another thing I noticed is that all of the gfxdriver's
xxxTestConfiguration() will not fail if config->flags ==
DLCONF_BUFFERMODE and config->buffermode == DLBM_BACKVIDEO.  This might
confuse the client that buffer flipping is supported when it is actually
not.

Tony





-- 
Info:  To unsubscribe send a mail to [EMAIL PROTECTED] with 
"unsubscribe directfb-dev" as subject.

Reply via email to