Merge branch 'mesa_7_7_branch'
[mesa.git] / src / mesa / drivers / dri / mga / mgavb.c
index 63de3563c4565b7acb36a9abf0392978cdd51bd7..1c635b23a65d9967ff1a2ec4a1f08c8291b7b5da 100644 (file)
  * Authors:
  *    Keith Whitwell <keith@tungstengraphics.com>
  */
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgavb.c,v 1.15 2003/03/26 20:43:49 tsi Exp $ */
 
+#include <stdlib.h>
 #include "mgacontext.h"
 #include "mgavb.h"
 #include "mgatris.h"
 #include "mgaioctl.h"
 #include "mga_xmesa.h"
 
-#include "glheader.h"
-#include "mtypes.h"
-#include "imports.h"
-#include "macros.h"
-#include "colormac.h"
+#include "main/glheader.h"
+#include "main/mtypes.h"
+#include "main/imports.h"
+#include "main/macros.h"
+#include "main/colormac.h"
 
 #include "tnl/t_context.h"
 #include "swrast_setup/swrast_setup.h"
 
 static struct {
    void                (*emit)( GLcontext *, GLuint, GLuint, void *, GLuint );
-   interp_func         interp;
-   copy_pv_func                copy_pv;
+   tnl_interp_func             interp;
+   tnl_copy_pv_func            copy_pv;
    GLboolean           (*check_tex_sizes)( GLcontext *ctx );
    GLuint               vertex_size;
-   GLuint               vertex_stride_shift;
    GLuint               vertex_format;
 } setup_tab[MGA_MAX_SETUP];
 
@@ -90,9 +89,7 @@ static struct {
 #define GET_TEXSOURCE(n)  mmesa->tmu_source[n]
 #define GET_VERTEX_FORMAT() mmesa->vertex_format
 #define GET_VERTEX_STORE() mmesa->verts
-#define GET_VERTEX_STRIDE_SHIFT() mmesa->vertex_stride_shift
-#define GET_UBYTE_COLOR_STORE() &mmesa->UbyteColor
-#define GET_UBYTE_SPEC_COLOR_STORE() &mmesa->UbyteSecondaryColor
+#define GET_VERTEX_SIZE() mmesa->vertex_size * sizeof(GLuint)
 
 #define HAVE_HW_VIEWPORT    0
 #define HAVE_HW_DIVIDE      0
@@ -117,12 +114,8 @@ static struct {
 
 #define PTEX_FALLBACK() FALLBACK(ctx, MGA_FALLBACK_TEXTURE, 1)
 
-
-#define IMPORT_FLOAT_COLORS mga_import_float_colors
-#define IMPORT_FLOAT_SPEC_COLORS mga_import_float_spec_colors
-
-#define INTERP_VERTEX setup_tab[MGA_CONTEXT(ctx)->SetupIndex].interp
-#define COPY_PV_VERTEX setup_tab[MGA_CONTEXT(ctx)->SetupIndex].copy_pv
+#define INTERP_VERTEX setup_tab[mmesa->SetupIndex].interp
+#define COPY_PV_VERTEX setup_tab[mmesa->SetupIndex].copy_pv
 
 
 /***********************************************************************
@@ -353,8 +346,8 @@ void mgaBuildVertices( GLcontext *ctx,
                       GLuint newinputs )
 {
    mgaContextPtr mmesa = MGA_CONTEXT( ctx );
-   GLubyte *v = ((GLubyte *)mmesa->verts + (start<<mmesa->vertex_stride_shift));
-   GLuint stride = 1<<mmesa->vertex_stride_shift;
+   GLuint stride = mmesa->vertex_size * sizeof(int);
+   GLubyte *v = ((GLubyte *)mmesa->verts + (start * stride));
 
    newinputs |= mmesa->SetupNewInputs;
    mmesa->SetupNewInputs = 0;
@@ -436,20 +429,20 @@ void mgaChooseVertexState( GLcontext *ctx )
       mmesa->dirty |= MGA_UPLOAD_PIPE;
       mmesa->vertex_format = setup_tab[ind].vertex_format;
       mmesa->vertex_size = setup_tab[ind].vertex_size;
-      mmesa->vertex_stride_shift = setup_tab[ind].vertex_stride_shift;
    }
 }
 
 
 
-void mga_emit_contiguous_verts( GLcontext *ctx,
+void *mga_emit_contiguous_verts( GLcontext *ctx,
                                 GLuint start,
-                                GLuint count )
+                                GLuint count,
+                                void *dest)
 {
    mgaContextPtr mmesa = MGA_CONTEXT(ctx);
-   GLuint vertex_size = mmesa->vertex_size * 4;
-   GLuint *dest = mgaAllocDmaLow( mmesa, (count-start) * vertex_size);
-   setup_tab[mmesa->SetupIndex].emit( ctx, start, count, dest, vertex_size );
+   GLuint stride = mmesa->vertex_size * 4;
+   setup_tab[mmesa->SetupIndex].emit( ctx, start, count, dest, stride );
+   return (void *)((char *)dest + stride * (count - start));
 }
                                   
 
@@ -472,7 +465,6 @@ void mgaInitVB( GLcontext *ctx )
    mmesa->dirty |= MGA_UPLOAD_PIPE;
    mmesa->vertex_format = setup_tab[0].vertex_format;
    mmesa->vertex_size = setup_tab[0].vertex_size;
-   mmesa->vertex_stride_shift = setup_tab[0].vertex_stride_shift;
 }
 
 
@@ -483,15 +475,5 @@ void mgaFreeVB( GLcontext *ctx )
       ALIGN_FREE(mmesa->verts);
       mmesa->verts = 0;
    }
-
-   if (mmesa->UbyteSecondaryColor.Ptr) {
-      ALIGN_FREE(mmesa->UbyteSecondaryColor.Ptr);
-      mmesa->UbyteSecondaryColor.Ptr = 0;
-   }
-
-   if (mmesa->UbyteColor.Ptr) {
-      ALIGN_FREE(mmesa->UbyteColor.Ptr);
-      mmesa->UbyteColor.Ptr = 0;
-   }
 }