Re: Question about cfb_copyarea

"Antonino A. Daplas" <[email protected]> Thu, 22 Feb 2007 18:45:00 +0800
Newsgroups gmane.linux.fbdev.user
Message-ID <1172141100.4086.24.camel@daplas>
On Thu, 2007-02-22 at 11:19 +0100, Juergen Beisert wrote:
> On Thursday 22 February 2007 00:43, Antonino A. Daplas wrote:
> > On Sat, 2007-02-10 at 15:32 +0100, Juergen Beisert wrote:
> > > Hi Petr,
> > >
> > > On Wednesday 31 January 2007 10:12, Petr Vandrovec wrote:
> > > > Take a look at updatescrollmode() in fbcon.c - you must persuade this
> > > > function to use SCROLL_*_MOVE, not SCROLL_*_REDRAW.  FBINFO_READS_FAST
> > > > should be sufficient - or you can report fast bitblt + fast panning, or
> > > > fast bitblt + slow imageblit.  If you report no panning + fast bitblt +
> > > > fast imageblit, redraw is used :-(
> > >
> > > I tried around to get fbcon to use SCROLL_MOVE. These are my current
> > > settings:
> > >
> > > info->flags	= FBINFO_DEFAULT |
> > > 		  FBINFO_HWACCEL_COPYAREA |
> > > 		  FBINFO_HWACCEL_FILLRECT |
> > > 		  FBINFO_HWACCEL_IMAGEBLIT |
> > > 		  FBINFO_READS_FAST;
> > > With this settings updatescrollmode() decides to use SCROLL_MOVE.
> > >
> > > Two things are coming up with this scroll mode (all in fbcon_scroll() ):
> > >
> > >  1) why is the variable "logo_shown" always set to 0 for console 0? When
> > > in console 0 it always ends up in "goto redraw_up;" But I have no logo on
> > > my console? For other consoles than 0 "logo_shown" is -1
> > >     (=FBCON_LOGO_CANSHOW)
> > >  2) with the settings above active on another console then 0, the whole
> > > system freezes immediately in ops->bmove() or ops->clear()????
> > >  2a) when I comment out the "logo_shown" check in fbcon_scroll() it also
> > >      freezes the whole system in console 0.
> > >
> > > Any ideas?
> >
> > The global 'logo_shown' is only used at the very start, to display the
> > boot logo if it is equal to LOGO_DRAW. It basically forces the scroll
> > mode to redraw and gives space in the upper part of your screen. After
> > that 'logo_shown' is assigned the index of the foreground console
> > (usually 0) and your scroll settings are now used.
> 
> No, 0 is a valid index and always used in console 0. So my scroll settings in 
> console 0 are never used.

No, scroll_redraw is used if logo_shown = LOGO_DRAW.  After a switch, it
changes to logo_shown = fg_console = 0,  and this time your scroll
settings will be used.

> 
> > Basically, don't touch the 'logo_shown' variable.  If you don't want the
> > tux logo, then disable it in your kernel config.
> 
> Its already disabled. I didn't use the logo in my tests.
> 

Okay.

> > As to why your driver freezes, I don't know.  Check if it also crashes
> > with cfbcopyarea first.
> 
> I tried it with cfbcopyarea, because my hardware routine isn't finished yet. 
> But all I tried, cfbcopyarea will never be called. It always ends up in 
> ops->bmove() and crashes...
> 

ops->bmove is basically a wrapper to copyarea, so it does get used. I
don't know why it would freeze though.  Perhaps you can pinpoint where
exactly in bmove it crashes.

Tony



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV