#error "must have at least triangles to use render template"
#endif
-#if !HAVE_ELTS
-#define ALLOC_ELTS( nr )
-#define EMIT_ELT( offset, elt )
-#define INCR_ELTS( nr )
-#define ELT_INIT(prim)
-#define GET_CURRENT_VB_MAX_ELTS() 0
-#define GET_SUBSEQUENT_VB_MAX_ELTS() 0
-#define ALLOC_ELTS_NEW_PRIMITIVE(nr)
-#define RELEASE_ELT_VERTS()
-#define EMIT_INDEXED_VERTS( ctx, start, count )
-
-#endif
+/* #if !HAVE_ELTS */
+/* #define ALLOC_ELTS( nr ) */
+/* #define EMIT_ELT( offset, elt ) */
+/* #define INCR_ELTS( nr ) */
+/* #define ELT_INIT(prim) */
+/* #define GET_CURRENT_VB_MAX_ELTS() 0 */
+/* #define GET_SUBSEQUENT_VB_MAX_ELTS() 0 */
+/* #define ALLOC_ELTS_NEW_PRIMITIVE(nr) */
+/* #define RELEASE_ELT_VERTS() */
+/* #define EMIT_INDEXED_VERTS( ctx, start, count ) */
+/* #endif */
#ifndef EMIT_TWO_ELTS
#define EMIT_TWO_ELTS( offset, elt0, elt1 ) \
ALLOC_ELTS( nr );
- for ( i = 0 ; i < nr ; i++, elts += 2 ) {
+ for ( i = 0 ; i < nr ; i+=2, elts += 2 ) {
EMIT_TWO_ELTS( 0, elts[0], elts[1] );
INCR_ELTS( 2 );
}
const GLubyte *mask = VB->ClipMask;
int i;
-/* fprintf(stderr, "%s\n", __FUNCTION__); */
-
if (HAVE_HW_VIEWPORT && HAVE_HW_DIVIDE) {
(void) s;
coord = VB->ClipPtr->data;
if (DO_TEX3) {
const GLuint t3 = GET_TEXSOURCE(3);
-
- if (VB->TexCoordPtr[2] == 0) {
- if (VB->TexCoordPtr[1] == 0) {
- if (VB->TexCoordPtr[0] == 0)
- VB->TexCoordPtr[0] = VB->TexCoordPtr[t3];
- VB->TexCoordPtr[1] = VB->TexCoordPtr[t3];
- }
- VB->TexCoordPtr[2] = VB->TexCoordPtr[t3];
- }
-
tc3 = VB->TexCoordPtr[t3]->data;
tc3_stride = VB->TexCoordPtr[t3]->stride;
if (DO_PTEX)
if (DO_TEX2) {
const GLuint t2 = GET_TEXSOURCE(2);
-
- if (VB->TexCoordPtr[1] == 0) {
- if (VB->TexCoordPtr[0] == 0)
- VB->TexCoordPtr[0] = VB->TexCoordPtr[t2];
- VB->TexCoordPtr[1] = VB->TexCoordPtr[t2];
- }
-
tc2 = VB->TexCoordPtr[t2]->data;
tc2_stride = VB->TexCoordPtr[t2]->stride;
if (DO_PTEX)
tc2_size = VB->TexCoordPtr[t2]->size;
}
-
if (DO_TEX1) {
const GLuint t1 = GET_TEXSOURCE(1);
- if (VB->TexCoordPtr[0] == 0)
- VB->TexCoordPtr[0] = VB->TexCoordPtr[t1];
- tc1 = VB->TexCoordPtr[1]->data;
- tc1_stride = VB->TexCoordPtr[1]->stride;
+ tc1 = VB->TexCoordPtr[t1]->data;
+ tc1_stride = VB->TexCoordPtr[t1]->stride;
if (DO_PTEX)
- tc1_size = VB->TexCoordPtr[1]->size;
+ tc1_size = VB->TexCoordPtr[t1]->size;
}
if (DO_TEX0) {
(void) s;
-/* fprintf(stderr, "%s (template 2)\n", __FUNCTION__); */
-
ASSERT(stride == 4);
/* Pack what's left into a 4-dword vertex. Color is in a different
{
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ if (DO_TEX3 && VB->TexCoordPtr[2] == 0)
+ VB->TexCoordPtr[2] = VB->TexCoordPtr[3];
+
+ if (DO_TEX2 && VB->TexCoordPtr[1] == 0)
+ VB->TexCoordPtr[1] = VB->TexCoordPtr[2];
+
+ if (DO_TEX1 && VB->TexCoordPtr[0] == 0)
+ VB->TexCoordPtr[0] = VB->TexCoordPtr[1];
+
if (DO_PTEX)
return GL_TRUE;
{
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ if (DO_TEX3 && VB->TexCoordPtr[2] == 0)
+ VB->TexCoordPtr[2] = VB->TexCoordPtr[3];
+
+ if (DO_TEX2 && VB->TexCoordPtr[1] == 0)
+ VB->TexCoordPtr[1] = VB->TexCoordPtr[2];
+
+ if (DO_TEX1 && VB->TexCoordPtr[0] == 0)
+ VB->TexCoordPtr[0] = VB->TexCoordPtr[1];
+
if (DO_PTEX)
return GL_TRUE;
(void)s;
-/* fprintf(stderr, "%s\n", __FUNCTION__); */
if (!HAVE_HW_DIVIDE) {
w = 1.0 / dstclip[3];
if (HAVE_HW_DIVIDE || DO_FOG || DO_SPEC || DO_TEX0 || DO_TEX1 ||
DO_TEX2 || DO_TEX3) {
-
- if (!HAVE_HW_VIEWPORT || !HAVE_HW_DIVIDE)
- dst->v.w = w;
+
+ dst->v.w = w;
INTERP_UB( t, dst->ub4[4][0], out->ub4[4][0], in->ub4[4][0] );
INTERP_UB( t, dst->ub4[4][1], out->ub4[4][1], in->ub4[4][1] );