

Getting MiniGLX up and running
------------------------------

It's necessary to do a bit of work to set up an environment to run miniglx. 

For the radeon driver, it's necessary to get the right set of kernel
modules installed before attempting to run any programs:

    rmmod radeon agpgart;
    insmod agpgart;
    insmod $(MESA)/src/kernel/radeonfb/radeonfb.o;
    insmod $(MESA)/src/kernel/radeon/radeon.o;

For all drivers, its necessary to reach the compiled libraries, and
tell MiniGLX where to find it's configuration file:

    export LD_LIBRARY_PATH=$(MESA)/lib;
    export MINIGLX_CONF=$(MESA)/lib/miniglx.conf

------------------------------------------------------------

MiniGLX Example Programs
------------------------

The following programs will work with miniglx:
	
	$(MESA)/tests/miniglx
	$(MESA)/xdemos/glxgears  

Thanks to the miniglut stub library, most of the mesa glut demos will
work.  In particular, the following have been tested.  (Note there is
no keyboard or mouse interaction with these demos).

	$(MESA)/demos/gears
	$(MESA)/demos/geartrain
	$(MESA)/demos/morph3d
	$(MESA)/demos/isosurf
	$(MESA)/demos/texobj
	$(MESA)/demos/texcyl
	$(MESA)/demos/gloss
	$(MESA)/demos/fire
	$(MESA)/demos/tunnel
	$(MESA)/demos/teapot
	$(MESA)/samples/prim
	$(MESA)/samples/olympic
	$(MESA)/samples/star
	$(MESA)/samples/wave
	...etc

In fact most of the glut demos seem to work within the constraints of
having no keyboard/mouse interactivity.  Furthermore, the use of the
glut wrapper means that these programs don't require recompilation to
run under MiniGLX -- the same binary works with both regular GLX and
MiniGLX.


------------------------------------------------------------

Porting GLX apps to MiniGLX
---------------------------

A quick list of issues encountered in porting existing GLX apps to
MiniGLX.  Listed in no particular order.

1) No input events

MiniGLX doesn't provide an input layer, so any X11 input event
handling in the existing app will have to be redone for whatever
input devices exist on the target.

2) No configuration, expose events

Many GLX and Xlib programs wait on an event to ensure the window has
become visible after being mapped.  MiniGLX provides no equivalent
facility.

3) Different headers

X11/Xlib.h, GL/GLX.h, etc must not be used if the program is being
compiled against MiniGLX.

The equivalent header is GL/MiniGLX.h.

4) Different library

It may be necessary to link directly against the minGLX libGL.so.

5) Reduced number of Xlib and GLX entrypoints.

By definition (MiniGLX is a subset of GLX), many Xlib and GLX
entrypoints, structures and macros are not present in MiniGLX.  It
will be necessary to find and eliminate all references to
non-supported entrypoints.


---------------------------------------------------------------

Bugs in radeonfb.o -- the radeon framebuffer driver.
----------------------------------------------------

Several bugs have been found in the radeonfb.o framebuffer driver.
Most of these are resolved in the version included in the MiniGLX
sources, but some remain:

1) Occasionally, after entering graphics mode, colors appear 'shifted'
or 'translated', particularly in higher resolution modes.  This is
definitely a bug in radeonfb.o as this can be provoked even when using
the software dri driver (fb_dri.so).  Importance: High.  Workaround:
Use 800x600 as it seems to be less frequent at this resolution,
otherwise, restart the application.



