blob: 26fd9d05396bf1c59bb826d6e0deed00eb5f35fd [file] [log] [blame]
Brian Paul642699a2003-06-16 14:32:44 +00001 Mesa 5.0.1 DOS/DJGPP Port v1.4
2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
4
5
6Description:
7~~~~~~~~~~~~
8
9Well, guess what... this is the DOS port of Mesa 5.0.1, for DJGPP fans... Whoa!
10The driver has its origins in ddsample.c, written by Brian Paul and found by me
11in Mesa 3.4.2.
12
13
14
15Legal:
16~~~~~~
17
18Mesa copyright applies, provided this package is used within Mesa. For anything
19else, see GPL.
20
21
22
23Installation:
24~~~~~~~~~~~~~
25
26Unzip and type:
27
28 make -f Makefile.DJ [OPTIONS...]
29
30Available options:
31
32 Environment variables:
33 CPU optimize for the given processor.
34 default = k6
35 GLU=[mesa|sgi] specify GLU directory; can be `sgi' (requires GNU/C++)
36 or `mesa'.
37 default = mesa
38 GLIDE path to Glide3 SDK include files; used with FX.
39 default = $(TOP)/include/glide3
40 FX=1 build for 3dfx Glide3. Note that this disables
41 compilation of most DMesa code and requires fxMesa.
42 As a consequence, you'll need the DJGPP Glide3
43 library to build any application.
44 default = no
45 MATROX=1 build for Matrox Millennium I (MGA2064W) cards.
46 This is experimental and not intensively tested.
47 default = no
48 HAVE_X86=1 optimize for i386.
49 default = no
50 HAVE_MMX=1 allow MMX specializations, provided your assembler
51 supports MMX instruction set. However, the true CPU
Brian Paul44c69992003-07-11 16:33:43 +000052 capabilities are checked at run-time to avoid lockups.
Brian Paul642699a2003-06-16 14:32:44 +000053 default = no
54 HAVE_SSE=1 (see HAVE_MMX)
55 default = no
56 HAVE_3DNOW=1 (see HAVE_MMX)
57 default = no
58
59 Targets:
60 all: build everything
61 libgl: build GL
62 libglu: build GLU
63 libglut: build GLUT
64 clean: remove object files
65 realclean: remove all generated files
66
67
68
69Tested on:
Brian Paul4e28d962003-06-30 21:51:31 +000070 CPU: AMD Athlon XP 1800+
Brian Paul642699a2003-06-16 14:32:44 +000071 Mainboard: EP-8KTA3 w/ 128 MB SDRAM
72 Video card: Voodoo5 5500 AGP w/ 64 MB SDRAM
73 DJGPP: djdev 2.04 + gcc v3.2.2 + make v3.79.1
74 OS: DOS and Win98SE
75
76
77
78FAQ:
79~~~~
80
811. Compilation
82
Brian Paul44c69992003-07-11 16:33:43 +000083 Q) `make' barfs and exits because it cannot find some stupid file.
Brian Paul642699a2003-06-16 14:32:44 +000084 A) You need LFN support.
85 A) When compiling for Glide (FX=1), pay attention to Glide path.
86
87 Q) Libraries built OK, but linker complains about `vsnprintf' every time I
88 compile some demo.
89 A) Upgrade to DJGPP 2.04.
90 A) Add `vsnprintf.c' to the CORE_SOURCES in `src/Makefile.DJ' (untested!).
Brian Paul44c69992003-07-11 16:33:43 +000091 A) Patch `src/mesa/main/imports.c' with the following line:
Brian Paul642699a2003-06-16 14:32:44 +000092 #define vsnprintf(buf, max, fmt, arg) vsprintf(buf, fmt, arg)
Brian Paul44c69992003-07-11 16:33:43 +000093 This hack should be safe in 90% of the cases, but if anything goes wrong,
94 don't come back to me crying.
Brian Paul642699a2003-06-16 14:32:44 +000095
96 Q) `make' complains about DXE3 or something, yet it builds the libraries.
97 A) DXE3 refers to the DJGPP dynamic modules. You'll need either the latest
98 DJGPP distro, or download the separate package from my web page. Read the
99 DXE3 documentation on how to use them.
100 A) When compiling for Glide (FX=1), make sure `glid3.dxe' can be found in
101 LD_LIBRARY_PATH (or top `lib' directory).
102
1032. Using Mesa for DJGPP
104
105 Q) DMesa is so SLOOOW! The Win32 OpenGL performs so much better...
106 A) Is that a question? If you have a 3dfx Voodoo Banshee or higher card,
107 you're lucky (check http://sourceforge.net/projects/glide for the DJGPP
108 port). If you have a Matrox Millennium I card, you just MIGHT be lucky...
109 If you haven't, sorry; everything is done in software. Suggestions?
110
111 Q) I tried to set refresh rate w/ DMesa, but without success.
112 A) Refresh rate control works only for VESA 3.0. If you were compiling for
113 Glide, see Glide info. If not, sorry!
114
115 Q) I made a simple application and it does nothing. It exits right away. Not
116 even a blank screen.
117 A) The pure software drivers (VESA/VGA) support only double-buffered modes.
118 A) Another weird "feature" is that buffer width must be multiple of 8 (I'm a
119 lazy programmer and I found that the easiest way to keep buffer handling
120 at peak performance ;-).
121
122 Q) My demo doesn't display text. I know I used the GLUT font routines!
123 A) Then you probably use GLUT as a DXE. Well, there is no direct access to
124 variables due to the way DXE works. Read the documentation. The author of
125 GLUT took this into account for _WIN32 DLL's only; I don't want to modify
126 his headers. The only workaround is to link GLUT the old way :-(
127
128 Q) The GLUT is incomplete.
129 A) See below.
130
131
132
133libGLUT (the toolkit):
134~~~~~~~~~~~~~~~~~~~~~~
135
136Well, this "skeletal" GLUT implementation was taken from AllegGL project and
137heavily changed. Thanks should go to Bernhard Tschirren, Mark Kilgard, Brian
138Paul and probably others (or probably not ;-). GLUT functionality will be
139extended only on an "as needed" basis.
140
141GLUT talks to hardware via PC_HW package which was put together from various
142pieces I wrote long time ago. It consists from the keyboard, mouse and timer
143drivers.
144
145My keyboard driver used only scancodes; as GLUT requires ASCII values for keys,
146I borrowed the translation tables (and maybe more) from Allegro -- many thanks
147to Shawn Hargreaves et co. Ctrl-Alt-Del (plus Ctrl-Alt-End, for Windows users)
148will shut down the GLUT engine unconditionally: it will raise SIGINT, which in
149turn will (hopefully) call the destructors, thus cleaning up your/my mess ;-)
150NB: since the DJGPP guys ensured signal handlers won't go beyond program's
151space (and since dynamic modules shall) the SIGINT can't be hooked (well, it
152can, but it is useless), therefore you must live with the 'Exiting due to
153signal SIGINT' message...
154
155The mouse driver is far from complete (lack of drawing, etc), but is enough to
156make almost all the demos work. Supports the CuteMouse WheelAPI.
157
158The timer is pretty versatile for it supports multiple timers with different
159frequencies. While not being the most accurate timer in the known universe, I
160think it's OK. Take this example: you have timer A with a very high rate, and
161then you have timer B with very low rate compared to A; now, A ticks OK, but
162timer B will probably loose precision!
163
164As an addition, stdout and stderr are redirected and dumped upon exit. This
165means that `printf' can be safely called during graphics. A bit of a hack, I
166know, because all messages come in bulk, but I think it's better than nothing.
167"Borrowed" from LIBRHUTI (Robert Hoehne).
168
169Window creating defaults: 300x300x16 at (0,0), 16-bit depth, 16-bit accum,
1708-bit stencil. However, the video mode is chosen in such a way that first
171window will fit. If you need high resolution with small windows, set initial
172position far to the right (or way down); then you can move them back to any
173position right before the main loop.
174
175The following environment variables can customize GLUT behaviour:
176 DMESA_GLUT_REFRESH - set vertical screen refresh rate (VESA3)
177 DMESA_GLUT_BPP - set default bits per pixel (VGA needs 8)
178 GLUT_FPS - print frames/second statistics to stderr
179
180
181
182History:
183~~~~~~~~
184
185v1.0 (mar-2002)
186 initial release
187
188v1.1 (sep-2002)
189 + added 3dfx Glide3 support
190 + added refresh rate control
191 + added fonts in GLUT
192 * lots of minor changes
193
194v1.2 (nov-2002)
195 * synced w/ Mesa-4.1
196 - removed dmesadxe.h
197
198v1.3 (mar-2003)
199 + enabled OpenGL 1.4 support
200 + added MMX clear/blit routines
201 + enabled SGI's GLU compilation
202 + added samples makefile
203 + added new GLUT functions
204 + added color-index modes
205 + added Matrox Millennium MGA2064W driver
206 + added 8bit FakeColor (thanks to Neil Funk)
207 + added VGA support (to keep Ben Decker happy)
208 ! fixed some compilation errors (reported by Chan Kar Heng)
209 * optimized driver for faster callback access... yeah, right :)
210 * overhauled virtual buffer and internal video drivers
211 * better fxMesa integration
212 * revamped GLUT
213 * switched to DXE3
214
215v1.4 (jun-2003)
216 * accomodated makefiles with the new sourcetree
217
218
219
220Contact:
221~~~~~~~~
222
223Name: Borca Daniel
224E-mail: dborca@yahoo.com
225WWW: http://www.geocities.com/dborca/