|
From: James S. <jsi...@in...> - 2003-02-20 01:10:43
|
New updates to the fbdev layer. You can grab the diff from http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz or do a pull bk pull http://gkernel.bkbits.net/fbdev-2.5 This will update the following files: drivers/video/maxinefb.h | 37 drivers/video/pm2fb.h | 218 --- drivers/video/pm3fb.h | 1284 -------------------- drivers/video/pmag-ba-fb.h | 24 drivers/video/pmagb-b-fb.h | 32 drivers/video/sstfb.h | 355 ----- arch/mips64/Kconfig | 4 arch/ppc/syslib/prom.c | 3 arch/ppc/syslib/prom_init.c | 28 arch/ppc64/kernel/prom.c | 27 drivers/char/vt.c | 8 drivers/video/Kconfig | 17 drivers/video/Makefile | 3 drivers/video/aty/atyfb.h | 86 - drivers/video/aty/atyfb_base.c | 1804 ++++++++++++++--------------- drivers/video/aty/mach64_accel.c | 51 drivers/video/aty/mach64_ct.c | 356 +++-- drivers/video/aty/mach64_cursor.c | 4 drivers/video/aty/mach64_gx.c | 18 drivers/video/aty128fb.c | 162 +- drivers/video/cfbcopyarea.c | 42 drivers/video/cfbfillrect.c | 12 drivers/video/cfbimgblt.c | 100 - drivers/video/console/fbcon.c | 333 ----- drivers/video/console/fbcon.h | 3 drivers/video/console/newport_con.c | 69 - drivers/video/console/vgacon.c | 673 +++++----- drivers/video/fbmem.c | 306 ++-- drivers/video/fbmon.c | 3 drivers/video/hgafb.c | 9 drivers/video/i810/i810.h | 9 drivers/video/i810/i810_accel.c | 150 +- drivers/video/i810/i810_main.c | 486 ++----- drivers/video/i810/i810_main.h | 14 drivers/video/logo/Kconfig | 67 + drivers/video/logo/Makefile | 27 drivers/video/logo/logo.c | 100 + drivers/video/logo/logo_dec_clut224.ppm | 1603 +++++++++++++++++++++++++ drivers/video/logo/logo_linux_clut224.ppm | 1603 +++++++++++++++++++++++++ drivers/video/logo/logo_linux_mono.pbm | 202 +++ drivers/video/logo/logo_linux_vga16.ppm | 1603 +++++++++++++++++++++++++ drivers/video/logo/logo_mac_clut224.ppm | 1603 +++++++++++++++++++++++++ drivers/video/logo/logo_parisc_clut224.ppm | 1603 +++++++++++++++++++++++++ drivers/video/logo/logo_sgi_clut224.ppm | 1603 +++++++++++++++++++++++++ drivers/video/logo/logo_sun_clut224.ppm | 1603 +++++++++++++++++++++++++ drivers/video/logo/logo_superh_clut224.ppm | 1603 +++++++++++++++++++++++++ drivers/video/logo/logo_superh_mono.pbm | 202 +++ drivers/video/logo/logo_superh_vga16.ppm | 1603 +++++++++++++++++++++++++ drivers/video/maxinefb.c | 2 drivers/video/modedb.c | 8 drivers/video/neofb.c | 81 - drivers/video/pm2fb.c | 2 drivers/video/pm3fb.c | 3 drivers/video/pmag-ba-fb.c | 2 drivers/video/pmagb-b-fb.c | 2 drivers/video/radeonfb.c | 1 drivers/video/riva/fbdev.c | 323 ++--- drivers/video/riva/nv_driver.c | 156 ++ drivers/video/riva/rivafb.h | 2 drivers/video/sgivwfb.c | 192 ++- drivers/video/skeletonfb.c | 6 drivers/video/sstfb.c | 14 drivers/video/tdfxfb.c | 6 drivers/video/tgafb.c | 2 drivers/video/tridentfb.c | 2 drivers/video/vga16fb.c | 127 +- include/linux/fb.h | 19 include/linux/linux_logo.h | 1435 ----------------------- include/video/mach64.h | 61 include/video/maxinefb.h | 37 include/video/pm3fb.h | 1284 ++++++++++++++++++++ include/video/pmag-ba-fb.h | 24 include/video/pmagb-b-fb.h | 32 include/video/sgivw.h | 40 include/video/sstfb.h | 355 +++++ include/video/vga.h | 16 scripts/Makefile | 4 scripts/pnmtologo |binary scripts/pnmtologo.c | 498 ++++++++ 79 files changed, 20264 insertions(+), 6227 deletions(-) through these ChangeSets: <jsi...@ma...> (03/02/19 1.913.1.3) [FBDEEV] Need to add support to build pnmtologo. <jsi...@ma...> (03/02/19 1.913.1.1) Removed obsolete functions in fbcon.c and re-enabled mapping console(s) to a framebuffer device. A few compile fixes for rivafb and using standard macros for vgacon.c. <jsi...@ma...> (03/02/16 1.913) [FBDEV] Data in struct fb_image is now const. [FBDEV] Updates to the logo code. We seperated it into two functions. [I810 FBDEV] Updates to the driver. PCI hooks for PCI supsend and resume to save the AGP GART mapping during power saving. [ATY 128] Add proper support for two graphics cards. Also added support for two more models of the Rage 128. [SGIVW FBDEV] Updates for the SGI Visual Workstation framebuffer. <jsi...@ma...> (03/02/13 1.910) [LOGO] New better logo code. [FBDEV] Moved a few more header files. <jsi...@ma...> (03/02/11 1.909) [FBCON] Removal of useless code. <jsi...@ma...> (03/02/11 1.906) [ATY FBDEV] Reversed mobilty patches. They busted every other card. <jsi...@ma...> (03/02/09 1.900) [ATY FBDEV] Updates to support Rage Mobility Chipstes. <jsi...@ma...> (03/01/30 1.899) [RIVA FBDEV] SUpprot Directcolor mode. Needed for some cards. <jsimmons@kozmo.(none)> (03/01/28 1.897) [NEOMAGIC FBDEV] Fix to work with no 21xx versions of the chip. <jsi...@ma...> (03/01/28 1.889.52.3) [RADEON FBDEV] Add cursor support. Now the cursor is back. [RIVA FBDEV] Added support for interlace mode and are now using TRUECOLOR instead of DIRECTCOLOR. Setting the graphics card in DIRECTCOLOR confusses the X server. <jsi...@ma...> (03/01/26 1.889.52.2) Accel rountines pass in constant data into each function. The reason being was some of the code in the upper layers depended on the data being passed to the low level function not be altered because the upper layers was altering the data themselves. Pan display fix for fbcon.c. p->vrow needed to be updated. PPC build fix for fbmon.c I810 fbdev updates. <jsi...@ma...> (03/01/17 1.889.52.1) [GENERIC ACCELERATION] Fixed the generic image drawing function tfor 64 bit machines. [RIVA FBDEV] The cursor and imageblit functions have been fixed. |
|
From: Jeff G. <jg...@po...> - 2003-02-20 01:18:43
|
James Simmons wrote: > New updates to the fbdev layer. You can grab the diff from > > http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz > > or do a pull > > bk pull http://gkernel.bkbits.net/fbdev-2.5 You need to fix your script... I do not think you posted your BK repo at "gkernel" ;-) Jeff |
|
From: James S. <jsi...@in...> - 2003-02-20 01:24:08
|
> James Simmons wrote: > > New updates to the fbdev layer. You can grab the diff from > > > > http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz > > > > or do a pull > > > > bk pull http://gkernel.bkbits.net/fbdev-2.5 > > > You need to fix your script... Oops. Sorry folks. I meant http://fbdev.bkbits.net/fbdev-2.5 |
|
From: Dave J. <da...@co...> - 2003-02-20 14:50:40
|
On Thu, Feb 20, 2003 at 01:09:33AM +0000, James Simmons wrote: > New updates to the fbdev layer. You can grab the diff from > http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz James, Whats the current status with matroxfb ? Its been broken for months now, and hasn't seen any progress wrt getting it back on its feet. I understand Petr had some concerns with the new API, but *something* needs to be done to get this back up and running. I'd understand if this was a neglected hardly-used-by-anyone driver, but there's an awful lot of matrox cards out there. This was first reported broken way back in 2.5.53, but I believe was broken even longer before that. Dave -- | Dave Jones. http://www.codemonkey.org.uk | SuSE Labs |
|
From: James S. <jsi...@in...> - 2003-02-20 15:08:51
|
> James, > Whats the current status with matroxfb ? Its been broken > for months now, and hasn't seen any progress wrt getting it > back on its feet. > > I understand Petr had some concerns with the new API, but > *something* needs to be done to get this back up and runn I have a newer driver but its not finished. The last month I have focused on finding work instead. |
|
From: Petr V. <van...@vc...> - 2003-02-20 18:29:54
|
On Thu, Feb 20, 2003 at 03:02:01PM +0000, Dave Jones wrote: > On Thu, Feb 20, 2003 at 01:09:33AM +0000, James Simmons wrote: > > > New updates to the fbdev layer. You can grab the diff from > > http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz > > James, > Whats the current status with matroxfb ? Its been broken > for months now, and hasn't seen any progress wrt getting it > back on its feet. > > I understand Petr had some concerns with the new API, but > *something* needs to be done to get this back up and running. > > I'd understand if this was a neglected hardly-used-by-anyone > driver, but there's an awful lot of matrox cards out there. > > This was first reported broken way back in 2.5.53, but I believe > was broken even longer before that. Since 2.5.51, when rewrite came in... You can get patch which reverts most of James's work at ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/matroxfb-2.5.59.gz. I was for five weeks in U.S., so I did not do anything with matroxfb during that time. I plan to use fillrect and copyrect from generic code (although it means unnecessary multiply on generic side, and division in matroxfb, but well, if we gave up on reasonable speed for fbdev long ago...). But I simply want loadfont and putcs hooks for character painting. And if fbdev maintainer does not want to give me them, well, then matroxfb and fbdev are not compatible. I refuse to remove features from matroxfb driver, and textmode support is one of current features (needed and required to be able to run VMware on fullscreen - and as main part of my job happens in VMware...). So there is couple of choices: (1) new maintainer, or (2) remove matroxfb from kernel, or (3) persuade me that I want to write matroxcon and forget about fbcon at all, or (4) something else I do not know about. Besides that with that strange additional copy in accel_putcs I get much slower output than with 2.4.x... and although I understand that for 2.6.x we'll all have faster computers than we had for 2.4.x, I still think that speed should be primary concern, and code extensibility and readability secondary. But well, I told it dozens of time, so why I bother. I do not want to end up as Larry. Petr Vandrovec van...@vc... |
|
From: James S. <jsi...@in...> - 2003-02-20 19:59:42
|
> I was for five weeks in U.S., so I did not do anything with > matroxfb during that time. I plan to use fillrect and copyrect > from generic code I have ported the accelerated functions to the new api. What is left is to deal with the loadfont and putcs issue which I'm working on the code right now. > (although it means unnecessary multiply on > generic side, and division in matroxfb, ???? > but well, if we gave > up on reasonable speed for fbdev long ago...). This is not true. Several benchmarks have shown a large performance improvement in 2.5.X. > But I simply > want loadfont and putcs hooks for character painting. And if > fbdev maintainer does not want to give me them, well, then > matroxfb and fbdev are not compatible. Working on it. I starting with Tony's tileblit patch but I plan to expand it even more i.e texture maps to draw fonts. > (3) persuade me that I want to write matroxcon and forget about fbcon at all, or This is the best solution. > Besides that with that strange additional copy in accel_putcs > I get much slower output than with 2.4.x... and although I Again not true. |
|
From: Antonino D. <ad...@po...> - 2003-02-20 22:00:15
|
On Fri, 2003-02-21 at 03:58, James Simmons wrote: > > > I was for five weeks in U.S., so I did not do anything with > > matroxfb during that time. I plan to use fillrect and copyrect > > from generic code > > I have ported the accelerated functions to the new api. What is left is to > deal with the loadfont and putcs issue which I'm working on the code right > now. > > > (although it means unnecessary multiply on > > generic side, and division in matroxfb, > > ???? > > > but well, if we gave > > up on reasonable speed for fbdev long ago...). > > This is not true. Several benchmarks have shown a large performance > improvement in 2.5.X. > 2.5.x might be a bit slower with bpp8 but at higher color depths is significantly faster. And this is done with a single generic color exapnd function that replaces the entire fbcon-cfb*.c in 2.4. And it will theoretically still draw correctly whatever the condition is (any bpp from 1-32, unaligned origin, pitch, width, etc). Drivers with accelerated color expansion, if done correctly, _should_ perform better whatever the color depth. However, using fonts with widths not divisible by 8 will be several folds slower. This should be helped if we add some form of tile/texture blitting support to fbdev. Note: I cannot test with 12x22 fonts in 2.4 because some/most drivers do not support it. Tony no accel scrollmode: yredraw font: 8x16 visual: packed pixels time cat /usr/src/linux/MAINTAINERS linux-2.4.20 bpp8 ---- real 0m2.499s user 0m0.000s sys 0m2.500s bpp16 ----- real 0m8.324s user 0m0.000s sys 0m8.320s bpp24 ----- real 0m12.364s user 0m0.000s sys 0m12.370s bpp32 ----- real 0m16.274s user 0m0.000s sys 0m16.280s linux-2.5.62 bpp8 ---- real 0m2.557s user 0m0.003s sys 0m2.553s bpp16 ----- real 0m4.051s user 0m0.002s sys 0m4.050s bpp24 ----- real 0m9.520s user 0m0.000s sys 0m9.520s bpp32 ----- real 0m7.496s user 0m0.002s sys 0m7.494s |
|
From: Geert U. <ge...@li...> - 2003-02-21 09:11:53
|
On 21 Feb 2003, Antonino Daplas wrote:
> Note: I cannot test with 12x22 fonts in 2.4 because some/most drivers do
> not support it.
Which specific drivers are you talking about? All drivers for popular cards
support fontwidth 12 (Matrox, ATI, nVidia, 3Dfx, Permedia, VESA, ...).
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@li...
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 D. <ad...@po...> - 2003-02-21 10:46:06
|
On Fri, 2003-02-21 at 17:09, Geert Uytterhoeven wrote: > On 21 Feb 2003, Antonino Daplas wrote: > > Note: I cannot test with 12x22 fonts in 2.4 because some/most drivers do > > not support it. > > Which specific drivers are you talking about? All drivers for popular cards > support fontwidth 12 (Matrox, ATI, nVidia, 3Dfx, Permedia, VESA, ...). > > You're absolutely correct, I'm wondering why I thought that :-) Here's a benchmark for 12x22, and it's 2x slower than 8x16, 2.4.x or 2.5.x. Still, the 2.5.x version is slower than 2.4.x. Tony no accel scrollmode: yredraw font: 12x22 visual: packed pixels time cat /usr/src/linux/MAINTAINERS linux 2.4.20 bpp8 ---- real 0m4.984s user 0m0.000s sys 0m4.940s bpp16 ----- real 0m9.188s user 0m0.000s sys 0m9.090s bpp24 ----- real 0m14.574s user 0m0.000s sys 0m14.380s bpp32 ----- real 0m18.578s user 0m0.000s sys 0m18.390s linux-2.5.62 bpp8 ---- real 0m5.247s user 0m0.001s sys 0m5.245s bpp16 ----- real 0m9.640s user 0m0.001s sys 0m9.591s bpp24 ----- real 0m15.943s user 0m0.001s sys 0m15.944s bpp32 ----- real 0m19.653s user 0m0.002s sys 0m19.651s |
|
From: Geert U. <ge...@li...> - 2003-02-21 11:05:16
|
On 21 Feb 2003, Antonino Daplas wrote:
> On Fri, 2003-02-21 at 17:09, Geert Uytterhoeven wrote:
> > On 21 Feb 2003, Antonino Daplas wrote:
> > > Note: I cannot test with 12x22 fonts in 2.4 because some/most drivers do
> > > not support it.
> >
> > Which specific drivers are you talking about? All drivers for popular cards
> > support fontwidth 12 (Matrox, ATI, nVidia, 3Dfx, Permedia, VESA, ...).
> >
> You're absolutely correct, I'm wondering why I thought that :-) Here's
> a benchmark for 12x22, and it's 2x slower than 8x16, 2.4.x or 2.5.x.
> Still, the 2.5.x version is slower than 2.4.x.
Because accel_putcs() falls back to individual character drawing if the
fontwidth is not a multiple of 8. Using one fb_imageblit() for other fontwidths
too would speed this up a lot (but needs some additional coding first).
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@li...
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: David S. M. <da...@re...> - 2003-02-21 01:00:41
|
On Thu, 2003-02-20 at 11:58, James Simmons wrote: > > (3) persuade me that I want to write matroxcon and forget about fbcon at all, or > > This is the best solution. And then we will have sbuscon as well, thus two places where putcs() is necessary. I don't understand, but I do hope that at some point it will be realized that maybe allowing fbcon to generically handle putcs() hardware is beneficial. I can dream. :-) |
|
From: Geert U. <ge...@li...> - 2003-02-21 09:06:25
|
On 20 Feb 2003, David S. Miller wrote:
> On Thu, 2003-02-20 at 11:58, James Simmons wrote:
> > > (3) persuade me that I want to write matroxcon and forget about fbcon at all, or
> >
> > This is the best solution.
Huh?
> And then we will have sbuscon as well, thus two places where
> putcs() is necessary.
>
> I don't understand, but I do hope that at some point it will be
> realized that maybe allowing fbcon to generically handle putcs()
> hardware is beneficial.
>
> I can dream. :-)
Don't worry, tile blitting will be there (eventually)...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@li...
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 D. <ad...@po...> - 2003-02-21 00:23:39
|
On Fri, 2003-02-21 at 02:29, Petr Vandrovec wrote: > > I was for five weeks in U.S., so I did not do anything with > matroxfb during that time. I plan to use fillrect and copyrect > from generic code (although it means unnecessary multiply on > generic side, and division in matroxfb, but well, if we gave > up on reasonable speed for fbdev long ago...). But I simply > want loadfont and putcs hooks for character painting. And if > fbdev maintainer does not want to give me them, well, then > matroxfb and fbdev are not compatible. Petr, I submitted the Tile Blitting patch to James some time ago, it has tilefill, tilecopy and tileblit hooks. These hooks should eliminate the "multiply in fbcon, divide in driver" bottleneck. It should result in the same behavior as you would expect in the the 2.4 API, so you can use text mode with your matroxfb driver. These same hooks will also help optimize drawing if we need to use fonts like 12x22. Tony |
|
From: Petr V. <van...@vc...> - 2003-03-03 20:35:11
|
On Fri, Feb 21, 2003 at 08:24:17AM +0800, Antonino Daplas wrote: > On Fri, 2003-02-21 at 02:29, Petr Vandrovec wrote: > > > > I was for five weeks in U.S., so I did not do anything with > > matroxfb during that time. I plan to use fillrect and copyrect > > from generic code (although it means unnecessary multiply on > > generic side, and division in matroxfb, but well, if we gave > > up on reasonable speed for fbdev long ago...). But I simply > > want loadfont and putcs hooks for character painting. And if > > fbdev maintainer does not want to give me them, well, then > > matroxfb and fbdev are not compatible. > > Petr, > > I submitted the Tile Blitting patch to James some time ago, it has > tilefill, tilecopy and tileblit hooks. These hooks should eliminate the > "multiply in fbcon, divide in driver" bottleneck. > > It should result in the same behavior as you would expect in the the 2.4 > API, so you can use text mode with your matroxfb driver. These same > hooks will also help optimize drawing if we need to use fonts like > 12x22. Hi, while waiting on these updates I updated matroxfb a bit (ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/matroxfb-2.5.63.gz), so that it now uses fb_* for cfb modes, and putcs/... hooks for text mode. I have still dozen of changes in fbcon.c which I have to eliminate (mainly logo painting and cursor handling - for now I still use revc method, mainly because of I did not make into it yet). But main thing is that I'd like to apologize to James - character painting is much faster for 8x16 fonts under 2.5.x than it was under 2.4.x, 8bpp unaccelerated 8x16 under 2.5.x is even faster than accelerated under 2.4.x. Algorithm for obtaining times was same as described in Documentation/fb/matroxfb.txt, with two differences: (1) hardware is G550 in P4/1.6GHz, and (2) there was 30MBps video stream feed to secondary G550 head of G550 during 2.4.19-pre6 tests, so I made 2.5.x tests twice, once with fbtv running and once without. My main concern now is 12x22 font... Accelerator setup is so costly for each separate painted character that for 8bpp accelerated version is even slower than unaccelerated one :-( (and almost twice as slow when compared with 2.4.x). And one (or two...) generic questions: why is not pseudo_palette u32* pseudo_palette, or even directly u32 pseudo_palette[17] ? And why we do not fill this pseudo_palette with i * 0x01010101U for 8bpp pseudocolor and i * 0x11111111U for 4bpp pseudocolor? This allowed me to remove couple of switches and tests from acceleration fastpaths (and from cfb_imageblit and cfb_fillrect, but I did not changed these two in my benchmarks below). Best regards, Petr Vandrovec van...@vc... NOACCEL, 8x16 2.4.19+fbtv 2.5.63+fbtv 2.5.63 8bpp 10.02 6.96 5.62 16bpp 20.05 13.25 10.62 24bpp 30.03 19.05 15.13 32bpp 45.00 25.74 20.54 ACCEL, 8x16 2.4.19+fbtv 2.5.63+fbtv 2.5.63 8bpp 7.48 3.38 3.00 16bpp 7.50 3.38 3.01 24bpp 7.53 3.56 3.53 32bpp 8.95 4.37 4.33 NOACCEL, 12x22 2.4.19+fbtv 2.5.63+fbtv 2.5.63 8bpp 11.54 13.35 10.93 16bpp 20.00 22.02 18.03 24bpp 30.03 35.83 29.53 32bpp 40.12 44.48 36.75 ACCEL, 12x22 2.4.19+fbtv 2.5.63+fbtv 2.5.63 8bpp 8.57 14.87 12.90 16bpp 8.57 14.93 12.92 24bpp 8.56 15.13 13.10 32bpp 8.56 15.52 13.76 |
|
From: Geert U. <ge...@li...> - 2003-03-03 21:26:55
|
On Mon, 3 Mar 2003, Petr Vandrovec wrote:
> My main concern now is 12x22 font... Accelerator setup
> is so costly for each separate painted character that for 8bpp
> accelerated version is even slower than unaccelerated one :-(
> (and almost twice as slow when compared with 2.4.x).
Have you already tried Antonino's patches to use one imageblit for multiple
characters with (fontwidth % 8) != 0? It should help.
BTW, I still have to try it with amifb.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@li...
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 D. <ad...@po...> - 2003-03-03 21:31:24
|
On Tue, 2003-03-04 at 04:35, Petr Vandrovec wrote: > My main concern now is 12x22 font... Accelerator setup > is so costly for each separate painted character that for 8bpp > accelerated version is even slower than unaccelerated one :-( > (and almost twice as slow when compared with 2.4.x). I submitted a patch to James, which he already applied to his tree, that addresses this problem. It conglomerates the series of bitmaps into 1, so only one fb_imageblit is necessary. It should give faster painting than the original 2.5.x code, hopefully faster than 2.4.x code, but slower than 8x16 painting because of the additional packing. > > And one (or two...) generic questions: why is not pseudo_palette > u32* pseudo_palette, or even directly u32 pseudo_palette[17] ? Yes, all drivers should treat the pseudo_palette as u32* anyway, so why not change pseudo-palette from void* to u32*? > And why we do not fill this pseudo_palette with > i * 0x01010101U for 8bpp pseudocolor and i * 0x11111111U for 4bpp > pseudocolor? This allowed me to remove couple of switches and tests > from acceleration fastpaths (and from cfb_imageblit and cfb_fillrect, > but I did not changed these two in my benchmarks below). I also agree for a different reason. Cards with unconventional formats (such as monochrome at 8 bpp - 0 for black , 0xff for white) will not work with the current code. Tony |
|
From: James S. <jsi...@in...> - 2003-03-05 20:24:56
|
> > And one (or two...) generic questions: why is not pseudo_palette > > u32* pseudo_palette, or even directly u32 pseudo_palette[17] ? > > Yes, all drivers should treat the pseudo_palette as u32* anyway, so why > not change pseudo-palette from void* to u32*? See other email. > > And why we do not fill this pseudo_palette with > > i * 0x01010101U for 8bpp pseudocolor and i * 0x11111111U for 4bpp > > pseudocolor? This allowed me to remove couple of switches and tests > > from acceleration fastpaths (and from cfb_imageblit and cfb_fillrect, > > but I did not changed these two in my benchmarks below). > > I also agree for a different reason. Cards with unconventional formats > (such as monochrome at 8 bpp - 0 for black , 0xff for white) will not > work with the current code. Isn't that the job of setcolreg? |
|
From: Antonino D. <ad...@po...> - 2003-03-06 01:17:16
|
On Thu, 2003-03-06 at 04:23, James Simmons wrote: > > > > And one (or two...) generic questions: why is not pseudo_palette > > > u32* pseudo_palette, or even directly u32 pseudo_palette[17] ? > > > > Yes, all drivers should treat the pseudo_palette as u32* anyway, so why > > not change pseudo-palette from void* to u32*? > > See other email. > > > > And why we do not fill this pseudo_palette with > > > i * 0x01010101U for 8bpp pseudocolor and i * 0x11111111U for 4bpp > > > pseudocolor? This allowed me to remove couple of switches and tests > > > from acceleration fastpaths (and from cfb_imageblit and cfb_fillrect, > > > but I did not changed these two in my benchmarks below). > > > > I also agree for a different reason. Cards with unconventional formats > > (such as monochrome at 8 bpp - 0 for black , 0xff for white) will not > > work with the current code. > > Isn't that the job of setcolreg? > setcolreg does that for directcolor and truecolor modes, because they're the only ones that uses the pseudo_palette. See all driver codes, the pseudo_palette is never initialized if in pseudo_color. The purpose of the pseudo_palette is to enable to write pixels to the framebuffer without knowing the color format at all. So, if you have monochrome, then black is 0 and white is 1. But for monochrome 8bpp, black is 0 and white is 0xff. fbcon will send 0's and 1's, thus 0 and 1 will be written to the framebuffer. If the drawing functions referred to the pseudo_palette, whatever the visual format, then 0 and 0xff will be written, as it should be. Tony > > > ------------------------------------------------------- > This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger > for complex code. Debugging C/C++ programs can leave you feeling lost and > disoriented. TotalView can help you find your way. Available on major UNIX > and Linux platforms. Try it free. www.etnus.com > _______________________________________________ > Linux-fbdev-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel |
|
From: Jurriaan <thu...@xs...> - 2003-03-04 21:29:47
|
From: Petr Vandrovec <van...@vc...> Date: Mon, Mar 03, 2003 at 09:35:00PM +0100 > On Fri, Feb 21, 2003 at 08:24:17AM +0800, Antonino Daplas wrote: > > On Fri, 2003-02-21 at 02:29, Petr Vandrovec wrote: > > > > > > I was for five weeks in U.S., so I did not do anything with > > > matroxfb during that time. I plan to use fillrect and copyrect > > > from generic code (although it means unnecessary multiply on > > > generic side, and division in matroxfb, but well, if we gave > > > up on reasonable speed for fbdev long ago...). But I simply > > > want loadfont and putcs hooks for character painting. And if > > > fbdev maintainer does not want to give me them, well, then > > > matroxfb and fbdev are not compatible. > > > > Petr, > > > > I submitted the Tile Blitting patch to James some time ago, it has > > tilefill, tilecopy and tileblit hooks. These hooks should eliminate the > > "multiply in fbcon, divide in driver" bottleneck. > > > > It should result in the same behavior as you would expect in the the 2.4 > > API, so you can use text mode with your matroxfb driver. These same > > hooks will also help optimize drawing if we need to use fonts like > > 12x22. > > Hi, > while waiting on these updates I updated matroxfb a bit > (ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/matroxfb-2.5.63.gz), > so that it now uses fb_* for cfb modes, and putcs/... hooks for > text mode. There is a regression here: I boot my kernel like this: kernel /boot/vmlinuz-2563matrox root=/dev/hda7 video=matrox:vesa:0x11E,fv:80,sgram hdc=scsi apm=smp apm=power-off nosmp=1 and have the following .config: CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y CONFIG_AGP=y CONFIG_AGP_VIA=y CONFIG_DRM=y CONFIG_DRM_MGA=y CONFIG_RAW_DRIVER=y CONFIG_VGA_CONSOLE=y CONFIG_VIDEO_SELECT=y CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_PCI_CONSOLE=y CONFIG_FBCON_ADVANCED=y CONFIG_FONT_SUN12x22=y CONFIG_FONTS=y CONFIG_FB_MATROX=y CONFIG_FB_MATROX_G450=y CONFIG_FB_MATROX_G100=y CONFIG_FB_MATROX_I2C=y CONFIG_FB_MATROX_MAVEN=y CONFIG_FBCON_CFB8=y CONFIG_FBCON_CFB16=y CONFIG_FBCON_CFB24=y CONFIG_FBCON_CFB32=y CONFIG_FBCON_ACCEL=y matroxfb: Matrox G400 (AGP) detected matroxfb: MTRR's turned on matroxfb: 1600x1200x16bpp (virtual: 1600x5241) matroxfb: framebuffer at 0xD4000000, mapped to 0xe0805000, size 33554432 Console: switching to colour frame buffer device 133x54 fb0: MATROX VGA frame buffer device pty: 256 Unix98 ptys configured Linux agpgart interface v0.100 (c) Dave Jones agpgart: Detected VIA Apollo Pro 266T chipset agpgart: Maximum main memory to use for agp memory: 439M agpgart: AGP aperture is 64M @ 0xd0000000 [drm] Initialized mga 3.1.0 20021029 on minor 0 I see a continuous strip of alternating blocks, of sub-character size, at the extreme right end of my screen. The colors seem linked to the color of the line with the cursor in some way. After leaving XFRee, a piece of chbg's background picture is shown for a short while, then the blocks return. Kind regards, Jurriaan -- But the threat of disapproval had terrified me No more my soul will I reveal Wargasm - Chameleon GNU/Linux 2.5.63 SMP/ReiserFS 1x2793 bogomips load av: 1.18 0.46 0.17 |
|
From: Petr V. <van...@vc...> - 2003-03-04 21:46:42
|
On Tue, Mar 04, 2003 at 10:29:06PM +0100, Jurriaan wrote:
> > text mode.
>
> There is a regression here: I boot my kernel like this:
>
> kernel /boot/vmlinuz-2563matrox root=/dev/hda7 video=matrox:vesa:0x11E,fv:80,sgram hdc=scsi apm=smp apm=power-off nosmp=1
>
> I see a continuous strip of alternating blocks, of sub-character size,
> at the extreme right end of my screen. The colors seem linked to the
> color of the line with the cursor in some way.
>
> After leaving XFRee, a piece of chbg's background picture is shown for a
> short while, then the blocks return.
Reproduced. Try this (untested) (it is against clean tree, so you'll
get some line offsets if you had applied my matroxfb patch). Or set
xres to odd value, even values do not work...
Petr Vandrovec
--- linux/drivers/video/console/fbcon.c 2003-03-03 18:42:37.000000000 +0100
+++ linux/drivers/video/console/fbcon.c 2003-03-04 22:44:05.000000000 +0100
@@ -456,7 +456,7 @@
region.color = attr_bgcol_ec(p, vc);
region.rop = ROP_COPY;
- if (rw & !bottom_only) {
+ if (rw && !bottom_only) {
region.dx = info->var.xoffset + rs;
region.dy = 0;
region.width = rw;
|
|
From: Petr V. <van...@vc...> - 2003-03-09 21:29:14
|
Hi James,
I tried to use fb_cursor and I have quite a lot problems with
it:
(1) it uses global variables for storing last cursor value -
- but there is no global hardware, so after switching from
one fbdev to another you can have cursor with wrong shape,
wrong color and so on...
(2) callback from timer for cursor blinking may set almost any
FB_CUR_* bits. But in this case fb_cursor callback may be
called from interrupt context, while accelerator is busy
and so on... Did I miss some synchronization? Best for me
would be disabling blinking code in fbcon completely:
in VGA mode cursor blinks automatically, and in graphics mode
more lightweight only 'flash' callback is more appropriate
for me. But then there is problem with
(3) cursor_undrawn... I have no idea how is this supposed to work
if fbdev provides hardware cursor... And HZ/50 delay after
putcs makes orientation on screen very complicated, as there
is no cursor while new characters are appearing on screen.
Thanks,
Petr Vandrovec
van...@vc...
|
|
From: Antonino D. <ad...@po...> - 2003-03-09 22:29:53
|
On Mon, 2003-03-10 at 05:29, Petr Vandrovec wrote:
> Hi James,
> I tried to use fb_cursor and I have quite a lot problems with
> it:
> (1) it uses global variables for storing last cursor value -
> - but there is no global hardware, so after switching from
> one fbdev to another you can have cursor with wrong shape,
> wrong color and so on...
> (2) callback from timer for cursor blinking may set almost any
> FB_CUR_* bits. But in this case fb_cursor callback may be
> called from interrupt context, while accelerator is busy
> and so on... Did I miss some synchronization? Best for me
> would be disabling blinking code in fbcon completely:
> in VGA mode cursor blinks automatically, and in graphics mode
> more lightweight only 'flash' callback is more appropriate
> for me. But then there is problem with
I've also noticed problems with 1 and 2, and I submitted a patch to
James that allocates resources on a per device basis instead of being
global and statically allocated. This includes the cursor data
structures, cursor timer/vbl interrupt service, putcs buffer, and
optionally the softback buffer. The last is probably not very important
for the present setup but may become useful later on (ie, multiple
active consoles).
As for synchronization, I was meaning to ask some pointers on that. The
setup currently works like this:
(blink)
fbcon_cursor fbcon_vbl_handler (interrupt or timer)
| |
-----------------------
|
accel_cursor
|
-----------------------
| |
hardware soft_cursor accel_putcs accel_putc
| | |
-------------- -----------------
|
fb_get_buffer_offset
|
xxxfb_imageblit
|
-------------------
| |
hardware software
I was thinking of placing locks in accel_cursor and
fb_get_buffer_offset, but I'm not sure.
> (3) cursor_undrawn... I have no idea how is this supposed to work
In the present cursor api, the driver just needs to draw/undraw the
cursor whether by software or hardware. So the problem here is with
cursors that does it's own blinking, such as text modes.
> if fbdev provides hardware cursor... And HZ/50 delay after
> putcs makes orientation on screen very complicated, as there
> is no cursor while new characters are appearing on screen.
The delay is only for the blinking. After drawing a character/stream of
characters, an explicit "draw cursor" command immediately follows (I
think) via fbcon_cursor.
Tony
|
|
From: Petr V. <van...@vc...> - 2003-03-09 22:55:04
|
On Mon, Mar 10, 2003 at 06:27:14AM +0800, Antonino Daplas wrote:
> On Mon, 2003-03-10 at 05:29, Petr Vandrovec wrote:
>
> As for synchronization, I was meaning to ask some pointers on that. The
> setup currently works like this:
>
> (blink)
> fbcon_cursor fbcon_vbl_handler (interrupt or timer)
> | |
> -----------------------
> |
> accel_cursor
> |
> -----------------------
> | |
> hardware soft_cursor accel_putcs accel_putc
> | | |
> -------------- -----------------
> |
> fb_get_buffer_offset
> |
> xxxfb_imageblit
> |
> -------------------
> | |
> hardware software
>
>
> I was thinking of placing locks in accel_cursor and
> fb_get_buffer_offset, but I'm not sure.
Maybe just auditing code is enough: cursor_on should be zero while
we are inside accel_putc/putcs (or inside any other fb function), and
if cursor_on is zero, fbcon_vbl_handler should do nothing. So just making
sure that fbcon_vbl_handler is not running on other CPU while we set
cursor_on = 0 should be enough.
> > if fbdev provides hardware cursor... And HZ/50 delay after
> > putcs makes orientation on screen very complicated, as there
> > is no cursor while new characters are appearing on screen.
>
> The delay is only for the blinking. After drawing a character/stream of
> characters, an explicit "draw cursor" command immediately follows (I
> think) via fbcon_cursor.
Why we schedule cursor painting at all then? While we are inside putcs,
we cannot paint cursor anyway (as we are busy with painting characters
at cursor position...) and fbcon_cursor(CM_DRAW) should restart timer interval
anyway (so you see cursor while you type characters, and not like Solaris
where cursor appears after you stop typing characters) (unfortunately when
I tried to verify how it behaves on secondary head of matrox (which does not
have hardware cursor), I made a typo and ...
Unable to handle kernel NULL pointer dereference at virtual address 00000196
printing eip:
c02f9258
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0060:[<c02f9258>] Tainted: PFS
EFLAGS: 00010202
EIP is at fb_open+0x28/0xf0
eax: c6ed2c30 ebx: 00000020 ecx: 00000001 edx: c04848e0
esi: 00000002 edi: 00000000 ebp: c6ed2c30 esp: c4bb3f18
ds: 007b es: 007b ss: 0068
Process con2fb (pid: 18180, threadinfo=c4bb2000 task=d874d940)
Stack: 00000006 c8a8aae4 c4bb2000 00000000 c8a8aae4 c01669ea c6ed2c30 c8a8aae4
dffe6830 c01435e3 c8a8aae4 c6ed2c30 dffe6830 00000000 c015af91 c6ed2c30
c8a8aae4 00000002 bffffe7a dcaa5000 c4bb2000 c015adb7 ca74978c dffe6830
Call Trace:
[<c01669ea>] chrdev_open+0xaa/0x110
[<c01435e3>] file_ra_state_init+0x23/0x40
[<c015af91>] dentry_open+0x1d1/0x1f0
[<c015adb7>] filp_open+0x67/0x70
[<c015b26b>] sys_open+0x5b/0x90
[<c0109983>] syscall_call+0x7/0xb
Code: 8b 86 94 01 00 00 b9 01 00 00 00 8b 10 85 d2 74 1c b8 00 e0
so I'll have to check it tomorrow on real dualhead system...)
Petr Vandrovec
van...@vc...
|
|
From: Antonino D. <ad...@po...> - 2003-03-09 23:47:13
|
On Mon, 2003-03-10 at 06:54, Petr Vandrovec wrote: > On Mon, Mar 10, 2003 at 06:27:14AM +0800, Antonino Daplas wrote: > > On Mon, 2003-03-10 at 05:29, Petr Vandrovec wrote: > > > > As for synchronization, I was meaning to ask some pointers on that. The > > setup currently works like this: > > > > (blink) > > fbcon_cursor fbcon_vbl_handler (interrupt or timer) > > | | > > ----------------------- > > | > > accel_cursor > > | > > ----------------------- > > | | > > hardware soft_cursor accel_putcs accel_putc > > | | | > > -------------- ----------------- > > | > > fb_get_buffer_offset > > | > > xxxfb_imageblit > > | > > ------------------- > > | | > > hardware software > > > > > > I was thinking of placing locks in accel_cursor and > > fb_get_buffer_offset, but I'm not sure. > > Maybe just auditing code is enough: cursor_on should be zero while > we are inside accel_putc/putcs (or inside any other fb function), and > if cursor_on is zero, fbcon_vbl_handler should do nothing. So just making > sure that fbcon_vbl_handler is not running on other CPU while we set > cursor_on = 0 should be enough. I think that's what happens. cursor_on is set to 0 at the beginning of fbcon_cursor(), and it remains 0 until the next fbcon_cursor() is CM_DRAW or CM_MOVE. And while cursor_on is 0, fbcon_vbl_handler just exits immediately. Yes, it's basically the code in 2.4, but instead of using revc, it uses imageblit, and instead of allowing the drivers to do the blinking, fbcon does it entirely, whether a hardware or software cursor method is installed. > > > > if fbdev provides hardware cursor... And HZ/50 delay after > > > putcs makes orientation on screen very complicated, as there > > > is no cursor while new characters are appearing on screen. > > > > The delay is only for the blinking. After drawing a character/stream of > > characters, an explicit "draw cursor" command immediately follows (I > > think) via fbcon_cursor. > > Why we schedule cursor painting at all then? While we are inside putcs, > we cannot paint cursor anyway (as we are busy with painting characters I don't think any cursor painting is done while doing putcs, if the CM_ERASE, putc/putcs, CM_DRAW/CM_MOVE sequence is followed. Note that I haven't verified if that particular sequence is followed, I just assume the console layer does. Tony |