get tdfx compiling
authorKeith Whitwell <keith@tungstengraphics.com>
Mon, 8 Dec 2003 13:21:22 +0000 (13:21 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Mon, 8 Dec 2003 13:21:22 +0000 (13:21 +0000)
src/mesa/drivers/dri/tdfx/tdfx_context.c
src/mesa/drivers/dri/tdfx/tdfx_context.h
src/mesa/drivers/dri/tdfx/tdfx_tris.c
src/mesa/drivers/dri/tdfx/tdfx_vb.c
src/mesa/drivers/dri/tdfx/tdfx_vbtmp.h

index f3a719146d8ee56c58b5e3123798ed8fc9927765..2bc7de00e9674b2e7b825411b9b8199a6330ba10 100644 (file)
@@ -91,7 +91,7 @@ static void tdfxDDInitExtensions( GLcontext *ctx )
 
 
 
-static const struct gl_pipeline_stage *tdfx_pipeline[] = {
+static const struct tnl_pipeline_stage *tdfx_pipeline[] = {
    &_tnl_vertex_transform_stage, 
    &_tnl_normal_transform_stage, 
    &_tnl_lighting_stage,       /* REMOVE: fog coord stage */
@@ -346,7 +346,7 @@ tdfxInitContext( __DRIdrawablePrivate *driDrawPriv, tdfxContextPtr fxMesa )
    FxI32 result[2];
 
    if ( TDFX_DEBUG & DEBUG_VERBOSE_DRI ) {
-      fprintf( stderr, "%s( %p )\n", __FUNCTION__, fxMesa );
+      fprintf( stderr, "%s( %p )\n", __FUNCTION__, (void *)fxMesa );
    }
 
 #if DEBUG_LOCKING
@@ -461,7 +461,7 @@ tdfxDestroyContext( __DRIcontextPrivate *driContextPriv )
    tdfxContextPtr fxMesa = (tdfxContextPtr) driContextPriv->driverPrivate;
 
    if ( TDFX_DEBUG & DEBUG_VERBOSE_DRI ) {
-      fprintf( stderr, "%s( %p )\n", __FUNCTION__, fxMesa );
+      fprintf( stderr, "%s( %p )\n", __FUNCTION__, (void *)fxMesa );
    }
 
    if ( fxMesa ) {
@@ -503,7 +503,7 @@ tdfxUnbindContext( __DRIcontextPrivate *driContextPriv )
    tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx);
 
    if ( TDFX_DEBUG & DEBUG_VERBOSE_DRI ) {
-      fprintf( stderr, "%s( %p )\n", __FUNCTION__, driContextPriv );
+      fprintf( stderr, "%s( %p )\n", __FUNCTION__, (void *)driContextPriv );
    }
 
    if ( driContextPriv && (tdfxContextPtr) driContextPriv == fxMesa ) {
@@ -521,7 +521,7 @@ tdfxMakeCurrent( __DRIcontextPrivate *driContextPriv,
                  __DRIdrawablePrivate *driReadPriv )
 {
    if ( TDFX_DEBUG & DEBUG_VERBOSE_DRI ) {
-      fprintf( stderr, "%s( %p )\n", __FUNCTION__, driContextPriv );
+      fprintf( stderr, "%s( %p )\n", __FUNCTION__, (void *)driContextPriv );
    }
 
    if ( driContextPriv ) {
index 9b0c912769b4ed98894e48857087a3f0b6f575ae..4bf813061e03b76a4d5e70d9cc634eadbbccefb5 100644 (file)
@@ -868,11 +868,6 @@ struct tdfx_context {
 
    struct tdfx_glide   Glide;
 
-
-   /* Temporaries for translating away float colors:
-    */
-   struct gl_client_array UbyteColor;
-
    /* Fallback rasterization functions 
     */
    tdfx_point_func draw_point;
index bf50d7bca77a87b08fd4b26b2b46bcb6c547499a..131c2f1a0e7091a28230e723107503637906208b 100644 (file)
@@ -216,7 +216,7 @@ static void tdfx_print_vertex( GLcontext *ctx, const tdfxVertex *v )
 {
    tdfxContextPtr imesa = TDFX_CONTEXT( ctx );
 
-   fprintf(stderr, "vertex at %p\n", v);
+   fprintf(stderr, "vertex at %p\n", (void *)v);
 
    if (imesa->vertexFormat == TDFX_LAYOUT_TINY) {
       fprintf(stderr, "x %f y %f z %f\n", v->v.x, v->v.y, v->v.z);
index de5b9360e0b842a87d220f41eff0e392f4157f83..3562ead19c4013302580614d927bf213a2b2be53 100644 (file)
@@ -72,40 +72,9 @@ static struct {
 } setup_tab[TDFX_MAX_SETUP];
 
 
-static void import_float_colors( GLcontext *ctx )
-{
-   struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
-   struct gl_client_array *from = VB->ColorPtr[0];
-   struct gl_client_array *to = &TDFX_CONTEXT(ctx)->UbyteColor;
-   GLuint count = VB->Count;
 
-   if (!to->Ptr) {
-      to->Ptr = ALIGN_MALLOC( VB->Size * 4 * sizeof(GLubyte), 32 );
-      to->Type = GL_UNSIGNED_BYTE;
-   }
 
-   /* No need to transform the same value 3000 times.
-    */
-   if (!from->StrideB) {
-      to->StrideB = 0;
-      count = 1;
-   }
-   else
-      to->StrideB = 4 * sizeof(GLubyte);
-   
-   _math_trans_4ub( (GLubyte (*)[4]) to->Ptr,
-                   from->Ptr,
-                   from->StrideB,
-                   from->Type,
-                   from->Size,
-                   0,
-                   count);
-
-   VB->ColorPtr[0] = to;
-}
-
-
-#define GET_COLOR(ptr, idx) (((GLchan (*)[4])((ptr)->Ptr))[idx])
+#define GET_COLOR(ptr, idx) ((ptr)->data[idx])
 
 
 static void interp_extras( GLcontext *ctx,
@@ -270,7 +239,7 @@ void tdfxBuildVertices( GLcontext *ctx, GLuint start, GLuint count,
    if (!newinputs)
       return;
 
-   if (newinputs & VERT_BIT_CLIP) {
+   if (newinputs & VERT_BIT_POS) {
       setup_tab[fxMesa->SetupIndex].emit( ctx, start, count, v, stride );   
    } else {
       GLuint ind = 0;
@@ -356,10 +325,4 @@ void tdfxFreeVB( GLcontext *ctx )
       ALIGN_FREE(fxMesa->verts);
       fxMesa->verts = 0;
    }
-
-   if (fxMesa->UbyteColor.Ptr) {
-      ALIGN_FREE(fxMesa->UbyteColor.Ptr);
-      fxMesa->UbyteColor.Ptr = 0;
-   }
-
 }
index 9925a10eabb7f93cba69e183cefad78ddd427e09..fd693330dad2228f72bc26f92dbc45ce85695890 100644 (file)
@@ -9,7 +9,7 @@ static void TAG(emit)( GLcontext *ctx,
    tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx);
    struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
    GLfloat (*tc0)[4], (*tc1)[4];
-   GLubyte (*col)[4];
+   GLfloat (*col)[4];
    GLuint tc0_stride, tc1_stride, col_stride;
    GLuint tc0_size, tc1_size;
    GLfloat (*proj)[4] = VB->NdcPtr->data; 
@@ -43,13 +43,11 @@ static void TAG(emit)( GLcontext *ctx,
    }
    
    if (IND & TDFX_RGBA_BIT) {
-      if (VB->ColorPtr[0]->Type != GL_UNSIGNED_BYTE)
-        import_float_colors( ctx );
-      col = VB->ColorPtr[0]->Ptr;
-      col_stride = VB->ColorPtr[0]->StrideB;
+      col = VB->ColorPtr[0]->data;
+      col_stride = VB->ColorPtr[0]->stride;
    }
 
-   if (VB->importable_data) {
+   {
       /* May have nonstandard strides:
        */
       if (start) {
@@ -59,7 +57,7 @@ static void TAG(emit)( GLcontext *ctx,
         if (IND & TDFX_TEX1_BIT) 
            tc1 =  (GLfloat (*)[4])((GLubyte *)tc1 + start * tc1_stride);
         if (IND & TDFX_RGBA_BIT) 
-           STRIDE_4UB(col, start * col_stride);
+           STRIDE_4F(col, start * col_stride);
       }
 
       for (i=start; i < end; i++, v = (tdfxVertex *)((GLubyte *)v + stride)) {
@@ -77,17 +75,12 @@ static void TAG(emit)( GLcontext *ctx,
            proj =  (GLfloat (*)[4])((GLubyte *)proj +  proj_stride);
         }
         if (IND & TDFX_RGBA_BIT) {
-#if 0
-           *(GLuint *)&v->v.color = *(GLuint *)col;
-#else
-           GLubyte *b = (GLubyte *) &v->v.color;
-           b[0] = col[0][2];
-           b[1] = col[0][1];
-           b[2] = col[0][0];
-           b[3] = col[0][3];
-
-#endif
-           STRIDE_4UB(col, col_stride);
+           GLubyte *b = (GLubyte *)&v[4];
+           UNCLAMPED_FLOAT_TO_UBYTE(b[0], col[0][2]);
+           UNCLAMPED_FLOAT_TO_UBYTE(b[1], col[0][1]);
+           UNCLAMPED_FLOAT_TO_UBYTE(b[2], col[0][0]);
+           UNCLAMPED_FLOAT_TO_UBYTE(b[3], col[0][3]);
+           STRIDE_4F(col, col_stride);
         }
         if (IND & TDFX_TEX0_BIT) {
            GLfloat w = v->v.rhw;
@@ -121,60 +114,6 @@ static void TAG(emit)( GLcontext *ctx,
         } 
       }
    }
-   else {
-      for (i=start; i < end; i++, v = (tdfxVertex *)((GLubyte *)v + stride)) {
-        if (IND & TDFX_XYZ_BIT) {
-           if (mask[i] == 0) {
-              v->v.x   = s[0]  * proj[i][0] + s[12];   
-              v->v.y   = s[5]  * proj[i][1] + s[13];   
-              v->v.z   = s[10] * proj[i][2] + s[14];   
-              v->v.rhw = proj[i][3];   
-           } else {
-              v->v.rhw = 1.0;
-           }
-        }
-        if (IND & TDFX_RGBA_BIT) {
-#if 0
-           *(GLuint *)&v->v.color = *(GLuint *)&col[i];
-#else
-           GLubyte *b = (GLubyte *) &v->v.color;
-           b[0] = col[i][2];
-           b[1] = col[i][1];
-           b[2] = col[i][0];
-           b[3] = col[i][3];
-
-#endif
-        }
-        if (IND & TDFX_TEX0_BIT) {
-           GLfloat w = v->v.rhw;
-           if (IND & TDFX_PTEX_BIT) {
-              v->pv.tu0 = tc0[i][0] * u0scale * w;
-              v->pv.tv0 = tc0[i][1] * v0scale * w;
-              v->pv.tq0 = w;
-              if (tc0_size == 4) 
-                 v->pv.tq0 = tc0[i][3] * w;
-           } 
-           else {
-              v->v.tu0 = tc0[i][0] * u0scale * w;
-               v->v.tv0 = tc0[i][1] * v0scale * w;
-           }
-        }
-        if (IND & TDFX_TEX1_BIT) {
-           GLfloat w = v->v.rhw;
-           if (IND & TDFX_PTEX_BIT) {
-              v->pv.tu1 = tc1[i][0] * u1scale * w;
-              v->pv.tv1 = tc1[i][1] * v1scale * w;
-              v->pv.tq1 = w;
-              if (tc1_size == 4) 
-                 v->pv.tq1 = tc1[i][3] * w;
-           } 
-           else {
-              v->v.tu1 = tc1[i][0] * u1scale * w;
-              v->v.tv1 = tc1[i][1] * v1scale * w;
-           }
-        }
-      }
-   }
 }
 #else 
 #if (IND & TDFX_XYZ_BIT)
@@ -183,7 +122,7 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
 {
    tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx);
    struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
-   GLubyte (*col)[4];
+   GLfloat (*col)[4];
    GLuint col_stride;
    GLfloat (*proj)[4] = VB->NdcPtr->data; 
    GLuint proj_stride = VB->NdcPtr->stride;
@@ -198,20 +137,17 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
    ASSERT(fxMesa->SetupIndex == (TDFX_XYZ_BIT|TDFX_RGBA_BIT));
    ASSERT(stride == 16);
 
-   if (VB->ColorPtr[0]->Type != GL_UNSIGNED_BYTE)
-      import_float_colors( ctx );
-
-   col = (GLubyte (*)[4])VB->ColorPtr[0]->Ptr;
-   col_stride = VB->ColorPtr[0]->StrideB;
+   col = VB->ColorPtr[0]->data;
+   col_stride = VB->ColorPtr[0]->stride;
    ASSERT(VB->ColorPtr[0]->Type == GL_UNSIGNED_BYTE);
 
    /* Pack what's left into a 4-dword vertex.  Color is in a different
     * place, and there is no 'w' coordinate.  
     */
-   if (VB->importable_data) {
+   {
       if (start) {
         proj =  (GLfloat (*)[4])((GLubyte *)proj + start * proj_stride);
-        STRIDE_4UB(col, start * col_stride);
+        STRIDE_4F(col, start * col_stride);
       }
 
       for (i=start; i < end; i++, v+=4) {
@@ -223,27 +159,11 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
         proj =  (GLfloat (*)[4])((GLubyte *)proj +  proj_stride);
         {
            GLubyte *b = (GLubyte *)&v[3];
-           b[0] = col[0][2];
-           b[1] = col[0][1];
-           b[2] = col[0][0];
-           b[3] = col[0][3];
-           STRIDE_4UB(col, col_stride);
-        }
-      }
-   }
-   else {
-      for (i=start; i < end; i++, v+=4) {
-        if (mask[i] == 0) {
-           v[0]   = s[0]  * proj[i][0] + s[12];        
-           v[1]   = s[5]  * proj[i][1] + s[13];        
-           v[2]   = s[10] * proj[i][2] + s[14];        
-        }
-        {
-           GLubyte *b = (GLubyte *)&v[3];
-           b[0] = col[i][2];
-           b[1] = col[i][1];
-           b[2] = col[i][0];
-           b[3] = col[i][3];
+           UNCLAMPED_FLOAT_TO_UBYTE(b[0], col[0][2]);
+           UNCLAMPED_FLOAT_TO_UBYTE(b[1], col[0][1]);
+           UNCLAMPED_FLOAT_TO_UBYTE(b[2], col[0][0]);
+           UNCLAMPED_FLOAT_TO_UBYTE(b[3], col[0][3]);
+           STRIDE_4F(col, col_stride);
         }
       }
    }
@@ -254,19 +174,16 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
 {
    tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx);
    struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
-   GLubyte (*col)[4];
+   GLfloat (*col)[4];
    GLuint col_stride;
    GLfloat *v = (GLfloat *)dest;
    int i;
 
-   if (VB->ColorPtr[0]->Type != GL_UNSIGNED_BYTE)
-      import_float_colors( ctx );
-
-   col = VB->ColorPtr[0]->Ptr;
-   col_stride = VB->ColorPtr[0]->StrideB;
+   col = VB->ColorPtr[0]->data;
+   col_stride = VB->ColorPtr[0]->stride;
 
    if (start)
-      STRIDE_4UB(col, col_stride * start);
+      STRIDE_4F(col, col_stride * start);
 
    /* Need to figure out where color is:
     */
@@ -277,11 +194,11 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
 
    for (i=start; i < end; i++, STRIDE_F(v, stride)) {
       GLubyte *b = (GLubyte *)v;
-      b[0] = col[0][2];
-      b[1] = col[0][1];
-      b[2] = col[0][0];
-      b[3] = col[0][3];
-      STRIDE_4UB( col, col_stride );
+      UNCLAMPED_FLOAT_TO_UBYTE(b[0], col[0][2]);
+      UNCLAMPED_FLOAT_TO_UBYTE(b[1], col[0][1]);
+      UNCLAMPED_FLOAT_TO_UBYTE(b[2], col[0][0]);
+      UNCLAMPED_FLOAT_TO_UBYTE(b[3], col[0][3]);
+      STRIDE_4F(col, col_stride);
    }
 }
 #endif