DirectFB - Home of the pragmatist Roadmap


[directfb-dev] Re: Flipping troubles - videolayer, crtc2
Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[directfb-dev] Re: Flipping troubles - videolayer, crtc2


  • To: directfb-dev <directfb-dev@directfb.org>
  • Subject: [directfb-dev] Re: Flipping troubles - videolayer, crtc2
  • From: Antonino Daplas <adaplas@pol.net>
  • Date: 13 Jun 2002 11:43:01 +0800
  • Content-type: multipart/mixed; boundary="=-RFExeXfUUpoltQ9XUzxP"
  • In-reply-to: <!~!UENERkVCMDkAAQACAAAAAAAAAAAAAAAAABgAAAAAAAAAKlCHXSev0hGZPwAA6Dgp4cKAAAAQ AAAAVOIz5CfejEuG0ejOZA8WLgEAAAAA@seznam.cz>
  • References: <!~!UENERkVCMDkAAQACAAAAAAAAAAAAAAAAABgAAAAAAAAAKlCHXSev0hGZPwAA6Dgp4cKAAAAQ AAAAVOIz5CfejEuG0ejOZA8WLgEAAAAA@seznam.cz>
  • Sender: directfb-dev-bounce@directfb.org

On Tue, 2002-06-11 at 05:04, Jiří Svoboda wrote:

> 
> P.S.:I've attached "draft" version vo_directfb.c where I've encountered
> decscribed problems.
> P.S.S.: if anybody can test on other hw than mga G400 and tell me, how
> it behave, I'd be happy.

After placing DFBM_BACKVIDEO to dlc.buffermode (as what Denis
suggested), flipping works.  However the resulting video was shaky and
still has tearing.  I tested this with the i810 gfxdriver which I wrote
so I'm not sure if this is due to the i810's implementation of
FlipBuffers.

If I use your old implementation, but just add an extra instruction to
flip, ie. draw to frame, copy/blit from frame to primary, then flip
primary, the resulting video was smooth and steady.

Tony

--- vo_directfb.c-orig	Wed Jun 12 21:26:49 2002
+++ vo_directfb.c	Wed Jun 12 23:09:19 2002
@@ -646,13 +646,13 @@
 #ifdef FLIPPING
 	     // try to set flipping for videolayer
 	     dlc.flags = DLCONF_BUFFERMODE;
-	     dlc.options = DLBM_BACKVIDEO;
+	     dlc.buffermode = DLBM_BACKVIDEO;
 	     invram = 1;
 	     flipping = 1;
 	     ret =videolayer->SetConfiguration( videolayer, &dlc );
 	     if (ret!=DFB_OK) {
 	        invram = 0;
-	        dlc.options = DLBM_BACKSYSTEM;
+	        dlc.buffermode = DLBM_BACKSYSTEM;
 		ret =videolayer->SetConfiguration( videolayer, &dlc );
 	        if (ret!=DFB_OK) {
 		    flipping = 0;
@@ -810,14 +810,6 @@
 
  if (((out_width != in_width) || (out_height != in_height)) && (!videolayeractive)) {stretch = 1;} else stretch=0; //yuy doesn't like strech and should not be needed
 
-#ifdef FLIPPING
-    // frame will not be allocated in case of overlay or nonstrech blit on primary
-    if (flipping && (!stretch)) {
-     frame = primary;
-     frameallocated = 0;
-     if (verbose) printf("DirectFB: Frame is NOT used (flipping is active).\n");
-    } else {
-#endif
      dsc.caps  = DSCAPS_SYSTEMONLY;
      DFBCHECK (dfb->CreateSurface( dfb, &dsc, &frame));
      frameallocated=1;
@@ -827,7 +819,6 @@
      } else {
 	printf("DirectFB: Frame created (flipping is NOT active).\n");
      };
-    };
 #endif
   
   DFBCHECK (frame->GetPixelFormat (frame, &frame_format));
@@ -1365,9 +1356,6 @@
                 DFBCHECK (primary->StretchBlit(primary,frame,NULL,&rect));
                 }
         else    {
-#ifdef FLIPPING
-	 if (!flipping) {
-#endif
 #ifdef HAVE_DIRECTFB099
 		if (!memcpyBitBlt) {
 #endif
@@ -1412,9 +1400,6 @@
 	            primary->Unlock(primary);
 		};
 #endif
-#ifdef FLIPPING
-	 };
-#endif		
         };
 #ifdef FLIPPING
     if (flipping) { 

Home | Main Index | Thread Index


directfb.org / Development / Old Archives