Merge branch 'llvm-cliptest-viewport'
[mesa.git] / src / mesa / drivers / dri / mga / mgavb.c
index 63de3563c4565b7acb36a9abf0392978cdd51bd7..f098aa5cbc074a6c853fc66bde3fe053eb6b1ebc 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"
 #include "swrast/swrast.h"
 
 
 #define MGA_MAX_SETUP      0x80
 
 static struct {
-   void                (*emit)( GLcontext *, GLuint, GLuint, void *, GLuint );
-   interp_func         interp;
-   copy_pv_func                copy_pv;
-   GLboolean           (*check_tex_sizes)( GLcontext *ctx );
+   void                (*emit)( struct gl_context *, GLuint, GLuint, void *, GLuint );
+   tnl_interp_func             interp;
+   tnl_copy_pv_func            copy_pv;
+   GLboolean           (*check_tex_sizes)( struct gl_context *ctx );
    GLuint               vertex_size;
-   GLuint               vertex_stride_shift;
    GLuint               vertex_format;
 } setup_tab[MGA_MAX_SETUP];
 
@@ -90,9 +88,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 +113,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
 
 
 /***********************************************************************
@@ -324,7 +316,7 @@ void mgaPrintSetupFlags(char *msg, GLuint flags )
 }
 
 
-void mgaCheckTexSizes( GLcontext *ctx )
+void mgaCheckTexSizes( struct gl_context *ctx )
 {
    mgaContextPtr mmesa = MGA_CONTEXT( ctx );
    TNLcontext *tnl = TNL_CONTEXT(ctx);
@@ -347,14 +339,14 @@ void mgaCheckTexSizes( GLcontext *ctx )
 }
 
 
-void mgaBuildVertices( GLcontext *ctx, 
+void mgaBuildVertices( struct gl_context *ctx, 
                       GLuint start, 
                       GLuint count,
                       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;
@@ -394,7 +386,7 @@ void mgaBuildVertices( GLcontext *ctx,
 }
 
 
-void mgaChooseVertexState( GLcontext *ctx )
+void mgaChooseVertexState( struct gl_context *ctx )
 {
    mgaContextPtr mmesa = MGA_CONTEXT( ctx );
    TNLcontext *tnl = TNL_CONTEXT(ctx);
@@ -436,30 +428,30 @@ 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( struct gl_context *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));
 }
                                   
 
 
-void mgaInitVB( GLcontext *ctx )
+void mgaInitVB( struct gl_context *ctx )
 {
    mgaContextPtr mmesa = MGA_CONTEXT(ctx);
    GLuint size = TNL_CONTEXT(ctx)->vb.Size;
 
-   mmesa->verts = (GLubyte *)ALIGN_MALLOC(size * sizeof(mgaVertex), 32);
+   mmesa->verts = (GLubyte *)_mesa_align_malloc(size * sizeof(mgaVertex), 32);
 
    {
       static int firsttime = 1;
@@ -472,26 +464,15 @@ 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;
 }
 
 
-void mgaFreeVB( GLcontext *ctx )
+void mgaFreeVB( struct gl_context *ctx )
 {
    mgaContextPtr mmesa = MGA_CONTEXT(ctx);
    if (mmesa->verts) {
-      ALIGN_FREE(mmesa->verts);
+      _mesa_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;
-   }
 }