summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2002-04-01 17:01:33 +0000
committerBrian Paul <brian.paul@tungstengraphics.com>2002-04-01 17:01:33 +0000
commit6c921af034525fc28f006e447f62a31e00649f2c (patch)
treee6287c87d5aacd4980c1b1301aa548f67dfd5738
parenta97d216adb6cd97926d760a4b5eadfaf1fda29f7 (diff)
DOS driver update
-rw-r--r--docs/README.DJ33
-rw-r--r--include/GL/dmesa.h6
-rw-r--r--src/glu/mesa/Makefile.DJ10
-rw-r--r--src/glut/dos/Makefile.DJ32
-rw-r--r--src/glut/dos/PC_HW/pc_hw.c2
-rw-r--r--src/glut/dos/PC_HW/pc_hw.h8
-rw-r--r--src/glut/dos/PC_HW/pc_irq.S2
-rw-r--r--src/glut/dos/PC_HW/pc_keyb.c2
-rw-r--r--src/glut/dos/PC_HW/pc_mouse.c2
-rw-r--r--src/glut/dos/PC_HW/pc_timer.c2
-rw-r--r--src/glut/dos/callback.c2
-rw-r--r--src/glut/dos/color.c2
-rw-r--r--src/glut/dos/font.c2
-rw-r--r--src/glut/dos/globals.c2
-rw-r--r--src/glut/dos/init.c2
-rw-r--r--src/glut/dos/internal.h2
-rw-r--r--src/glut/dos/menu.c2
-rw-r--r--src/glut/dos/overlay.c2
-rw-r--r--src/glut/dos/state.c2
-rw-r--r--src/glut/dos/window.c15
-rw-r--r--src/mesa/drivers/dos/dmesa.c61
-rw-r--r--src/mesa/drivers/dos/dpmi.c2
-rw-r--r--src/mesa/drivers/dos/dpmiint.h2
-rw-r--r--src/mesa/drivers/dos/video.c8
-rw-r--r--src/mesa/drivers/dos/video.h2
-rw-r--r--src/mesa/main/Makefile.DJ72
26 files changed, 179 insertions, 100 deletions
diff --git a/docs/README.DJ b/docs/README.DJ
index 8b4e6dc5a3..e92d36cf4c 100644
--- a/docs/README.DJ
+++ b/docs/README.DJ
@@ -1,5 +1,5 @@
- Mesa 4.0 DOS/DJGPP Port version 0.4
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Mesa 4.0 DOS/DJGPP Port v1.0
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -20,11 +20,13 @@ MESA copyright applies.
Installation:
~~~~~~~~~~~~~
-Type "make -f Makefile.DJ" to compile the libraries. Long filename support is
-required during compilation. Also, you must have the DXE2 package (available
-on SimTel.Net, courtesy of Andrew Zabolotny) installed in order to build the
-dynamic modules; if you encounter errors, you can fetch a patched version from
-my web page.
+Type "make -f Makefile.DJ" to compile the libraries. Make accepts some options
+which are passed to compiler: the target cpu (CPU=..., default=`pentium') and
+X86 specific options (HAVE_X86=1, HAVE_MMX=1, HAVE_SSE=1, HAVE_3DNOW=1). The
+core library (libGL) requires LFN support during compilation. Also, you must
+have the DXE2 package (available on SimTel.Net, courtesy of Andrew Zabolotny)
+installed in order to build the dynamic modules; if you encounter errors, you
+can fetch a patched version from my web page.
The demos are not built automagically (see Pitfalls below). To make them, use
one of the following rules:
Static:
@@ -72,7 +74,7 @@ Pitfalls:
libGLU:
~~~~~~~
-Mesa GLU sources are required. No comment!
+Mesa GLU sources are required.
@@ -118,20 +120,7 @@ However, the video mode is chosen in such a way that first window will fit.
History:
~~~~~~~~
-v0.1 feb-2002 initial release
-v0.2 feb-2002 + fast triangle rasterizers
- + enabled sw and 1.3 extensions
- + hardware acceleration: FreeBE/AF
- + single-buffer modes (15-, 16-, and 32-bit)
- * video mode is set by CreateVisual, not MakeCurrent
- * internal changes to support multi-buf (unfinished)
- ! fixed some alpha issues... (thanks, Brian)
- + glut has now an internal timer
- * glut changed to support multi-window (unfinished)
- ! minor PC_HW corrections
-v0.3 mar-2002 - removed FreeBE/AF code
- - removed single-buffer modes
-v0.4 mar-2002 + dynamic module support
+v1.0 mar-2002 initial release
diff --git a/include/GL/dmesa.h b/include/GL/dmesa.h
index eaf0ecafc0..ab91bac67d 100644
--- a/include/GL/dmesa.h
+++ b/include/GL/dmesa.h
@@ -23,7 +23,7 @@
*/
/*
- * DOS/DJGPP device driver v0.2 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
@@ -62,6 +62,10 @@ DMesaContext DMesaCreateContext (DMesaVisual visual, DMesaContext share);
void DMesaDestroyContext (DMesaContext c);
+GLboolean DMesaViewport (DMesaBuffer b,
+ GLint xpos, GLint ypos,
+ GLint width, GLint height);
+
GLboolean DMesaMakeCurrent (DMesaContext c, DMesaBuffer b);
void DMesaSwapBuffers (DMesaBuffer b);
diff --git a/src/glu/mesa/Makefile.DJ b/src/glu/mesa/Makefile.DJ
index 0232fe5592..5b9ae7b6f0 100644
--- a/src/glu/mesa/Makefile.DJ
+++ b/src/glu/mesa/Makefile.DJ
@@ -20,7 +20,7 @@
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-# DOS/DJGPP glu makefile v0.4 for Mesa 4.0
+# DOS/DJGPP glu makefile v1.0 for Mesa 4.0
#
# Copyright (C) 2002 - Borca Daniel
# Email : dborca@yahoo.com
@@ -31,7 +31,7 @@
TOP = ..
CC = gcc
-CFLAGS = -I$(TOP)/include -Wall -W -Wno-unused -mcpu=pentium -ffast-math -O2
+CFLAGS = -I$(TOP)/include -Wall -W -Wno-unused -mcpu=$(CPU) -ffast-math -O2
AR = ar
ARFLAGS = ruv
LIBDIR = $(TOP)/lib
@@ -73,10 +73,10 @@ $(LIBDIR)/$(GLU_LIB): $(OBJECTS)
$(LIBDIR)/$(GLU_DXE) $(LIBDIR)/$(GLU_IMP): $(OBJECTS)
ifeq ($(DXE2GEN),)
- @echo Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN
- @echo somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.
+ $(warning Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN)
+ $(warning somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.)
else
- dxe2gen -o $(LIBDIR)/$(GLU_DXE) -I $(LIBDIR)/$(GLU_IMP) $(OBJECTS) -D "Glu" -U
+ dxe2gen -o $(LIBDIR)/$(GLU_DXE) -I $(LIBDIR)/$(GLU_IMP) $(OBJECTS) -D "Mesa DOS GLU" -U
endif
clean:
diff --git a/src/glut/dos/Makefile.DJ b/src/glut/dos/Makefile.DJ
index 7a26eb2d0c..02bc31b10c 100644
--- a/src/glut/dos/Makefile.DJ
+++ b/src/glut/dos/Makefile.DJ
@@ -20,7 +20,7 @@
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-# DOS/DJGPP glut makefile v0.4 for Mesa 4.0
+# DOS/DJGPP glut makefile v1.0 for Mesa 4.0
#
# Copyright (C) 2002 - Borca Daniel
# Email : dborca@yahoo.com
@@ -31,7 +31,7 @@
TOP = ..
CC = gcc
-CFLAGS = -I$(TOP)/include -Wall -W -Wno-unused -mcpu=pentium -ffast-math -O2
+CFLAGS = -I$(TOP)/include -Wall -W -Wno-unused -mcpu=$(CPU) -ffast-math -O2
AR = ar
ARFLAGS = ruv
LIBDIR = $(TOP)/lib
@@ -59,23 +59,23 @@ CORE_SOURCES = \
teapot.c \
window.c
-PC_HW_OBJECTS = \
- PC_HW/pc_hw.o \
- PC_HW/pc_keyb.o \
- PC_HW/pc_mouse.o \
- PC_HW/pc_timer.o \
- PC_HW/pc_irq.o
+PC_HW_SOURCES = \
+ PC_HW/pc_hw.c \
+ PC_HW/pc_keyb.c \
+ PC_HW/pc_mouse.c \
+ PC_HW/pc_timer.c \
+ PC_HW/pc_irq.S
-SOURCES = $(CORE_SOURCES)
+SOURCES = $(CORE_SOURCES) $(PC_HW_SOURCES)
-OBJECTS = $(SOURCES:.c=.o) $(PC_HW_OBJECTS)
+OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))
+.c.o:
+ gcc -o $@ -c $(CFLAGS) $<
.S.o:
gcc -o $@ -c $(CFLAGS) $<
.s.o:
gcc -o $@ -c $(CFLAGS) $(<:.s=.S)
-.c.o:
- gcc -o $@ -c $(CFLAGS) $<
all: $(LIBDIR)/$(GLUT_LIB) $(LIBDIR)/$(GLUT_DXE) $(LIBDIR)/$(GLUT_IMP)
@@ -84,10 +84,10 @@ $(LIBDIR)/$(GLUT_LIB): $(OBJECTS)
$(LIBDIR)/$(GLUT_DXE) $(LIBDIR)/$(GLUT_IMP): $(OBJECTS)
ifeq ($(DXE2GEN),)
- @echo Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN
- @echo somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.
+ $(warning Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN)
+ $(warning somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.)
else
- dxe2gen -o $(LIBDIR)/$(GLUT_DXE) -I $(LIBDIR)/$(GLUT_IMP) $(OBJECTS) -D "DOS Glut" -U
+ dxe2gen -o $(LIBDIR)/$(GLUT_DXE) -I $(LIBDIR)/$(GLUT_IMP) $(OBJECTS) -D "Mesa DOS GLUT" -U
endif
clean:
@@ -102,7 +102,7 @@ init.o: init.c ../include/GL/glut.h internal.h PC_HW/pc_hw.h
menu.o: menu.c ../include/GL/glut.h
models.o: models.c ../include/GL/glut.h
overlay.o: overlay.c ../include/GL/glut.h
-state.o: state.c ../include/GL/glut.h internal.h pc_hw/pc_hw.h
+state.o: state.c ../include/GL/glut.h internal.h PC_HW/pc_hw.h
teapot.o: teapot.c ../include/GL/glut.h
window.o: window.c ../include/GL/glut.h ../include/GL/dmesa.h internal.h \
PC_HW/pc_hw.h
diff --git a/src/glut/dos/PC_HW/pc_hw.c b/src/glut/dos/PC_HW/pc_hw.c
index d6ffd5650f..09ab461404 100644
--- a/src/glut/dos/PC_HW/pc_hw.c
+++ b/src/glut/dos/PC_HW/pc_hw.c
@@ -1,5 +1,5 @@
/*
- * PC/HW routine collection v0.1 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/PC_HW/pc_hw.h b/src/glut/dos/PC_HW/pc_hw.h
index 09fe8051bb..47fcf78d0c 100644
--- a/src/glut/dos/PC_HW/pc_hw.h
+++ b/src/glut/dos/PC_HW/pc_hw.h
@@ -1,5 +1,5 @@
/*
- * PC/HW routine collection v0.1 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
@@ -189,12 +189,11 @@ extern int pc_remove_irq (int i);
#define KEY_MAX 115
-extern volatile char pc_key[KEY_MAX];
-
int pc_install_keyb (void);
void pc_remove_keyb (void);
int pc_keypressed (void);
int pc_readkey (void);
+int pc_keydown (int code);
/*
* timer
@@ -205,13 +204,12 @@ void pc_remove_timer (void);
/*
* mouse
*/
-extern volatile int pc_mouse_x, pc_mouse_y, pc_mouse_b;
-
int pc_install_mouse (void);
void pc_remove_mouse (void);
MFUNC pc_install_mouse_handler (MFUNC handler);
void pc_mouse_area (int x1, int y1, int x2, int y2);
void pc_mouse_speed (int xspeed, int yspeed);
+int pc_query_mouse (int *x, int *y);
void pc_show_mouse (void);
void pc_scare_mouse (void);
void pc_unscare_mouse (void);
diff --git a/src/glut/dos/PC_HW/pc_irq.S b/src/glut/dos/PC_HW/pc_irq.S
index 8f19f8eb9f..196546072c 100644
--- a/src/glut/dos/PC_HW/pc_irq.S
+++ b/src/glut/dos/PC_HW/pc_irq.S
@@ -1,5 +1,5 @@
/*
- * PC/HW routine collection v0.2 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/PC_HW/pc_keyb.c b/src/glut/dos/PC_HW/pc_keyb.c
index d3987d8e34..50ef94b797 100644
--- a/src/glut/dos/PC_HW/pc_keyb.c
+++ b/src/glut/dos/PC_HW/pc_keyb.c
@@ -1,5 +1,5 @@
/*
- * PC/HW routine collection v0.4 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/PC_HW/pc_mouse.c b/src/glut/dos/PC_HW/pc_mouse.c
index aa1fbe4da7..72d3886d5c 100644
--- a/src/glut/dos/PC_HW/pc_mouse.c
+++ b/src/glut/dos/PC_HW/pc_mouse.c
@@ -1,5 +1,5 @@
/*
- * PC/HW routine collection v0.4 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/PC_HW/pc_timer.c b/src/glut/dos/PC_HW/pc_timer.c
index a8c58f6741..ec348e278b 100644
--- a/src/glut/dos/PC_HW/pc_timer.c
+++ b/src/glut/dos/PC_HW/pc_timer.c
@@ -1,5 +1,5 @@
/*
- * PC/HW routine collection v0.1 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/callback.c b/src/glut/dos/callback.c
index 0e49c3adfe..a9260cbe7c 100644
--- a/src/glut/dos/callback.c
+++ b/src/glut/dos/callback.c
@@ -19,7 +19,7 @@
*/
/*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/color.c b/src/glut/dos/color.c
index b755459a3b..9a7754514c 100644
--- a/src/glut/dos/color.c
+++ b/src/glut/dos/color.c
@@ -19,7 +19,7 @@
*/
/*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/font.c b/src/glut/dos/font.c
index c1303ff6f4..1c31c15813 100644
--- a/src/glut/dos/font.c
+++ b/src/glut/dos/font.c
@@ -19,7 +19,7 @@
*/
/*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/globals.c b/src/glut/dos/globals.c
index 9bdfe8e0ce..342cf3d08f 100644
--- a/src/glut/dos/globals.c
+++ b/src/glut/dos/globals.c
@@ -19,7 +19,7 @@
*/
/*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/init.c b/src/glut/dos/init.c
index 9cda3a8b5b..a6d7e830b0 100644
--- a/src/glut/dos/init.c
+++ b/src/glut/dos/init.c
@@ -19,7 +19,7 @@
*/
/*
- * DOS/DJGPP glut driver v0.4 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/internal.h b/src/glut/dos/internal.h
index 2822c2c5ab..e23d485b2e 100644
--- a/src/glut/dos/internal.h
+++ b/src/glut/dos/internal.h
@@ -19,7 +19,7 @@
*/
/*
- * DOS/DJGPP glut driver v0.2 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/menu.c b/src/glut/dos/menu.c
index 48354edfe7..eccc51d2ea 100644
--- a/src/glut/dos/menu.c
+++ b/src/glut/dos/menu.c
@@ -19,7 +19,7 @@
*/
/*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/overlay.c b/src/glut/dos/overlay.c
index b2c392fcd4..ab4f561849 100644
--- a/src/glut/dos/overlay.c
+++ b/src/glut/dos/overlay.c
@@ -19,7 +19,7 @@
*/
/*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/state.c b/src/glut/dos/state.c
index 94ef0cac79..b463f4a109 100644
--- a/src/glut/dos/state.c
+++ b/src/glut/dos/state.c
@@ -19,7 +19,7 @@
*/
/*
- * DOS/DJGPP glut driver v0.2 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/glut/dos/window.c b/src/glut/dos/window.c
index c110715ebb..f43533ce5f 100644
--- a/src/glut/dos/window.c
+++ b/src/glut/dos/window.c
@@ -19,7 +19,7 @@
*/
/*
- * DOS/DJGPP glut driver v0.2 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
@@ -171,11 +171,24 @@ void APIENTRY glutSetIconTitle (const char *title)
void APIENTRY glutPositionWindow (int x, int y)
{
+ if (DMesaViewport(buffer[window], x, y, g_width, g_height)) {
+ g_xpos = x;
+ g_ypos = y;
+ }
}
void APIENTRY glutReshapeWindow (int width, int height)
{
+ if (DMesaViewport(buffer[window], g_xpos, g_ypos, width, height)) {
+ g_width = width;
+ g_height = height;
+ if (reshape_func) {
+ reshape_func(width, height);
+ } else {
+ glViewport(0, 0, width, height);
+ }
+ }
}
diff --git a/src/mesa/drivers/dos/dmesa.c b/src/mesa/drivers/dos/dmesa.c
index 454b891c08..559204fc53 100644
--- a/src/mesa/drivers/dos/dmesa.c
+++ b/src/mesa/drivers/dos/dmesa.c
@@ -23,7 +23,7 @@
*/
/*
- * DOS/DJGPP device driver v0.3 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
@@ -76,9 +76,10 @@ struct dmesa_visual {
* Add system-specific fields to it.
*/
struct dmesa_buffer {
- GLframebuffer *gl_buffer; /* The depth, stencil, accum, etc buffers */
+ GLframebuffer gl_buffer; /* The depth, stencil, accum, etc buffers */
void *the_window; /* your window handle, etc */
+ int bypp; /* bytes per pixel */
int xpos, ypos; /* position */
int width, height; /* size in pixels */
int bwidth, len; /* bytes in a line, then total */
@@ -540,12 +541,12 @@ static GLboolean set_draw_buffer (GLcontext *ctx, GLenum mode)
* If anything special has to been done when the buffer/window is
* resized, do it now.
*/
-static void get_buffer_size (GLcontext *ctx, GLuint *width, GLuint *height)
+static void get_buffer_size (GLframebuffer *buffer, GLuint *width, GLuint *height)
{
- DMesaContext c = (DMesaContext)ctx->DriverCtx;
+ DMesaBuffer b = (DMesaBuffer)buffer;
- *width = c->Buffer->width;
- *height = c->Buffer->height;
+ *width = b->width;
+ *height = b->height;
}
@@ -554,7 +555,7 @@ static const GLubyte* get_string (GLcontext *ctx, GLenum name)
{
switch (name) {
case GL_RENDERER:
- return (const GLubyte *)"DOS Mesa";
+ return (const GLubyte *)"Mesa DOS\0DJGPP port (c) Borca Daniel 31-mar-2002";
default:
return NULL;
}
@@ -636,7 +637,7 @@ void dmesa_init_pointers (GLcontext *ctx)
ctx->Driver.Accum = _swrast_Accum;
ctx->Driver.Bitmap = _swrast_Bitmap;
ctx->Driver.Clear = clear;
- ctx->Driver.ResizeBuffersMESA = _swrast_alloc_buffers;
+ ctx->Driver.ResizeBuffers = _swrast_alloc_buffers;
ctx->Driver.CopyPixels = _swrast_CopyPixels;
ctx->Driver.DrawPixels = _swrast_DrawPixels;
ctx->Driver.ReadPixels = _swrast_ReadPixels;
@@ -804,17 +805,17 @@ DMesaBuffer DMesaCreateBuffer (DMesaVisual visual,
if ((b=(DMesaBuffer)calloc(1, sizeof(struct dmesa_buffer)))!=NULL) {
- b->gl_buffer = _mesa_create_framebuffer(visual->gl_visual,
- visual->gl_visual->depthBits > 0,
- visual->gl_visual->stencilBits > 0,
- visual->gl_visual->accumRedBits > 0,
- visual->gl_visual->alphaBits > 0);
+ _mesa_initialize_framebuffer(&b->gl_buffer,
+ visual->gl_visual,
+ visual->gl_visual->depthBits > 0,
+ visual->gl_visual->stencilBits > 0,
+ visual->gl_visual->accumRedBits > 0,
+ visual->gl_visual->alphaBits > 0);
b->xpos = xpos;
b->ypos = ypos;
b->width = width;
- b->bwidth = width * ((visual->depth+7)/8);
b->height = height;
- b->len = b->bwidth * b->height;
+ b->bypp = (visual->depth+7)/8;
}
return b;
@@ -825,7 +826,7 @@ DMesaBuffer DMesaCreateBuffer (DMesaVisual visual,
void DMesaDestroyBuffer (DMesaBuffer b)
{
free(b->the_window);
- _mesa_destroy_framebuffer(b->gl_buffer);
+ _mesa_free_framebuffer_data(&b->gl_buffer);
free(b);
}
@@ -871,23 +872,45 @@ void DMesaDestroyContext (DMesaContext c)
+GLboolean DMesaViewport (DMesaBuffer b,
+ GLint xpos, GLint ypos,
+ GLint width, GLint height)
+{
+ void *new_window;
+
+ if ((new_window=vl_sync_buffer(b->the_window, xpos, ypos, width, height))==NULL) {
+ return GL_FALSE;
+ } else {
+ b->the_window = new_window;
+ b->xpos = xpos;
+ b->ypos = ypos;
+ b->width = width;
+ b->height = height;
+ b->bwidth = width * b->bypp;
+ b->len = b->bwidth * height;
+ return GL_TRUE;
+ }
+}
+
+
+
/*
* Make the specified context and buffer the current one.
*/
GLboolean DMesaMakeCurrent (DMesaContext c, DMesaBuffer b)
{
if (c&&b) {
- if ((b->the_window=vl_sync_buffer(b->the_window, b->xpos, b->ypos, b->width, b->height))==NULL) {
+ if (!DMesaViewport(b, b->xpos, b->ypos, b->width, b->height)) {
return GL_FALSE;
}
c->Buffer = b;
dmesa_update_state(c->gl_ctx, 0);
- _mesa_make_current(c->gl_ctx, b->gl_buffer);
+ _mesa_make_current(c->gl_ctx, &b->gl_buffer);
if (c->gl_ctx->Viewport.Width==0) {
/* initialize viewport to window size */
- _mesa_Viewport(0, 0, c->Buffer->width, c->Buffer->height);
+ _mesa_Viewport(0, 0, b->width, b->height);
}
} else {
/* Detach */
diff --git a/src/mesa/drivers/dos/dpmi.c b/src/mesa/drivers/dos/dpmi.c
index 26400ac3af..0cc0a89e64 100644
--- a/src/mesa/drivers/dos/dpmi.c
+++ b/src/mesa/drivers/dos/dpmi.c
@@ -23,7 +23,7 @@
*/
/*
- * DOS/DJGPP device driver v0.3 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/mesa/drivers/dos/dpmiint.h b/src/mesa/drivers/dos/dpmiint.h
index 8494ee6bb2..d0171fb100 100644
--- a/src/mesa/drivers/dos/dpmiint.h
+++ b/src/mesa/drivers/dos/dpmiint.h
@@ -23,7 +23,7 @@
*/
/*
- * DOS/DJGPP device driver v0.3 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/mesa/drivers/dos/video.c b/src/mesa/drivers/dos/video.c
index 9d50952c52..d31037de61 100644
--- a/src/mesa/drivers/dos/video.c
+++ b/src/mesa/drivers/dos/video.c
@@ -23,7 +23,7 @@
*/
/*
- * DOS/DJGPP device driver v0.4 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
@@ -416,14 +416,12 @@ void *vl_sync_buffer (void *buffer, int x, int y, int width, int height)
if (width&3) {
return NULL;
} else {
- current_offset = video_scanlen * y + video_bypp * x;
if ((newbuf=realloc(buffer, width*height*video_bypp))!=NULL) {
+ current_offset = video_scanlen * y + video_bypp * x;
current_width = width;
current_delta = video_scanlen - video_bypp * width;
- return newbuf;
- } else {
- return NULL;
}
+ return newbuf;
}
}
diff --git a/src/mesa/drivers/dos/video.h b/src/mesa/drivers/dos/video.h
index c806aa7c88..46a1e22d30 100644
--- a/src/mesa/drivers/dos/video.h
+++ b/src/mesa/drivers/dos/video.h
@@ -23,7 +23,7 @@
*/
/*
- * DOS/DJGPP device driver v0.4 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
*
* Copyright (C) 2002 - Borca Daniel
* Email : dborca@yahoo.com
diff --git a/src/mesa/main/Makefile.DJ b/src/mesa/main/Makefile.DJ
index fc540dc60b..afe95f0c36 100644
--- a/src/mesa/main/Makefile.DJ
+++ b/src/mesa/main/Makefile.DJ
@@ -20,7 +20,7 @@
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-# DOS/DJGPP core makefile v0.4 for Mesa 4.0
+# DOS/DJGPP core makefile v1.0 for Mesa 4.0
#
# Copyright (C) 2002 - Borca Daniel
# Email : dborca@yahoo.com
@@ -31,7 +31,7 @@
TOP = ..
CC = gcc
-CFLAGS = -I$(TOP)/include -I. -Wall -W -Wno-unused -mcpu=pentium -ffast-math -O2
+CFLAGS = -I$(TOP)/include -I. -Wall -W -Wno-unused -mcpu=$(CPU) -ffast-math -O2
AR = ar
ARFLAGS = ruv
LIBDIR = $(TOP)/lib
@@ -165,14 +165,65 @@ CORE_SOURCES = \
tnl/t_vb_texmat.c \
tnl/t_vb_vertex.c
+X86_SOURCES = \
+ X86/x86.c \
+ X86/glapi_x86.S \
+ X86/common_x86.c \
+ X86/common_x86_asm.S \
+ X86/x86_xform2.S \
+ X86/x86_xform3.S \
+ X86/x86_xform4.S \
+ X86/x86_vertex.S \
+ X86/x86_cliptest.S
+
+MMX_SOURCES =
+
+SSE_SOURCES = \
+ X86/sse.c \
+ X86/sse_xform2.S \
+ X86/sse_xform3.S \
+ X86/sse_xform4.S \
+ X86/sse_vertex.S \
+ X86/sse_normal.S
+
+D3NOW_SOURCES = \
+ X86/3dnow.c \
+ X86/3dnow_xform2.S \
+ X86/3dnow_xform3.S \
+ X86/3dnow_xform4.S \
+ X86/3dnow_vertex.S
+
+ifdef HAVE_MMX
+X86_SOURCES += $(MMX_SOURCES)
+CFLAGS += -DUSE_MMX_ASM
+HAVE_X86 = 1
+endif
+ifdef HAVE_SSE
+X86_SOURCES += $(SSE_SOURCES)
+CFLAGS += -DUSE_SSE_ASM
+HAVE_X86 = 1
+endif
+ifdef HAVE_3DNOW
+X86_SOURCES += $(D3NOW_SOURCES)
+CFLAGS += -DUSE_3DNOW_ASM
+HAVE_X86 = 1
+endif
+ifdef HAVE_X86
+CFLAGS += -DUSE_X86_ASM
+else
+X86_SOURCES =
+endif
+
DRIVER_SOURCES = DOS/dmesa.c DOS/video.c DOS/dpmi.c
-SOURCES = $(CORE_SOURCES) $(DRIVER_SOURCES)
+SOURCES = $(CORE_SOURCES) $(X86_SOURCES) $(DRIVER_SOURCES)
-OBJECTS = $(SOURCES:.c=.o)
+OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))
.c.o:
gcc -o $@ -c $(CFLAGS) $<
+.S.o:
+ gcc -o $@ -c $(CFLAGS) $<
all: $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GL_DXE) $(LIBDIR)/$(GL_IMP)
@@ -181,21 +232,24 @@ $(LIBDIR)/$(GL_LIB): $(OBJECTS)
$(LIBDIR)/$(GL_DXE) $(LIBDIR)/$(GL_IMP): $(OBJECTS)
ifeq ($(DXE2GEN),)
- @echo Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN
- @echo somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.
+ $(warning Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN)
+ $(warning somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.)
else
- dxe2gen -o $(LIBDIR)/$(GL_DXE) -I $(LIBDIR)/$(GL_IMP) $(OBJECTS) -D "DOS Mesa" -U
+ dxe2gen -o $(LIBDIR)/$(GL_DXE) -I $(LIBDIR)/$(GL_IMP) $(OBJECTS) -D "Mesa DOS GL" -U
endif
clean:
-$(RM) *.o
+ifdef HAVE_X86
+ -$(RM) X86\*.o
+endif
-$(RM) DOS\*.o
include depend
DOS/dmesa.o: DOS/dmesa.c glheader.h ../include/GL/gl.h context.h glapi.h \
- mtypes.h config.h glapitable.h glthread.h math/m_matrix.h dd.h \
- ../include/GL/dmesa.h extensions.h macros.h matrix.h mmath.h texformat.h \
+ mtypes.h config.h glapitable.h glthread.h math/m_matrix.h dd.h macros.h \
+ ../include/GL/dmesa.h extensions.h matrix.h mmath.h texformat.h \
texstore.h array_cache/acache.h swrast/s_context.h swrast/swrast.h \
swrast/s_depth.h swrast/s_lines.h swrast/s_triangle.h swrast/s_trispan.h \
swrast_setup/swrast_setup.h tnl/tnl.h tnl/t_context.h math/m_vector.h \