FYI: Frame buffer console changes since 2.1.107

Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
Sun, 25 Oct 1998 21:05:17 +0100 (CET)


Due to popular demand (mainly Frank Neumann :-), I created a list of most
important changes in the frame buffer console code since 2.1.107, the first
official kernel that contained the abstract console code. The information in
this list was extracted from about 400 CVS checkin logs at vger.rutgers.edu.

- New frame buffer devices:

o acornfb
o bwtwofb: Sun BW2
o cgfourteenfb: Sun CG14
o cgsixfb: Sun CG6 (GX, GXplus)
o cgthreefb: Sun CG3
o chipsfb: Chips & Technologies 65550
o clgenfb: Cirrus Logic CL-GD542x/543x
o controlfb: PowerMac `control' display
o creatorfb: Sun Creator/Creator3D
o cvppcfb: Amiga CyberVisionPPC (3Dlabs Permedia 2)
o g364fb: Mips Magnum (Inmos G364)
o igafb: SPARC/PCI IGA 1682
o imsttfb: IMS Twin Turbo
o leofb: Sun Leo (ZX)
o matroxfb: Matrox Millenium I, II and Mystique.
o platinumfb: PowerMac `platinum' display
o sbusfb: SBUS or UPA based frame buffer device
o tcxfb: Sun TCX
o valkyriefb: PowerMac `valkyrie' display

- New console drivers:

o dummycon: dummy console driver
o kgicon: driver to masquerade KGI video drivers as frame buffer devices
o mdacon: MDA second head
o newport_con: SGI Indy
o promcon: SPARC PROM console

- New frame buffer console (fbcon) features:

o New scrollmode SCROLL_YREDRAW (smart redrawing) and SCROLL_YNOMOVE
(redraw for cases where no pan/wrap can be done).
o Handle arbitrary fontwidth & fontheights. Each display_switch provides
a bitmask, which fontwidths it supports. Cfb{8,16,24,32} now support
widths 4, 8, 12 and 16.
o New builtin fonts: acorn_8x8, sun8x16, sun12x22.
o Support 512 character fonts.
o Add a clear_margins() routine to struct display_switch. It clears the
unused right and bottom margin of the screen if the
screen{width,height} is not divisible by the font{width,height}, so it
doesn't contain garbage. Supported by cfb{8,16,24,32} (and most derived
hardware accelerated low level drivers) and iplan2p{2,4,8}.
o Low level fbcon-* drivers can be modules again.
o Scrollback on pan/wrap capable frame buffers.
o New `politically correct' logos. 16 color and bw are still the old
ones.
o Hardware cursor support.
o Little endian fixes for cfb2, cfb4, cfb24.
o TRUECOLOR and DIRECTCOLOR were incorrectly exchanged.
o Colormap changes: from now on, {set,get}colreg use 16 bit RGB values
instead of values rounded to the hardware's capabilities. This fixes
the DIRECTCOLOR problem.
o Add a dispsw_data field to struct display for dispsw specific data.
For cfb{16,24,32}, this is used for the map describing the console
color number to pixel data mapping. Frame buffer devices that want to
use fbcon_cfb{16,24,32} have to fill in a pointer to a 16 entry map.
This should solve the colormap problems with multiheaded cfb{16,24,32}
configurations, caused by the old global fbcon_cfb{16,24,32}_cmap maps.
o Added a command-line option (vc:..-..) allowing to choose consoles
which are to be taken over.
o display->dispsw may never be NULL. Use &fbcon_dummy if there's no
suitable low level driver available.
o Add a FBINFO_FLAG_MODULE into fb_info->flags, if low-level driver is a
module (thus refuse to show the logo).
o Add a FB_ACTIVATE_ALL flag to the FBIOPUT_VSCREENINFO ioctl so you can
change the video mode for all VCs mapped to a specific frame buffer
device at once.
o Moved include files from drivers/video to include/video
o Moved fbmem.c from drivers/char to drivers/video
o putc() now takes a char/attribute combination as argument
o putcs() now takes a pointer to an array of char/attribute combinations
as argument. All attributes in the array are guaranteed to be equal
o *_{open,release}() now take an extra parameter
o Merged frame buffer text type, with type_aux distinguishing between
MDA, CGA and S3 MMIO fasttext
o Frame buffer devices are now initialized from chr_dev_init(), i.e.
after the PCI and memory subsystems.
o Early console messages are handled by vgacon (VGA text console), or by
a very small dummy driver if vgacon is not available.
o When the first frame buffer device is initialized (can be builtin or a
loadable module), the frame buffer subsystem takes over the console.
o Since register_framebuffer() may cause the initialization of the frame
buffer device subsystem, it should not be called before all driver
specific stuff is initialized.
o Disable text Penguin logos (people hated them).
o Fix frame buffer cache mode for various architectures.
o Put the MacOS video mode database in a separate file (macmodes.c) so it
can be shared by all drivers.
o Move more Xpmac compatibility logic to offb.c so it can be shared.

- New generic console features:

o Fixed nasty races between normal console writes and keyboard echo. The
console write routine was _never_ reentrant (and it actually produced
nasty problems even in 2.0.X, but they were very rare since the console
was much faster than current fbcon is).
o Generic console code again allows character buffer of the foreground
console to be contained directly in video ram.
o Better coalescing of multiple characters to single putcs.
o Added simple multi-head support. For each display we have new variable
containing a pointer to currently visible console and struct vc_data
contains a new field pointing to that pointer.
o Introduced update_region for redrawing of screen parts, converted
update_screen to call this.
o Vgacon supports font changing, screen resizing, fast scrolling through
screen origin shifting, scrollback etc.

- Credits:

Jose Alonso
Andrew Apted
Philip Blundell
Thomas Bogendoerfer
Martin Costabel
Eddie C. Dost
Bernd Harries
Benjamin Herrenschmidt
Dan Jacobowitz
Jakub Jelinek
David D. Kilzer
Russell King
Gerd Knorr
Mike Lockwood
Alexander V. Lukyanov
Pavel Machek
Paul Mackerras
Martin Mares
David S. Miller
Ilario Nardinocchi
Barry Nathan
Frank Neumann
Ryan Nielsen
Gleb Raiko
Peter Remmers
Tom Rini
Vladimir Roganov
Tim Rowley
Jeff Rugen
Bernd Schmidt
Michael Schmitz
Kevin Schoedel
Andreas Schwab
Franz Sirl
Geert Uytterhoeven
Petr Vandrovec
Brian K. White
Pete Zaitcev

This list is incomplete with a very high probability. Please accept my
sincere apologies if I forgot to list your name.

Greetings,

Geert

--
Geert Uytterhoeven                     Geert.Uytterhoeven@cs.kuleuven.ac.be
Wavelets, Linux/{m68k~Amiga,PPC~CHRP}  http://www.cs.kuleuven.ac.be/~geert/
Department of Computer Science -- Katholieke Universiteit Leuven -- Belgium

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/