| Knut Petersen | 9fa68ea | 2005-09-09 13:04:56 -0700 | [diff] [blame^] | 1 | I tried the following framebuffer drivers: | 
|  | 2 |  | 
|  | 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. | 
|  | 9 |  | 
|  | 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 | 
|  | 13 | use ypan. | 
|  | 14 |  | 
|  | 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. | 
|  | 19 |  | 
|  | 20 | None of these drivers was a real option for me. | 
|  | 21 |  | 
|  | 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. | 
|  | 25 |  | 
|  | 26 | So I decided to start CyBlaFB as a stripped down tridentfb. | 
|  | 27 |  | 
|  | 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. | 
|  | 32 |  | 
|  | 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: | 
|  | 35 |  | 
|  | 36 | - calculation of vertical and horizontal timings was fixed | 
|  | 37 |  | 
|  | 38 | - video signal quality has been improved dramatically | 
|  | 39 |  | 
|  | 40 | - acceleration: | 
|  | 41 |  | 
|  | 42 | - fillrect and copyarea were fixed and reenabled | 
|  | 43 |  | 
|  | 44 | - color expanding imageblit was newly implemented, color | 
|  | 45 | imageblit (only used to draw the penguine) still uses the | 
|  | 46 | generic code. | 
|  | 47 |  | 
|  | 48 | - init of the acceleration engine was improved and moved to a | 
|  | 49 | place where it really works ... | 
|  | 50 |  | 
|  | 51 | - sync function has a timeout now and tries to reset and | 
|  | 52 | reinit the accel engine if necessary | 
|  | 53 |  | 
|  | 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. | 
|  | 57 |  | 
|  | 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 | 
|  | 62 | for 32 bpp modes. | 
|  | 63 |  | 
|  | 64 | - cyblafb rejects modes known to be broken or unimplemented (all | 
|  | 65 | interlaced modes, all doublescan modes for now) | 
|  | 66 |  | 
|  | 67 | - cyblafb now works independant of the video mode in effect at startup | 
|  | 68 | time (tridentfb does not init all needed registers to reasonable | 
|  | 69 | values) | 
|  | 70 |  | 
|  | 71 | - switching between video modes does work reliably now | 
|  | 72 |  | 
|  | 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 | 
|  | 76 | - 8, 16, 24 or 32 bpp | 
|  | 77 | - refresh between 50 Hz and 85 Hz, 1 Hz steps (1280x1024-32 | 
|  | 78 | is limited to 63Hz) | 
|  | 79 |  | 
|  | 80 | - pci retry and pci burst mode are settable (try to disable if you | 
|  | 81 | experience latency problems) | 
|  | 82 |  | 
|  | 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 | 
|  | 85 |  |