From db41d2ea8c8b6ceddf54f87268085a83d8f342ba Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 12 Feb 2002 03:24:56 +0000 Subject: Daniel Borca's new DOS/DJGPP driver. --- docs/README.DJ | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 docs/README.DJ (limited to 'docs') diff --git a/docs/README.DJ b/docs/README.DJ new file mode 100644 index 0000000000..c4a274cedf --- /dev/null +++ b/docs/README.DJ @@ -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/ -- cgit v1.2.3