[Mesa-dev] [PATCH] gallium: untrack u_indices_gen.c and u_indices_gen.c

Xavier Chantry chantry.xavier at gmail.com
Sun May 2 15:56:50 PDT 2010


These files are built with make and removed with make clean, so it does not
seem necessary to track them.

Looking at the Makefile, it seems that the two u_indices_* files are handled
similarly to u_format_srgb.c u_format_table.c and u_half.c, and these 3
files are already untracked and in .gitignore

Signed-off-by: Xavier Chantry <chantry.xavier at gmail.com>
---
 src/gallium/auxiliary/indices/.gitignore       |    2 +
 src/gallium/auxiliary/indices/u_indices_gen.c  | 5129 ------------------------
 src/gallium/auxiliary/indices/u_unfilled_gen.c |  992 -----
 3 files changed, 2 insertions(+), 6121 deletions(-)
 create mode 100644 src/gallium/auxiliary/indices/.gitignore
 delete mode 100644 src/gallium/auxiliary/indices/u_indices_gen.c
 delete mode 100644 src/gallium/auxiliary/indices/u_unfilled_gen.c

diff --git a/src/gallium/auxiliary/indices/.gitignore b/src/gallium/auxiliary/indices/.gitignore
new file mode 100644
index 0000000..7374007
--- /dev/null
+++ b/src/gallium/auxiliary/indices/.gitignore
@@ -0,0 +1,2 @@
+u_indices_gen.c
+u_unfilled_gen.c
diff --git a/src/gallium/auxiliary/indices/u_indices_gen.c b/src/gallium/auxiliary/indices/u_indices_gen.c
deleted file mode 100644
index 3c981e5..0000000
--- a/src/gallium/auxiliary/indices/u_indices_gen.c
+++ /dev/null
@@ -1,5129 +0,0 @@
-/* File automatically generated by indices.py */
-
-/*
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
- * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-
-/**
- * @file
- * Functions to translate and generate index lists
- */
-
-#include "indices/u_indices.h"
-#include "indices/u_indices_priv.h"
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-#include "pipe/p_defines.h"
-#include "util/u_memory.h"
-
-
-static unsigned out_size_idx( unsigned index_size )
-{
-   switch (index_size) {
-   case 4: return OUT_UINT;
-   case 2: return OUT_USHORT;
-   default: assert(0); return OUT_USHORT;
-   }
-}
-
-static unsigned in_size_idx( unsigned index_size )
-{
-   switch (index_size) {
-   case 4: return IN_UINT;
-   case 2: return IN_USHORT;
-   case 1: return IN_UBYTE;
-   default: assert(0); return IN_UBYTE;
-   }
-}
-
-
-static u_translate_func translate[IN_COUNT][OUT_COUNT][PV_COUNT][PV_COUNT][PRIM_COUNT];
-static u_generate_func  generate[OUT_COUNT][PV_COUNT][PV_COUNT][PRIM_COUNT];
-
-
-
-static void generate_points_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)(i);
-   }
-}
-static void generate_lines_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)(i);
-      (out+i)[1] = (ushort)(i+1);
-   }
-}
-static void generate_linestrip_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1);
-   }
-}
-static void generate_lineloop_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1);
-   }
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(0);
-}
-static void generate_tris_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)(i);
-      (out+i)[1] = (ushort)(i+1);
-      (out+i)[2] = (ushort)(i+2);
-   }
-}
-static void generate_tristrip_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1+(i&1));
-      (out+j)[2] = (ushort)(i+2-(i&1));
-   }
-}
-static void generate_trifan_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j)[2] = (ushort)(i+2);
-   }
-}
-static void generate_quads_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)(i+0);
-      (out+j+0)[1] = (ushort)(i+1);
-      (out+j+0)[2] = (ushort)(i+3);
-      (out+j+3)[0] = (ushort)(i+1);
-      (out+j+3)[1] = (ushort)(i+2);
-      (out+j+3)[2] = (ushort)(i+3);
-   }
-}
-static void generate_quadstrip_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)(i+2);
-      (out+j+0)[1] = (ushort)(i+0);
-      (out+j+0)[2] = (ushort)(i+3);
-      (out+j+3)[0] = (ushort)(i+0);
-      (out+j+3)[1] = (ushort)(i+1);
-      (out+j+3)[2] = (ushort)(i+3);
-   }
-}
-static void generate_polygon_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j)[2] = (ushort)(i+2);
-   }
-}
-static void generate_points_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)(i);
-   }
-}
-static void generate_lines_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)(i+1);
-      (out+i)[1] = (ushort)(i);
-   }
-}
-static void generate_linestrip_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i);
-   }
-}
-static void generate_lineloop_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i);
-   }
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i);
-}
-static void generate_tris_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)(i+1);
-      (out+i)[1] = (ushort)(i+2);
-      (out+i)[2] = (ushort)(i);
-   }
-}
-static void generate_tristrip_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+1+(i&1));
-      (out+j)[1] = (ushort)(i+2-(i&1));
-      (out+j)[2] = (ushort)(i);
-   }
-}
-static void generate_trifan_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i+2);
-      (out+j)[2] = (ushort)(0);
-   }
-}
-static void generate_quads_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)(i+1);
-      (out+j+0)[1] = (ushort)(i+3);
-      (out+j+0)[2] = (ushort)(i+0);
-      (out+j+3)[0] = (ushort)(i+2);
-      (out+j+3)[1] = (ushort)(i+3);
-      (out+j+3)[2] = (ushort)(i+1);
-   }
-}
-static void generate_quadstrip_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)(i+0);
-      (out+j+0)[1] = (ushort)(i+3);
-      (out+j+0)[2] = (ushort)(i+2);
-      (out+j+3)[0] = (ushort)(i+1);
-      (out+j+3)[1] = (ushort)(i+3);
-      (out+j+3)[2] = (ushort)(i+0);
-   }
-}
-static void generate_polygon_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i+2);
-      (out+j)[2] = (ushort)(0);
-   }
-}
-static void generate_points_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)(i);
-   }
-}
-static void generate_lines_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)(i+1);
-      (out+i)[1] = (ushort)(i);
-   }
-}
-static void generate_linestrip_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i);
-   }
-}
-static void generate_lineloop_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i);
-   }
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i);
-}
-static void generate_tris_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)(i+2);
-      (out+i)[1] = (ushort)(i);
-      (out+i)[2] = (ushort)(i+1);
-   }
-}
-static void generate_tristrip_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+2);
-      (out+j)[1] = (ushort)(i+(i&1));
-      (out+j)[2] = (ushort)(i+1-(i&1));
-   }
-}
-static void generate_trifan_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+2);
-      (out+j)[1] = (ushort)(0);
-      (out+j)[2] = (ushort)(i+1);
-   }
-}
-static void generate_quads_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)(i+3);
-      (out+j+0)[1] = (ushort)(i+0);
-      (out+j+0)[2] = (ushort)(i+1);
-      (out+j+3)[0] = (ushort)(i+3);
-      (out+j+3)[1] = (ushort)(i+1);
-      (out+j+3)[2] = (ushort)(i+2);
-   }
-}
-static void generate_quadstrip_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)(i+3);
-      (out+j+0)[1] = (ushort)(i+2);
-      (out+j+0)[2] = (ushort)(i+0);
-      (out+j+3)[0] = (ushort)(i+3);
-      (out+j+3)[1] = (ushort)(i+0);
-      (out+j+3)[2] = (ushort)(i+1);
-   }
-}
-static void generate_polygon_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j)[2] = (ushort)(i+2);
-   }
-}
-static void generate_points_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)(i);
-   }
-}
-static void generate_lines_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)(i);
-      (out+i)[1] = (ushort)(i+1);
-   }
-}
-static void generate_linestrip_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1);
-   }
-}
-static void generate_lineloop_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1);
-   }
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(0);
-}
-static void generate_tris_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)(i);
-      (out+i)[1] = (ushort)(i+1);
-      (out+i)[2] = (ushort)(i+2);
-   }
-}
-static void generate_tristrip_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+(i&1));
-      (out+j)[1] = (ushort)(i+1-(i&1));
-      (out+j)[2] = (ushort)(i+2);
-   }
-}
-static void generate_trifan_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j)[2] = (ushort)(i+2);
-   }
-}
-static void generate_quads_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)(i+0);
-      (out+j+0)[1] = (ushort)(i+1);
-      (out+j+0)[2] = (ushort)(i+3);
-      (out+j+3)[0] = (ushort)(i+1);
-      (out+j+3)[1] = (ushort)(i+2);
-      (out+j+3)[2] = (ushort)(i+3);
-   }
-}
-static void generate_quadstrip_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)(i+2);
-      (out+j+0)[1] = (ushort)(i+0);
-      (out+j+0)[2] = (ushort)(i+3);
-      (out+j+3)[0] = (ushort)(i+0);
-      (out+j+3)[1] = (ushort)(i+1);
-      (out+j+3)[2] = (ushort)(i+3);
-   }
-}
-static void generate_polygon_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i+2);
-      (out+j)[2] = (ushort)(0);
-   }
-}
-static void generate_points_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)(i);
-   }
-}
-static void generate_lines_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)(i);
-      (out+i)[1] = (uint)(i+1);
-   }
-}
-static void generate_linestrip_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1);
-   }
-}
-static void generate_lineloop_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1);
-   }
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(0);
-}
-static void generate_tris_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)(i);
-      (out+i)[1] = (uint)(i+1);
-      (out+i)[2] = (uint)(i+2);
-   }
-}
-static void generate_tristrip_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1+(i&1));
-      (out+j)[2] = (uint)(i+2-(i&1));
-   }
-}
-static void generate_trifan_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j)[2] = (uint)(i+2);
-   }
-}
-static void generate_quads_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)(i+0);
-      (out+j+0)[1] = (uint)(i+1);
-      (out+j+0)[2] = (uint)(i+3);
-      (out+j+3)[0] = (uint)(i+1);
-      (out+j+3)[1] = (uint)(i+2);
-      (out+j+3)[2] = (uint)(i+3);
-   }
-}
-static void generate_quadstrip_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)(i+2);
-      (out+j+0)[1] = (uint)(i+0);
-      (out+j+0)[2] = (uint)(i+3);
-      (out+j+3)[0] = (uint)(i+0);
-      (out+j+3)[1] = (uint)(i+1);
-      (out+j+3)[2] = (uint)(i+3);
-   }
-}
-static void generate_polygon_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j)[2] = (uint)(i+2);
-   }
-}
-static void generate_points_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)(i);
-   }
-}
-static void generate_lines_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)(i+1);
-      (out+i)[1] = (uint)(i);
-   }
-}
-static void generate_linestrip_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i);
-   }
-}
-static void generate_lineloop_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i);
-   }
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i);
-}
-static void generate_tris_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)(i+1);
-      (out+i)[1] = (uint)(i+2);
-      (out+i)[2] = (uint)(i);
-   }
-}
-static void generate_tristrip_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+1+(i&1));
-      (out+j)[1] = (uint)(i+2-(i&1));
-      (out+j)[2] = (uint)(i);
-   }
-}
-static void generate_trifan_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i+2);
-      (out+j)[2] = (uint)(0);
-   }
-}
-static void generate_quads_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)(i+1);
-      (out+j+0)[1] = (uint)(i+3);
-      (out+j+0)[2] = (uint)(i+0);
-      (out+j+3)[0] = (uint)(i+2);
-      (out+j+3)[1] = (uint)(i+3);
-      (out+j+3)[2] = (uint)(i+1);
-   }
-}
-static void generate_quadstrip_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)(i+0);
-      (out+j+0)[1] = (uint)(i+3);
-      (out+j+0)[2] = (uint)(i+2);
-      (out+j+3)[0] = (uint)(i+1);
-      (out+j+3)[1] = (uint)(i+3);
-      (out+j+3)[2] = (uint)(i+0);
-   }
-}
-static void generate_polygon_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i+2);
-      (out+j)[2] = (uint)(0);
-   }
-}
-static void generate_points_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)(i);
-   }
-}
-static void generate_lines_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)(i+1);
-      (out+i)[1] = (uint)(i);
-   }
-}
-static void generate_linestrip_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i);
-   }
-}
-static void generate_lineloop_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i);
-   }
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i);
-}
-static void generate_tris_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)(i+2);
-      (out+i)[1] = (uint)(i);
-      (out+i)[2] = (uint)(i+1);
-   }
-}
-static void generate_tristrip_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+2);
-      (out+j)[1] = (uint)(i+(i&1));
-      (out+j)[2] = (uint)(i+1-(i&1));
-   }
-}
-static void generate_trifan_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+2);
-      (out+j)[1] = (uint)(0);
-      (out+j)[2] = (uint)(i+1);
-   }
-}
-static void generate_quads_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)(i+3);
-      (out+j+0)[1] = (uint)(i+0);
-      (out+j+0)[2] = (uint)(i+1);
-      (out+j+3)[0] = (uint)(i+3);
-      (out+j+3)[1] = (uint)(i+1);
-      (out+j+3)[2] = (uint)(i+2);
-   }
-}
-static void generate_quadstrip_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)(i+3);
-      (out+j+0)[1] = (uint)(i+2);
-      (out+j+0)[2] = (uint)(i+0);
-      (out+j+3)[0] = (uint)(i+3);
-      (out+j+3)[1] = (uint)(i+0);
-      (out+j+3)[2] = (uint)(i+1);
-   }
-}
-static void generate_polygon_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j)[2] = (uint)(i+2);
-   }
-}
-static void generate_points_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)(i);
-   }
-}
-static void generate_lines_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)(i);
-      (out+i)[1] = (uint)(i+1);
-   }
-}
-static void generate_linestrip_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1);
-   }
-}
-static void generate_lineloop_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1);
-   }
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(0);
-}
-static void generate_tris_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)(i);
-      (out+i)[1] = (uint)(i+1);
-      (out+i)[2] = (uint)(i+2);
-   }
-}
-static void generate_tristrip_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+(i&1));
-      (out+j)[1] = (uint)(i+1-(i&1));
-      (out+j)[2] = (uint)(i+2);
-   }
-}
-static void generate_trifan_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j)[2] = (uint)(i+2);
-   }
-}
-static void generate_quads_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)(i+0);
-      (out+j+0)[1] = (uint)(i+1);
-      (out+j+0)[2] = (uint)(i+3);
-      (out+j+3)[0] = (uint)(i+1);
-      (out+j+3)[1] = (uint)(i+2);
-      (out+j+3)[2] = (uint)(i+3);
-   }
-}
-static void generate_quadstrip_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)(i+2);
-      (out+j+0)[1] = (uint)(i+0);
-      (out+j+0)[2] = (uint)(i+3);
-      (out+j+3)[0] = (uint)(i+0);
-      (out+j+3)[1] = (uint)(i+1);
-      (out+j+3)[2] = (uint)(i+3);
-   }
-}
-static void generate_polygon_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i+2);
-      (out+j)[2] = (uint)(0);
-   }
-}
-static void translate_points_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1+(i&1)];
-      (out+j)[2] = (ushort)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i+2];
-      (out+i)[2] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1+(i&1)];
-      (out+j)[1] = (ushort)in[i+2-(i&1)];
-      (out+j)[2] = (ushort)in[i];
-   }
-}
-static void translate_trifan_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_quads_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+1];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+2];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quadstrip_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+2];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+0];
-   }
-}
-static void translate_polygon_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+2];
-      (out+i)[1] = (ushort)in[i];
-      (out+i)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_tristrip_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+(i&1)];
-      (out+j)[2] = (ushort)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[0];
-      (out+j)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quads_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+1];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quadstrip_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+2];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+0];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_polygon_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+(i&1)];
-      (out+j)[1] = (ushort)in[i+1-(i&1)];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_trifan_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1+(i&1)];
-      (out+j)[2] = (uint)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i+2];
-      (out+i)[2] = (uint)in[i];
-   }
-}
-static void translate_tristrip_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1+(i&1)];
-      (out+j)[1] = (uint)in[i+2-(i&1)];
-      (out+j)[2] = (uint)in[i];
-   }
-}
-static void translate_trifan_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_quads_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+1];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+2];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quadstrip_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+2];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+0];
-   }
-}
-static void translate_polygon_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_points_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+2];
-      (out+i)[1] = (uint)in[i];
-      (out+i)[2] = (uint)in[i+1];
-   }
-}
-static void translate_tristrip_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+(i&1)];
-      (out+j)[2] = (uint)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[0];
-      (out+j)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quads_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+1];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quadstrip_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+2];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+0];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_polygon_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+(i&1)];
-      (out+j)[1] = (uint)in[i+1-(i&1)];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_trifan_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_points_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1+(i&1)];
-      (out+j)[2] = (ushort)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i+2];
-      (out+i)[2] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1+(i&1)];
-      (out+j)[1] = (ushort)in[i+2-(i&1)];
-      (out+j)[2] = (ushort)in[i];
-   }
-}
-static void translate_trifan_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_quads_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+1];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+2];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quadstrip_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+2];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+0];
-   }
-}
-static void translate_polygon_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+2];
-      (out+i)[1] = (ushort)in[i];
-      (out+i)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_tristrip_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+(i&1)];
-      (out+j)[2] = (ushort)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[0];
-      (out+j)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quads_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+1];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quadstrip_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+2];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+0];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_polygon_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+(i&1)];
-      (out+j)[1] = (ushort)in[i+1-(i&1)];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_trifan_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1+(i&1)];
-      (out+j)[2] = (uint)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i+2];
-      (out+i)[2] = (uint)in[i];
-   }
-}
-static void translate_tristrip_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1+(i&1)];
-      (out+j)[1] = (uint)in[i+2-(i&1)];
-      (out+j)[2] = (uint)in[i];
-   }
-}
-static void translate_trifan_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_quads_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+1];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+2];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quadstrip_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+2];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+0];
-   }
-}
-static void translate_polygon_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_points_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+2];
-      (out+i)[1] = (uint)in[i];
-      (out+i)[2] = (uint)in[i+1];
-   }
-}
-static void translate_tristrip_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+(i&1)];
-      (out+j)[2] = (uint)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[0];
-      (out+j)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quads_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+1];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quadstrip_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+2];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+0];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_polygon_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+(i&1)];
-      (out+j)[1] = (uint)in[i+1-(i&1)];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_trifan_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_points_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1+(i&1)];
-      (out+j)[2] = (ushort)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i+2];
-      (out+i)[2] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1+(i&1)];
-      (out+j)[1] = (ushort)in[i+2-(i&1)];
-      (out+j)[2] = (ushort)in[i];
-   }
-}
-static void translate_trifan_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_quads_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+1];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+2];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quadstrip_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+2];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+0];
-   }
-}
-static void translate_polygon_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+2];
-      (out+i)[1] = (ushort)in[i];
-      (out+i)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_tristrip_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+(i&1)];
-      (out+j)[2] = (ushort)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[0];
-      (out+j)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quads_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+1];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quadstrip_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+2];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+0];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_polygon_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+(i&1)];
-      (out+j)[1] = (ushort)in[i+1-(i&1)];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_trifan_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1+(i&1)];
-      (out+j)[2] = (uint)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i+2];
-      (out+i)[2] = (uint)in[i];
-   }
-}
-static void translate_tristrip_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1+(i&1)];
-      (out+j)[1] = (uint)in[i+2-(i&1)];
-      (out+j)[2] = (uint)in[i];
-   }
-}
-static void translate_trifan_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_quads_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+1];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+2];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quadstrip_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+2];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+0];
-   }
-}
-static void translate_polygon_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_points_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+2];
-      (out+i)[1] = (uint)in[i];
-      (out+i)[2] = (uint)in[i+1];
-   }
-}
-static void translate_tristrip_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+(i&1)];
-      (out+j)[2] = (uint)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[0];
-      (out+j)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quads_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+1];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quadstrip_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+2];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+0];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_polygon_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+(i&1)];
-      (out+j)[1] = (uint)in[i+1-(i&1)];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_trifan_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-void u_index_init( void )
-{
-  static int firsttime = 1;
-  if (!firsttime) return;
-  firsttime = 0;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_first2last;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_last2last;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_uint_first2last;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_uint_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_last2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_last2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_last2last;
-}
-#include "indices/u_indices.c"
diff --git a/src/gallium/auxiliary/indices/u_unfilled_gen.c b/src/gallium/auxiliary/indices/u_unfilled_gen.c
deleted file mode 100644
index 93897c9..0000000
--- a/src/gallium/auxiliary/indices/u_unfilled_gen.c
+++ /dev/null
@@ -1,992 +0,0 @@
-/* File automatically generated by u_unfilled_gen.py */
-
-/*
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
- * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-
-/**
- * @file
- * Functions to translate and generate index lists
- */
-
-#include "indices/u_indices.h"
-#include "indices/u_indices_priv.h"
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-#include "pipe/p_defines.h"
-#include "util/u_memory.h"
-
-
-static unsigned out_size_idx( unsigned index_size )
-{
-   switch (index_size) {
-   case 4: return OUT_UINT;
-   case 2: return OUT_USHORT;
-   default: assert(0); return OUT_USHORT;
-   }
-}
-
-static unsigned in_size_idx( unsigned index_size )
-{
-   switch (index_size) {
-   case 4: return IN_UINT;
-   case 2: return IN_USHORT;
-   case 1: return IN_UBYTE;
-   default: assert(0); return IN_UBYTE;
-   }
-}
-
-
-static u_generate_func generate_line[OUT_COUNT][PRIM_COUNT];
-static u_translate_func translate_line[IN_COUNT][OUT_COUNT][PRIM_COUNT];
-
-
-static void generate_tris_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j+2)[0] = (ushort)(i+1);
-      (out+j+2)[1] = (ushort)(i+2);
-      (out+j+4)[0] = (ushort)(i+2);
-      (out+j+4)[1] = (ushort)(i);
-   }
-}
-static void generate_tristrip_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1/*+(i&1)*/);
-      (out+j+2)[0] = (ushort)(i+1/*+(i&1)*/);
-      (out+j+2)[1] = (ushort)(i+2/*-(i&1)*/);
-      (out+j+4)[0] = (ushort)(i+2/*-(i&1)*/);
-      (out+j+4)[1] = (ushort)(i);
-   }
-}
-static void generate_trifan_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j+2)[0] = (ushort)(i+1);
-      (out+j+2)[1] = (ushort)(i+2);
-      (out+j+4)[0] = (ushort)(i+2);
-      (out+j+4)[1] = (ushort)(0);
-   }
-}
-static void generate_quads_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (ushort)(i+0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j+2)[0] = (ushort)(i+1);
-      (out+j+2)[1] = (ushort)(i+2);
-      (out+j+4)[0] = (ushort)(i+2);
-      (out+j+4)[1] = (ushort)(i+3);
-      (out+j+6)[0] = (ushort)(i+3);
-      (out+j+6)[1] = (ushort)(i+0);
-   }
-}
-static void generate_quadstrip_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (ushort)(i+2);
-      (out+j)[1] = (ushort)(i+0);
-      (out+j+2)[0] = (ushort)(i+0);
-      (out+j+2)[1] = (ushort)(i+1);
-      (out+j+4)[0] = (ushort)(i+1);
-      (out+j+4)[1] = (ushort)(i+3);
-      (out+j+6)[0] = (ushort)(i+3);
-      (out+j+6)[1] = (ushort)(i+2);
-   }
-}
-static void generate_polygon_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j+2)[0] = (ushort)(i+1);
-      (out+j+2)[1] = (ushort)(i+2);
-      (out+j+4)[0] = (ushort)(i+2);
-      (out+j+4)[1] = (ushort)(0);
-   }
-}
-static void generate_tris_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1);
-      (out+j+2)[0] = (uint)(i+1);
-      (out+j+2)[1] = (uint)(i+2);
-      (out+j+4)[0] = (uint)(i+2);
-      (out+j+4)[1] = (uint)(i);
-   }
-}
-static void generate_tristrip_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1/*+(i&1)*/);
-      (out+j+2)[0] = (uint)(i+1/*+(i&1)*/);
-      (out+j+2)[1] = (uint)(i+2/*-(i&1)*/);
-      (out+j+4)[0] = (uint)(i+2/*-(i&1)*/);
-      (out+j+4)[1] = (uint)(i);
-   }
-}
-static void generate_trifan_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j+2)[0] = (uint)(i+1);
-      (out+j+2)[1] = (uint)(i+2);
-      (out+j+4)[0] = (uint)(i+2);
-      (out+j+4)[1] = (uint)(0);
-   }
-}
-static void generate_quads_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (uint)(i+0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j+2)[0] = (uint)(i+1);
-      (out+j+2)[1] = (uint)(i+2);
-      (out+j+4)[0] = (uint)(i+2);
-      (out+j+4)[1] = (uint)(i+3);
-      (out+j+6)[0] = (uint)(i+3);
-      (out+j+6)[1] = (uint)(i+0);
-   }
-}
-static void generate_quadstrip_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (uint)(i+2);
-      (out+j)[1] = (uint)(i+0);
-      (out+j+2)[0] = (uint)(i+0);
-      (out+j+2)[1] = (uint)(i+1);
-      (out+j+4)[0] = (uint)(i+1);
-      (out+j+4)[1] = (uint)(i+3);
-      (out+j+6)[0] = (uint)(i+3);
-      (out+j+6)[1] = (uint)(i+2);
-   }
-}
-static void generate_polygon_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j+2)[0] = (uint)(i+1);
-      (out+j+2)[1] = (uint)(i+2);
-      (out+j+4)[0] = (uint)(i+2);
-      (out+j+4)[1] = (uint)(0);
-   }
-}
-static void translate_tris_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_trifan_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_quads_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (ushort)in[i+0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+0];
-   }
-}
-static void translate_quadstrip_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+0];
-      (out+j+2)[0] = (ushort)in[i+0];
-      (out+j+2)[1] = (ushort)in[i+1];
-      (out+j+4)[0] = (ushort)in[i+1];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+2];
-   }
-}
-static void translate_polygon_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_tris_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_tristrip_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_trifan_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-static void translate_quads_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (uint)in[i+0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+0];
-   }
-}
-static void translate_quadstrip_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+0];
-      (out+j+2)[0] = (uint)in[i+0];
-      (out+j+2)[1] = (uint)in[i+1];
-      (out+j+4)[0] = (uint)in[i+1];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+2];
-   }
-}
-static void translate_polygon_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-static void translate_tris_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_trifan_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_quads_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (ushort)in[i+0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+0];
-   }
-}
-static void translate_quadstrip_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+0];
-      (out+j+2)[0] = (ushort)in[i+0];
-      (out+j+2)[1] = (ushort)in[i+1];
-      (out+j+4)[0] = (ushort)in[i+1];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+2];
-   }
-}
-static void translate_polygon_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_tris_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_tristrip_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_trifan_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-static void translate_quads_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (uint)in[i+0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+0];
-   }
-}
-static void translate_quadstrip_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+0];
-      (out+j+2)[0] = (uint)in[i+0];
-      (out+j+2)[1] = (uint)in[i+1];
-      (out+j+4)[0] = (uint)in[i+1];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+2];
-   }
-}
-static void translate_polygon_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-static void translate_tris_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_trifan_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_quads_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (ushort)in[i+0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+0];
-   }
-}
-static void translate_quadstrip_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+0];
-      (out+j+2)[0] = (ushort)in[i+0];
-      (out+j+2)[1] = (ushort)in[i+1];
-      (out+j+4)[0] = (ushort)in[i+1];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+2];
-   }
-}
-static void translate_polygon_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_tris_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_tristrip_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_trifan_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-static void translate_quads_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (uint)in[i+0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+0];
-   }
-}
-static void translate_quadstrip_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+0];
-      (out+j+2)[0] = (uint)in[i+0];
-      (out+j+2)[1] = (uint)in[i+1];
-      (out+j+4)[0] = (uint)in[i+1];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+2];
-   }
-}
-static void translate_polygon_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-void u_unfilled_init( void )
-{
-  static int firsttime = 1;
-  if (!firsttime) return;
-  firsttime = 0;
-generate_line[OUT_USHORT][PIPE_PRIM_TRIANGLES] = generate_tris_ushort;
-generate_line[OUT_USHORT][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort;
-generate_line[OUT_USHORT][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort;
-generate_line[OUT_USHORT][PIPE_PRIM_QUADS] = generate_quads_ushort;
-generate_line[OUT_USHORT][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort;
-generate_line[OUT_USHORT][PIPE_PRIM_POLYGON] = generate_polygon_ushort;
-generate_line[OUT_UINT][PIPE_PRIM_TRIANGLES] = generate_tris_uint;
-generate_line[OUT_UINT][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint;
-generate_line[OUT_UINT][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint;
-generate_line[OUT_UINT][PIPE_PRIM_QUADS] = generate_quads_uint;
-generate_line[OUT_UINT][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint;
-generate_line[OUT_UINT][PIPE_PRIM_POLYGON] = generate_polygon_uint;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_QUADS] = translate_quads_ushort2uint;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_QUADS] = translate_quads_uint2ushort;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_QUADS] = translate_quads_uint2uint;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint;
-}
-#include "indices/u_unfilled_indices.c"
-- 
1.7.1



More information about the mesa-dev mailing list