trusty (7) svgalib.faq.7.gz

Provided by: libsvga1_1.4.3-33_amd64 bug

NAME

       svgalib.faq - frequently asked questions about svgalib

INTRODUCTION

       I  (Matan Ziv-Av), added/changed some of the answers in this file, so some answers are mine, and some are
       Michael's.

       List of (recently) frequently asked questions about svgalib. Esp. about it's status  and  future.  Please
       note  that  as  of now all answers are just written by me, Michael Weller <eowmob@exp-math.uni-essen.de>.
       I'd like this to change. So email your suggestion (best of all: question and the answer).

       Also, most questions deal with the status and future and my ideas about it. Necessarily they  contain  my
       own  private  opinions  on this. People may disagree and I'm sure I don't have the best ideas about it or
       may even be completely wrong. I don't want to force anyone to agree with me.

       Also, I was asked about MY opinions, so I'm just presenting them here.

CONTENTS

       Q 1)   I want to write some svgalib application. Where is the documentation?

       Q 2)   My board is not supported. What now?

       Q 3)   I get:

              You must be the owner of the current console to use svgalib.
              Not running in a graphics capable console, and unable to find one.

              However, though logged in not directly from the linux console, I am the owner of the console.

       Q 4)   Is svgalib dead?

       Q 5)   There are so many Xfree drivers, why not just use them.

       Q 6)   Why not just use the VGA BIOS?.

       Q 7)   What about GGI?

       Q 8)   Why not just use X11?

       Q 9)   Now, again, what about the future of svgalib?

       Q 10)  Ok, just for completeness, what are your plans about svgalib anyway?

       Q 11)  Nice plan. But will it become true?

THE QUESTIONS

   Q 1)
       I want to write some svgalib application. Where is the documentation?

   A a)
       Well, did you really look at everything? The 0-README file  in  the  top  level  directory  contains  all
       function prototypes and explanations on how to call them.

       Yes,  the  documentation  is  short and/or confusing. Sorry, English is not my native tongue. Many people
       complain and want to write some better documentation. You are welcome to  do  so!  However,  up  to  now,
       either  people found the documentation sufficient once they looked at the correct files or they just gave
       up. At least, I never heard from these people again.

       Also, svgalib comes with source. If in doubt: read it.

       Finally: Linux distributions include svgalib, but not the source and README's (or hide them so good noone
       finds  them).  Well,  no  problem,  get full svgalib source, demos, readme's from svgalib-*.tar.gz on any
       Linux FTP server in your vicinity. Even if you don't dare to install  or  compile  it,  it  contains  the
       readme's.

       Oh yes, there are some simple demos in the demos/ subdir. They should get you started.

       When  someone writes man(1) manual pages, a distribution might just install them. Please do not complain,
       write them, mail them to me.

   A b)
       Finally, I, Michael Weller wrote the manpages. Looking at svgalib(7) should get  you  started.  Additions
       and corrections are still welcome, of course.

   Q 2)
       My board is not supported. What now?

   A)
       Simple:

       a)     Contact the maintainers (see other README's) and check out if someone is working on a driver.

       b)     If so, contact them if you like and announce you'd be willing to test things or even help coding.

       c)     If  not,  write  a  driver. Get as many docs on your card as you can, then read and understand the
              internals of svgalib (again read the README's carefully!).

       Please understand that this is a free project. I will not go and buy a similar card and  write  a  driver
       for  you. I already wrote support for the hardware I have! I just do this as a hobby. Because I don't get
       paid for this I can not just buy card & docu and spend much much time supporting whatever  graphics  card
       on earth exists.

       Also read below on the future of svgalib.

       If  you  don't  feel  able  to write a driver for whatever reason, please do not complain if other people
       don't do it for you (because you are not better than they are).

   Q 3)
       I get:

       You must be the owner of the current console to use svgalib.
       Not running in a graphics capable console, and unable to find one.

       However, though logged in not directly from the linux console, I am the owner of the console.

   A)
       Alas, some programs use their suid root privilege and become a full root owned  process.  svgalib  thinks
       they  are  run by root which does not own the current console.  Defining ROOT_VC_SHORTCUT in Makefile.cfg
       and recompiling will allow svgalib to allocate a new VC. However, it will allow any person which is  able
       to  exec  that program to start in on a new console. Even if not logged in from the console at all. Thus,
       for security, you need to explicitly enable that root feature.

   Q 4)
       Is svgalib dead?

   A)
       This question comes up frequently esp. in recent times.

       The answer is, of course, no.

   Q 5)
       There are so many Xfree drivers, why not just use them.

   A)
       Well, actually much of the code in there is actually already used by  svgalib.  Xfree  coders  worked  on
       svgalib  and  vice  versa.  But  honestly,  do  not  expect that a driver from Xfree can just be used for
       svgalib. The internal structures of Xfree and svgalib (and GGI) are just too different. As  a  source  of
       knowledge and for one or the other subroutine, the Xfree sources are invaluable however.

   Q 6)
       Why not just use the VGA BIOS?.

   A)
       Actually,  we  do. There is now, thanks to Josh Vanderhoof, a VESA driver.  The VESA driver does not work
       on all cards, even though it should.  It does not even work on all cards where vbetest works. If  vbetest
       does  not  work it means the bios writers assumed it would always run in DOS, and used tricks (for delay,
       etc.) that can't work under Linux. If vbetest works, but the VESA  driver  does  not,  I  (Matan  Ziv-Av)
       believe  it  is  due  to the following reason: The driver use VESA function 4 (save/restore video state).
       This function can't be used in a singletasking environment (DOS) and as such, some bios writers failed to
       implement it properly, and all the tests (which are run under DOS) failed to discover this.

       The VESA driver does work with many cards though.

   Q 7)
       What about GGI?

   A)
       Yes,  GGI.  Another long story. At first: Yes, I like the idea of an in kernel graphics driver. I like it
       very much. And, yes, this is a bit weird because I am the svgalib maintainer and a working GGI will  make
       svgalib  obsolete.  Again,  I  already  said  above:  I did not invent svgalib nor do I promote it as the
       solution (now compare this to GGI). It just does what it does and works for me and some other people.

       I liked this idea so much, I even started coding a frame buffer device once. After a  short  time,  other
       people  came  out  with  the  GGI  idea. Right from their beginning they claimed to be the only source of
       wisdom. I tried to join our efforts, but failed. In general we have the same goals (read the GGI  project
       pages for that).

       Anyhow,  at  that time a flame war started. I don't really know why. I don't see I did anything else than
       offering my opinions, work and experience. But that should be judged by others.

       Well, after some time I stopped bothering them. I was satisfied to learn later though that they  actually
       came  up  with  some  conclusions  I  proposed first but weeks or months later. But let us leave the past
       alone.

       When intending to contribute to svgalib, you should think about what you really want. I  don't  see  that
       GGI  is  becoming  available soon. GGI people told me the opposite again and again, ok, I still don't see
       it. Still out of a sudden, everything might be GGI infested, so you might consider  contributing  to  GGI
       instead.

       With  svgalib you might be able to use your fruits earlier. And anyone (with supported hardware) can just
       use it right away without reinstalling kernel/X11 what else (maybe being unable to use something  he  did
       before).

   Q 8)
       Why not just use X11?

       Yes, this is what many people say. This is the common Unix way to do it.  X does it.

       But X has some drawbacks:

       i)     It  uses many resources. Admittedly this is becoming of lesser importance now, where you can run a
              sensible X11 Linux system on 8MB (16 MB for heaven like performance) which is the absolute minimum
              to get a simple text editor running under M$ windows.

              Still,  an  advantage  of Linux is the ability to use old hardware for mission critical background
              jobs on the net (servers/routers/firewalls) on low price or otherwise even unusable hardware.

       ii)    X has a nice API with draw commands for any kind of 'command oriented' screen output. I mean  with
              that: Select a color, draw a line, polygon, etc.

              This  imposes  a  bunch of overhead. If you just want access to the screen memory, it slows things
              down as hell. If you want just to use above's draw commands, it is ok!

       iii)   One can now circumvent the API restrictions by getting direct screen access using a special  Xfree
              extension. Basically Xfree just setups the screen and gives you shared memory access to the screen
              memory. IMHO, this is not much different from the shared memory X11 extension  by  MIT  (which  is
              probably  why it was added so easily).  Still it needs quite some overhead, at least when the card
              does not allow for a linear frame buffer.

              However, you cannot change screen modes and rez as easily. This is IMHO THE drawback of X.  For  a
              picture  viewer, you want 256 color high/true color modes on a per picture basis (also, insert any
              other application you like: movie viewers, a special game, a drawing program). Also,  you  want  a
              small  picture use a low rez s.t. it does not appear as a thumbnail, maybe use a high rez mode for
              a huge picture which you don't want to use on a permanent basis because it flickers like hell (and
              you don't want to use a panning virtual desktop too, I hated them at best).

              This latter restriction can of course be circumvented by enlarging the picture. But this will need
              much time for a picture viewer already and certainly too much for smooth video or game animations.

       iv)    Finally, the problem how X11 itself accesses the screen is not solved.   Security  is  usually  no
              concern  because  X11 does it, is a trusted executable and a firewall between applications and the
              hardware.

              Alas, there might be security holes,  also  the  stability  and  performance  issues  (IRQ  driven
              accelerator  queue,  CPU  support  for  VGA  memory  paging) still exist, though one can expect an
              Xserver to be a generally well coded application.

   Q 9)
       Now, again, what about the future of svgalib?

       For console graphics, svgalib is still the only solution for most people, and as such it should go on for
       a while. Compared to the othe console graphics options (kgi and kernel fb device), writing svgalib driver
       is the simplest (at least, this is my experience), and so it makes sense to  believe  that  svgalib  will
       work on all cards where there is someone interested enough in that support.

   Q 10)
       Ok, just for completeness, what are your plans about svgalib anyway?

       First,  make  svgalib  cooperate  nicely with kernel fb device. Then (and it should be very similar) make
       svgalib work on a secondary vga card.

       A rewrite of the code for memory handling and virtual console handling  is  necessary  for  the  previous
       goals, but is also necessary in itself, and so will be done also.

       I do intend to maintain complete binary compatibility, so that older programs will go on working.

       As internal changes are made, the drivers have to be changed as well. For some of the older drivers (ali,
       ark, ati, et3000, et4000, gvga, oak), I no longer get any reports, so I don't know if  they  still  work.
       Some features are also lost, for example, linear frame buffer on non-PCI cards. This should not be a very
       big problem, as users with such cards can go on using 1.3.1, as most changes are not applicable for older
       machines.

SEE ALSO

       svgalib(7), libvga.config(5).

AUTHOR

       This  file  was written by Michael Weller <eowmob@exp-math.uni-essen.de>, And later changed by Matan Ziv-
       Av.