whycyblafb 3.4 KB

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