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) \
19 #elif defined(HAVE_LE32_VERTS)
20 #define COPY_DWORDS( j, vb, vertsize, v ) \
22 for ( j = 0 ; j < vertsize ; j++ ) \
23 vb[j] = CPU_TO_LE32(((GLuint *)v)[j]); \
27 #define COPY_DWORDS( j, vb, vertsize, v ) \
29 for ( j = 0 ; j < vertsize ; j++ ) \
30 vb[j] = ((GLuint *)v)[j]; \
38 static __inline
void TAG(quad
)( CTX_ARG
,
44 GLuint vertsize
= GET_VERTEX_DWORDS();
45 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( 4, vertsize
);
49 fprintf(stderr
, "%s\n", __FUNCTION__
);
56 COPY_DWORDS( j
, vb
, vertsize
, v0
);
57 COPY_DWORDS( j
, vb
, vertsize
, v1
);
58 COPY_DWORDS( j
, vb
, vertsize
, v2
);
59 COPY_DWORDS( j
, vb
, vertsize
, v3
);
62 static __inline
void TAG(quad
)( CTX_ARG
,
68 GLuint vertsize
= GET_VERTEX_DWORDS();
69 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( 6, vertsize
);
73 fprintf(stderr
, "%s\n", __FUNCTION__
);
80 COPY_DWORDS( j
, vb
, vertsize
, v0
);
81 COPY_DWORDS( j
, vb
, vertsize
, v1
);
82 COPY_DWORDS( j
, vb
, vertsize
, v3
);
83 COPY_DWORDS( j
, vb
, vertsize
, v1
);
84 COPY_DWORDS( j
, vb
, vertsize
, v2
);
85 COPY_DWORDS( j
, vb
, vertsize
, v3
);
90 static __inline
void TAG(triangle
)( CTX_ARG
,
95 GLuint vertsize
= GET_VERTEX_DWORDS();
96 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( 3, vertsize
);
100 fprintf(stderr
, "%s\n", __FUNCTION__
);
106 COPY_DWORDS( j
, vb
, vertsize
, v0
);
107 COPY_DWORDS( j
, vb
, vertsize
, v1
);
108 COPY_DWORDS( j
, vb
, vertsize
, v2
);
113 static __inline
void TAG(line
)( CTX_ARG
,
117 GLuint vertsize
= GET_VERTEX_DWORDS();
118 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( 2, vertsize
);
121 COPY_DWORDS( j
, vb
, vertsize
, v0
);
122 COPY_DWORDS( j
, vb
, vertsize
, v1
);
127 static __inline
void TAG(point
)( CTX_ARG
,
130 GLuint vertsize
= GET_VERTEX_DWORDS();
131 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( 1, vertsize
);
134 COPY_DWORDS( j
, vb
, vertsize
, v0
);
139 static void TAG(fast_clipped_poly
)( GLcontext
*ctx
, const GLuint
*elts
,
143 GLuint vertsize
= GET_VERTEX_DWORDS();
144 GLuint
*vb
= (GLuint
*)ALLOC_VERTS( (n
-2) * 3, vertsize
);
145 const GLuint
*start
= (const GLuint
*)VERT(elts
[0]);
148 if (DO_DEBUG_VERTS
) {
149 fprintf(stderr
, "%s\n", __FUNCTION__
);
150 PRINT_VERTEX(VERT(elts
[0]));
151 PRINT_VERTEX(VERT(elts
[1]));
154 for (i
= 2 ; i
< n
; i
++) {
155 if (DO_DEBUG_VERTS
) {
156 PRINT_VERTEX(VERT(elts
[i
]));
159 COPY_DWORDS( j
, vb
, vertsize
, VERT(elts
[i
-1]) );
160 COPY_DWORDS( j
, vb
, vertsize
, VERT(elts
[i
]) );
161 COPY_DWORDS( j
, vb
, vertsize
, start
);