Have a look at the following problem:
framebuffer memory size is 8MB
xres is 800, yres is 600, bpp is 8.
xres_virtual is 1024, yres_virtual is 8192.
font dimensions 8x16
check_var() and set_par() are called, set_par() decides that ywrap
scrolling is possible and sets FBINFO_HWACCEL_YWRAP.
Well, that decision is _wrong_ as 600/16 results in a 37 line display
height, 8 pixel lines at the bottom are unused. But they are displayed,
and obviously they contain garbage as YWRAP scrolling is selected by
updatescrollmode().
As the driver does know nothing about fonts, the obvious place to
change is updatescrollmode().
int good_wrap = (cap & FBINFO_HWACCEL_YWRAP) &&
divides(ywrap, vc->vc_font.height) &&
divides(vc->vc_font.height, vyres) &&
divides(vc->vc_font.height, yres);
would be a solution, but I don´t like it. There is no real reason that
ywrap
scrolling should be disallowed when divides(vc->vc_font.height, vyres)
or divides(vc->vc_font.height, yres) are false ... only limitations of the
fbcon scrolling code.
Has someone already written code to remove that limitation?
cu,
Knut
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
From: "Antonino A. Daplas" <adaplas@gmail.com> Date: 2005-12-13 00:36:39
Knut Petersen wrote:
Have a look at the following problem:
framebuffer memory size is 8MB
xres is 800, yres is 600, bpp is 8.
xres_virtual is 1024, yres_virtual is 8192.
font dimensions 8x16
check_var() and set_par() are called, set_par() decides that ywrap
scrolling is possible and sets FBINFO_HWACCEL_YWRAP.
Well, that decision is _wrong_ as 600/16 results in a 37 line display
height, 8 pixel lines at the bottom are unused. But they are displayed,
and obviously they contain garbage as YWRAP scrolling is selected by
updatescrollmode().
I agree.
As the driver does know nothing about fonts, the obvious place to
change is updatescrollmode().
int good_wrap = (cap & FBINFO_HWACCEL_YWRAP) &&
divides(ywrap, vc->vc_font.height) &&
divides(vc->vc_font.height, vyres) &&
divides(vc->vc_font.height, yres);
would be a solution, but I don´t like it. There is no real reason that
It's a solution, and the correct one with the current code.
ywrap
scrolling should be disallowed when divides(vc->vc_font.height, vyres)
or divides(vc->vc_font.height, yres) are false ... only limitations of the
fbcon scrolling code.
Has someone already written code to remove that limitation?
None that I know of. Unfortunately, there's only a sprinkling of hardware
that supports ywrap, so you're the best bet to do that (hint, hint :-)
Tony
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
Have a look at the following problem:
framebuffer memory size is 8MB
xres is 800, yres is 600, bpp is 8.
xres_virtual is 1024, yres_virtual is 8192.
font dimensions 8x16
check_var() and set_par() are called, set_par() decides that ywrap
scrolling is possible and sets FBINFO_HWACCEL_YWRAP.
Well, that decision is _wrong_ as 600/16 results in a 37 line display
height, 8 pixel lines at the bottom are unused. But they are displayed,
and obviously they contain garbage as YWRAP scrolling is selected by
updatescrollmode().
As the driver does know nothing about fonts, the obvious place to
change is updatescrollmode().
int good_wrap = (cap & FBINFO_HWACCEL_YWRAP) &&
divides(ywrap, vc->vc_font.height) &&
divides(vc->vc_font.height, vyres) &&
divides(vc->vc_font.height, yres);
would be a solution, but I don�t like it. There is no real reason that ywrap
scrolling should be disallowed when divides(vc->vc_font.height, vyres)
or divides(vc->vc_font.height, yres) are false ... only limitations of the
fbcon scrolling code.
Has someone already written code to remove that limitation?
This used to work fine (garbage in borders was cleared when fbcon did
pan/wrap), so I consider it a regression.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
This used to work fine (garbage in borders was cleared when fbcon did
pan/wrap), so I consider it a regression.
Well, it definitely is broken. If you don´t have a quick fix, we should
disable
that code path for 2.6.15 as I suggested.
Our goal should be
int good_wrap = (cap & FBINFO_HWACCEL_YWRAP) &&
divides(ywrap, vc->vc_font.height) &&
- divides(vc->vc_font.height, vyres) &&
- divides(vc->vc_font.height, yres);
for one of the next releases.
cu,
Knut
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
This used to work fine (garbage in borders was cleared when fbcon did
pan/wrap), so I consider it a regression.
Well, it definitely is broken. If you don´t have a quick fix, we should
disable
that code path for 2.6.15 as I suggested.
Our goal should be
int good_wrap = (cap & FBINFO_HWACCEL_YWRAP) &&
divides(ywrap, vc->vc_font.height) &&
- divides(vc->vc_font.height, vyres) &&
- divides(vc->vc_font.height, yres);
for one of the next releases.
You're right, I was confused with ypan. Upon more reflections, for ywrap, it
probably never worked before.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
From: "Antonino A. Daplas" <adaplas@gmail.com> Date: 2005-12-13 16:04:50
Knut Petersen wrote:
quoted
This used to work fine (garbage in borders was cleared when fbcon did
pan/wrap), so I consider it a regression.
Well, it definitely is broken. If you don´t have a quick fix, we should
disable
that code path for 2.6.15 as I suggested.
What if you insert
fbcon_clear_margins(vc, 1);
after
ops->update_start(info);
in ywrap_up() and ywrap_down() inf fbcon.c?
Tony
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
From: "Antonino A. Daplas" <adaplas@gmail.com> Date: 2005-12-13 16:09:15
Antonino A. Daplas wrote:
Knut Petersen wrote:
quoted
quoted
This used to work fine (garbage in borders was cleared when fbcon did
pan/wrap), so I consider it a regression.
Well, it definitely is broken. If you don´t have a quick fix, we should
disable
that code path for 2.6.15 as I suggested.
What if you insert
fbcon_clear_margins(vc, 1);
after
ops->update_start(info);
in ywrap_up() and ywrap_down() inf fbcon.c?
Forget this, it won't work. ops->clear_margins will need to be
rewritten so it recognizes when it's in the ywrap boundary.
Tony
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click