| Mesa 5.0.1 DOS/DJGPP Port v1.4 |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| |
| |
| Description: |
| ~~~~~~~~~~~~ |
| |
| Well, guess what... this is the DOS port of Mesa 5.0.1, for DJGPP fans... Whoa! |
| The driver has its origins in ddsample.c, written by Brian Paul and found by me |
| in Mesa 3.4.2. |
| |
| |
| |
| Legal: |
| ~~~~~~ |
| |
| Mesa copyright applies, provided this package is used within Mesa. For anything |
| else, see GPL. |
| |
| |
| |
| Installation: |
| ~~~~~~~~~~~~~ |
| |
| Unzip and type: |
| |
| make -f Makefile.DJ [OPTIONS...] |
| |
| Available options: |
| |
| Environment variables: |
| CPU optimize for the given processor. |
| default = k6 |
| GLU=[mesa|sgi] specify GLU directory; can be `sgi' (requires GNU/C++) |
| or `mesa'. |
| default = mesa |
| GLIDE path to Glide3 SDK include files; used with FX. |
| default = $(TOP)/include/glide3 |
| FX=1 build for 3dfx Glide3. Note that this disables |
| compilation of most DMesa code and requires fxMesa. |
| As a consequence, you'll need the DJGPP Glide3 |
| library to build any application. |
| default = no |
| MATROX=1 build for Matrox Millennium I (MGA2064W) cards. |
| This is experimental and not intensively tested. |
| default = no |
| HAVE_X86=1 optimize for i386. |
| default = no |
| HAVE_MMX=1 allow MMX specializations, provided your assembler |
| supports MMX instruction set. However, the true CPU |
| capabilities are checked at run-time to avoid crashes. |
| default = no |
| HAVE_SSE=1 (see HAVE_MMX) |
| default = no |
| HAVE_3DNOW=1 (see HAVE_MMX) |
| default = no |
| |
| Targets: |
| all: build everything |
| libgl: build GL |
| libglu: build GLU |
| libglut: build GLUT |
| clean: remove object files |
| realclean: remove all generated files |
| |
| |
| |
| Tested on: |
| CPU: AMD Athlon XP 1800+ |
| Mainboard: EP-8KTA3 w/ 128 MB SDRAM |
| Video card: Voodoo5 5500 AGP w/ 64 MB SDRAM |
| DJGPP: djdev 2.04 + gcc v3.2.2 + make v3.79.1 |
| OS: DOS and Win98SE |
| |
| |
| |
| FAQ: |
| ~~~~ |
| |
| 1. Compilation |
| |
| Q) I tried to run `make' and it exits because `gcc' complains it cannot find |
| some stupid file. |
| A) You need LFN support. |
| A) When compiling for Glide (FX=1), pay attention to Glide path. |
| |
| Q) Libraries built OK, but linker complains about `vsnprintf' every time I |
| compile some demo. |
| A) Upgrade to DJGPP 2.04. |
| A) Add `vsnprintf.c' to the CORE_SOURCES in `src/Makefile.DJ' (untested!). |
| A) The following hack should be safe in 90% of the cases, but if anything |
| goes wrong, don't come back to me crying. Anyway, patch `src/imports.c' |
| with the following line: |
| #define vsnprintf(buf, max, fmt, arg) vsprintf(buf, fmt, arg) |
| |
| Q) `make' complains about DXE3 or something, yet it builds the libraries. |
| A) DXE3 refers to the DJGPP dynamic modules. You'll need either the latest |
| DJGPP distro, or download the separate package from my web page. Read the |
| DXE3 documentation on how to use them. |
| A) When compiling for Glide (FX=1), make sure `glid3.dxe' can be found in |
| LD_LIBRARY_PATH (or top `lib' directory). |
| |
| 2. Using Mesa for DJGPP |
| |
| Q) DMesa is so SLOOOW! The Win32 OpenGL performs so much better... |
| A) Is that a question? If you have a 3dfx Voodoo Banshee or higher card, |
| you're lucky (check http://sourceforge.net/projects/glide for the DJGPP |
| port). If you have a Matrox Millennium I card, you just MIGHT be lucky... |
| If you haven't, sorry; everything is done in software. Suggestions? |
| |
| Q) I tried to set refresh rate w/ DMesa, but without success. |
| A) Refresh rate control works only for VESA 3.0. If you were compiling for |
| Glide, see Glide info. If not, sorry! |
| |
| Q) I made a simple application and it does nothing. It exits right away. Not |
| even a blank screen. |
| A) The pure software drivers (VESA/VGA) support only double-buffered modes. |
| A) Another weird "feature" is that buffer width must be multiple of 8 (I'm a |
| lazy programmer and I found that the easiest way to keep buffer handling |
| at peak performance ;-). |
| |
| Q) My demo doesn't display text. I know I used the GLUT font routines! |
| A) Then you probably use GLUT as a DXE. Well, there is no direct access to |
| variables due to the way DXE works. Read the documentation. The author of |
| GLUT took this into account for _WIN32 DLL's only; I don't want to modify |
| his headers. The only workaround is to link GLUT the old way :-( |
| |
| Q) The GLUT is incomplete. |
| A) See below. |
| |
| |
| |
| libGLUT (the toolkit): |
| ~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Well, this "skeletal" GLUT implementation was taken from AllegGL project and |
| heavily changed. Thanks should go to Bernhard Tschirren, Mark Kilgard, Brian |
| Paul and probably others (or probably not ;-). GLUT functionality will be |
| extended only on an "as needed" basis. |
| |
| GLUT talks to hardware via PC_HW package which was put together from various |
| pieces I wrote long time ago. It consists from the keyboard, mouse and timer |
| drivers. |
| |
| My keyboard driver used only scancodes; as GLUT requires ASCII values for keys, |
| I borrowed the translation tables (and maybe more) from Allegro -- many thanks |
| to Shawn Hargreaves et co. 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 (hopefully) call the destructors, thus cleaning up your/my mess ;-) |
| NB: since the DJGPP guys ensured signal handlers won't go beyond program's |
| space (and since dynamic modules shall) the SIGINT can't be hooked (well, it |
| can, but it is useless), therefore you must live with the 'Exiting due to |
| signal SIGINT' message... |
| |
| The mouse driver is far from complete (lack of drawing, etc), but is enough to |
| make almost all the demos work. Supports the CuteMouse WheelAPI. |
| |
| The timer is pretty versatile for it supports multiple timers with different |
| frequencies. While not being the most accurate timer in the known universe, 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. A bit of a hack, I |
| know, because all messages come in bulk, but I think it's better than nothing. |
| "Borrowed" from LIBRHUTI (Robert Hoehne). |
| |
| Window creating defaults: 300x300x16 at (0,0), 16-bit depth, 16-bit accum, |
| 8-bit stencil. However, the video mode is chosen in such a way that first |
| window will fit. If you need high resolution with small windows, set initial |
| position far to the right (or way down); then you can move them back to any |
| position right before the main loop. |
| |
| The following environment variables can customize GLUT behaviour: |
| DMESA_GLUT_REFRESH - set vertical screen refresh rate (VESA3) |
| DMESA_GLUT_BPP - set default bits per pixel (VGA needs 8) |
| GLUT_FPS - print frames/second statistics to stderr |
| |
| |
| |
| History: |
| ~~~~~~~~ |
| |
| v1.0 (mar-2002) |
| initial release |
| |
| v1.1 (sep-2002) |
| + added 3dfx Glide3 support |
| + added refresh rate control |
| + added fonts in GLUT |
| * lots of minor changes |
| |
| v1.2 (nov-2002) |
| * synced w/ Mesa-4.1 |
| - removed dmesadxe.h |
| |
| v1.3 (mar-2003) |
| + enabled OpenGL 1.4 support |
| + added MMX clear/blit routines |
| + enabled SGI's GLU compilation |
| + added samples makefile |
| + added new GLUT functions |
| + added color-index modes |
| + added Matrox Millennium MGA2064W driver |
| + added 8bit FakeColor (thanks to Neil Funk) |
| + added VGA support (to keep Ben Decker happy) |
| ! fixed some compilation errors (reported by Chan Kar Heng) |
| * optimized driver for faster callback access... yeah, right :) |
| * overhauled virtual buffer and internal video drivers |
| * better fxMesa integration |
| * revamped GLUT |
| * switched to DXE3 |
| |
| v1.4 (jun-2003) |
| * accomodated makefiles with the new sourcetree |
| |
| |
| |
| Contact: |
| ~~~~~~~~ |
| |
| Name: Borca Daniel |
| E-mail: dborca@yahoo.com |
| WWW: http://www.geocities.com/dborca/ |