
                         Mesa / BeOS Information



* Introduction

Brian Paul added in Mesa 3.1 a driver for BeOS R4.5 operating system.
This driver implements a clone of the BGLView class.  This class,
derived from BView, allows OpenGL rendering into any BeOS window.  His
driver was updated in Mesa 4.1 and again in version 6.1 by Philippe
Houdoin, who's maintaining this driver since.

Any application which uses the BGLView should be able to use Mesa
instead of Be's OpenGL without changing any code.

Since Be's OpenGL implementation (as of R5) is basically just the
SGI sample implementation, it's pretty slow.  You'll see that Mesa
is considerably faster.


* Source Code

The source code for the driver is in src/mesa/drivers/beos/ directory.
It's not 100% finished at this time but many GLUT-based demos are
working.  No optimizations have been made at this time.


* Compiling

Requirements:
  - gcc version 2.95.3 for BeOS 
  You can find it here: http://www.bebits.com/app/2157

To build Mesa-powered BeOS libGL.so version, type this at root folder:

$ make beos

When it finishes the Mesa based libGL.so library for
BeOS will be in the lib/ directory.

To install it as Be's default libGL.so replacement, put it in your 
/boot/home/config/lib/ directory. All your GL/GLUT apps will use 
the Mesa based then. 

By default, it build a non-debug version library.
The x86 (MMX, SSE and 3DNOW) optimizations are also supported for x86 target.
For PowerPC BeOS flavor, sorry, Mesa don't have ppc (Altivec) optimizations
yet.

To build a DEBUG version, type instead this :

$ DEBUG=1 make beos


* Example Programs

Look in the progs/beos/ directory for one or two BGLView demo
programs.  They should have been compiled along with the Mesa
library.


* GLUT

A beta version of GLUT 3.7 port for BeOS can be found at 
http://anobject.com/jehamby/Code/Glut-3.7-x86.zip.
 
There's is a 3.5 version in src/glut/beos/, too.
The original distribution can be obtained from
http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip

They are special version of GLUT adapted for the BeOS.  I don't
believe Mark Kilgard's normal GLUT distribution includes BeOS
support.


* Special Features

Mesa's implementation of the BGLView class has an extra member
function:  CopySubBufferMESA().  It basically works like SwapBuffers()
but it only copies a sub region from the back buffer to the front
buffer.  This is a useful optimization for some applications.
If you use this method in your code be sure that you check at runtime
that you're actually using Mesa (with glGetString) so you don't
cause a fatal error when running with Be's OpenGL.


* Work Left To Do

- Switch to SGI GLU implementation..
- Add to build the BeOS GLUT port. Update it to latest known (3.7 ?)
- BDirectWindow single buffering support is not implemented yet.
- Color index mode is not implemented yet.
- Reading pixels from the front buffer not implemented yet.
- There is also a BGLScreen class in BeOS for full-screen OpenGL rendering.
  This should also be implemented for Mesa.
- Multiple renderers add-ons support, first step toward hardware acceleration
  support.

* Other contributors to this BeOS port

Marcin Konicki                   ahwayakchih <at> neoni <dot> net
Francois Revol                  revol <at> free <dot> fr


* Older BeOS Driver

Mesa 2.6 had an earlier BeOS driver.  It was based on Mesa's Off-screen
rendering interface, not BGLView.  If you're interested in the older
driver you should get Mesa 2.6.


* BeOS and Glide

Mesa 3.0 supported the 3Dfx/Glide library on Beos.  Download Mesa 3.0
if interested.  Ideally, the 3Dfx/Glide support should be updated to
work with the new Mesa 3.1 BGLView implementation.

The Glide library hasn't been updated for BeOS R4 and newer, to my knowledge,
as of February, 1999.


----------------------------------------------------------------------
$Id: README.BEOS,v 1.1.1.1 2004/12/14 16:19:07 alanh Exp $
