Merge commit 'origin/gallium-master-merge'
[mesa.git] / src / gallium / auxiliary / indices / u_indices_gen.c
1 /* File automatically generated by indices.py */
2
3 /*
4 * Copyright 2009 VMware, Inc.
5 * All Rights Reserved.
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a
8 * copy of this software and associated documentation files (the "Software"),
9 * to deal in the Software without restriction, including without limitation
10 * on the rights to use, copy, modify, merge, publish, distribute, sub
11 * license, and/or sell copies of the Software, and to permit persons to whom
12 * the Software is furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice (including the next
15 * paragraph) shall be included in all copies or substantial portions of the
16 * Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
21 * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
22 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24 * USE OR OTHER DEALINGS IN THE SOFTWARE.
25 */
26
27
28
29 /**
30 * @file
31 * Functions to translate and generate index lists
32 */
33
34 #include "indices/u_indices.h"
35 #include "indices/u_indices_priv.h"
36 #include "pipe/p_compiler.h"
37 #include "pipe/p_debug.h"
38 #include "pipe/p_defines.h"
39 #include "util/u_memory.h"
40
41
42 static unsigned out_size_idx( unsigned index_size )
43 {
44 switch (index_size) {
45 case 4: return OUT_UINT;
46 case 2: return OUT_USHORT;
47 default: assert(0); return OUT_USHORT;
48 }
49 }
50
51 static unsigned in_size_idx( unsigned index_size )
52 {
53 switch (index_size) {
54 case 4: return IN_UINT;
55 case 2: return IN_USHORT;
56 case 1: return IN_UBYTE;
57 default: assert(0); return IN_UBYTE;
58 }
59 }
60
61
62 static u_translate_func translate[IN_COUNT][OUT_COUNT][PV_COUNT][PV_COUNT][PRIM_COUNT];
63 static u_generate_func generate[OUT_COUNT][PV_COUNT][PV_COUNT][PRIM_COUNT];
64
65
66
67 static void generate_points_ushort_first2first(
68 unsigned nr,
69 void *_out )
70 {
71 ushort *out = (ushort*)_out;
72 unsigned i, j;
73 (void)j;
74 for (i = 0; i < nr; i++) {
75 (out+i)[0] = (ushort)(i);
76 }
77 }
78 static void generate_lines_ushort_first2first(
79 unsigned nr,
80 void *_out )
81 {
82 ushort *out = (ushort*)_out;
83 unsigned i, j;
84 (void)j;
85 for (i = 0; i < nr; i+=2) {
86 (out+i)[0] = (ushort)(i);
87 (out+i)[1] = (ushort)(i+1);
88 }
89 }
90 static void generate_linestrip_ushort_first2first(
91 unsigned nr,
92 void *_out )
93 {
94 ushort *out = (ushort*)_out;
95 unsigned i, j;
96 (void)j;
97 for (j = i = 0; j < nr; j+=2, i++) {
98 (out+j)[0] = (ushort)(i);
99 (out+j)[1] = (ushort)(i+1);
100 }
101 }
102 static void generate_lineloop_ushort_first2first(
103 unsigned nr,
104 void *_out )
105 {
106 ushort *out = (ushort*)_out;
107 unsigned i, j;
108 (void)j;
109 for (j = i = 0; j < nr - 2; j+=2, i++) {
110 (out+j)[0] = (ushort)(i);
111 (out+j)[1] = (ushort)(i+1);
112 }
113 (out+j)[0] = (ushort)(i);
114 (out+j)[1] = (ushort)(0);
115 }
116 static void generate_tris_ushort_first2first(
117 unsigned nr,
118 void *_out )
119 {
120 ushort *out = (ushort*)_out;
121 unsigned i, j;
122 (void)j;
123 for (i = 0; i < nr; i+=3) {
124 (out+i)[0] = (ushort)(i);
125 (out+i)[1] = (ushort)(i+1);
126 (out+i)[2] = (ushort)(i+2);
127 }
128 }
129 static void generate_tristrip_ushort_first2first(
130 unsigned nr,
131 void *_out )
132 {
133 ushort *out = (ushort*)_out;
134 unsigned i, j;
135 (void)j;
136 for (j = i = 0; j < nr; j+=3, i++) {
137 (out+j)[0] = (ushort)(i);
138 (out+j)[1] = (ushort)(i+1+(i&1));
139 (out+j)[2] = (ushort)(i+2-(i&1));
140 }
141 }
142 static void generate_trifan_ushort_first2first(
143 unsigned nr,
144 void *_out )
145 {
146 ushort *out = (ushort*)_out;
147 unsigned i, j;
148 (void)j;
149 for (j = i = 0; j < nr; j+=3, i++) {
150 (out+j)[0] = (ushort)(0);
151 (out+j)[1] = (ushort)(i+1);
152 (out+j)[2] = (ushort)(i+2);
153 }
154 }
155 static void generate_quads_ushort_first2first(
156 unsigned nr,
157 void *_out )
158 {
159 ushort *out = (ushort*)_out;
160 unsigned i, j;
161 (void)j;
162 for (j = i = 0; j < nr; j+=6, i+=4) {
163 (out+j+0)[0] = (ushort)(i+0);
164 (out+j+0)[1] = (ushort)(i+1);
165 (out+j+0)[2] = (ushort)(i+3);
166 (out+j+3)[0] = (ushort)(i+1);
167 (out+j+3)[1] = (ushort)(i+2);
168 (out+j+3)[2] = (ushort)(i+3);
169 }
170 }
171 static void generate_quadstrip_ushort_first2first(
172 unsigned nr,
173 void *_out )
174 {
175 ushort *out = (ushort*)_out;
176 unsigned i, j;
177 (void)j;
178 for (j = i = 0; j < nr; j+=6, i+=2) {
179 (out+j+0)[0] = (ushort)(i+2);
180 (out+j+0)[1] = (ushort)(i+0);
181 (out+j+0)[2] = (ushort)(i+3);
182 (out+j+3)[0] = (ushort)(i+0);
183 (out+j+3)[1] = (ushort)(i+1);
184 (out+j+3)[2] = (ushort)(i+3);
185 }
186 }
187 static void generate_polygon_ushort_first2first(
188 unsigned nr,
189 void *_out )
190 {
191 ushort *out = (ushort*)_out;
192 unsigned i, j;
193 (void)j;
194 for (j = i = 0; j < nr; j+=3, i++) {
195 (out+j)[0] = (ushort)(0);
196 (out+j)[1] = (ushort)(i+1);
197 (out+j)[2] = (ushort)(i+2);
198 }
199 }
200 static void generate_points_ushort_first2last(
201 unsigned nr,
202 void *_out )
203 {
204 ushort *out = (ushort*)_out;
205 unsigned i, j;
206 (void)j;
207 for (i = 0; i < nr; i++) {
208 (out+i)[0] = (ushort)(i);
209 }
210 }
211 static void generate_lines_ushort_first2last(
212 unsigned nr,
213 void *_out )
214 {
215 ushort *out = (ushort*)_out;
216 unsigned i, j;
217 (void)j;
218 for (i = 0; i < nr; i+=2) {
219 (out+i)[0] = (ushort)(i+1);
220 (out+i)[1] = (ushort)(i);
221 }
222 }
223 static void generate_linestrip_ushort_first2last(
224 unsigned nr,
225 void *_out )
226 {
227 ushort *out = (ushort*)_out;
228 unsigned i, j;
229 (void)j;
230 for (j = i = 0; j < nr; j+=2, i++) {
231 (out+j)[0] = (ushort)(i+1);
232 (out+j)[1] = (ushort)(i);
233 }
234 }
235 static void generate_lineloop_ushort_first2last(
236 unsigned nr,
237 void *_out )
238 {
239 ushort *out = (ushort*)_out;
240 unsigned i, j;
241 (void)j;
242 for (j = i = 0; j < nr - 2; j+=2, i++) {
243 (out+j)[0] = (ushort)(i+1);
244 (out+j)[1] = (ushort)(i);
245 }
246 (out+j)[0] = (ushort)(0);
247 (out+j)[1] = (ushort)(i);
248 }
249 static void generate_tris_ushort_first2last(
250 unsigned nr,
251 void *_out )
252 {
253 ushort *out = (ushort*)_out;
254 unsigned i, j;
255 (void)j;
256 for (i = 0; i < nr; i+=3) {
257 (out+i)[0] = (ushort)(i+1);
258 (out+i)[1] = (ushort)(i+2);
259 (out+i)[2] = (ushort)(i);
260 }
261 }
262 static void generate_tristrip_ushort_first2last(
263 unsigned nr,
264 void *_out )
265 {
266 ushort *out = (ushort*)_out;
267 unsigned i, j;
268 (void)j;
269 for (j = i = 0; j < nr; j+=3, i++) {
270 (out+j)[0] = (ushort)(i+1+(i&1));
271 (out+j)[1] = (ushort)(i+2-(i&1));
272 (out+j)[2] = (ushort)(i);
273 }
274 }
275 static void generate_trifan_ushort_first2last(
276 unsigned nr,
277 void *_out )
278 {
279 ushort *out = (ushort*)_out;
280 unsigned i, j;
281 (void)j;
282 for (j = i = 0; j < nr; j+=3, i++) {
283 (out+j)[0] = (ushort)(i+1);
284 (out+j)[1] = (ushort)(i+2);
285 (out+j)[2] = (ushort)(0);
286 }
287 }
288 static void generate_quads_ushort_first2last(
289 unsigned nr,
290 void *_out )
291 {
292 ushort *out = (ushort*)_out;
293 unsigned i, j;
294 (void)j;
295 for (j = i = 0; j < nr; j+=6, i+=4) {
296 (out+j+0)[0] = (ushort)(i+1);
297 (out+j+0)[1] = (ushort)(i+3);
298 (out+j+0)[2] = (ushort)(i+0);
299 (out+j+3)[0] = (ushort)(i+2);
300 (out+j+3)[1] = (ushort)(i+3);
301 (out+j+3)[2] = (ushort)(i+1);
302 }
303 }
304 static void generate_quadstrip_ushort_first2last(
305 unsigned nr,
306 void *_out )
307 {
308 ushort *out = (ushort*)_out;
309 unsigned i, j;
310 (void)j;
311 for (j = i = 0; j < nr; j+=6, i+=2) {
312 (out+j+0)[0] = (ushort)(i+0);
313 (out+j+0)[1] = (ushort)(i+3);
314 (out+j+0)[2] = (ushort)(i+2);
315 (out+j+3)[0] = (ushort)(i+1);
316 (out+j+3)[1] = (ushort)(i+3);
317 (out+j+3)[2] = (ushort)(i+0);
318 }
319 }
320 static void generate_polygon_ushort_first2last(
321 unsigned nr,
322 void *_out )
323 {
324 ushort *out = (ushort*)_out;
325 unsigned i, j;
326 (void)j;
327 for (j = i = 0; j < nr; j+=3, i++) {
328 (out+j)[0] = (ushort)(i+1);
329 (out+j)[1] = (ushort)(i+2);
330 (out+j)[2] = (ushort)(0);
331 }
332 }
333 static void generate_points_ushort_last2first(
334 unsigned nr,
335 void *_out )
336 {
337 ushort *out = (ushort*)_out;
338 unsigned i, j;
339 (void)j;
340 for (i = 0; i < nr; i++) {
341 (out+i)[0] = (ushort)(i);
342 }
343 }
344 static void generate_lines_ushort_last2first(
345 unsigned nr,
346 void *_out )
347 {
348 ushort *out = (ushort*)_out;
349 unsigned i, j;
350 (void)j;
351 for (i = 0; i < nr; i+=2) {
352 (out+i)[0] = (ushort)(i+1);
353 (out+i)[1] = (ushort)(i);
354 }
355 }
356 static void generate_linestrip_ushort_last2first(
357 unsigned nr,
358 void *_out )
359 {
360 ushort *out = (ushort*)_out;
361 unsigned i, j;
362 (void)j;
363 for (j = i = 0; j < nr; j+=2, i++) {
364 (out+j)[0] = (ushort)(i+1);
365 (out+j)[1] = (ushort)(i);
366 }
367 }
368 static void generate_lineloop_ushort_last2first(
369 unsigned nr,
370 void *_out )
371 {
372 ushort *out = (ushort*)_out;
373 unsigned i, j;
374 (void)j;
375 for (j = i = 0; j < nr - 2; j+=2, i++) {
376 (out+j)[0] = (ushort)(i+1);
377 (out+j)[1] = (ushort)(i);
378 }
379 (out+j)[0] = (ushort)(0);
380 (out+j)[1] = (ushort)(i);
381 }
382 static void generate_tris_ushort_last2first(
383 unsigned nr,
384 void *_out )
385 {
386 ushort *out = (ushort*)_out;
387 unsigned i, j;
388 (void)j;
389 for (i = 0; i < nr; i+=3) {
390 (out+i)[0] = (ushort)(i+2);
391 (out+i)[1] = (ushort)(i);
392 (out+i)[2] = (ushort)(i+1);
393 }
394 }
395 static void generate_tristrip_ushort_last2first(
396 unsigned nr,
397 void *_out )
398 {
399 ushort *out = (ushort*)_out;
400 unsigned i, j;
401 (void)j;
402 for (j = i = 0; j < nr; j+=3, i++) {
403 (out+j)[0] = (ushort)(i+2);
404 (out+j)[1] = (ushort)(i+(i&1));
405 (out+j)[2] = (ushort)(i+1-(i&1));
406 }
407 }
408 static void generate_trifan_ushort_last2first(
409 unsigned nr,
410 void *_out )
411 {
412 ushort *out = (ushort*)_out;
413 unsigned i, j;
414 (void)j;
415 for (j = i = 0; j < nr; j+=3, i++) {
416 (out+j)[0] = (ushort)(i+2);
417 (out+j)[1] = (ushort)(0);
418 (out+j)[2] = (ushort)(i+1);
419 }
420 }
421 static void generate_quads_ushort_last2first(
422 unsigned nr,
423 void *_out )
424 {
425 ushort *out = (ushort*)_out;
426 unsigned i, j;
427 (void)j;
428 for (j = i = 0; j < nr; j+=6, i+=4) {
429 (out+j+0)[0] = (ushort)(i+3);
430 (out+j+0)[1] = (ushort)(i+0);
431 (out+j+0)[2] = (ushort)(i+1);
432 (out+j+3)[0] = (ushort)(i+3);
433 (out+j+3)[1] = (ushort)(i+1);
434 (out+j+3)[2] = (ushort)(i+2);
435 }
436 }
437 static void generate_quadstrip_ushort_last2first(
438 unsigned nr,
439 void *_out )
440 {
441 ushort *out = (ushort*)_out;
442 unsigned i, j;
443 (void)j;
444 for (j = i = 0; j < nr; j+=6, i+=2) {
445 (out+j+0)[0] = (ushort)(i+3);
446 (out+j+0)[1] = (ushort)(i+2);
447 (out+j+0)[2] = (ushort)(i+0);
448 (out+j+3)[0] = (ushort)(i+3);
449 (out+j+3)[1] = (ushort)(i+0);
450 (out+j+3)[2] = (ushort)(i+1);
451 }
452 }
453 static void generate_polygon_ushort_last2first(
454 unsigned nr,
455 void *_out )
456 {
457 ushort *out = (ushort*)_out;
458 unsigned i, j;
459 (void)j;
460 for (j = i = 0; j < nr; j+=3, i++) {
461 (out+j)[0] = (ushort)(0);
462 (out+j)[1] = (ushort)(i+1);
463 (out+j)[2] = (ushort)(i+2);
464 }
465 }
466 static void generate_points_ushort_last2last(
467 unsigned nr,
468 void *_out )
469 {
470 ushort *out = (ushort*)_out;
471 unsigned i, j;
472 (void)j;
473 for (i = 0; i < nr; i++) {
474 (out+i)[0] = (ushort)(i);
475 }
476 }
477 static void generate_lines_ushort_last2last(
478 unsigned nr,
479 void *_out )
480 {
481 ushort *out = (ushort*)_out;
482 unsigned i, j;
483 (void)j;
484 for (i = 0; i < nr; i+=2) {
485 (out+i)[0] = (ushort)(i);
486 (out+i)[1] = (ushort)(i+1);
487 }
488 }
489 static void generate_linestrip_ushort_last2last(
490 unsigned nr,
491 void *_out )
492 {
493 ushort *out = (ushort*)_out;
494 unsigned i, j;
495 (void)j;
496 for (j = i = 0; j < nr; j+=2, i++) {
497 (out+j)[0] = (ushort)(i);
498 (out+j)[1] = (ushort)(i+1);
499 }
500 }
501 static void generate_lineloop_ushort_last2last(
502 unsigned nr,
503 void *_out )
504 {
505 ushort *out = (ushort*)_out;
506 unsigned i, j;
507 (void)j;
508 for (j = i = 0; j < nr - 2; j+=2, i++) {
509 (out+j)[0] = (ushort)(i);
510 (out+j)[1] = (ushort)(i+1);
511 }
512 (out+j)[0] = (ushort)(i);
513 (out+j)[1] = (ushort)(0);
514 }
515 static void generate_tris_ushort_last2last(
516 unsigned nr,
517 void *_out )
518 {
519 ushort *out = (ushort*)_out;
520 unsigned i, j;
521 (void)j;
522 for (i = 0; i < nr; i+=3) {
523 (out+i)[0] = (ushort)(i);
524 (out+i)[1] = (ushort)(i+1);
525 (out+i)[2] = (ushort)(i+2);
526 }
527 }
528 static void generate_tristrip_ushort_last2last(
529 unsigned nr,
530 void *_out )
531 {
532 ushort *out = (ushort*)_out;
533 unsigned i, j;
534 (void)j;
535 for (j = i = 0; j < nr; j+=3, i++) {
536 (out+j)[0] = (ushort)(i+(i&1));
537 (out+j)[1] = (ushort)(i+1-(i&1));
538 (out+j)[2] = (ushort)(i+2);
539 }
540 }
541 static void generate_trifan_ushort_last2last(
542 unsigned nr,
543 void *_out )
544 {
545 ushort *out = (ushort*)_out;
546 unsigned i, j;
547 (void)j;
548 for (j = i = 0; j < nr; j+=3, i++) {
549 (out+j)[0] = (ushort)(0);
550 (out+j)[1] = (ushort)(i+1);
551 (out+j)[2] = (ushort)(i+2);
552 }
553 }
554 static void generate_quads_ushort_last2last(
555 unsigned nr,
556 void *_out )
557 {
558 ushort *out = (ushort*)_out;
559 unsigned i, j;
560 (void)j;
561 for (j = i = 0; j < nr; j+=6, i+=4) {
562 (out+j+0)[0] = (ushort)(i+0);
563 (out+j+0)[1] = (ushort)(i+1);
564 (out+j+0)[2] = (ushort)(i+3);
565 (out+j+3)[0] = (ushort)(i+1);
566 (out+j+3)[1] = (ushort)(i+2);
567 (out+j+3)[2] = (ushort)(i+3);
568 }
569 }
570 static void generate_quadstrip_ushort_last2last(
571 unsigned nr,
572 void *_out )
573 {
574 ushort *out = (ushort*)_out;
575 unsigned i, j;
576 (void)j;
577 for (j = i = 0; j < nr; j+=6, i+=2) {
578 (out+j+0)[0] = (ushort)(i+2);
579 (out+j+0)[1] = (ushort)(i+0);
580 (out+j+0)[2] = (ushort)(i+3);
581 (out+j+3)[0] = (ushort)(i+0);
582 (out+j+3)[1] = (ushort)(i+1);
583 (out+j+3)[2] = (ushort)(i+3);
584 }
585 }
586 static void generate_polygon_ushort_last2last(
587 unsigned nr,
588 void *_out )
589 {
590 ushort *out = (ushort*)_out;
591 unsigned i, j;
592 (void)j;
593 for (j = i = 0; j < nr; j+=3, i++) {
594 (out+j)[0] = (ushort)(i+1);
595 (out+j)[1] = (ushort)(i+2);
596 (out+j)[2] = (ushort)(0);
597 }
598 }
599 static void generate_points_uint_first2first(
600 unsigned nr,
601 void *_out )
602 {
603 uint *out = (uint*)_out;
604 unsigned i, j;
605 (void)j;
606 for (i = 0; i < nr; i++) {
607 (out+i)[0] = (uint)(i);
608 }
609 }
610 static void generate_lines_uint_first2first(
611 unsigned nr,
612 void *_out )
613 {
614 uint *out = (uint*)_out;
615 unsigned i, j;
616 (void)j;
617 for (i = 0; i < nr; i+=2) {
618 (out+i)[0] = (uint)(i);
619 (out+i)[1] = (uint)(i+1);
620 }
621 }
622 static void generate_linestrip_uint_first2first(
623 unsigned nr,
624 void *_out )
625 {
626 uint *out = (uint*)_out;
627 unsigned i, j;
628 (void)j;
629 for (j = i = 0; j < nr; j+=2, i++) {
630 (out+j)[0] = (uint)(i);
631 (out+j)[1] = (uint)(i+1);
632 }
633 }
634 static void generate_lineloop_uint_first2first(
635 unsigned nr,
636 void *_out )
637 {
638 uint *out = (uint*)_out;
639 unsigned i, j;
640 (void)j;
641 for (j = i = 0; j < nr - 2; j+=2, i++) {
642 (out+j)[0] = (uint)(i);
643 (out+j)[1] = (uint)(i+1);
644 }
645 (out+j)[0] = (uint)(i);
646 (out+j)[1] = (uint)(0);
647 }
648 static void generate_tris_uint_first2first(
649 unsigned nr,
650 void *_out )
651 {
652 uint *out = (uint*)_out;
653 unsigned i, j;
654 (void)j;
655 for (i = 0; i < nr; i+=3) {
656 (out+i)[0] = (uint)(i);
657 (out+i)[1] = (uint)(i+1);
658 (out+i)[2] = (uint)(i+2);
659 }
660 }
661 static void generate_tristrip_uint_first2first(
662 unsigned nr,
663 void *_out )
664 {
665 uint *out = (uint*)_out;
666 unsigned i, j;
667 (void)j;
668 for (j = i = 0; j < nr; j+=3, i++) {
669 (out+j)[0] = (uint)(i);
670 (out+j)[1] = (uint)(i+1+(i&1));
671 (out+j)[2] = (uint)(i+2-(i&1));
672 }
673 }
674 static void generate_trifan_uint_first2first(
675 unsigned nr,
676 void *_out )
677 {
678 uint *out = (uint*)_out;
679 unsigned i, j;
680 (void)j;
681 for (j = i = 0; j < nr; j+=3, i++) {
682 (out+j)[0] = (uint)(0);
683 (out+j)[1] = (uint)(i+1);
684 (out+j)[2] = (uint)(i+2);
685 }
686 }
687 static void generate_quads_uint_first2first(
688 unsigned nr,
689 void *_out )
690 {
691 uint *out = (uint*)_out;
692 unsigned i, j;
693 (void)j;
694 for (j = i = 0; j < nr; j+=6, i+=4) {
695 (out+j+0)[0] = (uint)(i+0);
696 (out+j+0)[1] = (uint)(i+1);
697 (out+j+0)[2] = (uint)(i+3);
698 (out+j+3)[0] = (uint)(i+1);
699 (out+j+3)[1] = (uint)(i+2);
700 (out+j+3)[2] = (uint)(i+3);
701 }
702 }
703 static void generate_quadstrip_uint_first2first(
704 unsigned nr,
705 void *_out )
706 {
707 uint *out = (uint*)_out;
708 unsigned i, j;
709 (void)j;
710 for (j = i = 0; j < nr; j+=6, i+=2) {
711 (out+j+0)[0] = (uint)(i+2);
712 (out+j+0)[1] = (uint)(i+0);
713 (out+j+0)[2] = (uint)(i+3);
714 (out+j+3)[0] = (uint)(i+0);
715 (out+j+3)[1] = (uint)(i+1);
716 (out+j+3)[2] = (uint)(i+3);
717 }
718 }
719 static void generate_polygon_uint_first2first(
720 unsigned nr,
721 void *_out )
722 {
723 uint *out = (uint*)_out;
724 unsigned i, j;
725 (void)j;
726 for (j = i = 0; j < nr; j+=3, i++) {
727 (out+j)[0] = (uint)(0);
728 (out+j)[1] = (uint)(i+1);
729 (out+j)[2] = (uint)(i+2);
730 }
731 }
732 static void generate_points_uint_first2last(
733 unsigned nr,
734 void *_out )
735 {
736 uint *out = (uint*)_out;
737 unsigned i, j;
738 (void)j;
739 for (i = 0; i < nr; i++) {
740 (out+i)[0] = (uint)(i);
741 }
742 }
743 static void generate_lines_uint_first2last(
744 unsigned nr,
745 void *_out )
746 {
747 uint *out = (uint*)_out;
748 unsigned i, j;
749 (void)j;
750 for (i = 0; i < nr; i+=2) {
751 (out+i)[0] = (uint)(i+1);
752 (out+i)[1] = (uint)(i);
753 }
754 }
755 static void generate_linestrip_uint_first2last(
756 unsigned nr,
757 void *_out )
758 {
759 uint *out = (uint*)_out;
760 unsigned i, j;
761 (void)j;
762 for (j = i = 0; j < nr; j+=2, i++) {
763 (out+j)[0] = (uint)(i+1);
764 (out+j)[1] = (uint)(i);
765 }
766 }
767 static void generate_lineloop_uint_first2last(
768 unsigned nr,
769 void *_out )
770 {
771 uint *out = (uint*)_out;
772 unsigned i, j;
773 (void)j;
774 for (j = i = 0; j < nr - 2; j+=2, i++) {
775 (out+j)[0] = (uint)(i+1);
776 (out+j)[1] = (uint)(i);
777 }
778 (out+j)[0] = (uint)(0);
779 (out+j)[1] = (uint)(i);
780 }
781 static void generate_tris_uint_first2last(
782 unsigned nr,
783 void *_out )
784 {
785 uint *out = (uint*)_out;
786 unsigned i, j;
787 (void)j;
788 for (i = 0; i < nr; i+=3) {
789 (out+i)[0] = (uint)(i+1);
790 (out+i)[1] = (uint)(i+2);
791 (out+i)[2] = (uint)(i);
792 }
793 }
794 static void generate_tristrip_uint_first2last(
795 unsigned nr,
796 void *_out )
797 {
798 uint *out = (uint*)_out;
799 unsigned i, j;
800 (void)j;
801 for (j = i = 0; j < nr; j+=3, i++) {
802 (out+j)[0] = (uint)(i+1+(i&1));
803 (out+j)[1] = (uint)(i+2-(i&1));
804 (out+j)[2] = (uint)(i);
805 }
806 }
807 static void generate_trifan_uint_first2last(
808 unsigned nr,
809 void *_out )
810 {
811 uint *out = (uint*)_out;
812 unsigned i, j;
813 (void)j;
814 for (j = i = 0; j < nr; j+=3, i++) {
815 (out+j)[0] = (uint)(i+1);
816 (out+j)[1] = (uint)(i+2);
817 (out+j)[2] = (uint)(0);
818 }
819 }
820 static void generate_quads_uint_first2last(
821 unsigned nr,
822 void *_out )
823 {
824 uint *out = (uint*)_out;
825 unsigned i, j;
826 (void)j;
827 for (j = i = 0; j < nr; j+=6, i+=4) {
828 (out+j+0)[0] = (uint)(i+1);
829 (out+j+0)[1] = (uint)(i+3);
830 (out+j+0)[2] = (uint)(i+0);
831 (out+j+3)[0] = (uint)(i+2);
832 (out+j+3)[1] = (uint)(i+3);
833 (out+j+3)[2] = (uint)(i+1);
834 }
835 }
836 static void generate_quadstrip_uint_first2last(
837 unsigned nr,
838 void *_out )
839 {
840 uint *out = (uint*)_out;
841 unsigned i, j;
842 (void)j;
843 for (j = i = 0; j < nr; j+=6, i+=2) {
844 (out+j+0)[0] = (uint)(i+0);
845 (out+j+0)[1] = (uint)(i+3);
846 (out+j+0)[2] = (uint)(i+2);
847 (out+j+3)[0] = (uint)(i+1);
848 (out+j+3)[1] = (uint)(i+3);
849 (out+j+3)[2] = (uint)(i+0);
850 }
851 }
852 static void generate_polygon_uint_first2last(
853 unsigned nr,
854 void *_out )
855 {
856 uint *out = (uint*)_out;
857 unsigned i, j;
858 (void)j;
859 for (j = i = 0; j < nr; j+=3, i++) {
860 (out+j)[0] = (uint)(i+1);
861 (out+j)[1] = (uint)(i+2);
862 (out+j)[2] = (uint)(0);
863 }
864 }
865 static void generate_points_uint_last2first(
866 unsigned nr,
867 void *_out )
868 {
869 uint *out = (uint*)_out;
870 unsigned i, j;
871 (void)j;
872 for (i = 0; i < nr; i++) {
873 (out+i)[0] = (uint)(i);
874 }
875 }
876 static void generate_lines_uint_last2first(
877 unsigned nr,
878 void *_out )
879 {
880 uint *out = (uint*)_out;
881 unsigned i, j;
882 (void)j;
883 for (i = 0; i < nr; i+=2) {
884 (out+i)[0] = (uint)(i+1);
885 (out+i)[1] = (uint)(i);
886 }
887 }
888 static void generate_linestrip_uint_last2first(
889 unsigned nr,
890 void *_out )
891 {
892 uint *out = (uint*)_out;
893 unsigned i, j;
894 (void)j;
895 for (j = i = 0; j < nr; j+=2, i++) {
896 (out+j)[0] = (uint)(i+1);
897 (out+j)[1] = (uint)(i);
898 }
899 }
900 static void generate_lineloop_uint_last2first(
901 unsigned nr,
902 void *_out )
903 {
904 uint *out = (uint*)_out;
905 unsigned i, j;
906 (void)j;
907 for (j = i = 0; j < nr - 2; j+=2, i++) {
908 (out+j)[0] = (uint)(i+1);
909 (out+j)[1] = (uint)(i);
910 }
911 (out+j)[0] = (uint)(0);
912 (out+j)[1] = (uint)(i);
913 }
914 static void generate_tris_uint_last2first(
915 unsigned nr,
916 void *_out )
917 {
918 uint *out = (uint*)_out;
919 unsigned i, j;
920 (void)j;
921 for (i = 0; i < nr; i+=3) {
922 (out+i)[0] = (uint)(i+2);
923 (out+i)[1] = (uint)(i);
924 (out+i)[2] = (uint)(i+1);
925 }
926 }
927 static void generate_tristrip_uint_last2first(
928 unsigned nr,
929 void *_out )
930 {
931 uint *out = (uint*)_out;
932 unsigned i, j;
933 (void)j;
934 for (j = i = 0; j < nr; j+=3, i++) {
935 (out+j)[0] = (uint)(i+2);
936 (out+j)[1] = (uint)(i+(i&1));
937 (out+j)[2] = (uint)(i+1-(i&1));
938 }
939 }
940 static void generate_trifan_uint_last2first(
941 unsigned nr,
942 void *_out )
943 {
944 uint *out = (uint*)_out;
945 unsigned i, j;
946 (void)j;
947 for (j = i = 0; j < nr; j+=3, i++) {
948 (out+j)[0] = (uint)(i+2);
949 (out+j)[1] = (uint)(0);
950 (out+j)[2] = (uint)(i+1);
951 }
952 }
953 static void generate_quads_uint_last2first(
954 unsigned nr,
955 void *_out )
956 {
957 uint *out = (uint*)_out;
958 unsigned i, j;
959 (void)j;
960 for (j = i = 0; j < nr; j+=6, i+=4) {
961 (out+j+0)[0] = (uint)(i+3);
962 (out+j+0)[1] = (uint)(i+0);
963 (out+j+0)[2] = (uint)(i+1);
964 (out+j+3)[0] = (uint)(i+3);
965 (out+j+3)[1] = (uint)(i+1);
966 (out+j+3)[2] = (uint)(i+2);
967 }
968 }
969 static void generate_quadstrip_uint_last2first(
970 unsigned nr,
971 void *_out )
972 {
973 uint *out = (uint*)_out;
974 unsigned i, j;
975 (void)j;
976 for (j = i = 0; j < nr; j+=6, i+=2) {
977 (out+j+0)[0] = (uint)(i+3);
978 (out+j+0)[1] = (uint)(i+2);
979 (out+j+0)[2] = (uint)(i+0);
980 (out+j+3)[0] = (uint)(i+3);
981 (out+j+3)[1] = (uint)(i+0);
982 (out+j+3)[2] = (uint)(i+1);
983 }
984 }
985 static void generate_polygon_uint_last2first(
986 unsigned nr,
987 void *_out )
988 {
989 uint *out = (uint*)_out;
990 unsigned i, j;
991 (void)j;
992 for (j = i = 0; j < nr; j+=3, i++) {
993 (out+j)[0] = (uint)(0);
994 (out+j)[1] = (uint)(i+1);
995 (out+j)[2] = (uint)(i+2);
996 }
997 }
998 static void generate_points_uint_last2last(
999 unsigned nr,
1000 void *_out )
1001 {
1002 uint *out = (uint*)_out;
1003 unsigned i, j;
1004 (void)j;
1005 for (i = 0; i < nr; i++) {
1006 (out+i)[0] = (uint)(i);
1007 }
1008 }
1009 static void generate_lines_uint_last2last(
1010 unsigned nr,
1011 void *_out )
1012 {
1013 uint *out = (uint*)_out;
1014 unsigned i, j;
1015 (void)j;
1016 for (i = 0; i < nr; i+=2) {
1017 (out+i)[0] = (uint)(i);
1018 (out+i)[1] = (uint)(i+1);
1019 }
1020 }
1021 static void generate_linestrip_uint_last2last(
1022 unsigned nr,
1023 void *_out )
1024 {
1025 uint *out = (uint*)_out;
1026 unsigned i, j;
1027 (void)j;
1028 for (j = i = 0; j < nr; j+=2, i++) {
1029 (out+j)[0] = (uint)(i);
1030 (out+j)[1] = (uint)(i+1);
1031 }
1032 }
1033 static void generate_lineloop_uint_last2last(
1034 unsigned nr,
1035 void *_out )
1036 {
1037 uint *out = (uint*)_out;
1038 unsigned i, j;
1039 (void)j;
1040 for (j = i = 0; j < nr - 2; j+=2, i++) {
1041 (out+j)[0] = (uint)(i);
1042 (out+j)[1] = (uint)(i+1);
1043 }
1044 (out+j)[0] = (uint)(i);
1045 (out+j)[1] = (uint)(0);
1046 }
1047 static void generate_tris_uint_last2last(
1048 unsigned nr,
1049 void *_out )
1050 {
1051 uint *out = (uint*)_out;
1052 unsigned i, j;
1053 (void)j;
1054 for (i = 0; i < nr; i+=3) {
1055 (out+i)[0] = (uint)(i);
1056 (out+i)[1] = (uint)(i+1);
1057 (out+i)[2] = (uint)(i+2);
1058 }
1059 }
1060 static void generate_tristrip_uint_last2last(
1061 unsigned nr,
1062 void *_out )
1063 {
1064 uint *out = (uint*)_out;
1065 unsigned i, j;
1066 (void)j;
1067 for (j = i = 0; j < nr; j+=3, i++) {
1068 (out+j)[0] = (uint)(i+(i&1));
1069 (out+j)[1] = (uint)(i+1-(i&1));
1070 (out+j)[2] = (uint)(i+2);
1071 }
1072 }
1073 static void generate_trifan_uint_last2last(
1074 unsigned nr,
1075 void *_out )
1076 {
1077 uint *out = (uint*)_out;
1078 unsigned i, j;
1079 (void)j;
1080 for (j = i = 0; j < nr; j+=3, i++) {
1081 (out+j)[0] = (uint)(0);
1082 (out+j)[1] = (uint)(i+1);
1083 (out+j)[2] = (uint)(i+2);
1084 }
1085 }
1086 static void generate_quads_uint_last2last(
1087 unsigned nr,
1088 void *_out )
1089 {
1090 uint *out = (uint*)_out;
1091 unsigned i, j;
1092 (void)j;
1093 for (j = i = 0; j < nr; j+=6, i+=4) {
1094 (out+j+0)[0] = (uint)(i+0);
1095 (out+j+0)[1] = (uint)(i+1);
1096 (out+j+0)[2] = (uint)(i+3);
1097 (out+j+3)[0] = (uint)(i+1);
1098 (out+j+3)[1] = (uint)(i+2);
1099 (out+j+3)[2] = (uint)(i+3);
1100 }
1101 }
1102 static void generate_quadstrip_uint_last2last(
1103 unsigned nr,
1104 void *_out )
1105 {
1106 uint *out = (uint*)_out;
1107 unsigned i, j;
1108 (void)j;
1109 for (j = i = 0; j < nr; j+=6, i+=2) {
1110 (out+j+0)[0] = (uint)(i+2);
1111 (out+j+0)[1] = (uint)(i+0);
1112 (out+j+0)[2] = (uint)(i+3);
1113 (out+j+3)[0] = (uint)(i+0);
1114 (out+j+3)[1] = (uint)(i+1);
1115 (out+j+3)[2] = (uint)(i+3);
1116 }
1117 }
1118 static void generate_polygon_uint_last2last(
1119 unsigned nr,
1120 void *_out )
1121 {
1122 uint *out = (uint*)_out;
1123 unsigned i, j;
1124 (void)j;
1125 for (j = i = 0; j < nr; j+=3, i++) {
1126 (out+j)[0] = (uint)(i+1);
1127 (out+j)[1] = (uint)(i+2);
1128 (out+j)[2] = (uint)(0);
1129 }
1130 }
1131 static void translate_points_ubyte2ushort_first2first(
1132 const void * _in,
1133 unsigned nr,
1134 void *_out )
1135 {
1136 const ubyte*in = (const ubyte*)_in;
1137 ushort *out = (ushort*)_out;
1138 unsigned i, j;
1139 (void)j;
1140 for (i = 0; i < nr; i++) {
1141 (out+i)[0] = (ushort)in[i];
1142 }
1143 }
1144 static void translate_lines_ubyte2ushort_first2first(
1145 const void * _in,
1146 unsigned nr,
1147 void *_out )
1148 {
1149 const ubyte*in = (const ubyte*)_in;
1150 ushort *out = (ushort*)_out;
1151 unsigned i, j;
1152 (void)j;
1153 for (i = 0; i < nr; i+=2) {
1154 (out+i)[0] = (ushort)in[i];
1155 (out+i)[1] = (ushort)in[i+1];
1156 }
1157 }
1158 static void translate_linestrip_ubyte2ushort_first2first(
1159 const void * _in,
1160 unsigned nr,
1161 void *_out )
1162 {
1163 const ubyte*in = (const ubyte*)_in;
1164 ushort *out = (ushort*)_out;
1165 unsigned i, j;
1166 (void)j;
1167 for (j = i = 0; j < nr; j+=2, i++) {
1168 (out+j)[0] = (ushort)in[i];
1169 (out+j)[1] = (ushort)in[i+1];
1170 }
1171 }
1172 static void translate_lineloop_ubyte2ushort_first2first(
1173 const void * _in,
1174 unsigned nr,
1175 void *_out )
1176 {
1177 const ubyte*in = (const ubyte*)_in;
1178 ushort *out = (ushort*)_out;
1179 unsigned i, j;
1180 (void)j;
1181 for (j = i = 0; j < nr - 2; j+=2, i++) {
1182 (out+j)[0] = (ushort)in[i];
1183 (out+j)[1] = (ushort)in[i+1];
1184 }
1185 (out+j)[0] = (ushort)in[i];
1186 (out+j)[1] = (ushort)in[0];
1187 }
1188 static void translate_tris_ubyte2ushort_first2first(
1189 const void * _in,
1190 unsigned nr,
1191 void *_out )
1192 {
1193 const ubyte*in = (const ubyte*)_in;
1194 ushort *out = (ushort*)_out;
1195 unsigned i, j;
1196 (void)j;
1197 for (i = 0; i < nr; i+=3) {
1198 (out+i)[0] = (ushort)in[i];
1199 (out+i)[1] = (ushort)in[i+1];
1200 (out+i)[2] = (ushort)in[i+2];
1201 }
1202 }
1203 static void translate_tristrip_ubyte2ushort_first2first(
1204 const void * _in,
1205 unsigned nr,
1206 void *_out )
1207 {
1208 const ubyte*in = (const ubyte*)_in;
1209 ushort *out = (ushort*)_out;
1210 unsigned i, j;
1211 (void)j;
1212 for (j = i = 0; j < nr; j+=3, i++) {
1213 (out+j)[0] = (ushort)in[i];
1214 (out+j)[1] = (ushort)in[i+1+(i&1)];
1215 (out+j)[2] = (ushort)in[i+2-(i&1)];
1216 }
1217 }
1218 static void translate_trifan_ubyte2ushort_first2first(
1219 const void * _in,
1220 unsigned nr,
1221 void *_out )
1222 {
1223 const ubyte*in = (const ubyte*)_in;
1224 ushort *out = (ushort*)_out;
1225 unsigned i, j;
1226 (void)j;
1227 for (j = i = 0; j < nr; j+=3, i++) {
1228 (out+j)[0] = (ushort)in[0];
1229 (out+j)[1] = (ushort)in[i+1];
1230 (out+j)[2] = (ushort)in[i+2];
1231 }
1232 }
1233 static void translate_quads_ubyte2ushort_first2first(
1234 const void * _in,
1235 unsigned nr,
1236 void *_out )
1237 {
1238 const ubyte*in = (const ubyte*)_in;
1239 ushort *out = (ushort*)_out;
1240 unsigned i, j;
1241 (void)j;
1242 for (j = i = 0; j < nr; j+=6, i+=4) {
1243 (out+j+0)[0] = (ushort)in[i+0];
1244 (out+j+0)[1] = (ushort)in[i+1];
1245 (out+j+0)[2] = (ushort)in[i+3];
1246 (out+j+3)[0] = (ushort)in[i+1];
1247 (out+j+3)[1] = (ushort)in[i+2];
1248 (out+j+3)[2] = (ushort)in[i+3];
1249 }
1250 }
1251 static void translate_quadstrip_ubyte2ushort_first2first(
1252 const void * _in,
1253 unsigned nr,
1254 void *_out )
1255 {
1256 const ubyte*in = (const ubyte*)_in;
1257 ushort *out = (ushort*)_out;
1258 unsigned i, j;
1259 (void)j;
1260 for (j = i = 0; j < nr; j+=6, i+=2) {
1261 (out+j+0)[0] = (ushort)in[i+2];
1262 (out+j+0)[1] = (ushort)in[i+0];
1263 (out+j+0)[2] = (ushort)in[i+3];
1264 (out+j+3)[0] = (ushort)in[i+0];
1265 (out+j+3)[1] = (ushort)in[i+1];
1266 (out+j+3)[2] = (ushort)in[i+3];
1267 }
1268 }
1269 static void translate_polygon_ubyte2ushort_first2first(
1270 const void * _in,
1271 unsigned nr,
1272 void *_out )
1273 {
1274 const ubyte*in = (const ubyte*)_in;
1275 ushort *out = (ushort*)_out;
1276 unsigned i, j;
1277 (void)j;
1278 for (j = i = 0; j < nr; j+=3, i++) {
1279 (out+j)[0] = (ushort)in[0];
1280 (out+j)[1] = (ushort)in[i+1];
1281 (out+j)[2] = (ushort)in[i+2];
1282 }
1283 }
1284 static void translate_points_ubyte2ushort_first2last(
1285 const void * _in,
1286 unsigned nr,
1287 void *_out )
1288 {
1289 const ubyte*in = (const ubyte*)_in;
1290 ushort *out = (ushort*)_out;
1291 unsigned i, j;
1292 (void)j;
1293 for (i = 0; i < nr; i++) {
1294 (out+i)[0] = (ushort)in[i];
1295 }
1296 }
1297 static void translate_lines_ubyte2ushort_first2last(
1298 const void * _in,
1299 unsigned nr,
1300 void *_out )
1301 {
1302 const ubyte*in = (const ubyte*)_in;
1303 ushort *out = (ushort*)_out;
1304 unsigned i, j;
1305 (void)j;
1306 for (i = 0; i < nr; i+=2) {
1307 (out+i)[0] = (ushort)in[i+1];
1308 (out+i)[1] = (ushort)in[i];
1309 }
1310 }
1311 static void translate_linestrip_ubyte2ushort_first2last(
1312 const void * _in,
1313 unsigned nr,
1314 void *_out )
1315 {
1316 const ubyte*in = (const ubyte*)_in;
1317 ushort *out = (ushort*)_out;
1318 unsigned i, j;
1319 (void)j;
1320 for (j = i = 0; j < nr; j+=2, i++) {
1321 (out+j)[0] = (ushort)in[i+1];
1322 (out+j)[1] = (ushort)in[i];
1323 }
1324 }
1325 static void translate_lineloop_ubyte2ushort_first2last(
1326 const void * _in,
1327 unsigned nr,
1328 void *_out )
1329 {
1330 const ubyte*in = (const ubyte*)_in;
1331 ushort *out = (ushort*)_out;
1332 unsigned i, j;
1333 (void)j;
1334 for (j = i = 0; j < nr - 2; j+=2, i++) {
1335 (out+j)[0] = (ushort)in[i+1];
1336 (out+j)[1] = (ushort)in[i];
1337 }
1338 (out+j)[0] = (ushort)in[0];
1339 (out+j)[1] = (ushort)in[i];
1340 }
1341 static void translate_tris_ubyte2ushort_first2last(
1342 const void * _in,
1343 unsigned nr,
1344 void *_out )
1345 {
1346 const ubyte*in = (const ubyte*)_in;
1347 ushort *out = (ushort*)_out;
1348 unsigned i, j;
1349 (void)j;
1350 for (i = 0; i < nr; i+=3) {
1351 (out+i)[0] = (ushort)in[i+1];
1352 (out+i)[1] = (ushort)in[i+2];
1353 (out+i)[2] = (ushort)in[i];
1354 }
1355 }
1356 static void translate_tristrip_ubyte2ushort_first2last(
1357 const void * _in,
1358 unsigned nr,
1359 void *_out )
1360 {
1361 const ubyte*in = (const ubyte*)_in;
1362 ushort *out = (ushort*)_out;
1363 unsigned i, j;
1364 (void)j;
1365 for (j = i = 0; j < nr; j+=3, i++) {
1366 (out+j)[0] = (ushort)in[i+1+(i&1)];
1367 (out+j)[1] = (ushort)in[i+2-(i&1)];
1368 (out+j)[2] = (ushort)in[i];
1369 }
1370 }
1371 static void translate_trifan_ubyte2ushort_first2last(
1372 const void * _in,
1373 unsigned nr,
1374 void *_out )
1375 {
1376 const ubyte*in = (const ubyte*)_in;
1377 ushort *out = (ushort*)_out;
1378 unsigned i, j;
1379 (void)j;
1380 for (j = i = 0; j < nr; j+=3, i++) {
1381 (out+j)[0] = (ushort)in[i+1];
1382 (out+j)[1] = (ushort)in[i+2];
1383 (out+j)[2] = (ushort)in[0];
1384 }
1385 }
1386 static void translate_quads_ubyte2ushort_first2last(
1387 const void * _in,
1388 unsigned nr,
1389 void *_out )
1390 {
1391 const ubyte*in = (const ubyte*)_in;
1392 ushort *out = (ushort*)_out;
1393 unsigned i, j;
1394 (void)j;
1395 for (j = i = 0; j < nr; j+=6, i+=4) {
1396 (out+j+0)[0] = (ushort)in[i+1];
1397 (out+j+0)[1] = (ushort)in[i+3];
1398 (out+j+0)[2] = (ushort)in[i+0];
1399 (out+j+3)[0] = (ushort)in[i+2];
1400 (out+j+3)[1] = (ushort)in[i+3];
1401 (out+j+3)[2] = (ushort)in[i+1];
1402 }
1403 }
1404 static void translate_quadstrip_ubyte2ushort_first2last(
1405 const void * _in,
1406 unsigned nr,
1407 void *_out )
1408 {
1409 const ubyte*in = (const ubyte*)_in;
1410 ushort *out = (ushort*)_out;
1411 unsigned i, j;
1412 (void)j;
1413 for (j = i = 0; j < nr; j+=6, i+=2) {
1414 (out+j+0)[0] = (ushort)in[i+0];
1415 (out+j+0)[1] = (ushort)in[i+3];
1416 (out+j+0)[2] = (ushort)in[i+2];
1417 (out+j+3)[0] = (ushort)in[i+1];
1418 (out+j+3)[1] = (ushort)in[i+3];
1419 (out+j+3)[2] = (ushort)in[i+0];
1420 }
1421 }
1422 static void translate_polygon_ubyte2ushort_first2last(
1423 const void * _in,
1424 unsigned nr,
1425 void *_out )
1426 {
1427 const ubyte*in = (const ubyte*)_in;
1428 ushort *out = (ushort*)_out;
1429 unsigned i, j;
1430 (void)j;
1431 for (j = i = 0; j < nr; j+=3, i++) {
1432 (out+j)[0] = (ushort)in[i+1];
1433 (out+j)[1] = (ushort)in[i+2];
1434 (out+j)[2] = (ushort)in[0];
1435 }
1436 }
1437 static void translate_points_ubyte2ushort_last2first(
1438 const void * _in,
1439 unsigned nr,
1440 void *_out )
1441 {
1442 const ubyte*in = (const ubyte*)_in;
1443 ushort *out = (ushort*)_out;
1444 unsigned i, j;
1445 (void)j;
1446 for (i = 0; i < nr; i++) {
1447 (out+i)[0] = (ushort)in[i];
1448 }
1449 }
1450 static void translate_lines_ubyte2ushort_last2first(
1451 const void * _in,
1452 unsigned nr,
1453 void *_out )
1454 {
1455 const ubyte*in = (const ubyte*)_in;
1456 ushort *out = (ushort*)_out;
1457 unsigned i, j;
1458 (void)j;
1459 for (i = 0; i < nr; i+=2) {
1460 (out+i)[0] = (ushort)in[i+1];
1461 (out+i)[1] = (ushort)in[i];
1462 }
1463 }
1464 static void translate_linestrip_ubyte2ushort_last2first(
1465 const void * _in,
1466 unsigned nr,
1467 void *_out )
1468 {
1469 const ubyte*in = (const ubyte*)_in;
1470 ushort *out = (ushort*)_out;
1471 unsigned i, j;
1472 (void)j;
1473 for (j = i = 0; j < nr; j+=2, i++) {
1474 (out+j)[0] = (ushort)in[i+1];
1475 (out+j)[1] = (ushort)in[i];
1476 }
1477 }
1478 static void translate_lineloop_ubyte2ushort_last2first(
1479 const void * _in,
1480 unsigned nr,
1481 void *_out )
1482 {
1483 const ubyte*in = (const ubyte*)_in;
1484 ushort *out = (ushort*)_out;
1485 unsigned i, j;
1486 (void)j;
1487 for (j = i = 0; j < nr - 2; j+=2, i++) {
1488 (out+j)[0] = (ushort)in[i+1];
1489 (out+j)[1] = (ushort)in[i];
1490 }
1491 (out+j)[0] = (ushort)in[0];
1492 (out+j)[1] = (ushort)in[i];
1493 }
1494 static void translate_tris_ubyte2ushort_last2first(
1495 const void * _in,
1496 unsigned nr,
1497 void *_out )
1498 {
1499 const ubyte*in = (const ubyte*)_in;
1500 ushort *out = (ushort*)_out;
1501 unsigned i, j;
1502 (void)j;
1503 for (i = 0; i < nr; i+=3) {
1504 (out+i)[0] = (ushort)in[i+2];
1505 (out+i)[1] = (ushort)in[i];
1506 (out+i)[2] = (ushort)in[i+1];
1507 }
1508 }
1509 static void translate_tristrip_ubyte2ushort_last2first(
1510 const void * _in,
1511 unsigned nr,
1512 void *_out )
1513 {
1514 const ubyte*in = (const ubyte*)_in;
1515 ushort *out = (ushort*)_out;
1516 unsigned i, j;
1517 (void)j;
1518 for (j = i = 0; j < nr; j+=3, i++) {
1519 (out+j)[0] = (ushort)in[i+2];
1520 (out+j)[1] = (ushort)in[i+(i&1)];
1521 (out+j)[2] = (ushort)in[i+1-(i&1)];
1522 }
1523 }
1524 static void translate_trifan_ubyte2ushort_last2first(
1525 const void * _in,
1526 unsigned nr,
1527 void *_out )
1528 {
1529 const ubyte*in = (const ubyte*)_in;
1530 ushort *out = (ushort*)_out;
1531 unsigned i, j;
1532 (void)j;
1533 for (j = i = 0; j < nr; j+=3, i++) {
1534 (out+j)[0] = (ushort)in[i+2];
1535 (out+j)[1] = (ushort)in[0];
1536 (out+j)[2] = (ushort)in[i+1];
1537 }
1538 }
1539 static void translate_quads_ubyte2ushort_last2first(
1540 const void * _in,
1541 unsigned nr,
1542 void *_out )
1543 {
1544 const ubyte*in = (const ubyte*)_in;
1545 ushort *out = (ushort*)_out;
1546 unsigned i, j;
1547 (void)j;
1548 for (j = i = 0; j < nr; j+=6, i+=4) {
1549 (out+j+0)[0] = (ushort)in[i+3];
1550 (out+j+0)[1] = (ushort)in[i+0];
1551 (out+j+0)[2] = (ushort)in[i+1];
1552 (out+j+3)[0] = (ushort)in[i+3];
1553 (out+j+3)[1] = (ushort)in[i+1];
1554 (out+j+3)[2] = (ushort)in[i+2];
1555 }
1556 }
1557 static void translate_quadstrip_ubyte2ushort_last2first(
1558 const void * _in,
1559 unsigned nr,
1560 void *_out )
1561 {
1562 const ubyte*in = (const ubyte*)_in;
1563 ushort *out = (ushort*)_out;
1564 unsigned i, j;
1565 (void)j;
1566 for (j = i = 0; j < nr; j+=6, i+=2) {
1567 (out+j+0)[0] = (ushort)in[i+3];
1568 (out+j+0)[1] = (ushort)in[i+2];
1569 (out+j+0)[2] = (ushort)in[i+0];
1570 (out+j+3)[0] = (ushort)in[i+3];
1571 (out+j+3)[1] = (ushort)in[i+0];
1572 (out+j+3)[2] = (ushort)in[i+1];
1573 }
1574 }
1575 static void translate_polygon_ubyte2ushort_last2first(
1576 const void * _in,
1577 unsigned nr,
1578 void *_out )
1579 {
1580 const ubyte*in = (const ubyte*)_in;
1581 ushort *out = (ushort*)_out;
1582 unsigned i, j;
1583 (void)j;
1584 for (j = i = 0; j < nr; j+=3, i++) {
1585 (out+j)[0] = (ushort)in[0];
1586 (out+j)[1] = (ushort)in[i+1];
1587 (out+j)[2] = (ushort)in[i+2];
1588 }
1589 }
1590 static void translate_points_ubyte2ushort_last2last(
1591 const void * _in,
1592 unsigned nr,
1593 void *_out )
1594 {
1595 const ubyte*in = (const ubyte*)_in;
1596 ushort *out = (ushort*)_out;
1597 unsigned i, j;
1598 (void)j;
1599 for (i = 0; i < nr; i++) {
1600 (out+i)[0] = (ushort)in[i];
1601 }
1602 }
1603 static void translate_lines_ubyte2ushort_last2last(
1604 const void * _in,
1605 unsigned nr,
1606 void *_out )
1607 {
1608 const ubyte*in = (const ubyte*)_in;
1609 ushort *out = (ushort*)_out;
1610 unsigned i, j;
1611 (void)j;
1612 for (i = 0; i < nr; i+=2) {
1613 (out+i)[0] = (ushort)in[i];
1614 (out+i)[1] = (ushort)in[i+1];
1615 }
1616 }
1617 static void translate_linestrip_ubyte2ushort_last2last(
1618 const void * _in,
1619 unsigned nr,
1620 void *_out )
1621 {
1622 const ubyte*in = (const ubyte*)_in;
1623 ushort *out = (ushort*)_out;
1624 unsigned i, j;
1625 (void)j;
1626 for (j = i = 0; j < nr; j+=2, i++) {
1627 (out+j)[0] = (ushort)in[i];
1628 (out+j)[1] = (ushort)in[i+1];
1629 }
1630 }
1631 static void translate_lineloop_ubyte2ushort_last2last(
1632 const void * _in,
1633 unsigned nr,
1634 void *_out )
1635 {
1636 const ubyte*in = (const ubyte*)_in;
1637 ushort *out = (ushort*)_out;
1638 unsigned i, j;
1639 (void)j;
1640 for (j = i = 0; j < nr - 2; j+=2, i++) {
1641 (out+j)[0] = (ushort)in[i];
1642 (out+j)[1] = (ushort)in[i+1];
1643 }
1644 (out+j)[0] = (ushort)in[i];
1645 (out+j)[1] = (ushort)in[0];
1646 }
1647 static void translate_tris_ubyte2ushort_last2last(
1648 const void * _in,
1649 unsigned nr,
1650 void *_out )
1651 {
1652 const ubyte*in = (const ubyte*)_in;
1653 ushort *out = (ushort*)_out;
1654 unsigned i, j;
1655 (void)j;
1656 for (i = 0; i < nr; i+=3) {
1657 (out+i)[0] = (ushort)in[i];
1658 (out+i)[1] = (ushort)in[i+1];
1659 (out+i)[2] = (ushort)in[i+2];
1660 }
1661 }
1662 static void translate_tristrip_ubyte2ushort_last2last(
1663 const void * _in,
1664 unsigned nr,
1665 void *_out )
1666 {
1667 const ubyte*in = (const ubyte*)_in;
1668 ushort *out = (ushort*)_out;
1669 unsigned i, j;
1670 (void)j;
1671 for (j = i = 0; j < nr; j+=3, i++) {
1672 (out+j)[0] = (ushort)in[i+(i&1)];
1673 (out+j)[1] = (ushort)in[i+1-(i&1)];
1674 (out+j)[2] = (ushort)in[i+2];
1675 }
1676 }
1677 static void translate_trifan_ubyte2ushort_last2last(
1678 const void * _in,
1679 unsigned nr,
1680 void *_out )
1681 {
1682 const ubyte*in = (const ubyte*)_in;
1683 ushort *out = (ushort*)_out;
1684 unsigned i, j;
1685 (void)j;
1686 for (j = i = 0; j < nr; j+=3, i++) {
1687 (out+j)[0] = (ushort)in[0];
1688 (out+j)[1] = (ushort)in[i+1];
1689 (out+j)[2] = (ushort)in[i+2];
1690 }
1691 }
1692 static void translate_quads_ubyte2ushort_last2last(
1693 const void * _in,
1694 unsigned nr,
1695 void *_out )
1696 {
1697 const ubyte*in = (const ubyte*)_in;
1698 ushort *out = (ushort*)_out;
1699 unsigned i, j;
1700 (void)j;
1701 for (j = i = 0; j < nr; j+=6, i+=4) {
1702 (out+j+0)[0] = (ushort)in[i+0];
1703 (out+j+0)[1] = (ushort)in[i+1];
1704 (out+j+0)[2] = (ushort)in[i+3];
1705 (out+j+3)[0] = (ushort)in[i+1];
1706 (out+j+3)[1] = (ushort)in[i+2];
1707 (out+j+3)[2] = (ushort)in[i+3];
1708 }
1709 }
1710 static void translate_quadstrip_ubyte2ushort_last2last(
1711 const void * _in,
1712 unsigned nr,
1713 void *_out )
1714 {
1715 const ubyte*in = (const ubyte*)_in;
1716 ushort *out = (ushort*)_out;
1717 unsigned i, j;
1718 (void)j;
1719 for (j = i = 0; j < nr; j+=6, i+=2) {
1720 (out+j+0)[0] = (ushort)in[i+2];
1721 (out+j+0)[1] = (ushort)in[i+0];
1722 (out+j+0)[2] = (ushort)in[i+3];
1723 (out+j+3)[0] = (ushort)in[i+0];
1724 (out+j+3)[1] = (ushort)in[i+1];
1725 (out+j+3)[2] = (ushort)in[i+3];
1726 }
1727 }
1728 static void translate_polygon_ubyte2ushort_last2last(
1729 const void * _in,
1730 unsigned nr,
1731 void *_out )
1732 {
1733 const ubyte*in = (const ubyte*)_in;
1734 ushort *out = (ushort*)_out;
1735 unsigned i, j;
1736 (void)j;
1737 for (j = i = 0; j < nr; j+=3, i++) {
1738 (out+j)[0] = (ushort)in[i+1];
1739 (out+j)[1] = (ushort)in[i+2];
1740 (out+j)[2] = (ushort)in[0];
1741 }
1742 }
1743 static void translate_points_ubyte2uint_first2first(
1744 const void * _in,
1745 unsigned nr,
1746 void *_out )
1747 {
1748 const ubyte*in = (const ubyte*)_in;
1749 uint *out = (uint*)_out;
1750 unsigned i, j;
1751 (void)j;
1752 for (i = 0; i < nr; i++) {
1753 (out+i)[0] = (uint)in[i];
1754 }
1755 }
1756 static void translate_lines_ubyte2uint_first2first(
1757 const void * _in,
1758 unsigned nr,
1759 void *_out )
1760 {
1761 const ubyte*in = (const ubyte*)_in;
1762 uint *out = (uint*)_out;
1763 unsigned i, j;
1764 (void)j;
1765 for (i = 0; i < nr; i+=2) {
1766 (out+i)[0] = (uint)in[i];
1767 (out+i)[1] = (uint)in[i+1];
1768 }
1769 }
1770 static void translate_linestrip_ubyte2uint_first2first(
1771 const void * _in,
1772 unsigned nr,
1773 void *_out )
1774 {
1775 const ubyte*in = (const ubyte*)_in;
1776 uint *out = (uint*)_out;
1777 unsigned i, j;
1778 (void)j;
1779 for (j = i = 0; j < nr; j+=2, i++) {
1780 (out+j)[0] = (uint)in[i];
1781 (out+j)[1] = (uint)in[i+1];
1782 }
1783 }
1784 static void translate_lineloop_ubyte2uint_first2first(
1785 const void * _in,
1786 unsigned nr,
1787 void *_out )
1788 {
1789 const ubyte*in = (const ubyte*)_in;
1790 uint *out = (uint*)_out;
1791 unsigned i, j;
1792 (void)j;
1793 for (j = i = 0; j < nr - 2; j+=2, i++) {
1794 (out+j)[0] = (uint)in[i];
1795 (out+j)[1] = (uint)in[i+1];
1796 }
1797 (out+j)[0] = (uint)in[i];
1798 (out+j)[1] = (uint)in[0];
1799 }
1800 static void translate_tris_ubyte2uint_first2first(
1801 const void * _in,
1802 unsigned nr,
1803 void *_out )
1804 {
1805 const ubyte*in = (const ubyte*)_in;
1806 uint *out = (uint*)_out;
1807 unsigned i, j;
1808 (void)j;
1809 for (i = 0; i < nr; i+=3) {
1810 (out+i)[0] = (uint)in[i];
1811 (out+i)[1] = (uint)in[i+1];
1812 (out+i)[2] = (uint)in[i+2];
1813 }
1814 }
1815 static void translate_tristrip_ubyte2uint_first2first(
1816 const void * _in,
1817 unsigned nr,
1818 void *_out )
1819 {
1820 const ubyte*in = (const ubyte*)_in;
1821 uint *out = (uint*)_out;
1822 unsigned i, j;
1823 (void)j;
1824 for (j = i = 0; j < nr; j+=3, i++) {
1825 (out+j)[0] = (uint)in[i];
1826 (out+j)[1] = (uint)in[i+1+(i&1)];
1827 (out+j)[2] = (uint)in[i+2-(i&1)];
1828 }
1829 }
1830 static void translate_trifan_ubyte2uint_first2first(
1831 const void * _in,
1832 unsigned nr,
1833 void *_out )
1834 {
1835 const ubyte*in = (const ubyte*)_in;
1836 uint *out = (uint*)_out;
1837 unsigned i, j;
1838 (void)j;
1839 for (j = i = 0; j < nr; j+=3, i++) {
1840 (out+j)[0] = (uint)in[0];
1841 (out+j)[1] = (uint)in[i+1];
1842 (out+j)[2] = (uint)in[i+2];
1843 }
1844 }
1845 static void translate_quads_ubyte2uint_first2first(
1846 const void * _in,
1847 unsigned nr,
1848 void *_out )
1849 {
1850 const ubyte*in = (const ubyte*)_in;
1851 uint *out = (uint*)_out;
1852 unsigned i, j;
1853 (void)j;
1854 for (j = i = 0; j < nr; j+=6, i+=4) {
1855 (out+j+0)[0] = (uint)in[i+0];
1856 (out+j+0)[1] = (uint)in[i+1];
1857 (out+j+0)[2] = (uint)in[i+3];
1858 (out+j+3)[0] = (uint)in[i+1];
1859 (out+j+3)[1] = (uint)in[i+2];
1860 (out+j+3)[2] = (uint)in[i+3];
1861 }
1862 }
1863 static void translate_quadstrip_ubyte2uint_first2first(
1864 const void * _in,
1865 unsigned nr,
1866 void *_out )
1867 {
1868 const ubyte*in = (const ubyte*)_in;
1869 uint *out = (uint*)_out;
1870 unsigned i, j;
1871 (void)j;
1872 for (j = i = 0; j < nr; j+=6, i+=2) {
1873 (out+j+0)[0] = (uint)in[i+2];
1874 (out+j+0)[1] = (uint)in[i+0];
1875 (out+j+0)[2] = (uint)in[i+3];
1876 (out+j+3)[0] = (uint)in[i+0];
1877 (out+j+3)[1] = (uint)in[i+1];
1878 (out+j+3)[2] = (uint)in[i+3];
1879 }
1880 }
1881 static void translate_polygon_ubyte2uint_first2first(
1882 const void * _in,
1883 unsigned nr,
1884 void *_out )
1885 {
1886 const ubyte*in = (const ubyte*)_in;
1887 uint *out = (uint*)_out;
1888 unsigned i, j;
1889 (void)j;
1890 for (j = i = 0; j < nr; j+=3, i++) {
1891 (out+j)[0] = (uint)in[0];
1892 (out+j)[1] = (uint)in[i+1];
1893 (out+j)[2] = (uint)in[i+2];
1894 }
1895 }
1896 static void translate_points_ubyte2uint_first2last(
1897 const void * _in,
1898 unsigned nr,
1899 void *_out )
1900 {
1901 const ubyte*in = (const ubyte*)_in;
1902 uint *out = (uint*)_out;
1903 unsigned i, j;
1904 (void)j;
1905 for (i = 0; i < nr; i++) {
1906 (out+i)[0] = (uint)in[i];
1907 }
1908 }
1909 static void translate_lines_ubyte2uint_first2last(
1910 const void * _in,
1911 unsigned nr,
1912 void *_out )
1913 {
1914 const ubyte*in = (const ubyte*)_in;
1915 uint *out = (uint*)_out;
1916 unsigned i, j;
1917 (void)j;
1918 for (i = 0; i < nr; i+=2) {
1919 (out+i)[0] = (uint)in[i+1];
1920 (out+i)[1] = (uint)in[i];
1921 }
1922 }
1923 static void translate_linestrip_ubyte2uint_first2last(
1924 const void * _in,
1925 unsigned nr,
1926 void *_out )
1927 {
1928 const ubyte*in = (const ubyte*)_in;
1929 uint *out = (uint*)_out;
1930 unsigned i, j;
1931 (void)j;
1932 for (j = i = 0; j < nr; j+=2, i++) {
1933 (out+j)[0] = (uint)in[i+1];
1934 (out+j)[1] = (uint)in[i];
1935 }
1936 }
1937 static void translate_lineloop_ubyte2uint_first2last(
1938 const void * _in,
1939 unsigned nr,
1940 void *_out )
1941 {
1942 const ubyte*in = (const ubyte*)_in;
1943 uint *out = (uint*)_out;
1944 unsigned i, j;
1945 (void)j;
1946 for (j = i = 0; j < nr - 2; j+=2, i++) {
1947 (out+j)[0] = (uint)in[i+1];
1948 (out+j)[1] = (uint)in[i];
1949 }
1950 (out+j)[0] = (uint)in[0];
1951 (out+j)[1] = (uint)in[i];
1952 }
1953 static void translate_tris_ubyte2uint_first2last(
1954 const void * _in,
1955 unsigned nr,
1956 void *_out )
1957 {
1958 const ubyte*in = (const ubyte*)_in;
1959 uint *out = (uint*)_out;
1960 unsigned i, j;
1961 (void)j;
1962 for (i = 0; i < nr; i+=3) {
1963 (out+i)[0] = (uint)in[i+1];
1964 (out+i)[1] = (uint)in[i+2];
1965 (out+i)[2] = (uint)in[i];
1966 }
1967 }
1968 static void translate_tristrip_ubyte2uint_first2last(
1969 const void * _in,
1970 unsigned nr,
1971 void *_out )
1972 {
1973 const ubyte*in = (const ubyte*)_in;
1974 uint *out = (uint*)_out;
1975 unsigned i, j;
1976 (void)j;
1977 for (j = i = 0; j < nr; j+=3, i++) {
1978 (out+j)[0] = (uint)in[i+1+(i&1)];
1979 (out+j)[1] = (uint)in[i+2-(i&1)];
1980 (out+j)[2] = (uint)in[i];
1981 }
1982 }
1983 static void translate_trifan_ubyte2uint_first2last(
1984 const void * _in,
1985 unsigned nr,
1986 void *_out )
1987 {
1988 const ubyte*in = (const ubyte*)_in;
1989 uint *out = (uint*)_out;
1990 unsigned i, j;
1991 (void)j;
1992 for (j = i = 0; j < nr; j+=3, i++) {
1993 (out+j)[0] = (uint)in[i+1];
1994 (out+j)[1] = (uint)in[i+2];
1995 (out+j)[2] = (uint)in[0];
1996 }
1997 }
1998 static void translate_quads_ubyte2uint_first2last(
1999 const void * _in,
2000 unsigned nr,
2001 void *_out )
2002 {
2003 const ubyte*in = (const ubyte*)_in;
2004 uint *out = (uint*)_out;
2005 unsigned i, j;
2006 (void)j;
2007 for (j = i = 0; j < nr; j+=6, i+=4) {
2008 (out+j+0)[0] = (uint)in[i+1];
2009 (out+j+0)[1] = (uint)in[i+3];
2010 (out+j+0)[2] = (uint)in[i+0];
2011 (out+j+3)[0] = (uint)in[i+2];
2012 (out+j+3)[1] = (uint)in[i+3];
2013 (out+j+3)[2] = (uint)in[i+1];
2014 }
2015 }
2016 static void translate_quadstrip_ubyte2uint_first2last(
2017 const void * _in,
2018 unsigned nr,
2019 void *_out )
2020 {
2021 const ubyte*in = (const ubyte*)_in;
2022 uint *out = (uint*)_out;
2023 unsigned i, j;
2024 (void)j;
2025 for (j = i = 0; j < nr; j+=6, i+=2) {
2026 (out+j+0)[0] = (uint)in[i+0];
2027 (out+j+0)[1] = (uint)in[i+3];
2028 (out+j+0)[2] = (uint)in[i+2];
2029 (out+j+3)[0] = (uint)in[i+1];
2030 (out+j+3)[1] = (uint)in[i+3];
2031 (out+j+3)[2] = (uint)in[i+0];
2032 }
2033 }
2034 static void translate_polygon_ubyte2uint_first2last(
2035 const void * _in,
2036 unsigned nr,
2037 void *_out )
2038 {
2039 const ubyte*in = (const ubyte*)_in;
2040 uint *out = (uint*)_out;
2041 unsigned i, j;
2042 (void)j;
2043 for (j = i = 0; j < nr; j+=3, i++) {
2044 (out+j)[0] = (uint)in[i+1];
2045 (out+j)[1] = (uint)in[i+2];
2046 (out+j)[2] = (uint)in[0];
2047 }
2048 }
2049 static void translate_points_ubyte2uint_last2first(
2050 const void * _in,
2051 unsigned nr,
2052 void *_out )
2053 {
2054 const ubyte*in = (const ubyte*)_in;
2055 uint *out = (uint*)_out;
2056 unsigned i, j;
2057 (void)j;
2058 for (i = 0; i < nr; i++) {
2059 (out+i)[0] = (uint)in[i];
2060 }
2061 }
2062 static void translate_lines_ubyte2uint_last2first(
2063 const void * _in,
2064 unsigned nr,
2065 void *_out )
2066 {
2067 const ubyte*in = (const ubyte*)_in;
2068 uint *out = (uint*)_out;
2069 unsigned i, j;
2070 (void)j;
2071 for (i = 0; i < nr; i+=2) {
2072 (out+i)[0] = (uint)in[i+1];
2073 (out+i)[1] = (uint)in[i];
2074 }
2075 }
2076 static void translate_linestrip_ubyte2uint_last2first(
2077 const void * _in,
2078 unsigned nr,
2079 void *_out )
2080 {
2081 const ubyte*in = (const ubyte*)_in;
2082 uint *out = (uint*)_out;
2083 unsigned i, j;
2084 (void)j;
2085 for (j = i = 0; j < nr; j+=2, i++) {
2086 (out+j)[0] = (uint)in[i+1];
2087 (out+j)[1] = (uint)in[i];
2088 }
2089 }
2090 static void translate_lineloop_ubyte2uint_last2first(
2091 const void * _in,
2092 unsigned nr,
2093 void *_out )
2094 {
2095 const ubyte*in = (const ubyte*)_in;
2096 uint *out = (uint*)_out;
2097 unsigned i, j;
2098 (void)j;
2099 for (j = i = 0; j < nr - 2; j+=2, i++) {
2100 (out+j)[0] = (uint)in[i+1];
2101 (out+j)[1] = (uint)in[i];
2102 }
2103 (out+j)[0] = (uint)in[0];
2104 (out+j)[1] = (uint)in[i];
2105 }
2106 static void translate_tris_ubyte2uint_last2first(
2107 const void * _in,
2108 unsigned nr,
2109 void *_out )
2110 {
2111 const ubyte*in = (const ubyte*)_in;
2112 uint *out = (uint*)_out;
2113 unsigned i, j;
2114 (void)j;
2115 for (i = 0; i < nr; i+=3) {
2116 (out+i)[0] = (uint)in[i+2];
2117 (out+i)[1] = (uint)in[i];
2118 (out+i)[2] = (uint)in[i+1];
2119 }
2120 }
2121 static void translate_tristrip_ubyte2uint_last2first(
2122 const void * _in,
2123 unsigned nr,
2124 void *_out )
2125 {
2126 const ubyte*in = (const ubyte*)_in;
2127 uint *out = (uint*)_out;
2128 unsigned i, j;
2129 (void)j;
2130 for (j = i = 0; j < nr; j+=3, i++) {
2131 (out+j)[0] = (uint)in[i+2];
2132 (out+j)[1] = (uint)in[i+(i&1)];
2133 (out+j)[2] = (uint)in[i+1-(i&1)];
2134 }
2135 }
2136 static void translate_trifan_ubyte2uint_last2first(
2137 const void * _in,
2138 unsigned nr,
2139 void *_out )
2140 {
2141 const ubyte*in = (const ubyte*)_in;
2142 uint *out = (uint*)_out;
2143 unsigned i, j;
2144 (void)j;
2145 for (j = i = 0; j < nr; j+=3, i++) {
2146 (out+j)[0] = (uint)in[i+2];
2147 (out+j)[1] = (uint)in[0];
2148 (out+j)[2] = (uint)in[i+1];
2149 }
2150 }
2151 static void translate_quads_ubyte2uint_last2first(
2152 const void * _in,
2153 unsigned nr,
2154 void *_out )
2155 {
2156 const ubyte*in = (const ubyte*)_in;
2157 uint *out = (uint*)_out;
2158 unsigned i, j;
2159 (void)j;
2160 for (j = i = 0; j < nr; j+=6, i+=4) {
2161 (out+j+0)[0] = (uint)in[i+3];
2162 (out+j+0)[1] = (uint)in[i+0];
2163 (out+j+0)[2] = (uint)in[i+1];
2164 (out+j+3)[0] = (uint)in[i+3];
2165 (out+j+3)[1] = (uint)in[i+1];
2166 (out+j+3)[2] = (uint)in[i+2];
2167 }
2168 }
2169 static void translate_quadstrip_ubyte2uint_last2first(
2170 const void * _in,
2171 unsigned nr,
2172 void *_out )
2173 {
2174 const ubyte*in = (const ubyte*)_in;
2175 uint *out = (uint*)_out;
2176 unsigned i, j;
2177 (void)j;
2178 for (j = i = 0; j < nr; j+=6, i+=2) {
2179 (out+j+0)[0] = (uint)in[i+3];
2180 (out+j+0)[1] = (uint)in[i+2];
2181 (out+j+0)[2] = (uint)in[i+0];
2182 (out+j+3)[0] = (uint)in[i+3];
2183 (out+j+3)[1] = (uint)in[i+0];
2184 (out+j+3)[2] = (uint)in[i+1];
2185 }
2186 }
2187 static void translate_polygon_ubyte2uint_last2first(
2188 const void * _in,
2189 unsigned nr,
2190 void *_out )
2191 {
2192 const ubyte*in = (const ubyte*)_in;
2193 uint *out = (uint*)_out;
2194 unsigned i, j;
2195 (void)j;
2196 for (j = i = 0; j < nr; j+=3, i++) {
2197 (out+j)[0] = (uint)in[0];
2198 (out+j)[1] = (uint)in[i+1];
2199 (out+j)[2] = (uint)in[i+2];
2200 }
2201 }
2202 static void translate_points_ubyte2uint_last2last(
2203 const void * _in,
2204 unsigned nr,
2205 void *_out )
2206 {
2207 const ubyte*in = (const ubyte*)_in;
2208 uint *out = (uint*)_out;
2209 unsigned i, j;
2210 (void)j;
2211 for (i = 0; i < nr; i++) {
2212 (out+i)[0] = (uint)in[i];
2213 }
2214 }
2215 static void translate_lines_ubyte2uint_last2last(
2216 const void * _in,
2217 unsigned nr,
2218 void *_out )
2219 {
2220 const ubyte*in = (const ubyte*)_in;
2221 uint *out = (uint*)_out;
2222 unsigned i, j;
2223 (void)j;
2224 for (i = 0; i < nr; i+=2) {
2225 (out+i)[0] = (uint)in[i];
2226 (out+i)[1] = (uint)in[i+1];
2227 }
2228 }
2229 static void translate_linestrip_ubyte2uint_last2last(
2230 const void * _in,
2231 unsigned nr,
2232 void *_out )
2233 {
2234 const ubyte*in = (const ubyte*)_in;
2235 uint *out = (uint*)_out;
2236 unsigned i, j;
2237 (void)j;
2238 for (j = i = 0; j < nr; j+=2, i++) {
2239 (out+j)[0] = (uint)in[i];
2240 (out+j)[1] = (uint)in[i+1];
2241 }
2242 }
2243 static void translate_lineloop_ubyte2uint_last2last(
2244 const void * _in,
2245 unsigned nr,
2246 void *_out )
2247 {
2248 const ubyte*in = (const ubyte*)_in;
2249 uint *out = (uint*)_out;
2250 unsigned i, j;
2251 (void)j;
2252 for (j = i = 0; j < nr - 2; j+=2, i++) {
2253 (out+j)[0] = (uint)in[i];
2254 (out+j)[1] = (uint)in[i+1];
2255 }
2256 (out+j)[0] = (uint)in[i];
2257 (out+j)[1] = (uint)in[0];
2258 }
2259 static void translate_tris_ubyte2uint_last2last(
2260 const void * _in,
2261 unsigned nr,
2262 void *_out )
2263 {
2264 const ubyte*in = (const ubyte*)_in;
2265 uint *out = (uint*)_out;
2266 unsigned i, j;
2267 (void)j;
2268 for (i = 0; i < nr; i+=3) {
2269 (out+i)[0] = (uint)in[i];
2270 (out+i)[1] = (uint)in[i+1];
2271 (out+i)[2] = (uint)in[i+2];
2272 }
2273 }
2274 static void translate_tristrip_ubyte2uint_last2last(
2275 const void * _in,
2276 unsigned nr,
2277 void *_out )
2278 {
2279 const ubyte*in = (const ubyte*)_in;
2280 uint *out = (uint*)_out;
2281 unsigned i, j;
2282 (void)j;
2283 for (j = i = 0; j < nr; j+=3, i++) {
2284 (out+j)[0] = (uint)in[i+(i&1)];
2285 (out+j)[1] = (uint)in[i+1-(i&1)];
2286 (out+j)[2] = (uint)in[i+2];
2287 }
2288 }
2289 static void translate_trifan_ubyte2uint_last2last(
2290 const void * _in,
2291 unsigned nr,
2292 void *_out )
2293 {
2294 const ubyte*in = (const ubyte*)_in;
2295 uint *out = (uint*)_out;
2296 unsigned i, j;
2297 (void)j;
2298 for (j = i = 0; j < nr; j+=3, i++) {
2299 (out+j)[0] = (uint)in[0];
2300 (out+j)[1] = (uint)in[i+1];
2301 (out+j)[2] = (uint)in[i+2];
2302 }
2303 }
2304 static void translate_quads_ubyte2uint_last2last(
2305 const void * _in,
2306 unsigned nr,
2307 void *_out )
2308 {
2309 const ubyte*in = (const ubyte*)_in;
2310 uint *out = (uint*)_out;
2311 unsigned i, j;
2312 (void)j;
2313 for (j = i = 0; j < nr; j+=6, i+=4) {
2314 (out+j+0)[0] = (uint)in[i+0];
2315 (out+j+0)[1] = (uint)in[i+1];
2316 (out+j+0)[2] = (uint)in[i+3];
2317 (out+j+3)[0] = (uint)in[i+1];
2318 (out+j+3)[1] = (uint)in[i+2];
2319 (out+j+3)[2] = (uint)in[i+3];
2320 }
2321 }
2322 static void translate_quadstrip_ubyte2uint_last2last(
2323 const void * _in,
2324 unsigned nr,
2325 void *_out )
2326 {
2327 const ubyte*in = (const ubyte*)_in;
2328 uint *out = (uint*)_out;
2329 unsigned i, j;
2330 (void)j;
2331 for (j = i = 0; j < nr; j+=6, i+=2) {
2332 (out+j+0)[0] = (uint)in[i+2];
2333 (out+j+0)[1] = (uint)in[i+0];
2334 (out+j+0)[2] = (uint)in[i+3];
2335 (out+j+3)[0] = (uint)in[i+0];
2336 (out+j+3)[1] = (uint)in[i+1];
2337 (out+j+3)[2] = (uint)in[i+3];
2338 }
2339 }
2340 static void translate_polygon_ubyte2uint_last2last(
2341 const void * _in,
2342 unsigned nr,
2343 void *_out )
2344 {
2345 const ubyte*in = (const ubyte*)_in;
2346 uint *out = (uint*)_out;
2347 unsigned i, j;
2348 (void)j;
2349 for (j = i = 0; j < nr; j+=3, i++) {
2350 (out+j)[0] = (uint)in[i+1];
2351 (out+j)[1] = (uint)in[i+2];
2352 (out+j)[2] = (uint)in[0];
2353 }
2354 }
2355 static void translate_points_ushort2ushort_first2first(
2356 const void * _in,
2357 unsigned nr,
2358 void *_out )
2359 {
2360 const ushort*in = (const ushort*)_in;
2361 ushort *out = (ushort*)_out;
2362 unsigned i, j;
2363 (void)j;
2364 for (i = 0; i < nr; i++) {
2365 (out+i)[0] = (ushort)in[i];
2366 }
2367 }
2368 static void translate_lines_ushort2ushort_first2first(
2369 const void * _in,
2370 unsigned nr,
2371 void *_out )
2372 {
2373 const ushort*in = (const ushort*)_in;
2374 ushort *out = (ushort*)_out;
2375 unsigned i, j;
2376 (void)j;
2377 for (i = 0; i < nr; i+=2) {
2378 (out+i)[0] = (ushort)in[i];
2379 (out+i)[1] = (ushort)in[i+1];
2380 }
2381 }
2382 static void translate_linestrip_ushort2ushort_first2first(
2383 const void * _in,
2384 unsigned nr,
2385 void *_out )
2386 {
2387 const ushort*in = (const ushort*)_in;
2388 ushort *out = (ushort*)_out;
2389 unsigned i, j;
2390 (void)j;
2391 for (j = i = 0; j < nr; j+=2, i++) {
2392 (out+j)[0] = (ushort)in[i];
2393 (out+j)[1] = (ushort)in[i+1];
2394 }
2395 }
2396 static void translate_lineloop_ushort2ushort_first2first(
2397 const void * _in,
2398 unsigned nr,
2399 void *_out )
2400 {
2401 const ushort*in = (const ushort*)_in;
2402 ushort *out = (ushort*)_out;
2403 unsigned i, j;
2404 (void)j;
2405 for (j = i = 0; j < nr - 2; j+=2, i++) {
2406 (out+j)[0] = (ushort)in[i];
2407 (out+j)[1] = (ushort)in[i+1];
2408 }
2409 (out+j)[0] = (ushort)in[i];
2410 (out+j)[1] = (ushort)in[0];
2411 }
2412 static void translate_tris_ushort2ushort_first2first(
2413 const void * _in,
2414 unsigned nr,
2415 void *_out )
2416 {
2417 const ushort*in = (const ushort*)_in;
2418 ushort *out = (ushort*)_out;
2419 unsigned i, j;
2420 (void)j;
2421 for (i = 0; i < nr; i+=3) {
2422 (out+i)[0] = (ushort)in[i];
2423 (out+i)[1] = (ushort)in[i+1];
2424 (out+i)[2] = (ushort)in[i+2];
2425 }
2426 }
2427 static void translate_tristrip_ushort2ushort_first2first(
2428 const void * _in,
2429 unsigned nr,
2430 void *_out )
2431 {
2432 const ushort*in = (const ushort*)_in;
2433 ushort *out = (ushort*)_out;
2434 unsigned i, j;
2435 (void)j;
2436 for (j = i = 0; j < nr; j+=3, i++) {
2437 (out+j)[0] = (ushort)in[i];
2438 (out+j)[1] = (ushort)in[i+1+(i&1)];
2439 (out+j)[2] = (ushort)in[i+2-(i&1)];
2440 }
2441 }
2442 static void translate_trifan_ushort2ushort_first2first(
2443 const void * _in,
2444 unsigned nr,
2445 void *_out )
2446 {
2447 const ushort*in = (const ushort*)_in;
2448 ushort *out = (ushort*)_out;
2449 unsigned i, j;
2450 (void)j;
2451 for (j = i = 0; j < nr; j+=3, i++) {
2452 (out+j)[0] = (ushort)in[0];
2453 (out+j)[1] = (ushort)in[i+1];
2454 (out+j)[2] = (ushort)in[i+2];
2455 }
2456 }
2457 static void translate_quads_ushort2ushort_first2first(
2458 const void * _in,
2459 unsigned nr,
2460 void *_out )
2461 {
2462 const ushort*in = (const ushort*)_in;
2463 ushort *out = (ushort*)_out;
2464 unsigned i, j;
2465 (void)j;
2466 for (j = i = 0; j < nr; j+=6, i+=4) {
2467 (out+j+0)[0] = (ushort)in[i+0];
2468 (out+j+0)[1] = (ushort)in[i+1];
2469 (out+j+0)[2] = (ushort)in[i+3];
2470 (out+j+3)[0] = (ushort)in[i+1];
2471 (out+j+3)[1] = (ushort)in[i+2];
2472 (out+j+3)[2] = (ushort)in[i+3];
2473 }
2474 }
2475 static void translate_quadstrip_ushort2ushort_first2first(
2476 const void * _in,
2477 unsigned nr,
2478 void *_out )
2479 {
2480 const ushort*in = (const ushort*)_in;
2481 ushort *out = (ushort*)_out;
2482 unsigned i, j;
2483 (void)j;
2484 for (j = i = 0; j < nr; j+=6, i+=2) {
2485 (out+j+0)[0] = (ushort)in[i+2];
2486 (out+j+0)[1] = (ushort)in[i+0];
2487 (out+j+0)[2] = (ushort)in[i+3];
2488 (out+j+3)[0] = (ushort)in[i+0];
2489 (out+j+3)[1] = (ushort)in[i+1];
2490 (out+j+3)[2] = (ushort)in[i+3];
2491 }
2492 }
2493 static void translate_polygon_ushort2ushort_first2first(
2494 const void * _in,
2495 unsigned nr,
2496 void *_out )
2497 {
2498 const ushort*in = (const ushort*)_in;
2499 ushort *out = (ushort*)_out;
2500 unsigned i, j;
2501 (void)j;
2502 for (j = i = 0; j < nr; j+=3, i++) {
2503 (out+j)[0] = (ushort)in[0];
2504 (out+j)[1] = (ushort)in[i+1];
2505 (out+j)[2] = (ushort)in[i+2];
2506 }
2507 }
2508 static void translate_points_ushort2ushort_first2last(
2509 const void * _in,
2510 unsigned nr,
2511 void *_out )
2512 {
2513 const ushort*in = (const ushort*)_in;
2514 ushort *out = (ushort*)_out;
2515 unsigned i, j;
2516 (void)j;
2517 for (i = 0; i < nr; i++) {
2518 (out+i)[0] = (ushort)in[i];
2519 }
2520 }
2521 static void translate_lines_ushort2ushort_first2last(
2522 const void * _in,
2523 unsigned nr,
2524 void *_out )
2525 {
2526 const ushort*in = (const ushort*)_in;
2527 ushort *out = (ushort*)_out;
2528 unsigned i, j;
2529 (void)j;
2530 for (i = 0; i < nr; i+=2) {
2531 (out+i)[0] = (ushort)in[i+1];
2532 (out+i)[1] = (ushort)in[i];
2533 }
2534 }
2535 static void translate_linestrip_ushort2ushort_first2last(
2536 const void * _in,
2537 unsigned nr,
2538 void *_out )
2539 {
2540 const ushort*in = (const ushort*)_in;
2541 ushort *out = (ushort*)_out;
2542 unsigned i, j;
2543 (void)j;
2544 for (j = i = 0; j < nr; j+=2, i++) {
2545 (out+j)[0] = (ushort)in[i+1];
2546 (out+j)[1] = (ushort)in[i];
2547 }
2548 }
2549 static void translate_lineloop_ushort2ushort_first2last(
2550 const void * _in,
2551 unsigned nr,
2552 void *_out )
2553 {
2554 const ushort*in = (const ushort*)_in;
2555 ushort *out = (ushort*)_out;
2556 unsigned i, j;
2557 (void)j;
2558 for (j = i = 0; j < nr - 2; j+=2, i++) {
2559 (out+j)[0] = (ushort)in[i+1];
2560 (out+j)[1] = (ushort)in[i];
2561 }
2562 (out+j)[0] = (ushort)in[0];
2563 (out+j)[1] = (ushort)in[i];
2564 }
2565 static void translate_tris_ushort2ushort_first2last(
2566 const void * _in,
2567 unsigned nr,
2568 void *_out )
2569 {
2570 const ushort*in = (const ushort*)_in;
2571 ushort *out = (ushort*)_out;
2572 unsigned i, j;
2573 (void)j;
2574 for (i = 0; i < nr; i+=3) {
2575 (out+i)[0] = (ushort)in[i+1];
2576 (out+i)[1] = (ushort)in[i+2];
2577 (out+i)[2] = (ushort)in[i];
2578 }
2579 }
2580 static void translate_tristrip_ushort2ushort_first2last(
2581 const void * _in,
2582 unsigned nr,
2583 void *_out )
2584 {
2585 const ushort*in = (const ushort*)_in;
2586 ushort *out = (ushort*)_out;
2587 unsigned i, j;
2588 (void)j;
2589 for (j = i = 0; j < nr; j+=3, i++) {
2590 (out+j)[0] = (ushort)in[i+1+(i&1)];
2591 (out+j)[1] = (ushort)in[i+2-(i&1)];
2592 (out+j)[2] = (ushort)in[i];
2593 }
2594 }
2595 static void translate_trifan_ushort2ushort_first2last(
2596 const void * _in,
2597 unsigned nr,
2598 void *_out )
2599 {
2600 const ushort*in = (const ushort*)_in;
2601 ushort *out = (ushort*)_out;
2602 unsigned i, j;
2603 (void)j;
2604 for (j = i = 0; j < nr; j+=3, i++) {
2605 (out+j)[0] = (ushort)in[i+1];
2606 (out+j)[1] = (ushort)in[i+2];
2607 (out+j)[2] = (ushort)in[0];
2608 }
2609 }
2610 static void translate_quads_ushort2ushort_first2last(
2611 const void * _in,
2612 unsigned nr,
2613 void *_out )
2614 {
2615 const ushort*in = (const ushort*)_in;
2616 ushort *out = (ushort*)_out;
2617 unsigned i, j;
2618 (void)j;
2619 for (j = i = 0; j < nr; j+=6, i+=4) {
2620 (out+j+0)[0] = (ushort)in[i+1];
2621 (out+j+0)[1] = (ushort)in[i+3];
2622 (out+j+0)[2] = (ushort)in[i+0];
2623 (out+j+3)[0] = (ushort)in[i+2];
2624 (out+j+3)[1] = (ushort)in[i+3];
2625 (out+j+3)[2] = (ushort)in[i+1];
2626 }
2627 }
2628 static void translate_quadstrip_ushort2ushort_first2last(
2629 const void * _in,
2630 unsigned nr,
2631 void *_out )
2632 {
2633 const ushort*in = (const ushort*)_in;
2634 ushort *out = (ushort*)_out;
2635 unsigned i, j;
2636 (void)j;
2637 for (j = i = 0; j < nr; j+=6, i+=2) {
2638 (out+j+0)[0] = (ushort)in[i+0];
2639 (out+j+0)[1] = (ushort)in[i+3];
2640 (out+j+0)[2] = (ushort)in[i+2];
2641 (out+j+3)[0] = (ushort)in[i+1];
2642 (out+j+3)[1] = (ushort)in[i+3];
2643 (out+j+3)[2] = (ushort)in[i+0];
2644 }
2645 }
2646 static void translate_polygon_ushort2ushort_first2last(
2647 const void * _in,
2648 unsigned nr,
2649 void *_out )
2650 {
2651 const ushort*in = (const ushort*)_in;
2652 ushort *out = (ushort*)_out;
2653 unsigned i, j;
2654 (void)j;
2655 for (j = i = 0; j < nr; j+=3, i++) {
2656 (out+j)[0] = (ushort)in[i+1];
2657 (out+j)[1] = (ushort)in[i+2];
2658 (out+j)[2] = (ushort)in[0];
2659 }
2660 }
2661 static void translate_points_ushort2ushort_last2first(
2662 const void * _in,
2663 unsigned nr,
2664 void *_out )
2665 {
2666 const ushort*in = (const ushort*)_in;
2667 ushort *out = (ushort*)_out;
2668 unsigned i, j;
2669 (void)j;
2670 for (i = 0; i < nr; i++) {
2671 (out+i)[0] = (ushort)in[i];
2672 }
2673 }
2674 static void translate_lines_ushort2ushort_last2first(
2675 const void * _in,
2676 unsigned nr,
2677 void *_out )
2678 {
2679 const ushort*in = (const ushort*)_in;
2680 ushort *out = (ushort*)_out;
2681 unsigned i, j;
2682 (void)j;
2683 for (i = 0; i < nr; i+=2) {
2684 (out+i)[0] = (ushort)in[i+1];
2685 (out+i)[1] = (ushort)in[i];
2686 }
2687 }
2688 static void translate_linestrip_ushort2ushort_last2first(
2689 const void * _in,
2690 unsigned nr,
2691 void *_out )
2692 {
2693 const ushort*in = (const ushort*)_in;
2694 ushort *out = (ushort*)_out;
2695 unsigned i, j;
2696 (void)j;
2697 for (j = i = 0; j < nr; j+=2, i++) {
2698 (out+j)[0] = (ushort)in[i+1];
2699 (out+j)[1] = (ushort)in[i];
2700 }
2701 }
2702 static void translate_lineloop_ushort2ushort_last2first(
2703 const void * _in,
2704 unsigned nr,
2705 void *_out )
2706 {
2707 const ushort*in = (const ushort*)_in;
2708 ushort *out = (ushort*)_out;
2709 unsigned i, j;
2710 (void)j;
2711 for (j = i = 0; j < nr - 2; j+=2, i++) {
2712 (out+j)[0] = (ushort)in[i+1];
2713 (out+j)[1] = (ushort)in[i];
2714 }
2715 (out+j)[0] = (ushort)in[0];
2716 (out+j)[1] = (ushort)in[i];
2717 }
2718 static void translate_tris_ushort2ushort_last2first(
2719 const void * _in,
2720 unsigned nr,
2721 void *_out )
2722 {
2723 const ushort*in = (const ushort*)_in;
2724 ushort *out = (ushort*)_out;
2725 unsigned i, j;
2726 (void)j;
2727 for (i = 0; i < nr; i+=3) {
2728 (out+i)[0] = (ushort)in[i+2];
2729 (out+i)[1] = (ushort)in[i];
2730 (out+i)[2] = (ushort)in[i+1];
2731 }
2732 }
2733 static void translate_tristrip_ushort2ushort_last2first(
2734 const void * _in,
2735 unsigned nr,
2736 void *_out )
2737 {
2738 const ushort*in = (const ushort*)_in;
2739 ushort *out = (ushort*)_out;
2740 unsigned i, j;
2741 (void)j;
2742 for (j = i = 0; j < nr; j+=3, i++) {
2743 (out+j)[0] = (ushort)in[i+2];
2744 (out+j)[1] = (ushort)in[i+(i&1)];
2745 (out+j)[2] = (ushort)in[i+1-(i&1)];
2746 }
2747 }
2748 static void translate_trifan_ushort2ushort_last2first(
2749 const void * _in,
2750 unsigned nr,
2751 void *_out )
2752 {
2753 const ushort*in = (const ushort*)_in;
2754 ushort *out = (ushort*)_out;
2755 unsigned i, j;
2756 (void)j;
2757 for (j = i = 0; j < nr; j+=3, i++) {
2758 (out+j)[0] = (ushort)in[i+2];
2759 (out+j)[1] = (ushort)in[0];
2760 (out+j)[2] = (ushort)in[i+1];
2761 }
2762 }
2763 static void translate_quads_ushort2ushort_last2first(
2764 const void * _in,
2765 unsigned nr,
2766 void *_out )
2767 {
2768 const ushort*in = (const ushort*)_in;
2769 ushort *out = (ushort*)_out;
2770 unsigned i, j;
2771 (void)j;
2772 for (j = i = 0; j < nr; j+=6, i+=4) {
2773 (out+j+0)[0] = (ushort)in[i+3];
2774 (out+j+0)[1] = (ushort)in[i+0];
2775 (out+j+0)[2] = (ushort)in[i+1];
2776 (out+j+3)[0] = (ushort)in[i+3];
2777 (out+j+3)[1] = (ushort)in[i+1];
2778 (out+j+3)[2] = (ushort)in[i+2];
2779 }
2780 }
2781 static void translate_quadstrip_ushort2ushort_last2first(
2782 const void * _in,
2783 unsigned nr,
2784 void *_out )
2785 {
2786 const ushort*in = (const ushort*)_in;
2787 ushort *out = (ushort*)_out;
2788 unsigned i, j;
2789 (void)j;
2790 for (j = i = 0; j < nr; j+=6, i+=2) {
2791 (out+j+0)[0] = (ushort)in[i+3];
2792 (out+j+0)[1] = (ushort)in[i+2];
2793 (out+j+0)[2] = (ushort)in[i+0];
2794 (out+j+3)[0] = (ushort)in[i+3];
2795 (out+j+3)[1] = (ushort)in[i+0];
2796 (out+j+3)[2] = (ushort)in[i+1];
2797 }
2798 }
2799 static void translate_polygon_ushort2ushort_last2first(
2800 const void * _in,
2801 unsigned nr,
2802 void *_out )
2803 {
2804 const ushort*in = (const ushort*)_in;
2805 ushort *out = (ushort*)_out;
2806 unsigned i, j;
2807 (void)j;
2808 for (j = i = 0; j < nr; j+=3, i++) {
2809 (out+j)[0] = (ushort)in[0];
2810 (out+j)[1] = (ushort)in[i+1];
2811 (out+j)[2] = (ushort)in[i+2];
2812 }
2813 }
2814 static void translate_points_ushort2ushort_last2last(
2815 const void * _in,
2816 unsigned nr,
2817 void *_out )
2818 {
2819 const ushort*in = (const ushort*)_in;
2820 ushort *out = (ushort*)_out;
2821 unsigned i, j;
2822 (void)j;
2823 for (i = 0; i < nr; i++) {
2824 (out+i)[0] = (ushort)in[i];
2825 }
2826 }
2827 static void translate_lines_ushort2ushort_last2last(
2828 const void * _in,
2829 unsigned nr,
2830 void *_out )
2831 {
2832 const ushort*in = (const ushort*)_in;
2833 ushort *out = (ushort*)_out;
2834 unsigned i, j;
2835 (void)j;
2836 for (i = 0; i < nr; i+=2) {
2837 (out+i)[0] = (ushort)in[i];
2838 (out+i)[1] = (ushort)in[i+1];
2839 }
2840 }
2841 static void translate_linestrip_ushort2ushort_last2last(
2842 const void * _in,
2843 unsigned nr,
2844 void *_out )
2845 {
2846 const ushort*in = (const ushort*)_in;
2847 ushort *out = (ushort*)_out;
2848 unsigned i, j;
2849 (void)j;
2850 for (j = i = 0; j < nr; j+=2, i++) {
2851 (out+j)[0] = (ushort)in[i];
2852 (out+j)[1] = (ushort)in[i+1];
2853 }
2854 }
2855 static void translate_lineloop_ushort2ushort_last2last(
2856 const void * _in,
2857 unsigned nr,
2858 void *_out )
2859 {
2860 const ushort*in = (const ushort*)_in;
2861 ushort *out = (ushort*)_out;
2862 unsigned i, j;
2863 (void)j;
2864 for (j = i = 0; j < nr - 2; j+=2, i++) {
2865 (out+j)[0] = (ushort)in[i];
2866 (out+j)[1] = (ushort)in[i+1];
2867 }
2868 (out+j)[0] = (ushort)in[i];
2869 (out+j)[1] = (ushort)in[0];
2870 }
2871 static void translate_tris_ushort2ushort_last2last(
2872 const void * _in,
2873 unsigned nr,
2874 void *_out )
2875 {
2876 const ushort*in = (const ushort*)_in;
2877 ushort *out = (ushort*)_out;
2878 unsigned i, j;
2879 (void)j;
2880 for (i = 0; i < nr; i+=3) {
2881 (out+i)[0] = (ushort)in[i];
2882 (out+i)[1] = (ushort)in[i+1];
2883 (out+i)[2] = (ushort)in[i+2];
2884 }
2885 }
2886 static void translate_tristrip_ushort2ushort_last2last(
2887 const void * _in,
2888 unsigned nr,
2889 void *_out )
2890 {
2891 const ushort*in = (const ushort*)_in;
2892 ushort *out = (ushort*)_out;
2893 unsigned i, j;
2894 (void)j;
2895 for (j = i = 0; j < nr; j+=3, i++) {
2896 (out+j)[0] = (ushort)in[i+(i&1)];
2897 (out+j)[1] = (ushort)in[i+1-(i&1)];
2898 (out+j)[2] = (ushort)in[i+2];
2899 }
2900 }
2901 static void translate_trifan_ushort2ushort_last2last(
2902 const void * _in,
2903 unsigned nr,
2904 void *_out )
2905 {
2906 const ushort*in = (const ushort*)_in;
2907 ushort *out = (ushort*)_out;
2908 unsigned i, j;
2909 (void)j;
2910 for (j = i = 0; j < nr; j+=3, i++) {
2911 (out+j)[0] = (ushort)in[0];
2912 (out+j)[1] = (ushort)in[i+1];
2913 (out+j)[2] = (ushort)in[i+2];
2914 }
2915 }
2916 static void translate_quads_ushort2ushort_last2last(
2917 const void * _in,
2918 unsigned nr,
2919 void *_out )
2920 {
2921 const ushort*in = (const ushort*)_in;
2922 ushort *out = (ushort*)_out;
2923 unsigned i, j;
2924 (void)j;
2925 for (j = i = 0; j < nr; j+=6, i+=4) {
2926 (out+j+0)[0] = (ushort)in[i+0];
2927 (out+j+0)[1] = (ushort)in[i+1];
2928 (out+j+0)[2] = (ushort)in[i+3];
2929 (out+j+3)[0] = (ushort)in[i+1];
2930 (out+j+3)[1] = (ushort)in[i+2];
2931 (out+j+3)[2] = (ushort)in[i+3];
2932 }
2933 }
2934 static void translate_quadstrip_ushort2ushort_last2last(
2935 const void * _in,
2936 unsigned nr,
2937 void *_out )
2938 {
2939 const ushort*in = (const ushort*)_in;
2940 ushort *out = (ushort*)_out;
2941 unsigned i, j;
2942 (void)j;
2943 for (j = i = 0; j < nr; j+=6, i+=2) {
2944 (out+j+0)[0] = (ushort)in[i+2];
2945 (out+j+0)[1] = (ushort)in[i+0];
2946 (out+j+0)[2] = (ushort)in[i+3];
2947 (out+j+3)[0] = (ushort)in[i+0];
2948 (out+j+3)[1] = (ushort)in[i+1];
2949 (out+j+3)[2] = (ushort)in[i+3];
2950 }
2951 }
2952 static void translate_polygon_ushort2ushort_last2last(
2953 const void * _in,
2954 unsigned nr,
2955 void *_out )
2956 {
2957 const ushort*in = (const ushort*)_in;
2958 ushort *out = (ushort*)_out;
2959 unsigned i, j;
2960 (void)j;
2961 for (j = i = 0; j < nr; j+=3, i++) {
2962 (out+j)[0] = (ushort)in[i+1];
2963 (out+j)[1] = (ushort)in[i+2];
2964 (out+j)[2] = (ushort)in[0];
2965 }
2966 }
2967 static void translate_points_ushort2uint_first2first(
2968 const void * _in,
2969 unsigned nr,
2970 void *_out )
2971 {
2972 const ushort*in = (const ushort*)_in;
2973 uint *out = (uint*)_out;
2974 unsigned i, j;
2975 (void)j;
2976 for (i = 0; i < nr; i++) {
2977 (out+i)[0] = (uint)in[i];
2978 }
2979 }
2980 static void translate_lines_ushort2uint_first2first(
2981 const void * _in,
2982 unsigned nr,
2983 void *_out )
2984 {
2985 const ushort*in = (const ushort*)_in;
2986 uint *out = (uint*)_out;
2987 unsigned i, j;
2988 (void)j;
2989 for (i = 0; i < nr; i+=2) {
2990 (out+i)[0] = (uint)in[i];
2991 (out+i)[1] = (uint)in[i+1];
2992 }
2993 }
2994 static void translate_linestrip_ushort2uint_first2first(
2995 const void * _in,
2996 unsigned nr,
2997 void *_out )
2998 {
2999 const ushort*in = (const ushort*)_in;
3000 uint *out = (uint*)_out;
3001 unsigned i, j;
3002 (void)j;
3003 for (j = i = 0; j < nr; j+=2, i++) {
3004 (out+j)[0] = (uint)in[i];
3005 (out+j)[1] = (uint)in[i+1];
3006 }
3007 }
3008 static void translate_lineloop_ushort2uint_first2first(
3009 const void * _in,
3010 unsigned nr,
3011 void *_out )
3012 {
3013 const ushort*in = (const ushort*)_in;
3014 uint *out = (uint*)_out;
3015 unsigned i, j;
3016 (void)j;
3017 for (j = i = 0; j < nr - 2; j+=2, i++) {
3018 (out+j)[0] = (uint)in[i];
3019 (out+j)[1] = (uint)in[i+1];
3020 }
3021 (out+j)[0] = (uint)in[i];
3022 (out+j)[1] = (uint)in[0];
3023 }
3024 static void translate_tris_ushort2uint_first2first(
3025 const void * _in,
3026 unsigned nr,
3027 void *_out )
3028 {
3029 const ushort*in = (const ushort*)_in;
3030 uint *out = (uint*)_out;
3031 unsigned i, j;
3032 (void)j;
3033 for (i = 0; i < nr; i+=3) {
3034 (out+i)[0] = (uint)in[i];
3035 (out+i)[1] = (uint)in[i+1];
3036 (out+i)[2] = (uint)in[i+2];
3037 }
3038 }
3039 static void translate_tristrip_ushort2uint_first2first(
3040 const void * _in,
3041 unsigned nr,
3042 void *_out )
3043 {
3044 const ushort*in = (const ushort*)_in;
3045 uint *out = (uint*)_out;
3046 unsigned i, j;
3047 (void)j;
3048 for (j = i = 0; j < nr; j+=3, i++) {
3049 (out+j)[0] = (uint)in[i];
3050 (out+j)[1] = (uint)in[i+1+(i&1)];
3051 (out+j)[2] = (uint)in[i+2-(i&1)];
3052 }
3053 }
3054 static void translate_trifan_ushort2uint_first2first(
3055 const void * _in,
3056 unsigned nr,
3057 void *_out )
3058 {
3059 const ushort*in = (const ushort*)_in;
3060 uint *out = (uint*)_out;
3061 unsigned i, j;
3062 (void)j;
3063 for (j = i = 0; j < nr; j+=3, i++) {
3064 (out+j)[0] = (uint)in[0];
3065 (out+j)[1] = (uint)in[i+1];
3066 (out+j)[2] = (uint)in[i+2];
3067 }
3068 }
3069 static void translate_quads_ushort2uint_first2first(
3070 const void * _in,
3071 unsigned nr,
3072 void *_out )
3073 {
3074 const ushort*in = (const ushort*)_in;
3075 uint *out = (uint*)_out;
3076 unsigned i, j;
3077 (void)j;
3078 for (j = i = 0; j < nr; j+=6, i+=4) {
3079 (out+j+0)[0] = (uint)in[i+0];
3080 (out+j+0)[1] = (uint)in[i+1];
3081 (out+j+0)[2] = (uint)in[i+3];
3082 (out+j+3)[0] = (uint)in[i+1];
3083 (out+j+3)[1] = (uint)in[i+2];
3084 (out+j+3)[2] = (uint)in[i+3];
3085 }
3086 }
3087 static void translate_quadstrip_ushort2uint_first2first(
3088 const void * _in,
3089 unsigned nr,
3090 void *_out )
3091 {
3092 const ushort*in = (const ushort*)_in;
3093 uint *out = (uint*)_out;
3094 unsigned i, j;
3095 (void)j;
3096 for (j = i = 0; j < nr; j+=6, i+=2) {
3097 (out+j+0)[0] = (uint)in[i+2];
3098 (out+j+0)[1] = (uint)in[i+0];
3099 (out+j+0)[2] = (uint)in[i+3];
3100 (out+j+3)[0] = (uint)in[i+0];
3101 (out+j+3)[1] = (uint)in[i+1];
3102 (out+j+3)[2] = (uint)in[i+3];
3103 }
3104 }
3105 static void translate_polygon_ushort2uint_first2first(
3106 const void * _in,
3107 unsigned nr,
3108 void *_out )
3109 {
3110 const ushort*in = (const ushort*)_in;
3111 uint *out = (uint*)_out;
3112 unsigned i, j;
3113 (void)j;
3114 for (j = i = 0; j < nr; j+=3, i++) {
3115 (out+j)[0] = (uint)in[0];
3116 (out+j)[1] = (uint)in[i+1];
3117 (out+j)[2] = (uint)in[i+2];
3118 }
3119 }
3120 static void translate_points_ushort2uint_first2last(
3121 const void * _in,
3122 unsigned nr,
3123 void *_out )
3124 {
3125 const ushort*in = (const ushort*)_in;
3126 uint *out = (uint*)_out;
3127 unsigned i, j;
3128 (void)j;
3129 for (i = 0; i < nr; i++) {
3130 (out+i)[0] = (uint)in[i];
3131 }
3132 }
3133 static void translate_lines_ushort2uint_first2last(
3134 const void * _in,
3135 unsigned nr,
3136 void *_out )
3137 {
3138 const ushort*in = (const ushort*)_in;
3139 uint *out = (uint*)_out;
3140 unsigned i, j;
3141 (void)j;
3142 for (i = 0; i < nr; i+=2) {
3143 (out+i)[0] = (uint)in[i+1];
3144 (out+i)[1] = (uint)in[i];
3145 }
3146 }
3147 static void translate_linestrip_ushort2uint_first2last(
3148 const void * _in,
3149 unsigned nr,
3150 void *_out )
3151 {
3152 const ushort*in = (const ushort*)_in;
3153 uint *out = (uint*)_out;
3154 unsigned i, j;
3155 (void)j;
3156 for (j = i = 0; j < nr; j+=2, i++) {
3157 (out+j)[0] = (uint)in[i+1];
3158 (out+j)[1] = (uint)in[i];
3159 }
3160 }
3161 static void translate_lineloop_ushort2uint_first2last(
3162 const void * _in,
3163 unsigned nr,
3164 void *_out )
3165 {
3166 const ushort*in = (const ushort*)_in;
3167 uint *out = (uint*)_out;
3168 unsigned i, j;
3169 (void)j;
3170 for (j = i = 0; j < nr - 2; j+=2, i++) {
3171 (out+j)[0] = (uint)in[i+1];
3172 (out+j)[1] = (uint)in[i];
3173 }
3174 (out+j)[0] = (uint)in[0];
3175 (out+j)[1] = (uint)in[i];
3176 }
3177 static void translate_tris_ushort2uint_first2last(
3178 const void * _in,
3179 unsigned nr,
3180 void *_out )
3181 {
3182 const ushort*in = (const ushort*)_in;
3183 uint *out = (uint*)_out;
3184 unsigned i, j;
3185 (void)j;
3186 for (i = 0; i < nr; i+=3) {
3187 (out+i)[0] = (uint)in[i+1];
3188 (out+i)[1] = (uint)in[i+2];
3189 (out+i)[2] = (uint)in[i];
3190 }
3191 }
3192 static void translate_tristrip_ushort2uint_first2last(
3193 const void * _in,
3194 unsigned nr,
3195 void *_out )
3196 {
3197 const ushort*in = (const ushort*)_in;
3198 uint *out = (uint*)_out;
3199 unsigned i, j;
3200 (void)j;
3201 for (j = i = 0; j < nr; j+=3, i++) {
3202 (out+j)[0] = (uint)in[i+1+(i&1)];
3203 (out+j)[1] = (uint)in[i+2-(i&1)];
3204 (out+j)[2] = (uint)in[i];
3205 }
3206 }
3207 static void translate_trifan_ushort2uint_first2last(
3208 const void * _in,
3209 unsigned nr,
3210 void *_out )
3211 {
3212 const ushort*in = (const ushort*)_in;
3213 uint *out = (uint*)_out;
3214 unsigned i, j;
3215 (void)j;
3216 for (j = i = 0; j < nr; j+=3, i++) {
3217 (out+j)[0] = (uint)in[i+1];
3218 (out+j)[1] = (uint)in[i+2];
3219 (out+j)[2] = (uint)in[0];
3220 }
3221 }
3222 static void translate_quads_ushort2uint_first2last(
3223 const void * _in,
3224 unsigned nr,
3225 void *_out )
3226 {
3227 const ushort*in = (const ushort*)_in;
3228 uint *out = (uint*)_out;
3229 unsigned i, j;
3230 (void)j;
3231 for (j = i = 0; j < nr; j+=6, i+=4) {
3232 (out+j+0)[0] = (uint)in[i+1];
3233 (out+j+0)[1] = (uint)in[i+3];
3234 (out+j+0)[2] = (uint)in[i+0];
3235 (out+j+3)[0] = (uint)in[i+2];
3236 (out+j+3)[1] = (uint)in[i+3];
3237 (out+j+3)[2] = (uint)in[i+1];
3238 }
3239 }
3240 static void translate_quadstrip_ushort2uint_first2last(
3241 const void * _in,
3242 unsigned nr,
3243 void *_out )
3244 {
3245 const ushort*in = (const ushort*)_in;
3246 uint *out = (uint*)_out;
3247 unsigned i, j;
3248 (void)j;
3249 for (j = i = 0; j < nr; j+=6, i+=2) {
3250 (out+j+0)[0] = (uint)in[i+0];
3251 (out+j+0)[1] = (uint)in[i+3];
3252 (out+j+0)[2] = (uint)in[i+2];
3253 (out+j+3)[0] = (uint)in[i+1];
3254 (out+j+3)[1] = (uint)in[i+3];
3255 (out+j+3)[2] = (uint)in[i+0];
3256 }
3257 }
3258 static void translate_polygon_ushort2uint_first2last(
3259 const void * _in,
3260 unsigned nr,
3261 void *_out )
3262 {
3263 const ushort*in = (const ushort*)_in;
3264 uint *out = (uint*)_out;
3265 unsigned i, j;
3266 (void)j;
3267 for (j = i = 0; j < nr; j+=3, i++) {
3268 (out+j)[0] = (uint)in[i+1];
3269 (out+j)[1] = (uint)in[i+2];
3270 (out+j)[2] = (uint)in[0];
3271 }
3272 }
3273 static void translate_points_ushort2uint_last2first(
3274 const void * _in,
3275 unsigned nr,
3276 void *_out )
3277 {
3278 const ushort*in = (const ushort*)_in;
3279 uint *out = (uint*)_out;
3280 unsigned i, j;
3281 (void)j;
3282 for (i = 0; i < nr; i++) {
3283 (out+i)[0] = (uint)in[i];
3284 }
3285 }
3286 static void translate_lines_ushort2uint_last2first(
3287 const void * _in,
3288 unsigned nr,
3289 void *_out )
3290 {
3291 const ushort*in = (const ushort*)_in;
3292 uint *out = (uint*)_out;
3293 unsigned i, j;
3294 (void)j;
3295 for (i = 0; i < nr; i+=2) {
3296 (out+i)[0] = (uint)in[i+1];
3297 (out+i)[1] = (uint)in[i];
3298 }
3299 }
3300 static void translate_linestrip_ushort2uint_last2first(
3301 const void * _in,
3302 unsigned nr,
3303 void *_out )
3304 {
3305 const ushort*in = (const ushort*)_in;
3306 uint *out = (uint*)_out;
3307 unsigned i, j;
3308 (void)j;
3309 for (j = i = 0; j < nr; j+=2, i++) {
3310 (out+j)[0] = (uint)in[i+1];
3311 (out+j)[1] = (uint)in[i];
3312 }
3313 }
3314 static void translate_lineloop_ushort2uint_last2first(
3315 const void * _in,
3316 unsigned nr,
3317 void *_out )
3318 {
3319 const ushort*in = (const ushort*)_in;
3320 uint *out = (uint*)_out;
3321 unsigned i, j;
3322 (void)j;
3323 for (j = i = 0; j < nr - 2; j+=2, i++) {
3324 (out+j)[0] = (uint)in[i+1];
3325 (out+j)[1] = (uint)in[i];
3326 }
3327 (out+j)[0] = (uint)in[0];
3328 (out+j)[1] = (uint)in[i];
3329 }
3330 static void translate_tris_ushort2uint_last2first(
3331 const void * _in,
3332 unsigned nr,
3333 void *_out )
3334 {
3335 const ushort*in = (const ushort*)_in;
3336 uint *out = (uint*)_out;
3337 unsigned i, j;
3338 (void)j;
3339 for (i = 0; i < nr; i+=3) {
3340 (out+i)[0] = (uint)in[i+2];
3341 (out+i)[1] = (uint)in[i];
3342 (out+i)[2] = (uint)in[i+1];
3343 }
3344 }
3345 static void translate_tristrip_ushort2uint_last2first(
3346 const void * _in,
3347 unsigned nr,
3348 void *_out )
3349 {
3350 const ushort*in = (const ushort*)_in;
3351 uint *out = (uint*)_out;
3352 unsigned i, j;
3353 (void)j;
3354 for (j = i = 0; j < nr; j+=3, i++) {
3355 (out+j)[0] = (uint)in[i+2];
3356 (out+j)[1] = (uint)in[i+(i&1)];
3357 (out+j)[2] = (uint)in[i+1-(i&1)];
3358 }
3359 }
3360 static void translate_trifan_ushort2uint_last2first(
3361 const void * _in,
3362 unsigned nr,
3363 void *_out )
3364 {
3365 const ushort*in = (const ushort*)_in;
3366 uint *out = (uint*)_out;
3367 unsigned i, j;
3368 (void)j;
3369 for (j = i = 0; j < nr; j+=3, i++) {
3370 (out+j)[0] = (uint)in[i+2];
3371 (out+j)[1] = (uint)in[0];
3372 (out+j)[2] = (uint)in[i+1];
3373 }
3374 }
3375 static void translate_quads_ushort2uint_last2first(
3376 const void * _in,
3377 unsigned nr,
3378 void *_out )
3379 {
3380 const ushort*in = (const ushort*)_in;
3381 uint *out = (uint*)_out;
3382 unsigned i, j;
3383 (void)j;
3384 for (j = i = 0; j < nr; j+=6, i+=4) {
3385 (out+j+0)[0] = (uint)in[i+3];
3386 (out+j+0)[1] = (uint)in[i+0];
3387 (out+j+0)[2] = (uint)in[i+1];
3388 (out+j+3)[0] = (uint)in[i+3];
3389 (out+j+3)[1] = (uint)in[i+1];
3390 (out+j+3)[2] = (uint)in[i+2];
3391 }
3392 }
3393 static void translate_quadstrip_ushort2uint_last2first(
3394 const void * _in,
3395 unsigned nr,
3396 void *_out )
3397 {
3398 const ushort*in = (const ushort*)_in;
3399 uint *out = (uint*)_out;
3400 unsigned i, j;
3401 (void)j;
3402 for (j = i = 0; j < nr; j+=6, i+=2) {
3403 (out+j+0)[0] = (uint)in[i+3];
3404 (out+j+0)[1] = (uint)in[i+2];
3405 (out+j+0)[2] = (uint)in[i+0];
3406 (out+j+3)[0] = (uint)in[i+3];
3407 (out+j+3)[1] = (uint)in[i+0];
3408 (out+j+3)[2] = (uint)in[i+1];
3409 }
3410 }
3411 static void translate_polygon_ushort2uint_last2first(
3412 const void * _in,
3413 unsigned nr,
3414 void *_out )
3415 {
3416 const ushort*in = (const ushort*)_in;
3417 uint *out = (uint*)_out;
3418 unsigned i, j;
3419 (void)j;
3420 for (j = i = 0; j < nr; j+=3, i++) {
3421 (out+j)[0] = (uint)in[0];
3422 (out+j)[1] = (uint)in[i+1];
3423 (out+j)[2] = (uint)in[i+2];
3424 }
3425 }
3426 static void translate_points_ushort2uint_last2last(
3427 const void * _in,
3428 unsigned nr,
3429 void *_out )
3430 {
3431 const ushort*in = (const ushort*)_in;
3432 uint *out = (uint*)_out;
3433 unsigned i, j;
3434 (void)j;
3435 for (i = 0; i < nr; i++) {
3436 (out+i)[0] = (uint)in[i];
3437 }
3438 }
3439 static void translate_lines_ushort2uint_last2last(
3440 const void * _in,
3441 unsigned nr,
3442 void *_out )
3443 {
3444 const ushort*in = (const ushort*)_in;
3445 uint *out = (uint*)_out;
3446 unsigned i, j;
3447 (void)j;
3448 for (i = 0; i < nr; i+=2) {
3449 (out+i)[0] = (uint)in[i];
3450 (out+i)[1] = (uint)in[i+1];
3451 }
3452 }
3453 static void translate_linestrip_ushort2uint_last2last(
3454 const void * _in,
3455 unsigned nr,
3456 void *_out )
3457 {
3458 const ushort*in = (const ushort*)_in;
3459 uint *out = (uint*)_out;
3460 unsigned i, j;
3461 (void)j;
3462 for (j = i = 0; j < nr; j+=2, i++) {
3463 (out+j)[0] = (uint)in[i];
3464 (out+j)[1] = (uint)in[i+1];
3465 }
3466 }
3467 static void translate_lineloop_ushort2uint_last2last(
3468 const void * _in,
3469 unsigned nr,
3470 void *_out )
3471 {
3472 const ushort*in = (const ushort*)_in;
3473 uint *out = (uint*)_out;
3474 unsigned i, j;
3475 (void)j;
3476 for (j = i = 0; j < nr - 2; j+=2, i++) {
3477 (out+j)[0] = (uint)in[i];
3478 (out+j)[1] = (uint)in[i+1];
3479 }
3480 (out+j)[0] = (uint)in[i];
3481 (out+j)[1] = (uint)in[0];
3482 }
3483 static void translate_tris_ushort2uint_last2last(
3484 const void * _in,
3485 unsigned nr,
3486 void *_out )
3487 {
3488 const ushort*in = (const ushort*)_in;
3489 uint *out = (uint*)_out;
3490 unsigned i, j;
3491 (void)j;
3492 for (i = 0; i < nr; i+=3) {
3493 (out+i)[0] = (uint)in[i];
3494 (out+i)[1] = (uint)in[i+1];
3495 (out+i)[2] = (uint)in[i+2];
3496 }
3497 }
3498 static void translate_tristrip_ushort2uint_last2last(
3499 const void * _in,
3500 unsigned nr,
3501 void *_out )
3502 {
3503 const ushort*in = (const ushort*)_in;
3504 uint *out = (uint*)_out;
3505 unsigned i, j;
3506 (void)j;
3507 for (j = i = 0; j < nr; j+=3, i++) {
3508 (out+j)[0] = (uint)in[i+(i&1)];
3509 (out+j)[1] = (uint)in[i+1-(i&1)];
3510 (out+j)[2] = (uint)in[i+2];
3511 }
3512 }
3513 static void translate_trifan_ushort2uint_last2last(
3514 const void * _in,
3515 unsigned nr,
3516 void *_out )
3517 {
3518 const ushort*in = (const ushort*)_in;
3519 uint *out = (uint*)_out;
3520 unsigned i, j;
3521 (void)j;
3522 for (j = i = 0; j < nr; j+=3, i++) {
3523 (out+j)[0] = (uint)in[0];
3524 (out+j)[1] = (uint)in[i+1];
3525 (out+j)[2] = (uint)in[i+2];
3526 }
3527 }
3528 static void translate_quads_ushort2uint_last2last(
3529 const void * _in,
3530 unsigned nr,
3531 void *_out )
3532 {
3533 const ushort*in = (const ushort*)_in;
3534 uint *out = (uint*)_out;
3535 unsigned i, j;
3536 (void)j;
3537 for (j = i = 0; j < nr; j+=6, i+=4) {
3538 (out+j+0)[0] = (uint)in[i+0];
3539 (out+j+0)[1] = (uint)in[i+1];
3540 (out+j+0)[2] = (uint)in[i+3];
3541 (out+j+3)[0] = (uint)in[i+1];
3542 (out+j+3)[1] = (uint)in[i+2];
3543 (out+j+3)[2] = (uint)in[i+3];
3544 }
3545 }
3546 static void translate_quadstrip_ushort2uint_last2last(
3547 const void * _in,
3548 unsigned nr,
3549 void *_out )
3550 {
3551 const ushort*in = (const ushort*)_in;
3552 uint *out = (uint*)_out;
3553 unsigned i, j;
3554 (void)j;
3555 for (j = i = 0; j < nr; j+=6, i+=2) {
3556 (out+j+0)[0] = (uint)in[i+2];
3557 (out+j+0)[1] = (uint)in[i+0];
3558 (out+j+0)[2] = (uint)in[i+3];
3559 (out+j+3)[0] = (uint)in[i+0];
3560 (out+j+3)[1] = (uint)in[i+1];
3561 (out+j+3)[2] = (uint)in[i+3];
3562 }
3563 }
3564 static void translate_polygon_ushort2uint_last2last(
3565 const void * _in,
3566 unsigned nr,
3567 void *_out )
3568 {
3569 const ushort*in = (const ushort*)_in;
3570 uint *out = (uint*)_out;
3571 unsigned i, j;
3572 (void)j;
3573 for (j = i = 0; j < nr; j+=3, i++) {
3574 (out+j)[0] = (uint)in[i+1];
3575 (out+j)[1] = (uint)in[i+2];
3576 (out+j)[2] = (uint)in[0];
3577 }
3578 }
3579 static void translate_points_uint2ushort_first2first(
3580 const void * _in,
3581 unsigned nr,
3582 void *_out )
3583 {
3584 const uint*in = (const uint*)_in;
3585 ushort *out = (ushort*)_out;
3586 unsigned i, j;
3587 (void)j;
3588 for (i = 0; i < nr; i++) {
3589 (out+i)[0] = (ushort)in[i];
3590 }
3591 }
3592 static void translate_lines_uint2ushort_first2first(
3593 const void * _in,
3594 unsigned nr,
3595 void *_out )
3596 {
3597 const uint*in = (const uint*)_in;
3598 ushort *out = (ushort*)_out;
3599 unsigned i, j;
3600 (void)j;
3601 for (i = 0; i < nr; i+=2) {
3602 (out+i)[0] = (ushort)in[i];
3603 (out+i)[1] = (ushort)in[i+1];
3604 }
3605 }
3606 static void translate_linestrip_uint2ushort_first2first(
3607 const void * _in,
3608 unsigned nr,
3609 void *_out )
3610 {
3611 const uint*in = (const uint*)_in;
3612 ushort *out = (ushort*)_out;
3613 unsigned i, j;
3614 (void)j;
3615 for (j = i = 0; j < nr; j+=2, i++) {
3616 (out+j)[0] = (ushort)in[i];
3617 (out+j)[1] = (ushort)in[i+1];
3618 }
3619 }
3620 static void translate_lineloop_uint2ushort_first2first(
3621 const void * _in,
3622 unsigned nr,
3623 void *_out )
3624 {
3625 const uint*in = (const uint*)_in;
3626 ushort *out = (ushort*)_out;
3627 unsigned i, j;
3628 (void)j;
3629 for (j = i = 0; j < nr - 2; j+=2, i++) {
3630 (out+j)[0] = (ushort)in[i];
3631 (out+j)[1] = (ushort)in[i+1];
3632 }
3633 (out+j)[0] = (ushort)in[i];
3634 (out+j)[1] = (ushort)in[0];
3635 }
3636 static void translate_tris_uint2ushort_first2first(
3637 const void * _in,
3638 unsigned nr,
3639 void *_out )
3640 {
3641 const uint*in = (const uint*)_in;
3642 ushort *out = (ushort*)_out;
3643 unsigned i, j;
3644 (void)j;
3645 for (i = 0; i < nr; i+=3) {
3646 (out+i)[0] = (ushort)in[i];
3647 (out+i)[1] = (ushort)in[i+1];
3648 (out+i)[2] = (ushort)in[i+2];
3649 }
3650 }
3651 static void translate_tristrip_uint2ushort_first2first(
3652 const void * _in,
3653 unsigned nr,
3654 void *_out )
3655 {
3656 const uint*in = (const uint*)_in;
3657 ushort *out = (ushort*)_out;
3658 unsigned i, j;
3659 (void)j;
3660 for (j = i = 0; j < nr; j+=3, i++) {
3661 (out+j)[0] = (ushort)in[i];
3662 (out+j)[1] = (ushort)in[i+1+(i&1)];
3663 (out+j)[2] = (ushort)in[i+2-(i&1)];
3664 }
3665 }
3666 static void translate_trifan_uint2ushort_first2first(
3667 const void * _in,
3668 unsigned nr,
3669 void *_out )
3670 {
3671 const uint*in = (const uint*)_in;
3672 ushort *out = (ushort*)_out;
3673 unsigned i, j;
3674 (void)j;
3675 for (j = i = 0; j < nr; j+=3, i++) {
3676 (out+j)[0] = (ushort)in[0];
3677 (out+j)[1] = (ushort)in[i+1];
3678 (out+j)[2] = (ushort)in[i+2];
3679 }
3680 }
3681 static void translate_quads_uint2ushort_first2first(
3682 const void * _in,
3683 unsigned nr,
3684 void *_out )
3685 {
3686 const uint*in = (const uint*)_in;
3687 ushort *out = (ushort*)_out;
3688 unsigned i, j;
3689 (void)j;
3690 for (j = i = 0; j < nr; j+=6, i+=4) {
3691 (out+j+0)[0] = (ushort)in[i+0];
3692 (out+j+0)[1] = (ushort)in[i+1];
3693 (out+j+0)[2] = (ushort)in[i+3];
3694 (out+j+3)[0] = (ushort)in[i+1];
3695 (out+j+3)[1] = (ushort)in[i+2];
3696 (out+j+3)[2] = (ushort)in[i+3];
3697 }
3698 }
3699 static void translate_quadstrip_uint2ushort_first2first(
3700 const void * _in,
3701 unsigned nr,
3702 void *_out )
3703 {
3704 const uint*in = (const uint*)_in;
3705 ushort *out = (ushort*)_out;
3706 unsigned i, j;
3707 (void)j;
3708 for (j = i = 0; j < nr; j+=6, i+=2) {
3709 (out+j+0)[0] = (ushort)in[i+2];
3710 (out+j+0)[1] = (ushort)in[i+0];
3711 (out+j+0)[2] = (ushort)in[i+3];
3712 (out+j+3)[0] = (ushort)in[i+0];
3713 (out+j+3)[1] = (ushort)in[i+1];
3714 (out+j+3)[2] = (ushort)in[i+3];
3715 }
3716 }
3717 static void translate_polygon_uint2ushort_first2first(
3718 const void * _in,
3719 unsigned nr,
3720 void *_out )
3721 {
3722 const uint*in = (const uint*)_in;
3723 ushort *out = (ushort*)_out;
3724 unsigned i, j;
3725 (void)j;
3726 for (j = i = 0; j < nr; j+=3, i++) {
3727 (out+j)[0] = (ushort)in[0];
3728 (out+j)[1] = (ushort)in[i+1];
3729 (out+j)[2] = (ushort)in[i+2];
3730 }
3731 }
3732 static void translate_points_uint2ushort_first2last(
3733 const void * _in,
3734 unsigned nr,
3735 void *_out )
3736 {
3737 const uint*in = (const uint*)_in;
3738 ushort *out = (ushort*)_out;
3739 unsigned i, j;
3740 (void)j;
3741 for (i = 0; i < nr; i++) {
3742 (out+i)[0] = (ushort)in[i];
3743 }
3744 }
3745 static void translate_lines_uint2ushort_first2last(
3746 const void * _in,
3747 unsigned nr,
3748 void *_out )
3749 {
3750 const uint*in = (const uint*)_in;
3751 ushort *out = (ushort*)_out;
3752 unsigned i, j;
3753 (void)j;
3754 for (i = 0; i < nr; i+=2) {
3755 (out+i)[0] = (ushort)in[i+1];
3756 (out+i)[1] = (ushort)in[i];
3757 }
3758 }
3759 static void translate_linestrip_uint2ushort_first2last(
3760 const void * _in,
3761 unsigned nr,
3762 void *_out )
3763 {
3764 const uint*in = (const uint*)_in;
3765 ushort *out = (ushort*)_out;
3766 unsigned i, j;
3767 (void)j;
3768 for (j = i = 0; j < nr; j+=2, i++) {
3769 (out+j)[0] = (ushort)in[i+1];
3770 (out+j)[1] = (ushort)in[i];
3771 }
3772 }
3773 static void translate_lineloop_uint2ushort_first2last(
3774 const void * _in,
3775 unsigned nr,
3776 void *_out )
3777 {
3778 const uint*in = (const uint*)_in;
3779 ushort *out = (ushort*)_out;
3780 unsigned i, j;
3781 (void)j;
3782 for (j = i = 0; j < nr - 2; j+=2, i++) {
3783 (out+j)[0] = (ushort)in[i+1];
3784 (out+j)[1] = (ushort)in[i];
3785 }
3786 (out+j)[0] = (ushort)in[0];
3787 (out+j)[1] = (ushort)in[i];
3788 }
3789 static void translate_tris_uint2ushort_first2last(
3790 const void * _in,
3791 unsigned nr,
3792 void *_out )
3793 {
3794 const uint*in = (const uint*)_in;
3795 ushort *out = (ushort*)_out;
3796 unsigned i, j;
3797 (void)j;
3798 for (i = 0; i < nr; i+=3) {
3799 (out+i)[0] = (ushort)in[i+1];
3800 (out+i)[1] = (ushort)in[i+2];
3801 (out+i)[2] = (ushort)in[i];
3802 }
3803 }
3804 static void translate_tristrip_uint2ushort_first2last(
3805 const void * _in,
3806 unsigned nr,
3807 void *_out )
3808 {
3809 const uint*in = (const uint*)_in;
3810 ushort *out = (ushort*)_out;
3811 unsigned i, j;
3812 (void)j;
3813 for (j = i = 0; j < nr; j+=3, i++) {
3814 (out+j)[0] = (ushort)in[i+1+(i&1)];
3815 (out+j)[1] = (ushort)in[i+2-(i&1)];
3816 (out+j)[2] = (ushort)in[i];
3817 }
3818 }
3819 static void translate_trifan_uint2ushort_first2last(
3820 const void * _in,
3821 unsigned nr,
3822 void *_out )
3823 {
3824 const uint*in = (const uint*)_in;
3825 ushort *out = (ushort*)_out;
3826 unsigned i, j;
3827 (void)j;
3828 for (j = i = 0; j < nr; j+=3, i++) {
3829 (out+j)[0] = (ushort)in[i+1];
3830 (out+j)[1] = (ushort)in[i+2];
3831 (out+j)[2] = (ushort)in[0];
3832 }
3833 }
3834 static void translate_quads_uint2ushort_first2last(
3835 const void * _in,
3836 unsigned nr,
3837 void *_out )
3838 {
3839 const uint*in = (const uint*)_in;
3840 ushort *out = (ushort*)_out;
3841 unsigned i, j;
3842 (void)j;
3843 for (j = i = 0; j < nr; j+=6, i+=4) {
3844 (out+j+0)[0] = (ushort)in[i+1];
3845 (out+j+0)[1] = (ushort)in[i+3];
3846 (out+j+0)[2] = (ushort)in[i+0];
3847 (out+j+3)[0] = (ushort)in[i+2];
3848 (out+j+3)[1] = (ushort)in[i+3];
3849 (out+j+3)[2] = (ushort)in[i+1];
3850 }
3851 }
3852 static void translate_quadstrip_uint2ushort_first2last(
3853 const void * _in,
3854 unsigned nr,
3855 void *_out )
3856 {
3857 const uint*in = (const uint*)_in;
3858 ushort *out = (ushort*)_out;
3859 unsigned i, j;
3860 (void)j;
3861 for (j = i = 0; j < nr; j+=6, i+=2) {
3862 (out+j+0)[0] = (ushort)in[i+0];
3863 (out+j+0)[1] = (ushort)in[i+3];
3864 (out+j+0)[2] = (ushort)in[i+2];
3865 (out+j+3)[0] = (ushort)in[i+1];
3866 (out+j+3)[1] = (ushort)in[i+3];
3867 (out+j+3)[2] = (ushort)in[i+0];
3868 }
3869 }
3870 static void translate_polygon_uint2ushort_first2last(
3871 const void * _in,
3872 unsigned nr,
3873 void *_out )
3874 {
3875 const uint*in = (const uint*)_in;
3876 ushort *out = (ushort*)_out;
3877 unsigned i, j;
3878 (void)j;
3879 for (j = i = 0; j < nr; j+=3, i++) {
3880 (out+j)[0] = (ushort)in[i+1];
3881 (out+j)[1] = (ushort)in[i+2];
3882 (out+j)[2] = (ushort)in[0];
3883 }
3884 }
3885 static void translate_points_uint2ushort_last2first(
3886 const void * _in,
3887 unsigned nr,
3888 void *_out )
3889 {
3890 const uint*in = (const uint*)_in;
3891 ushort *out = (ushort*)_out;
3892 unsigned i, j;
3893 (void)j;
3894 for (i = 0; i < nr; i++) {
3895 (out+i)[0] = (ushort)in[i];
3896 }
3897 }
3898 static void translate_lines_uint2ushort_last2first(
3899 const void * _in,
3900 unsigned nr,
3901 void *_out )
3902 {
3903 const uint*in = (const uint*)_in;
3904 ushort *out = (ushort*)_out;
3905 unsigned i, j;
3906 (void)j;
3907 for (i = 0; i < nr; i+=2) {
3908 (out+i)[0] = (ushort)in[i+1];
3909 (out+i)[1] = (ushort)in[i];
3910 }
3911 }
3912 static void translate_linestrip_uint2ushort_last2first(
3913 const void * _in,
3914 unsigned nr,
3915 void *_out )
3916 {
3917 const uint*in = (const uint*)_in;
3918 ushort *out = (ushort*)_out;
3919 unsigned i, j;
3920 (void)j;
3921 for (j = i = 0; j < nr; j+=2, i++) {
3922 (out+j)[0] = (ushort)in[i+1];
3923 (out+j)[1] = (ushort)in[i];
3924 }
3925 }
3926 static void translate_lineloop_uint2ushort_last2first(
3927 const void * _in,
3928 unsigned nr,
3929 void *_out )
3930 {
3931 const uint*in = (const uint*)_in;
3932 ushort *out = (ushort*)_out;
3933 unsigned i, j;
3934 (void)j;
3935 for (j = i = 0; j < nr - 2; j+=2, i++) {
3936 (out+j)[0] = (ushort)in[i+1];
3937 (out+j)[1] = (ushort)in[i];
3938 }
3939 (out+j)[0] = (ushort)in[0];
3940 (out+j)[1] = (ushort)in[i];
3941 }
3942 static void translate_tris_uint2ushort_last2first(
3943 const void * _in,
3944 unsigned nr,
3945 void *_out )
3946 {
3947 const uint*in = (const uint*)_in;
3948 ushort *out = (ushort*)_out;
3949 unsigned i, j;
3950 (void)j;
3951 for (i = 0; i < nr; i+=3) {
3952 (out+i)[0] = (ushort)in[i+2];
3953 (out+i)[1] = (ushort)in[i];
3954 (out+i)[2] = (ushort)in[i+1];
3955 }
3956 }
3957 static void translate_tristrip_uint2ushort_last2first(
3958 const void * _in,
3959 unsigned nr,
3960 void *_out )
3961 {
3962 const uint*in = (const uint*)_in;
3963 ushort *out = (ushort*)_out;
3964 unsigned i, j;
3965 (void)j;
3966 for (j = i = 0; j < nr; j+=3, i++) {
3967 (out+j)[0] = (ushort)in[i+2];
3968 (out+j)[1] = (ushort)in[i+(i&1)];
3969 (out+j)[2] = (ushort)in[i+1-(i&1)];
3970 }
3971 }
3972 static void translate_trifan_uint2ushort_last2first(
3973 const void * _in,
3974 unsigned nr,
3975 void *_out )
3976 {
3977 const uint*in = (const uint*)_in;
3978 ushort *out = (ushort*)_out;
3979 unsigned i, j;
3980 (void)j;
3981 for (j = i = 0; j < nr; j+=3, i++) {
3982 (out+j)[0] = (ushort)in[i+2];
3983 (out+j)[1] = (ushort)in[0];
3984 (out+j)[2] = (ushort)in[i+1];
3985 }
3986 }
3987 static void translate_quads_uint2ushort_last2first(
3988 const void * _in,
3989 unsigned nr,
3990 void *_out )
3991 {
3992 const uint*in = (const uint*)_in;
3993 ushort *out = (ushort*)_out;
3994 unsigned i, j;
3995 (void)j;
3996 for (j = i = 0; j < nr; j+=6, i+=4) {
3997 (out+j+0)[0] = (ushort)in[i+3];
3998 (out+j+0)[1] = (ushort)in[i+0];
3999 (out+j+0)[2] = (ushort)in[i+1];
4000 (out+j+3)[0] = (ushort)in[i+3];
4001 (out+j+3)[1] = (ushort)in[i+1];
4002 (out+j+3)[2] = (ushort)in[i+2];
4003 }
4004 }
4005 static void translate_quadstrip_uint2ushort_last2first(
4006 const void * _in,
4007 unsigned nr,
4008 void *_out )
4009 {
4010 const uint*in = (const uint*)_in;
4011 ushort *out = (ushort*)_out;
4012 unsigned i, j;
4013 (void)j;
4014 for (j = i = 0; j < nr; j+=6, i+=2) {
4015 (out+j+0)[0] = (ushort)in[i+3];
4016 (out+j+0)[1] = (ushort)in[i+2];
4017 (out+j+0)[2] = (ushort)in[i+0];
4018 (out+j+3)[0] = (ushort)in[i+3];
4019 (out+j+3)[1] = (ushort)in[i+0];
4020 (out+j+3)[2] = (ushort)in[i+1];
4021 }
4022 }
4023 static void translate_polygon_uint2ushort_last2first(
4024 const void * _in,
4025 unsigned nr,
4026 void *_out )
4027 {
4028 const uint*in = (const uint*)_in;
4029 ushort *out = (ushort*)_out;
4030 unsigned i, j;
4031 (void)j;
4032 for (j = i = 0; j < nr; j+=3, i++) {
4033 (out+j)[0] = (ushort)in[0];
4034 (out+j)[1] = (ushort)in[i+1];
4035 (out+j)[2] = (ushort)in[i+2];
4036 }
4037 }
4038 static void translate_points_uint2ushort_last2last(
4039 const void * _in,
4040 unsigned nr,
4041 void *_out )
4042 {
4043 const uint*in = (const uint*)_in;
4044 ushort *out = (ushort*)_out;
4045 unsigned i, j;
4046 (void)j;
4047 for (i = 0; i < nr; i++) {
4048 (out+i)[0] = (ushort)in[i];
4049 }
4050 }
4051 static void translate_lines_uint2ushort_last2last(
4052 const void * _in,
4053 unsigned nr,
4054 void *_out )
4055 {
4056 const uint*in = (const uint*)_in;
4057 ushort *out = (ushort*)_out;
4058 unsigned i, j;
4059 (void)j;
4060 for (i = 0; i < nr; i+=2) {
4061 (out+i)[0] = (ushort)in[i];
4062 (out+i)[1] = (ushort)in[i+1];
4063 }
4064 }
4065 static void translate_linestrip_uint2ushort_last2last(
4066 const void * _in,
4067 unsigned nr,
4068 void *_out )
4069 {
4070 const uint*in = (const uint*)_in;
4071 ushort *out = (ushort*)_out;
4072 unsigned i, j;
4073 (void)j;
4074 for (j = i = 0; j < nr; j+=2, i++) {
4075 (out+j)[0] = (ushort)in[i];
4076 (out+j)[1] = (ushort)in[i+1];
4077 }
4078 }
4079 static void translate_lineloop_uint2ushort_last2last(
4080 const void * _in,
4081 unsigned nr,
4082 void *_out )
4083 {
4084 const uint*in = (const uint*)_in;
4085 ushort *out = (ushort*)_out;
4086 unsigned i, j;
4087 (void)j;
4088 for (j = i = 0; j < nr - 2; j+=2, i++) {
4089 (out+j)[0] = (ushort)in[i];
4090 (out+j)[1] = (ushort)in[i+1];
4091 }
4092 (out+j)[0] = (ushort)in[i];
4093 (out+j)[1] = (ushort)in[0];
4094 }
4095 static void translate_tris_uint2ushort_last2last(
4096 const void * _in,
4097 unsigned nr,
4098 void *_out )
4099 {
4100 const uint*in = (const uint*)_in;
4101 ushort *out = (ushort*)_out;
4102 unsigned i, j;
4103 (void)j;
4104 for (i = 0; i < nr; i+=3) {
4105 (out+i)[0] = (ushort)in[i];
4106 (out+i)[1] = (ushort)in[i+1];
4107 (out+i)[2] = (ushort)in[i+2];
4108 }
4109 }
4110 static void translate_tristrip_uint2ushort_last2last(
4111 const void * _in,
4112 unsigned nr,
4113 void *_out )
4114 {
4115 const uint*in = (const uint*)_in;
4116 ushort *out = (ushort*)_out;
4117 unsigned i, j;
4118 (void)j;
4119 for (j = i = 0; j < nr; j+=3, i++) {
4120 (out+j)[0] = (ushort)in[i+(i&1)];
4121 (out+j)[1] = (ushort)in[i+1-(i&1)];
4122 (out+j)[2] = (ushort)in[i+2];
4123 }
4124 }
4125 static void translate_trifan_uint2ushort_last2last(
4126 const void * _in,
4127 unsigned nr,
4128 void *_out )
4129 {
4130 const uint*in = (const uint*)_in;
4131 ushort *out = (ushort*)_out;
4132 unsigned i, j;
4133 (void)j;
4134 for (j = i = 0; j < nr; j+=3, i++) {
4135 (out+j)[0] = (ushort)in[0];
4136 (out+j)[1] = (ushort)in[i+1];
4137 (out+j)[2] = (ushort)in[i+2];
4138 }
4139 }
4140 static void translate_quads_uint2ushort_last2last(
4141 const void * _in,
4142 unsigned nr,
4143 void *_out )
4144 {
4145 const uint*in = (const uint*)_in;
4146 ushort *out = (ushort*)_out;
4147 unsigned i, j;
4148 (void)j;
4149 for (j = i = 0; j < nr; j+=6, i+=4) {
4150 (out+j+0)[0] = (ushort)in[i+0];
4151 (out+j+0)[1] = (ushort)in[i+1];
4152 (out+j+0)[2] = (ushort)in[i+3];
4153 (out+j+3)[0] = (ushort)in[i+1];
4154 (out+j+3)[1] = (ushort)in[i+2];
4155 (out+j+3)[2] = (ushort)in[i+3];
4156 }
4157 }
4158 static void translate_quadstrip_uint2ushort_last2last(
4159 const void * _in,
4160 unsigned nr,
4161 void *_out )
4162 {
4163 const uint*in = (const uint*)_in;
4164 ushort *out = (ushort*)_out;
4165 unsigned i, j;
4166 (void)j;
4167 for (j = i = 0; j < nr; j+=6, i+=2) {
4168 (out+j+0)[0] = (ushort)in[i+2];
4169 (out+j+0)[1] = (ushort)in[i+0];
4170 (out+j+0)[2] = (ushort)in[i+3];
4171 (out+j+3)[0] = (ushort)in[i+0];
4172 (out+j+3)[1] = (ushort)in[i+1];
4173 (out+j+3)[2] = (ushort)in[i+3];
4174 }
4175 }
4176 static void translate_polygon_uint2ushort_last2last(
4177 const void * _in,
4178 unsigned nr,
4179 void *_out )
4180 {
4181 const uint*in = (const uint*)_in;
4182 ushort *out = (ushort*)_out;
4183 unsigned i, j;
4184 (void)j;
4185 for (j = i = 0; j < nr; j+=3, i++) {
4186 (out+j)[0] = (ushort)in[i+1];
4187 (out+j)[1] = (ushort)in[i+2];
4188 (out+j)[2] = (ushort)in[0];
4189 }
4190 }
4191 static void translate_points_uint2uint_first2first(
4192 const void * _in,
4193 unsigned nr,
4194 void *_out )
4195 {
4196 const uint*in = (const uint*)_in;
4197 uint *out = (uint*)_out;
4198 unsigned i, j;
4199 (void)j;
4200 for (i = 0; i < nr; i++) {
4201 (out+i)[0] = (uint)in[i];
4202 }
4203 }
4204 static void translate_lines_uint2uint_first2first(
4205 const void * _in,
4206 unsigned nr,
4207 void *_out )
4208 {
4209 const uint*in = (const uint*)_in;
4210 uint *out = (uint*)_out;
4211 unsigned i, j;
4212 (void)j;
4213 for (i = 0; i < nr; i+=2) {
4214 (out+i)[0] = (uint)in[i];
4215 (out+i)[1] = (uint)in[i+1];
4216 }
4217 }
4218 static void translate_linestrip_uint2uint_first2first(
4219 const void * _in,
4220 unsigned nr,
4221 void *_out )
4222 {
4223 const uint*in = (const uint*)_in;
4224 uint *out = (uint*)_out;
4225 unsigned i, j;
4226 (void)j;
4227 for (j = i = 0; j < nr; j+=2, i++) {
4228 (out+j)[0] = (uint)in[i];
4229 (out+j)[1] = (uint)in[i+1];
4230 }
4231 }
4232 static void translate_lineloop_uint2uint_first2first(
4233 const void * _in,
4234 unsigned nr,
4235 void *_out )
4236 {
4237 const uint*in = (const uint*)_in;
4238 uint *out = (uint*)_out;
4239 unsigned i, j;
4240 (void)j;
4241 for (j = i = 0; j < nr - 2; j+=2, i++) {
4242 (out+j)[0] = (uint)in[i];
4243 (out+j)[1] = (uint)in[i+1];
4244 }
4245 (out+j)[0] = (uint)in[i];
4246 (out+j)[1] = (uint)in[0];
4247 }
4248 static void translate_tris_uint2uint_first2first(
4249 const void * _in,
4250 unsigned nr,
4251 void *_out )
4252 {
4253 const uint*in = (const uint*)_in;
4254 uint *out = (uint*)_out;
4255 unsigned i, j;
4256 (void)j;
4257 for (i = 0; i < nr; i+=3) {
4258 (out+i)[0] = (uint)in[i];
4259 (out+i)[1] = (uint)in[i+1];
4260 (out+i)[2] = (uint)in[i+2];
4261 }
4262 }
4263 static void translate_tristrip_uint2uint_first2first(
4264 const void * _in,
4265 unsigned nr,
4266 void *_out )
4267 {
4268 const uint*in = (const uint*)_in;
4269 uint *out = (uint*)_out;
4270 unsigned i, j;
4271 (void)j;
4272 for (j = i = 0; j < nr; j+=3, i++) {
4273 (out+j)[0] = (uint)in[i];
4274 (out+j)[1] = (uint)in[i+1+(i&1)];
4275 (out+j)[2] = (uint)in[i+2-(i&1)];
4276 }
4277 }
4278 static void translate_trifan_uint2uint_first2first(
4279 const void * _in,
4280 unsigned nr,
4281 void *_out )
4282 {
4283 const uint*in = (const uint*)_in;
4284 uint *out = (uint*)_out;
4285 unsigned i, j;
4286 (void)j;
4287 for (j = i = 0; j < nr; j+=3, i++) {
4288 (out+j)[0] = (uint)in[0];
4289 (out+j)[1] = (uint)in[i+1];
4290 (out+j)[2] = (uint)in[i+2];
4291 }
4292 }
4293 static void translate_quads_uint2uint_first2first(
4294 const void * _in,
4295 unsigned nr,
4296 void *_out )
4297 {
4298 const uint*in = (const uint*)_in;
4299 uint *out = (uint*)_out;
4300 unsigned i, j;
4301 (void)j;
4302 for (j = i = 0; j < nr; j+=6, i+=4) {
4303 (out+j+0)[0] = (uint)in[i+0];
4304 (out+j+0)[1] = (uint)in[i+1];
4305 (out+j+0)[2] = (uint)in[i+3];
4306 (out+j+3)[0] = (uint)in[i+1];
4307 (out+j+3)[1] = (uint)in[i+2];
4308 (out+j+3)[2] = (uint)in[i+3];
4309 }
4310 }
4311 static void translate_quadstrip_uint2uint_first2first(
4312 const void * _in,
4313 unsigned nr,
4314 void *_out )
4315 {
4316 const uint*in = (const uint*)_in;
4317 uint *out = (uint*)_out;
4318 unsigned i, j;
4319 (void)j;
4320 for (j = i = 0; j < nr; j+=6, i+=2) {
4321 (out+j+0)[0] = (uint)in[i+2];
4322 (out+j+0)[1] = (uint)in[i+0];
4323 (out+j+0)[2] = (uint)in[i+3];
4324 (out+j+3)[0] = (uint)in[i+0];
4325 (out+j+3)[1] = (uint)in[i+1];
4326 (out+j+3)[2] = (uint)in[i+3];
4327 }
4328 }
4329 static void translate_polygon_uint2uint_first2first(
4330 const void * _in,
4331 unsigned nr,
4332 void *_out )
4333 {
4334 const uint*in = (const uint*)_in;
4335 uint *out = (uint*)_out;
4336 unsigned i, j;
4337 (void)j;
4338 for (j = i = 0; j < nr; j+=3, i++) {
4339 (out+j)[0] = (uint)in[0];
4340 (out+j)[1] = (uint)in[i+1];
4341 (out+j)[2] = (uint)in[i+2];
4342 }
4343 }
4344 static void translate_points_uint2uint_first2last(
4345 const void * _in,
4346 unsigned nr,
4347 void *_out )
4348 {
4349 const uint*in = (const uint*)_in;
4350 uint *out = (uint*)_out;
4351 unsigned i, j;
4352 (void)j;
4353 for (i = 0; i < nr; i++) {
4354 (out+i)[0] = (uint)in[i];
4355 }
4356 }
4357 static void translate_lines_uint2uint_first2last(
4358 const void * _in,
4359 unsigned nr,
4360 void *_out )
4361 {
4362 const uint*in = (const uint*)_in;
4363 uint *out = (uint*)_out;
4364 unsigned i, j;
4365 (void)j;
4366 for (i = 0; i < nr; i+=2) {
4367 (out+i)[0] = (uint)in[i+1];
4368 (out+i)[1] = (uint)in[i];
4369 }
4370 }
4371 static void translate_linestrip_uint2uint_first2last(
4372 const void * _in,
4373 unsigned nr,
4374 void *_out )
4375 {
4376 const uint*in = (const uint*)_in;
4377 uint *out = (uint*)_out;
4378 unsigned i, j;
4379 (void)j;
4380 for (j = i = 0; j < nr; j+=2, i++) {
4381 (out+j)[0] = (uint)in[i+1];
4382 (out+j)[1] = (uint)in[i];
4383 }
4384 }
4385 static void translate_lineloop_uint2uint_first2last(
4386 const void * _in,
4387 unsigned nr,
4388 void *_out )
4389 {
4390 const uint*in = (const uint*)_in;
4391 uint *out = (uint*)_out;
4392 unsigned i, j;
4393 (void)j;
4394 for (j = i = 0; j < nr - 2; j+=2, i++) {
4395 (out+j)[0] = (uint)in[i+1];
4396 (out+j)[1] = (uint)in[i];
4397 }
4398 (out+j)[0] = (uint)in[0];
4399 (out+j)[1] = (uint)in[i];
4400 }
4401 static void translate_tris_uint2uint_first2last(
4402 const void * _in,
4403 unsigned nr,
4404 void *_out )
4405 {
4406 const uint*in = (const uint*)_in;
4407 uint *out = (uint*)_out;
4408 unsigned i, j;
4409 (void)j;
4410 for (i = 0; i < nr; i+=3) {
4411 (out+i)[0] = (uint)in[i+1];
4412 (out+i)[1] = (uint)in[i+2];
4413 (out+i)[2] = (uint)in[i];
4414 }
4415 }
4416 static void translate_tristrip_uint2uint_first2last(
4417 const void * _in,
4418 unsigned nr,
4419 void *_out )
4420 {
4421 const uint*in = (const uint*)_in;
4422 uint *out = (uint*)_out;
4423 unsigned i, j;
4424 (void)j;
4425 for (j = i = 0; j < nr; j+=3, i++) {
4426 (out+j)[0] = (uint)in[i+1+(i&1)];
4427 (out+j)[1] = (uint)in[i+2-(i&1)];
4428 (out+j)[2] = (uint)in[i];
4429 }
4430 }
4431 static void translate_trifan_uint2uint_first2last(
4432 const void * _in,
4433 unsigned nr,
4434 void *_out )
4435 {
4436 const uint*in = (const uint*)_in;
4437 uint *out = (uint*)_out;
4438 unsigned i, j;
4439 (void)j;
4440 for (j = i = 0; j < nr; j+=3, i++) {
4441 (out+j)[0] = (uint)in[i+1];
4442 (out+j)[1] = (uint)in[i+2];
4443 (out+j)[2] = (uint)in[0];
4444 }
4445 }
4446 static void translate_quads_uint2uint_first2last(
4447 const void * _in,
4448 unsigned nr,
4449 void *_out )
4450 {
4451 const uint*in = (const uint*)_in;
4452 uint *out = (uint*)_out;
4453 unsigned i, j;
4454 (void)j;
4455 for (j = i = 0; j < nr; j+=6, i+=4) {
4456 (out+j+0)[0] = (uint)in[i+1];
4457 (out+j+0)[1] = (uint)in[i+3];
4458 (out+j+0)[2] = (uint)in[i+0];
4459 (out+j+3)[0] = (uint)in[i+2];
4460 (out+j+3)[1] = (uint)in[i+3];
4461 (out+j+3)[2] = (uint)in[i+1];
4462 }
4463 }
4464 static void translate_quadstrip_uint2uint_first2last(
4465 const void * _in,
4466 unsigned nr,
4467 void *_out )
4468 {
4469 const uint*in = (const uint*)_in;
4470 uint *out = (uint*)_out;
4471 unsigned i, j;
4472 (void)j;
4473 for (j = i = 0; j < nr; j+=6, i+=2) {
4474 (out+j+0)[0] = (uint)in[i+0];
4475 (out+j+0)[1] = (uint)in[i+3];
4476 (out+j+0)[2] = (uint)in[i+2];
4477 (out+j+3)[0] = (uint)in[i+1];
4478 (out+j+3)[1] = (uint)in[i+3];
4479 (out+j+3)[2] = (uint)in[i+0];
4480 }
4481 }
4482 static void translate_polygon_uint2uint_first2last(
4483 const void * _in,
4484 unsigned nr,
4485 void *_out )
4486 {
4487 const uint*in = (const uint*)_in;
4488 uint *out = (uint*)_out;
4489 unsigned i, j;
4490 (void)j;
4491 for (j = i = 0; j < nr; j+=3, i++) {
4492 (out+j)[0] = (uint)in[i+1];
4493 (out+j)[1] = (uint)in[i+2];
4494 (out+j)[2] = (uint)in[0];
4495 }
4496 }
4497 static void translate_points_uint2uint_last2first(
4498 const void * _in,
4499 unsigned nr,
4500 void *_out )
4501 {
4502 const uint*in = (const uint*)_in;
4503 uint *out = (uint*)_out;
4504 unsigned i, j;
4505 (void)j;
4506 for (i = 0; i < nr; i++) {
4507 (out+i)[0] = (uint)in[i];
4508 }
4509 }
4510 static void translate_lines_uint2uint_last2first(
4511 const void * _in,
4512 unsigned nr,
4513 void *_out )
4514 {
4515 const uint*in = (const uint*)_in;
4516 uint *out = (uint*)_out;
4517 unsigned i, j;
4518 (void)j;
4519 for (i = 0; i < nr; i+=2) {
4520 (out+i)[0] = (uint)in[i+1];
4521 (out+i)[1] = (uint)in[i];
4522 }
4523 }
4524 static void translate_linestrip_uint2uint_last2first(
4525 const void * _in,
4526 unsigned nr,
4527 void *_out )
4528 {
4529 const uint*in = (const uint*)_in;
4530 uint *out = (uint*)_out;
4531 unsigned i, j;
4532 (void)j;
4533 for (j = i = 0; j < nr; j+=2, i++) {
4534 (out+j)[0] = (uint)in[i+1];
4535 (out+j)[1] = (uint)in[i];
4536 }
4537 }
4538 static void translate_lineloop_uint2uint_last2first(
4539 const void * _in,
4540 unsigned nr,
4541 void *_out )
4542 {
4543 const uint*in = (const uint*)_in;
4544 uint *out = (uint*)_out;
4545 unsigned i, j;
4546 (void)j;
4547 for (j = i = 0; j < nr - 2; j+=2, i++) {
4548 (out+j)[0] = (uint)in[i+1];
4549 (out+j)[1] = (uint)in[i];
4550 }
4551 (out+j)[0] = (uint)in[0];
4552 (out+j)[1] = (uint)in[i];
4553 }
4554 static void translate_tris_uint2uint_last2first(
4555 const void * _in,
4556 unsigned nr,
4557 void *_out )
4558 {
4559 const uint*in = (const uint*)_in;
4560 uint *out = (uint*)_out;
4561 unsigned i, j;
4562 (void)j;
4563 for (i = 0; i < nr; i+=3) {
4564 (out+i)[0] = (uint)in[i+2];
4565 (out+i)[1] = (uint)in[i];
4566 (out+i)[2] = (uint)in[i+1];
4567 }
4568 }
4569 static void translate_tristrip_uint2uint_last2first(
4570 const void * _in,
4571 unsigned nr,
4572 void *_out )
4573 {
4574 const uint*in = (const uint*)_in;
4575 uint *out = (uint*)_out;
4576 unsigned i, j;
4577 (void)j;
4578 for (j = i = 0; j < nr; j+=3, i++) {
4579 (out+j)[0] = (uint)in[i+2];
4580 (out+j)[1] = (uint)in[i+(i&1)];
4581 (out+j)[2] = (uint)in[i+1-(i&1)];
4582 }
4583 }
4584 static void translate_trifan_uint2uint_last2first(
4585 const void * _in,
4586 unsigned nr,
4587 void *_out )
4588 {
4589 const uint*in = (const uint*)_in;
4590 uint *out = (uint*)_out;
4591 unsigned i, j;
4592 (void)j;
4593 for (j = i = 0; j < nr; j+=3, i++) {
4594 (out+j)[0] = (uint)in[i+2];
4595 (out+j)[1] = (uint)in[0];
4596 (out+j)[2] = (uint)in[i+1];
4597 }
4598 }
4599 static void translate_quads_uint2uint_last2first(
4600 const void * _in,
4601 unsigned nr,
4602 void *_out )
4603 {
4604 const uint*in = (const uint*)_in;
4605 uint *out = (uint*)_out;
4606 unsigned i, j;
4607 (void)j;
4608 for (j = i = 0; j < nr; j+=6, i+=4) {
4609 (out+j+0)[0] = (uint)in[i+3];
4610 (out+j+0)[1] = (uint)in[i+0];
4611 (out+j+0)[2] = (uint)in[i+1];
4612 (out+j+3)[0] = (uint)in[i+3];
4613 (out+j+3)[1] = (uint)in[i+1];
4614 (out+j+3)[2] = (uint)in[i+2];
4615 }
4616 }
4617 static void translate_quadstrip_uint2uint_last2first(
4618 const void * _in,
4619 unsigned nr,
4620 void *_out )
4621 {
4622 const uint*in = (const uint*)_in;
4623 uint *out = (uint*)_out;
4624 unsigned i, j;
4625 (void)j;
4626 for (j = i = 0; j < nr; j+=6, i+=2) {
4627 (out+j+0)[0] = (uint)in[i+3];
4628 (out+j+0)[1] = (uint)in[i+2];
4629 (out+j+0)[2] = (uint)in[i+0];
4630 (out+j+3)[0] = (uint)in[i+3];
4631 (out+j+3)[1] = (uint)in[i+0];
4632 (out+j+3)[2] = (uint)in[i+1];
4633 }
4634 }
4635 static void translate_polygon_uint2uint_last2first(
4636 const void * _in,
4637 unsigned nr,
4638 void *_out )
4639 {
4640 const uint*in = (const uint*)_in;
4641 uint *out = (uint*)_out;
4642 unsigned i, j;
4643 (void)j;
4644 for (j = i = 0; j < nr; j+=3, i++) {
4645 (out+j)[0] = (uint)in[0];
4646 (out+j)[1] = (uint)in[i+1];
4647 (out+j)[2] = (uint)in[i+2];
4648 }
4649 }
4650 static void translate_points_uint2uint_last2last(
4651 const void * _in,
4652 unsigned nr,
4653 void *_out )
4654 {
4655 const uint*in = (const uint*)_in;
4656 uint *out = (uint*)_out;
4657 unsigned i, j;
4658 (void)j;
4659 for (i = 0; i < nr; i++) {
4660 (out+i)[0] = (uint)in[i];
4661 }
4662 }
4663 static void translate_lines_uint2uint_last2last(
4664 const void * _in,
4665 unsigned nr,
4666 void *_out )
4667 {
4668 const uint*in = (const uint*)_in;
4669 uint *out = (uint*)_out;
4670 unsigned i, j;
4671 (void)j;
4672 for (i = 0; i < nr; i+=2) {
4673 (out+i)[0] = (uint)in[i];
4674 (out+i)[1] = (uint)in[i+1];
4675 }
4676 }
4677 static void translate_linestrip_uint2uint_last2last(
4678 const void * _in,
4679 unsigned nr,
4680 void *_out )
4681 {
4682 const uint*in = (const uint*)_in;
4683 uint *out = (uint*)_out;
4684 unsigned i, j;
4685 (void)j;
4686 for (j = i = 0; j < nr; j+=2, i++) {
4687 (out+j)[0] = (uint)in[i];
4688 (out+j)[1] = (uint)in[i+1];
4689 }
4690 }
4691 static void translate_lineloop_uint2uint_last2last(
4692 const void * _in,
4693 unsigned nr,
4694 void *_out )
4695 {
4696 const uint*in = (const uint*)_in;
4697 uint *out = (uint*)_out;
4698 unsigned i, j;
4699 (void)j;
4700 for (j = i = 0; j < nr - 2; j+=2, i++) {
4701 (out+j)[0] = (uint)in[i];
4702 (out+j)[1] = (uint)in[i+1];
4703 }
4704 (out+j)[0] = (uint)in[i];
4705 (out+j)[1] = (uint)in[0];
4706 }
4707 static void translate_tris_uint2uint_last2last(
4708 const void * _in,
4709 unsigned nr,
4710 void *_out )
4711 {
4712 const uint*in = (const uint*)_in;
4713 uint *out = (uint*)_out;
4714 unsigned i, j;
4715 (void)j;
4716 for (i = 0; i < nr; i+=3) {
4717 (out+i)[0] = (uint)in[i];
4718 (out+i)[1] = (uint)in[i+1];
4719 (out+i)[2] = (uint)in[i+2];
4720 }
4721 }
4722 static void translate_tristrip_uint2uint_last2last(
4723 const void * _in,
4724 unsigned nr,
4725 void *_out )
4726 {
4727 const uint*in = (const uint*)_in;
4728 uint *out = (uint*)_out;
4729 unsigned i, j;
4730 (void)j;
4731 for (j = i = 0; j < nr; j+=3, i++) {
4732 (out+j)[0] = (uint)in[i+(i&1)];
4733 (out+j)[1] = (uint)in[i+1-(i&1)];
4734 (out+j)[2] = (uint)in[i+2];
4735 }
4736 }
4737 static void translate_trifan_uint2uint_last2last(
4738 const void * _in,
4739 unsigned nr,
4740 void *_out )
4741 {
4742 const uint*in = (const uint*)_in;
4743 uint *out = (uint*)_out;
4744 unsigned i, j;
4745 (void)j;
4746 for (j = i = 0; j < nr; j+=3, i++) {
4747 (out+j)[0] = (uint)in[0];
4748 (out+j)[1] = (uint)in[i+1];
4749 (out+j)[2] = (uint)in[i+2];
4750 }
4751 }
4752 static void translate_quads_uint2uint_last2last(
4753 const void * _in,
4754 unsigned nr,
4755 void *_out )
4756 {
4757 const uint*in = (const uint*)_in;
4758 uint *out = (uint*)_out;
4759 unsigned i, j;
4760 (void)j;
4761 for (j = i = 0; j < nr; j+=6, i+=4) {
4762 (out+j+0)[0] = (uint)in[i+0];
4763 (out+j+0)[1] = (uint)in[i+1];
4764 (out+j+0)[2] = (uint)in[i+3];
4765 (out+j+3)[0] = (uint)in[i+1];
4766 (out+j+3)[1] = (uint)in[i+2];
4767 (out+j+3)[2] = (uint)in[i+3];
4768 }
4769 }
4770 static void translate_quadstrip_uint2uint_last2last(
4771 const void * _in,
4772 unsigned nr,
4773 void *_out )
4774 {
4775 const uint*in = (const uint*)_in;
4776 uint *out = (uint*)_out;
4777 unsigned i, j;
4778 (void)j;
4779 for (j = i = 0; j < nr; j+=6, i+=2) {
4780 (out+j+0)[0] = (uint)in[i+2];
4781 (out+j+0)[1] = (uint)in[i+0];
4782 (out+j+0)[2] = (uint)in[i+3];
4783 (out+j+3)[0] = (uint)in[i+0];
4784 (out+j+3)[1] = (uint)in[i+1];
4785 (out+j+3)[2] = (uint)in[i+3];
4786 }
4787 }
4788 static void translate_polygon_uint2uint_last2last(
4789 const void * _in,
4790 unsigned nr,
4791 void *_out )
4792 {
4793 const uint*in = (const uint*)_in;
4794 uint *out = (uint*)_out;
4795 unsigned i, j;
4796 (void)j;
4797 for (j = i = 0; j < nr; j+=3, i++) {
4798 (out+j)[0] = (uint)in[i+1];
4799 (out+j)[1] = (uint)in[i+2];
4800 (out+j)[2] = (uint)in[0];
4801 }
4802 }
4803 void u_index_init( void )
4804 {
4805 static int firsttime = 1;
4806 if (!firsttime) return;
4807 firsttime = 0;
4808 generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_ushort_first2first;
4809 generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_ushort_first2first;
4810 generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_first2first;
4811 generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_first2first;
4812 generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_first2first;
4813 generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_first2first;
4814 generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_first2first;
4815 generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_ushort_first2first;
4816 generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_first2first;
4817 generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_first2first;
4818 generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_ushort_first2last;
4819 generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_ushort_first2last;
4820 generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_first2last;
4821 generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_first2last;
4822 generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_first2last;
4823 generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_first2last;
4824 generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_first2last;
4825 generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_ushort_first2last;
4826 generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_first2last;
4827 generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_first2last;
4828 generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_ushort_last2first;
4829 generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_ushort_last2first;
4830 generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_last2first;
4831 generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_last2first;
4832 generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_last2first;
4833 generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_last2first;
4834 generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_last2first;
4835 generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_ushort_last2first;
4836 generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_last2first;
4837 generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_last2first;
4838 generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_ushort_last2last;
4839 generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_ushort_last2last;
4840 generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_last2last;
4841 generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_last2last;
4842 generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_last2last;
4843 generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_last2last;
4844 generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_last2last;
4845 generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_ushort_last2last;
4846 generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_last2last;
4847 generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_last2last;
4848 generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_uint_first2first;
4849 generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_uint_first2first;
4850 generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_first2first;
4851 generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_first2first;
4852 generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_first2first;
4853 generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_first2first;
4854 generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_first2first;
4855 generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_uint_first2first;
4856 generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_first2first;
4857 generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_uint_first2first;
4858 generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_uint_first2last;
4859 generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_uint_first2last;
4860 generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_first2last;
4861 generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_first2last;
4862 generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_first2last;
4863 generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_first2last;
4864 generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_first2last;
4865 generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_uint_first2last;
4866 generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_first2last;
4867 generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_uint_first2last;
4868 generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_uint_last2first;
4869 generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_uint_last2first;
4870 generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_last2first;
4871 generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_last2first;
4872 generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_last2first;
4873 generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_last2first;
4874 generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_last2first;
4875 generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_uint_last2first;
4876 generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_last2first;
4877 generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_uint_last2first;
4878 generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_uint_last2last;
4879 generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_uint_last2last;
4880 generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_last2last;
4881 generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_last2last;
4882 generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_last2last;
4883 generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_last2last;
4884 generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_last2last;
4885 generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_uint_last2last;
4886 generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_last2last;
4887 generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_uint_last2last;
4888 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_first2first;
4889 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_first2first;
4890 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_first2first;
4891 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_first2first;
4892 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_first2first;
4893 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_first2first;
4894 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_first2first;
4895 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_first2first;
4896 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_first2first;
4897 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_first2first;
4898 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_first2last;
4899 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_first2last;
4900 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_first2last;
4901 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_first2last;
4902 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_first2last;
4903 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_first2last;
4904 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_first2last;
4905 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_first2last;
4906 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_first2last;
4907 translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_first2last;
4908 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_last2first;
4909 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_last2first;
4910 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_last2first;
4911 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_last2first;
4912 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_last2first;
4913 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_last2first;
4914 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_last2first;
4915 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_last2first;
4916 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_last2first;
4917 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_last2first;
4918 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_last2last;
4919 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_last2last;
4920 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_last2last;
4921 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_last2last;
4922 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_last2last;
4923 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_last2last;
4924 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_last2last;
4925 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_last2last;
4926 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_last2last;
4927 translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_last2last;
4928 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_first2first;
4929 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_first2first;
4930 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_first2first;
4931 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_first2first;
4932 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_first2first;
4933 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_first2first;
4934 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_first2first;
4935 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_first2first;
4936 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_first2first;
4937 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_first2first;
4938 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_first2last;
4939 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_first2last;
4940 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_first2last;
4941 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_first2last;
4942 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_first2last;
4943 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_first2last;
4944 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_first2last;
4945 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_first2last;
4946 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_first2last;
4947 translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_first2last;
4948 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_last2first;
4949 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_last2first;
4950 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_last2first;
4951 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_last2first;
4952 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_last2first;
4953 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_last2first;
4954 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_last2first;
4955 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_last2first;
4956 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_last2first;
4957 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_last2first;
4958 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_last2last;
4959 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_last2last;
4960 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_last2last;
4961 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_last2last;
4962 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_last2last;
4963 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_last2last;
4964 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_last2last;
4965 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_last2last;
4966 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_last2last;
4967 translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_last2last;
4968 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_first2first;
4969 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_first2first;
4970 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_first2first;
4971 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_first2first;
4972 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_first2first;
4973 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_first2first;
4974 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_first2first;
4975 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_first2first;
4976 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_first2first;
4977 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_first2first;
4978 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_first2last;
4979 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_first2last;
4980 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_first2last;
4981 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_first2last;
4982 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_first2last;
4983 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_first2last;
4984 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_first2last;
4985 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_first2last;
4986 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_first2last;
4987 translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_first2last;
4988 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_last2first;
4989 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_last2first;
4990 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_last2first;
4991 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_last2first;
4992 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_last2first;
4993 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_last2first;
4994 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_last2first;
4995 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_last2first;
4996 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_last2first;
4997 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_last2first;
4998 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_last2last;
4999 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_last2last;
5000 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_last2last;
5001 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_last2last;
5002 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_last2last;
5003 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_last2last;
5004 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_last2last;
5005 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_last2last;
5006 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_last2last;
5007 translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_last2last;
5008 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_first2first;
5009 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_first2first;
5010 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_first2first;
5011 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_first2first;
5012 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_first2first;
5013 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_first2first;
5014 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_first2first;
5015 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_first2first;
5016 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_first2first;
5017 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_first2first;
5018 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_first2last;
5019 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_first2last;
5020 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_first2last;
5021 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_first2last;
5022 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_first2last;
5023 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_first2last;
5024 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_first2last;
5025 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_first2last;
5026 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_first2last;
5027 translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_first2last;
5028 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_last2first;
5029 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_last2first;
5030 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_last2first;
5031 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_last2first;
5032 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_last2first;
5033 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_last2first;
5034 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_last2first;
5035 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_last2first;
5036 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_last2first;
5037 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_last2first;
5038 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_last2last;
5039 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_last2last;
5040 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_last2last;
5041 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_last2last;
5042 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_last2last;
5043 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_last2last;
5044 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_last2last;
5045 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_last2last;
5046 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_last2last;
5047 translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_last2last;
5048 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_first2first;
5049 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_first2first;
5050 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_first2first;
5051 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_first2first;
5052 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_first2first;
5053 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_first2first;
5054 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_first2first;
5055 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_first2first;
5056 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_first2first;
5057 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_first2first;
5058 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_first2last;
5059 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_first2last;
5060 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_first2last;
5061 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_first2last;
5062 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_first2last;
5063 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_first2last;
5064 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_first2last;
5065 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_first2last;
5066 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_first2last;
5067 translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_first2last;
5068 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_last2first;
5069 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_last2first;
5070 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_last2first;
5071 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_last2first;
5072 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_last2first;
5073 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_last2first;
5074 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_last2first;
5075 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_last2first;
5076 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_last2first;
5077 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_last2first;
5078 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_last2last;
5079 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_last2last;
5080 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_last2last;
5081 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_last2last;
5082 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_last2last;
5083 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_last2last;
5084 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_last2last;
5085 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_last2last;
5086 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_last2last;
5087 translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_last2last;
5088 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2uint_first2first;
5089 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2uint_first2first;
5090 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_first2first;
5091 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_first2first;
5092 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_first2first;
5093 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_first2first;
5094 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_first2first;
5095 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_first2first;
5096 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_first2first;
5097 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_first2first;
5098 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2uint_first2last;
5099 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2uint_first2last;
5100 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_first2last;
5101 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_first2last;
5102 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_first2last;
5103 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_first2last;
5104 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_first2last;
5105 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_first2last;
5106 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_first2last;
5107 translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_first2last;
5108 translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2uint_last2first;
5109 translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2uint_last2first;
5110 translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_last2first;
5111 translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_last2first;
5112 translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_last2first;
5113 translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_last2first;
5114 translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_last2first;
5115 translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_last2first;
5116 translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_last2first;
5117 translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_last2first;
5118 translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2uint_last2last;
5119 translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2uint_last2last;
5120 translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_last2last;
5121 translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_last2last;
5122 translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_last2last;
5123 translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_last2last;
5124 translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_last2last;
5125 translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_last2last;
5126 translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_last2last;
5127 translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_last2last;
5128 }
5129 #include "indices/u_indices.c"