From: Antonino Daplas <adaplas@pol.net>
To: Thomas Winischhofer <thomas@winischhofer.net>
Cc: Linux Fbdev development list <linux-fbdev-devel@lists.sourceforge.net>
Subject: Re: Some questions
Date: 05 Mar 2003 21:26:37 +0800 [thread overview]
Message-ID: <1046870342.1291.86.camel@localhost.localdomain> (raw)
In-Reply-To: <3E65EAFB.7020208@winischhofer.net>
On Wed, 2003-03-05 at 20:18, Thomas Winischhofer wrote:
> I am currently porting the SiS framebuffer driver to the - more or less
> - new API. Better late than never :)
>
> Anyway, during this, I noticed some issues: (I am using stock 2.5.63 for
> development, no fbdev patches)
>
> 1) Sisfb currently does not work if compiled statically into the kernel.
> (It works as a module if fbcon is a module, too). If sisfb and fbcon are
> the kernel, the mode switch occures but the only thing I see is a white
> rectangle at the left egde of the screen, vertically centered, with some
> flashing grey dots. I almost looks like text mode output while in
> graphics mode, or - better - if fbcon assumes a font size of 1 pixel.
> Finally, it seems to oops, but I can't say that for sure because I don't
> see anything (and I unfortunately don't have a serial console available).
>
> Can anybody confirm that this (ie both low level driver and fbcon in
> kernel) is supposed to work in 2.5.63 (making it a bug in my sisfb
> implementation)? Did I perhaps miss anything, like a kernel parameter to
> activate fbcon or similar?
Yes, it it does work.
>
> 2) If both sisfb and fbcon are modules, everything works s supposed when
> first modprobing sisfb and then fbcon. Upon modprobing fbcon, the mode
> switch occures and I see a graphical console (with a white rectangle of
> the size of the previous console size which vanishes upon pressing enter).
Ideally, fbdev should only change the video mode on the first fb_open()
or fb_set_par() and restore the state on the last fb_close(). This is
so you can load fbdev without having a framebuffer console. If memory
serves me correctly, that's how sisfb in 2.4 works?.
>
> However, I could not manage to gain a graphical console if sisfb is a
> module, but fbcon is in the kernel. Is this combination supposed to
> work? If so, how?
No, fbcon will not load unless there's at least one registered fbdev.
So, you must compile sisfb statically too.
>
> 3) The resizing using stty is - how do I put this - slightly imperfect.
> I don't know how you fbdev folks do it, but I am not used to think in
> row/col categories, but *resolutions* instead. Apart from this - IMHO a
> bit annoying - inconvenience, this method has further issues:
>
> a) Calculating the desired mode resolution my simply multiplying the
> rows/cols by the font size very often results in odd modes like 800x592.
> This even when using a standard 8x16 font, not thinking of situations
> where for instance 12x22 fonts are used. How is the low level driver
> supposed to handle this?
Ideally, the driver should round up to the nearest mode it's capable
of. The "fraction of a character dimensions" will be automatically
cleared by the "clear_margins" hook.
>
> To temporarily overcome this, I implemented a somewhat fuzzy mode
> identification routine, searching for modes with resolutions within a
> range of [desired res] - [desired res + 16]. But I can't imagine this
> being the Real Thing.
Yes, that's the Real Thing :-) fbcon_resize has a "fuzzy mode" too --
it won't do an fb_set_var() if the change in dimensions is only a
fraction of a character's dimension.
>
> b) The call to fb_set_var() inside fbcon_resize() is checked for errors,
> but not the call to fbcon_resize() from within fbcon_switch(). This
> leads to catastrophic drawing errors if the requested mode is not
> supported by the low level driver.
Yes, it's a bug. I think I submitted a patch to fix that, but I'm not
sure if James applied it to his tree.
>
> c) fbcon_resize() only changes var.xres and var.yres, leaving everything
> else - var.pixclock, for instance - alone. fb_set_var() just calles the
> driver's check_var() routine and then set_par(). How is the low level
> driver supposed to behave in this situation, especially considering the
> unchanged pixclock?
>
Right, using stty to change the window size assumes that the fbdev
driver has an algorithm to calculate modelines based on xres and yres
independently. This is probably a bit of work for most driver authors.
There's new code in fbmon.c (fb_find_mode and fb_validate_mode) that
should ease code writing if you have a VESA GTF compliant monitor. You
can use that if you want as long as the display's operating limits are
known (info->monspecs).
Another solution is to reimplement resizing by fbset. The code is not
very difficult and can be added if most people want it.
> d) Starting with a mode of 1024x768 and resizing to 800x600 using stty
> works after all (see a)), but only if I execute stty twice. The desired
> mode the low level driver receives at the first attempt is 800x768.
> Could this be related to an outdated or buggy stty, calling the console
> code twice if rows and cols are specified at the same time...?
Yes, this is a limitation of stty. It calls con_resize twice (one for
row and another for cols, depending on the order of the options) so it
will not work if the driver only supports a fixed set of modes. Another
reason to bring back fbset resizing.
>
> 3) About y panning: In the 2.4 version of sisfb, I simply forced the
> console to do y panning (unless positively disabled by the user) by
> "patching" yres_virtual to the maximum, depending on the available video
> memory. I am allowed to do that with the 2.5 API? (The rivafb code makes
> be believe so...)
Scrolling mode is now determined by fbcon. If var->accel_flag is
nonzero, scrolling is ypan, otherwise, it's yredraw. It's because ypan
requres a lot of block copy which is slow when done by software.
I still believe though that scrolling should be determined by the
driver, not fbcon.
Tony
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
next prev parent reply other threads:[~2003-03-05 13:25 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-03-05 12:18 Some questions Thomas Winischhofer
2003-03-05 13:26 ` Antonino Daplas [this message]
2003-03-05 14:06 ` Thomas Winischhofer
2003-03-05 15:25 ` Antonino Daplas
2003-03-05 15:37 ` Thomas Winischhofer
2003-03-05 15:44 ` Geert Uytterhoeven
2003-03-05 15:59 ` Thomas Winischhofer
2003-03-05 16:06 ` Geert Uytterhoeven
2003-03-05 16:34 ` Antonino Daplas
2003-03-05 16:06 ` Antonino Daplas
2003-03-05 16:17 ` Thomas Winischhofer
2003-03-05 16:44 ` Antonino Daplas
2003-03-05 17:01 ` Geert Uytterhoeven
2003-03-05 19:25 ` James Simmons
2003-03-05 19:27 ` James Simmons
2003-03-05 15:40 ` Geert Uytterhoeven
2003-03-05 15:54 ` Antonino Daplas
2003-03-05 19:31 ` James Simmons
2003-03-05 15:48 ` Antonino Daplas
2003-03-05 19:43 ` James Simmons
2003-03-05 22:21 ` Thomas Winischhofer
2003-03-06 0:18 ` James Simmons
2003-03-06 9:03 ` Thomas Winischhofer
2003-03-06 1:18 ` Antonino Daplas
2003-03-06 1:18 ` Antonino Daplas
2003-03-06 8:49 ` Thomas Winischhofer
2003-03-06 9:12 ` Geert Uytterhoeven
2003-03-06 9:58 ` Antonino Daplas
2003-03-06 10:14 ` Geert Uytterhoeven
2003-03-06 10:30 ` Antonino Daplas
2003-03-06 9:26 ` Antonino Daplas
2003-03-06 9:43 ` Thomas Winischhofer
2003-03-06 10:05 ` Antonino Daplas
2003-03-06 10:31 ` Sven Luther
2003-03-06 10:48 ` Antonino Daplas
2003-03-06 10:51 ` Antonino Daplas
2003-03-06 11:40 ` Sven Luther
2003-03-06 13:25 ` Antonino Daplas
2003-03-06 15:25 ` James Simmons
2003-03-06 15:27 ` James Simmons
2003-03-07 12:08 ` Thomas Winischhofer
2003-03-07 12:21 ` Geert Uytterhoeven
2003-03-07 18:19 ` James Simmons
2003-03-07 14:01 ` Antonino Daplas
2003-03-07 15:19 ` Thomas Winischhofer
2003-03-07 16:19 ` Antonino Daplas
2003-03-07 17:00 ` Thomas Winischhofer
2003-03-07 17:42 ` Antonino Daplas
2003-03-07 18:31 ` James Simmons
2003-03-07 17:49 ` Thomas Winischhofer
2003-03-11 16:23 ` James Simmons
2003-03-07 20:12 ` Antonino Daplas
2003-03-07 20:51 ` Thomas Winischhofer
2003-03-08 0:58 ` Antonino Daplas
2003-03-08 5:40 ` Antonino Daplas
2003-03-08 14:11 ` Thomas Winischhofer
2003-03-08 14:20 ` Thomas Winischhofer
2003-03-08 22:03 ` Antonino Daplas
2003-03-09 3:47 ` Thomas Winischhofer
2003-03-09 6:18 ` Antonino Daplas
2003-03-07 18:30 ` James Simmons
2003-03-11 16:07 ` James Simmons
2003-03-11 21:03 ` Thomas Winischhofer
2003-03-05 19:16 ` James Simmons
2003-03-05 19:30 ` Geert Uytterhoeven
2003-03-05 19:34 ` James Simmons
2003-03-05 22:13 ` Thomas Winischhofer
2003-03-05 23:53 ` James Simmons
2003-03-06 8:33 ` Geert Uytterhoeven
2003-03-06 9:00 ` Sven Luther
2003-03-06 9:03 ` Antonino Daplas
2003-03-11 16:29 ` James Simmons
2003-03-11 20:07 ` Antonino Daplas
2003-03-11 20:56 ` Thomas Winischhofer
2003-03-11 21:45 ` Antonino Daplas
2003-03-11 22:23 ` Thomas Winischhofer
2003-03-11 22:51 ` Antonino Daplas
2003-03-12 0:07 ` Michel Dänzer
2003-03-12 1:02 ` Antonino Daplas
2003-03-12 1:29 ` Michel Dänzer
2003-03-12 8:24 ` Geert Uytterhoeven
2003-03-12 15:56 ` Michel Dänzer
2003-03-11 22:27 ` Thomas Winischhofer
2003-03-11 22:51 ` Antonino Daplas
2003-03-11 23:12 ` Thomas Winischhofer
2003-03-05 14:12 ` Geert Uytterhoeven
2003-03-05 14:18 ` Thomas Winischhofer
2003-03-05 14:16 ` Thomas Winischhofer
2003-03-05 15:25 ` Antonino Daplas
2003-03-05 14:22 ` Thomas Winischhofer
2003-03-05 19:02 ` James Simmons
2003-03-06 1:18 ` Antonino Daplas
2003-03-05 18:57 ` James Simmons
[not found] <CAGEeD9YPvDhbt7KFvLOJ6W99UM_Jck6PFF6HV2h=B5u2gChggg@mail.gmail.com>
2017-10-04 6:58 ` Никита Горбунов
2017-10-05 6:09 ` Sitsofe Wheeler
-- strict thread matches above, loose matches on Subject: below --
2016-04-27 15:21 Akira Yokosawa
[not found] ` <20160427165357.GD4967@linux.vnet.ibm.com>
2016-04-27 22:15 ` Akira Yokosawa
2016-04-27 22:50 ` Paul E. McKenney
2016-04-27 23:01 ` Akira Yokosawa
2016-04-27 23:28 ` Paul E. McKenney
2016-04-28 15:39 ` Akira Yokosawa
2016-04-28 16:28 ` Paul E. McKenney
2016-04-28 23:05 ` Akira Yokosawa
2016-04-29 16:00 ` Akira Yokosawa
2016-04-29 17:15 ` Paul E. McKenney
2016-04-29 22:06 ` Akira Yokosawa
2016-04-30 1:05 ` Paul E. McKenney
2012-01-27 13:12 Артём Алексюк
2010-11-09 20:31 connecting ieee80211_hw and net_device Zoltan Herczeg
2010-11-10 0:26 ` Johannes Berg
2010-11-11 14:20 ` Zoltan Herczeg
2010-11-12 22:33 ` Zoltan Herczeg
2010-11-16 17:50 ` some questions Zoltan Herczeg
2010-03-08 5:08 Some questions Tiago Maluta
2008-08-22 7:31 some questions Thomas Pasch
2008-08-22 8:53 ` Matthieu Moy
2008-08-22 14:08 ` Shawn O. Pearce
2008-08-22 9:28 ` Jakub Narebski
2008-08-22 14:15 ` Shawn O. Pearce
2008-05-04 16:16 David Arendt
[not found] ` <481DE17B.3080407-/LHdS3kC8BfYtjvyW6yDsg@public.gmane.org>
2008-05-05 15:55 ` Ryusuke Konishi
[not found] ` <20080506.005511.117028003.ryusuke-sG5X7nlA6pw@public.gmane.org>
2008-05-05 16:38 ` Ryusuke Konishi
2008-04-25 9:06 Some Questions James Scott
2008-04-26 7:48 ` Morten K. Poulsen
2008-04-27 9:47 ` James Scott
2003-08-19 15:53 Some questions Joerg Sommer
2001-10-05 12:50 Justin R. Smith
2001-10-05 13:57 ` Stephen Smalley
2001-10-05 16:36 ` Paul Krumviede
1998-06-05 22:34 Alex deVries
1998-06-06 0:25 ` Ariel Faigon
1998-06-06 0:25 ` Ariel Faigon
1998-06-06 6:32 ` Peter Maydell
1998-06-06 15:36 ` Jeremy John Welling
1998-06-08 6:14 ` ralf
1998-06-09 0:17 ` Steve Rikli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1046870342.1291.86.camel@localhost.localdomain \
--to=adaplas@pol.net \
--cc=linux-fbdev-devel@lists.sourceforge.net \
--cc=thomas@winischhofer.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.