ELT_INIT( GL_TRIANGLES, HW_TRIANGLES );
- if (flags & PRIM_PARITY)
- parity = 1;
-
/* Emit even number of tris in each full buffer.
*/
dmasz = dmasz/3;
CLOSE_ELTS();
}
}
- else if ((flags & PRIM_PARITY) == 0)
+ else
EMIT_PRIM( ctx, GL_TRIANGLE_STRIP, HW_TRIANGLE_STRIP_0, start, count );
- else if (HAVE_TRI_STRIP_1)
- EMIT_PRIM( ctx, GL_TRIANGLE_STRIP, HW_TRIANGLE_STRIP_1, start, count );
- else {
- /* Emit the first triangle with elts, then the rest as a regular strip.
- * TODO: Make this unlikely in t_imm_api.c
- */
- ELT_TYPE *dest;
-
- ELT_INIT( GL_TRIANGLES, HW_TRIANGLES );
- dest = ALLOC_ELTS( 3 );
- EMIT_ELT( dest, 0, (start+1) );
- EMIT_ELT( dest, 1, (start+0) );
- EMIT_ELT( dest, 2, (start+2) );
- dest += 3;
- CLOSE_ELTS();
-
- start++;
- if (start + 2 >= count)
- return;
-
- EMIT_PRIM( ctx, GL_TRIANGLE_STRIP, HW_TRIANGLE_STRIP_0, start,
- count );
- }
}
static void TAG(render_tri_fan_verts)( GLcontext *ctx,
for (j = start ; j + 2 < count; j += nr - 2 ) {
nr = MIN2( dmasz, count - j );
- if (flags & PRIM_PARITY) {
- dest = ALLOC_ELTS( nr );
- dest = TAG(emit_elts)( ctx, dest, elts+j, 1 );
- dest = TAG(emit_elts)( ctx, dest, elts+j, nr-1 );
- nr--; flags &= ~PRIM_PARITY;
- CLOSE_ELTS();
- }
- else {
- dest = ALLOC_ELTS( nr );
- dest = TAG(emit_elts)( ctx, dest, elts+j, nr );
- CLOSE_ELTS();
- }
+ dest = ALLOC_ELTS( nr );
+ dest = TAG(emit_elts)( ctx, dest, elts+j, nr );
+ CLOSE_ELTS();
}
}