Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
svgalib.faq(7)		       Svgalib User Manual		  svgalib.faq(7)

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  dis-
     agree and I'm sure I don't have the best ideas about it or may even be com-
     pletely 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 documenta-
	    tion?

     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 documen-
     tation. 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 some-
	    one 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 sim-
     ilar card and write a driver for you. I already wrote support for the hard-
     ware 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  ex-
     plicitly 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 sv-
     galib. 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  ker-
     nel graphics driver. I like it very much. And, yes, this is a bit weird be-
     cause I am the svgalib maintainer and a working GGI will make svgalib obso-
     lete.  Again,  I already said above: I did not invent svgalib nor do I pro-
     mote 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 con-
     tributing 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  ker-
     nel/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 impor-
	    tance  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/fire-
	    walls) on low price or otherwise even unusable hardware.

     ii)    X has a nice API with draw commands for any kind  of  'command  ori-
	    ented' 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  exten-
	    sion  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 pro-
	    gram). 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 al-
	    ready 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 hard-
	    ware.

	    Alas, there might be security holes, also the stability and  perfor-
	    mance issues (IRQ driven accelerator queue, CPU support for VGA mem-
	    ory  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 be-
     lieve 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 pro-
     grams 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.

Svgalib 1.4.1			   10 Jun 1999			  svgalib.faq(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=svgalib.faq&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help