Changeset 3598 for trunk/src/opengl/mesa/3dfx/fxfasttmp.h
- Timestamp:
- May 23, 2000, 10:41:28 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/opengl/mesa/3dfx/fxfasttmp.h
r2938 r3598 3 3 /* 4 4 * Mesa 3-D graphics library 5 * Version: 3. 15 * Version: 3.3 6 6 * 7 7 * Copyright (C) 1999 Brian Paul All Rights Reserved. … … 89 89 */ 90 90 gl_xform_points3_v16_general(FX_DRIVER_DATA(VB)->verts[0].f, 91 92 93 94 91 m, 92 VB->ObjPtr->start, 93 VB->ObjPtr->stride, 94 count); 95 95 96 96 if (do_clip) 97 97 { 98 VB->ClipAndMask = ~0; 98 VB->ClipAndMask = ~0; 99 99 VB->ClipOrMask = 0; 100 100 gl_cliptest_points4_v16(FX_DRIVER_DATA(VB)->verts[0].f, 101 102 103 104 101 FX_DRIVER_DATA(VB)->verts[count].f, 102 &(VB->ClipOrMask), 103 &(VB->ClipAndMask), 104 VB->ClipMask); 105 105 } 106 106 … … 137 137 */ 138 138 static void TAG(fx_project_vertices)( GLfloat *first, 139 140 141 139 GLfloat *last, 140 const GLfloat *mat, 141 GLuint stride ) 142 142 { 143 143 GLfloat *f; 144 144 VARS_XYZ; 145 145 146 for ( f = first ; f != last ; STRIDE_F(f, stride)) 146 for ( f = first ; f != last ; STRIDE_F(f, stride)) 147 147 { 148 GLfloat oow = 1.0f/f[ 3];/* urp! */148 GLfloat oow = 1.0f/f[CLIP_WCOORD]; /* urp! */ 149 149 150 150 #if FX_USE_PARGB … … 154 154 #else 155 155 if (TYPE & SETUP_RGBA) { 156 156 f[RCOORD]=f[CLIP_R]; 157 157 } 158 158 #endif 159 159 if (TYPE & SETUP_TMU1) { 160 161 160 f[S1COORD] = f[CLIP_S1] * oow; 161 f[T1COORD] = f[CLIP_T1] * oow; 162 162 } 163 163 164 164 if (TYPE & SETUP_TMU0) { 165 166 165 f[T0COORD] = f[CLIP_T0] * oow; 166 f[S0COORD] = f[CLIP_S0] * oow; 167 167 } 168 168 … … 174 174 175 175 static void TAG(fx_project_clipped_vertices)( GLfloat *first, 176 177 178 179 176 GLfloat *last, 177 const GLfloat *mat, 178 GLuint stride, 179 const GLubyte *mask ) 180 180 { 181 181 GLfloat *f; … … 185 185 if (!*mask) { 186 186 187 GLfloat oow = 1.0f / f[3];187 GLfloat oow = 1.0f / f[CLIP_WCOORD]; 188 188 #if FX_USE_PARGB 189 189 if (TYPE & SETUP_RGBA) { … … 197 197 #else 198 198 if (TYPE & SETUP_RGBA) { 199 199 f[RCOORD]=f[CLIP_R]; 200 200 } 201 201 #endif 202 202 203 204 205 206 207 208 209 210 211 212 213 214 215 203 if (TYPE & SETUP_TMU1) { 204 f[S1COORD] = f[CLIP_S1] * oow; 205 f[T1COORD] = f[CLIP_T1] * oow; 206 } 207 208 if (TYPE & SETUP_TMU0) { 209 f[T0COORD] = f[CLIP_T0] * oow; 210 f[S0COORD] = f[CLIP_S0] * oow; 211 } 212 213 DO_SETUP_XYZ; 214 215 f[OOWCOORD] = oow; 216 216 } 217 217 } … … 224 224 #endif 225 225 void TAG(fx_tri_clip)( GLuint **p_elts, 226 227 228 229 226 fxVertex *verts, 227 GLubyte *clipmask, 228 GLuint *p_next_vert, 229 GLubyte mask ) 230 230 { 231 231 GLuint *elts = *p_elts; … … 266 266 267 267 static INLINE void TAG(fx_line_clip)( GLuint **p_elts, 268 269 270 271 268 fxVertex *verts, 269 GLubyte *clipmask, 270 GLuint *p_next_vert, 271 GLubyte mask ) 272 272 { 273 273 GLuint *elts = *p_elts; … … 290 290 /* Build a table of functions to clip each primitive type. 291 291 */ 292 #define LOCAL_VARS 293 GLuint *elt = VB->EltPtr->data; 294 fxVertex *verts = FX_DRIVER_DATA(VB)->verts; 295 GLuint next_vert = VB->Count; 296 GLuint *out = FX_DRIVER_DATA(VB)->clipped_elements.data; 292 #define LOCAL_VARS \ 293 GLuint *elt = VB->EltPtr->data; \ 294 fxVertex *verts = FX_DRIVER_DATA(VB)->verts; \ 295 GLuint next_vert = VB->Count; \ 296 GLuint *out = FX_DRIVER_DATA(VB)->clipped_elements.data; \ 297 297 GLubyte *mask = VB->ClipMask; \ 298 298 299 299 300 #define POSTFIX 301 FX_DRIVER_DATA(VB)->clipped_elements.count = 302 out - FX_DRIVER_DATA(VB)->clipped_elements.data; 300 #define POSTFIX \ 301 FX_DRIVER_DATA(VB)->clipped_elements.count = \ 302 out - FX_DRIVER_DATA(VB)->clipped_elements.data; \ 303 303 FX_DRIVER_DATA(VB)->last_vert = &verts[next_vert]; 304 304 305 305 #define INIT(x) 306 306 307 #define RENDER_POINTS(start, count) 308 do { 309 GLuint i; 310 for (i = start ; i < count ; i++ ) 311 CLIP_POINT( elt[i] ); 307 #define RENDER_POINTS(start, count) \ 308 do { \ 309 GLuint i; \ 310 for (i = start ; i < count ; i++ ) \ 311 CLIP_POINT( elt[i] ); \ 312 312 } while (0) 313 313 314 #define RENDER_LINE(i1, i0) 314 #define RENDER_LINE(i1, i0) \ 315 315 CLIP_LINE(elt[i1], elt[i0]) 316 316 317 #define RENDER_TRI(i2, i1, i0, pv, parroty) 318 do { 319 GLuint e2 = elt[i2], e1 = elt[i1], e0 = elt[i0]; 320 if (parroty) e2 = elt[i1], e1 = elt[i2]; 321 CLIP_TRIANGLE( e2, e1, e0 ); 317 #define RENDER_TRI(i2, i1, i0, pv, parroty) \ 318 do { \ 319 GLuint e2 = elt[i2], e1 = elt[i1], e0 = elt[i0]; \ 320 if (parroty) e2 = elt[i1], e1 = elt[i2]; \ 321 CLIP_TRIANGLE( e2, e1, e0 ); \ 322 322 } while (0) 323 323 324 #define RENDER_QUAD(i3, i2, i1, i0, pv) 325 CLIP_TRIANGLE(elt[i3], elt[i2], elt[i0]); 324 #define RENDER_QUAD(i3, i2, i1, i0, pv) \ 325 CLIP_TRIANGLE(elt[i3], elt[i2], elt[i0]); \ 326 326 CLIP_TRIANGLE(elt[i2], elt[i1], elt[i0]) 327 327 … … 344 344 tab->project_clipped_vertices = TAG(fx_project_clipped_vertices); 345 345 346 #if defined(USE_3DNOW_ASM) 346 #if defined(USE_3DNOW_ASM) 347 347 if (gl_x86_cpu_features & GL_CPU_3Dnow) { 348 348 extern void TAG(fx_3dnow_project_vertices)( GLfloat *first, 349 350 351 349 GLfloat *last, 350 const GLfloat *mat, 351 GLuint stride ); 352 352 353 353 extern void TAG(fx_3dnow_project_clipped_vertices)( GLfloat *first, 354 355 356 357 354 GLfloat *last, 355 const GLfloat *mat, 356 GLuint stride, 357 const GLubyte *mask ); 358 358 359 359 tab->project_vertices = TAG(fx_3dnow_project_vertices);
Note:
See TracChangeset
for help on using the changeset viewer.