2 #define DO_DEBUG_VERTS 0
6 #define PRINT_VERTEX(x)
9 #if defined(USE_X86_ASM)
10 #define COPY_DWORDS( j, vb, vertsize, v ) \
13 __asm__ __volatile__( "rep ; movsl" \
14 : "=%c" (j), "=D" (vb), "=S" (__tmp) \
20 #define COPY_DWORDS( j, vb, vertsize, v ) \
22 for ( j = 0 ; j < vertsize ; j++ ) \
23 vb[j] = ((GLuint *)v)[j]; \
31 static __inline
void TAG(quad
)( CTX_ARG
,
37 GLuint vertsize
= GET_VERTEX_DWORDS();
38 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( 4, vertsize
);
42 fprintf(stderr
, "%s\n", __FUNCTION__
);
49 COPY_DWORDS( j
, vb
, vertsize
, v0
);
50 COPY_DWORDS( j
, vb
, vertsize
, v1
);
51 COPY_DWORDS( j
, vb
, vertsize
, v2
);
52 COPY_DWORDS( j
, vb
, vertsize
, v3
);
55 static __inline
void TAG(quad
)( CTX_ARG
,
61 GLuint vertsize
= GET_VERTEX_DWORDS();
62 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( 6, vertsize
);
66 fprintf(stderr
, "%s\n", __FUNCTION__
);
73 COPY_DWORDS( j
, vb
, vertsize
, v0
);
74 COPY_DWORDS( j
, vb
, vertsize
, v1
);
75 COPY_DWORDS( j
, vb
, vertsize
, v3
);
76 COPY_DWORDS( j
, vb
, vertsize
, v1
);
77 COPY_DWORDS( j
, vb
, vertsize
, v2
);
78 COPY_DWORDS( j
, vb
, vertsize
, v3
);
83 static __inline
void TAG(triangle
)( CTX_ARG
,
88 GLuint vertsize
= GET_VERTEX_DWORDS();
89 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( 3, vertsize
);
93 fprintf(stderr
, "%s\n", __FUNCTION__
);
99 COPY_DWORDS( j
, vb
, vertsize
, v0
);
100 COPY_DWORDS( j
, vb
, vertsize
, v1
);
101 COPY_DWORDS( j
, vb
, vertsize
, v2
);
106 static __inline
void TAG(line
)( CTX_ARG
,
110 GLuint vertsize
= GET_VERTEX_DWORDS();
111 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( 2, vertsize
);
114 COPY_DWORDS( j
, vb
, vertsize
, v0
);
115 COPY_DWORDS( j
, vb
, vertsize
, v1
);
120 static __inline
void TAG(point
)( CTX_ARG
,
123 GLuint vertsize
= GET_VERTEX_DWORDS();
124 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( 1, vertsize
);
127 COPY_DWORDS( j
, vb
, vertsize
, v0
);
132 static void TAG(fast_clipped_poly
)( GLcontext
*ctx
, const GLuint
*elts
,
136 GLuint vertsize
= GET_VERTEX_DWORDS();
137 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( (n
-2) * 3, vertsize
);
138 const GLuint
*start
= (const GLuint
*)VERT(elts
[0]);
141 if (DO_DEBUG_VERTS
) {
142 fprintf(stderr
, "%s\n", __FUNCTION__
);
143 PRINT_VERTEX(VERT(elts
[0]));
144 PRINT_VERTEX(VERT(elts
[1]));
147 for (i
= 2 ; i
< n
; i
++) {
148 if (DO_DEBUG_VERTS
) {
149 PRINT_VERTEX(VERT(elts
[i
]));
152 COPY_DWORDS( j
, vb
, vertsize
, VERT(elts
[i
-1]) );
153 COPY_DWORDS( j
, vb
, vertsize
, VERT(elts
[i
]) );
154 COPY_DWORDS( j
, vb
, vertsize
, start
);