1 I tried the following framebuffer drivers:
3 - TRIDENTFB is full of bugs. Acceleration is broken for Blade3D
4 graphics cores like the cyberblade/i1. It claims to support a great
5 number of devices, but documentation for most of these devices is
6 unfortunately not available. There is _no_ reason to use tridentfb
7 for cyberblade/i1 + CRT users. VESAFB is faster, and the one
8 advantage, mode switching, is broken in tridentfb.
10 - VESAFB is used by many distributions as a standard. Vesafb does
11 not support mode switching. VESAFB is a bit faster than the working
12 configurations of TRIDENTFB, but it is still too slow, even if you
15 - EPIAFB (you'll find it on sourceforge) supports the Cyberblade/i1
16 graphics core, but it still has serious bugs and developement seems
17 to have stopped. This is the one driver with TV-out support. If you
18 do need this feature, try epiafb.
20 None of these drivers was a real option for me.
22 I believe that is unreasonable to change code that announces to support 20
23 devices if I only have more or less sufficient documentation for exactly one
24 of these. The risk of breaking device foo while fixing device bar is too high.
26 So I decided to start CyBlaFB as a stripped down tridentfb.
28 All code specific to other Trident chips has been removed. After that there
29 were a lot of cosmetic changes to increase the readability of the code. All
30 register names were changed to those mnemonics used in the datasheet. Function
31 and macro names were changed if they hindered easy understanding of the code.
33 After that I debugged the code and implemented some new features. I'll try to
34 give a little summary of the main changes:
36 - calculation of vertical and horizontal timings was fixed
38 - video signal quality has been improved dramatically
42 - fillrect and copyarea were fixed and reenabled
44 - color expanding imageblit was newly implemented, color
45 imageblit (only used to draw the penguine) still uses the
48 - init of the acceleration engine was improved and moved to a
49 place where it really works ...
51 - sync function has a timeout now and tries to reset and
52 reinit the accel engine if necessary
54 - fewer slow copyarea calls when doing ypan scrolling by using
55 undocumented bit d21 of screen start address stored in
56 CR2B[5]. BIOS does use it also, so this should be safe.
58 - cyblafb rejects any attempt to set modes that would cause vclk
59 values above reasonable 230 MHz. 32bit modes use a clock
60 multiplicator of 2, so fbset does show the correct values for
61 pixclock but not for vclk in this case. The fbset limit is 115 MHz
64 - cyblafb rejects modes known to be broken or unimplemented (all
65 interlaced modes, all doublescan modes for now)
67 - cyblafb now works independant of the video mode in effect at startup
68 time (tridentfb does not init all needed registers to reasonable
71 - switching between video modes does work reliably now
73 - the first video mode now is the one selected on startup using the
74 vga=???? mechanism or any of
75 - 640x480, 800x600, 1024x768, 1280x1024
77 - refresh between 50 Hz and 85 Hz, 1 Hz steps (1280x1024-32
80 - pci retry and pci burst mode are settable (try to disable if you
81 experience latency problems)
83 - built as a module cyblafb might be unloaded and reloaded using
84 the vfb module and con2vt or might be used together with vesafb