cosmetics; translated asm routines for use with ASSYNTAX.H
authorDaniel Borca <dborca@users.sourceforge.net>
Tue, 21 Oct 2003 08:27:21 +0000 (08:27 +0000)
committerDaniel Borca <dborca@users.sourceforge.net>
Tue, 21 Oct 2003 08:27:21 +0000 (08:27 +0000)
src/mesa/drivers/dos/dmesa.c
src/mesa/drivers/dos/mga/m_ttemp.h
src/mesa/drivers/dos/mga/m_ttemp2.h [deleted file]

index 3eaa214dafd179d1acf1c67fd76328c08e411d2d..4bc1f919da60a987165648d3987ad15677491a3d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  5.0.1
+ * Version:  5.1
  * 
  * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
  * 
@@ -1109,11 +1109,22 @@ static void clear (GLcontext *ctx, GLbitfield mask, GLboolean all,
 
 
 
+/*
+ * This function is called to specify which buffer to read and write
+ * for software rasterization (swrast) fallbacks.  This doesn't necessarily
+ * correspond to glDrawBuffer() or glReadBuffer() calls.
+ */
 static void set_buffer (GLcontext *ctx, GLframebuffer *colorBuffer, GLuint bufferBit)
 {
  /*
   * XXX todo - examine bufferBit and set read/write pointers
   */
+ /* Normally, we would have
+  *    ctx->Driver.ReadBuffer == set_read_buffer
+  *    ctx->Driver.DrawBuffer == set_draw_buffer
+  * and make sure set_draw_buffer calls _swrast_DrawBuffer,
+  * which in turn will call this routine via dd->SetBuffer.
+  */
 }
 
 
@@ -1138,9 +1149,6 @@ static const GLubyte* get_string (GLcontext *ctx, GLenum name)
  switch (name) {
         case GL_RENDERER:
              return (const GLubyte *)"Mesa DJGPP"
-                                     #ifdef FX
-                                     " (FX)"
-                                     #endif
                                      #ifdef MATROX
                                      " (MGA)"
                                      #endif
@@ -1269,16 +1277,16 @@ static void dmesa_init_pointers (GLcontext *ctx)
  tnl->Driver.RunPipeline = _tnl_run_pipeline;
 
 #if FEATURE_ARB_vertex_buffer_object
  ctx->Driver.NewBufferObject = _mesa_new_buffer_object;
  ctx->Driver.DeleteBuffer = _mesa_delete_buffer_object;
  ctx->Driver.BindBuffer = NULL;
  ctx->Driver.BufferData = _mesa_buffer_data;
  ctx->Driver.BufferSubData = _mesa_buffer_subdata;
  ctx->Driver.MapBuffer = _mesa_buffer_map;
  ctx->Driver.UnmapBuffer = NULL;
+ ctx->Driver.NewBufferObject = _mesa_new_buffer_object;
+ ctx->Driver.DeleteBuffer = _mesa_delete_buffer_object;
+ ctx->Driver.BindBuffer = NULL;
+ ctx->Driver.BufferData = _mesa_buffer_data;
+ ctx->Driver.BufferSubData = _mesa_buffer_subdata;
+ ctx->Driver.MapBuffer = _mesa_buffer_map;
+ ctx->Driver.UnmapBuffer = NULL;
 #endif
 
 dd->SetBuffer = set_buffer;
+ dd->SetBuffer = set_buffer;
    
  /* Install swsetup for tnl->Driver.Render.*:
   */
@@ -1322,7 +1330,7 @@ static void dmesa_init_pointers (GLcontext *ctx)
 
 static void dmesa_update_state (GLcontext *ctx, GLuint new_state)
 {
- /* Propogate statechange information to swrast and swrast_setup
+ /* Propagate statechange information to swrast and swrast_setup
   * modules. The DMesa driver has no internal GL-dependent state.
   */
  _swrast_InvalidateState( ctx, new_state );
index 90d9de356424c3d2a86c7fb4ca4c5b48a6014c40..e4c65f834b9121826660d783c8ddd2e7f3c73859 100644 (file)
@@ -23,7 +23,7 @@
  */
 
 /*
- * DOS/DJGPP device driver v1.3 for Mesa  --  MGA2064W triangle template
+ * DOS/DJGPP device driver v1.4 for Mesa  --  MGA2064W triangle template
  *
  *  Copyright (c) 2003 - Borca Daniel
  *  Email : dborca@yahoo.com
@@ -83,7 +83,9 @@ void TAG (int cull, const MGAvertex *v1, const MGAvertex *v2, const MGAvertex *v
 #endif
 
 #if defined(INTERP_Z) || defined(INTERP_RGB)
+#if !LONG_LONG
  double one_area;
+#endif
 #ifndef INTERP_RGB
  int red = v3->color[0];
  int green = v3->color[1];
@@ -147,7 +149,9 @@ void TAG (int cull, const MGAvertex *v1, const MGAvertex *v2, const MGAvertex *v
 
  /* draw lower triangle */
 #if defined(INTERP_Z) || defined(INTERP_RGB)
+#if !LONG_LONG
  one_area = (double)(1<<15) / (double)area;
+#endif
  mga_fifo(1);
 #else
  mga_fifo(2);
@@ -163,8 +167,13 @@ void TAG (int cull, const MGAvertex *v1, const MGAvertex *v2, const MGAvertex *v
  /* compute d?/dx and d?/dy derivatives */
  eMaj_dz = z3 - z1;
  eBot_dz = z2 - z1;
+#if !LONG_LONG
  dzdx = (eMaj_dz * eBot_dy - eMaj_dy * eBot_dz) * one_area;
  dzdy = (eMaj_dx * eBot_dz - eMaj_dz * eBot_dx) * one_area;
+#else
+ dzdx = ((long long)(eMaj_dz * eBot_dy - eMaj_dy * eBot_dz)<<15) / area;
+ dzdy = ((long long)(eMaj_dx * eBot_dz - eMaj_dz * eBot_dx)<<15) / area;
+#endif
 
 #ifndef INTERP_RGB
  mga_fifo(11);
@@ -196,12 +205,21 @@ void TAG (int cull, const MGAvertex *v1, const MGAvertex *v2, const MGAvertex *v
  eBot_db = v2->color[2] - v1->color[2];
 
  /* compute color increments */
+#if !LONG_LONG
  drdx = (eMaj_dr * eBot_dy - eMaj_dy * eBot_dr) * one_area;
  drdy = (eMaj_dx * eBot_dr - eMaj_dr * eBot_dx) * one_area;
  dgdx = (eMaj_dg * eBot_dy - eMaj_dy * eBot_dg) * one_area;
  dgdy = (eMaj_dx * eBot_dg - eMaj_dg * eBot_dx) * one_area;
  dbdx = (eMaj_db * eBot_dy - eMaj_dy * eBot_db) * one_area;
  dbdy = (eMaj_dx * eBot_db - eMaj_db * eBot_dx) * one_area;
+#else
+ drdx = ((long long)(eMaj_dr * eBot_dy - eMaj_dy * eBot_dr)<<15) / area;
+ drdy = ((long long)(eMaj_dx * eBot_dr - eMaj_dr * eBot_dx)<<15) / area;
+ dgdx = ((long long)(eMaj_dg * eBot_dy - eMaj_dy * eBot_dg)<<15) / area;
+ dgdy = ((long long)(eMaj_dx * eBot_dg - eMaj_dg * eBot_dx)<<15) / area;
+ dbdx = ((long long)(eMaj_db * eBot_dy - eMaj_dy * eBot_db)<<15) / area;
+ dbdy = ((long long)(eMaj_dx * eBot_db - eMaj_db * eBot_dx)<<15) / area;
+#endif
 
  mga_fifo(6);
  mga_outl(M_DR6, drdx);
diff --git a/src/mesa/drivers/dos/mga/m_ttemp2.h b/src/mesa/drivers/dos/mga/m_ttemp2.h
deleted file mode 100644 (file)
index 13ca87d..0000000
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  5.0
- * 
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * 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 device driver v1.3 for Mesa  --  MGA2064W triangle template
- *
- *  Copyright (c) 2003 - Borca Daniel
- *  Email : dborca@yahoo.com
- *  Web   : http://www.geocities.com/dborca
- */
-
-
-/*
- * Triangle Rasterizer Template
- *
- * This file is #include'd to generate custom triangle rasterizers.
- *
- * The following macros may be defined to indicate what auxillary information
- * must be interplated across the triangle:
- *    INTERP_Z        - if defined, interpolate Z values
- *    INTERP_RGB      - if defined, interpolate RGB values
- *
- *    TAG             - function name
- *    CULL            - enable culling for: 0=no, 1=back, -1=front
- *
- *    SETUP_CODE      - to be executed once per triangle (usually HW init)
- *
- * For flatshaded primitives, the provoking vertex is the final one.
- * This code was designed for the origin to be in the upper-left corner.
- *
- * Inspired by triangle rasterizer code written by Brian Paul.
- */
-
-
-
-#define TRI_SWAP(a, b)        \
-do {                          \
-    const MGAvertex *tmp = a; \
-    a = b;                    \
-    b = tmp;                  \
-} while (0)
-
-void TAG (int cull, const MGAvertex *v1, const MGAvertex *v2, const MGAvertex *v3)
-{
- int area;
- int x1, y1, x2, y2, x3, y3;
- int eMaj_dx, eMaj_dy, eBot_dx, eBot_dy, eTop_dx, eTop_dy;
-#ifdef INTERP_RGB
-#define FIFO_CNT_RGB 3
- int eMaj_dr, eBot_dr, eMaj_dg, eBot_dg, eMaj_db, eBot_db;
- int drdx, drdy, dgdx, dgdy, dbdx, dbdy;
-#else
-#define FIFO_CNT_RGB 0
-#endif
-#ifdef INTERP_Z
-#define FIFO_CNT_Z 1
- int dzdx, dzdy;
- int eMaj_dz, eBot_dz;
- int z1, z2, z3;
-#else
-#define FIFO_CNT_Z 0
-#endif
-
-#if defined(INTERP_Z) || defined(INTERP_RGB)
-#ifndef INTERP_RGB
- int red = v3->color[0];
- int green = v3->color[1];
- int blue = v3->color[2];
-#endif
-#else
- unsigned long color = mga_mixrgb_full(v3->color);
-#endif
-
- int sgn = 0;
-
- /* sort along the vertical axis */
- if (v2->win[1] < v1->win[1]) {
-    TRI_SWAP(v1, v2);
-#ifdef CULL
-    cull = -cull;
-#endif
- }
-
- if (v3->win[1] < v1->win[1]) {
-    TRI_SWAP(v1, v3);
-    TRI_SWAP(v2, v3);
- } else if (v3->win[1] < v2->win[1]) {
-    TRI_SWAP(v2, v3);
-#ifdef CULL
-    cull = -cull;
-#endif    
- }
-
- x1 = v1->win[0];
- y1 = v1->win[1];
- x2 = v2->win[0];
- y2 = v2->win[1];
- x3 = v3->win[0];
- y3 = v3->win[1];
-
- /* compute deltas for each edge */
- eMaj_dx = x3 - x1;
- eMaj_dy = y3 - y1;
- eBot_dx = x2 - x1;
- eBot_dy = y2 - y1;
- eTop_dx = x3 - x2;
- eTop_dy = y3 - y2;
-
- /* compute area */
- if ((area = eMaj_dx * eBot_dy - eBot_dx * eMaj_dy) == 0) {
-    return;
- }
-#ifdef CULL
- if ((area * cull) > 0) {
-    return;
- }
-#endif
-
- mga_select();
-
- /* set engine state */
-#ifdef SETUP_CODE
- SETUP_CODE
-#endif
-
- /* draw lower triangle */
-#if defined(INTERP_Z) || defined(INTERP_RGB)
- mga_fifo(1);
-#else
- mga_fifo(2);
- mga_outl(M_FCOL, color);
-#endif
- mga_outl(M_YDST, y1);
-
-#ifdef INTERP_Z
- z1 = v1->win[2];
- z2 = v2->win[2];
- z3 = v3->win[2];
-
- /* compute d?/dx and d?/dy derivatives */
- eMaj_dz = z3 - z1;
- eBot_dz = z2 - z1;
- dzdx = ((long long)(eMaj_dz * eBot_dy - eMaj_dy * eBot_dz)<<15) / area;
- dzdy = ((long long)(eMaj_dx * eBot_dz - eMaj_dz * eBot_dx)<<15) / area;
-
-#ifndef INTERP_RGB
- mga_fifo(11);
- mga_outl(M_DR2, dzdx);
- mga_outl(M_DR3, dzdy);
- mga_outl(M_DR4, red<<15);
- mga_outl(M_DR6, 0);
- mga_outl(M_DR7, 0);
- mga_outl(M_DR8, green<<15);
- mga_outl(M_DR10, 0);
- mga_outl(M_DR11, 0);
- mga_outl(M_DR12, blue<<15);
- mga_outl(M_DR14, 0);
- mga_outl(M_DR15, 0);
-#else
- mga_fifo(2);
- mga_outl(M_DR2, dzdx);
- mga_outl(M_DR3, dzdy);
-#endif
-#endif
-
-#ifdef INTERP_RGB
- /* compute color deltas */
- eMaj_dr = v3->color[0] - v1->color[0];
- eBot_dr = v2->color[0] - v1->color[0];
- eMaj_dg = v3->color[1] - v1->color[1];
- eBot_dg = v2->color[1] - v1->color[1];
- eMaj_db = v3->color[2] - v1->color[2];
- eBot_db = v2->color[2] - v1->color[2];
-
- /* compute color increments */
- drdx = ((long long)(eMaj_dr * eBot_dy - eMaj_dy * eBot_dr)<<15) / area;
- drdy = ((long long)(eMaj_dx * eBot_dr - eMaj_dr * eBot_dx)<<15) / area;
- dgdx = ((long long)(eMaj_dg * eBot_dy - eMaj_dy * eBot_dg)<<15) / area;
- dgdy = ((long long)(eMaj_dx * eBot_dg - eMaj_dg * eBot_dx)<<15) / area;
- dbdx = ((long long)(eMaj_db * eBot_dy - eMaj_dy * eBot_db)<<15) / area;
- dbdy = ((long long)(eMaj_dx * eBot_db - eMaj_db * eBot_dx)<<15) / area;
-
- mga_fifo(6);
- mga_outl(M_DR6, drdx);
- mga_outl(M_DR7, drdy);
- mga_outl(M_DR10, dgdx);
- mga_outl(M_DR11, dgdy);
- mga_outl(M_DR14, dbdx);
- mga_outl(M_DR15, dbdy);
-#endif
-
- if (area > 0) { /* major edge on the right */
-    if (eBot_dy) { /* have lower triangle */
-       mga_fifo(9 + FIFO_CNT_Z + FIFO_CNT_RGB);
-
-       mga_outl(M_AR0, eBot_dy);
-       if (x2 < x1) {
-          mga_outl(M_AR1, eBot_dx + eBot_dy - 1);
-          mga_outl(M_AR2, eBot_dx);
-          sgn |= M_SDXL;
-       } else {
-          mga_outl(M_AR1, -eBot_dx);
-          mga_outl(M_AR2, -eBot_dx);
-       }
-
-       mga_outl(M_AR6, eMaj_dy);
-       if (x3 < x1) {
-          mga_outl(M_AR4, eMaj_dx + eMaj_dy - 1);
-          mga_outl(M_AR5, eMaj_dx);
-          sgn |= M_SDXR;
-       } else {
-          mga_outl(M_AR4, -eMaj_dx);
-          mga_outl(M_AR5, -eMaj_dx);
-       }
-
-       mga_outl(M_FXBNDRY, (x1<<16) | x1);
-#ifdef INTERP_Z
-       mga_outl(M_DR0, z1<<15);
-#endif
-#ifdef INTERP_RGB
-       mga_outl(M_DR4, v1->color[0]<<15);
-       mga_outl(M_DR8, v1->color[1]<<15);
-       mga_outl(M_DR12, v1->color[2]<<15);
-#endif
-       mga_outl(M_SGN, sgn);
-       mga_outl(M_LEN | M_EXEC, eBot_dy);
-    } else { /* no lower triangle */
-       mga_fifo(4 + FIFO_CNT_Z + FIFO_CNT_RGB);
-
-       mga_outl(M_AR6, eMaj_dy);
-       if (x3 < x1) {
-          mga_outl(M_AR4, eMaj_dx + eMaj_dy - 1);
-          mga_outl(M_AR5, eMaj_dx);
-          sgn |= M_SDXR;
-       } else {
-          mga_outl(M_AR4, -eMaj_dx);
-          mga_outl(M_AR5, -eMaj_dx);
-       }
-
-       mga_outl(M_FXBNDRY, (x1<<16) | x2);
-#ifdef INTERP_Z
-       mga_outl(M_DR0, z2<<15);
-#endif
-#ifdef INTERP_RGB
-       mga_outl(M_DR4, v2->color[0]<<15);
-       mga_outl(M_DR8, v2->color[1]<<15);
-       mga_outl(M_DR12, v2->color[2]<<15);
-#endif
-    }
-
-    /* draw upper triangle */
-    if (eTop_dy) {
-       mga_fifo(5);
-       mga_outl(M_AR0, eTop_dy);
-       if (x3 < x2) {
-          mga_outl(M_AR1, eTop_dx + eTop_dy - 1);
-          mga_outl(M_AR2, eTop_dx);
-          sgn |= M_SDXL;
-       } else {
-          mga_outl(M_AR1, -eTop_dx);
-          mga_outl(M_AR2, -eTop_dx);
-          sgn &= ~M_SDXL;
-       }
-       mga_outl(M_SGN, sgn);
-       mga_outl(M_LEN | M_EXEC, eTop_dy);
-    }
- } else { /* major edge on the left */
-    if (eBot_dy) { /* have lower triangle */
-       mga_fifo(9 + FIFO_CNT_Z + FIFO_CNT_RGB);
-
-       mga_outl(M_AR0, eMaj_dy);
-       if (x3 < x1) {
-          mga_outl(M_AR1, eMaj_dx + eMaj_dy - 1);
-          mga_outl(M_AR2, eMaj_dx);
-          sgn |= M_SDXL;
-       } else {
-          mga_outl(M_AR1, -eMaj_dx);
-          mga_outl(M_AR2, -eMaj_dx);
-       }
-
-       mga_outl(M_AR6, eBot_dy);
-       if (x2 < x1) {
-          mga_outl(M_AR4, eBot_dx + eBot_dy - 1);
-          mga_outl(M_AR5, eBot_dx);
-          sgn |= M_SDXR;
-       } else {
-          mga_outl(M_AR4, -eBot_dx);
-          mga_outl(M_AR5, -eBot_dx);
-       }
-
-       mga_outl(M_FXBNDRY, (x1<<16) | x1);
-#ifdef INTERP_Z
-       mga_outl(M_DR0, z1<<15);
-#endif
-#ifdef INTERP_RGB
-       mga_outl(M_DR4, v1->color[0]<<15);
-       mga_outl(M_DR8, v1->color[1]<<15);
-       mga_outl(M_DR12, v1->color[2]<<15);
-#endif
-       mga_outl(M_SGN, sgn);
-       mga_outl(M_LEN | M_EXEC, eBot_dy);
-    } else { /* no lower triangle */
-       mga_fifo(4 + FIFO_CNT_Z + FIFO_CNT_RGB);
-
-       mga_outl(M_AR0, eMaj_dy);
-       if (x3 < x1) {
-          mga_outl(M_AR1, eMaj_dx + eMaj_dy - 1);
-          mga_outl(M_AR2, eMaj_dx);
-          sgn |= M_SDXL;
-       } else {
-          mga_outl(M_AR1, -eMaj_dx);
-          mga_outl(M_AR2, -eMaj_dx);
-       }
-
-       mga_outl(M_FXBNDRY, (x2<<16) | x1);
-#ifdef INTERP_Z
-       mga_outl(M_DR0, z1<<15);
-#endif
-#ifdef INTERP_RGB
-       mga_outl(M_DR4, v1->color[0]<<15);
-       mga_outl(M_DR8, v1->color[1]<<15);
-       mga_outl(M_DR12, v1->color[2]<<15);
-#endif
-    }
-
-    /* draw upper triangle */
-    if (eTop_dy) {
-       mga_fifo(5);
-       mga_outl(M_AR6, eTop_dy);
-       if (x3 < x2) {
-          mga_outl(M_AR4, eTop_dx + eTop_dy - 1);
-          mga_outl(M_AR5, eTop_dx);
-          sgn |= M_SDXR;
-       } else {
-          mga_outl(M_AR4, -eTop_dx);
-          mga_outl(M_AR5, -eTop_dx);
-          sgn &= ~M_SDXR;
-       }
-       mga_outl(M_SGN, sgn);
-       mga_outl(M_LEN | M_EXEC, eTop_dy);
-    }
- }
-}
-
-#undef FIFO_CNT_RGB
-#undef FIFO_CNT_Z
-
-#undef TRI_SWAP
-
-#undef SETUP_CODE
-#undef INTERP_RGB
-#undef INTERP_Z
-#undef CULL
-#undef TAG