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