Brian Paul | 6c921af | 2002-04-01 17:01:33 +0000 | [diff] [blame] | 1 | Mesa 4.0 DOS/DJGPP Port v1.0
|
| 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 3 |
|
| 4 |
|
| 5 |
|
Brian Paul | e0193a9 | 2002-02-23 17:11:27 +0000 | [diff] [blame] | 6 | Description:
|
| 7 | ~~~~~~~~~~~~
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 8 |
|
Brian Paul | b43a828 | 2002-03-08 19:27:17 +0000 | [diff] [blame] | 9 | Well, guess what... this is the DOS port of MESA 4.0, for DJGPP fans... Whoa!
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 10 |
|
| 11 |
|
| 12 |
|
| 13 | Legal:
|
| 14 | ~~~~~~
|
| 15 |
|
Brian Paul | e0193a9 | 2002-02-23 17:11:27 +0000 | [diff] [blame] | 16 | MESA copyright applies.
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 17 |
|
Brian Paul | e0193a9 | 2002-02-23 17:11:27 +0000 | [diff] [blame] | 18 |
|
| 19 |
|
| 20 | Installation:
|
| 21 | ~~~~~~~~~~~~~
|
| 22 |
|
Brian Paul | 6c921af | 2002-04-01 17:01:33 +0000 | [diff] [blame] | 23 | Type "make -f Makefile.DJ" to compile the libraries. Make accepts some options
|
| 24 | which are passed to compiler: the target cpu (CPU=..., default=`pentium') and
|
| 25 | X86 specific options (HAVE_X86=1, HAVE_MMX=1, HAVE_SSE=1, HAVE_3DNOW=1). The
|
| 26 | core library (libGL) requires LFN support during compilation. Also, you must
|
| 27 | have the DXE2 package (available on SimTel.Net, courtesy of Andrew Zabolotny)
|
| 28 | installed in order to build the dynamic modules; if you encounter errors, you
|
| 29 | can fetch a patched version from my web page.
|
Brian Paul | e69bfe7 | 2002-03-23 02:34:07 +0000 | [diff] [blame] | 30 | The demos are not built automagically (see Pitfalls below). To make them, use
|
| 31 | one of the following rules:
|
| 32 | Static:
|
| 33 | gcc -o OUT.exe IN.c -lglut -lglu -lgl
|
| 34 | Dynamic:
|
| 35 | gcc -o OUT.exe -include dmesadxe.h IN.c -ligl -liglu -liglut -ldl
|
| 36 | Usage of the dynamic modules requires three things:
|
| 37 | - include DMESADXE.H in one of the sources, so references inside
|
| 38 | dynamic modules will get resolved (or use `-include' directive)
|
| 39 | - link against import libraries (libIgl*.a) and LIBDL.A, which will do
|
| 40 | the dynamic linkage job for you
|
| 41 | - put the DXEs somewhere along the library path (LD_LIBRARY_PATH) or
|
| 42 | in the current directory
|
Brian Paul | e0193a9 | 2002-02-23 17:11:27 +0000 | [diff] [blame] | 43 |
|
| 44 | Tested on:
|
| 45 | CPU: Intel Pentium w/ MMX @166 MHz
|
| 46 | Mainboard: ViA Apollo VP2 w/ 128 MB SDRAM
|
| 47 | Video card: Matrox Millenium 2064W w/ 2048 kB WRAM, BIOS v3.0
|
Brian Paul | e69bfe7 | 2002-03-23 02:34:07 +0000 | [diff] [blame] | 48 | DJGPP: djdev 2.03 + gcc v3.0.3 + make v3.79
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 49 |
|
| 50 |
|
| 51 |
|
| 52 | libGL (the core):
|
| 53 | ~~~~~~~~~~~~~~~~~
|
| 54 |
|
Brian Paul | e0193a9 | 2002-02-23 17:11:27 +0000 | [diff] [blame] | 55 | Of course, MESA 4.0 core sources are required. It will probably work with
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 56 | MESA 3.5, but not a chance with earlier versions due to major changes to the
|
| 57 | MESA driver interface and the directory tree. All should compile succesfully.
|
| 58 |
|
| 59 | The driver has its origins in ddsample.c, written by Brian Paul and found by
|
| 60 | me in MESA 3.4.2. I touched almost all the functions, changing the coding
|
Brian Paul | e0193a9 | 2002-02-23 17:11:27 +0000 | [diff] [blame] | 61 | style :-( Sorry!
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 62 |
|
| 63 | Pitfalls:
|
| 64 | 1. The current version supports only RGB[A] modes, for it made no sense to me
|
| 65 | to endorse color-index (aka palette) modes.
|
Brian Paul | b43a828 | 2002-03-08 19:27:17 +0000 | [diff] [blame] | 66 | 2. Single-buffered is not allowed at all. Until I can find a way to use *REAL*
|
| 67 | hardware acceleration, it won't get implemented.
|
| 68 | 3. Another weird "feature" is that buffer width must be multiple of 4 (I'm a
|
Brian Paul | e0193a9 | 2002-02-23 17:11:27 +0000 | [diff] [blame] | 69 | lazy programmer and I found that the easiest way to keep buffer handling at
|
| 70 | peak performance ;-).
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 71 |
|
| 72 |
|
| 73 |
|
| 74 | libGLU:
|
| 75 | ~~~~~~~
|
| 76 |
|
Brian Paul | 6c921af | 2002-04-01 17:01:33 +0000 | [diff] [blame] | 77 | Mesa GLU sources are required.
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 78 |
|
| 79 |
|
| 80 |
|
| 81 | libGLUT (the toolkit):
|
| 82 | ~~~~~~~~~~~~~~~~~~~~~~
|
| 83 |
|
| 84 | Well, this "skeletal" GLUT implementation is not mine. Thanks should go to
|
| 85 | Bernhard Tschirren, Mark Kilgard, Brian Paul and probably others (or probably
|
| 86 | not ;-). I only changed it to be self-standing (Allegro-free). The keyboard,
|
| 87 | mouse and timer drivers were inspired from an old project of mine (D3Xl) and
|
Brian Paul | e0193a9 | 2002-02-23 17:11:27 +0000 | [diff] [blame] | 88 | fixed with some Allegro "infusions"; I deeply thank to Shawn Hargreaves et co.
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 89 |
|
| 90 | My keyboard driver used only scancodes, but since GLUT requires ASCII values
|
| 91 | for keys, I borrowed the translation tables (and maybe more) from Allegro.
|
| 92 | Ctrl-Alt-Del (plus Ctrl-Alt-End, for Windows users) will shut down the GLUT
|
| 93 | engine unconditionally: it will raise SIGINT, which in turn will call the
|
Brian Paul | e69bfe7 | 2002-03-23 02:34:07 +0000 | [diff] [blame] | 94 | destructors (let's hope), thus cleaning up your/my mess ;-) NB: since the
|
| 95 | DJGPP guys ensured signal handlers won't go beyond program's space (and since
|
| 96 | dynamic modules shall) the SIGINT can't be hooked (well, it can, but it is
|
| 97 | useless), therefore you must live with the 'Exiting due to signal SIGINT'
|
| 98 | message...
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 99 |
|
| 100 | The mouse driver is far from complete (lack of positioning, drawing, etc),
|
| 101 | but is enough to make almost all the demos work.
|
| 102 |
|
| 103 | The timer is pretty versatile for it supports multiple timers with different
|
| 104 | frequencies. It may not be the most accurate timer in the known universe, but
|
| 105 | I think it's OK. Take this example: you have timer A with a very high rate,
|
| 106 | and then you have timer B with very low rate compared to A; now, A ticks OK,
|
| 107 | but timer B will probably loose precision!
|
| 108 |
|
| 109 | As an addition, stdout and stderr are redirected and dumped upon exit. This
|
| 110 | means that printf can be safely called during graphics, but all messages come
|
| 111 | in bulk! A bit of a hack, I know, but I think it's better than to miss them
|
Brian Paul | e69bfe7 | 2002-03-23 02:34:07 +0000 | [diff] [blame] | 112 | at all. "Borrowed" from RHIDE (Robert Hoehne) or SETEDIT (Salvador Eduardo
|
| 113 | Tropea)... I'm not sure.
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 114 |
|
| 115 | Window creating defaults: 640x480x16 at (0,0), 8-bit stencil, 16-bit accum.
|
Brian Paul | e0193a9 | 2002-02-23 17:11:27 +0000 | [diff] [blame] | 116 | However, the video mode is chosen in such a way that first window will fit.
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 117 |
|
| 118 |
|
| 119 |
|
| 120 | History:
|
| 121 | ~~~~~~~~
|
| 122 |
|
Brian Paul | 6c921af | 2002-04-01 17:01:33 +0000 | [diff] [blame] | 123 | v1.0 mar-2002 initial release
|
Brian Paul | db41d2e | 2002-02-12 03:24:56 +0000 | [diff] [blame] | 124 |
|
| 125 |
|
| 126 |
|
| 127 | Contact:
|
| 128 | ~~~~~~~~
|
| 129 |
|
| 130 | Name: Borca Daniel
|
| 131 | E-mail: dborca@yahoo.com
|
| 132 | WWW: http://www.geocities.com/dborca/
|