Daniel Borca's new DOS/DJGPP driver.
This commit is contained in:
+130
@@ -0,0 +1,130 @@
|
||||
Mesa 4.0.1 DOS/DJGPP Port version 0.1
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
|
||||
First of all...
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
This is a DOS port for MESA 4.0.1. I didn't bother to consider any DOS C
|
||||
compiler other than gcc, so this port was written using DJGPP v2. To be more
|
||||
precise:
|
||||
djdev 2.03
|
||||
gcc v3.0.3
|
||||
make v3.79
|
||||
|
||||
Almost all demos were compiled and ran succesfully on my system:
|
||||
CPU: Intel Pentium w/ MMX @166 MHz
|
||||
Mainboard: ViA Apollo VP2 w/ 128 MB SDRAM
|
||||
Video card: Matrox Millenium I w/ 4096 kB WRAM, Matrox BIOS v3.0
|
||||
|
||||
Since I don't have access to any accelerated video hardware, this port is
|
||||
entirely based on VESA/SuperVGA. My little attempt to use FreeBE/AF ended in
|
||||
a failure, but that's another story: it seemed to work fine with my older
|
||||
Matrox Millenium w/ 2MB, and then I got another Matrox Millenium w/ 4MB. The
|
||||
problem with latter was it had a dead BIOS; I hot-flashed it and made it work
|
||||
in all environments (Windows 95, VESA, etc) but FreeBE/AF.
|
||||
|
||||
|
||||
|
||||
Legal:
|
||||
~~~~~~
|
||||
|
||||
This software is distributed under the terms of the GNU Lesser General Public
|
||||
License.
|
||||
|
||||
Source code written by others is subject to its respective copyright.
|
||||
|
||||
|
||||
|
||||
libGL (the core):
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Of course, MESA 4.0.1 core sources are required. It will probably work with
|
||||
MESA 3.5, but not a chance with earlier versions due to major changes to the
|
||||
MESA driver interface and the directory tree. All should compile succesfully.
|
||||
|
||||
The driver has its origins in ddsample.c, written by Brian Paul and found by
|
||||
me in MESA 3.4.2. I touched almost all the functions, changing the coding
|
||||
style ;-( Sorry!
|
||||
|
||||
Pitfalls:
|
||||
1. The current version supports only RGB[A] modes, for it made no sense to me
|
||||
to endorse color-index (aka palette) modes.
|
||||
2. Only double-buffered is allowed because it was simpler to implement at
|
||||
that moment. Single-buffered will appear soon, especially if I can find a
|
||||
way to use hardware acceleration.
|
||||
3. Another weird "feature" is that buffer width & height must be multiple of
|
||||
4 (I'm a lazy programmer and I found that the easiest way to keep buffer
|
||||
handling at peak performance ;-).
|
||||
4. The video mode selector is tricky: it searches for the smallest mode which
|
||||
will entirely contain the buffer at its current position. If you want a
|
||||
small buffer in a high-res mode, try to position it very far to the right
|
||||
(or down). I'd really use some ideas here!!!
|
||||
|
||||
|
||||
|
||||
libGLU:
|
||||
~~~~~~~
|
||||
|
||||
Mesa GLU sources are required. Everything should run smooth.
|
||||
|
||||
|
||||
|
||||
libGLUT (the toolkit):
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Well, this "skeletal" GLUT implementation is not mine. Thanks should go to
|
||||
Bernhard Tschirren, Mark Kilgard, Brian Paul and probably others (or probably
|
||||
not ;-). I only changed it to be self-standing (Allegro-free). The keyboard,
|
||||
mouse and timer drivers were inspired from an old project of mine (D3Xl) and
|
||||
fixed with some Allegro "infusions"; my deeply thanks to Shawn Hargreaves and
|
||||
co.
|
||||
|
||||
My keyboard driver used only scancodes, but since GLUT requires ASCII values
|
||||
for keys, I borrowed the translation tables (and maybe more) from Allegro.
|
||||
Ctrl-Alt-Del (plus Ctrl-Alt-End, for Windows users) will shut down the GLUT
|
||||
engine unconditionally: it will raise SIGINT, which in turn will call the
|
||||
destructors (let's hope), thus cleaning up your/my mess ;-)
|
||||
|
||||
The mouse driver is far from complete (lack of positioning, drawing, etc),
|
||||
but is enough to make almost all the demos work.
|
||||
|
||||
The timer is pretty versatile for it supports multiple timers with different
|
||||
frequencies. It may not be the most accurate timer in the known universe, but
|
||||
I think it's OK. Take this example: you have timer A with a very high rate,
|
||||
and then you have timer B with very low rate compared to A; now, A ticks OK,
|
||||
but timer B will probably loose precision!
|
||||
|
||||
As an addition, stdout and stderr are redirected and dumped upon exit. This
|
||||
means that printf can be safely called during graphics, but all messages come
|
||||
in bulk! A bit of a hack, I know, but I think it's better than to miss them
|
||||
at all.
|
||||
|
||||
Window creating defaults: 640x480x16 at (0,0), 8-bit stencil, 16-bit accum.
|
||||
|
||||
|
||||
|
||||
Installation:
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Unzip into the MESA directory, and type "make -f Makefile.DJ" to compile all
|
||||
libraries. Long filename support is required during compilation. The examples
|
||||
are not built automagically (see Pitfalls above).
|
||||
|
||||
|
||||
|
||||
History:
|
||||
~~~~~~~~
|
||||
|
||||
v0.1 feb-2002 initial release
|
||||
v0.2 ..soon..
|
||||
|
||||
|
||||
|
||||
Contact:
|
||||
~~~~~~~~
|
||||
|
||||
Name: Borca Daniel
|
||||
E-mail: dborca@yahoo.com
|
||||
WWW: http://www.geocities.com/dborca/
|
||||
Reference in New Issue
Block a user