256 lines
12 KiB
Text
256 lines
12 KiB
Text
|
Installation of Svgalib v1.2.12 or higher.
|
||
|
|
||
|
Table of contents:
|
||
|
0. Introduction
|
||
|
1. Directories
|
||
|
2. Installation
|
||
|
3. SVGALib port to ALPHA AXP hardware
|
||
|
|
||
|
0. Introduction
|
||
|
This is a low level graphics library for Linux, based on VGAlib 1.2 by
|
||
|
Tommy Frandsen. VGAlib supported a number of standard VGA graphics
|
||
|
modes, as well as Tseng ET4000 high resolution 256-color modes.
|
||
|
Nowadays support for even more hardware is given. For details on
|
||
|
supported chipsets, see the file 0-README which is equal to man 7
|
||
|
svgalib (when svgalib is installed).
|
||
|
|
||
|
It supports transparent virtual console switching, that is, you can
|
||
|
switch consoles to and from text and graphics mode consoles using
|
||
|
alt-[function key]. Also, svgalib corrects most of VGAlib's textmode
|
||
|
corruption behaviour by catching SIGSEGV, SIGFPE and SIGILL, and
|
||
|
ensuring that a program is running in the currently visible virtual
|
||
|
console before setting a graphics mode. Svgalib uses SIGUSR1 and SIGUSR2
|
||
|
internally to do so.
|
||
|
|
||
|
When the library is first used by a program at run-time, the chipset is
|
||
|
detected and the appropriate driver is used. This means that a graphics
|
||
|
program will work on any card that is supported by svgalib, if the mode
|
||
|
it uses is supported by the chipset driver for that card. The library
|
||
|
is upwardly compatible with VGAlib.
|
||
|
|
||
|
The set of drawing functions provided by svgalib itself is limited
|
||
|
(mostly unchanged from VGAlib) and unoptimized; you can however use
|
||
|
vga_setpage and graph_mem (which points to the 64K VGA framebuffer) in
|
||
|
a program or graphics library. A fast external framebuffer graphics
|
||
|
library for linear and banked 1, 2, 3 and 4 bytes per pixel modes is
|
||
|
included (it also indirectly supports planar VGA modes). See 'man 7
|
||
|
vgagl' for details.
|
||
|
|
||
|
One obvious application of the library is a picture viewer. Several are
|
||
|
available, along with animation viewers. See the references at the end
|
||
|
of 0-README.
|
||
|
|
||
|
I have added a simple VGA textmode font restoration utility
|
||
|
(restorefont) which may help if you suffer from XFree86 textmode font
|
||
|
corruption. It can also be used to change the textmode font. It's in
|
||
|
the utils/ directory, along with a README and some other textmode
|
||
|
utilities: restoretextmode (which saves/restores textmode registers),
|
||
|
restorepalette, and the script textmode. If you run the savetextmode
|
||
|
script to save textmode information to /tmp, you'll be able to restore
|
||
|
textmode by running the textmode script.
|
||
|
|
||
|
If you have an ET4000 card, you should read the 0-README in the et4000/
|
||
|
directory. You will probably want to replace the ET4000 registers.
|
||
|
|
||
|
1. Directories
|
||
|
doc/ README's and man pages. See the 0-README in this
|
||
|
directory for info on how to read these man pages
|
||
|
without installing svgalib and how to produce nice
|
||
|
printouts.
|
||
|
demos/ Demo and test programs.
|
||
|
utils/ Textmode/font utilities.
|
||
|
src/ Main library source.
|
||
|
src/mouse/ Source for mouse interface.
|
||
|
src/keyboard/ Source for keyboard interface.
|
||
|
gl/ External framebuffer graphics library sources.
|
||
|
support/ DOS-based utility for dumping VGA registers.
|
||
|
et4000/ Notes, utilities and sample registers for ET4000.
|
||
|
mach32/ Notes and a utility for the ATI mach32 driver.
|
||
|
jump/ Configuration files for building DLL shared library.
|
||
|
sharedlib/ Shared library image and stubs.
|
||
|
threeDKit/ Routines to draw 3-dimensional triangles and
|
||
|
3D demos using these.
|
||
|
lrmi-0.5m/ Linux real mode library (used for VESA driver)
|
||
|
including a utility for restoring text mode
|
||
|
|
||
|
I welcome any questions, comments, suggestions, bug-reports, etc.
|
||
|
|
||
|
The source code is rather a mess, but there's hope. The new XFree86-style
|
||
|
driver interface (used by the Cirrus and S3 drivers) and kernel module
|
||
|
graphics that some are experimenting with should provide some momentum.
|
||
|
|
||
|
Harm Hanemaayer
|
||
|
hhanemaa@cs.ruu.nl
|
||
|
|
||
|
Current maintainer is
|
||
|
Matan Ziv-Av <matan@svgalib.org>
|
||
|
|
||
|
2. Installation
|
||
|
If you are happy with the configuration in 'Makefile.cfg' which means
|
||
|
that you want to install an ELF shared library and probably an a.out
|
||
|
shared library for support of some old binaries (and if the svgalib tar
|
||
|
file you got already contains such an precompiled a.out shared library)
|
||
|
just running
|
||
|
|
||
|
make install
|
||
|
|
||
|
as root should take care of proper installation. After installation,
|
||
|
you MUST edit /etc/vga/libvga.config to set the monitor and mouse type.
|
||
|
Depending on your hardware, other setup might be required. Checkout
|
||
|
'man 7 svgalib' for details after you installed svgalib (or see
|
||
|
doc/0-README)
|
||
|
|
||
|
It is a good idea to read and check the configurable section of
|
||
|
Makefile.cfg nevertheless, even if you don't think you have to. Also,
|
||
|
if your are using GLIBC you have to uncomment the definition of
|
||
|
USEGLIBC in Makefile.cfg as glibc is not completely compatible to the
|
||
|
linux libc (at least at compile time).
|
||
|
|
||
|
Let me rephrase this: YOU MUST COMPILE AND INSTALL AS ROOT.
|
||
|
If you don't nothing bad will happen during compilation, but certain
|
||
|
tools won't be able to become SETUID ROOT which is required for
|
||
|
proper operation.
|
||
|
|
||
|
In case you change anything in 'Makefile.cfg' which does not just control
|
||
|
which parts to install and where, you *MUST* issue a 'make clean' prior to
|
||
|
'make install' to remove any already compiled objects and force complete
|
||
|
recompilation.
|
||
|
|
||
|
Edit Makefile.cfg to change installation paths and to select the parts
|
||
|
that should be installed.
|
||
|
|
||
|
If you have an ET4000 card, read 'man 7 svgalib.et4000' and copy the
|
||
|
appropriate register file to et4000.regs. Remember to set the DAC type.
|
||
|
|
||
|
The default behaviour is the following:
|
||
|
|
||
|
Shared libraries are installed in /lib and /usr/local/lib, header files
|
||
|
in /usr/local/include (any old header files in /usr/include are
|
||
|
removed). In the Slackware distribution the linkable libraries are in
|
||
|
/usr/lib, and the utilities in /usr/bin; these are now removed by 'make
|
||
|
install'. Until now just doing make install with Slackware might have
|
||
|
produced duplicate binaries, but fortunately the newer version in
|
||
|
/usr/local/* would have taken precedence in use.
|
||
|
|
||
|
The et4000 registers (et4000.regs) are installed as
|
||
|
/etc/vga/libvga.et4000, but only if this file does not exit yet. The
|
||
|
same goes for the configuration file, libvga.config.
|
||
|
|
||
|
Textmode utilities are installed in /usr/local/bin. These are
|
||
|
restorefont, runx, restorepalette, dumpreg, restoretextmode, textmode,
|
||
|
savetextmode, fix132x43, and mode3.
|
||
|
|
||
|
If you change Makefile.cfg to install the static libraries, static
|
||
|
libraries are compiled, and installed in /usr/local/lib. Note that you
|
||
|
do not need to do this; the shared library is enough.
|
||
|
|
||
|
If you now run 'make demoprogs', the demo programs are created in the
|
||
|
demos/ and threeDKit/ directory. If you
|
||
|
|
||
|
You can remove previously installed files (not the et4000 registers and
|
||
|
config file and manual pages) with 'make uninstall'.
|
||
|
|
||
|
In 1.28 the makefiles were changed. With minimal effort you can compile
|
||
|
it from a separate (even read-only) source tree. Just make a copy of
|
||
|
Makefile and Makefile.cfg into a writable dir, and change srcdir (or
|
||
|
override from environment) to the directory where the source code is.
|
||
|
|
||
|
This feature, as well as the code for ELF compilation was kindly
|
||
|
contributed by Stephen Lee <sl14@crux1.cit.cornell.edu>.
|
||
|
|
||
|
`make static' compiles a static version of svgalib. It is not
|
||
|
automatically installed by default but you can enable that from
|
||
|
Makefile.cfg. Note though, that if you specify installation of the static
|
||
|
libraries in 'Makefile.cfg' a simple 'make install' will compile the
|
||
|
static library first.
|
||
|
|
||
|
If you do not configure Makefile.cfg to install the shared libs, the
|
||
|
demoprogs and utilities are linked against the new static lib
|
||
|
(regardless of one already installed). However, the static libraries are
|
||
|
not build automatically then. You must issue a 'make static' first.
|
||
|
|
||
|
Building elf or a.out shared libraries can easily be configured in the
|
||
|
Makefile.cfg. Be sure to issue a `make clean' after changing the
|
||
|
TARGET_FORMAT setting.
|
||
|
|
||
|
If you specified elf, `make install' will compile the shared libs as
|
||
|
they don't come pre-built. This is nothing to worry about. Compilation
|
||
|
is easy and will not use any user action.
|
||
|
|
||
|
This is not true for a.out and there is a special hack in the makefiles
|
||
|
for this. As svgalib is distributed there is no attempt to recompile the
|
||
|
a.out sharedlibs. Prebuild images are already included.
|
||
|
|
||
|
If you have the required tools-* installed and if you made patches (or
|
||
|
just feel like recompiling) issue a `make clean' and `make shared' to
|
||
|
enforce recompiling of the a.out sharedlibs (from then on even a make
|
||
|
install will update the shared library if sources changed). Issue `make
|
||
|
distclean' after a `make shared' to fall back to the distribution
|
||
|
behaviour.
|
||
|
|
||
|
However, getting the right tools becomes more and more complicated as
|
||
|
it gets less important to give a.out support. Right now you even have to
|
||
|
hand patch the last tools-* release to make it usuable with current
|
||
|
compilers. In general I discourage trying to compile the a.out libs.
|
||
|
Just use the images that come with svgalib.
|
||
|
|
||
|
3. SVGALib port to ALPHA AXP hardware
|
||
|
David Mosberger-Tang <davidm@azstarnet.com> contributed patches to make
|
||
|
SVGALib run on Linux/Alpha namely APECS-based and low-cost PCI boards.
|
||
|
|
||
|
It is known to run with #9 GXE (but all S3-based graphic cards should
|
||
|
work if they are supported). He wrote a patch to make SVGALib run on
|
||
|
Jensen boards. They own EISA slots instead of PCI slots and can not map
|
||
|
video memory as a continous frame buffer. Use this patch with extreme
|
||
|
care (do sync disks before starting compiled software for the first
|
||
|
time!). He also recommends using SVGATextMode in combination with
|
||
|
SVGALib-based software otherwise the library crunches the font
|
||
|
(although the system should not crash). Here is a list of what is not
|
||
|
supported yet:
|
||
|
|
||
|
- vc-switching (due to lack of some signals supported by current ALPHA
|
||
|
kernels but this could be fixed now [He used a 1.3.28 to test])
|
||
|
- font restoring without SVGATextMode (He still works on it)
|
||
|
- clearing screen in mode 320x200x256
|
||
|
- vgagl (will never be ported by me because he thinks it is too much work
|
||
|
and useless in the end)
|
||
|
|
||
|
He tested his patch with an ELSA Winner 1000 but it should even work on
|
||
|
other cards (He recommends to always sync disks, it saves a lot of time
|
||
|
and sweat :-) ).
|
||
|
|
||
|
If you compile it on a machine where __alpha__ is defined, you should
|
||
|
have configured your kernel correctly once. This is due to the fact
|
||
|
that he saw no other possibility to determine the type of ALPHA AXP
|
||
|
hardware you use. During kernel configuration your are asked which
|
||
|
architecture you want to compile it for.
|
||
|
|
||
|
Also important: you must have the right libc compiled for your board
|
||
|
hardware. This is due to the I/O functions in libc. They need to be
|
||
|
compiled especially for your Alpha board. Have a look at
|
||
|
ftp.azstarnet.com for precompiled libc's (although this is not very
|
||
|
reliable, most of the libc-packages are sources).
|
||
|
|
||
|
Note that he feels __not__ responsible for damage to your hardware when
|
||
|
using this software. If you encounter any problems that refer to
|
||
|
Jensen-type hardware you can send an email to me:
|
||
|
|
||
|
If you encounter any problems that refer to Jensen-type hardware you
|
||
|
can send an email to:
|
||
|
Stephan Kanthak <kanthak@i6.informatik.rwth-aachen.de>
|
||
|
|
||
|
Here are some additional comments Michael Weller wrote on the first
|
||
|
ALPHA patches from David Mosberger-Tang:
|
||
|
|
||
|
No reports of other hardware working or not exist yet. This is REAL
|
||
|
ALPHA software. I don't know any installation details. In theory you
|
||
|
just recompile it out of the box (When you are using Linux/Alpha you
|
||
|
are a hacker and should be able to create a shared lib w/o problems). I
|
||
|
don't know any details, in case of problems please contact David.
|
||
|
|
||
|
From what I saw you might have to use static libs. That's no real
|
||
|
problem, a simple 'make static' will create a static lib.
|
||
|
|
||
|
The background mode is said not to work on Dec-ALPHA, so you better
|
||
|
disable it in Makefile.cfg
|