diff --git a/LDP/howto/docbook/Apache-WebDAV-LDAP-HOWTO.xml b/LDP/howto/docbook/Apache-WebDAV-LDAP-HOWTO.xml
index 783b93e5..6629d991 100644
--- a/LDP/howto/docbook/Apache-WebDAV-LDAP-HOWTO.xml
+++ b/LDP/howto/docbook/Apache-WebDAV-LDAP-HOWTO.xml
@@ -1,10 +1,9 @@
-
-
-
+
+
+
Apache based WebDAV Server with LDAP and SSL
@@ -23,9 +22,18 @@
+
+ v4.0.1
+ 2003-07-27
+ sa
+
+ Added more information to the SSL section.
+
+
+
v4.0
- 2002-06-29
+ 2003-06-29
sa
Updated the HOWTO for Apache 2.0. Also the source is in XML
@@ -106,7 +114,7 @@
The tools needed to achieve this objective are:
-
+
C Compiler e.g. GCC
Apache 2 Web Server
LDAP Module for Apache
@@ -181,7 +189,7 @@ Download the iPlanet LDAP SDK from # make test
# make install
+Upon successful completion of the make install the openssl binaries should reside in /usr/local/ssl
@@ -274,8 +283,28 @@ mysql 3256 3237 0 May29 ? 00:06:58 /usr/local/mysql/bin/mysqld --de
-PHP
+CERT DB for LDAPS://
+ You will also need to get the cert7.db and key7.db from http://www.xml-dev.com/xml/key3.db and http://www.xml-dev.com/xml/cert7.db and place it in the /usr/local/apache2/sslcert/directory.
+
+PHP
+Unzip the PHP Source Files
+gzip -d php-xxx.tar.gz
+tar -xvf php-xxx.tar
+
+
+Configure and run the make command
+cd php-xxx
+./configure --with-mysql --with-apxs=/usr/local/apache2/bin/apxs
+
+Compile the source code
+# make
+# make install
+
+
+Copy the php.ini file to the appropriate directory
+cp php.ini-dist /usr/local/lib/php.ini
+
@@ -404,7 +433,7 @@ please use:
# ps -ef | grep httpd
Create a test directory called 'DAVtest'
-under /usr/local/apache/htdocs :
+under /usr/local/apache2/htdocs :
# mkdir /usr/local/apache/htdocs/DAVtest
@@ -572,18 +601,17 @@ has access to this folder.
-Implementing and using SSL to secure WebDAV traffic
+Implementing and using SSL to secure HTTP traffic
Security of the data stored on a file server is very important these days. Compromised data can cost thousands of dollars to
company. In the last section, we compiled LDAP authentication module into the Apache build to provide a Authentication
mechanism. However HTTP traffic is very insecure, and all data is transferred in clear text - meaning, the LDAP authentication
-(userid/passwd) will be transmitted as clear text as well. This create a problem. Anyone can sniff these userid/passwd and gain
+(userid/passwd) will be transmitted as clear text as well. This creates a problem. Anyone can sniff these userid/passwd and gain
access to DAV store. To prevent this we have to encrypt HTTP traffic, essentially HTTP + SSL or HTTPS. Anything transferred over
-HTTPS is encrypted, so the LDAP userid/passwd can not be sniffed. HTTPS runs on port 443. The resulting build from the last
+HTTPS is encrypted, so the LDAP userid/passwd can not be easily deciphered. HTTPS runs on port 443. The resulting build from the last
section's compilation process will have Apache to listen to both port 80 (normal HTTP) and 443 (HTTPS). If you are just going
to use this server for DAV, then I will highly suggest that you close port 80. In this section of the HOWTO I will provide some
-information regarding SSL and maintaining SSL on a WebDAV server. However this is a not limited to a DAV server, it can be
-used on any web server.
+information regarding SSL and maintaining SSL on a Apache HTTP server.
Introduction to SSL
@@ -607,12 +635,10 @@ The following is a over-simplified structure of the layers involved in SSL.
Encryption algorithms used in SSL
-There are 2 kinds of encryption algorithms used in SSL.
+ There are three kinds of cryptographic techniques used in SSL: Public-Private Key, Symmetric Key, and Message Digest.
-Public-Private Key Crytography - Initiating SSL connection: This algorithm is used for initiating the SSL session. In this algorithm, the encryption must
-be performed using the Public Key, and the decryption can only be performed using the Private Key. The Web-server holds the
-private Key, and sends the Public key to the client. The public key is sent to the client in a certificate.
+ Public-Private Key Crytography - Initiating SSL connection: In this algorithm, encryption and decryption is performed using a pair of private and public keys. The Web-server holds the private Key, and sends the Public key to the client in the Certificate.
@@ -635,20 +661,20 @@ private Key, and sends the Public key to the client. The public key is sent to t
If everything is successful the SSL connection is initiated.
-
+Note:Anything encrypted with Private Key can only be decrypted by using the Public Key. Similarly anything encrypted using the Public Key can only be decrypted using the Private Key. There is a common mis-conception that only the Public Key is used for encryption and Private Key is used for decryption. This is not case. Any key can be used for encryption/decryption. However if one key is used for encryption then the other key must be used for decryption. e.g. A message can not encrypted and then decrypted using only the Public Key.
+ Using Private Key to encrypt and a Public Key to decrypt ensures the integrity of the sender (owner of the Private Key) to the recipients. Using Public Key to encrypt and a Private Key to decrypt ensures that only the inteded recipient (owner of the Private Key) will have access to the data.(i.e. only the person who holds the Private Key will be able to decipher the message).
-Symmetric Cryptography - Actuall transmission of data: After the SSL connection has been established, Symmetric cryptography
-is used to encrypting data. Public-Private Key cryptography is CPU cycle intensive, so Symmetric cryptography is used. In
-symmetric cryptography the data can be encrypted and decrypted using the same key. The Key for symmetric cryptography was
-exchange in the initiation process.
-
+ Symmetric Cryptography - Actual transmission of data: After the SSL connection has been established, Symmetric cryptography is used for encryption data as it uses CPU cycles. In symmetric cryptography the data can be encrypted and decrypted using the same key. The Key for symmetric cryptography is exchanged during the initiation process, using Public Private Key Cryptography.
+
+Message Digest The server uses message digest algoritm such as HMAC, SHA, MD5 to verify the integrity of the transferred data.
+
Test Certificates
While compiling Apache we created a test certificate. We used the makefile provided by
mod_ssl to create this custom Certificate. We used the command:
-# make certificate TYPE=custom
+# make certificate TYPE=custom
This certificate can be used for testing purposes.
@@ -656,10 +682,7 @@ mod_ssl to create this custom Certificate. We used the command:
Certificates for Production use
-For production use you will need a certificate from a CA.
-CA or Certificate Authorities are certificate vendors, who are listed as a Trusted CA in user's browser client. As mentioned in
-the Encryption Algorithms section, if the CA is not listed as a trusted authority, your user will get a warning message when
-trying to connect to a secure location.
+ For production use you will need a certificate from a Certificate Authority (hereafter CA). Certificate Authorities are certificate vendors, who are listed as a Trusted CA in the user's browser. As mentioned in the Encryption Algorithms section, if the CA is not listed as a trusted authority, your user will get a warning message when trying to connect to a secure location.
Similarly the test certificates will also cause a warning message to appear on the user's browser.
@@ -676,26 +699,80 @@ and send it to the CA of your choice.
-cd /usr/local/apache/conf/
-/usr/local/ssl/bin/openssl req -new -nodes -keyout private.key -out public.csr
+# cd /usr/local/apache/conf/
+# /usr/local/ssl/bin/openssl req -new -nodes -keyout private.key -out public.csr
+Generating a 1024 bit RSA private key
+............++++++
+....++++++
+writing new private key to 'private.key'
+-----
+You are about to be asked to enter information that will be incorporated
+into your certificate request.
+What you are about to enter is what is called a Distinguished Name or a DN.
+There are quite a few fields but you can leave some blank
+For some fields there will be a default value,
+If you enter '.', the field will be left blank.
+-----
+Country Name (2 letter code) [AU]:US
+State or Province Name (full name) [Some-State]:California
+Locality Name (eg, city) []:San Jose
+Organization Name (eg, company) [Internet Widgits Pty Ltd]:Seagate
+Organizational Unit Name (eg, section) []:Global Client Server
+Common Name (eg, YOUR name) []:xml.seagate.com
+Email Address []:saqib@seagate.com
+
+Please enter the following 'extra' attributes
+to be sent with your certificate request
+A challenge password []:badpassword
+An optional company name []:
+
-At this point you will be asked several about your server location, to generat the Certificate Signing Request
+At this point you will be asked several questions about your server to generate the Certificate Singning Request
-Note: You Common Name is the DNS name of your webserver e.g. dav.server.com . If you put in anything else, it will NOT work. Remember the passwd that you use, for future reference.
+Note: You Common Name (CN) is the DNS name of your webserver e.g. dav.server.com . If you put in anything else, it will NOT work. Remember the passwd that you use, for future reference.
-Once the process is complete, you will have private.key and a public.csr . At this pointe the public.key is not encrypted. To encrypt"
+Once the process is complete, you will have private.key and a public.csr . You will need to submit the public.csr to the Certification Authority. At this pointe the public.key is not encrypted. To encrypt:
-
-mv private.key private.key.unecrpyted
-/usr/local/ssl/bin/openssl rsa -in private.key.unecrpyted -des3 -out private.key
+
+ # mv private.key private.key.unecrpyted
+# /usr/local/ssl/bin/openssl rsa -in private.key.unecrpyted -des3 -out private.key
+
+Installing Server Private Key, and Server Certificate
+ Once the Certification Authority processes your request, they will send an encoded certificate back to you. You will need to place this certificate on the server, and tell Apache where to find it.
+ For this example, the Private Key is placed in the /usr/local/apache2/conf/ssl.key/ directory, and the Sever Certificate is placed in the /usr/local/apache2/conf/ssl.crt/.
+ Copy the file received from the Certification to a file called server.crt in the /usr/local/apache2/conf/ssl.crt/.
+ And place the private.key generated in the previous step in the /usr/local/apache2/conf/ssl.key/
+ Then modify the /usr/local/apache2/conf/ssl.conf to point to the correct Private Key and Server Certificate files:
+
+
+# Server Certificate:
+# Point SSLCertificateFile at a PEM encoded certificate. If
+# the certificate is encrypted, then you will be prompted for a
+# pass phrase. Note that a kill -HUP will prompt again. Keep
+# in mind that if you have both an RSA and a DSA certificate you
+# can configure both in parallel (to also allow the use of DSA
+# ciphers, etc.)
+SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
+#SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server-dsa.crt
+
+# Server Private Key:
+# If the key is not combined with the certificate, use this
+# directive to point at the key file. Keep in mind that if
+# you've both a RSA and a DSA private key you can configure
+# both in parallel (to also allow the use of DSA ciphers, etc.)
+SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/private.key
+#SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server-dsa.key
+
+
+
Removing passphrase from the RSA Private Key
RSA Private Key stored on the webserver is usually encrypted, and you need a passphrase to parse the file. That is why you
@@ -712,11 +789,9 @@ are prompted for a passphrase when start Apache with modssl:
-Encrypting the RSA Private Key is very important. If somebody gets hold of the you "Unencrypted RSA Private Key" he/she can easily
-impersonate your webserver. If the Key is encrypted, the hacker can not do anything without the passphrase.
+Encrypting the RSA Private Key is very important. If a cracker gets hold of your "Unencrypted RSA Private Key" he/she can easily impersonate your webserver. If the Key is encrypted, the cracker can not do anything without brute forcing the passphrase. Use of a strong (ie: long) passphrase is encouraged.
-However encrypting the Key can sometimes be nuisance, since you will be prompted for a passphrase everytime you start the web-server.
-Specially if you are using rc scripts to start the webserver at boot time, the prompt for passphrase creates problems.
+However encrypting the Key can sometimes be nuisance, since you will be prompted for a passphrase everytime you start the web-server. Especially if you are using rc scripts to start the webserver at boot time. The prompt for a passphrase will stop the boot process, waiting for your input.
You can get rid of the passphrase prompt easily by decrypting the Key. However make sure that no one can hold of this Key. I would
recommend Hardening and Securing guidelines be followed before decrypting the Key on the webserver.
@@ -742,18 +817,26 @@ One way to secure the decrypted Private Key is to make readable only by the root
Trusted Certificate Authorities
The following is list of Certificate Authorities that are trusted by the various browsers:
-
+
- Verisign
+ Baltimore
+
+ Entrust
+
+
Thawte
+
+ Verisign
+
+
diff --git a/LDP/howto/docbook/Linux-Gamers-HOWTO.sgml b/LDP/howto/docbook/Linux-Gamers-HOWTO.sgml
index eff7e6d1..891fd487 100644
--- a/LDP/howto/docbook/Linux-Gamers-HOWTO.sgml
+++ b/LDP/howto/docbook/Linux-Gamers-HOWTO.sgml
@@ -4,6 +4,11 @@
2 spaces per indent level
4 spaces from left edge for environment
+ 5 newlines between level 1 sections.
+ 3 newlines between level 2 sections.
+
+ 128 characters per line
+
Problems:
“ and ” aren't yielding `` and ''.
-->
@@ -39,7 +44,7 @@
- v0.9.22, 2003-05-12
+ v.0.9.34, 2003-07-29
2001
@@ -119,11 +124,12 @@
Moritz Muehlenhoff jmm@Informatik.uni-bremen.de for sending me updates (even if I'm
eternally behind on them...)
- Frédéric Delanoy for extensive diffs or correcting typos and docbook
- mistakes
+ Fro?=do?=ric Delanoy for extensive diffs or correcting typos and docbook mistakes
+ I would also like to thank Michael Mc Donnell for sending in comments and corrections.
+
@@ -349,11 +355,11 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
What is Glide2?
- Glide2 is a low level graphics API and driver that accesses 3D hardware accelerated functions on
- 3dfx's Voodoo I, II and III cards, under XFree86 3.x.
+ Glide2 is a low level graphics API and driver that accesses 3D hardware accelerated functions on 3dfx's Voodoo I, II
+ and III cards, under XFree86 3.x.
- A program can only use the special hardware accelerated features of these cards by using the
- Glide2 library in one of two ways:
+ A program can only use the special hardware accelerated features of these cards by using the Glide2 library in one
+ of two ways:
@@ -533,7 +539,7 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
The most striking part of SDL is that it's a cross platform library. Except for a few details, a program written in
SDL will compile under Linux, MS Windows, BeOS, MacOS, MacOS X, Solaris, IRIX, FreeBSD, QNX and OSF. There are SDL
- extentions written by various people to do things like handle any graphics format you care to mention, play mpegs, display
+ extensions written by various people to do things like handle any graphics format you care to mention, play mpegs, display
truetype fonts, sprite handling and just about everything under the sun. SDL is an example of what all graphics libraries
should strive for.
@@ -609,8 +615,8 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
DirectX is a collection of proprietary multimedia API's, first developed by Microsoft in 1995, for its various
Windows OS's. It's a mistake to say something like "DirectX is like OpenGL" or "DirectX is like SDL", as is commonly
said in DirectX tutorials. Multimedia API's are more centralized on Windows than they are on Linux. A more accurate
- statement would be something like "DirectX is like DRI, OpenGL and SDL combined". As of Feb 2002, the most recent version
- of DirectX is 8.1. The components of DirectX are:
+ statement would be something like "DirectX is like DRI, OpenGL and SDL combined". As of June 2003, the most recent version
+ of DirectX is 9.0. The components of DirectX are:
@@ -656,11 +662,10 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
DirectX and therefore limit their audience to Windows users only. If you're a game writer, please
consider using cross platform libraries and stay away from DirectX.
- A company named realtechVR started an open
- source project, DirectX Port, <> which, like wine, provides a Direct3D emulation
- layer that implements Direct3D calls. The project was focused on the BeOS platform, but is now focused
- on MacOS and Linux. You can get the latest cvs
- from their sourceforge page at <>.
+ A company named realtechVR started an open source project, DirectX Port, <> which, like wine, provides a Direct3D emulation layer that implements
+ Direct3D calls. The project was focused on the BeOS platform, but is now focused on MacOS and Linux. You can get the
+ latest cvs from their sourceforge page at <>.
@@ -683,172 +688,14 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
-Definitions: Video Card and 3D Terminology
-
- We'll cover video card and 3D graphics terminology. This material isn't crucial to actually getting a
- game working, but may help in deciding what hardware and software options are best for you.
-
-
-
- Textures
-
- A rendered scene is basically made up of polygons and lines. A texture is a 2D image (usually a
- bitmap) covering the polygons of a 3D world. Think of it as a coat of paint for the polygons.
-
-
-
-
-
- T&L: Transform and Lighting
-
- The T&L is the process of translating all the 3D world information (position, distance, and
- light sources) into the 2D image that is actually displayed on screen.
-
-
-
-
-
- AA: Anti Aliasing
-
- Anti aliasing is the smoothing of jagged edges along a rendered curve or polygon. Pixels are
- rectangular objects, so drawing an angled line or curve with them results in a 'stair step' effect, also
- called the 'jaggies'. This is when pixels make, what should be a smooth curve or line, jagged. AA uses
- CPU intensive filtering to smooth out these jagged edges. This improves a game's visuals, but can also
- dramatically degrade performance.
-
- AA is used in a number of situations. For instance, when you magnify a picture, you'll notice
- lines that were once smooth become jagged (try it with The Gimp). Font rendering is another big
- application for AA.
-
- AA can be done either by the application itself (as with The Gimp or the XFree86 font system) or
- by hardware, if your video card supports it. Since AA is CPU intensive, it's more desirable to perform
- it in hardware, but if we're talking about semi-static applications, like The Gimp, this really isn't an
- issue. For dynamic situations, like games, doing AA in hardware can be crucial.
-
-
-
-
-
- FSAA: Full Screen Anti-Aliasing
-
- FSAA usually involves drawing a magnified version of the entire screen in a separate framebuffer,
- performing AA on the entire image and rescaling it back to the normal resolution. As you can imagine,
- this is extremely CPU intensive. You will never see non hardware accelerated FSAA.
-
-
-
-
-
- Mip Mapping
-
- Mip mapping is a technique where several scaled copies of the same texture are stored in the video
- card memory to represent the texture at different distances. When the texture is far away a smaller
- version of the texture (mip map) is used. When the texture is near, a bigger one is used. Mip mapping
- can be used regardless of filtering method (). Mip mapping reduces
- memory bandwidth requirements since the images are in hardware, but it also offers better quality in the
- rendered image.
-
-
-
-
-
- Texture Filtering
-
- Texture filtering is the fundamental feature required to present sweet 3D graphics. It's used for
- a number of purposes, like making adjacent textures blend smoothly and making textures viewed from an
- angle (think of looking at a billboard from an extreme angle) look realistic. There are several common
- texture filtering techniques including point-sampling, bilinear, trilinear and anisotropic
- filtering.
-
- When I talk about 'performance hits', keep in mind that the performance hit depends on what
- resolution you're running at. For instance, at a low resolution you may get only a very slight hit by
- using trilinear filtering instead of bilinear filtering. But at high resolutions, the performance hit
- may be enormous. Also, I'm not aware of any card that uses anisotropic texture filtering. TNT drivers
- claim they do, but I've read that these drivers still use trilinear filtering when actually rendering an
- image to the screen.
-
-
-
- Point Sampling Texture Filtering
-
- Point sampling is rare these days, but if you run a game with 'software rendering' (which
- you'd need to do if you run a 3D accelerated game without a 3D accelerated board) you're likely to
- see it used.
-
-
-
-
-
- Bilinear Texture Filtering
-
- Bilinear filtering is a computationally cheap but low quality texture filtering. It
- approximates the gaps between textures by sampling the color of the four closest (above, below, left
- and right) texels. All modern 3D accelerated video cards can do bilinear filtering in hardware with
- no performance hit.
-
-
-
-
-
- Trilinear Texture Filtering
-
- Trilinear filtering is a high quality bilinear filter which uses the four closest pixels in
- the second most suitable mip map to produce smoother transitions between mip map levels. Trilinear
- filtering samples eight pixels and interpolates them before rendering. Trilinear filtering always
- uses mip mapping. Trilinear filtering eliminates the banding effect that appears between adjacent
- mip map levels. Most modern 3D accelerated video cards can do trilinear filtering in hardware with
- no performance hit.
-
-
-
-
-
- Anisotropic Texture Filtering
-
- Anisotropic filtering is the best but most CPU intensive of the three common texture filtering
- methods. Trilinear filtering is capable of producing fine visuals, but it only samples from a
- square area which in some cases is not the ideal method. Anisotropic (meaning 'from any direction')
- samples from more than 8 pixels. The number of sampled pixels and which sampled pixels it uses
- depends on the viewing angle of the surface relative to your screen. It shines when viewing
- alphanumeric characters at an angle.
-
-
-
-
-
-
-
-
- Z Buffering
-
- A Z buffer is a portion of RAM which represents the distance between the viewer (you) and each
- pixel of an object. Many modern 3D accelerated cards have a Z buffer in their video RAM, which speeds
- things up considerably, but Z buffering can also be done by the application's rendering engine.
- However, this sort of thing clearly should be done in hardware wherever possible.
-
- Every object has a stacking order, like a deck of cards. When objects are rendered into a 2D
- frame buffer, the rendering engine removes hidden surfaces by using the Z buffer. There are two
- approaches to this. Dumb engines draw far objects first and close objects last, obscuring objects below
- them in the Z buffer. Smart engines calculate what portions of objects will be obscured by objects
- above them and simply not render the portions that you won't see anyhow. For complicated textures this
- is a huge savings in processor work.
-
-
-
-
-
-
-
-
-
XFree86 and You
- If you're going to game under X, it's crucial that you know a bit about X. The "X Window User HOWTO",
- and especially "man XF86Config" are required reading. Don't short change yourself;
- read them. They have an extremely high "information to space" ratio. Many problems can be fixed easily if
- you know your way around XF86Config (or XF86Config-4).
+ If you're going to game under X, it's crucial that you know a bit about X. The "X Window User HOWTO", and especially
+ "man XF86Config" are required reading. Don't short change yourself; read them. They have an extremely
+ high "information to space" ratio. Many problems can be fixed easily if you know your way around
+ XF86Config (or XF86Config-4).
Getting information about your X system
@@ -908,7 +755,10 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
the 4 horizontal and 4 vertical numbers which defines your videomode (the 1st horizontal/vertical
numbers gives the screen resolution). These 8 numbers will tell you which modeline your X uses. See the XFree86 Video
- Modetiming Howto for more information.
+ Timings Howto for more information. Note that explicit modelines are no longer necessary, since XFree 4.0.1 and up
+ computes modetimings automatically based on your monitor's and video card's capabilities. However, there may be times
+ when you'll want to play around with mode timings, like for weird hardware or if want to tweak your
+ display.
the "dot clock" your videocard is running at.
@@ -940,8 +790,8 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
Getting information about your 3D system
- glxinfo gives lots of useful information about OpenGL (whether direct rendering is being used
- or not, the currently installed versions of glx and mesa), vendor/renderer strings, the GL library files being used and
+ glxinfo gives lots of useful information about OpenGL like whether direct rendering enabled,
+ the currently installed versions of glx and mesa, vendor/renderer strings, the GL library files being used and
more.
@@ -951,9 +801,42 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
- Playing Games In X Without a Window Manager
+ Playing Games In X Without a Window Manager
-
+ When playing a game under X, you should consider starting X without a window manager (wm). Heavy weight wm's, like
+ Enlightenment, may produce a noticeable slow down. Even light weight wm's, like twm, rob your CPU of clock cycles (and in
+ twm's case, even full screen games will have a frame around the window). To run a game without a wm, modify
+ .xinitrc, which tells X what to run upon starting, in your home directory. Here is what my .xinitrc
+ looks like:
+
+
+ #quake3 +set r_gldriver libGR.so.1
+ #exec ut
+ #lsdldoom -server 2
+ #exec tribes2
+ exec /usr/bin/enlightenment
+
+
+ You'll usually see a window or desktop manager being executed from this file (GNOME or KDE). Comment out the lines
+ containing the wm or desktop manager with a pound sign (#) and place your game on a new line with any command line
+ arguments you want to pass. If the game is not located in your $PATH, give its full path name. Note that this is for
+ people who use `startx' to start X.
+
+ I never use things like gdm or run-level 5 (so I'm not positive here), but I suspect that if you do, you'll need to
+ do things a bit differently. My best guess is to go to single user mode (run-level 1) by:
+
+
+ # telinit 1
+
+
+ then edit .xinitrc, then go back to run-level 5 by
+
+
+ # telinit 5
+
+
+ Then when you stop playing, go to run-level 1, modify .xinitrc then go back to run-level 5. I don't use this stuff,
+ so I'm not sure, but you may need to kill gdm. I'd appreciate some feedback on this.
@@ -967,77 +850,33 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
Various Topics
- Memory Type Register Ranges
+ Memory Type Range Registers
- Starting with Pentium class processors and including Athlon, K6-2 and other CPUs, there are Memory
- Type Register Ranges (MTRR) which control how the processor accesses ranges of memory locations.
- Basically, it turns many smaller separate writes to the video card into a single write (a burst). This
- increases efficiency in writing to the video card and can speed up your graphics by 250% or more.
+ Starting with Pentium class processors and including Athlon, K6-2 and other CPUs, there are Memory Type Range
+ Registers (MTRR) which control how the processor accesses ranges of memory locations. Basically, it turns many smaller
+ separate writes to the video card into a single write (a burst). This increases efficiency in writing to the video card and
+ can speed up your graphics by 250% or more.
- See /usr/src/linux/Documentation/mtrr.txt for details. Note that since this
- file was written, XFree86 has been patched to automatically detect your video RAM base address and size
- and set up the MTRRs.
+ See /usr/src/linux/Documentation/mtrr.txt for details. Note that since this file was written,
+ XFree86 has been patched to automatically detect your video RAM base address and size and set up the MTRRs.
- Milking performance from your system for all it's worth
+ Milking performance from your system for all it's worth
If for some reason you're using X 3.3, follow the instructions given by mtrr.txt (see
- section 5.1) to set up your MTRRs. X 4.0 does this automatically for you.
+ section to set up your MTRRs. X 4.0 does this automatically for you.
- Don't run a window manager (wm). Some wm's like twm don't take up much CPU cycles, but
- still rob you of performance. Some window managers like enlightenment will definitely produce a
- noticeable slow down. To run a game without a wm, you modify .xinitrc in your home directory. Here is
- what my .xinitrc looks like:
+ If you're playing a game under X, don't run a window manager, and certainly don't run a
+ desktop manager like GNOME or KDE. See section for details.
-
- #quake3 +set r_gldriver libGR.so.1
- #/usr/local/games/SinDemo/Sin
- #exec ut
- #lsdldoom -server 2
- #exec tribes2
- exec /usr/bin/enlightenment
-
-
- This file tells X what client to run upon starting. Usually this is your wm, and/or a desktop
- manager (GNOME or KDE). Comment out the lines containing a wm and desktop manager with a pound sign (#)
- and place your game on a new line with any command line arguments you want to pass. If the game is not
- located in your $PATH, give its full path name. Note that this is for people who use `startx' to start
- X.
-
- I never use things like gdm or run-level 5 (so I'm not positive here), but I suspect that if you do,
- you'll need to do things a bit differently. My best guess is to go to single user mode (run-level 1)
- by:
-
-
- # telinit 1
-
-
- then edit .xinitrc, then go back to run-level 5 by
-
-
- # telinit 5
-
-
- Then when you stop playing, go to run-level 1, modify .xinitrc then go back to run-level 5. I don't
- use this stuff, so I'm not sure, but you may need to kill gdm. I'd appreciate some feedback on
- this.
-
- Kill all not-essential processes. Of course you'll have to do this as root. A better way to do
- this than typing "ps ax", getting ntpd's pid, and sending it a SIGKILL (with kill -9) is to make use of
- pidof:
-
-
- # kill -9 `pidof ntpd`
-
-
- However, an even better alternative is to use the startup scripts on your system. On Debian, the
- startup scripts for run-level 2 are located in /etc/rc2.d/. You can kill a service in an orderly manner
- by sending its startup scrip the `stop' command:
+ Kill all non-essential processes (you'll have to do this as root) by using the startup scripts on your system. On
+ Debian, the startup scripts for run-level 2 are located in /etc/rc2.d/. You can kill a service in an orderly manner by
+ sending its startup script the `stop' command:
# cd /etc/rc2.d
@@ -1050,10 +889,9 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
# telinit 1
- This will even get rid of getty; your system will be running nothing which is absolutely crucial to
- its operation. You'll have something like 10 processes running. The downside is that you'll have to play
- the game as root. But your process table will be a ghost town, and all that extra CPU will go straight to
- your game.
+ This will even get rid of getty; your system will only be running whatever is absolutely crucial to its operation.
+ You'll have something like 10 processes running. The downside is that you'll have to play the game as root. But your
+ process table will be a ghost town, and all that extra CPU will go straight to your game.
@@ -1326,16 +1164,14 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
Saved Games
- If your game allows for saved games, then sending the author a copy of the saved game is useful
- because it helps the tech reproduce whatever is going wrong. For commercial games, this option is more
- fruitful than sending a core file or call stack since commercial games can't be recompiled to include
- debugging information. You should definitely ask before sending a save game file because they tend to
- get long, but a company like Loki Software has lots of bandwidth. Mike Phillips (formerly of Loki
- Software) mentioned that sending in saved games to Loki is definitely a good thing.
+ If your game allows for saved games, then sending the author a copy of the saved game is useful because it helps the
+ tech reproduce whatever is going wrong. For commercial games, this option is more fruitful than sending a core file or
+ call stack since commercial games can't be recompiled to include debugging information. You should definitely ask before
+ sending a save game file because they tend to be long, but gaming companies usually have lots of bandwidth. Mike Phillips
+ (formerly of Loki Software) mentioned that sending in saved games to Loki is definitely a good thing.
- Needless to say, this only applies if your game crashes reproducably at a certain point. If the
- game segfaults every time you run it, or is incredibly slow, a saved game file won't be of much
- help.
+ Needless to say, this only applies if your game crashes reproducably at a certain point. If the game segfaults
+ every time you run it, or is incredibly slow, a saved game file won't be of much help.
@@ -1360,32 +1196,31 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
Suppose gfx.wad is already on my system, but couldn't be found because it isn't in the right
- directory. Then where IS the right directory? Wouldn't it be helpful to know where these programs
- looked for the missing files?
+ directory. Then where IS the right directory? Wouldn't it be helpful to know where these programs looked for the missing
+ files?
- This is where strace shines. strace tells you what system calls are being made, with what
- arguments, and what their return values are. In my `Kernel Module Programming Guide' (due to be
- released to LDP soon), I outline everything you may want to know about strace. But here's a brief
- outline using the canonical example of what strace looks like. Give the command:
+ This is where strace shines. strace tells you what system calls are being made, with what arguments, and what their
+ return values are. In my `Kernel Module Programming Guide' (due to be released to LDP soon), I outline everything you may
+ want to know about strace. But here's a brief outline using the canonical example of what strace looks like. Give the
+ command:
strace -o ./LS_LOG /bin/ls
- The -o option sends strace's output to a file; here, LS_LOG. The last argument to strace is the
- program we're inspecting, here, "ls". Look at the contents of LS_LOG. Pretty impressive, eh? Here is
- a typical line:
+ The -o option sends strace's output to a file; here, LS_LOG. The last argument to strace is the program we're
+ inspecting, here, "ls". Look at the contents of LS_LOG. Pretty impressive, eh? Here is a typical line:
open(".", O_RDONLY|O_NONBLOCK|0x18000) = 4
- We used the open() system call to open "." with various arguments, and "4" is
- the return value of the call. What does this have to do with files not being found?
+ We used the open() system call to open "." with various arguments, and "4" is the return value
+ of the call. What does this have to do with files not being found?
- Suppose I want to watch the StateOfMind demo because I can't ever seem to get enough of it. One
- day I try to run it and something bad happens:
+ Suppose I want to watch the StateOfMind demo because I can't ever seem to get enough of it. One day I try to run it
+ and something bad happens:
% ./mind.i86_linux.glibc2.1
@@ -1407,20 +1242,19 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
write(2, "Can\'t open data file \'mind.dat\'."..., ) = 33
- It was looking for mind.dat in only one directory. Clearly, mind.dat isn't
- in /usr/share. Now we can
- try to locate mind.dat and move it
- into /usr/share, or better, create a symbolic link.
+ It was looking for mind.dat in only one directory. Clearly, mind.dat
+ isn't in /usr/share. Now we can try to locate mind.dat and
+ move it into /usr/share, or better, create a symbolic link.
- This method works for libraries too. Suppose the library libmp3.so.2 is in /usr/local/include but
- your new game "Kill-Metallica" can't find it. You can use strace to determine where Kill-Metallica was
- looking for the library and make a symlink from /usr/local/include/libmp3.so.2 to wherever Kill-Metallica
- was looking for the library file.
+ This method works for libraries too. Suppose the library libmp3.so.2 is in
+ /usr/local/include but your new game "Kill-Metallica" can't find it. You can use
+ strace to determine where Kill-Metallica was looking for the library and make a symlink from /usr/local/include/libmp3.so.2 to wherever Kill-Metallica was looking for the library
+ file.
- strace is a very powerful utility. When diagnosing why things aren't being found, it's your best
- ally, and is even faster than looking at source code. As a last note, you can't look up information in
- source code of commercial games from Lokisoft or Tribsoft. But you can still use strace with
- them!
+ strace is a very powerful utility. When diagnosing why things aren't being found, it's your best ally, and is even
+ faster than looking at source code. As a last note, you can't look up information in source code of commercial games from
+ Lokisoft or Tribsoft. But you can still use strace with them!
@@ -1437,9 +1271,9 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
At the prompt, type "reset". This should clear up many problems, including consoles hosed by an SVGAlib
or ncurses based game.
- Try running the game again and normally. Once I had to kill Quake III in a hurry, so I gave it the 3
- fingered salute. The console was hosed with a quasi-graphics screen. Running Quake III and quitting normally fixed the
- problem.
+ Try running the game again and normally. Once I had to kill Quake III in a hurry, so I performed a
+ Ctl-Alt-Backspace. The console was hosed with a quasi-graphics screen. Running Quake III and quitting
+ normally fixed the problem.
The commands deallocvt and openvt will work for most of the other problems you'll have.
deallocvt N kills terminal N entirely, so that Alt-FN doesn't
@@ -1522,69 +1356,317 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
-Hardware
- I'm no Tom's Hardware or Anandtech, and don't have access to all the wealth of hardware that's out there. Contributions
- and information to fill out this section would is welcome. This stuff changes very often, and peoples' experience with
- hardware would be useful.
+Video Cards
- Which video card is the best?
- If you're using Linux, you must be smart enough to know that there isn't a plain answer to this question. There
- seem to be 3 choices for hardware accelerated 3D these days:
+ History
-
- 3dfx: Voodoo cards
- Nvidia: GeForce
- ATI: Radeon
-
+ Once upon a time, a company in San Jose, California named 3dfx Interactive was king of the gaming video card market.
+ In October 1996 they released the Voodoo I, which was a phenomenal success. It was the first hardware accelerated card,
+ but only rendered 3D; it had to be piggybacked with a 2D video card. The idea was that 2D rendering was handled by a high
+ quality 2D video card (Matrox was immensely popular at the time) but 3D information (see Glide2, section ) would be passed to the Voodoo I and rendered, using the Voodoo's fast hardware to perform the necessary
+ graphics calculations. They released the Voodoo Rush in April 1996. It should've been a more powerful card, with a 50MHz
+ GPU and 8MB of RAM. Even better, it was their first combined 2D/3D card, meaning that it freed up a valuable PCI slot
+ (most PC's only had a couple of PCI slots back then) but the Rush wasn't as popular. 3dfx removed the multi-texturing
+ unit from the Rush, and it was outperformed by the Voodoo I. At the time, ATI had their Rage series and Nvidia had their
+ Riva 128, but the Voodoo I blew them all away.
- According to Tom's Hardware and Anadtech, the Radeon is king when playing at very high resolution (as in 1600x1200),
- at 32bpp, in Windows. Otherwise the GeForce is king. There are two problems with this. We don't normally play at
- 1600x1200/32bb, and we don't play on Windows (at least I don't).
+ This was a good time for Linux. id Software's open sourced the Doom codebase and ported Quake I to Linux (December
+ 1996). We were getting our first tastes of real commercial gaming. Life was simple: you purchased a Voodoo. And it felt
+ good, because 3dfx open sourced their drivers. The king of video cards worked with Linux developers. Not only did we
+ have the best video cards, but the drivers were all open source.
- There aren't many recent video card benchmarks out for Linux. The most recent one I've seen is from March 2001 at
- . Considering the dearth of benchmarks
- out there, this needs to be taken as a canonical benchmark, so I simply quote their conclusion:
-
-
-
- At this point the performance numbers tell a pretty simple story, if it's raw speed you are looking for, the
- GeForce 2 is your choice. There is very little performance drawback to running your favorite games in Linux instead of
- Windows with this card. It provides a truly impressive performace across the board. The Radeon's performance will almost
- definitely improve as the DRI drivers mature, but for now, especially for the impatient, it is simply not a good choice
- for the hard core 3d gamer.
+ In March 1998, 3dfx released their Voodoo II, with its 3.6GB/sec memory bandwith, 12MB of video memory and 90MHz
+ core. It supported resolutions up to 1024x768. This was 3dfx in its heyday. Like the Voodoo I, the Voodoo II was a 3D
+ only card, and piggy backed with a 2D video card. The Voodoo Banshee was released in September 1998 as a combined 2D/3D
+ card, like the Rush. Despite the faster 100MHz core, the Banshee was outperformed by the Voodoo II because its
+ multi-texturing unit was removed, like with the Rush. And again like the Rush, it wasn't popular. But 3dfx reigned
+ supreme, and nobody could touch them.
- If, however, you are a graphics designer, and want a card with impeccable 2d image quality, with 3d graphics only
- a secondary priority, the Radeon is your best bet. The DRI drivers, even in their current state, are quite usable. For
- 2d only users, XFree86 4.0.2 provides production quality 2d drivers. The GeForce thoroughly trounced the Radeon in the
- Xmark performance test, so if you aren't running at a ultra high resolution, or aren't that picky, the GeForce is once
- again a better pick.
-
-
+ In April 1999, the Voodoo III was released. There were a number of Voodoo III's, ranging from a 143MHz core speed
+ to 183MHz. There were TV-out versions. There were PCI and AGP versions (it was the first AGP video card). It was
+ another success, but 3dfx began to lose ground to Nvidia, which released their TNT 2. The TNT 2 outperformed the Voodoo
+ II, and accelerated 3D graphics at full 32 bit color, while the Voodoo's were stuck at 16 bit color. But life was still
+ good for Linux. We had a card that was almost neck-to-neck with Nvidia, our drivers were open source, and in December
+ 1999, id Software gave us a huge gift: they open sourced the Quake I codebase.
- Now for my own input. The Radeon is a pretty amazing card. It's what I use, and I have yet to see a game that
- needs more power than the Radeon is able to provide. However, the OpenGL renderer for the Radeon is buggy, although the
- only games I've seen that suffer greatly are Loki Software's Heavy Metal and Soldier Of Fortune. Hopefully the people
- doing Mesa for the Radeon will fix this very soon since the Radeon is the best option for people who don't want to rely on
- the closed source, proprietary GeForce. As of June 2002, SVGAlib support Radeon cards is shaky. Developers have reported
- that SVGAlib works on the Radeon 7500, Radeon QD (ddr 64MB model) but has problems on the Radeon VE.
+ Then Nvidia released the GeForce 256 in October 1999. 3dfx's Voodoo IV, its direct competitor, was about a year
+ late which is very bad when you're competing for a bleeding edge market. While Nvidia was putting real R&D into their
+ cards, 3dfx was simply adding more and faster RAM. The Voodoo IV and V rendered in full 32bpp color, had great AA support
+ (section ), featured a 2nd GPU, more memory, and was arguably the king of of video cards. However,
+ 3dfx's late release of the Voodoo IV and V coupled with the fact that the GeForce could be had for half the price meant
+ that 3dfx was sinking fast. For Linux, the newest Voodoo's could only accelerate at 16 and 24 bit color. Worse still,
+ the Voodoo V's 2nd GPU was unused by the Linux driver (and to this day, the Voodoo V is functionally equivalent to the
+ single GPU Voodoo IV on Linux). Most Windows users were switching to Nvidia, and despite the fact that the Nvidia drivers
+ were proprietary, even Linux users began to jump onto the Nvidia bandwagon. VA Linux, the largest Linux server vendor,
+ put Nvidia into their machines.
- Now about the Voodoo cards. Unfortunately, 3dfx was bought out by nVidia, so these cards are a dead end market. If
- you're out to play the bleeding edge games like Rune or Tribes2, you'll want the Voodoo 3, 4 or 5. Preferably the 4 or 5.
- I think the Voodoo 5 is basically a Voodoo 4 with a second processer. However, this processor is not utilized by the
- Linux driver, and rumor says that the Linux 3dfx driver will never support it. So as far as Linux is concerned, the
- Voodoo 4 and 5 are the same card. All the drivers, Glide2 library and OpenGL renderers for the Voodoo cards were open
- sourced by 3dfx before they when under. It is an embarrasment to the Linux and open source community in general that this
- company failed. SVGAlib officially supports only the Voodoo Banshee and the Voodoo III, but from first hand experience,
- I've seen SVGAlib programs run on all the Voodoo cards.
+ Then in April 2000, 3dfx was attacked on a different front: ATI started releasing their first generation Radeons.
+ Until this point, ATI had always been an innovative (they developed their own 3D acceleration chips in 1996, about the
+ same time as 3dfx), but sleepy graphics chipset manufacturer. The Radeons were their first 3D accelerated card that
+ gamers took any real serious interest in. Their Radeons trounced both Nvidia and 3dfx. They worked with Linux
+ developers, open sourced all their drivers and were hailed as the great hope for Linux gaming. Nvidia came back with
+ fists swinging, but this was all too much for 3dfx. Between losing the benchmark wars to the GeForce and Radeon, their
+ lateness with new cards and high prices, 3dfx lost its market share and didn't have the funds to stay into business. On
+ April 18 2001, they sold most of their assets and technology to Nvidia, and in October 2002, they finally declared
+ bankruptcy.
+
+ The demise of 3dfx was quite sudden and a slap in the face to the open source community. I still remember my friend
+ Gabe Rosa emailing me with just "Look at /." and seeing the news. It was the 2nd worst day for Linux
+ gaming (the 1st being the demise of Loki). And it was also a shame. 3dfx was getting ready to release a new Voodoo V
+ featuring 4 GPU's which would've trounced the ATI and Nvidia offerings, as well as a new card code named "Rampage" which
+ reportedly would've put them firmly back as the king of the hill. There are reports that the Rampage's technology (which
+ was sold to Nvidia) went into the GeForce 5900. Not too shabby for 3 year old technology!
+
+ At first, things were still simple. Linux gamers would either keep their open source Voodoos, get an open source
+ Radeon or a closed source GeForce. However, with bigger and better games on the horizon, it was only a matter of time
+ before the Voodoos would no longer be a viable graphics card for modern gaming. People were still using Voodoo's, but
+ they were essentially out of the game at this point.
+
+ ATI started to release a tremendous number of versions of each video card, and keeping up with them and their
+ terminology started to become very difficult. ATI, together with NVidia, played king of hill. Their products have been
+ neck to neck ever since, with GeForce taking the lead a bit more times than the Radeon. But the Radeon's drivers were
+ open source, so many Linux users stuck by them. Then things got even more complicated.
+
+ ATI started becoming more and more reluctant to open source drivers for their new releases, and suddenly, it wasn't
+ clear who the "good guy" was anymore. Nvidia's party line was they license some of their GL code from another company,
+ and is thus non-releasable. Presumably, ATI doesn't want to release drivers to keep their trade secrets, well, a secret.
+ And it gets worse. The ATI Linux drivers have been plagued by extremely poor performance. Even when an ATI offering is
+ better than the current GeForce offering for Windows, the card is always trounced by GeForce on Linux. Because of the ATI
+ Linux driver woes, Linux users cannot use MS Windows based benchmarks or card stats. They simply don't apply to us. And
+ that's pretty much where we are right now.
+
+ As a last note, the only systematic Linux video card benchmarking effort I'm aware of was done, unfortunately, in
+ March 2001, between a Radeon 32 DDR and a GeForce 2. You can read it for yourself at , but conclusion is that the GeForce 2 firmly
+ and soundly trounced the Radeon 32 DDR.
+ Current Status (13 July 2003)
+
+ Nvidia's latest offering is the GeForce 5900, based on the NV35 chipset. It's well supported by Linux with high
+ quality but proprietary drivers. They do not release information to Linux developers, and so you need to use their binary
+ only drivers; they are not part of XFree86. Nvidia uses a convenient combined driver architecture; their driver will
+ support the TNT 2 all the way up to the GeForce 5900.
+
+ ATI's has worked with Linux developers for all their Radeons up to and including the Radeon 9200. These cards have
+ 2D and 3D support in XFree86. I'm not entirely sure of the quality of these open source drivers, however, Soldier of
+ Fortune I and Heavy Metal still have opaque texture problems under first generation Radeons. Beyond the 9200, you need to
+ use ATI's binary only proprietary drivers, available in rpm format from ATI's website. These drivers are piss poor; a
+ friend of mine claims his GeForce 4400 outperforms his Radeon 9700 pro. That's shameful.
+
+ On paper, and in the Windows benchmarks, the Radeon 9800 trounces the ill-conceived GeForce 5800 and slightly edges
+ out the GeForce 5900 according to the latest benchmarks. On paper, it's simply the more impressive card. But again, the
+ driver issue makes this information unusable for us. If you have your heart set to buy the best card for Linux, you'll
+ want to go with the GeForce 9800. Just prepare to be eating Ramen noodles for a few months; both cards are hellaciously
+ expensive.
+
+ SVGAlib Support
+
+ As of June 2002, SVGAlib support Radeon cards is shaky. Developers have reported that SVGAlib works on the
+ Radeon 7500, Radeon QD (64MB DDR model) but has problems on the Radeon VE.
+
+ I have no information about SVGAlib and the GeForce cards.
+
+
+
+
+
+
+
+ Which Video Card Should I Buy? (13 July 2003)
+
+ The answer was very difficult last year, but here's my take on it these days:
+
+
+
+ All GeForce cards require a proprietary driver which will "taint" your kernel. However, all ATI cards
+ beyond the Radeon 9200 also require a proprietary driver that will "taint" your kernel as well.
+
+ Nvidia has proven that they care enough about Linux to write and maintain current and very high quality
+ drivers for Linux. Even when ATI open sourced its video card driver, they played the "we'll make Linux developers write
+ our drivers for us" game. Their current proprietary drivers are lousy.
+
+ The current Radeon 9800 barely beats out the GeForce 5900 in benchmarks and card specs, but Linux users
+ won't benefit from this because of the 9800's poor drivers.
+
+ ATI has a very long history of dropping support for hardware as fast as they can get away with
+ it.
+
+ On MS Windows, when the GeForce beat out its main competing Radeon, the review claimed that the Radeon
+ generally had better visuals. I have no idea how this translates to Linux.
+
+
+
+ Given all this, most people will want to by a GeForce at this point in time.
+
+
+
+
+
+ Definitions: Video Card and 3D Terminology
+
+ We'll cover video card and 3D graphics terminology. This material isn't crucial to actually getting a game working,
+ but may help in deciding what hardware and software options are best for you.
+
+
+
+ Textures
+
+ A rendered scene is basically made up of polygons and lines. A texture is a 2D image (usually a bitmap) covering
+ the polygons of a 3D world. Think of it as a coat of paint for the polygons.
+
+
+
+
+
+ T&L: Transform and Lighting
+
+ The T&L is the process of translating all the 3D world information (position, distance, and light sources)
+ into the 2D image that is actually displayed on screen.
+
+
+
+
+
+ AA: Anti Aliasing
+
+ Anti aliasing is the smoothing of jagged edges along a rendered curve or polygon. Pixels are rectangular objects,
+ so drawing an angled line or curve with them results in a 'stair step' effect, also called the 'jaggies'. This is when
+ pixels make, what should be a smooth curve or line, jagged. AA uses CPU intensive filtering to smooth out these jagged
+ edges. This improves a game's visuals, but can also dramatically degrade performance.
+
+ AA is used in a number of situations. For instance, when you magnify a picture, you'll notice lines that were
+ once smooth become jagged (try it with The Gimp). Font rendering is another big application for AA.
+
+ AA can be done either by the application itself (as with The Gimp or the XFree86 font system) or by hardware, if
+ your video card supports it. Since AA is CPU intensive, it's more desirable to perform it in hardware, but if we're
+ talking about semi-static applications, like The Gimp, this really isn't an issue. For dynamic situations, like games,
+ doing AA in hardware can be crucial.
+
+
+
+
+
+ FSAA: Full Screen Anti-Aliasing
+
+ FSAA usually involves drawing a magnified version of the entire screen in a separate framebuffer, performing AA on
+ the entire image and rescaling it back to the normal resolution. As you can imagine, this is extremely CPU intensive.
+ You will never see non hardware accelerated FSAA.
+
+
+
+
+
+ Mip Mapping
+
+ Mip mapping is a technique where several scaled copies of the same texture are stored in the video card memory to
+ represent the texture at different distances. When the texture is far away a smaller version of the texture (mip map)
+ is used. When the texture is near, a bigger one is used. Mip mapping can be used regardless of filtering method (). Mip mapping reduces memory bandwidth requirements since the images are in hardware, but
+ it also offers better quality in the rendered image.
+
+
+
+
+
+ Texture Filtering
+
+ Texture filtering is the fundamental feature required to present sweet 3D graphics. It's used for a number of
+ purposes, like making adjacent textures blend smoothly and making textures viewed from an angle (think of looking at a
+ billboard from an extreme angle) look realistic. There are several common texture filtering techniques including
+ point-sampling, bilinear, trilinear and anisotropic filtering.
+
+ When I talk about 'performance hits', keep in mind that the performance hit depends on what resolution you're
+ running at. For instance, at a low resolution you may get only a very slight hit by using trilinear filtering instead
+ of bilinear filtering. But at high resolutions, the performance hit may be enormous. Also, I'm not aware of any card
+ that uses anisotropic texture filtering. TNT drivers claim they do, but I've read that these drivers still use
+ trilinear filtering when actually rendering an image to the screen.
+
+
+
+ Point Sampling Texture Filtering
+
+ Point sampling is rare these days, but if you run a game with 'software rendering' (which you'd need to do if
+ you run a 3D accelerated game without a 3D accelerated board) you're likely to see it used.
+
+
+
+
+
+ Bilinear Texture Filtering
+
+ Bilinear filtering is a computationally cheap but low quality texture filtering. It approximates the gaps
+ between textures by sampling the color of the four closest (above, below, left and right) texels. All modern 3D
+ accelerated video cards can do bilinear filtering in hardware with no performance hit.
+
+
+
+
+
+ Trilinear Texture Filtering
+
+ Trilinear filtering is a high quality bilinear filter which uses the four closest pixels in the second most
+ suitable mip map to produce smoother transitions between mip map levels. Trilinear filtering samples eight pixels
+ and interpolates them before rendering. Trilinear filtering always uses mip mapping. Trilinear filtering
+ eliminates the banding effect that appears between adjacent mip map levels. Most modern 3D accelerated video cards
+ can do trilinear filtering in hardware with no performance hit.
+
+
+
+
+
+ Anisotropic Texture Filtering
+
+ Anisotropic filtering is the best but most CPU intensive of the three common texture filtering methods.
+ Trilinear filtering is capable of producing fine visuals, but it only samples from a square area which in some cases
+ is not the ideal method. Anisotropic (meaning 'from any direction') samples from more than 8 pixels. The number of
+ sampled pixels and which sampled pixels it uses depends on the viewing angle of the surface relative to your screen.
+ It shines when viewing alphanumeric characters at an angle.
+
+
+
+
+
+
+
+ Z Buffering
+
+ A Z buffer is a portion of RAM which represents the distance between the viewer (you) and each pixel of an object.
+ Many modern 3D accelerated cards have a Z buffer in their video RAM, which speeds things up considerably, but Z
+ buffering can also be done by the application's rendering engine. However, this sort of thing clearly should be done in
+ hardware wherever possible.
+
+ Every object has a stacking order, like a deck of cards. When objects are rendered into a 2D frame buffer, the
+ rendering engine removes hidden surfaces by using the Z buffer. There are two approaches to this. Dumb engines draw
+ far objects first and close objects last, obscuring objects below them in the Z buffer. Smart engines calculate what
+ portions of objects will be obscured by objects above them and simply not render the portions that you won't see anyhow.
+ For complicated textures this is a huge savings in processor work.
+
+
+
+
+
+
+
+
+
+
+
+Sound
+
Which sound card is best?
+ By the word "best" I mean best for gaming. Gamers want high quality sound for our games with the least amount of
+ tinkering. On the other hand, a musician would have a very different concept of what "best sound card" would mean.
+ If you're a musician, you might want to check out the Linux Audio
+ Quality HOWTO.
+
Now that Linux is beginning to mature, this question isn't as important as it used to be. Once upon a time,
soundcards without onboard MIDI chips (most PCI sound cards) didn't do MIDI. This was mostly a problem for things like
xdoom or lxdoom using musserv. These days we have MIDI emulators like Timidity and libraries like SDL which don't require
@@ -1603,11 +1685,14 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
drivers on Linux. These cards include the older Ensoniq es1370 and newer Creative PCI-128. These cards are extremely
cheap and trivial to get working under Linux.
- I used to be quite a big fan of the Creative Soundblaster AWE 32, AWE 64 and AWE 64 gold soundcards. They are ISA,
- but are plug-n-play. A couple of issues to note. First, the Creative AWE HOWTO is very out of date. Second, AFAIK,
- Creative never released a Linux driver that uses the AWE 64's extra 32 voices (and they never released programming
- information for it either). So to a Linux users, the AWE 64 and 32 are nearly identical sound cards. If anyone has more
- information about the differences that a Linux user would see between the AWE 64 and 32, I'd like to hear from you.
+ I used to be a fan of the Creative Soundblaster AWE 32, AWE 64 and AWE 64 gold soundcards. These ISA PnP cards are
+ well supported by both OSS and Alsa. They all use the same E-mu 8000 synthesis chip which enables them to play 32 voices
+ simultaneously (they have 32 "channels"). A few notes: First, the Soundblaster AWE HOWTO is very out of date. Second, the
+ AWE 64 and AWE 64 gold can play 64 voices simultaneously, but this is done in software. Creative never released a Linux
+ driver for these cards (and they never released programming information to Linux developers), so Linux users cannot use
+ the extra 32 channels on the AWE 64 and AWE 64 gold. As far Linux users are concerned, all three cards are completely
+ identical (although the AWE 64 gold has gold plated connectors, which are better for sound quality than the more common
+ steel connectors).
The Creative Soundblaster Live! is an extremely popular PCI sound card these days. I've never owned one, so I
cannot comment here. However, there have been numerous reports about serious problems with the Live! and AMD motherboards
@@ -1620,115 +1705,6 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
-
-
-
-
-
-
-Miscellaneous Problems
-
- Hardware Acceleration Problems
-
- XFree86 4.x provides a more centralized and self-contained approach to video. Much of the funkyness like kernel
- modules for non-root access of video boards is, thankfully, gone.
-
- Hardware acceleration isn't working at all
-
- If you're getting like 1 fps, then your system isn't using hardware 3D acceleration. There's one of two things
- that can be going on.
-
-
- Your 3D system is misconfigured (more likely)
- Game X is misconfigured (less likely)
-
-
- The first step is to figure out which one is happening.
-
-
-
- If you have X 4.0 (X 3.* users procede to step 2), look at the output of X
- -probeonly. You'll see:
-
- (II) XXXXXX: direct rendering enabled
-
- or
-
- (II) XXXXXX: direct rendering disabled
-
- where XXXXXXX depends on which video card you have. If direct rendering is disabled, then your X
- configuration is definitely faulty. Your game is not at fault. You need to figure out why DRI is disabled. The
- most important tool for you to use at this point is the `DRI Users Guide'. It is an excellently written document
- that gives you step by step information on how to get DRI set up correctly on your machine. A copy is kept at
- .
-
- Note that if you pass this test, your system is CAPABLE of direct rendering. Your libraries can still be
- wrong. So procede to step 2.
-
- There is a program called gears which comes with the "mesademos" package. You can get mesademos
- with Debian ( apt-get install mesademos) or you can hunt for the rpm on . You can also download and compile the source yourself from the mesa
- homepage.
-
- Running gears will show some gears turning. The xterm from which you run gears will read "X frames in Y
- seconds = X/Y FPS". You can compare your system to the list of benchmarks below.
-
-
- CPU TYPE VIDEO CARD X VERSION AVERAGE FPS
-
-
- Compiling Mesa and DRI modules yourself can increase your FPS by 15 FPS; quite a performance boost! So if
- your number is, say, about 20 FPS slower than a comparable machine, chances are that gears is falling back on
- software rendering. In other words, your graphics card isn't 3D accelerating graphics.
-
- More important than FPS is having a constant FPS for small and large windows. If hardware acceleration is
- working, the FPS for gears should be nearly independent of window size. If it's not, then you're not getting
- hardware acceleration.
-
-
-
-
-
-
-
-
-
- Hardware acceleration works only for the root user
-
- XFree86 4.x
-
- If the following lines aren't present in your XF86Config file, put them in:
-
-
- Section "DRI"
- Mode 0666
- EndSection
-
-
- This allows all non-root users to use DRI. For the paranoid, it's possible to restrict DRI to only a few
- non-root users. See the DRI User Guide.
-
-
-
-
-
- XFree86 3.x
-
- Voodoo cards
-
- Voodoo card hardware acceleration only takes place ONLY at 16bpp color and fails silently when starting X
- in another color depth.
-
- Also, Voodoo cards need the 3dfx.o kernel module and a /dev/3dfx device file (major 107, minor 0) for non-root hardware acceleration.
- Neither the module nor the device file are used under XFree86 4.x.
-
-
-
-
-
-
-
Why isn't my sound working?
@@ -1796,8 +1772,8 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
ISA cards can be set to use a specific IRQ using jumpers on the card itself. With these types of cards, you need to
pass the correct IRQ and memory access, "I/O port", to the driver.
- This is a sound card specific issue, and beyond the scope of this HOWTO. (I should write about how to pass info
- to the driver).
+ This is a sound card specific issue, and beyond the scope of this HOWTO.
+
@@ -1886,17 +1862,125 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
+Miscellaneous Problems
+
+ Hardware Acceleration Problems
+
+ XFree86 4.x provides a more centralized and self-contained approach to video. Much of the funkyness like kernel
+ modules for non-root access of video boards is, thankfully, gone.
+
+ Hardware acceleration isn't working at all
+
+ If you're getting like 1 fps, then your system isn't using hardware 3D acceleration. There's one of two things
+ that can be going on.
+
+
+ Your 3D system is misconfigured (more likely)
+ Game X is misconfigured (less likely)
+
+
+ The first step is to figure out which one is happening.
+
+
+
+ If you have X 4.0 (X 3.* users procede to step 2), look at the output of X
+ -probeonly. You'll see:
+
+ (II) XXXXXX: direct rendering enabled
+
+ or
+
+ (II) XXXXXX: direct rendering disabled
+
+ where XXXXXXX depends on which video card you have. If direct rendering is disabled, then your X
+ configuration is definitely faulty. Your game is not at fault. You need to figure out why DRI is disabled. The
+ most important tool for you to use at this point is the `DRI Users Guide'. It is an excellently written document
+ that gives you step by step information on how to get DRI set up correctly on your machine. A copy is kept at
+ .
+
+ Note that if you pass this test, your system is CAPABLE of direct rendering. Your libraries can still be
+ wrong. So procede to step 2.
+
+ There is a program called glxgears which comes with the "mesademos" package. You can get mesademos
+ with Debian ( apt-get install mesademos) or you can hunt for the rpm on . You can also download and compile the source yourself from the mesa
+ homepage.
+
+ Running glxgears will show some gears turning. The xterm from which you run glxgears will read "X
+ frames in Y seconds = X/Y FPS". You can compare your system to the list of benchmarks below.
+
+
+ CPU TYPE VIDEO CARD X VERSION AVERAGE FPS
+
+
+ Compiling Mesa and DRI modules yourself can increase your FPS by 15 FPS; quite a performance boost! So if
+ your number is, say, about 20 FPS slower than a comparable machine, chances are that glxgears is falling back on
+ software rendering. In other words, your graphics card isn't 3D accelerating graphics.
+
+ More important than FPS is having a constant FPS for small and large windows. If hardware acceleration is
+ working, the FPS for glxgears should be nearly independent of window size. If it's not, then you're not getting
+ hardware acceleration.
+
+
+
+
+
+
+
+
+
+ Hardware acceleration works only for the root user
+
+ XFree86 4.x
+
+ If the following lines aren't present in your XF86Config file, put them in:
+
+
+ Section "DRI"
+ Mode 0666
+ EndSection
+
+
+ This allows all non-root users to use DRI. For the paranoid, it's possible to restrict DRI to only a few
+ non-root users. See the DRI User Guide.
+
+
+
+
+
+ XFree86 3.x
+
+ Voodoo cards
+
+ Voodoo card hardware acceleration only takes place ONLY at 16bpp color and fails silently when starting X
+ in another color depth.
+
+ Also, Voodoo cards need the 3dfx.o kernel module and a /dev/3dfx device file (major 107, minor 0) for non-root hardware acceleration.
+ Neither the module nor the device file are used under XFree86 4.x.
+
+
+
+
+
+
+
+
+
+
+
+
+
Emulation and Virtual Machines
Linux gets ragged on a lot because we don't have the wealth of games that other platforms have. Frankly, there's enough
games for me, although it would be really nice to have some of the bleeding edge games and classics like Half-life and
- Carmageddon. Fortunately, we have more emulators than you can shake a stick at. Although playing an emulated game is not
- quite as fun as playing it on the native machine, and getting some of the emulators to work well can be a difficult task,
- they're here, and there's alot of them!
+ Carmageddon. Fortunately, we have more emulators than you can shake a stick at. Although playing an emulated game is
+ sometimes not quite as fun as playing it on the native machine, and getting some of the emulators to work well can be a
+ difficult task, they're here, and there's alot of them!
-
+
Apple 8-bit
@@ -2040,7 +2124,7 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
rewind
Rewind <> was started by Eric Pouech (a wine
- developer) and Ove Kåven (a winex developer) in response to wine's license change (). It started
+ developer) and Ove Ko?=ven (a winex developer) in response to wine's license change (). It started
out life as a snapshot of the last version of wine which was completely licensed under the MIT/X11 license. The aim
is to keep rewind MIT/X11 based so that companies like Transgaming can offer wine based products.
@@ -2088,13 +2172,12 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
Win4Lin
- Win4Lin <> is a commercial product by
- Netraverse. Like vmware () it uses the virtual machine approach to running Windows
- applications, so you'll get a big window from which you can boot Windows and run all kinds of Windows applications.
- Unlike vmware, win4lin only does Windows 95/98/ME, but this turns out to be better for gamers. Because win4lin
- concentrates on these operating systems, reports say that it's faster and does a better job at running games under
- these operating system than vmware. It's also much cheaper than vmware. The most recent version of Win4Lin as of May
- 2002 is 4.0.
+ Win4Lin <> is a commercial product by Netraverse. Like
+ vmware () it uses the virtual machine approach to running Windows applications, so you'll get a
+ big window from which you can boot Windows and run all kinds of Windows applications. Unlike vmware, win4lin only
+ does Windows 95/98/ME, but this turns out to be better for gamers. Because win4lin concentrates on these operating
+ systems, reports say that it's faster and does a better job at running games under these operating system than vmware.
+ It's also much cheaper than vmware. The most recent version of Win4Lin as of June 2003 is 5.0.
@@ -2104,9 +2187,9 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
It only supports serial and parallel devices. This is important for people who use USB joysticks.
Note that vmware supports up to 2 USB devices.
- As of January 2002, expect to pay $80 without printed docs and $90 with printed docs. In addition,
- there isn't an evaluation copy available, although you get a 30 day money back guarantee. However, since it's
- commercial you do get tech support. vmware is considerably more expensive.
+ As of June 2003, expect to pay $89.99 without printed docs and $99.99 with printed docs. In addition,
+ there isn't an evaluation copy available, although you get a 30 day money back guarantee. However, since it's
+ commercial you do get tech support. vmware is considerably more expensive.
Like vmware, you're required to have a licensed copy of Win95 or Win98. Win4Lin cannot use an
existing Windows installation the way wine can.
@@ -2328,7 +2411,7 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
ebgames <> no longer officially sells Linux software. They
stopped selling Linux games and distributions at around the same time Loki Software declared bankruptcy, which is a
- shame because they had the lowest prices on Linux games I've ever seen. However, occaisionally, they'll have things
+ shame because they had the lowest prices on Linux games I've ever seen. However, occasionally, they'll have things
like Code Warrior or Redhat Linux on sale.
@@ -2417,6 +2500,11 @@ Inside the bag is a clove of garlic and a cheese sandwich. The oven door is now
FAQ is a fantastic place to start with. In addition, the FAQ keeps a fairly large database of Linux
Games.
+ Linux Audio Quality HOWTO
+ This HOWTO is mainly of interest to musicians who want professional or semi professional sound cards
+ for the recording and making of music on a computer. The information is very detailed, and perhaps overkill for
+ gamers.
+
diff --git a/LDP/howto/docbook/XFree86-R200.xml b/LDP/howto/docbook/XFree86-R200.xml
index 3dc863fd..917cc921 100644
--- a/LDP/howto/docbook/XFree86-R200.xml
+++ b/LDP/howto/docbook/XFree86-R200.xml
@@ -2,7 +2,6 @@
-
@@ -14,8 +13,20 @@
-2002-09-12
-
+ 2003-07-27
+
+
+ 1.3
+ 2003-07-27
+ HS
+ Aternative 2 updated.
+
+
+ 1.2.1
+ 2003-07-15
+ HS
+ Date fixes.
+
1.2
2003-07-14
@@ -112,10 +123,8 @@ use XFree86. The bad news is that this driver only supports 2D (meaning DRI won'
-Experiences with ATI's own driver - DEPRECATED
-This alternative is now deprecated, since ATI has suddenly decided that their cards do not support Linux.
-ATI currently have no Linux drivers available for the R200 chipset. Please let me know if this changes without
-me noticing it.
+Experiences with ATI's own driver
+This alternative uses ATIs own drivers for the Linux operating system. The drivers are developed by 3rd party Linux developers for ATI. The driver supports some 3D acceleration, and works almost "out of the box".
@@ -188,9 +197,9 @@ Driver "ati"
-Alternative 2: Using ATI's own R200 Driver - DEPRECATED
+Alternative 2: Using ATI's own R200 Driver
-ATI's R200 driver comes in two distributions - one for XFree4.1 and one for XFree4.2. You can download ATIs driver from here. Sadly, for those of us who do not use RedHat, the package is only available in RPM format (yes, I know that other distributions support RPM as well, but far from all of them). For those of us who do not have RPM support, alien is the program to use. Alien converts between various package formats. To convert the ATI driver package to a .deb package, use alien --to-deb packagename.rpm. To convert it to a .tgz package, use alien --to-tgz packagename.rpm.
+ATI's R200 driver comes in two distributions - one for XFree4.1 and one for XFree4.2. You can download ATIs driver from here. Sadly, for those of us who do not use a RedHat-based or other RPM-supporting distribution, the package is only available in RPM format. For those of us who do not have RPM support, alien is the program to use. Alien converts between various package formats. To convert the ATI driver package to a .deb package, use alien --to-deb packagename.rpm. To convert it to a .tgz package, use alien --to-tgz packagename.rpm.
You are now ready to install the driver. To install it, use:
@@ -315,7 +324,7 @@ First, download the driver file for either
Links
- http://www.ati.com/support/products/pc/radeon8500/linux/radeon8500linuxdrivers.html - ATIs R200 driver for XFree86 4.1.x/4.2.x - DEPRECATED
+ http://mirror.ati.com/support/drivers/linux/radeon-linux.html - ATIs R200 driver for XFree86 4.1.x/4.2.x
http://gatos.sf.net/ - The GATOS Projects homepage - ATI drivers and utilities
http://gatos.sourceforge.net/project/showfiles.php?group_id=12629 - The download section of the GATOS project's website.
http://dri.sf.net/ - The DRI Project, the Direct Rendering Infrastructure for XFree86. 3D Support, drivers and documentation.
diff --git a/LDP/howto/linuxdoc/Modem-HOWTO.sgml b/LDP/howto/linuxdoc/Modem-HOWTO.sgml
index 808be822..dda5d6b8 100644
--- a/LDP/howto/linuxdoc/Modem-HOWTO.sgml
+++ b/LDP/howto/linuxdoc/Modem-HOWTO.sgml
@@ -3,10 +3,11 @@
Modem-HOWTO
David S.Lawyer
- v0.28, June 2003
+ v0.29, July 2003