123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/*
223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * Mesa 3-D graphics library
30395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Version:  6.5.1
422144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes *
50395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
622144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes *
723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * Permission is hereby granted, free of charge, to any person obtaining a
823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * copy of this software and associated documentation files (the "Software"),
923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * to deal in the Software without restriction, including without limitation
1023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * and/or sell copies of the Software, and to permit persons to whom the
1223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * Software is furnished to do so, subject to the following conditions:
1322144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes *
1423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * The above copyright notice and this permission notice shall be included
1523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * in all copies or substantial portions of the Software.
1622144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes *
1723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
2023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
2123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
2223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
2423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
250395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
260395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * \brief  Translate vectors of numbers between various types.
270395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * \author Keith Whitwell.
2823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
2923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
3023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
31bbd287103dad776d8a45c87c4e51fbc26d9b80d5Brian Paul#include "main/glheader.h"
323fdd9fa556e9ba48244cb2b3966d3bfb0b84731bVinson Lee#include "main/macros.h"
33bbd287103dad776d8a45c87c4e51fbc26d9b80d5Brian Paul#include "main/mtypes.h"		/* GLchan hack */
3423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
3523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_translate.h"
3623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
37cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
38cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
39cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwelltypedef void (*trans_1f_func)(GLfloat *to,
40cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			      CONST void *ptr,
41cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			      GLuint stride,
4222144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes			      GLuint start,
43cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			      GLuint n );
44cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
45cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwelltypedef void (*trans_1ui_func)(GLuint *to,
46cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			       CONST void *ptr,
47cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			       GLuint stride,
4822144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes			       GLuint start,
49cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			       GLuint n );
50cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
51cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwelltypedef void (*trans_1ub_func)(GLubyte *to,
52cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			       CONST void *ptr,
53cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			       GLuint stride,
54cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			       GLuint start,
55cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			       GLuint n );
56cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
57cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwelltypedef void (*trans_4ub_func)(GLubyte (*to)[4],
5874b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul                               CONST void *ptr,
5974b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul                               GLuint stride,
6074b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul                               GLuint start,
6174b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul                               GLuint n );
6274b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul
6374b493a5e61237de081a438e774e5d8139d4c6b7Brian Paultypedef void (*trans_4us_func)(GLushort (*to)[4],
6474b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul                               CONST void *ptr,
6574b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul                               GLuint stride,
6674b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul                               GLuint start,
6774b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul                               GLuint n );
68cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
69cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwelltypedef void (*trans_4f_func)(GLfloat (*to)[4],
70cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			      CONST void *ptr,
71cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			      GLuint stride,
7222144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes			      GLuint start,
73cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			      GLuint n );
74cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
757dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paultypedef void (*trans_3fn_func)(GLfloat (*to)[3],
76cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			      CONST void *ptr,
77cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			      GLuint stride,
7822144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes			      GLuint start,
79cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell			      GLuint n );
80cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
81cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
82cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
83cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
84cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell#define TYPE_IDX(t) ((t) & 0xf)
85cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell#define MAX_TYPES TYPE_IDX(GL_DOUBLE)+1      /* 0xa + 1 */
86cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
87cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
8823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* This macro is used on other systems, so undefine it for this module */
8923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
9023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef	CHECK
9123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
92cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellstatic trans_1f_func  _math_trans_1f_tab[MAX_TYPES];
93cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellstatic trans_1ui_func _math_trans_1ui_tab[MAX_TYPES];
94cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellstatic trans_1ub_func _math_trans_1ub_tab[MAX_TYPES];
957dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paulstatic trans_3fn_func  _math_trans_3fn_tab[MAX_TYPES];
96cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellstatic trans_4ub_func _math_trans_4ub_tab[5][MAX_TYPES];
9774b493a5e61237de081a438e774e5d8139d4c6b7Brian Paulstatic trans_4us_func _math_trans_4us_tab[5][MAX_TYPES];
98cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellstatic trans_4f_func  _math_trans_4f_tab[5][MAX_TYPES];
997dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paulstatic trans_4f_func  _math_trans_4fn_tab[5][MAX_TYPES];
10023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
10123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
10223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define PTR_ELT(ptr, elt) (((SRC *)ptr)[elt])
10323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
10423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
105cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell#define TAB(x) _math_trans##x##_tab
10623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define ARGS   GLuint start, GLuint n
10723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC_START  start
10823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DST_START  0
10923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define STRIDE stride
11023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define NEXT_F f += stride
11123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define NEXT_F2
11223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define CHECK
11323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
11423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
11523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
11623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
1170395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
1180395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate from GL_BYTE.
11923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
12023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC GLbyte
12123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC_IDX TYPE_IDX(GL_BYTE)
1227dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_3FN(f,n)   BYTE_TO_FLOAT( PTR_ELT(f,n) )
1230395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul#if 1
1245f2230c7bf9432187103ab6c890c0d560c203d5cKeith Whitwell#define TRX_4F(f,n)   BYTE_TO_FLOAT( PTR_ELT(f,n) )
1250395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul#else
1260395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul#define TRX_4F(f,n)   (GLfloat)( PTR_ELT(f,n) )
1270395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul#endif
1287dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_4FN(f,n)   BYTE_TO_FLOAT( PTR_ELT(f,n) )
12923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UB(ub, f,n)  ub = BYTE_TO_UBYTE( PTR_ELT(f,n) )
13074b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define TRX_US(ch, f,n)  ch = BYTE_TO_USHORT( PTR_ELT(f,n) )
13123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UI(f,n)  (PTR_ELT(f,n) < 0 ? 0 : (GLuint)  PTR_ELT(f,n))
13223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
13323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
13423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 4
13523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_4_GLbyte_raw
13623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_4_GLbyte_4f_raw
1377dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_4_GLbyte_4fn_raw
13823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_4_GLbyte_4ub_raw
13974b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_4_GLbyte_4us_raw
14023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
14123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
14223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 3
14323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_3_GLbyte_raw
14423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_3_GLbyte_4f_raw
1457dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_3_GLbyte_4fn_raw
14623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_3_GLbyte_4ub_raw
14774b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_3_GLbyte_4us_raw
1487dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_3FN trans_3_GLbyte_3fn_raw
14923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
15023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
15123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 2
15223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_2_GLbyte_raw
15323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_2_GLbyte_4f_raw
1547dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_2_GLbyte_4fn_raw
15523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
15623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
15723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 1
15823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_1_GLbyte_raw
15923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_1_GLbyte_4f_raw
1607dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_1_GLbyte_4fn_raw
16123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UB trans_1_GLbyte_1ub_raw
16223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UI trans_1_GLbyte_1ui_raw
16323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
16423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
16523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC
1667dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_3FN
16723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_4F
1687dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_4FN
16923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UB
17074b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#undef TRX_US
17123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UI
17223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC_IDX
17323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
17474b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul
1750395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
1760395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate from GL_UNSIGNED_BYTE.
17723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
17823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC GLubyte
17923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC_IDX TYPE_IDX(GL_UNSIGNED_BYTE)
1807dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_3FN(f,n)	     UBYTE_TO_FLOAT(PTR_ELT(f,n))
1810395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul#define TRX_4F(f,n)	     (GLfloat)( PTR_ELT(f,n) )
1827dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_4FN(f,n)	     UBYTE_TO_FLOAT(PTR_ELT(f,n))
18323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UB(ub, f,n)	     ub = PTR_ELT(f,n)
18474b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define TRX_US(us, f,n)      us = UBYTE_TO_USHORT(PTR_ELT(f,n))
18523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UI(f,n)          (GLuint)PTR_ELT(f,n)
18623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
18723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* 4ub->4ub handled in special case below.
18823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
18951c0c71811508b6658e0d5dcff8426b618322a73Keith Whitwell#define SZ 4
19051c0c71811508b6658e0d5dcff8426b618322a73Keith Whitwell#define INIT init_trans_4_GLubyte_raw
19151c0c71811508b6658e0d5dcff8426b618322a73Keith Whitwell#define DEST_4F trans_4_GLubyte_4f_raw
1927dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_4_GLubyte_4fn_raw
19351c0c71811508b6658e0d5dcff8426b618322a73Keith Whitwell#define DEST_4US trans_4_GLubyte_4us_raw
19451c0c71811508b6658e0d5dcff8426b618322a73Keith Whitwell#include "m_trans_tmp.h"
19551c0c71811508b6658e0d5dcff8426b618322a73Keith Whitwell
19623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
19723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 3
19823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_3_GLubyte_raw
19923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_3_GLubyte_4ub_raw
20074b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_3_GLubyte_4us_raw
2017dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_3FN trans_3_GLubyte_3fn_raw
20251c0c71811508b6658e0d5dcff8426b618322a73Keith Whitwell#define DEST_4F trans_3_GLubyte_4f_raw
2037dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_3_GLubyte_4fn_raw
20423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
20523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
20623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
20723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 1
20823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_1_GLubyte_raw
20923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UI trans_1_GLubyte_1ui_raw
21023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UB trans_1_GLubyte_1ub_raw
21123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
21223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
21323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC
21423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC_IDX
2157dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_3FN
21623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_4F
2177dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_4FN
21823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UB
21974b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#undef TRX_US
22023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UI
22123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
22223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
22323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* GL_SHORT
22423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
22523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC GLshort
22623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC_IDX TYPE_IDX(GL_SHORT)
2277dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_3FN(f,n)   SHORT_TO_FLOAT( PTR_ELT(f,n) )
22823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_4F(f,n)   (GLfloat)( PTR_ELT(f,n) )
2297dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_4FN(f,n)  SHORT_TO_FLOAT( PTR_ELT(f,n) )
23023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UB(ub, f,n)  ub = SHORT_TO_UBYTE(PTR_ELT(f,n))
23174b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define TRX_US(us, f,n)  us = SHORT_TO_USHORT(PTR_ELT(f,n))
23223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UI(f,n)  (PTR_ELT(f,n) < 0 ? 0 : (GLuint)  PTR_ELT(f,n))
23323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
23423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
23523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ  4
23623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_4_GLshort_raw
23723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_4_GLshort_4f_raw
2387dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_4_GLshort_4fn_raw
23923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_4_GLshort_4ub_raw
24074b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_4_GLshort_4us_raw
24123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
24223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
24323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 3
24423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_3_GLshort_raw
24523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_3_GLshort_4f_raw
2467dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_3_GLshort_4fn_raw
24723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_3_GLshort_4ub_raw
24874b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_3_GLshort_4us_raw
2497dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_3FN trans_3_GLshort_3fn_raw
25023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
25123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
25223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 2
25323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_2_GLshort_raw
25423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_2_GLshort_4f_raw
2557dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_2_GLshort_4fn_raw
25623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
25723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
25823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 1
25923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_1_GLshort_raw
26023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_1_GLshort_4f_raw
2617dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_1_GLshort_4fn_raw
26223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UB trans_1_GLshort_1ub_raw
26323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UI trans_1_GLshort_1ui_raw
26423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
26523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
26623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
26723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC
26823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC_IDX
2697dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_3FN
27023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_4F
2717dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_4FN
27223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UB
27374b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#undef TRX_US
27423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UI
27523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
27623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
27723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* GL_UNSIGNED_SHORT
27823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
27923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC GLushort
28023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC_IDX TYPE_IDX(GL_UNSIGNED_SHORT)
2817dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_3FN(f,n)   USHORT_TO_FLOAT( PTR_ELT(f,n) )
28223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_4F(f,n)   (GLfloat)( PTR_ELT(f,n) )
2837dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_4FN(f,n)  USHORT_TO_FLOAT( PTR_ELT(f,n) )
28423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UB(ub,f,n)  ub = (GLubyte) (PTR_ELT(f,n) >> 8)
2850395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul#define TRX_US(us,f,n)  us = PTR_ELT(f,n)
28623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UI(f,n)  (GLuint)   PTR_ELT(f,n)
28723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
28823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
28923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 4
29023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_4_GLushort_raw
29123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_4_GLushort_4f_raw
2927dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_4_GLushort_4fn_raw
29323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_4_GLushort_4ub_raw
29474b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_4_GLushort_4us_raw
29523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
29623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
29723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 3
29823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_3_GLushort_raw
29923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_3_GLushort_4f_raw
3007dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_3_GLushort_4fn_raw
30123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_3_GLushort_4ub_raw
30274b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_3_GLushort_4us_raw
3037dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_3FN trans_3_GLushort_3fn_raw
30423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
30523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
30623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 2
30723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_2_GLushort_raw
30823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_2_GLushort_4f_raw
3097dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_2_GLushort_4fn_raw
31023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
31123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
31223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 1
31323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_1_GLushort_raw
31423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_1_GLushort_4f_raw
3157dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_1_GLushort_4fn_raw
31623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UB trans_1_GLushort_1ub_raw
31723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UI trans_1_GLushort_1ui_raw
31823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
31923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
32023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC
32123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC_IDX
3227dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_3FN
32323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_4F
3247dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_4FN
32523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UB
32674b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#undef TRX_US
32723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UI
32823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
32923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
33023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* GL_INT
33123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
33223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC GLint
33323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC_IDX TYPE_IDX(GL_INT)
3347dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_3FN(f,n)   INT_TO_FLOAT( PTR_ELT(f,n) )
33523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_4F(f,n)   (GLfloat)( PTR_ELT(f,n) )
3367dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_4FN(f,n)  INT_TO_FLOAT( PTR_ELT(f,n) )
33723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UB(ub, f,n)  ub = INT_TO_UBYTE(PTR_ELT(f,n))
33874b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define TRX_US(us, f,n)  us = INT_TO_USHORT(PTR_ELT(f,n))
33923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UI(f,n)  (PTR_ELT(f,n) < 0 ? 0 : (GLuint)  PTR_ELT(f,n))
34023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
34123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
34223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 4
34323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_4_GLint_raw
34423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_4_GLint_4f_raw
3457dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_4_GLint_4fn_raw
34623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_4_GLint_4ub_raw
34774b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_4_GLint_4us_raw
34823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
34923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
35023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 3
35123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_3_GLint_raw
35223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_3_GLint_4f_raw
3537dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_3_GLint_4fn_raw
35423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_3_GLint_4ub_raw
35574b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_3_GLint_4us_raw
3567dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_3FN trans_3_GLint_3fn_raw
35723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
35823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
35923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 2
36023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_2_GLint_raw
36123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_2_GLint_4f_raw
3627dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_2_GLint_4fn_raw
36323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
36423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
36523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 1
36623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_1_GLint_raw
36723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_1_GLint_4f_raw
3687dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_1_GLint_4fn_raw
36923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UB trans_1_GLint_1ub_raw
37023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UI trans_1_GLint_1ui_raw
37123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
37223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
37323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
37423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC
37523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC_IDX
3767dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_3FN
37723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_4F
3787dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_4FN
37923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UB
38074b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#undef TRX_US
38123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UI
38223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
38323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
38423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* GL_UNSIGNED_INT
38523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
38623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC GLuint
38723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC_IDX TYPE_IDX(GL_UNSIGNED_INT)
3887dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_3FN(f,n)   INT_TO_FLOAT( PTR_ELT(f,n) )
38923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_4F(f,n)   (GLfloat)( PTR_ELT(f,n) )
3907dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_4FN(f,n)  UINT_TO_FLOAT( PTR_ELT(f,n) )
39123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UB(ub, f,n)  ub = (GLubyte) (PTR_ELT(f,n) >> 24)
39274b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define TRX_US(us, f,n)  us = (GLshort) (PTR_ELT(f,n) >> 16)
39323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UI(f,n)		PTR_ELT(f,n)
39423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
39523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
39623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 4
39723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_4_GLuint_raw
39823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_4_GLuint_4f_raw
3997dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_4_GLuint_4fn_raw
40023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_4_GLuint_4ub_raw
40174b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_4_GLuint_4us_raw
40223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
40323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
40423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 3
40523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_3_GLuint_raw
40623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_3_GLuint_4f_raw
4077dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_3_GLuint_4fn_raw
40823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_3_GLuint_4ub_raw
40974b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_3_GLuint_4us_raw
4107dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_3FN trans_3_GLuint_3fn_raw
41123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
41223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
41323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 2
41423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_2_GLuint_raw
41523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_2_GLuint_4f_raw
4167dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_2_GLuint_4fn_raw
41723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
41823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
41923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 1
42023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_1_GLuint_raw
42123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_1_GLuint_4f_raw
4227dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_1_GLuint_4fn_raw
42323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UB trans_1_GLuint_1ub_raw
42423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UI trans_1_GLuint_1ui_raw
42523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
42623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
42723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC
42823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC_IDX
4297dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_3FN
43023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_4F
4317dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_4FN
43223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UB
43374b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#undef TRX_US
43423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UI
43523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
43623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
43723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* GL_DOUBLE
43823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
43923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC GLdouble
44023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC_IDX TYPE_IDX(GL_DOUBLE)
4417dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_3FN(f,n)   (GLfloat) PTR_ELT(f,n)
4427b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz#define TRX_4F(f,n)   (GLfloat) PTR_ELT(f,n)
4437dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define TRX_4FN(f,n)   (GLfloat) PTR_ELT(f,n)
44474b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define TRX_UB(ub,f,n) UNCLAMPED_FLOAT_TO_UBYTE(ub, PTR_ELT(f,n))
44574b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define TRX_US(us,f,n) UNCLAMPED_FLOAT_TO_USHORT(us, PTR_ELT(f,n))
44623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define TRX_UI(f,n)  (GLuint) (GLint) PTR_ELT(f,n)
4477b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz#define TRX_1F(f,n)   (GLfloat) PTR_ELT(f,n)
44823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
44923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
45023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 4
45123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_4_GLdouble_raw
45223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_4_GLdouble_4f_raw
4537dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_4_GLdouble_4fn_raw
45423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_4_GLdouble_4ub_raw
45574b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_4_GLdouble_4us_raw
45623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
45723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
45823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 3
45923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_3_GLdouble_raw
46023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_3_GLdouble_4f_raw
4617dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_3_GLdouble_4fn_raw
46223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_3_GLdouble_4ub_raw
46374b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_3_GLdouble_4us_raw
4647dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_3FN trans_3_GLdouble_3fn_raw
46523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
46623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
46723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 2
46823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_2_GLdouble_raw
46923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_2_GLdouble_4f_raw
4707dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_2_GLdouble_4fn_raw
47123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
47223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
47323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 1
47423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_1_GLdouble_raw
47523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_1_GLdouble_4f_raw
4767dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_1_GLdouble_4fn_raw
47723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UB trans_1_GLdouble_1ub_raw
47823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UI trans_1_GLdouble_1ui_raw
47923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1F trans_1_GLdouble_1f_raw
48023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
48123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
48223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC
48323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC_IDX
48423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
48523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* GL_FLOAT
48623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */
48723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC GLfloat
48823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SRC_IDX TYPE_IDX(GL_FLOAT)
48923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 4
49022144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes#define INIT init_trans_4_GLfloat_raw
49122144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes#define DEST_4UB trans_4_GLfloat_4ub_raw
49222144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes#define DEST_4US trans_4_GLfloat_4us_raw
49323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F  trans_4_GLfloat_4f_raw
4947dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN  trans_4_GLfloat_4fn_raw
49523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
49623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
49723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 3
49823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_3_GLfloat_raw
49923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F  trans_3_GLfloat_4f_raw
5007dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN  trans_3_GLfloat_4fn_raw
50123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4UB trans_3_GLfloat_4ub_raw
50274b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#define DEST_4US trans_3_GLfloat_4us_raw
5037dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_3FN trans_3_GLfloat_3fn_raw
50423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
50523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
50623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 2
50723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_2_GLfloat_raw
50823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F trans_2_GLfloat_4f_raw
5097dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN trans_2_GLfloat_4fn_raw
51023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
51123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
51223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define SZ 1
51323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define INIT init_trans_1_GLfloat_raw
51423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_4F  trans_1_GLfloat_4f_raw
5157dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#define DEST_4FN  trans_1_GLfloat_4fn_raw
51623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UB trans_1_GLfloat_1ub_raw
51723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1UI trans_1_GLfloat_1ui_raw
51823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#define DEST_1F trans_1_GLfloat_1f_raw
51923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
52023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "m_trans_tmp.h"
52123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
52223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC
52323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC_IDX
5247dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_3FN
52523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_4F
5267dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul#undef TRX_4FN
52723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UB
52874b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul#undef TRX_US
52923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TRX_UI
53023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
53123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
53274b493a5e61237de081a438e774e5d8139d4c6b7Brian Paulstatic void trans_4_GLubyte_4ub_raw(GLubyte (*t)[4],
53374b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul				    CONST void *Ptr,
53474b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul				    GLuint stride,
53574b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul				    ARGS )
53623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell{
53723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   const GLubyte *f = (GLubyte *) Ptr + SRC_START * stride;
53823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   GLuint i;
53923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
5406258b76c49f49a56a7c713914b798e80c6553b06Karl Schultz   if (((((uintptr_t) f | (uintptr_t) stride)) & 3L) == 0L) {
54123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell      /* Aligned.
54223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell       */
54323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell      for (i = DST_START ; i < n ; i++, f += stride) {
54423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell	 COPY_4UBV( t[i], f );
54523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell      }
54623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   } else {
54723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell      for (i = DST_START ; i < n ; i++, f += stride) {
54823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell	 t[i][0] = f[0];
54923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell	 t[i][1] = f[1];
55023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell	 t[i][2] = f[2];
55123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell	 t[i][3] = f[3];
55223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell      }
55323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   }
55423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell}
55523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
55623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
55723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwellstatic void init_translate_raw(void)
55823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell{
5592240ba10f30315410bcff77e372ee71664ac4453Brian Paul   memset( TAB(_1ui), 0, sizeof(TAB(_1ui)) );
5602240ba10f30315410bcff77e372ee71664ac4453Brian Paul   memset( TAB(_1ub), 0, sizeof(TAB(_1ub)) );
5612240ba10f30315410bcff77e372ee71664ac4453Brian Paul   memset( TAB(_3fn),  0, sizeof(TAB(_3fn)) );
5622240ba10f30315410bcff77e372ee71664ac4453Brian Paul   memset( TAB(_4ub), 0, sizeof(TAB(_4ub)) );
5632240ba10f30315410bcff77e372ee71664ac4453Brian Paul   memset( TAB(_4us), 0, sizeof(TAB(_4us)) );
5642240ba10f30315410bcff77e372ee71664ac4453Brian Paul   memset( TAB(_4f),  0, sizeof(TAB(_4f)) );
5652240ba10f30315410bcff77e372ee71664ac4453Brian Paul   memset( TAB(_4fn),  0, sizeof(TAB(_4fn)) );
56623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
56723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_4_GLbyte_raw();
56823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_3_GLbyte_raw();
56923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_2_GLbyte_raw();
57023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_1_GLbyte_raw();
57123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_1_GLubyte_raw();
57223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_3_GLubyte_raw();
57351c0c71811508b6658e0d5dcff8426b618322a73Keith Whitwell   init_trans_4_GLubyte_raw();
57423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_4_GLshort_raw();
57523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_3_GLshort_raw();
57623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_2_GLshort_raw();
57723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_1_GLshort_raw();
57823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_4_GLushort_raw();
57923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_3_GLushort_raw();
58023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_2_GLushort_raw();
58123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_1_GLushort_raw();
58223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_4_GLint_raw();
58323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_3_GLint_raw();
58423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_2_GLint_raw();
58523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_1_GLint_raw();
58623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_4_GLuint_raw();
58723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_3_GLuint_raw();
58823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_2_GLuint_raw();
58923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_1_GLuint_raw();
59023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_4_GLdouble_raw();
59123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_3_GLdouble_raw();
59223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_2_GLdouble_raw();
59323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_1_GLdouble_raw();
59423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_4_GLfloat_raw();
59523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_3_GLfloat_raw();
59623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_2_GLfloat_raw();
59723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_trans_1_GLfloat_raw();
59851c0c71811508b6658e0d5dcff8426b618322a73Keith Whitwell
59951c0c71811508b6658e0d5dcff8426b618322a73Keith Whitwell   TAB(_4ub)[4][TYPE_IDX(GL_UNSIGNED_BYTE)] = trans_4_GLubyte_4ub_raw;
60023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell}
60123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
60223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
60323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef TAB
604d18c08fe890e100269be8d5cccbaf7cd7bf9916dBrian Paul#ifdef CLASS
60523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef CLASS
606d18c08fe890e100269be8d5cccbaf7cd7bf9916dBrian Paul#endif
60723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef ARGS
60823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef CHECK
60923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef SRC_START
61023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef DST_START
61123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef NEXT_F
61223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#undef NEXT_F2
61323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
61423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
61523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
61623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
61723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell
618cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellvoid _math_init_translate( void )
61923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell{
62023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell   init_translate_raw();
62123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell}
622cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
623cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
6240395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
6250395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate vector of values to GLfloat [1].
6260395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul */
627cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellvoid _math_trans_1f(GLfloat *to,
628cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    CONST void *ptr,
629cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLuint stride,
630cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLenum type,
631cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLuint start,
632cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLuint n )
633cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
634cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   _math_trans_1f_tab[TYPE_IDX(type)]( to, ptr, stride, start, n );
635cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
636cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
6370395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
6380395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate vector of values to GLuint [1].
6390395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul */
640cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellvoid _math_trans_1ui(GLuint *to,
641cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     CONST void *ptr,
642cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLuint stride,
643cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLenum type,
644cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLuint start,
645cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLuint n )
646cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
64722144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes   _math_trans_1ui_tab[TYPE_IDX(type)]( to, ptr, stride, start, n );
648cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
649cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
6500395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
6510395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate vector of values to GLubyte [1].
6520395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul */
653cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellvoid _math_trans_1ub(GLubyte *to,
654cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     CONST void *ptr,
655cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLuint stride,
656cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLenum type,
657cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLuint start,
658cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLuint n )
659cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
66022144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes   _math_trans_1ub_tab[TYPE_IDX(type)]( to, ptr, stride, start, n );
661cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
662cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
663cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
6640395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
6650395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate vector of values to GLubyte [4].
6660395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul */
667cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellvoid _math_trans_4ub(GLubyte (*to)[4],
668cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     CONST void *ptr,
669cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLuint stride,
670cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLenum type,
671cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLuint size,
672cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLuint start,
673cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		     GLuint n )
674cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
67522144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes   _math_trans_4ub_tab[size][TYPE_IDX(type)]( to, ptr, stride, start, n );
676cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
677cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
6780395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
6790395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate vector of values to GLchan [4].
6800395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul */
6814eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwellvoid _math_trans_4chan( GLchan (*to)[4],
6824eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell			CONST void *ptr,
6834eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell			GLuint stride,
6844eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell			GLenum type,
6854eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell			GLuint size,
6864eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell			GLuint start,
6874eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell			GLuint n )
6884eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell{
6894eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell#if CHAN_TYPE == GL_UNSIGNED_BYTE
6904eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell   _math_trans_4ub( to, ptr, stride, type, size, start, n );
6914eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell#elif CHAN_TYPE == GL_UNSIGNED_SHORT
6924eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell   _math_trans_4us( to, ptr, stride, type, size, start, n );
6934eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell#elif CHAN_TYPE == GL_FLOAT
6947dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul   _math_trans_4fn( to, ptr, stride, type, size, start, n );
6954eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell#endif
6964eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell}
6974eebc90a174722422daea6352d4e980bc81b4bb2Keith Whitwell
6980395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
6990395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate vector of values to GLushort [4].
7000395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul */
70174b493a5e61237de081a438e774e5d8139d4c6b7Brian Paulvoid _math_trans_4us(GLushort (*to)[4],
70274b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul		     CONST void *ptr,
70374b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul		     GLuint stride,
70474b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul		     GLenum type,
70574b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul		     GLuint size,
70674b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul		     GLuint start,
70774b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul		     GLuint n )
70874b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul{
70922144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes   _math_trans_4us_tab[size][TYPE_IDX(type)]( to, ptr, stride, start, n );
71074b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul}
71174b493a5e61237de081a438e774e5d8139d4c6b7Brian Paul
7120395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
7130395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate vector of values to GLfloat [4].
7140395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul */
715cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwellvoid _math_trans_4f(GLfloat (*to)[4],
716cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    CONST void *ptr,
717cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLuint stride,
718cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLenum type,
719cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLuint size,
720cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLuint start,
721cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLuint n )
722cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
72322144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes   _math_trans_4f_tab[size][TYPE_IDX(type)]( to, ptr, stride, start, n );
724cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
725cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
7260395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
7270395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate vector of values to GLfloat[4], normalized to [-1, 1].
7280395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul */
7297dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paulvoid _math_trans_4fn(GLfloat (*to)[4],
73012c037dbff3d5a812e31624645d577413cd54122Keith Whitwell		    CONST void *ptr,
73112c037dbff3d5a812e31624645d577413cd54122Keith Whitwell		    GLuint stride,
73212c037dbff3d5a812e31624645d577413cd54122Keith Whitwell		    GLenum type,
73312c037dbff3d5a812e31624645d577413cd54122Keith Whitwell		    GLuint size,
73412c037dbff3d5a812e31624645d577413cd54122Keith Whitwell		    GLuint start,
73512c037dbff3d5a812e31624645d577413cd54122Keith Whitwell		    GLuint n )
73612c037dbff3d5a812e31624645d577413cd54122Keith Whitwell{
7377dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul   _math_trans_4fn_tab[size][TYPE_IDX(type)]( to, ptr, stride, start, n );
73812c037dbff3d5a812e31624645d577413cd54122Keith Whitwell}
73912c037dbff3d5a812e31624645d577413cd54122Keith Whitwell
7400395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul/**
7410395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul * Translate vector of values to GLfloat[3], normalized to [-1, 1].
7420395cc01fdb6ffa638df939e0f7d9d02c34761f9Brian Paul */
7437dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paulvoid _math_trans_3fn(GLfloat (*to)[3],
744cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    CONST void *ptr,
745cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLuint stride,
746cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLenum type,
747cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLuint start,
748cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell		    GLuint n )
749cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
7507dfdf3a5b74d3498a98f71d18eb2e706f2fedd04Brian Paul   _math_trans_3fn_tab[TYPE_IDX(type)]( to, ptr, stride, start, n );
751cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
752