fix up radeon span functions using latest r200 code from Brian,
[mesa.git] / src / mesa / drivers / dri / mga / mgatris.c
index ca5f5a23cee3691a50a919e9969aa1ee95efe712..2b7ea05b142cbba262508e660c13e4494ed1ea06 100644 (file)
@@ -328,10 +328,10 @@ mga_fallback_point( mgaContextPtr mmesa,
 #define MGA_MAX_TRIFUNC     0x20
 
 static struct {
-   points_func         points;
-   line_func           line;
-   triangle_func       triangle;
-   quad_func           quad;
+   tnl_points_func             points;
+   tnl_line_func               line;
+   tnl_triangle_func   triangle;
+   tnl_quad_func               quad;
 } rast_tab[MGA_MAX_TRIFUNC];
 
 #define DO_FALLBACK (IND & MGA_FALLBACK_BIT)
@@ -360,40 +360,37 @@ static struct {
 #define VERT_Y(_v) _v->v.y
 #define VERT_Z(_v) _v->v.z
 #define AREA_IS_CCW( a ) (a > 0)
-#define GET_VERTEX(e) (mmesa->verts + (e<<mmesa->vertex_stride_shift))
+#define GET_VERTEX(e) (mmesa->verts + (e * mmesa->vertex_size * sizeof(int)))
 
 #define VERT_SET_RGBA( v, c )                                          \
 do {                                                           \
-   mga_color_t *color = (mga_color_t *)&((v)->ui[coloroffset]);        \
+   mga_color_t *color = (mga_color_t *)&((v)->ui[4]);  \
    UNCLAMPED_FLOAT_TO_UBYTE(color->red, (c)[0]);               \
    UNCLAMPED_FLOAT_TO_UBYTE(color->green, (c)[1]);             \
    UNCLAMPED_FLOAT_TO_UBYTE(color->blue, (c)[2]);              \
    UNCLAMPED_FLOAT_TO_UBYTE(color->alpha, (c)[3]);             \
 } while (0)
 
-#define VERT_COPY_RGBA( v0, v1 ) v0->ui[coloroffset] = v1->ui[coloroffset]
+#define VERT_COPY_RGBA( v0, v1 ) v0->ui[4] = v1->ui[4]
 
 #define VERT_SET_SPEC( v0, c )                                 \
 do {                                                           \
-   if (havespec) {                                             \
-      UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.red, (c)[0]);    \
-      UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.green, (c)[1]);  \
-      UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.blue, (c)[2]);   \
-   }                                                           \
+   UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.red, (c)[0]);       \
+   UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.green, (c)[1]);     \
+   UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.blue, (c)[2]);      \
 } while (0)
-#define VERT_COPY_SPEC( v0, v1 )                       \
-do {                                                   \
-   if (havespec) {                                     \
-      v0->v.specular.red   = v1->v.specular.red;       \
-      v0->v.specular.green = v1->v.specular.green;     \
-      v0->v.specular.blue  = v1->v.specular.blue;      \
-   }                                                   \
+
+#define VERT_COPY_SPEC( v0, v1 )               \
+do {                                           \
+   v0->v.specular.red   = v1->v.specular.red;  \
+   v0->v.specular.green = v1->v.specular.green;        \
+   v0->v.specular.blue  = v1->v.specular.blue; \
 } while (0)
 
-#define VERT_SAVE_RGBA( idx )    color[idx] = v[idx]->ui[coloroffset]
-#define VERT_RESTORE_RGBA( idx ) v[idx]->ui[coloroffset] = color[idx]
-#define VERT_SAVE_SPEC( idx )    if (havespec) spec[idx] = v[idx]->ui[5]
-#define VERT_RESTORE_SPEC( idx ) if (havespec) v[idx]->ui[5] = spec[idx]
+#define VERT_SAVE_RGBA( idx )    color[idx] = v[idx]->ui[4]
+#define VERT_RESTORE_RGBA( idx ) v[idx]->ui[4] = color[idx]
+#define VERT_SAVE_SPEC( idx )    spec[idx] = v[idx]->ui[5]
+#define VERT_RESTORE_SPEC( idx ) v[idx]->ui[5] = spec[idx]
 
 #define LOCAL_VARS(n)                                  \
    mgaContextPtr mmesa = MGA_CONTEXT(ctx);             \
@@ -594,7 +591,7 @@ static void init_rast_tab( void )
 /**********************************************************************/
 
 
-#define VERT(x) (mgaVertex *)(vertptr + ((x)<<vertshift))
+#define VERT(x) (mgaVertex *)(vertptr + ((x)*vertex_size*sizeof(int)))
 #define RENDER_POINTS( start, count )          \
    for ( ; start < count ; start++)            \
       mga_draw_point( mmesa, VERT(ELT(start)) );
@@ -609,7 +606,7 @@ static void init_rast_tab( void )
 #define LOCAL_VARS                                             \
     mgaContextPtr mmesa = MGA_CONTEXT(ctx);                    \
     GLubyte *vertptr = (GLubyte *)mmesa->verts;                        \
-    const GLuint vertshift = mmesa->vertex_stride_shift;               \
+    const GLuint vertex_size = mmesa->vertex_size;             \
     const GLuint * const elt = TNL_CONTEXT(ctx)->vb.Elts;      \
     (void) elt;
 #define RESET_STIPPLE 
@@ -666,7 +663,6 @@ static void mgaFastRenderClippedPoly( GLcontext *ctx, const GLuint *elts,
    GLuint vertex_size = mmesa->vertex_size;
    GLuint *vb = mgaAllocDmaLow( mmesa, (n-2) * 3 * 4 * vertex_size );
    GLubyte *vertptr = (GLubyte *)mmesa->verts;                 
-   const GLuint vertshift = mmesa->vertex_stride_shift;        
    const GLuint *start = (const GLuint *)VERT(elts[0]);
    int i,j;
 
@@ -843,7 +839,8 @@ static const char * const fallbackStrings[] = {
    "glRenderMode(selection or feedback)",
    "No hardware stencil",
    "glDepthFunc( GL_NEVER )",
-   "Mixing GL_CLAMP_TO_EDGE and GL_CLAMP"
+   "Mixing GL_CLAMP_TO_EDGE and GL_CLAMP",
+   "rasterization fallback option"
 };
 
 static const char *getFallbackString(GLuint bit)