Ignore:
Timestamp:
May 23, 2000, 10:41:28 PM (25 years ago)
Author:
jeroen
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/opengl/mesa/3dfx/fxcva.c

    r2938 r3598  
    33/*
    44 * Mesa 3-D graphics library
    5  * Version:  3.1
     5 * Version:  3.3
    66 *
    77 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
     
    8282
    8383typedef void (*mergefunc)( struct vertex_buffer *cvaVB,
    84                            struct vertex_buffer *VB,
    85                            const struct gl_prim_state *state,
    86                            GLuint start,
    87                            GLuint count );
     84                           struct vertex_buffer *VB,
     85                           const struct gl_prim_state *state,
     86                           GLuint start,
     87                           GLuint count );
    8888
    8989static void fxCvaRenderNoop( struct vertex_buffer *cvaVB,
    90                              struct vertex_buffer *VB,
    91                              const struct gl_prim_state *state,
    92                              GLuint start,
    93                              GLuint count )
     90                             struct vertex_buffer *VB,
     91                             const struct gl_prim_state *state,
     92                             GLuint start,
     93                             GLuint count )
    9494{
    9595}
    9696
    9797static INLINE void fxRenderClippedTriangle2( struct vertex_buffer *VB,
    98                                              GLuint v1, GLuint v2, GLuint v3 )
     98                                             GLuint v1, GLuint v2, GLuint v3 )
    9999{
    100100  fxVertex *gWin = FX_DRIVER_DATA(VB)->verts;
     
    103103
    104104  if (!mask) {
    105      FX_grDrawTriangle((GrVertex *)gWin[v1].f, 
    106                     (GrVertex *)gWin[v2].f,
    107                     (GrVertex *)gWin[v3].f);
    108   } else if (!(clipmask[v1]&clipmask[v2]&clipmask[v3]&CLIP_ALL_BITS)) {   
     105     FX_grDrawTriangle((GrVertex *)gWin[v1].f,
     106                    (GrVertex *)gWin[v2].f,
     107                    (GrVertex *)gWin[v3].f);
     108  } else if (!(clipmask[v1]&clipmask[v2]&clipmask[v3]&CLIP_ALL_BITS)) {
    109109    GLuint n;
    110110    GLuint vlist[VB_MAX_CLIPPED_VERTS];
     
    115115      GLuint i, j0 = vlist[0];
    116116      for (i=2;i<n;i++) {
    117         FX_grDrawTriangle((GrVertex *)gWin[j0].f,
    118                        (GrVertex *)gWin[vlist[i-1]].f,
    119                        (GrVertex *)gWin[vlist[i]].f);
     117        FX_grDrawTriangle((GrVertex *)gWin[j0].f,
     118                       (GrVertex *)gWin[vlist[i-1]].f,
     119                       (GrVertex *)gWin[vlist[i]].f);
    120120      }
    121121    }
     
    128128
    129129/*
    130 #define CVA_VARS_RGBA                                                   \
    131    GLubyte (*color)[4] = VB->ColorPtr->data;                    \
     130#define CVA_VARS_RGBA                                                   \
     131   GLubyte (*color)[4] = VB->ColorPtr->data;                    \
    132132   GLubyte (*cva_color)[4] = (cvaVB->ColorPtr = cvaVB->LitColor[0])->data;
    133133*/
    134134
    135 #define CVA_VARS_RGBA                                                   \
    136    GLubyte (*color)[4] = VB->ColorPtr->data;                    \
     135#define CVA_VARS_RGBA                                                   \
     136   GLubyte (*color)[4] = VB->ColorPtr->data;                    \
    137137   GLubyte (*cva_color)[4] = cvaVB->ColorPtr->data;
    138138
     
    141141#undef DO_SETUP_RGBA
    142142#if FX_USE_PARGB
    143 #define DO_SETUP_RGBA                           \
    144 {                                                                       \
    145   GLubyte *col = color[i];                      \
    146   GET_PARGB(v)= ((col[3] << 24) |       \
    147                             (col[0] << 16)  |   \
    148                             (col[1] << 8)   |   \
    149                             (col[2]));                  \
     143#define DO_SETUP_RGBA                           \
     144{                                                                       \
     145  GLubyte *col = color[i];                      \
     146  GET_PARGB(v)= ((col[3] << 24) |       \
     147                            (col[0] << 16)  |   \
     148                            (col[1] << 8)   |   \
     149                            (col[2]));                  \
    150150}
    151151#else
    152 #define DO_SETUP_RGBA                           \
    153 {                                                       \
    154   GLubyte *col = color[i];                                      \
    155   v[GR_VERTEX_R_OFFSET]=UBYTE_COLOR_TO_FLOAT_255_COLOR(col[0]); \
    156   v[GR_VERTEX_G_OFFSET]=UBYTE_COLOR_TO_FLOAT_255_COLOR(col[1]); \
    157   v[GR_VERTEX_B_OFFSET]=UBYTE_COLOR_TO_FLOAT_255_COLOR(col[2]); \
    158   v[GR_VERTEX_A_OFFSET]=UBYTE_COLOR_TO_FLOAT_255_COLOR(col[3]); \
     152#define DO_SETUP_RGBA                           \
     153{                                                       \
     154  GLubyte *col = color[i];                                      \
     155  v[GR_VERTEX_R_OFFSET]=UBYTE_COLOR_TO_FLOAT_255_COLOR(col[0]); \
     156  v[GR_VERTEX_G_OFFSET]=UBYTE_COLOR_TO_FLOAT_255_COLOR(col[1]); \
     157  v[GR_VERTEX_B_OFFSET]=UBYTE_COLOR_TO_FLOAT_255_COLOR(col[2]); \
     158  v[GR_VERTEX_A_OFFSET]=UBYTE_COLOR_TO_FLOAT_255_COLOR(col[3]); \
    159159}
    160160#endif /* FX_USE_PARGB */
    161161
    162162
    163 #define CVA_VARS_TMU0                                                   \
    164    VARS_TMU0                                                            \
     163#define CVA_VARS_TMU0                                                   \
     164   VARS_TMU0                                                            \
    165165   GLfloat (*cva_tex0)[4] = (cvaVB->TexCoordPtr[tmu0_source] = cvaVB->store.TexCoord[tmu0_source])->data;
    166166
    167 #define CVA_VARS_TMU1                                                   \
    168    VARS_TMU1                                                            \
     167#define CVA_VARS_TMU1                                                   \
     168   VARS_TMU1                                                            \
    169169   GLfloat (*cva_tex1)[4] = (cvaVB->TexCoordPtr[tmu1_source] = cvaVB->store.TexCoord[tmu1_source])->data;
    170170
     
    221221#define TAG(x) x##T0T1
    222222#define IDX SETUP_TMU0|SETUP_TMU1
    223 #define VARS CVA_VARS_TMU0 CVA_VARS_TMU1 
    224 #define INIT INIT_TMU0 INIT_TMU1 
     223#define VARS CVA_VARS_TMU0 CVA_VARS_TMU1
     224#define INIT INIT_TMU0 INIT_TMU1
    225225#define INCR , tmu0_data+=4 , tmu1_data+=4
    226226#define MERGE_RAST DO_SETUP_TMU0 DO_SETUP_TMU1
     
    231231#define TAG(x) x##RGBAT0
    232232#define IDX SETUP_RGBA|SETUP_TMU0
    233 #define VARS CVA_VARS_RGBA CVA_VARS_TMU0 
    234 #define INIT INIT_RGBA INIT_TMU0 
    235 #define INCR , tmu0_data+=4 
     233#define VARS CVA_VARS_RGBA CVA_VARS_TMU0
     234#define INIT INIT_RGBA INIT_TMU0
     235#define INCR , tmu0_data+=4
    236236#define MERGE_RAST DO_SETUP_RGBA; DO_SETUP_TMU0
    237237#define MERGE_VB COPY_2FV(cva_tex0[e], tmu0_data); \
     
    262262
    263263
    264 #undef DRAW_POINT 
    265 #undef DRAW_LINE 
    266 #undef DRAW_TRI 
    267 #undef CLIP_LINE 
    268 #undef CLIP_OR_DRAW_TRI 
     264#undef DRAW_POINT
     265#undef DRAW_LINE
     266#undef DRAW_TRI
     267#undef CLIP_LINE
     268#undef CLIP_OR_DRAW_TRI
    269269#undef DIRECT
    270270
    271271#define DRAW_POINT ctx->Driver.PointsFunc( ctx, e, e )
    272 #define DRAW_LINE ctx->Driver.LineFunc( ctx, e, prev, e ) 
     272#define DRAW_LINE ctx->Driver.LineFunc( ctx, e, prev, e )
    273273#define DRAW_TRI ctx->TriangleFunc( ctx, l[0], l[1], e, e )
    274274#define CLIP_LINE gl_render_clipped_line( ctx, e, prev )
    275 #define CLIP_OR_DRAW_TRI                                                \
    276 do {                                                                    \
    277    if (clip[l[0]] | clip[l[1]] | clip[e]) {                             \
    278       if (!(clip[l[0]] & clip[l[1]] & clip[e] & CLIP_ALL_BITS)) {       \
    279          COPY_3V(vlist, l);                                             \
    280          gl_render_clipped_triangle( ctx, 3, vlist, e );                \
    281       }                                                                 \
    282    }                                                                    \
    283    else ctx->TriangleFunc( ctx, l[0], l[1], e, e );                     \
     275#define CLIP_OR_DRAW_TRI                                                \
     276do {                                                                    \
     277   if (clip[l[0]] | clip[l[1]] | clip[e]) {                             \
     278      if (!(clip[l[0]] & clip[l[1]] & clip[e] & CLIP_ALL_BITS)) {       \
     279         COPY_3V(vlist, l);                                             \
     280         gl_render_clipped_triangle( ctx, 3, vlist, e );                \
     281      }                                                                 \
     282   }                                                                    \
     283   else ctx->TriangleFunc( ctx, l[0], l[1], e, e );                     \
    284284} while (0)
    285285
    286            
     286
    287287#define DIRECT 0
    288288
     
    325325#define TAG(x) x##T0T1_indirect
    326326#define IDX SETUP_TMU0|SETUP_TMU1
    327 #define VARS CVA_VARS_TMU0 CVA_VARS_TMU1 
    328 #define INIT INIT_TMU0 INIT_TMU1 
     327#define VARS CVA_VARS_TMU0 CVA_VARS_TMU1
     328#define INIT INIT_TMU0 INIT_TMU1
    329329#define INCR , tmu0_data+=4 , tmu1_data+=4
    330330#define MERGE_RAST DO_SETUP_TMU0 DO_SETUP_TMU1
     
    335335#define TAG(x) x##RGBAT0_indirect
    336336#define IDX SETUP_RGBA|SETUP_TMU0
    337 #define VARS CVA_VARS_RGBA CVA_VARS_TMU0 
    338 #define INIT INIT_RGBA INIT_TMU0 
     337#define VARS CVA_VARS_RGBA CVA_VARS_TMU0
     338#define INIT INIT_RGBA INIT_TMU0
    339339#define INCR , tmu0_data+=4
    340340#define MERGE_RAST DO_SETUP_RGBA; DO_SETUP_TMU0
     
    398398       (ctx->Array.Summary & VERT_OBJ_ANY))
    399399   {
    400       d->inputs = (VERT_SETUP_PART | VERT_ELT | inputs);   
     400      d->inputs = (VERT_SETUP_PART | VERT_ELT | inputs);
    401401      d->outputs = 0;
    402402      d->type = PIPE_IMMEDIATE;
     
    409409extern void fxPointSmooth(GLcontext *ctx, GLuint first, GLuint last);
    410410extern void fxLineSmooth(GLcontext *ctx, GLuint v1, GLuint v2, GLuint pv);
    411 extern void fxTriangleSmooth(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3, 
    412                              GLuint pv);
     411extern void fxTriangleSmooth(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3,
     412                             GLuint pv);
    413413extern const char *gl_prim_name[];
    414414
     
    433433   GLuint p = 0;
    434434
    435    if (fxMesa->new_state) 
     435   if (fxMesa->new_state)
    436436      fxSetupFXUnits(ctx);
    437437
     
    441441    * VB so that funcs like fxTriangleFlat will be able to reach them.
    442442    *
    443     * This leads to some duplication of effort in the merge funcs. 
     443    * This leads to some duplication of effort in the merge funcs.
    444444    */
    445445   if (inputs & VERT_RGBA) {
     
    464464   if (cvaVB->ClipOrMask)
    465465      gl_import_client_data( cvaVB, ctx->RenderFlags,
    466                              VEC_WRITABLE|VEC_GOOD_STRIDE );
     466                             VEC_WRITABLE|VEC_GOOD_STRIDE );
    467467
    468468   ctx->VB = cvaVB;
    469469
    470470   do {
    471       for ( i= VB->CopyStart ; i < count ; parity = 0, i = next ) 
     471      for ( i= VB->CopyStart ; i < count ; parity = 0, i = next )
    472472      {
    473         prim = VB->Primitive[i];
    474         next = VB->NextPrimitive[i];
    475 
    476         state = gl_prim_state_machine[prim][parity];
    477         func = tab[flags][reduce_prim[prim]];
    478         func( cvaVB, VB, state, i, next );
    479      
    480          if ( ctx->TriangleCaps & DD_TRI_LIGHT_TWOSIDE )
    481         {
    482             cvaVB->Specular = cvaVB->Spec[0];
    483             cvaVB->ColorPtr = cvaVB->Color[0];
    484             cvaVB->IndexPtr = cvaVB->Index[0];
    485         }
     473        prim = VB->Primitive[i];
     474        next = VB->NextPrimitive[i];
     475
     476        state = gl_prim_state_machine[prim][parity];
     477        func = tab[flags][reduce_prim[prim]];
     478        func( cvaVB, VB, state, i, next );
     479
     480         if ( ctx->TriangleCaps & DD_TRI_LIGHT_TWOSIDE )
     481        {
     482            cvaVB->Specular = cvaVB->Spec[0];
     483            cvaVB->ColorPtr = cvaVB->Color[0];
     484            cvaVB->IndexPtr = cvaVB->Index[0];
     485        }
    486486      }
    487487   } while (ctx->Driver.MultipassFunc &&
    488             ctx->Driver.MultipassFunc( VB, ++p ));
    489 
    490 
    491 
    492    if (ctx->PB->count > 0) 
     488            ctx->Driver.MultipassFunc( VB, ++p ));
     489
     490
     491
     492   if (ctx->PB->count > 0)
    493493      gl_flush_pb(ctx);
    494494
Note: See TracChangeset for help on using the changeset viewer.