1bf215546Sopenharmony_ci/************************************************************************** 2bf215546Sopenharmony_ci 3bf215546Sopenharmony_ciCopyright 2002 VMware, Inc. 4bf215546Sopenharmony_ciCopyright 2011 Dave Airlie (ARB_vertex_type_2_10_10_10_rev support) 5bf215546Sopenharmony_ciAll Rights Reserved. 6bf215546Sopenharmony_ci 7bf215546Sopenharmony_ciPermission is hereby granted, free of charge, to any person obtaining a 8bf215546Sopenharmony_cicopy of this software and associated documentation files (the "Software"), 9bf215546Sopenharmony_cito deal in the Software without restriction, including without limitation 10bf215546Sopenharmony_cion the rights to use, copy, modify, merge, publish, distribute, sub 11bf215546Sopenharmony_cilicense, and/or sell copies of the Software, and to permit persons to whom 12bf215546Sopenharmony_cithe Software is furnished to do so, subject to the following conditions: 13bf215546Sopenharmony_ci 14bf215546Sopenharmony_ciThe above copyright notice and this permission notice (including the next 15bf215546Sopenharmony_ciparagraph) shall be included in all copies or substantial portions of the 16bf215546Sopenharmony_ciSoftware. 17bf215546Sopenharmony_ci 18bf215546Sopenharmony_ciTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19bf215546Sopenharmony_ciIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20bf215546Sopenharmony_ciFITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 21bf215546Sopenharmony_ciVMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 22bf215546Sopenharmony_ciDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 23bf215546Sopenharmony_ciOTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 24bf215546Sopenharmony_ciUSE OR OTHER DEALINGS IN THE SOFTWARE. 25bf215546Sopenharmony_ci 26bf215546Sopenharmony_ci**************************************************************************/ 27bf215546Sopenharmony_ci 28bf215546Sopenharmony_ci#include "util/format_r11g11b10f.h" 29bf215546Sopenharmony_ci#include "main/varray.h" 30bf215546Sopenharmony_ci#include "vbo_util.h" 31bf215546Sopenharmony_ci#include "util/half_float.h" 32bf215546Sopenharmony_ci 33bf215546Sopenharmony_ci#ifdef SUPPRESS_STATIC 34bf215546Sopenharmony_ci#define static 35bf215546Sopenharmony_ci#endif 36bf215546Sopenharmony_ci 37bf215546Sopenharmony_ci/* ATTR */ 38bf215546Sopenharmony_ci#define ATTRI( A, N, V0, V1, V2, V3 ) \ 39bf215546Sopenharmony_ci ATTR_UNION(A, N, GL_INT, uint32_t, INT_AS_UINT(V0), INT_AS_UINT(V1), \ 40bf215546Sopenharmony_ci INT_AS_UINT(V2), INT_AS_UINT(V3)) 41bf215546Sopenharmony_ci#define ATTRUI( A, N, V0, V1, V2, V3 ) \ 42bf215546Sopenharmony_ci ATTR_UNION(A, N, GL_UNSIGNED_INT, uint32_t, (uint32_t)(V0), (uint32_t)(V1), \ 43bf215546Sopenharmony_ci (uint32_t)(V2), (uint32_t)(V3)) 44bf215546Sopenharmony_ci#define ATTRF( A, N, V0, V1, V2, V3 ) \ 45bf215546Sopenharmony_ci ATTR_UNION(A, N, GL_FLOAT, uint32_t, FLOAT_AS_UINT(V0), FLOAT_AS_UINT(V1),\ 46bf215546Sopenharmony_ci FLOAT_AS_UINT(V2), FLOAT_AS_UINT(V3)) 47bf215546Sopenharmony_ci#define ATTRD( A, N, V0, V1, V2, V3 ) \ 48bf215546Sopenharmony_ci ATTR_UNION(A, N, GL_DOUBLE, uint64_t, DOUBLE_AS_UINT64(V0), \ 49bf215546Sopenharmony_ci DOUBLE_AS_UINT64(V1), DOUBLE_AS_UINT64(V2), DOUBLE_AS_UINT64(V3)) 50bf215546Sopenharmony_ci#define ATTRUI64( A, N, V0, V1, V2, V3 ) \ 51bf215546Sopenharmony_ci ATTR_UNION(A, N, GL_UNSIGNED_INT64_ARB, uint64_t, V0, V1, V2, V3) 52bf215546Sopenharmony_ci 53bf215546Sopenharmony_ci 54bf215546Sopenharmony_ci/* float */ 55bf215546Sopenharmony_ci#define ATTR1FV( A, V ) ATTRF( A, 1, (V)[0], 0, 0, 1 ) 56bf215546Sopenharmony_ci#define ATTR2FV( A, V ) ATTRF( A, 2, (V)[0], (V)[1], 0, 1 ) 57bf215546Sopenharmony_ci#define ATTR3FV( A, V ) ATTRF( A, 3, (V)[0], (V)[1], (V)[2], 1 ) 58bf215546Sopenharmony_ci#define ATTR4FV( A, V ) ATTRF( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] ) 59bf215546Sopenharmony_ci 60bf215546Sopenharmony_ci#define ATTR1F( A, X ) ATTRF( A, 1, X, 0, 0, 1 ) 61bf215546Sopenharmony_ci#define ATTR2F( A, X, Y ) ATTRF( A, 2, X, Y, 0, 1 ) 62bf215546Sopenharmony_ci#define ATTR3F( A, X, Y, Z ) ATTRF( A, 3, X, Y, Z, 1 ) 63bf215546Sopenharmony_ci#define ATTR4F( A, X, Y, Z, W ) ATTRF( A, 4, X, Y, Z, W ) 64bf215546Sopenharmony_ci 65bf215546Sopenharmony_ci 66bf215546Sopenharmony_ci/* half */ 67bf215546Sopenharmony_ci#define ATTR1HV( A, V ) ATTRF( A, 1, _mesa_half_to_float((uint16_t)(V)[0]), \ 68bf215546Sopenharmony_ci 0, 0, 1 ) 69bf215546Sopenharmony_ci#define ATTR2HV( A, V ) ATTRF( A, 2, _mesa_half_to_float((uint16_t)(V)[0]), \ 70bf215546Sopenharmony_ci _mesa_half_to_float((uint16_t)(V)[1]), 0, 1 ) 71bf215546Sopenharmony_ci#define ATTR3HV( A, V ) ATTRF( A, 3, _mesa_half_to_float((uint16_t)(V)[0]), \ 72bf215546Sopenharmony_ci _mesa_half_to_float((uint16_t)(V)[1]), \ 73bf215546Sopenharmony_ci _mesa_half_to_float((uint16_t)(V)[2]), 1 ) 74bf215546Sopenharmony_ci#define ATTR4HV( A, V ) ATTRF( A, 4, _mesa_half_to_float((uint16_t)(V)[0]), \ 75bf215546Sopenharmony_ci _mesa_half_to_float((uint16_t)(V)[1]), \ 76bf215546Sopenharmony_ci _mesa_half_to_float((uint16_t)(V)[2]), \ 77bf215546Sopenharmony_ci _mesa_half_to_float((uint16_t)(V)[3]) ) 78bf215546Sopenharmony_ci 79bf215546Sopenharmony_ci#define ATTR1H( A, X ) ATTRF( A, 1, _mesa_half_to_float(X), 0, 0, 1 ) 80bf215546Sopenharmony_ci#define ATTR2H( A, X, Y ) ATTRF( A, 2, _mesa_half_to_float(X), \ 81bf215546Sopenharmony_ci _mesa_half_to_float(Y), 0, 1 ) 82bf215546Sopenharmony_ci#define ATTR3H( A, X, Y, Z ) ATTRF( A, 3, _mesa_half_to_float(X), \ 83bf215546Sopenharmony_ci _mesa_half_to_float(Y), \ 84bf215546Sopenharmony_ci _mesa_half_to_float(Z), 1 ) 85bf215546Sopenharmony_ci#define ATTR4H( A, X, Y, Z, W ) ATTRF( A, 4, _mesa_half_to_float(X), \ 86bf215546Sopenharmony_ci _mesa_half_to_float(Y), \ 87bf215546Sopenharmony_ci _mesa_half_to_float(Z), \ 88bf215546Sopenharmony_ci _mesa_half_to_float(W) ) 89bf215546Sopenharmony_ci 90bf215546Sopenharmony_ci 91bf215546Sopenharmony_ci/* int */ 92bf215546Sopenharmony_ci#define ATTR2IV( A, V ) ATTRI( A, 2, (V)[0], (V)[1], 0, 1 ) 93bf215546Sopenharmony_ci#define ATTR3IV( A, V ) ATTRI( A, 3, (V)[0], (V)[1], (V)[2], 1 ) 94bf215546Sopenharmony_ci#define ATTR4IV( A, V ) ATTRI( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] ) 95bf215546Sopenharmony_ci 96bf215546Sopenharmony_ci#define ATTR1I( A, X ) ATTRI( A, 1, X, 0, 0, 1 ) 97bf215546Sopenharmony_ci#define ATTR2I( A, X, Y ) ATTRI( A, 2, X, Y, 0, 1 ) 98bf215546Sopenharmony_ci#define ATTR3I( A, X, Y, Z ) ATTRI( A, 3, X, Y, Z, 1 ) 99bf215546Sopenharmony_ci#define ATTR4I( A, X, Y, Z, W ) ATTRI( A, 4, X, Y, Z, W ) 100bf215546Sopenharmony_ci 101bf215546Sopenharmony_ci 102bf215546Sopenharmony_ci/* uint */ 103bf215546Sopenharmony_ci#define ATTR2UIV( A, V ) ATTRUI( A, 2, (V)[0], (V)[1], 0, 1 ) 104bf215546Sopenharmony_ci#define ATTR3UIV( A, V ) ATTRUI( A, 3, (V)[0], (V)[1], (V)[2], 1 ) 105bf215546Sopenharmony_ci#define ATTR4UIV( A, V ) ATTRUI( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] ) 106bf215546Sopenharmony_ci 107bf215546Sopenharmony_ci#define ATTR1UI( A, X ) ATTRUI( A, 1, X, 0, 0, 1 ) 108bf215546Sopenharmony_ci#define ATTR2UI( A, X, Y ) ATTRUI( A, 2, X, Y, 0, 1 ) 109bf215546Sopenharmony_ci#define ATTR3UI( A, X, Y, Z ) ATTRUI( A, 3, X, Y, Z, 1 ) 110bf215546Sopenharmony_ci#define ATTR4UI( A, X, Y, Z, W ) ATTRUI( A, 4, X, Y, Z, W ) 111bf215546Sopenharmony_ci 112bf215546Sopenharmony_ci#define MAT_ATTR( A, N, V ) ATTRF( A, N, (V)[0], (V)[1], (V)[2], (V)[3] ) 113bf215546Sopenharmony_ci 114bf215546Sopenharmony_ci#define ATTRUI10_1( A, UI ) ATTRF( A, 1, (UI) & 0x3ff, 0, 0, 1 ) 115bf215546Sopenharmony_ci#define ATTRUI10_2( A, UI ) ATTRF( A, 2, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, 0, 1 ) 116bf215546Sopenharmony_ci#define ATTRUI10_3( A, UI ) ATTRF( A, 3, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, ((UI) >> 20) & 0x3ff, 1 ) 117bf215546Sopenharmony_ci#define ATTRUI10_4( A, UI ) ATTRF( A, 4, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, ((UI) >> 20) & 0x3ff, ((UI) >> 30) & 0x3 ) 118bf215546Sopenharmony_ci 119bf215546Sopenharmony_ci#define ATTRUI10N_1( A, UI ) ATTRF( A, 1, conv_ui10_to_norm_float((UI) & 0x3ff), 0, 0, 1 ) 120bf215546Sopenharmony_ci#define ATTRUI10N_2( A, UI ) ATTRF( A, 2, \ 121bf215546Sopenharmony_ci conv_ui10_to_norm_float((UI) & 0x3ff), \ 122bf215546Sopenharmony_ci conv_ui10_to_norm_float(((UI) >> 10) & 0x3ff), 0, 1 ) 123bf215546Sopenharmony_ci#define ATTRUI10N_3( A, UI ) ATTRF( A, 3, \ 124bf215546Sopenharmony_ci conv_ui10_to_norm_float((UI) & 0x3ff), \ 125bf215546Sopenharmony_ci conv_ui10_to_norm_float(((UI) >> 10) & 0x3ff), \ 126bf215546Sopenharmony_ci conv_ui10_to_norm_float(((UI) >> 20) & 0x3ff), 1 ) 127bf215546Sopenharmony_ci#define ATTRUI10N_4( A, UI ) ATTRF( A, 4, \ 128bf215546Sopenharmony_ci conv_ui10_to_norm_float((UI) & 0x3ff), \ 129bf215546Sopenharmony_ci conv_ui10_to_norm_float(((UI) >> 10) & 0x3ff), \ 130bf215546Sopenharmony_ci conv_ui10_to_norm_float(((UI) >> 20) & 0x3ff), \ 131bf215546Sopenharmony_ci conv_ui2_to_norm_float(((UI) >> 30) & 0x3) ) 132bf215546Sopenharmony_ci 133bf215546Sopenharmony_ci#define ATTRI10_1( A, I10 ) ATTRF( A, 1, conv_i10_to_i((I10) & 0x3ff), 0, 0, 1 ) 134bf215546Sopenharmony_ci#define ATTRI10_2( A, I10 ) ATTRF( A, 2, \ 135bf215546Sopenharmony_ci conv_i10_to_i((I10) & 0x3ff), \ 136bf215546Sopenharmony_ci conv_i10_to_i(((I10) >> 10) & 0x3ff), 0, 1 ) 137bf215546Sopenharmony_ci#define ATTRI10_3( A, I10 ) ATTRF( A, 3, \ 138bf215546Sopenharmony_ci conv_i10_to_i((I10) & 0x3ff), \ 139bf215546Sopenharmony_ci conv_i10_to_i(((I10) >> 10) & 0x3ff), \ 140bf215546Sopenharmony_ci conv_i10_to_i(((I10) >> 20) & 0x3ff), 1 ) 141bf215546Sopenharmony_ci#define ATTRI10_4( A, I10 ) ATTRF( A, 4, \ 142bf215546Sopenharmony_ci conv_i10_to_i((I10) & 0x3ff), \ 143bf215546Sopenharmony_ci conv_i10_to_i(((I10) >> 10) & 0x3ff), \ 144bf215546Sopenharmony_ci conv_i10_to_i(((I10) >> 20) & 0x3ff), \ 145bf215546Sopenharmony_ci conv_i2_to_i(((I10) >> 30) & 0x3)) 146bf215546Sopenharmony_ci 147bf215546Sopenharmony_ci 148bf215546Sopenharmony_ci#define ATTRI10N_1(ctx, A, I10) ATTRF(A, 1, conv_i10_to_norm_float(ctx, (I10) & 0x3ff), 0, 0, 1 ) 149bf215546Sopenharmony_ci#define ATTRI10N_2(ctx, A, I10) ATTRF(A, 2, \ 150bf215546Sopenharmony_ci conv_i10_to_norm_float(ctx, (I10) & 0x3ff), \ 151bf215546Sopenharmony_ci conv_i10_to_norm_float(ctx, ((I10) >> 10) & 0x3ff), 0, 1 ) 152bf215546Sopenharmony_ci#define ATTRI10N_3(ctx, A, I10) ATTRF(A, 3, \ 153bf215546Sopenharmony_ci conv_i10_to_norm_float(ctx, (I10) & 0x3ff), \ 154bf215546Sopenharmony_ci conv_i10_to_norm_float(ctx, ((I10) >> 10) & 0x3ff), \ 155bf215546Sopenharmony_ci conv_i10_to_norm_float(ctx, ((I10) >> 20) & 0x3ff), 1 ) 156bf215546Sopenharmony_ci#define ATTRI10N_4(ctx, A, I10) ATTRF(A, 4, \ 157bf215546Sopenharmony_ci conv_i10_to_norm_float(ctx, (I10) & 0x3ff), \ 158bf215546Sopenharmony_ci conv_i10_to_norm_float(ctx, ((I10) >> 10) & 0x3ff), \ 159bf215546Sopenharmony_ci conv_i10_to_norm_float(ctx, ((I10) >> 20) & 0x3ff), \ 160bf215546Sopenharmony_ci conv_i2_to_norm_float(ctx, ((I10) >> 30) & 0x3)) 161bf215546Sopenharmony_ci 162bf215546Sopenharmony_ci#define ATTR_UI(ctx, val, type, normalized, attr, arg) do { \ 163bf215546Sopenharmony_ci if ((type) == GL_UNSIGNED_INT_2_10_10_10_REV) { \ 164bf215546Sopenharmony_ci if (normalized) { \ 165bf215546Sopenharmony_ci ATTRUI10N_##val((attr), (arg)); \ 166bf215546Sopenharmony_ci } else { \ 167bf215546Sopenharmony_ci ATTRUI10_##val((attr), (arg)); \ 168bf215546Sopenharmony_ci } \ 169bf215546Sopenharmony_ci } else if ((type) == GL_INT_2_10_10_10_REV) { \ 170bf215546Sopenharmony_ci if (normalized) { \ 171bf215546Sopenharmony_ci ATTRI10N_##val(ctx, (attr), (arg)); \ 172bf215546Sopenharmony_ci } else { \ 173bf215546Sopenharmony_ci ATTRI10_##val((attr), (arg)); \ 174bf215546Sopenharmony_ci } \ 175bf215546Sopenharmony_ci } else if ((type) == GL_UNSIGNED_INT_10F_11F_11F_REV) { \ 176bf215546Sopenharmony_ci float res[4]; \ 177bf215546Sopenharmony_ci res[3] = 1; \ 178bf215546Sopenharmony_ci r11g11b10f_to_float3((arg), res); \ 179bf215546Sopenharmony_ci ATTR##val##FV((attr), res); \ 180bf215546Sopenharmony_ci } else \ 181bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); \ 182bf215546Sopenharmony_ci } while(0) 183bf215546Sopenharmony_ci 184bf215546Sopenharmony_ci#define ATTR_UI_INDEX(ctx, val, type, normalized, index, arg) do { \ 185bf215546Sopenharmony_ci if ((index) == 0 && _mesa_attr_zero_aliases_vertex(ctx)) { \ 186bf215546Sopenharmony_ci ATTR_UI(ctx, val, (type), normalized, 0, (arg)); \ 187bf215546Sopenharmony_ci } else if ((index) < MAX_VERTEX_GENERIC_ATTRIBS) { \ 188bf215546Sopenharmony_ci ATTR_UI(ctx, val, (type), normalized, VBO_ATTRIB_GENERIC0 + (index), (arg)); \ 189bf215546Sopenharmony_ci } else \ 190bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); \ 191bf215546Sopenharmony_ci } while(0) 192bf215546Sopenharmony_ci 193bf215546Sopenharmony_ci 194bf215546Sopenharmony_ci/* Doubles */ 195bf215546Sopenharmony_ci#define ATTR1DV( A, V ) ATTRD( A, 1, (V)[0], 0, 0, 1 ) 196bf215546Sopenharmony_ci#define ATTR2DV( A, V ) ATTRD( A, 2, (V)[0], (V)[1], 0, 1 ) 197bf215546Sopenharmony_ci#define ATTR3DV( A, V ) ATTRD( A, 3, (V)[0], (V)[1], (V)[2], 1 ) 198bf215546Sopenharmony_ci#define ATTR4DV( A, V ) ATTRD( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] ) 199bf215546Sopenharmony_ci 200bf215546Sopenharmony_ci#define ATTR1D( A, X ) ATTRD( A, 1, X, 0, 0, 1 ) 201bf215546Sopenharmony_ci#define ATTR2D( A, X, Y ) ATTRD( A, 2, X, Y, 0, 1 ) 202bf215546Sopenharmony_ci#define ATTR3D( A, X, Y, Z ) ATTRD( A, 3, X, Y, Z, 1 ) 203bf215546Sopenharmony_ci#define ATTR4D( A, X, Y, Z, W ) ATTRD( A, 4, X, Y, Z, W ) 204bf215546Sopenharmony_ci 205bf215546Sopenharmony_ci#define ATTR1UIV64( A, V ) ATTRUI64( A, 1, (V)[0], 0, 0, 0 ) 206bf215546Sopenharmony_ci#define ATTR1UI64( A, X ) ATTRUI64( A, 1, X, 0, 0, 0 ) 207bf215546Sopenharmony_ci 208bf215546Sopenharmony_ci 209bf215546Sopenharmony_cistatic void GLAPIENTRY 210bf215546Sopenharmony_ciTAG(Vertex2f)(GLfloat x, GLfloat y) 211bf215546Sopenharmony_ci{ 212bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 213bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_POS, x, y); 214bf215546Sopenharmony_ci} 215bf215546Sopenharmony_ci 216bf215546Sopenharmony_cistatic void GLAPIENTRY 217bf215546Sopenharmony_ciTAG(Vertex2fv)(const GLfloat * v) 218bf215546Sopenharmony_ci{ 219bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 220bf215546Sopenharmony_ci ATTR2FV(VBO_ATTRIB_POS, v); 221bf215546Sopenharmony_ci} 222bf215546Sopenharmony_ci 223bf215546Sopenharmony_cistatic void GLAPIENTRY 224bf215546Sopenharmony_ciTAG(Vertex3f)(GLfloat x, GLfloat y, GLfloat z) 225bf215546Sopenharmony_ci{ 226bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 227bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_POS, x, y, z); 228bf215546Sopenharmony_ci} 229bf215546Sopenharmony_ci 230bf215546Sopenharmony_cistatic void GLAPIENTRY 231bf215546Sopenharmony_ciTAG(Vertex3fv)(const GLfloat * v) 232bf215546Sopenharmony_ci{ 233bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 234bf215546Sopenharmony_ci ATTR3FV(VBO_ATTRIB_POS, v); 235bf215546Sopenharmony_ci} 236bf215546Sopenharmony_ci 237bf215546Sopenharmony_cistatic void GLAPIENTRY 238bf215546Sopenharmony_ciTAG(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 239bf215546Sopenharmony_ci{ 240bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 241bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_POS, x, y, z, w); 242bf215546Sopenharmony_ci} 243bf215546Sopenharmony_ci 244bf215546Sopenharmony_cistatic void GLAPIENTRY 245bf215546Sopenharmony_ciTAG(Vertex4fv)(const GLfloat * v) 246bf215546Sopenharmony_ci{ 247bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 248bf215546Sopenharmony_ci ATTR4FV(VBO_ATTRIB_POS, v); 249bf215546Sopenharmony_ci} 250bf215546Sopenharmony_ci 251bf215546Sopenharmony_cistatic void GLAPIENTRY 252bf215546Sopenharmony_ciTAG(VertexAttrib1fARB)(GLuint index, GLfloat x) 253bf215546Sopenharmony_ci{ 254bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 255bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 256bf215546Sopenharmony_ci ATTR1F(0, x); 257bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 258bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_GENERIC0 + index, x); 259bf215546Sopenharmony_ci else 260bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 261bf215546Sopenharmony_ci} 262bf215546Sopenharmony_ci 263bf215546Sopenharmony_cistatic void GLAPIENTRY 264bf215546Sopenharmony_ciTAG(VertexAttrib1fvARB)(GLuint index, const GLfloat * v) 265bf215546Sopenharmony_ci{ 266bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 267bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 268bf215546Sopenharmony_ci ATTR1FV(0, v); 269bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 270bf215546Sopenharmony_ci ATTR1FV(VBO_ATTRIB_GENERIC0 + index, v); 271bf215546Sopenharmony_ci else 272bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 273bf215546Sopenharmony_ci} 274bf215546Sopenharmony_ci 275bf215546Sopenharmony_cistatic void GLAPIENTRY 276bf215546Sopenharmony_ciTAG(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y) 277bf215546Sopenharmony_ci{ 278bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 279bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 280bf215546Sopenharmony_ci ATTR2F(0, x, y); 281bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 282bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_GENERIC0 + index, x, y); 283bf215546Sopenharmony_ci else 284bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 285bf215546Sopenharmony_ci} 286bf215546Sopenharmony_ci 287bf215546Sopenharmony_cistatic void GLAPIENTRY 288bf215546Sopenharmony_ciTAG(VertexAttrib2fvARB)(GLuint index, const GLfloat * v) 289bf215546Sopenharmony_ci{ 290bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 291bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 292bf215546Sopenharmony_ci ATTR2FV(0, v); 293bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 294bf215546Sopenharmony_ci ATTR2FV(VBO_ATTRIB_GENERIC0 + index, v); 295bf215546Sopenharmony_ci else 296bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 297bf215546Sopenharmony_ci} 298bf215546Sopenharmony_ci 299bf215546Sopenharmony_cistatic void GLAPIENTRY 300bf215546Sopenharmony_ciTAG(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z) 301bf215546Sopenharmony_ci{ 302bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 303bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 304bf215546Sopenharmony_ci ATTR3F(0, x, y, z); 305bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 306bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_GENERIC0 + index, x, y, z); 307bf215546Sopenharmony_ci else 308bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 309bf215546Sopenharmony_ci} 310bf215546Sopenharmony_ci 311bf215546Sopenharmony_cistatic void GLAPIENTRY 312bf215546Sopenharmony_ciTAG(VertexAttrib3fvARB)(GLuint index, const GLfloat * v) 313bf215546Sopenharmony_ci{ 314bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 315bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 316bf215546Sopenharmony_ci ATTR3FV(0, v); 317bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 318bf215546Sopenharmony_ci ATTR3FV(VBO_ATTRIB_GENERIC0 + index, v); 319bf215546Sopenharmony_ci else 320bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 321bf215546Sopenharmony_ci} 322bf215546Sopenharmony_ci 323bf215546Sopenharmony_cistatic void GLAPIENTRY 324bf215546Sopenharmony_ciTAG(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) 325bf215546Sopenharmony_ci{ 326bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 327bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 328bf215546Sopenharmony_ci ATTR4F(0, x, y, z, w); 329bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 330bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); 331bf215546Sopenharmony_ci else 332bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 333bf215546Sopenharmony_ci} 334bf215546Sopenharmony_ci 335bf215546Sopenharmony_cistatic void GLAPIENTRY 336bf215546Sopenharmony_ciTAG(VertexAttrib4fvARB)(GLuint index, const GLfloat * v) 337bf215546Sopenharmony_ci{ 338bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 339bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 340bf215546Sopenharmony_ci ATTR4FV(0, v); 341bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 342bf215546Sopenharmony_ci ATTR4FV(VBO_ATTRIB_GENERIC0 + index, v); 343bf215546Sopenharmony_ci else 344bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 345bf215546Sopenharmony_ci} 346bf215546Sopenharmony_ci 347bf215546Sopenharmony_ci 348bf215546Sopenharmony_ci 349bf215546Sopenharmony_ci/* Integer-valued generic attributes. 350bf215546Sopenharmony_ci * XXX: the integers just get converted to floats at this time 351bf215546Sopenharmony_ci */ 352bf215546Sopenharmony_cistatic void GLAPIENTRY 353bf215546Sopenharmony_ciTAG(VertexAttribI1iEXT)(GLuint index, GLint x) 354bf215546Sopenharmony_ci{ 355bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 356bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 357bf215546Sopenharmony_ci ATTR1I(0, x); 358bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 359bf215546Sopenharmony_ci ATTR1I(VBO_ATTRIB_GENERIC0 + index, x); 360bf215546Sopenharmony_ci else 361bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 362bf215546Sopenharmony_ci} 363bf215546Sopenharmony_ci 364bf215546Sopenharmony_cistatic void GLAPIENTRY 365bf215546Sopenharmony_ciTAG(VertexAttribI2iEXT)(GLuint index, GLint x, GLint y) 366bf215546Sopenharmony_ci{ 367bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 368bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 369bf215546Sopenharmony_ci ATTR2I(0, x, y); 370bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 371bf215546Sopenharmony_ci ATTR2I(VBO_ATTRIB_GENERIC0 + index, x, y); 372bf215546Sopenharmony_ci else 373bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 374bf215546Sopenharmony_ci} 375bf215546Sopenharmony_ci 376bf215546Sopenharmony_cistatic void GLAPIENTRY 377bf215546Sopenharmony_ciTAG(VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z) 378bf215546Sopenharmony_ci{ 379bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 380bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 381bf215546Sopenharmony_ci ATTR3I(0, x, y, z); 382bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 383bf215546Sopenharmony_ci ATTR3I(VBO_ATTRIB_GENERIC0 + index, x, y, z); 384bf215546Sopenharmony_ci else 385bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 386bf215546Sopenharmony_ci} 387bf215546Sopenharmony_ci 388bf215546Sopenharmony_cistatic void GLAPIENTRY 389bf215546Sopenharmony_ciTAG(VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w) 390bf215546Sopenharmony_ci{ 391bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 392bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 393bf215546Sopenharmony_ci ATTR4I(0, x, y, z, w); 394bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 395bf215546Sopenharmony_ci ATTR4I(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); 396bf215546Sopenharmony_ci else 397bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 398bf215546Sopenharmony_ci} 399bf215546Sopenharmony_ci 400bf215546Sopenharmony_cistatic void GLAPIENTRY 401bf215546Sopenharmony_ciTAG(VertexAttribI2ivEXT)(GLuint index, const GLint *v) 402bf215546Sopenharmony_ci{ 403bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 404bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 405bf215546Sopenharmony_ci ATTR2IV(0, v); 406bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 407bf215546Sopenharmony_ci ATTR2IV(VBO_ATTRIB_GENERIC0 + index, v); 408bf215546Sopenharmony_ci else 409bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 410bf215546Sopenharmony_ci} 411bf215546Sopenharmony_ci 412bf215546Sopenharmony_cistatic void GLAPIENTRY 413bf215546Sopenharmony_ciTAG(VertexAttribI3ivEXT)(GLuint index, const GLint *v) 414bf215546Sopenharmony_ci{ 415bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 416bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 417bf215546Sopenharmony_ci ATTR3IV(0, v); 418bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 419bf215546Sopenharmony_ci ATTR3IV(VBO_ATTRIB_GENERIC0 + index, v); 420bf215546Sopenharmony_ci else 421bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 422bf215546Sopenharmony_ci} 423bf215546Sopenharmony_ci 424bf215546Sopenharmony_cistatic void GLAPIENTRY 425bf215546Sopenharmony_ciTAG(VertexAttribI4ivEXT)(GLuint index, const GLint *v) 426bf215546Sopenharmony_ci{ 427bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 428bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 429bf215546Sopenharmony_ci ATTR4IV(0, v); 430bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 431bf215546Sopenharmony_ci ATTR4IV(VBO_ATTRIB_GENERIC0 + index, v); 432bf215546Sopenharmony_ci else 433bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 434bf215546Sopenharmony_ci} 435bf215546Sopenharmony_ci 436bf215546Sopenharmony_ci 437bf215546Sopenharmony_ci 438bf215546Sopenharmony_ci/* Unsigned integer-valued generic attributes. 439bf215546Sopenharmony_ci * XXX: the integers just get converted to floats at this time 440bf215546Sopenharmony_ci */ 441bf215546Sopenharmony_cistatic void GLAPIENTRY 442bf215546Sopenharmony_ciTAG(VertexAttribI1uiEXT)(GLuint index, GLuint x) 443bf215546Sopenharmony_ci{ 444bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 445bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 446bf215546Sopenharmony_ci ATTR1UI(0, x); 447bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 448bf215546Sopenharmony_ci ATTR1UI(VBO_ATTRIB_GENERIC0 + index, x); 449bf215546Sopenharmony_ci else 450bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 451bf215546Sopenharmony_ci} 452bf215546Sopenharmony_ci 453bf215546Sopenharmony_cistatic void GLAPIENTRY 454bf215546Sopenharmony_ciTAG(VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y) 455bf215546Sopenharmony_ci{ 456bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 457bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 458bf215546Sopenharmony_ci ATTR2UI(0, x, y); 459bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 460bf215546Sopenharmony_ci ATTR2UI(VBO_ATTRIB_GENERIC0 + index, x, y); 461bf215546Sopenharmony_ci else 462bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 463bf215546Sopenharmony_ci} 464bf215546Sopenharmony_ci 465bf215546Sopenharmony_cistatic void GLAPIENTRY 466bf215546Sopenharmony_ciTAG(VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z) 467bf215546Sopenharmony_ci{ 468bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 469bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 470bf215546Sopenharmony_ci ATTR3UI(0, x, y, z); 471bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 472bf215546Sopenharmony_ci ATTR3UI(VBO_ATTRIB_GENERIC0 + index, x, y, z); 473bf215546Sopenharmony_ci else 474bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 475bf215546Sopenharmony_ci} 476bf215546Sopenharmony_ci 477bf215546Sopenharmony_cistatic void GLAPIENTRY 478bf215546Sopenharmony_ciTAG(VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) 479bf215546Sopenharmony_ci{ 480bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 481bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 482bf215546Sopenharmony_ci ATTR4UI(0, x, y, z, w); 483bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 484bf215546Sopenharmony_ci ATTR4UI(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); 485bf215546Sopenharmony_ci else 486bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 487bf215546Sopenharmony_ci} 488bf215546Sopenharmony_ci 489bf215546Sopenharmony_cistatic void GLAPIENTRY 490bf215546Sopenharmony_ciTAG(VertexAttribI2uivEXT)(GLuint index, const GLuint *v) 491bf215546Sopenharmony_ci{ 492bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 493bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 494bf215546Sopenharmony_ci ATTR2UIV(0, v); 495bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 496bf215546Sopenharmony_ci ATTR2UIV(VBO_ATTRIB_GENERIC0 + index, v); 497bf215546Sopenharmony_ci else 498bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 499bf215546Sopenharmony_ci} 500bf215546Sopenharmony_ci 501bf215546Sopenharmony_cistatic void GLAPIENTRY 502bf215546Sopenharmony_ciTAG(VertexAttribI3uivEXT)(GLuint index, const GLuint *v) 503bf215546Sopenharmony_ci{ 504bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 505bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 506bf215546Sopenharmony_ci ATTR3UIV(0, v); 507bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 508bf215546Sopenharmony_ci ATTR3UIV(VBO_ATTRIB_GENERIC0 + index, v); 509bf215546Sopenharmony_ci else 510bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 511bf215546Sopenharmony_ci} 512bf215546Sopenharmony_ci 513bf215546Sopenharmony_cistatic void GLAPIENTRY 514bf215546Sopenharmony_ciTAG(VertexAttribI4uivEXT)(GLuint index, const GLuint *v) 515bf215546Sopenharmony_ci{ 516bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 517bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 518bf215546Sopenharmony_ci ATTR4UIV(0, v); 519bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 520bf215546Sopenharmony_ci ATTR4UIV(VBO_ATTRIB_GENERIC0 + index, v); 521bf215546Sopenharmony_ci else 522bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 523bf215546Sopenharmony_ci} 524bf215546Sopenharmony_ci 525bf215546Sopenharmony_ci 526bf215546Sopenharmony_ci 527bf215546Sopenharmony_ci/* These entrypoints are no longer used for NV_vertex_program but they are 528bf215546Sopenharmony_ci * used by the display list and other code specifically because of their 529bf215546Sopenharmony_ci * property of aliasing with the legacy Vertex, TexCoord, Normal, etc 530bf215546Sopenharmony_ci * attributes. (See vbo_save_loopback.c) 531bf215546Sopenharmony_ci */ 532bf215546Sopenharmony_cistatic void GLAPIENTRY 533bf215546Sopenharmony_ciTAG(VertexAttrib1fNV)(GLuint index, GLfloat x) 534bf215546Sopenharmony_ci{ 535bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 536bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) 537bf215546Sopenharmony_ci ATTR1F(index, x); 538bf215546Sopenharmony_ci} 539bf215546Sopenharmony_ci 540bf215546Sopenharmony_cistatic void GLAPIENTRY 541bf215546Sopenharmony_ciTAG(VertexAttrib1fvNV)(GLuint index, const GLfloat * v) 542bf215546Sopenharmony_ci{ 543bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 544bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) 545bf215546Sopenharmony_ci ATTR1FV(index, v); 546bf215546Sopenharmony_ci} 547bf215546Sopenharmony_ci 548bf215546Sopenharmony_cistatic void GLAPIENTRY 549bf215546Sopenharmony_ciTAG(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y) 550bf215546Sopenharmony_ci{ 551bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 552bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) 553bf215546Sopenharmony_ci ATTR2F(index, x, y); 554bf215546Sopenharmony_ci} 555bf215546Sopenharmony_ci 556bf215546Sopenharmony_cistatic void GLAPIENTRY 557bf215546Sopenharmony_ciTAG(VertexAttrib2fvNV)(GLuint index, const GLfloat * v) 558bf215546Sopenharmony_ci{ 559bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 560bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) 561bf215546Sopenharmony_ci ATTR2FV(index, v); 562bf215546Sopenharmony_ci} 563bf215546Sopenharmony_ci 564bf215546Sopenharmony_cistatic void GLAPIENTRY 565bf215546Sopenharmony_ciTAG(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z) 566bf215546Sopenharmony_ci{ 567bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 568bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) 569bf215546Sopenharmony_ci ATTR3F(index, x, y, z); 570bf215546Sopenharmony_ci} 571bf215546Sopenharmony_ci 572bf215546Sopenharmony_cistatic void GLAPIENTRY 573bf215546Sopenharmony_ciTAG(VertexAttrib3fvNV)(GLuint index, 574bf215546Sopenharmony_ci const GLfloat * v) 575bf215546Sopenharmony_ci{ 576bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 577bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) 578bf215546Sopenharmony_ci ATTR3FV(index, v); 579bf215546Sopenharmony_ci} 580bf215546Sopenharmony_ci 581bf215546Sopenharmony_cistatic void GLAPIENTRY 582bf215546Sopenharmony_ciTAG(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) 583bf215546Sopenharmony_ci{ 584bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 585bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) 586bf215546Sopenharmony_ci ATTR4F(index, x, y, z, w); 587bf215546Sopenharmony_ci} 588bf215546Sopenharmony_ci 589bf215546Sopenharmony_cistatic void GLAPIENTRY 590bf215546Sopenharmony_ciTAG(VertexAttrib4fvNV)(GLuint index, const GLfloat * v) 591bf215546Sopenharmony_ci{ 592bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 593bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) 594bf215546Sopenharmony_ci ATTR4FV(index, v); 595bf215546Sopenharmony_ci} 596bf215546Sopenharmony_ci 597bf215546Sopenharmony_cistatic void GLAPIENTRY 598bf215546Sopenharmony_ciTAG(VertexP2ui)(GLenum type, GLuint value) 599bf215546Sopenharmony_ci{ 600bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 601bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP2ui"); 602bf215546Sopenharmony_ci ATTR_UI(ctx, 2, type, 0, VBO_ATTRIB_POS, value); 603bf215546Sopenharmony_ci} 604bf215546Sopenharmony_ci 605bf215546Sopenharmony_cistatic void GLAPIENTRY 606bf215546Sopenharmony_ciTAG(VertexP2uiv)(GLenum type, const GLuint *value) 607bf215546Sopenharmony_ci{ 608bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 609bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP2uiv"); 610bf215546Sopenharmony_ci ATTR_UI(ctx, 2, type, 0, VBO_ATTRIB_POS, value[0]); 611bf215546Sopenharmony_ci} 612bf215546Sopenharmony_ci 613bf215546Sopenharmony_cistatic void GLAPIENTRY 614bf215546Sopenharmony_ciTAG(VertexP3ui)(GLenum type, GLuint value) 615bf215546Sopenharmony_ci{ 616bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 617bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP3ui"); 618bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 0, VBO_ATTRIB_POS, value); 619bf215546Sopenharmony_ci} 620bf215546Sopenharmony_ci 621bf215546Sopenharmony_cistatic void GLAPIENTRY 622bf215546Sopenharmony_ciTAG(VertexP3uiv)(GLenum type, const GLuint *value) 623bf215546Sopenharmony_ci{ 624bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 625bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP3uiv"); 626bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 0, VBO_ATTRIB_POS, value[0]); 627bf215546Sopenharmony_ci} 628bf215546Sopenharmony_ci 629bf215546Sopenharmony_cistatic void GLAPIENTRY 630bf215546Sopenharmony_ciTAG(VertexP4ui)(GLenum type, GLuint value) 631bf215546Sopenharmony_ci{ 632bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 633bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP4ui"); 634bf215546Sopenharmony_ci ATTR_UI(ctx, 4, type, 0, VBO_ATTRIB_POS, value); 635bf215546Sopenharmony_ci} 636bf215546Sopenharmony_ci 637bf215546Sopenharmony_cistatic void GLAPIENTRY 638bf215546Sopenharmony_ciTAG(VertexP4uiv)(GLenum type, const GLuint *value) 639bf215546Sopenharmony_ci{ 640bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 641bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP4uiv"); 642bf215546Sopenharmony_ci ATTR_UI(ctx, 4, type, 0, VBO_ATTRIB_POS, value[0]); 643bf215546Sopenharmony_ci} 644bf215546Sopenharmony_ci 645bf215546Sopenharmony_cistatic void GLAPIENTRY 646bf215546Sopenharmony_ciTAG(VertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, 647bf215546Sopenharmony_ci GLuint value) 648bf215546Sopenharmony_ci{ 649bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 650bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP1ui"); 651bf215546Sopenharmony_ci ATTR_UI_INDEX(ctx, 1, type, normalized, index, value); 652bf215546Sopenharmony_ci} 653bf215546Sopenharmony_ci 654bf215546Sopenharmony_cistatic void GLAPIENTRY 655bf215546Sopenharmony_ciTAG(VertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, 656bf215546Sopenharmony_ci GLuint value) 657bf215546Sopenharmony_ci{ 658bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 659bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP2ui"); 660bf215546Sopenharmony_ci ATTR_UI_INDEX(ctx, 2, type, normalized, index, value); 661bf215546Sopenharmony_ci} 662bf215546Sopenharmony_ci 663bf215546Sopenharmony_cistatic void GLAPIENTRY 664bf215546Sopenharmony_ciTAG(VertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, 665bf215546Sopenharmony_ci GLuint value) 666bf215546Sopenharmony_ci{ 667bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 668bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP3ui"); 669bf215546Sopenharmony_ci ATTR_UI_INDEX(ctx, 3, type, normalized, index, value); 670bf215546Sopenharmony_ci} 671bf215546Sopenharmony_ci 672bf215546Sopenharmony_cistatic void GLAPIENTRY 673bf215546Sopenharmony_ciTAG(VertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, 674bf215546Sopenharmony_ci GLuint value) 675bf215546Sopenharmony_ci{ 676bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 677bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexAttribP4ui"); 678bf215546Sopenharmony_ci ATTR_UI_INDEX(ctx, 4, type, normalized, index, value); 679bf215546Sopenharmony_ci} 680bf215546Sopenharmony_ci 681bf215546Sopenharmony_cistatic void GLAPIENTRY 682bf215546Sopenharmony_ciTAG(VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, 683bf215546Sopenharmony_ci const GLuint *value) 684bf215546Sopenharmony_ci{ 685bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 686bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP1uiv"); 687bf215546Sopenharmony_ci ATTR_UI_INDEX(ctx, 1, type, normalized, index, *value); 688bf215546Sopenharmony_ci} 689bf215546Sopenharmony_ci 690bf215546Sopenharmony_cistatic void GLAPIENTRY 691bf215546Sopenharmony_ciTAG(VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, 692bf215546Sopenharmony_ci const GLuint *value) 693bf215546Sopenharmony_ci{ 694bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 695bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP2uiv"); 696bf215546Sopenharmony_ci ATTR_UI_INDEX(ctx, 2, type, normalized, index, *value); 697bf215546Sopenharmony_ci} 698bf215546Sopenharmony_ci 699bf215546Sopenharmony_cistatic void GLAPIENTRY 700bf215546Sopenharmony_ciTAG(VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, 701bf215546Sopenharmony_ci const GLuint *value) 702bf215546Sopenharmony_ci{ 703bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 704bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP3uiv"); 705bf215546Sopenharmony_ci ATTR_UI_INDEX(ctx, 3, type, normalized, index, *value); 706bf215546Sopenharmony_ci} 707bf215546Sopenharmony_ci 708bf215546Sopenharmony_cistatic void GLAPIENTRY 709bf215546Sopenharmony_ciTAG(VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, 710bf215546Sopenharmony_ci const GLuint *value) 711bf215546Sopenharmony_ci{ 712bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 713bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexAttribP4uiv"); 714bf215546Sopenharmony_ci ATTR_UI_INDEX(ctx, 4, type, normalized, index, *value); 715bf215546Sopenharmony_ci} 716bf215546Sopenharmony_ci 717bf215546Sopenharmony_ci 718bf215546Sopenharmony_ci 719bf215546Sopenharmony_cistatic void GLAPIENTRY 720bf215546Sopenharmony_ciTAG(VertexAttribL1d)(GLuint index, GLdouble x) 721bf215546Sopenharmony_ci{ 722bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 723bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 724bf215546Sopenharmony_ci ATTR1D(0, x); 725bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 726bf215546Sopenharmony_ci ATTR1D(VBO_ATTRIB_GENERIC0 + index, x); 727bf215546Sopenharmony_ci else 728bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 729bf215546Sopenharmony_ci} 730bf215546Sopenharmony_ci 731bf215546Sopenharmony_cistatic void GLAPIENTRY 732bf215546Sopenharmony_ciTAG(VertexAttribL1dv)(GLuint index, const GLdouble * v) 733bf215546Sopenharmony_ci{ 734bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 735bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 736bf215546Sopenharmony_ci ATTR1DV(0, v); 737bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 738bf215546Sopenharmony_ci ATTR1DV(VBO_ATTRIB_GENERIC0 + index, v); 739bf215546Sopenharmony_ci else 740bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 741bf215546Sopenharmony_ci} 742bf215546Sopenharmony_ci 743bf215546Sopenharmony_cistatic void GLAPIENTRY 744bf215546Sopenharmony_ciTAG(VertexAttribL2d)(GLuint index, GLdouble x, GLdouble y) 745bf215546Sopenharmony_ci{ 746bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 747bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 748bf215546Sopenharmony_ci ATTR2D(0, x, y); 749bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 750bf215546Sopenharmony_ci ATTR2D(VBO_ATTRIB_GENERIC0 + index, x, y); 751bf215546Sopenharmony_ci else 752bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 753bf215546Sopenharmony_ci} 754bf215546Sopenharmony_ci 755bf215546Sopenharmony_cistatic void GLAPIENTRY 756bf215546Sopenharmony_ciTAG(VertexAttribL2dv)(GLuint index, const GLdouble * v) 757bf215546Sopenharmony_ci{ 758bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 759bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 760bf215546Sopenharmony_ci ATTR2DV(0, v); 761bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 762bf215546Sopenharmony_ci ATTR2DV(VBO_ATTRIB_GENERIC0 + index, v); 763bf215546Sopenharmony_ci else 764bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 765bf215546Sopenharmony_ci} 766bf215546Sopenharmony_ci 767bf215546Sopenharmony_cistatic void GLAPIENTRY 768bf215546Sopenharmony_ciTAG(VertexAttribL3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z) 769bf215546Sopenharmony_ci{ 770bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 771bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 772bf215546Sopenharmony_ci ATTR3D(0, x, y, z); 773bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 774bf215546Sopenharmony_ci ATTR3D(VBO_ATTRIB_GENERIC0 + index, x, y, z); 775bf215546Sopenharmony_ci else 776bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 777bf215546Sopenharmony_ci} 778bf215546Sopenharmony_ci 779bf215546Sopenharmony_cistatic void GLAPIENTRY 780bf215546Sopenharmony_ciTAG(VertexAttribL3dv)(GLuint index, const GLdouble * v) 781bf215546Sopenharmony_ci{ 782bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 783bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 784bf215546Sopenharmony_ci ATTR3DV(0, v); 785bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 786bf215546Sopenharmony_ci ATTR3DV(VBO_ATTRIB_GENERIC0 + index, v); 787bf215546Sopenharmony_ci else 788bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 789bf215546Sopenharmony_ci} 790bf215546Sopenharmony_ci 791bf215546Sopenharmony_cistatic void GLAPIENTRY 792bf215546Sopenharmony_ciTAG(VertexAttribL4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) 793bf215546Sopenharmony_ci{ 794bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 795bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 796bf215546Sopenharmony_ci ATTR4D(0, x, y, z, w); 797bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 798bf215546Sopenharmony_ci ATTR4D(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); 799bf215546Sopenharmony_ci else 800bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 801bf215546Sopenharmony_ci} 802bf215546Sopenharmony_ci 803bf215546Sopenharmony_cistatic void GLAPIENTRY 804bf215546Sopenharmony_ciTAG(VertexAttribL4dv)(GLuint index, const GLdouble * v) 805bf215546Sopenharmony_ci{ 806bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 807bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 808bf215546Sopenharmony_ci ATTR4DV(0, v); 809bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 810bf215546Sopenharmony_ci ATTR4DV(VBO_ATTRIB_GENERIC0 + index, v); 811bf215546Sopenharmony_ci else 812bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 813bf215546Sopenharmony_ci} 814bf215546Sopenharmony_ci 815bf215546Sopenharmony_cistatic void GLAPIENTRY 816bf215546Sopenharmony_ciTAG(VertexAttribL1ui64ARB)(GLuint index, GLuint64EXT x) 817bf215546Sopenharmony_ci{ 818bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 819bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 820bf215546Sopenharmony_ci ATTR1UI64(0, x); 821bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 822bf215546Sopenharmony_ci ATTR1UI64(VBO_ATTRIB_GENERIC0 + index, x); 823bf215546Sopenharmony_ci else 824bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 825bf215546Sopenharmony_ci} 826bf215546Sopenharmony_ci 827bf215546Sopenharmony_cistatic void GLAPIENTRY 828bf215546Sopenharmony_ciTAG(VertexAttribL1ui64vARB)(GLuint index, const GLuint64EXT *v) 829bf215546Sopenharmony_ci{ 830bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 831bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 832bf215546Sopenharmony_ci ATTR1UIV64(0, v); 833bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 834bf215546Sopenharmony_ci ATTR1UIV64(VBO_ATTRIB_GENERIC0 + index, v); 835bf215546Sopenharmony_ci else 836bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 837bf215546Sopenharmony_ci} 838bf215546Sopenharmony_ci 839bf215546Sopenharmony_ci/* GL_NV_half_float */ 840bf215546Sopenharmony_cistatic void GLAPIENTRY 841bf215546Sopenharmony_ciTAG(Vertex2hNV)(GLhalfNV x, GLhalfNV y) 842bf215546Sopenharmony_ci{ 843bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 844bf215546Sopenharmony_ci ATTR2H(VBO_ATTRIB_POS, x, y); 845bf215546Sopenharmony_ci} 846bf215546Sopenharmony_ci 847bf215546Sopenharmony_cistatic void GLAPIENTRY 848bf215546Sopenharmony_ciTAG(Vertex2hvNV)(const GLhalfNV * v) 849bf215546Sopenharmony_ci{ 850bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 851bf215546Sopenharmony_ci ATTR2HV(VBO_ATTRIB_POS, v); 852bf215546Sopenharmony_ci} 853bf215546Sopenharmony_ci 854bf215546Sopenharmony_cistatic void GLAPIENTRY 855bf215546Sopenharmony_ciTAG(Vertex3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z) 856bf215546Sopenharmony_ci{ 857bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 858bf215546Sopenharmony_ci ATTR3H(VBO_ATTRIB_POS, x, y, z); 859bf215546Sopenharmony_ci} 860bf215546Sopenharmony_ci 861bf215546Sopenharmony_cistatic void GLAPIENTRY 862bf215546Sopenharmony_ciTAG(Vertex3hvNV)(const GLhalfNV * v) 863bf215546Sopenharmony_ci{ 864bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 865bf215546Sopenharmony_ci ATTR3HV(VBO_ATTRIB_POS, v); 866bf215546Sopenharmony_ci} 867bf215546Sopenharmony_ci 868bf215546Sopenharmony_cistatic void GLAPIENTRY 869bf215546Sopenharmony_ciTAG(Vertex4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w) 870bf215546Sopenharmony_ci{ 871bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 872bf215546Sopenharmony_ci ATTR4H(VBO_ATTRIB_POS, x, y, z, w); 873bf215546Sopenharmony_ci} 874bf215546Sopenharmony_ci 875bf215546Sopenharmony_cistatic void GLAPIENTRY 876bf215546Sopenharmony_ciTAG(Vertex4hvNV)(const GLhalfNV * v) 877bf215546Sopenharmony_ci{ 878bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 879bf215546Sopenharmony_ci ATTR4HV(VBO_ATTRIB_POS, v); 880bf215546Sopenharmony_ci} 881bf215546Sopenharmony_ci 882bf215546Sopenharmony_cistatic void GLAPIENTRY 883bf215546Sopenharmony_ciTAG(VertexAttrib1hNV)(GLuint index, GLhalfNV x) 884bf215546Sopenharmony_ci{ 885bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 886bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 887bf215546Sopenharmony_ci ATTR1H(0, x); 888bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 889bf215546Sopenharmony_ci ATTR1H(VBO_ATTRIB_GENERIC0 + index, x); 890bf215546Sopenharmony_ci else 891bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 892bf215546Sopenharmony_ci} 893bf215546Sopenharmony_ci 894bf215546Sopenharmony_cistatic void GLAPIENTRY 895bf215546Sopenharmony_ciTAG(VertexAttrib2hNV)(GLuint index, GLhalfNV x, GLhalfNV y) 896bf215546Sopenharmony_ci{ 897bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 898bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 899bf215546Sopenharmony_ci ATTR2H(0, x, y); 900bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 901bf215546Sopenharmony_ci ATTR2H(VBO_ATTRIB_GENERIC0 + index, x, y); 902bf215546Sopenharmony_ci else 903bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 904bf215546Sopenharmony_ci} 905bf215546Sopenharmony_ci 906bf215546Sopenharmony_cistatic void GLAPIENTRY 907bf215546Sopenharmony_ciTAG(VertexAttrib3hNV)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z) 908bf215546Sopenharmony_ci{ 909bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 910bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 911bf215546Sopenharmony_ci ATTR3H(0, x, y, z); 912bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 913bf215546Sopenharmony_ci ATTR3H(VBO_ATTRIB_GENERIC0 + index, x, y, z); 914bf215546Sopenharmony_ci else 915bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 916bf215546Sopenharmony_ci} 917bf215546Sopenharmony_ci 918bf215546Sopenharmony_cistatic void GLAPIENTRY 919bf215546Sopenharmony_ciTAG(VertexAttrib4hNV)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w) 920bf215546Sopenharmony_ci{ 921bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 922bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 923bf215546Sopenharmony_ci ATTR4H(0, x, y, z, w); 924bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 925bf215546Sopenharmony_ci ATTR4H(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); 926bf215546Sopenharmony_ci else 927bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 928bf215546Sopenharmony_ci} 929bf215546Sopenharmony_ci 930bf215546Sopenharmony_cistatic void GLAPIENTRY 931bf215546Sopenharmony_ciTAG(VertexAttrib1hvNV)(GLuint index, const GLhalfNV * v) 932bf215546Sopenharmony_ci{ 933bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 934bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 935bf215546Sopenharmony_ci ATTR1HV(0, v); 936bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 937bf215546Sopenharmony_ci ATTR1HV(VBO_ATTRIB_GENERIC0 + index, v); 938bf215546Sopenharmony_ci else 939bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 940bf215546Sopenharmony_ci} 941bf215546Sopenharmony_ci 942bf215546Sopenharmony_cistatic void GLAPIENTRY 943bf215546Sopenharmony_ciTAG(VertexAttrib2hvNV)(GLuint index, const GLhalfNV * v) 944bf215546Sopenharmony_ci{ 945bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 946bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 947bf215546Sopenharmony_ci ATTR2HV(0, v); 948bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 949bf215546Sopenharmony_ci ATTR2HV(VBO_ATTRIB_GENERIC0 + index, v); 950bf215546Sopenharmony_ci else 951bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 952bf215546Sopenharmony_ci} 953bf215546Sopenharmony_ci 954bf215546Sopenharmony_cistatic void GLAPIENTRY 955bf215546Sopenharmony_ciTAG(VertexAttrib3hvNV)(GLuint index, const GLhalfNV * v) 956bf215546Sopenharmony_ci{ 957bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 958bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 959bf215546Sopenharmony_ci ATTR3HV(0, v); 960bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 961bf215546Sopenharmony_ci ATTR3HV(VBO_ATTRIB_GENERIC0 + index, v); 962bf215546Sopenharmony_ci else 963bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 964bf215546Sopenharmony_ci} 965bf215546Sopenharmony_ci 966bf215546Sopenharmony_cistatic void GLAPIENTRY 967bf215546Sopenharmony_ciTAG(VertexAttrib4hvNV)(GLuint index, const GLhalfNV * v) 968bf215546Sopenharmony_ci{ 969bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 970bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 971bf215546Sopenharmony_ci ATTR4HV(0, v); 972bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 973bf215546Sopenharmony_ci ATTR4HV(VBO_ATTRIB_GENERIC0 + index, v); 974bf215546Sopenharmony_ci else 975bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 976bf215546Sopenharmony_ci} 977bf215546Sopenharmony_ci 978bf215546Sopenharmony_cistatic void GLAPIENTRY 979bf215546Sopenharmony_ciTAG(VertexAttribs1hvNV)(GLuint index, GLsizei n, const GLhalfNV *v) 980bf215546Sopenharmony_ci{ 981bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 982bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 983bf215546Sopenharmony_ci for (GLint i = n - 1; i >= 0; i--) 984bf215546Sopenharmony_ci ATTR1H(index + i, v[i]); 985bf215546Sopenharmony_ci} 986bf215546Sopenharmony_ci 987bf215546Sopenharmony_cistatic void GLAPIENTRY 988bf215546Sopenharmony_ciTAG(VertexAttribs2hvNV)(GLuint index, GLsizei n, const GLhalfNV *v) 989bf215546Sopenharmony_ci{ 990bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 991bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 992bf215546Sopenharmony_ci for (GLint i = n - 1; i >= 0; i--) 993bf215546Sopenharmony_ci ATTR2H(index + i, v[2 * i], v[2 * i + 1]); 994bf215546Sopenharmony_ci} 995bf215546Sopenharmony_ci 996bf215546Sopenharmony_cistatic void GLAPIENTRY 997bf215546Sopenharmony_ciTAG(VertexAttribs3hvNV)(GLuint index, GLsizei n, const GLhalfNV *v) 998bf215546Sopenharmony_ci{ 999bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1000bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1001bf215546Sopenharmony_ci for (GLint i = n - 1; i >= 0; i--) 1002bf215546Sopenharmony_ci ATTR3H(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]); 1003bf215546Sopenharmony_ci} 1004bf215546Sopenharmony_ci 1005bf215546Sopenharmony_ci 1006bf215546Sopenharmony_cistatic void GLAPIENTRY 1007bf215546Sopenharmony_ciTAG(VertexAttribs4hvNV)(GLuint index, GLsizei n, const GLhalfNV *v) 1008bf215546Sopenharmony_ci{ 1009bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1010bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1011bf215546Sopenharmony_ci for (GLint i = n - 1; i >= 0; i--) 1012bf215546Sopenharmony_ci ATTR4H(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]); 1013bf215546Sopenharmony_ci} 1014bf215546Sopenharmony_ci 1015bf215546Sopenharmony_cistatic void GLAPIENTRY 1016bf215546Sopenharmony_ciTAG(Vertex2d)(GLdouble x, GLdouble y) 1017bf215546Sopenharmony_ci{ 1018bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1019bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y); 1020bf215546Sopenharmony_ci} 1021bf215546Sopenharmony_ci 1022bf215546Sopenharmony_cistatic void GLAPIENTRY 1023bf215546Sopenharmony_ciTAG(Vertex2i)(GLint x, GLint y) 1024bf215546Sopenharmony_ci{ 1025bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1026bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y); 1027bf215546Sopenharmony_ci} 1028bf215546Sopenharmony_ci 1029bf215546Sopenharmony_cistatic void GLAPIENTRY 1030bf215546Sopenharmony_ciTAG(Vertex2s)(GLshort x, GLshort y) 1031bf215546Sopenharmony_ci{ 1032bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1033bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y); 1034bf215546Sopenharmony_ci} 1035bf215546Sopenharmony_ci 1036bf215546Sopenharmony_cistatic void GLAPIENTRY 1037bf215546Sopenharmony_ciTAG(Vertex3d)(GLdouble x, GLdouble y, GLdouble z) 1038bf215546Sopenharmony_ci{ 1039bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1040bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1041bf215546Sopenharmony_ci} 1042bf215546Sopenharmony_ci 1043bf215546Sopenharmony_cistatic void GLAPIENTRY 1044bf215546Sopenharmony_ciTAG(Vertex3i)(GLint x, GLint y, GLint z) 1045bf215546Sopenharmony_ci{ 1046bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1047bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1048bf215546Sopenharmony_ci} 1049bf215546Sopenharmony_ci 1050bf215546Sopenharmony_cistatic void GLAPIENTRY 1051bf215546Sopenharmony_ciTAG(Vertex3s)(GLshort x, GLshort y, GLshort z) 1052bf215546Sopenharmony_ci{ 1053bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1054bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1055bf215546Sopenharmony_ci} 1056bf215546Sopenharmony_ci 1057bf215546Sopenharmony_cistatic void GLAPIENTRY 1058bf215546Sopenharmony_ciTAG(Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w) 1059bf215546Sopenharmony_ci{ 1060bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1061bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1062bf215546Sopenharmony_ci} 1063bf215546Sopenharmony_ci 1064bf215546Sopenharmony_cistatic void GLAPIENTRY 1065bf215546Sopenharmony_ciTAG(Vertex4i)(GLint x, GLint y, GLint z, GLint w) 1066bf215546Sopenharmony_ci{ 1067bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1068bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1069bf215546Sopenharmony_ci} 1070bf215546Sopenharmony_ci 1071bf215546Sopenharmony_cistatic void GLAPIENTRY 1072bf215546Sopenharmony_ciTAG(Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w) 1073bf215546Sopenharmony_ci{ 1074bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1075bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1076bf215546Sopenharmony_ci} 1077bf215546Sopenharmony_ci 1078bf215546Sopenharmony_cistatic void GLAPIENTRY 1079bf215546Sopenharmony_ciTAG(Vertex2dv)(const GLdouble *v) 1080bf215546Sopenharmony_ci{ 1081bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1082bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1]); 1083bf215546Sopenharmony_ci} 1084bf215546Sopenharmony_ci 1085bf215546Sopenharmony_cistatic void GLAPIENTRY 1086bf215546Sopenharmony_ciTAG(Vertex2iv)(const GLint *v) 1087bf215546Sopenharmony_ci{ 1088bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1089bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1]); 1090bf215546Sopenharmony_ci} 1091bf215546Sopenharmony_ci 1092bf215546Sopenharmony_cistatic void GLAPIENTRY 1093bf215546Sopenharmony_ciTAG(Vertex2sv)(const GLshort *v) 1094bf215546Sopenharmony_ci{ 1095bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1096bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1]); 1097bf215546Sopenharmony_ci} 1098bf215546Sopenharmony_ci 1099bf215546Sopenharmony_cistatic void GLAPIENTRY 1100bf215546Sopenharmony_ciTAG(Vertex3dv)(const GLdouble *v) 1101bf215546Sopenharmony_ci{ 1102bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1103bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1104bf215546Sopenharmony_ci} 1105bf215546Sopenharmony_ci 1106bf215546Sopenharmony_cistatic void GLAPIENTRY 1107bf215546Sopenharmony_ciTAG(Vertex3iv)(const GLint *v) 1108bf215546Sopenharmony_ci{ 1109bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1110bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1111bf215546Sopenharmony_ci} 1112bf215546Sopenharmony_ci 1113bf215546Sopenharmony_cistatic void GLAPIENTRY 1114bf215546Sopenharmony_ciTAG(Vertex3sv)(const GLshort *v) 1115bf215546Sopenharmony_ci{ 1116bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1117bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1118bf215546Sopenharmony_ci} 1119bf215546Sopenharmony_ci 1120bf215546Sopenharmony_cistatic void GLAPIENTRY 1121bf215546Sopenharmony_ciTAG(Vertex4dv)(const GLdouble *v) 1122bf215546Sopenharmony_ci{ 1123bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1124bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], 1125bf215546Sopenharmony_ci (GLfloat) v[2], (GLfloat) v[3]); 1126bf215546Sopenharmony_ci} 1127bf215546Sopenharmony_ci 1128bf215546Sopenharmony_cistatic void GLAPIENTRY 1129bf215546Sopenharmony_ciTAG(Vertex4iv)(const GLint *v) 1130bf215546Sopenharmony_ci{ 1131bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1132bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], 1133bf215546Sopenharmony_ci (GLfloat) v[2], (GLfloat) v[3]); 1134bf215546Sopenharmony_ci} 1135bf215546Sopenharmony_ci 1136bf215546Sopenharmony_cistatic void GLAPIENTRY 1137bf215546Sopenharmony_ciTAG(Vertex4sv)(const GLshort *v) 1138bf215546Sopenharmony_ci{ 1139bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1140bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], 1141bf215546Sopenharmony_ci (GLfloat) v[2], (GLfloat) v[3]); 1142bf215546Sopenharmony_ci} 1143bf215546Sopenharmony_ci 1144bf215546Sopenharmony_ci/* 1145bf215546Sopenharmony_ci * GL_NV_vertex_program: 1146bf215546Sopenharmony_ci * Note that attribute indexes DO alias conventional vertex attributes. 1147bf215546Sopenharmony_ci */ 1148bf215546Sopenharmony_ci 1149bf215546Sopenharmony_cistatic void GLAPIENTRY 1150bf215546Sopenharmony_ciTAG(VertexAttrib1sNV)(GLuint index, GLshort x) 1151bf215546Sopenharmony_ci{ 1152bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1153bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) x); 1154bf215546Sopenharmony_ci} 1155bf215546Sopenharmony_ci 1156bf215546Sopenharmony_cistatic void GLAPIENTRY 1157bf215546Sopenharmony_ciTAG(VertexAttrib1dNV)(GLuint index, GLdouble x) 1158bf215546Sopenharmony_ci{ 1159bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1160bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) x); 1161bf215546Sopenharmony_ci} 1162bf215546Sopenharmony_ci 1163bf215546Sopenharmony_cistatic void GLAPIENTRY 1164bf215546Sopenharmony_ciTAG(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y) 1165bf215546Sopenharmony_ci{ 1166bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1167bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) x, y); 1168bf215546Sopenharmony_ci} 1169bf215546Sopenharmony_ci 1170bf215546Sopenharmony_cistatic void GLAPIENTRY 1171bf215546Sopenharmony_ciTAG(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y) 1172bf215546Sopenharmony_ci{ 1173bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1174bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) x, (GLfloat) y); 1175bf215546Sopenharmony_ci} 1176bf215546Sopenharmony_ci 1177bf215546Sopenharmony_cistatic void GLAPIENTRY 1178bf215546Sopenharmony_ciTAG(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z) 1179bf215546Sopenharmony_ci{ 1180bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1181bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1182bf215546Sopenharmony_ci} 1183bf215546Sopenharmony_ci 1184bf215546Sopenharmony_cistatic void GLAPIENTRY 1185bf215546Sopenharmony_ciTAG(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z) 1186bf215546Sopenharmony_ci{ 1187bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1188bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 1189bf215546Sopenharmony_ci} 1190bf215546Sopenharmony_ci 1191bf215546Sopenharmony_cistatic void GLAPIENTRY 1192bf215546Sopenharmony_ciTAG(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) 1193bf215546Sopenharmony_ci{ 1194bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1195bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1196bf215546Sopenharmony_ci} 1197bf215546Sopenharmony_ci 1198bf215546Sopenharmony_cistatic void GLAPIENTRY 1199bf215546Sopenharmony_ciTAG(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) 1200bf215546Sopenharmony_ci{ 1201bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1202bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1203bf215546Sopenharmony_ci} 1204bf215546Sopenharmony_ci 1205bf215546Sopenharmony_cistatic void GLAPIENTRY 1206bf215546Sopenharmony_ciTAG(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) 1207bf215546Sopenharmony_ci{ 1208bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1209bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR4F(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), 1210bf215546Sopenharmony_ci UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w)); 1211bf215546Sopenharmony_ci} 1212bf215546Sopenharmony_ci 1213bf215546Sopenharmony_cistatic void GLAPIENTRY 1214bf215546Sopenharmony_ciTAG(VertexAttrib1svNV)(GLuint index, const GLshort *v) 1215bf215546Sopenharmony_ci{ 1216bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1217bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) v[0]); 1218bf215546Sopenharmony_ci} 1219bf215546Sopenharmony_ci 1220bf215546Sopenharmony_cistatic void GLAPIENTRY 1221bf215546Sopenharmony_ciTAG(VertexAttrib1dvNV)(GLuint index, const GLdouble *v) 1222bf215546Sopenharmony_ci{ 1223bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1224bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) v[0]); 1225bf215546Sopenharmony_ci} 1226bf215546Sopenharmony_ci 1227bf215546Sopenharmony_cistatic void GLAPIENTRY 1228bf215546Sopenharmony_ciTAG(VertexAttrib2svNV)(GLuint index, const GLshort *v) 1229bf215546Sopenharmony_ci{ 1230bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1231bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) v[0], (GLfloat) v[1]); 1232bf215546Sopenharmony_ci} 1233bf215546Sopenharmony_ci 1234bf215546Sopenharmony_cistatic void GLAPIENTRY 1235bf215546Sopenharmony_ciTAG(VertexAttrib2dvNV)(GLuint index, const GLdouble *v) 1236bf215546Sopenharmony_ci{ 1237bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1238bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) v[0], (GLfloat) v[1]); 1239bf215546Sopenharmony_ci} 1240bf215546Sopenharmony_ci 1241bf215546Sopenharmony_cistatic void GLAPIENTRY 1242bf215546Sopenharmony_ciTAG(VertexAttrib3svNV)(GLuint index, const GLshort *v) 1243bf215546Sopenharmony_ci{ 1244bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1245bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1246bf215546Sopenharmony_ci} 1247bf215546Sopenharmony_ci 1248bf215546Sopenharmony_cistatic void GLAPIENTRY 1249bf215546Sopenharmony_ciTAG(VertexAttrib3dvNV)(GLuint index, const GLdouble *v) 1250bf215546Sopenharmony_ci{ 1251bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1252bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1253bf215546Sopenharmony_ci} 1254bf215546Sopenharmony_ci 1255bf215546Sopenharmony_cistatic void GLAPIENTRY 1256bf215546Sopenharmony_ciTAG(VertexAttrib4svNV)(GLuint index, const GLshort *v) 1257bf215546Sopenharmony_ci{ 1258bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1259bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1260bf215546Sopenharmony_ci (GLfloat)v[3]); 1261bf215546Sopenharmony_ci} 1262bf215546Sopenharmony_ci 1263bf215546Sopenharmony_cistatic void GLAPIENTRY 1264bf215546Sopenharmony_ciTAG(VertexAttrib4dvNV)(GLuint index, const GLdouble *v) 1265bf215546Sopenharmony_ci{ 1266bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1267bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1268bf215546Sopenharmony_ci} 1269bf215546Sopenharmony_ci 1270bf215546Sopenharmony_cistatic void GLAPIENTRY 1271bf215546Sopenharmony_ciTAG(VertexAttrib4ubvNV)(GLuint index, const GLubyte *v) 1272bf215546Sopenharmony_ci{ 1273bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1274bf215546Sopenharmony_ci if (index < VBO_ATTRIB_MAX) ATTR4F(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), 1275bf215546Sopenharmony_ci UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3])); 1276bf215546Sopenharmony_ci} 1277bf215546Sopenharmony_ci 1278bf215546Sopenharmony_ci 1279bf215546Sopenharmony_cistatic void GLAPIENTRY 1280bf215546Sopenharmony_ciTAG(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort *v) 1281bf215546Sopenharmony_ci{ 1282bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1283bf215546Sopenharmony_ci GLint i; 1284bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1285bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1286bf215546Sopenharmony_ci ATTR1F(index + i, (GLfloat) v[i]); 1287bf215546Sopenharmony_ci} 1288bf215546Sopenharmony_ci 1289bf215546Sopenharmony_cistatic void GLAPIENTRY 1290bf215546Sopenharmony_ciTAG(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat *v) 1291bf215546Sopenharmony_ci{ 1292bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1293bf215546Sopenharmony_ci GLint i; 1294bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1295bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1296bf215546Sopenharmony_ci ATTR1F(index + i, v[i]); 1297bf215546Sopenharmony_ci} 1298bf215546Sopenharmony_ci 1299bf215546Sopenharmony_cistatic void GLAPIENTRY 1300bf215546Sopenharmony_ciTAG(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble *v) 1301bf215546Sopenharmony_ci{ 1302bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1303bf215546Sopenharmony_ci GLint i; 1304bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1305bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1306bf215546Sopenharmony_ci ATTR1F(index + i, (GLfloat) v[i]); 1307bf215546Sopenharmony_ci} 1308bf215546Sopenharmony_ci 1309bf215546Sopenharmony_cistatic void GLAPIENTRY 1310bf215546Sopenharmony_ciTAG(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort *v) 1311bf215546Sopenharmony_ci{ 1312bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1313bf215546Sopenharmony_ci GLint i; 1314bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1315bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1316bf215546Sopenharmony_ci ATTR2F(index + i, (GLfloat) v[2 * i], (GLfloat) v[2 * i + 1]); 1317bf215546Sopenharmony_ci} 1318bf215546Sopenharmony_ci 1319bf215546Sopenharmony_cistatic void GLAPIENTRY 1320bf215546Sopenharmony_ciTAG(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat *v) 1321bf215546Sopenharmony_ci{ 1322bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1323bf215546Sopenharmony_ci GLint i; 1324bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1325bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1326bf215546Sopenharmony_ci ATTR2F(index + i, v[2 * i], v[2 * i + 1]); 1327bf215546Sopenharmony_ci} 1328bf215546Sopenharmony_ci 1329bf215546Sopenharmony_cistatic void GLAPIENTRY 1330bf215546Sopenharmony_ciTAG(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble *v) 1331bf215546Sopenharmony_ci{ 1332bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1333bf215546Sopenharmony_ci GLint i; 1334bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1335bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1336bf215546Sopenharmony_ci ATTR2F(index + i, (GLfloat) v[2 * i], (GLfloat) v[2 * i + 1]); 1337bf215546Sopenharmony_ci} 1338bf215546Sopenharmony_ci 1339bf215546Sopenharmony_cistatic void GLAPIENTRY 1340bf215546Sopenharmony_ciTAG(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort *v) 1341bf215546Sopenharmony_ci{ 1342bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1343bf215546Sopenharmony_ci GLint i; 1344bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1345bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1346bf215546Sopenharmony_ci ATTR3F(index + i, (GLfloat) v[3 * i], (GLfloat) v[3 * i + 1], (GLfloat) v[3 * i + 2]); 1347bf215546Sopenharmony_ci} 1348bf215546Sopenharmony_ci 1349bf215546Sopenharmony_cistatic void GLAPIENTRY 1350bf215546Sopenharmony_ciTAG(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat *v) 1351bf215546Sopenharmony_ci{ 1352bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1353bf215546Sopenharmony_ci GLint i; 1354bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1355bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1356bf215546Sopenharmony_ci ATTR3F(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]); 1357bf215546Sopenharmony_ci} 1358bf215546Sopenharmony_ci 1359bf215546Sopenharmony_cistatic void GLAPIENTRY 1360bf215546Sopenharmony_ciTAG(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble *v) 1361bf215546Sopenharmony_ci{ 1362bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1363bf215546Sopenharmony_ci GLint i; 1364bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1365bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1366bf215546Sopenharmony_ci ATTR3F(index + i, (GLfloat) v[3 * i], (GLfloat) v[3 * i + 1], (GLfloat) v[3 * i + 2]); 1367bf215546Sopenharmony_ci} 1368bf215546Sopenharmony_ci 1369bf215546Sopenharmony_cistatic void GLAPIENTRY 1370bf215546Sopenharmony_ciTAG(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort *v) 1371bf215546Sopenharmony_ci{ 1372bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1373bf215546Sopenharmony_ci GLint i; 1374bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1375bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1376bf215546Sopenharmony_ci ATTR4F(index + i, (GLfloat) v[4 * i], (GLfloat) v[4 * i + 1], (GLfloat) v[4 * i + 2], (GLfloat) v[4 * i + 3]); 1377bf215546Sopenharmony_ci} 1378bf215546Sopenharmony_ci 1379bf215546Sopenharmony_cistatic void GLAPIENTRY 1380bf215546Sopenharmony_ciTAG(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat *v) 1381bf215546Sopenharmony_ci{ 1382bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1383bf215546Sopenharmony_ci GLint i; 1384bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1385bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1386bf215546Sopenharmony_ci ATTR4F(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]); 1387bf215546Sopenharmony_ci} 1388bf215546Sopenharmony_ci 1389bf215546Sopenharmony_cistatic void GLAPIENTRY 1390bf215546Sopenharmony_ciTAG(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble *v) 1391bf215546Sopenharmony_ci{ 1392bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1393bf215546Sopenharmony_ci GLint i; 1394bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1395bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1396bf215546Sopenharmony_ci ATTR4F(index + i, (GLfloat) v[4 * i], (GLfloat) v[4 * i + 1], (GLfloat) v[4 * i + 2], (GLfloat) v[4 * i + 3]); 1397bf215546Sopenharmony_ci} 1398bf215546Sopenharmony_ci 1399bf215546Sopenharmony_cistatic void GLAPIENTRY 1400bf215546Sopenharmony_ciTAG(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte *v) 1401bf215546Sopenharmony_ci{ 1402bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1403bf215546Sopenharmony_ci GLint i; 1404bf215546Sopenharmony_ci n = MIN2(n, VBO_ATTRIB_MAX - index); 1405bf215546Sopenharmony_ci for (i = n - 1; i >= 0; i--) 1406bf215546Sopenharmony_ci ATTR4F(index + i, UBYTE_TO_FLOAT(v[4 * i]), UBYTE_TO_FLOAT(v[4 * i + 1]), 1407bf215546Sopenharmony_ci UBYTE_TO_FLOAT(v[4 * i + 2]), UBYTE_TO_FLOAT(v[4 * i + 3])); 1408bf215546Sopenharmony_ci} 1409bf215546Sopenharmony_ci 1410bf215546Sopenharmony_ci 1411bf215546Sopenharmony_ci/* 1412bf215546Sopenharmony_ci * GL_ARB_vertex_program 1413bf215546Sopenharmony_ci * Note that attribute indexes do NOT alias conventional attributes. 1414bf215546Sopenharmony_ci */ 1415bf215546Sopenharmony_ci 1416bf215546Sopenharmony_cistatic void GLAPIENTRY 1417bf215546Sopenharmony_ciTAG(VertexAttrib1s)(GLuint index, GLshort x) 1418bf215546Sopenharmony_ci{ 1419bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1420bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1421bf215546Sopenharmony_ci ATTR1F(0, (GLfloat) x); 1422bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1423bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x); 1424bf215546Sopenharmony_ci else 1425bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1426bf215546Sopenharmony_ci} 1427bf215546Sopenharmony_ci 1428bf215546Sopenharmony_cistatic void GLAPIENTRY 1429bf215546Sopenharmony_ciTAG(VertexAttrib1d)(GLuint index, GLdouble x) 1430bf215546Sopenharmony_ci{ 1431bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1432bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1433bf215546Sopenharmony_ci ATTR1F(0, (GLfloat) x); 1434bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1435bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x); 1436bf215546Sopenharmony_ci else 1437bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1438bf215546Sopenharmony_ci} 1439bf215546Sopenharmony_ci 1440bf215546Sopenharmony_cistatic void GLAPIENTRY 1441bf215546Sopenharmony_ciTAG(VertexAttrib2s)(GLuint index, GLshort x, GLshort y) 1442bf215546Sopenharmony_ci{ 1443bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1444bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1445bf215546Sopenharmony_ci ATTR2F(0, (GLfloat) x, (GLfloat) y); 1446bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1447bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y); 1448bf215546Sopenharmony_ci else 1449bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1450bf215546Sopenharmony_ci} 1451bf215546Sopenharmony_ci 1452bf215546Sopenharmony_cistatic void GLAPIENTRY 1453bf215546Sopenharmony_ciTAG(VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y) 1454bf215546Sopenharmony_ci{ 1455bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1456bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1457bf215546Sopenharmony_ci ATTR2F(0, (GLfloat) x, (GLfloat) y); 1458bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1459bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y); 1460bf215546Sopenharmony_ci else 1461bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1462bf215546Sopenharmony_ci} 1463bf215546Sopenharmony_ci 1464bf215546Sopenharmony_cistatic void GLAPIENTRY 1465bf215546Sopenharmony_ciTAG(VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z) 1466bf215546Sopenharmony_ci{ 1467bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1468bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1469bf215546Sopenharmony_ci ATTR3F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1470bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1471bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1472bf215546Sopenharmony_ci else 1473bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1474bf215546Sopenharmony_ci} 1475bf215546Sopenharmony_ci 1476bf215546Sopenharmony_cistatic void GLAPIENTRY 1477bf215546Sopenharmony_ciTAG(VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z) 1478bf215546Sopenharmony_ci{ 1479bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1480bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1481bf215546Sopenharmony_ci ATTR3F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1482bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1483bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1484bf215546Sopenharmony_ci else 1485bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1486bf215546Sopenharmony_ci} 1487bf215546Sopenharmony_ci 1488bf215546Sopenharmony_cistatic void GLAPIENTRY 1489bf215546Sopenharmony_ciTAG(VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) 1490bf215546Sopenharmony_ci{ 1491bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1492bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1493bf215546Sopenharmony_ci ATTR4F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1494bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1495bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1496bf215546Sopenharmony_ci else 1497bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1498bf215546Sopenharmony_ci} 1499bf215546Sopenharmony_ci 1500bf215546Sopenharmony_cistatic void GLAPIENTRY 1501bf215546Sopenharmony_ciTAG(VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) 1502bf215546Sopenharmony_ci{ 1503bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1504bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1505bf215546Sopenharmony_ci ATTR4F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1506bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1507bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1508bf215546Sopenharmony_ci else 1509bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1510bf215546Sopenharmony_ci} 1511bf215546Sopenharmony_ci 1512bf215546Sopenharmony_cistatic void GLAPIENTRY 1513bf215546Sopenharmony_ciTAG(VertexAttrib1sv)(GLuint index, const GLshort *v) 1514bf215546Sopenharmony_ci{ 1515bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1516bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1517bf215546Sopenharmony_ci ATTR1F(0, (GLfloat) v[0]); 1518bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1519bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0]); 1520bf215546Sopenharmony_ci else 1521bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1522bf215546Sopenharmony_ci} 1523bf215546Sopenharmony_ci 1524bf215546Sopenharmony_cistatic void GLAPIENTRY 1525bf215546Sopenharmony_ciTAG(VertexAttrib1dv)(GLuint index, const GLdouble *v) 1526bf215546Sopenharmony_ci{ 1527bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1528bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1529bf215546Sopenharmony_ci ATTR1F(0, (GLfloat) v[0]); 1530bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1531bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0]); 1532bf215546Sopenharmony_ci else 1533bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1534bf215546Sopenharmony_ci} 1535bf215546Sopenharmony_ci 1536bf215546Sopenharmony_cistatic void GLAPIENTRY 1537bf215546Sopenharmony_ciTAG(VertexAttrib2sv)(GLuint index, const GLshort *v) 1538bf215546Sopenharmony_ci{ 1539bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1540bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1541bf215546Sopenharmony_ci ATTR2F(0, (GLfloat) v[0], (GLfloat) v[1]); 1542bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1543bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1]); 1544bf215546Sopenharmony_ci else 1545bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1546bf215546Sopenharmony_ci} 1547bf215546Sopenharmony_ci 1548bf215546Sopenharmony_cistatic void GLAPIENTRY 1549bf215546Sopenharmony_ciTAG(VertexAttrib2dv)(GLuint index, const GLdouble *v) 1550bf215546Sopenharmony_ci{ 1551bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1552bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1553bf215546Sopenharmony_ci ATTR2F(0, (GLfloat) v[0], (GLfloat) v[1]); 1554bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1555bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1]); 1556bf215546Sopenharmony_ci else 1557bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1558bf215546Sopenharmony_ci} 1559bf215546Sopenharmony_ci 1560bf215546Sopenharmony_cistatic void GLAPIENTRY 1561bf215546Sopenharmony_ciTAG(VertexAttrib3sv)(GLuint index, const GLshort *v) 1562bf215546Sopenharmony_ci{ 1563bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1564bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1565bf215546Sopenharmony_ci ATTR3F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1566bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1567bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1568bf215546Sopenharmony_ci else 1569bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1570bf215546Sopenharmony_ci} 1571bf215546Sopenharmony_ci 1572bf215546Sopenharmony_cistatic void GLAPIENTRY 1573bf215546Sopenharmony_ciTAG(VertexAttrib3dv)(GLuint index, const GLdouble *v) 1574bf215546Sopenharmony_ci{ 1575bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1576bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1577bf215546Sopenharmony_ci ATTR3F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1578bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1579bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1580bf215546Sopenharmony_ci else 1581bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1582bf215546Sopenharmony_ci} 1583bf215546Sopenharmony_ci 1584bf215546Sopenharmony_cistatic void GLAPIENTRY 1585bf215546Sopenharmony_ciTAG(VertexAttrib4sv)(GLuint index, const GLshort *v) 1586bf215546Sopenharmony_ci{ 1587bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1588bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1589bf215546Sopenharmony_ci ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1590bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1591bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1592bf215546Sopenharmony_ci else 1593bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1594bf215546Sopenharmony_ci} 1595bf215546Sopenharmony_ci 1596bf215546Sopenharmony_cistatic void GLAPIENTRY 1597bf215546Sopenharmony_ciTAG(VertexAttrib4dv)(GLuint index, const GLdouble *v) 1598bf215546Sopenharmony_ci{ 1599bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1600bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1601bf215546Sopenharmony_ci ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1602bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1603bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1604bf215546Sopenharmony_ci else 1605bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1606bf215546Sopenharmony_ci} 1607bf215546Sopenharmony_ci 1608bf215546Sopenharmony_cistatic void GLAPIENTRY 1609bf215546Sopenharmony_ciTAG(VertexAttrib4bv)(GLuint index, const GLbyte * v) 1610bf215546Sopenharmony_ci{ 1611bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1612bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1613bf215546Sopenharmony_ci ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1614bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1615bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1616bf215546Sopenharmony_ci else 1617bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1618bf215546Sopenharmony_ci} 1619bf215546Sopenharmony_ci 1620bf215546Sopenharmony_cistatic void GLAPIENTRY 1621bf215546Sopenharmony_ciTAG(VertexAttrib4iv)(GLuint index, const GLint * v) 1622bf215546Sopenharmony_ci{ 1623bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1624bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1625bf215546Sopenharmony_ci ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1626bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1627bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1628bf215546Sopenharmony_ci else 1629bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1630bf215546Sopenharmony_ci} 1631bf215546Sopenharmony_ci 1632bf215546Sopenharmony_cistatic void GLAPIENTRY 1633bf215546Sopenharmony_ciTAG(VertexAttrib4ubv)(GLuint index, const GLubyte * v) 1634bf215546Sopenharmony_ci{ 1635bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1636bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1637bf215546Sopenharmony_ci ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1638bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1639bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1640bf215546Sopenharmony_ci else 1641bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1642bf215546Sopenharmony_ci} 1643bf215546Sopenharmony_ci 1644bf215546Sopenharmony_cistatic void GLAPIENTRY 1645bf215546Sopenharmony_ciTAG(VertexAttrib4usv)(GLuint index, const GLushort * v) 1646bf215546Sopenharmony_ci{ 1647bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1648bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1649bf215546Sopenharmony_ci ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1650bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1651bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1652bf215546Sopenharmony_ci else 1653bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1654bf215546Sopenharmony_ci} 1655bf215546Sopenharmony_ci 1656bf215546Sopenharmony_cistatic void GLAPIENTRY 1657bf215546Sopenharmony_ciTAG(VertexAttrib4uiv)(GLuint index, const GLuint * v) 1658bf215546Sopenharmony_ci{ 1659bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1660bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1661bf215546Sopenharmony_ci ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1662bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1663bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]); 1664bf215546Sopenharmony_ci else 1665bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1666bf215546Sopenharmony_ci} 1667bf215546Sopenharmony_ci 1668bf215546Sopenharmony_cistatic void GLAPIENTRY 1669bf215546Sopenharmony_ciTAG(VertexAttrib4Nbv)(GLuint index, const GLbyte * v) 1670bf215546Sopenharmony_ci{ 1671bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1672bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1673bf215546Sopenharmony_ci ATTR4F(0, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3])); 1674bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1675bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3])); 1676bf215546Sopenharmony_ci else 1677bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1678bf215546Sopenharmony_ci} 1679bf215546Sopenharmony_ci 1680bf215546Sopenharmony_cistatic void GLAPIENTRY 1681bf215546Sopenharmony_ciTAG(VertexAttrib4Nsv)(GLuint index, const GLshort * v) 1682bf215546Sopenharmony_ci{ 1683bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1684bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1685bf215546Sopenharmony_ci ATTR4F(0, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3])); 1686bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1687bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3])); 1688bf215546Sopenharmony_ci else 1689bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1690bf215546Sopenharmony_ci} 1691bf215546Sopenharmony_ci 1692bf215546Sopenharmony_cistatic void GLAPIENTRY 1693bf215546Sopenharmony_ciTAG(VertexAttrib4Niv)(GLuint index, const GLint * v) 1694bf215546Sopenharmony_ci{ 1695bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1696bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1697bf215546Sopenharmony_ci ATTR4F(0, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3])); 1698bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1699bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3])); 1700bf215546Sopenharmony_ci else 1701bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1702bf215546Sopenharmony_ci} 1703bf215546Sopenharmony_ci 1704bf215546Sopenharmony_cistatic void GLAPIENTRY 1705bf215546Sopenharmony_ciTAG(VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) 1706bf215546Sopenharmony_ci{ 1707bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1708bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1709bf215546Sopenharmony_ci ATTR4F(0, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w)); 1710bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1711bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w)); 1712bf215546Sopenharmony_ci else 1713bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1714bf215546Sopenharmony_ci} 1715bf215546Sopenharmony_ci 1716bf215546Sopenharmony_cistatic void GLAPIENTRY 1717bf215546Sopenharmony_ciTAG(VertexAttrib4Nubv)(GLuint index, const GLubyte * v) 1718bf215546Sopenharmony_ci{ 1719bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1720bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1721bf215546Sopenharmony_ci ATTR4F(0, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3])); 1722bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1723bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3])); 1724bf215546Sopenharmony_ci else 1725bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1726bf215546Sopenharmony_ci} 1727bf215546Sopenharmony_ci 1728bf215546Sopenharmony_cistatic void GLAPIENTRY 1729bf215546Sopenharmony_ciTAG(VertexAttrib4Nusv)(GLuint index, const GLushort * v) 1730bf215546Sopenharmony_ci{ 1731bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1732bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1733bf215546Sopenharmony_ci ATTR4F(0, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3])); 1734bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1735bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3])); 1736bf215546Sopenharmony_ci else 1737bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1738bf215546Sopenharmony_ci} 1739bf215546Sopenharmony_ci 1740bf215546Sopenharmony_cistatic void GLAPIENTRY 1741bf215546Sopenharmony_ciTAG(VertexAttrib4Nuiv)(GLuint index, const GLuint * v) 1742bf215546Sopenharmony_ci{ 1743bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1744bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1745bf215546Sopenharmony_ci ATTR4F(0, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3])); 1746bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1747bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_GENERIC0 + index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3])); 1748bf215546Sopenharmony_ci else 1749bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1750bf215546Sopenharmony_ci} 1751bf215546Sopenharmony_ci 1752bf215546Sopenharmony_ci/** 1753bf215546Sopenharmony_ci * GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes. 1754bf215546Sopenharmony_ci * Note that attribute indexes do NOT alias conventional attributes. 1755bf215546Sopenharmony_ci */ 1756bf215546Sopenharmony_ci 1757bf215546Sopenharmony_cistatic void GLAPIENTRY 1758bf215546Sopenharmony_ciTAG(VertexAttribI1iv)(GLuint index, const GLint *v) 1759bf215546Sopenharmony_ci{ 1760bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1761bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1762bf215546Sopenharmony_ci ATTR1I(0, v[0]); 1763bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1764bf215546Sopenharmony_ci ATTR1I(VBO_ATTRIB_GENERIC0 + index, v[0]); 1765bf215546Sopenharmony_ci else 1766bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1767bf215546Sopenharmony_ci} 1768bf215546Sopenharmony_ci 1769bf215546Sopenharmony_cistatic void GLAPIENTRY 1770bf215546Sopenharmony_ciTAG(VertexAttribI1uiv)(GLuint index, const GLuint *v) 1771bf215546Sopenharmony_ci{ 1772bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1773bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1774bf215546Sopenharmony_ci ATTR1UI(0, v[0]); 1775bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1776bf215546Sopenharmony_ci ATTR1UI(VBO_ATTRIB_GENERIC0 + index, v[0]); 1777bf215546Sopenharmony_ci else 1778bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1779bf215546Sopenharmony_ci} 1780bf215546Sopenharmony_ci 1781bf215546Sopenharmony_cistatic void GLAPIENTRY 1782bf215546Sopenharmony_ciTAG(VertexAttribI4bv)(GLuint index, const GLbyte *v) 1783bf215546Sopenharmony_ci{ 1784bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1785bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1786bf215546Sopenharmony_ci ATTR4I(0, v[0], v[1], v[2], v[3]); 1787bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1788bf215546Sopenharmony_ci ATTR4I(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]); 1789bf215546Sopenharmony_ci else 1790bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1791bf215546Sopenharmony_ci} 1792bf215546Sopenharmony_ci 1793bf215546Sopenharmony_cistatic void GLAPIENTRY 1794bf215546Sopenharmony_ciTAG(VertexAttribI4sv)(GLuint index, const GLshort *v) 1795bf215546Sopenharmony_ci{ 1796bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1797bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1798bf215546Sopenharmony_ci ATTR4I(0, v[0], v[1], v[2], v[3]); 1799bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1800bf215546Sopenharmony_ci ATTR4I(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]); 1801bf215546Sopenharmony_ci else 1802bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1803bf215546Sopenharmony_ci} 1804bf215546Sopenharmony_ci 1805bf215546Sopenharmony_cistatic void GLAPIENTRY 1806bf215546Sopenharmony_ciTAG(VertexAttribI4ubv)(GLuint index, const GLubyte *v) 1807bf215546Sopenharmony_ci{ 1808bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1809bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1810bf215546Sopenharmony_ci ATTR4UI(0, v[0], v[1], v[2], v[3]); 1811bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1812bf215546Sopenharmony_ci ATTR4UI(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]); 1813bf215546Sopenharmony_ci else 1814bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1815bf215546Sopenharmony_ci} 1816bf215546Sopenharmony_ci 1817bf215546Sopenharmony_cistatic void GLAPIENTRY 1818bf215546Sopenharmony_ciTAG(VertexAttribI4usv)(GLuint index, const GLushort *v) 1819bf215546Sopenharmony_ci{ 1820bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1821bf215546Sopenharmony_ci if (is_vertex_position(ctx, index)) 1822bf215546Sopenharmony_ci ATTR4UI(0, v[0], v[1], v[2], v[3]); 1823bf215546Sopenharmony_ci else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 1824bf215546Sopenharmony_ci ATTR4UI(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]); 1825bf215546Sopenharmony_ci else 1826bf215546Sopenharmony_ci ERROR(GL_INVALID_VALUE); 1827bf215546Sopenharmony_ci} 1828bf215546Sopenharmony_ci 1829bf215546Sopenharmony_ci/* define this macro to exclude folllowing none-vertex functions */ 1830bf215546Sopenharmony_ci#ifndef HW_SELECT_MODE 1831bf215546Sopenharmony_ci 1832bf215546Sopenharmony_cistatic void GLAPIENTRY 1833bf215546Sopenharmony_ciTAG(TexCoord1f)(GLfloat x) 1834bf215546Sopenharmony_ci{ 1835bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1836bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_TEX0, x); 1837bf215546Sopenharmony_ci} 1838bf215546Sopenharmony_ci 1839bf215546Sopenharmony_cistatic void GLAPIENTRY 1840bf215546Sopenharmony_ciTAG(TexCoord1fv)(const GLfloat * v) 1841bf215546Sopenharmony_ci{ 1842bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1843bf215546Sopenharmony_ci ATTR1FV(VBO_ATTRIB_TEX0, v); 1844bf215546Sopenharmony_ci} 1845bf215546Sopenharmony_ci 1846bf215546Sopenharmony_cistatic void GLAPIENTRY 1847bf215546Sopenharmony_ciTAG(TexCoord2f)(GLfloat x, GLfloat y) 1848bf215546Sopenharmony_ci{ 1849bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1850bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_TEX0, x, y); 1851bf215546Sopenharmony_ci} 1852bf215546Sopenharmony_ci 1853bf215546Sopenharmony_cistatic void GLAPIENTRY 1854bf215546Sopenharmony_ciTAG(TexCoord2fv)(const GLfloat * v) 1855bf215546Sopenharmony_ci{ 1856bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1857bf215546Sopenharmony_ci ATTR2FV(VBO_ATTRIB_TEX0, v); 1858bf215546Sopenharmony_ci} 1859bf215546Sopenharmony_ci 1860bf215546Sopenharmony_cistatic void GLAPIENTRY 1861bf215546Sopenharmony_ciTAG(TexCoord3f)(GLfloat x, GLfloat y, GLfloat z) 1862bf215546Sopenharmony_ci{ 1863bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1864bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_TEX0, x, y, z); 1865bf215546Sopenharmony_ci} 1866bf215546Sopenharmony_ci 1867bf215546Sopenharmony_cistatic void GLAPIENTRY 1868bf215546Sopenharmony_ciTAG(TexCoord3fv)(const GLfloat * v) 1869bf215546Sopenharmony_ci{ 1870bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1871bf215546Sopenharmony_ci ATTR3FV(VBO_ATTRIB_TEX0, v); 1872bf215546Sopenharmony_ci} 1873bf215546Sopenharmony_ci 1874bf215546Sopenharmony_cistatic void GLAPIENTRY 1875bf215546Sopenharmony_ciTAG(TexCoord4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 1876bf215546Sopenharmony_ci{ 1877bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1878bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_TEX0, x, y, z, w); 1879bf215546Sopenharmony_ci} 1880bf215546Sopenharmony_ci 1881bf215546Sopenharmony_cistatic void GLAPIENTRY 1882bf215546Sopenharmony_ciTAG(TexCoord4fv)(const GLfloat * v) 1883bf215546Sopenharmony_ci{ 1884bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1885bf215546Sopenharmony_ci ATTR4FV(VBO_ATTRIB_TEX0, v); 1886bf215546Sopenharmony_ci} 1887bf215546Sopenharmony_ci 1888bf215546Sopenharmony_ci 1889bf215546Sopenharmony_ci 1890bf215546Sopenharmony_cistatic void GLAPIENTRY 1891bf215546Sopenharmony_ciTAG(Normal3f)(GLfloat x, GLfloat y, GLfloat z) 1892bf215546Sopenharmony_ci{ 1893bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1894bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_NORMAL, x, y, z); 1895bf215546Sopenharmony_ci} 1896bf215546Sopenharmony_ci 1897bf215546Sopenharmony_cistatic void GLAPIENTRY 1898bf215546Sopenharmony_ciTAG(Normal3fv)(const GLfloat * v) 1899bf215546Sopenharmony_ci{ 1900bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1901bf215546Sopenharmony_ci ATTR3FV(VBO_ATTRIB_NORMAL, v); 1902bf215546Sopenharmony_ci} 1903bf215546Sopenharmony_ci 1904bf215546Sopenharmony_ci 1905bf215546Sopenharmony_ci 1906bf215546Sopenharmony_cistatic void GLAPIENTRY 1907bf215546Sopenharmony_ciTAG(FogCoordfEXT)(GLfloat x) 1908bf215546Sopenharmony_ci{ 1909bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1910bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_FOG, x); 1911bf215546Sopenharmony_ci} 1912bf215546Sopenharmony_ci 1913bf215546Sopenharmony_ci 1914bf215546Sopenharmony_ci 1915bf215546Sopenharmony_cistatic void GLAPIENTRY 1916bf215546Sopenharmony_ciTAG(FogCoordfvEXT)(const GLfloat * v) 1917bf215546Sopenharmony_ci{ 1918bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1919bf215546Sopenharmony_ci ATTR1FV(VBO_ATTRIB_FOG, v); 1920bf215546Sopenharmony_ci} 1921bf215546Sopenharmony_ci 1922bf215546Sopenharmony_cistatic void GLAPIENTRY 1923bf215546Sopenharmony_ciTAG(Color3f)(GLfloat x, GLfloat y, GLfloat z) 1924bf215546Sopenharmony_ci{ 1925bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1926bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR0, x, y, z); 1927bf215546Sopenharmony_ci} 1928bf215546Sopenharmony_ci 1929bf215546Sopenharmony_cistatic void GLAPIENTRY 1930bf215546Sopenharmony_ciTAG(Color3fv)(const GLfloat * v) 1931bf215546Sopenharmony_ci{ 1932bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1933bf215546Sopenharmony_ci ATTR3FV(VBO_ATTRIB_COLOR0, v); 1934bf215546Sopenharmony_ci} 1935bf215546Sopenharmony_ci 1936bf215546Sopenharmony_cistatic void GLAPIENTRY 1937bf215546Sopenharmony_ciTAG(Color4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 1938bf215546Sopenharmony_ci{ 1939bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1940bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, x, y, z, w); 1941bf215546Sopenharmony_ci} 1942bf215546Sopenharmony_ci 1943bf215546Sopenharmony_cistatic void GLAPIENTRY 1944bf215546Sopenharmony_ciTAG(Color4fv)(const GLfloat * v) 1945bf215546Sopenharmony_ci{ 1946bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1947bf215546Sopenharmony_ci ATTR4FV(VBO_ATTRIB_COLOR0, v); 1948bf215546Sopenharmony_ci} 1949bf215546Sopenharmony_ci 1950bf215546Sopenharmony_ci 1951bf215546Sopenharmony_ci 1952bf215546Sopenharmony_cistatic void GLAPIENTRY 1953bf215546Sopenharmony_ciTAG(SecondaryColor3fEXT)(GLfloat x, GLfloat y, GLfloat z) 1954bf215546Sopenharmony_ci{ 1955bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1956bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, x, y, z); 1957bf215546Sopenharmony_ci} 1958bf215546Sopenharmony_ci 1959bf215546Sopenharmony_cistatic void GLAPIENTRY 1960bf215546Sopenharmony_ciTAG(SecondaryColor3fvEXT)(const GLfloat * v) 1961bf215546Sopenharmony_ci{ 1962bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1963bf215546Sopenharmony_ci ATTR3FV(VBO_ATTRIB_COLOR1, v); 1964bf215546Sopenharmony_ci} 1965bf215546Sopenharmony_ci 1966bf215546Sopenharmony_ci 1967bf215546Sopenharmony_ci 1968bf215546Sopenharmony_cistatic void GLAPIENTRY 1969bf215546Sopenharmony_ciTAG(EdgeFlag)(GLboolean b) 1970bf215546Sopenharmony_ci{ 1971bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1972bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_EDGEFLAG, (GLfloat) b); 1973bf215546Sopenharmony_ci} 1974bf215546Sopenharmony_ci 1975bf215546Sopenharmony_ci 1976bf215546Sopenharmony_ci 1977bf215546Sopenharmony_cistatic void GLAPIENTRY 1978bf215546Sopenharmony_ciTAG(Indexf)(GLfloat f) 1979bf215546Sopenharmony_ci{ 1980bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1981bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_COLOR_INDEX, f); 1982bf215546Sopenharmony_ci} 1983bf215546Sopenharmony_ci 1984bf215546Sopenharmony_cistatic void GLAPIENTRY 1985bf215546Sopenharmony_ciTAG(Indexfv)(const GLfloat * f) 1986bf215546Sopenharmony_ci{ 1987bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1988bf215546Sopenharmony_ci ATTR1FV(VBO_ATTRIB_COLOR_INDEX, f); 1989bf215546Sopenharmony_ci} 1990bf215546Sopenharmony_ci 1991bf215546Sopenharmony_ci 1992bf215546Sopenharmony_ci 1993bf215546Sopenharmony_cistatic void GLAPIENTRY 1994bf215546Sopenharmony_ciTAG(MultiTexCoord1fARB)(GLenum target, GLfloat x) 1995bf215546Sopenharmony_ci{ 1996bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 1997bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 1998bf215546Sopenharmony_ci ATTR1F(attr, x); 1999bf215546Sopenharmony_ci} 2000bf215546Sopenharmony_ci 2001bf215546Sopenharmony_cistatic void GLAPIENTRY 2002bf215546Sopenharmony_ciTAG(MultiTexCoord1fvARB)(GLenum target, const GLfloat * v) 2003bf215546Sopenharmony_ci{ 2004bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2005bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2006bf215546Sopenharmony_ci ATTR1FV(attr, v); 2007bf215546Sopenharmony_ci} 2008bf215546Sopenharmony_ci 2009bf215546Sopenharmony_cistatic void GLAPIENTRY 2010bf215546Sopenharmony_ciTAG(MultiTexCoord2fARB)(GLenum target, GLfloat x, GLfloat y) 2011bf215546Sopenharmony_ci{ 2012bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2013bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2014bf215546Sopenharmony_ci ATTR2F(attr, x, y); 2015bf215546Sopenharmony_ci} 2016bf215546Sopenharmony_ci 2017bf215546Sopenharmony_cistatic void GLAPIENTRY 2018bf215546Sopenharmony_ciTAG(MultiTexCoord2fvARB)(GLenum target, const GLfloat * v) 2019bf215546Sopenharmony_ci{ 2020bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2021bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2022bf215546Sopenharmony_ci ATTR2FV(attr, v); 2023bf215546Sopenharmony_ci} 2024bf215546Sopenharmony_ci 2025bf215546Sopenharmony_cistatic void GLAPIENTRY 2026bf215546Sopenharmony_ciTAG(MultiTexCoord3fARB)(GLenum target, GLfloat x, GLfloat y, GLfloat z) 2027bf215546Sopenharmony_ci{ 2028bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2029bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2030bf215546Sopenharmony_ci ATTR3F(attr, x, y, z); 2031bf215546Sopenharmony_ci} 2032bf215546Sopenharmony_ci 2033bf215546Sopenharmony_cistatic void GLAPIENTRY 2034bf215546Sopenharmony_ciTAG(MultiTexCoord3fvARB)(GLenum target, const GLfloat * v) 2035bf215546Sopenharmony_ci{ 2036bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2037bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2038bf215546Sopenharmony_ci ATTR3FV(attr, v); 2039bf215546Sopenharmony_ci} 2040bf215546Sopenharmony_ci 2041bf215546Sopenharmony_cistatic void GLAPIENTRY 2042bf215546Sopenharmony_ciTAG(MultiTexCoord4fARB)(GLenum target, GLfloat x, GLfloat y, GLfloat z, GLfloat w) 2043bf215546Sopenharmony_ci{ 2044bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2045bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2046bf215546Sopenharmony_ci ATTR4F(attr, x, y, z, w); 2047bf215546Sopenharmony_ci} 2048bf215546Sopenharmony_ci 2049bf215546Sopenharmony_cistatic void GLAPIENTRY 2050bf215546Sopenharmony_ciTAG(MultiTexCoord4fvARB)(GLenum target, const GLfloat * v) 2051bf215546Sopenharmony_ci{ 2052bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2053bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2054bf215546Sopenharmony_ci ATTR4FV(attr, v); 2055bf215546Sopenharmony_ci} 2056bf215546Sopenharmony_ci 2057bf215546Sopenharmony_cistatic void GLAPIENTRY 2058bf215546Sopenharmony_ciTAG(TexCoordP1ui)(GLenum type, GLuint coords) 2059bf215546Sopenharmony_ci{ 2060bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2061bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP1ui"); 2062bf215546Sopenharmony_ci ATTR_UI(ctx, 1, type, 0, VBO_ATTRIB_TEX0, coords); 2063bf215546Sopenharmony_ci} 2064bf215546Sopenharmony_ci 2065bf215546Sopenharmony_cistatic void GLAPIENTRY 2066bf215546Sopenharmony_ciTAG(TexCoordP1uiv)(GLenum type, const GLuint *coords) 2067bf215546Sopenharmony_ci{ 2068bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2069bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP1uiv"); 2070bf215546Sopenharmony_ci ATTR_UI(ctx, 1, type, 0, VBO_ATTRIB_TEX0, coords[0]); 2071bf215546Sopenharmony_ci} 2072bf215546Sopenharmony_ci 2073bf215546Sopenharmony_cistatic void GLAPIENTRY 2074bf215546Sopenharmony_ciTAG(TexCoordP2ui)(GLenum type, GLuint coords) 2075bf215546Sopenharmony_ci{ 2076bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2077bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP2ui"); 2078bf215546Sopenharmony_ci ATTR_UI(ctx, 2, type, 0, VBO_ATTRIB_TEX0, coords); 2079bf215546Sopenharmony_ci} 2080bf215546Sopenharmony_ci 2081bf215546Sopenharmony_cistatic void GLAPIENTRY 2082bf215546Sopenharmony_ciTAG(TexCoordP2uiv)(GLenum type, const GLuint *coords) 2083bf215546Sopenharmony_ci{ 2084bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2085bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP2uiv"); 2086bf215546Sopenharmony_ci ATTR_UI(ctx, 2, type, 0, VBO_ATTRIB_TEX0, coords[0]); 2087bf215546Sopenharmony_ci} 2088bf215546Sopenharmony_ci 2089bf215546Sopenharmony_cistatic void GLAPIENTRY 2090bf215546Sopenharmony_ciTAG(TexCoordP3ui)(GLenum type, GLuint coords) 2091bf215546Sopenharmony_ci{ 2092bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2093bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP3ui"); 2094bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 0, VBO_ATTRIB_TEX0, coords); 2095bf215546Sopenharmony_ci} 2096bf215546Sopenharmony_ci 2097bf215546Sopenharmony_cistatic void GLAPIENTRY 2098bf215546Sopenharmony_ciTAG(TexCoordP3uiv)(GLenum type, const GLuint *coords) 2099bf215546Sopenharmony_ci{ 2100bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2101bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP3uiv"); 2102bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 0, VBO_ATTRIB_TEX0, coords[0]); 2103bf215546Sopenharmony_ci} 2104bf215546Sopenharmony_ci 2105bf215546Sopenharmony_cistatic void GLAPIENTRY 2106bf215546Sopenharmony_ciTAG(TexCoordP4ui)(GLenum type, GLuint coords) 2107bf215546Sopenharmony_ci{ 2108bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2109bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP4ui"); 2110bf215546Sopenharmony_ci ATTR_UI(ctx, 4, type, 0, VBO_ATTRIB_TEX0, coords); 2111bf215546Sopenharmony_ci} 2112bf215546Sopenharmony_ci 2113bf215546Sopenharmony_cistatic void GLAPIENTRY 2114bf215546Sopenharmony_ciTAG(TexCoordP4uiv)(GLenum type, const GLuint *coords) 2115bf215546Sopenharmony_ci{ 2116bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2117bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP4uiv"); 2118bf215546Sopenharmony_ci ATTR_UI(ctx, 4, type, 0, VBO_ATTRIB_TEX0, coords[0]); 2119bf215546Sopenharmony_ci} 2120bf215546Sopenharmony_ci 2121bf215546Sopenharmony_cistatic void GLAPIENTRY 2122bf215546Sopenharmony_ciTAG(MultiTexCoordP1ui)(GLenum target, GLenum type, GLuint coords) 2123bf215546Sopenharmony_ci{ 2124bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2125bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2126bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP1ui"); 2127bf215546Sopenharmony_ci ATTR_UI(ctx, 1, type, 0, attr, coords); 2128bf215546Sopenharmony_ci} 2129bf215546Sopenharmony_ci 2130bf215546Sopenharmony_cistatic void GLAPIENTRY 2131bf215546Sopenharmony_ciTAG(MultiTexCoordP1uiv)(GLenum target, GLenum type, const GLuint *coords) 2132bf215546Sopenharmony_ci{ 2133bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2134bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2135bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP1uiv"); 2136bf215546Sopenharmony_ci ATTR_UI(ctx, 1, type, 0, attr, coords[0]); 2137bf215546Sopenharmony_ci} 2138bf215546Sopenharmony_ci 2139bf215546Sopenharmony_cistatic void GLAPIENTRY 2140bf215546Sopenharmony_ciTAG(MultiTexCoordP2ui)(GLenum target, GLenum type, GLuint coords) 2141bf215546Sopenharmony_ci{ 2142bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2143bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2144bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP2ui"); 2145bf215546Sopenharmony_ci ATTR_UI(ctx, 2, type, 0, attr, coords); 2146bf215546Sopenharmony_ci} 2147bf215546Sopenharmony_ci 2148bf215546Sopenharmony_cistatic void GLAPIENTRY 2149bf215546Sopenharmony_ciTAG(MultiTexCoordP2uiv)(GLenum target, GLenum type, const GLuint *coords) 2150bf215546Sopenharmony_ci{ 2151bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2152bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2153bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP2uiv"); 2154bf215546Sopenharmony_ci ATTR_UI(ctx, 2, type, 0, attr, coords[0]); 2155bf215546Sopenharmony_ci} 2156bf215546Sopenharmony_ci 2157bf215546Sopenharmony_cistatic void GLAPIENTRY 2158bf215546Sopenharmony_ciTAG(MultiTexCoordP3ui)(GLenum target, GLenum type, GLuint coords) 2159bf215546Sopenharmony_ci{ 2160bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2161bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2162bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP3ui"); 2163bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 0, attr, coords); 2164bf215546Sopenharmony_ci} 2165bf215546Sopenharmony_ci 2166bf215546Sopenharmony_cistatic void GLAPIENTRY 2167bf215546Sopenharmony_ciTAG(MultiTexCoordP3uiv)(GLenum target, GLenum type, const GLuint *coords) 2168bf215546Sopenharmony_ci{ 2169bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2170bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2171bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP3uiv"); 2172bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 0, attr, coords[0]); 2173bf215546Sopenharmony_ci} 2174bf215546Sopenharmony_ci 2175bf215546Sopenharmony_cistatic void GLAPIENTRY 2176bf215546Sopenharmony_ciTAG(MultiTexCoordP4ui)(GLenum target, GLenum type, GLuint coords) 2177bf215546Sopenharmony_ci{ 2178bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2179bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2180bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP4ui"); 2181bf215546Sopenharmony_ci ATTR_UI(ctx, 4, type, 0, attr, coords); 2182bf215546Sopenharmony_ci} 2183bf215546Sopenharmony_ci 2184bf215546Sopenharmony_cistatic void GLAPIENTRY 2185bf215546Sopenharmony_ciTAG(MultiTexCoordP4uiv)(GLenum target, GLenum type, const GLuint *coords) 2186bf215546Sopenharmony_ci{ 2187bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2188bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2189bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP4uiv"); 2190bf215546Sopenharmony_ci ATTR_UI(ctx, 4, type, 0, attr, coords[0]); 2191bf215546Sopenharmony_ci} 2192bf215546Sopenharmony_ci 2193bf215546Sopenharmony_cistatic void GLAPIENTRY 2194bf215546Sopenharmony_ciTAG(NormalP3ui)(GLenum type, GLuint coords) 2195bf215546Sopenharmony_ci{ 2196bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2197bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glNormalP3ui"); 2198bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_NORMAL, coords); 2199bf215546Sopenharmony_ci} 2200bf215546Sopenharmony_ci 2201bf215546Sopenharmony_cistatic void GLAPIENTRY 2202bf215546Sopenharmony_ciTAG(NormalP3uiv)(GLenum type, const GLuint *coords) 2203bf215546Sopenharmony_ci{ 2204bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2205bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glNormalP3uiv"); 2206bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_NORMAL, coords[0]); 2207bf215546Sopenharmony_ci} 2208bf215546Sopenharmony_ci 2209bf215546Sopenharmony_cistatic void GLAPIENTRY 2210bf215546Sopenharmony_ciTAG(ColorP3ui)(GLenum type, GLuint color) 2211bf215546Sopenharmony_ci{ 2212bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2213bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glColorP3ui"); 2214bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_COLOR0, color); 2215bf215546Sopenharmony_ci} 2216bf215546Sopenharmony_ci 2217bf215546Sopenharmony_cistatic void GLAPIENTRY 2218bf215546Sopenharmony_ciTAG(ColorP3uiv)(GLenum type, const GLuint *color) 2219bf215546Sopenharmony_ci{ 2220bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2221bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glColorP3uiv"); 2222bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_COLOR0, color[0]); 2223bf215546Sopenharmony_ci} 2224bf215546Sopenharmony_ci 2225bf215546Sopenharmony_cistatic void GLAPIENTRY 2226bf215546Sopenharmony_ciTAG(ColorP4ui)(GLenum type, GLuint color) 2227bf215546Sopenharmony_ci{ 2228bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2229bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glColorP4ui"); 2230bf215546Sopenharmony_ci ATTR_UI(ctx, 4, type, 1, VBO_ATTRIB_COLOR0, color); 2231bf215546Sopenharmony_ci} 2232bf215546Sopenharmony_ci 2233bf215546Sopenharmony_cistatic void GLAPIENTRY 2234bf215546Sopenharmony_ciTAG(ColorP4uiv)(GLenum type, const GLuint *color) 2235bf215546Sopenharmony_ci{ 2236bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2237bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glColorP4uiv"); 2238bf215546Sopenharmony_ci ATTR_UI(ctx, 4, type, 1, VBO_ATTRIB_COLOR0, color[0]); 2239bf215546Sopenharmony_ci} 2240bf215546Sopenharmony_ci 2241bf215546Sopenharmony_cistatic void GLAPIENTRY 2242bf215546Sopenharmony_ciTAG(SecondaryColorP3ui)(GLenum type, GLuint color) 2243bf215546Sopenharmony_ci{ 2244bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2245bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glSecondaryColorP3ui"); 2246bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_COLOR1, color); 2247bf215546Sopenharmony_ci} 2248bf215546Sopenharmony_ci 2249bf215546Sopenharmony_cistatic void GLAPIENTRY 2250bf215546Sopenharmony_ciTAG(SecondaryColorP3uiv)(GLenum type, const GLuint *color) 2251bf215546Sopenharmony_ci{ 2252bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2253bf215546Sopenharmony_ci ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glSecondaryColorP3uiv"); 2254bf215546Sopenharmony_ci ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_COLOR1, color[0]); 2255bf215546Sopenharmony_ci} 2256bf215546Sopenharmony_ci 2257bf215546Sopenharmony_cistatic void GLAPIENTRY 2258bf215546Sopenharmony_ciTAG(Normal3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z) 2259bf215546Sopenharmony_ci{ 2260bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2261bf215546Sopenharmony_ci ATTR3H(VBO_ATTRIB_NORMAL, x, y, z); 2262bf215546Sopenharmony_ci} 2263bf215546Sopenharmony_ci 2264bf215546Sopenharmony_cistatic void GLAPIENTRY 2265bf215546Sopenharmony_ciTAG(Normal3hvNV)(const GLhalfNV * v) 2266bf215546Sopenharmony_ci{ 2267bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2268bf215546Sopenharmony_ci ATTR3HV(VBO_ATTRIB_NORMAL, v); 2269bf215546Sopenharmony_ci} 2270bf215546Sopenharmony_ci 2271bf215546Sopenharmony_ci 2272bf215546Sopenharmony_ci 2273bf215546Sopenharmony_cistatic void GLAPIENTRY 2274bf215546Sopenharmony_ciTAG(Color3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z) 2275bf215546Sopenharmony_ci{ 2276bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2277bf215546Sopenharmony_ci ATTR3H(VBO_ATTRIB_COLOR0, x, y, z); 2278bf215546Sopenharmony_ci} 2279bf215546Sopenharmony_ci 2280bf215546Sopenharmony_cistatic void GLAPIENTRY 2281bf215546Sopenharmony_ciTAG(Color3hvNV)(const GLhalfNV * v) 2282bf215546Sopenharmony_ci{ 2283bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2284bf215546Sopenharmony_ci ATTR3HV(VBO_ATTRIB_COLOR0, v); 2285bf215546Sopenharmony_ci} 2286bf215546Sopenharmony_ci 2287bf215546Sopenharmony_cistatic void GLAPIENTRY 2288bf215546Sopenharmony_ciTAG(Color4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w) 2289bf215546Sopenharmony_ci{ 2290bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2291bf215546Sopenharmony_ci ATTR4H(VBO_ATTRIB_COLOR0, x, y, z, w); 2292bf215546Sopenharmony_ci} 2293bf215546Sopenharmony_ci 2294bf215546Sopenharmony_cistatic void GLAPIENTRY 2295bf215546Sopenharmony_ciTAG(Color4hvNV)(const GLhalfNV * v) 2296bf215546Sopenharmony_ci{ 2297bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2298bf215546Sopenharmony_ci ATTR4HV(VBO_ATTRIB_COLOR0, v); 2299bf215546Sopenharmony_ci} 2300bf215546Sopenharmony_ci 2301bf215546Sopenharmony_ci 2302bf215546Sopenharmony_ci 2303bf215546Sopenharmony_cistatic void GLAPIENTRY 2304bf215546Sopenharmony_ciTAG(TexCoord1hNV)(GLhalfNV x) 2305bf215546Sopenharmony_ci{ 2306bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2307bf215546Sopenharmony_ci ATTR1H(VBO_ATTRIB_TEX0, x); 2308bf215546Sopenharmony_ci} 2309bf215546Sopenharmony_ci 2310bf215546Sopenharmony_cistatic void GLAPIENTRY 2311bf215546Sopenharmony_ciTAG(TexCoord1hvNV)(const GLhalfNV * v) 2312bf215546Sopenharmony_ci{ 2313bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2314bf215546Sopenharmony_ci ATTR1HV(VBO_ATTRIB_TEX0, v); 2315bf215546Sopenharmony_ci} 2316bf215546Sopenharmony_ci 2317bf215546Sopenharmony_cistatic void GLAPIENTRY 2318bf215546Sopenharmony_ciTAG(TexCoord2hNV)(GLhalfNV x, GLhalfNV y) 2319bf215546Sopenharmony_ci{ 2320bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2321bf215546Sopenharmony_ci ATTR2H(VBO_ATTRIB_TEX0, x, y); 2322bf215546Sopenharmony_ci} 2323bf215546Sopenharmony_ci 2324bf215546Sopenharmony_cistatic void GLAPIENTRY 2325bf215546Sopenharmony_ciTAG(TexCoord2hvNV)(const GLhalfNV * v) 2326bf215546Sopenharmony_ci{ 2327bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2328bf215546Sopenharmony_ci ATTR2HV(VBO_ATTRIB_TEX0, v); 2329bf215546Sopenharmony_ci} 2330bf215546Sopenharmony_ci 2331bf215546Sopenharmony_cistatic void GLAPIENTRY 2332bf215546Sopenharmony_ciTAG(TexCoord3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z) 2333bf215546Sopenharmony_ci{ 2334bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2335bf215546Sopenharmony_ci ATTR3H(VBO_ATTRIB_TEX0, x, y, z); 2336bf215546Sopenharmony_ci} 2337bf215546Sopenharmony_ci 2338bf215546Sopenharmony_cistatic void GLAPIENTRY 2339bf215546Sopenharmony_ciTAG(TexCoord3hvNV)(const GLhalfNV * v) 2340bf215546Sopenharmony_ci{ 2341bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2342bf215546Sopenharmony_ci ATTR3HV(VBO_ATTRIB_TEX0, v); 2343bf215546Sopenharmony_ci} 2344bf215546Sopenharmony_ci 2345bf215546Sopenharmony_cistatic void GLAPIENTRY 2346bf215546Sopenharmony_ciTAG(TexCoord4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w) 2347bf215546Sopenharmony_ci{ 2348bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2349bf215546Sopenharmony_ci ATTR4H(VBO_ATTRIB_TEX0, x, y, z, w); 2350bf215546Sopenharmony_ci} 2351bf215546Sopenharmony_ci 2352bf215546Sopenharmony_cistatic void GLAPIENTRY 2353bf215546Sopenharmony_ciTAG(TexCoord4hvNV)(const GLhalfNV * v) 2354bf215546Sopenharmony_ci{ 2355bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2356bf215546Sopenharmony_ci ATTR4HV(VBO_ATTRIB_TEX0, v); 2357bf215546Sopenharmony_ci} 2358bf215546Sopenharmony_ci 2359bf215546Sopenharmony_ci 2360bf215546Sopenharmony_ci 2361bf215546Sopenharmony_cistatic void GLAPIENTRY 2362bf215546Sopenharmony_ciTAG(MultiTexCoord1hNV)(GLenum target, GLhalfNV x) 2363bf215546Sopenharmony_ci{ 2364bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2365bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2366bf215546Sopenharmony_ci ATTR1H(attr, x); 2367bf215546Sopenharmony_ci} 2368bf215546Sopenharmony_ci 2369bf215546Sopenharmony_cistatic void GLAPIENTRY 2370bf215546Sopenharmony_ciTAG(MultiTexCoord1hvNV)(GLenum target, const GLhalfNV * v) 2371bf215546Sopenharmony_ci{ 2372bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2373bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2374bf215546Sopenharmony_ci ATTR1HV(attr, v); 2375bf215546Sopenharmony_ci} 2376bf215546Sopenharmony_ci 2377bf215546Sopenharmony_cistatic void GLAPIENTRY 2378bf215546Sopenharmony_ciTAG(MultiTexCoord2hNV)(GLenum target, GLhalfNV x, GLhalfNV y) 2379bf215546Sopenharmony_ci{ 2380bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2381bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2382bf215546Sopenharmony_ci ATTR2H(attr, x, y); 2383bf215546Sopenharmony_ci} 2384bf215546Sopenharmony_ci 2385bf215546Sopenharmony_cistatic void GLAPIENTRY 2386bf215546Sopenharmony_ciTAG(MultiTexCoord2hvNV)(GLenum target, const GLhalfNV * v) 2387bf215546Sopenharmony_ci{ 2388bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2389bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2390bf215546Sopenharmony_ci ATTR2HV(attr, v); 2391bf215546Sopenharmony_ci} 2392bf215546Sopenharmony_ci 2393bf215546Sopenharmony_cistatic void GLAPIENTRY 2394bf215546Sopenharmony_ciTAG(MultiTexCoord3hNV)(GLenum target, GLhalfNV x, GLhalfNV y, GLhalfNV z) 2395bf215546Sopenharmony_ci{ 2396bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2397bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2398bf215546Sopenharmony_ci ATTR3H(attr, x, y, z); 2399bf215546Sopenharmony_ci} 2400bf215546Sopenharmony_ci 2401bf215546Sopenharmony_cistatic void GLAPIENTRY 2402bf215546Sopenharmony_ciTAG(MultiTexCoord3hvNV)(GLenum target, const GLhalfNV * v) 2403bf215546Sopenharmony_ci{ 2404bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2405bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2406bf215546Sopenharmony_ci ATTR3HV(attr, v); 2407bf215546Sopenharmony_ci} 2408bf215546Sopenharmony_ci 2409bf215546Sopenharmony_cistatic void GLAPIENTRY 2410bf215546Sopenharmony_ciTAG(MultiTexCoord4hNV)(GLenum target, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w) 2411bf215546Sopenharmony_ci{ 2412bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2413bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2414bf215546Sopenharmony_ci ATTR4H(attr, x, y, z, w); 2415bf215546Sopenharmony_ci} 2416bf215546Sopenharmony_ci 2417bf215546Sopenharmony_cistatic void GLAPIENTRY 2418bf215546Sopenharmony_ciTAG(MultiTexCoord4hvNV)(GLenum target, const GLhalfNV * v) 2419bf215546Sopenharmony_ci{ 2420bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2421bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2422bf215546Sopenharmony_ci ATTR4HV(attr, v); 2423bf215546Sopenharmony_ci} 2424bf215546Sopenharmony_ci 2425bf215546Sopenharmony_ci 2426bf215546Sopenharmony_cistatic void GLAPIENTRY 2427bf215546Sopenharmony_ciTAG(FogCoordhNV)(GLhalf x) 2428bf215546Sopenharmony_ci{ 2429bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2430bf215546Sopenharmony_ci ATTR1H(VBO_ATTRIB_FOG, x); 2431bf215546Sopenharmony_ci} 2432bf215546Sopenharmony_ci 2433bf215546Sopenharmony_cistatic void GLAPIENTRY 2434bf215546Sopenharmony_ciTAG(FogCoordhvNV)(const GLhalf * v) 2435bf215546Sopenharmony_ci{ 2436bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2437bf215546Sopenharmony_ci ATTR1HV(VBO_ATTRIB_FOG, v); 2438bf215546Sopenharmony_ci} 2439bf215546Sopenharmony_ci 2440bf215546Sopenharmony_ci 2441bf215546Sopenharmony_ci 2442bf215546Sopenharmony_cistatic void GLAPIENTRY 2443bf215546Sopenharmony_ciTAG(SecondaryColor3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z) 2444bf215546Sopenharmony_ci{ 2445bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2446bf215546Sopenharmony_ci ATTR3H(VBO_ATTRIB_COLOR1, x, y, z); 2447bf215546Sopenharmony_ci} 2448bf215546Sopenharmony_ci 2449bf215546Sopenharmony_cistatic void GLAPIENTRY 2450bf215546Sopenharmony_ciTAG(SecondaryColor3hvNV)(const GLhalfNV * v) 2451bf215546Sopenharmony_ci{ 2452bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2453bf215546Sopenharmony_ci ATTR3HV(VBO_ATTRIB_COLOR1, v); 2454bf215546Sopenharmony_ci} 2455bf215546Sopenharmony_ci 2456bf215546Sopenharmony_ci 2457bf215546Sopenharmony_cistatic void GLAPIENTRY 2458bf215546Sopenharmony_ciTAG(Color3b)(GLbyte red, GLbyte green, GLbyte blue) 2459bf215546Sopenharmony_ci{ 2460bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2461bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, BYTE_TO_FLOAT(red), 2462bf215546Sopenharmony_ci BYTE_TO_FLOAT(green), 2463bf215546Sopenharmony_ci BYTE_TO_FLOAT(blue), 2464bf215546Sopenharmony_ci 1.0); 2465bf215546Sopenharmony_ci} 2466bf215546Sopenharmony_ci 2467bf215546Sopenharmony_cistatic void GLAPIENTRY 2468bf215546Sopenharmony_ciTAG(Color3d)(GLdouble red, GLdouble green, GLdouble blue) 2469bf215546Sopenharmony_ci{ 2470bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2471bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0); 2472bf215546Sopenharmony_ci} 2473bf215546Sopenharmony_ci 2474bf215546Sopenharmony_cistatic void GLAPIENTRY 2475bf215546Sopenharmony_ciTAG(Color3i)(GLint red, GLint green, GLint blue) 2476bf215546Sopenharmony_ci{ 2477bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2478bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, INT_TO_FLOAT(red), INT_TO_FLOAT(green), 2479bf215546Sopenharmony_ci INT_TO_FLOAT(blue), 1.0); 2480bf215546Sopenharmony_ci} 2481bf215546Sopenharmony_ci 2482bf215546Sopenharmony_cistatic void GLAPIENTRY 2483bf215546Sopenharmony_ciTAG(Color3s)(GLshort red, GLshort green, GLshort blue) 2484bf215546Sopenharmony_ci{ 2485bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2486bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green), 2487bf215546Sopenharmony_ci SHORT_TO_FLOAT(blue), 1.0); 2488bf215546Sopenharmony_ci} 2489bf215546Sopenharmony_ci 2490bf215546Sopenharmony_cistatic void GLAPIENTRY 2491bf215546Sopenharmony_ciTAG(Color3ui)(GLuint red, GLuint green, GLuint blue) 2492bf215546Sopenharmony_ci{ 2493bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2494bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, UINT_TO_FLOAT(red), UINT_TO_FLOAT(green), 2495bf215546Sopenharmony_ci UINT_TO_FLOAT(blue), 1.0); 2496bf215546Sopenharmony_ci} 2497bf215546Sopenharmony_ci 2498bf215546Sopenharmony_cistatic void GLAPIENTRY 2499bf215546Sopenharmony_ciTAG(Color3us)(GLushort red, GLushort green, GLushort blue) 2500bf215546Sopenharmony_ci{ 2501bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2502bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green), 2503bf215546Sopenharmony_ci USHORT_TO_FLOAT(blue), 1.0); 2504bf215546Sopenharmony_ci} 2505bf215546Sopenharmony_ci 2506bf215546Sopenharmony_cistatic void GLAPIENTRY 2507bf215546Sopenharmony_ciTAG(Color3ub)(GLubyte red, GLubyte green, GLubyte blue) 2508bf215546Sopenharmony_ci{ 2509bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2510bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green), 2511bf215546Sopenharmony_ci UBYTE_TO_FLOAT(blue), 1.0); 2512bf215546Sopenharmony_ci} 2513bf215546Sopenharmony_ci 2514bf215546Sopenharmony_ci 2515bf215546Sopenharmony_cistatic void GLAPIENTRY 2516bf215546Sopenharmony_ciTAG(Color3bv)(const GLbyte *v) 2517bf215546Sopenharmony_ci{ 2518bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2519bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), 2520bf215546Sopenharmony_ci BYTE_TO_FLOAT(v[2]), 1.0); 2521bf215546Sopenharmony_ci} 2522bf215546Sopenharmony_ci 2523bf215546Sopenharmony_cistatic void GLAPIENTRY 2524bf215546Sopenharmony_ciTAG(Color3dv)(const GLdouble *v) 2525bf215546Sopenharmony_ci{ 2526bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2527bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0); 2528bf215546Sopenharmony_ci} 2529bf215546Sopenharmony_ci 2530bf215546Sopenharmony_cistatic void GLAPIENTRY 2531bf215546Sopenharmony_ciTAG(Color3iv)(const GLint *v) 2532bf215546Sopenharmony_ci{ 2533bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2534bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), 2535bf215546Sopenharmony_ci INT_TO_FLOAT(v[2]), 1.0); 2536bf215546Sopenharmony_ci} 2537bf215546Sopenharmony_ci 2538bf215546Sopenharmony_cistatic void GLAPIENTRY 2539bf215546Sopenharmony_ciTAG(Color3sv)(const GLshort *v) 2540bf215546Sopenharmony_ci{ 2541bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2542bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), 2543bf215546Sopenharmony_ci SHORT_TO_FLOAT(v[2]), 1.0); 2544bf215546Sopenharmony_ci} 2545bf215546Sopenharmony_ci 2546bf215546Sopenharmony_cistatic void GLAPIENTRY 2547bf215546Sopenharmony_ciTAG(Color3uiv)(const GLuint *v) 2548bf215546Sopenharmony_ci{ 2549bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2550bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), 2551bf215546Sopenharmony_ci UINT_TO_FLOAT(v[2]), 1.0); 2552bf215546Sopenharmony_ci} 2553bf215546Sopenharmony_ci 2554bf215546Sopenharmony_cistatic void GLAPIENTRY 2555bf215546Sopenharmony_ciTAG(Color3usv)(const GLushort *v) 2556bf215546Sopenharmony_ci{ 2557bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2558bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), 2559bf215546Sopenharmony_ci USHORT_TO_FLOAT(v[2]), 1.0); 2560bf215546Sopenharmony_ci} 2561bf215546Sopenharmony_ci 2562bf215546Sopenharmony_cistatic void GLAPIENTRY 2563bf215546Sopenharmony_ciTAG(Color3ubv)(const GLubyte *v) 2564bf215546Sopenharmony_ci{ 2565bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2566bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), 2567bf215546Sopenharmony_ci UBYTE_TO_FLOAT(v[2]), 1.0); 2568bf215546Sopenharmony_ci} 2569bf215546Sopenharmony_ci 2570bf215546Sopenharmony_ci 2571bf215546Sopenharmony_cistatic void GLAPIENTRY 2572bf215546Sopenharmony_ciTAG(Color4b)(GLbyte red, GLbyte green, GLbyte blue, 2573bf215546Sopenharmony_ci GLbyte alpha) 2574bf215546Sopenharmony_ci{ 2575bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2576bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green), 2577bf215546Sopenharmony_ci BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha)); 2578bf215546Sopenharmony_ci} 2579bf215546Sopenharmony_ci 2580bf215546Sopenharmony_cistatic void GLAPIENTRY 2581bf215546Sopenharmony_ciTAG(Color4d)(GLdouble red, GLdouble green, GLdouble blue, 2582bf215546Sopenharmony_ci GLdouble alpha) 2583bf215546Sopenharmony_ci{ 2584bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2585bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha); 2586bf215546Sopenharmony_ci} 2587bf215546Sopenharmony_ci 2588bf215546Sopenharmony_cistatic void GLAPIENTRY 2589bf215546Sopenharmony_ciTAG(Color4i)(GLint red, GLint green, GLint blue, GLint alpha) 2590bf215546Sopenharmony_ci{ 2591bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2592bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, INT_TO_FLOAT(red), INT_TO_FLOAT(green), 2593bf215546Sopenharmony_ci INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha)); 2594bf215546Sopenharmony_ci} 2595bf215546Sopenharmony_ci 2596bf215546Sopenharmony_cistatic void GLAPIENTRY 2597bf215546Sopenharmony_ciTAG(Color4s)(GLshort red, GLshort green, GLshort blue, 2598bf215546Sopenharmony_ci GLshort alpha) 2599bf215546Sopenharmony_ci{ 2600bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2601bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green), 2602bf215546Sopenharmony_ci SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha)); 2603bf215546Sopenharmony_ci} 2604bf215546Sopenharmony_ci 2605bf215546Sopenharmony_cistatic void GLAPIENTRY 2606bf215546Sopenharmony_ciTAG(Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha) 2607bf215546Sopenharmony_ci{ 2608bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2609bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, UINT_TO_FLOAT(red), UINT_TO_FLOAT(green), 2610bf215546Sopenharmony_ci UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha)); 2611bf215546Sopenharmony_ci} 2612bf215546Sopenharmony_ci 2613bf215546Sopenharmony_cistatic void GLAPIENTRY 2614bf215546Sopenharmony_ciTAG(Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha) 2615bf215546Sopenharmony_ci{ 2616bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2617bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green), 2618bf215546Sopenharmony_ci USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha)); 2619bf215546Sopenharmony_ci} 2620bf215546Sopenharmony_ci 2621bf215546Sopenharmony_cistatic void GLAPIENTRY 2622bf215546Sopenharmony_ciTAG(Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) 2623bf215546Sopenharmony_ci{ 2624bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2625bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green), 2626bf215546Sopenharmony_ci UBYTE_TO_FLOAT(blue), UBYTE_TO_FLOAT(alpha)); 2627bf215546Sopenharmony_ci} 2628bf215546Sopenharmony_ci 2629bf215546Sopenharmony_ci 2630bf215546Sopenharmony_cistatic void GLAPIENTRY 2631bf215546Sopenharmony_ciTAG(Color4iv)(const GLint *v) 2632bf215546Sopenharmony_ci{ 2633bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2634bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), 2635bf215546Sopenharmony_ci INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3])); 2636bf215546Sopenharmony_ci} 2637bf215546Sopenharmony_ci 2638bf215546Sopenharmony_ci 2639bf215546Sopenharmony_cistatic void GLAPIENTRY 2640bf215546Sopenharmony_ciTAG(Color4bv)(const GLbyte *v) 2641bf215546Sopenharmony_ci{ 2642bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2643bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), 2644bf215546Sopenharmony_ci BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3])); 2645bf215546Sopenharmony_ci} 2646bf215546Sopenharmony_ci 2647bf215546Sopenharmony_cistatic void GLAPIENTRY 2648bf215546Sopenharmony_ciTAG(Color4dv)(const GLdouble *v) 2649bf215546Sopenharmony_ci{ 2650bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2651bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 2652bf215546Sopenharmony_ci} 2653bf215546Sopenharmony_ci 2654bf215546Sopenharmony_ci 2655bf215546Sopenharmony_cistatic void GLAPIENTRY 2656bf215546Sopenharmony_ciTAG(Color4sv)(const GLshort *v) 2657bf215546Sopenharmony_ci{ 2658bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2659bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), 2660bf215546Sopenharmony_ci SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3])); 2661bf215546Sopenharmony_ci} 2662bf215546Sopenharmony_ci 2663bf215546Sopenharmony_ci 2664bf215546Sopenharmony_cistatic void GLAPIENTRY 2665bf215546Sopenharmony_ciTAG(Color4uiv)(const GLuint *v) 2666bf215546Sopenharmony_ci{ 2667bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2668bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), 2669bf215546Sopenharmony_ci UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3])); 2670bf215546Sopenharmony_ci} 2671bf215546Sopenharmony_ci 2672bf215546Sopenharmony_cistatic void GLAPIENTRY 2673bf215546Sopenharmony_ciTAG(Color4usv)(const GLushort *v) 2674bf215546Sopenharmony_ci{ 2675bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2676bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), 2677bf215546Sopenharmony_ci USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3])); 2678bf215546Sopenharmony_ci} 2679bf215546Sopenharmony_ci 2680bf215546Sopenharmony_cistatic void GLAPIENTRY 2681bf215546Sopenharmony_ciTAG(Color4ubv)(const GLubyte *v) 2682bf215546Sopenharmony_ci{ 2683bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2684bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_COLOR0, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), 2685bf215546Sopenharmony_ci UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3])); 2686bf215546Sopenharmony_ci} 2687bf215546Sopenharmony_ci 2688bf215546Sopenharmony_ci 2689bf215546Sopenharmony_cistatic void GLAPIENTRY 2690bf215546Sopenharmony_ciTAG(FogCoordd)(GLdouble d) 2691bf215546Sopenharmony_ci{ 2692bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2693bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_FOG, (GLfloat) d); 2694bf215546Sopenharmony_ci} 2695bf215546Sopenharmony_ci 2696bf215546Sopenharmony_cistatic void GLAPIENTRY 2697bf215546Sopenharmony_ciTAG(FogCoorddv)(const GLdouble *v) 2698bf215546Sopenharmony_ci{ 2699bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2700bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_FOG, (GLfloat) *v); 2701bf215546Sopenharmony_ci} 2702bf215546Sopenharmony_ci 2703bf215546Sopenharmony_ci 2704bf215546Sopenharmony_cistatic void GLAPIENTRY 2705bf215546Sopenharmony_ciTAG(Indexd)(GLdouble c) 2706bf215546Sopenharmony_ci{ 2707bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2708bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) c); 2709bf215546Sopenharmony_ci} 2710bf215546Sopenharmony_ci 2711bf215546Sopenharmony_cistatic void GLAPIENTRY 2712bf215546Sopenharmony_ciTAG(Indexi)(GLint c) 2713bf215546Sopenharmony_ci{ 2714bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2715bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) c); 2716bf215546Sopenharmony_ci} 2717bf215546Sopenharmony_ci 2718bf215546Sopenharmony_cistatic void GLAPIENTRY 2719bf215546Sopenharmony_ciTAG(Indexs)(GLshort c) 2720bf215546Sopenharmony_ci{ 2721bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2722bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) c); 2723bf215546Sopenharmony_ci} 2724bf215546Sopenharmony_ci 2725bf215546Sopenharmony_cistatic void GLAPIENTRY 2726bf215546Sopenharmony_ciTAG(Indexub)(GLubyte c) 2727bf215546Sopenharmony_ci{ 2728bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2729bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) c); 2730bf215546Sopenharmony_ci} 2731bf215546Sopenharmony_ci 2732bf215546Sopenharmony_cistatic void GLAPIENTRY 2733bf215546Sopenharmony_ciTAG(Indexdv)(const GLdouble *c) 2734bf215546Sopenharmony_ci{ 2735bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2736bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) *c); 2737bf215546Sopenharmony_ci} 2738bf215546Sopenharmony_ci 2739bf215546Sopenharmony_cistatic void GLAPIENTRY 2740bf215546Sopenharmony_ciTAG(Indexiv)(const GLint *c) 2741bf215546Sopenharmony_ci{ 2742bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2743bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) *c); 2744bf215546Sopenharmony_ci} 2745bf215546Sopenharmony_ci 2746bf215546Sopenharmony_cistatic void GLAPIENTRY 2747bf215546Sopenharmony_ciTAG(Indexsv)(const GLshort *c) 2748bf215546Sopenharmony_ci{ 2749bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2750bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) *c); 2751bf215546Sopenharmony_ci} 2752bf215546Sopenharmony_ci 2753bf215546Sopenharmony_cistatic void GLAPIENTRY 2754bf215546Sopenharmony_ciTAG(Indexubv)(const GLubyte *c) 2755bf215546Sopenharmony_ci{ 2756bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2757bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) *c); 2758bf215546Sopenharmony_ci} 2759bf215546Sopenharmony_ci 2760bf215546Sopenharmony_ci 2761bf215546Sopenharmony_cistatic void GLAPIENTRY 2762bf215546Sopenharmony_ciTAG(EdgeFlagv)(const GLboolean *flag) 2763bf215546Sopenharmony_ci{ 2764bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2765bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_EDGEFLAG, (GLfloat)*flag); 2766bf215546Sopenharmony_ci} 2767bf215546Sopenharmony_ci 2768bf215546Sopenharmony_ci 2769bf215546Sopenharmony_cistatic void GLAPIENTRY 2770bf215546Sopenharmony_ciTAG(Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz) 2771bf215546Sopenharmony_ci{ 2772bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2773bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_NORMAL, BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz)); 2774bf215546Sopenharmony_ci} 2775bf215546Sopenharmony_ci 2776bf215546Sopenharmony_cistatic void GLAPIENTRY 2777bf215546Sopenharmony_ciTAG(Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz) 2778bf215546Sopenharmony_ci{ 2779bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2780bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_NORMAL, (GLfloat) nx, (GLfloat) ny, (GLfloat) nz); 2781bf215546Sopenharmony_ci} 2782bf215546Sopenharmony_ci 2783bf215546Sopenharmony_cistatic void GLAPIENTRY 2784bf215546Sopenharmony_ciTAG(Normal3i)(GLint nx, GLint ny, GLint nz) 2785bf215546Sopenharmony_ci{ 2786bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2787bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_NORMAL, INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz)); 2788bf215546Sopenharmony_ci} 2789bf215546Sopenharmony_ci 2790bf215546Sopenharmony_cistatic void GLAPIENTRY 2791bf215546Sopenharmony_ciTAG(Normal3s)(GLshort nx, GLshort ny, GLshort nz) 2792bf215546Sopenharmony_ci{ 2793bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2794bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_NORMAL, SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz)); 2795bf215546Sopenharmony_ci} 2796bf215546Sopenharmony_ci 2797bf215546Sopenharmony_cistatic void GLAPIENTRY 2798bf215546Sopenharmony_ciTAG(Normal3bv)(const GLbyte *v) 2799bf215546Sopenharmony_ci{ 2800bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2801bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_NORMAL, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2])); 2802bf215546Sopenharmony_ci} 2803bf215546Sopenharmony_ci 2804bf215546Sopenharmony_cistatic void GLAPIENTRY 2805bf215546Sopenharmony_ciTAG(Normal3dv)(const GLdouble *v) 2806bf215546Sopenharmony_ci{ 2807bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2808bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_NORMAL, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 2809bf215546Sopenharmony_ci} 2810bf215546Sopenharmony_ci 2811bf215546Sopenharmony_cistatic void GLAPIENTRY 2812bf215546Sopenharmony_ciTAG(Normal3iv)(const GLint *v) 2813bf215546Sopenharmony_ci{ 2814bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2815bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_NORMAL, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2])); 2816bf215546Sopenharmony_ci} 2817bf215546Sopenharmony_ci 2818bf215546Sopenharmony_cistatic void GLAPIENTRY 2819bf215546Sopenharmony_ciTAG(Normal3sv)(const GLshort *v) 2820bf215546Sopenharmony_ci{ 2821bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2822bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_NORMAL, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2])); 2823bf215546Sopenharmony_ci} 2824bf215546Sopenharmony_ci 2825bf215546Sopenharmony_cistatic void GLAPIENTRY 2826bf215546Sopenharmony_ciTAG(TexCoord1d)(GLdouble s) 2827bf215546Sopenharmony_ci{ 2828bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2829bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) s); 2830bf215546Sopenharmony_ci} 2831bf215546Sopenharmony_ci 2832bf215546Sopenharmony_cistatic void GLAPIENTRY 2833bf215546Sopenharmony_ciTAG(TexCoord1i)(GLint s) 2834bf215546Sopenharmony_ci{ 2835bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2836bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) s); 2837bf215546Sopenharmony_ci} 2838bf215546Sopenharmony_ci 2839bf215546Sopenharmony_cistatic void GLAPIENTRY 2840bf215546Sopenharmony_ciTAG(TexCoord1s)(GLshort s) 2841bf215546Sopenharmony_ci{ 2842bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2843bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) s); 2844bf215546Sopenharmony_ci} 2845bf215546Sopenharmony_ci 2846bf215546Sopenharmony_cistatic void GLAPIENTRY 2847bf215546Sopenharmony_ciTAG(TexCoord2d)(GLdouble s, GLdouble t) 2848bf215546Sopenharmony_ci{ 2849bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2850bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t); 2851bf215546Sopenharmony_ci} 2852bf215546Sopenharmony_ci 2853bf215546Sopenharmony_cistatic void GLAPIENTRY 2854bf215546Sopenharmony_ciTAG(TexCoord2s)(GLshort s, GLshort t) 2855bf215546Sopenharmony_ci{ 2856bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2857bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t); 2858bf215546Sopenharmony_ci} 2859bf215546Sopenharmony_ci 2860bf215546Sopenharmony_cistatic void GLAPIENTRY 2861bf215546Sopenharmony_ciTAG(TexCoord2i)(GLint s, GLint t) 2862bf215546Sopenharmony_ci{ 2863bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2864bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t); 2865bf215546Sopenharmony_ci} 2866bf215546Sopenharmony_ci 2867bf215546Sopenharmony_cistatic void GLAPIENTRY 2868bf215546Sopenharmony_ciTAG(TexCoord3d)(GLdouble s, GLdouble t, GLdouble r) 2869bf215546Sopenharmony_ci{ 2870bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2871bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r); 2872bf215546Sopenharmony_ci} 2873bf215546Sopenharmony_ci 2874bf215546Sopenharmony_cistatic void GLAPIENTRY 2875bf215546Sopenharmony_ciTAG(TexCoord3i)(GLint s, GLint t, GLint r) 2876bf215546Sopenharmony_ci{ 2877bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2878bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r); 2879bf215546Sopenharmony_ci} 2880bf215546Sopenharmony_ci 2881bf215546Sopenharmony_cistatic void GLAPIENTRY 2882bf215546Sopenharmony_ciTAG(TexCoord3s)(GLshort s, GLshort t, GLshort r) 2883bf215546Sopenharmony_ci{ 2884bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2885bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r); 2886bf215546Sopenharmony_ci} 2887bf215546Sopenharmony_ci 2888bf215546Sopenharmony_cistatic void GLAPIENTRY 2889bf215546Sopenharmony_ciTAG(TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q) 2890bf215546Sopenharmony_ci{ 2891bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2892bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); 2893bf215546Sopenharmony_ci} 2894bf215546Sopenharmony_ci 2895bf215546Sopenharmony_cistatic void GLAPIENTRY 2896bf215546Sopenharmony_ciTAG(TexCoord4i)(GLint s, GLint t, GLint r, GLint q) 2897bf215546Sopenharmony_ci{ 2898bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2899bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); 2900bf215546Sopenharmony_ci} 2901bf215546Sopenharmony_ci 2902bf215546Sopenharmony_cistatic void GLAPIENTRY 2903bf215546Sopenharmony_ciTAG(TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q) 2904bf215546Sopenharmony_ci{ 2905bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2906bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); 2907bf215546Sopenharmony_ci} 2908bf215546Sopenharmony_ci 2909bf215546Sopenharmony_cistatic void GLAPIENTRY 2910bf215546Sopenharmony_ciTAG(TexCoord1dv)(const GLdouble *v) 2911bf215546Sopenharmony_ci{ 2912bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2913bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) v[0]); 2914bf215546Sopenharmony_ci} 2915bf215546Sopenharmony_ci 2916bf215546Sopenharmony_cistatic void GLAPIENTRY 2917bf215546Sopenharmony_ciTAG(TexCoord1iv)(const GLint *v) 2918bf215546Sopenharmony_ci{ 2919bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2920bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) v[0]); 2921bf215546Sopenharmony_ci} 2922bf215546Sopenharmony_ci 2923bf215546Sopenharmony_cistatic void GLAPIENTRY 2924bf215546Sopenharmony_ciTAG(TexCoord1sv)(const GLshort *v) 2925bf215546Sopenharmony_ci{ 2926bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2927bf215546Sopenharmony_ci ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) v[0]); 2928bf215546Sopenharmony_ci} 2929bf215546Sopenharmony_ci 2930bf215546Sopenharmony_cistatic void GLAPIENTRY 2931bf215546Sopenharmony_ciTAG(TexCoord2dv)(const GLdouble *v) 2932bf215546Sopenharmony_ci{ 2933bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2934bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1]); 2935bf215546Sopenharmony_ci} 2936bf215546Sopenharmony_ci 2937bf215546Sopenharmony_cistatic void GLAPIENTRY 2938bf215546Sopenharmony_ciTAG(TexCoord2iv)(const GLint *v) 2939bf215546Sopenharmony_ci{ 2940bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2941bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1]); 2942bf215546Sopenharmony_ci} 2943bf215546Sopenharmony_ci 2944bf215546Sopenharmony_cistatic void GLAPIENTRY 2945bf215546Sopenharmony_ciTAG(TexCoord2sv)(const GLshort *v) 2946bf215546Sopenharmony_ci{ 2947bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2948bf215546Sopenharmony_ci ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1]); 2949bf215546Sopenharmony_ci} 2950bf215546Sopenharmony_ci 2951bf215546Sopenharmony_cistatic void GLAPIENTRY 2952bf215546Sopenharmony_ciTAG(TexCoord3dv)(const GLdouble *v) 2953bf215546Sopenharmony_ci{ 2954bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2955bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]); 2956bf215546Sopenharmony_ci} 2957bf215546Sopenharmony_ci 2958bf215546Sopenharmony_cistatic void GLAPIENTRY 2959bf215546Sopenharmony_ciTAG(TexCoord3iv)(const GLint *v) 2960bf215546Sopenharmony_ci{ 2961bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2962bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]); 2963bf215546Sopenharmony_ci} 2964bf215546Sopenharmony_ci 2965bf215546Sopenharmony_cistatic void GLAPIENTRY 2966bf215546Sopenharmony_ciTAG(TexCoord3sv)(const GLshort *v) 2967bf215546Sopenharmony_ci{ 2968bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2969bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]); 2970bf215546Sopenharmony_ci} 2971bf215546Sopenharmony_ci 2972bf215546Sopenharmony_cistatic void GLAPIENTRY 2973bf215546Sopenharmony_ciTAG(TexCoord4dv)(const GLdouble *v) 2974bf215546Sopenharmony_ci{ 2975bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2976bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); 2977bf215546Sopenharmony_ci} 2978bf215546Sopenharmony_ci 2979bf215546Sopenharmony_cistatic void GLAPIENTRY 2980bf215546Sopenharmony_ciTAG(TexCoord4iv)(const GLint *v) 2981bf215546Sopenharmony_ci{ 2982bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2983bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); 2984bf215546Sopenharmony_ci} 2985bf215546Sopenharmony_ci 2986bf215546Sopenharmony_cistatic void GLAPIENTRY 2987bf215546Sopenharmony_ciTAG(TexCoord4sv)(const GLshort *v) 2988bf215546Sopenharmony_ci{ 2989bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2990bf215546Sopenharmony_ci ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); 2991bf215546Sopenharmony_ci} 2992bf215546Sopenharmony_ci 2993bf215546Sopenharmony_cistatic void GLAPIENTRY 2994bf215546Sopenharmony_ciTAG(MultiTexCoord1d)(GLenum target, GLdouble s) 2995bf215546Sopenharmony_ci{ 2996bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 2997bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 2998bf215546Sopenharmony_ci ATTR1F(attr, (GLfloat) s); 2999bf215546Sopenharmony_ci} 3000bf215546Sopenharmony_ci 3001bf215546Sopenharmony_cistatic void GLAPIENTRY 3002bf215546Sopenharmony_ciTAG(MultiTexCoord1dv)(GLenum target, const GLdouble *v) 3003bf215546Sopenharmony_ci{ 3004bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3005bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3006bf215546Sopenharmony_ci ATTR1F(attr, (GLfloat) v[0]); 3007bf215546Sopenharmony_ci} 3008bf215546Sopenharmony_ci 3009bf215546Sopenharmony_cistatic void GLAPIENTRY 3010bf215546Sopenharmony_ciTAG(MultiTexCoord1i)(GLenum target, GLint s) 3011bf215546Sopenharmony_ci{ 3012bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3013bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3014bf215546Sopenharmony_ci ATTR1F(attr, (GLfloat) s); 3015bf215546Sopenharmony_ci} 3016bf215546Sopenharmony_ci 3017bf215546Sopenharmony_cistatic void GLAPIENTRY 3018bf215546Sopenharmony_ciTAG(MultiTexCoord1iv)(GLenum target, const GLint *v) 3019bf215546Sopenharmony_ci{ 3020bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3021bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3022bf215546Sopenharmony_ci ATTR1F(attr, (GLfloat) v[0]); 3023bf215546Sopenharmony_ci} 3024bf215546Sopenharmony_ci 3025bf215546Sopenharmony_cistatic void GLAPIENTRY 3026bf215546Sopenharmony_ciTAG(MultiTexCoord1s)(GLenum target, GLshort s) 3027bf215546Sopenharmony_ci{ 3028bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3029bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3030bf215546Sopenharmony_ci ATTR1F(attr, (GLfloat) s); 3031bf215546Sopenharmony_ci} 3032bf215546Sopenharmony_ci 3033bf215546Sopenharmony_cistatic void GLAPIENTRY 3034bf215546Sopenharmony_ciTAG(MultiTexCoord1sv)(GLenum target, const GLshort *v) 3035bf215546Sopenharmony_ci{ 3036bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3037bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3038bf215546Sopenharmony_ci ATTR1F(attr, (GLfloat) v[0]); 3039bf215546Sopenharmony_ci} 3040bf215546Sopenharmony_ci 3041bf215546Sopenharmony_cistatic void GLAPIENTRY 3042bf215546Sopenharmony_ciTAG(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t) 3043bf215546Sopenharmony_ci{ 3044bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3045bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3046bf215546Sopenharmony_ci ATTR2F(attr, (GLfloat) s, (GLfloat) t); 3047bf215546Sopenharmony_ci} 3048bf215546Sopenharmony_ci 3049bf215546Sopenharmony_cistatic void GLAPIENTRY 3050bf215546Sopenharmony_ciTAG(MultiTexCoord2dv)(GLenum target, const GLdouble *v) 3051bf215546Sopenharmony_ci{ 3052bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3053bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3054bf215546Sopenharmony_ci ATTR2F(attr, (GLfloat) v[0], (GLfloat) v[1]); 3055bf215546Sopenharmony_ci} 3056bf215546Sopenharmony_ci 3057bf215546Sopenharmony_cistatic void GLAPIENTRY 3058bf215546Sopenharmony_ciTAG(MultiTexCoord2i)(GLenum target, GLint s, GLint t) 3059bf215546Sopenharmony_ci{ 3060bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3061bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3062bf215546Sopenharmony_ci ATTR2F(attr, (GLfloat) s, (GLfloat) t); 3063bf215546Sopenharmony_ci} 3064bf215546Sopenharmony_ci 3065bf215546Sopenharmony_cistatic void GLAPIENTRY 3066bf215546Sopenharmony_ciTAG(MultiTexCoord2iv)(GLenum target, const GLint *v) 3067bf215546Sopenharmony_ci{ 3068bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3069bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3070bf215546Sopenharmony_ci ATTR2F(attr, (GLfloat) v[0], (GLfloat) v[1]); 3071bf215546Sopenharmony_ci} 3072bf215546Sopenharmony_ci 3073bf215546Sopenharmony_cistatic void GLAPIENTRY 3074bf215546Sopenharmony_ciTAG(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t) 3075bf215546Sopenharmony_ci{ 3076bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3077bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3078bf215546Sopenharmony_ci ATTR2F(attr, (GLfloat) s, (GLfloat) t); 3079bf215546Sopenharmony_ci} 3080bf215546Sopenharmony_ci 3081bf215546Sopenharmony_cistatic void GLAPIENTRY 3082bf215546Sopenharmony_ciTAG(MultiTexCoord2sv)(GLenum target, const GLshort *v) 3083bf215546Sopenharmony_ci{ 3084bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3085bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3086bf215546Sopenharmony_ci ATTR2F(attr, (GLfloat) v[0], (GLfloat) v[1]); 3087bf215546Sopenharmony_ci} 3088bf215546Sopenharmony_ci 3089bf215546Sopenharmony_cistatic void GLAPIENTRY 3090bf215546Sopenharmony_ciTAG(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r) 3091bf215546Sopenharmony_ci{ 3092bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3093bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3094bf215546Sopenharmony_ci ATTR3F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r); 3095bf215546Sopenharmony_ci} 3096bf215546Sopenharmony_ci 3097bf215546Sopenharmony_cistatic void GLAPIENTRY 3098bf215546Sopenharmony_ciTAG(MultiTexCoord3dv)(GLenum target, const GLdouble *v) 3099bf215546Sopenharmony_ci{ 3100bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3101bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3102bf215546Sopenharmony_ci ATTR3F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 3103bf215546Sopenharmony_ci} 3104bf215546Sopenharmony_ci 3105bf215546Sopenharmony_cistatic void GLAPIENTRY 3106bf215546Sopenharmony_ciTAG(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r) 3107bf215546Sopenharmony_ci{ 3108bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3109bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3110bf215546Sopenharmony_ci ATTR3F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r); 3111bf215546Sopenharmony_ci} 3112bf215546Sopenharmony_ci 3113bf215546Sopenharmony_cistatic void GLAPIENTRY 3114bf215546Sopenharmony_ciTAG(MultiTexCoord3iv)(GLenum target, const GLint *v) 3115bf215546Sopenharmony_ci{ 3116bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3117bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3118bf215546Sopenharmony_ci ATTR3F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 3119bf215546Sopenharmony_ci} 3120bf215546Sopenharmony_ci 3121bf215546Sopenharmony_cistatic void GLAPIENTRY 3122bf215546Sopenharmony_ciTAG(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r) 3123bf215546Sopenharmony_ci{ 3124bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3125bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3126bf215546Sopenharmony_ci ATTR3F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r); 3127bf215546Sopenharmony_ci} 3128bf215546Sopenharmony_ci 3129bf215546Sopenharmony_cistatic void GLAPIENTRY 3130bf215546Sopenharmony_ciTAG(MultiTexCoord3sv)(GLenum target, const GLshort *v) 3131bf215546Sopenharmony_ci{ 3132bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3133bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3134bf215546Sopenharmony_ci ATTR3F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 3135bf215546Sopenharmony_ci} 3136bf215546Sopenharmony_ci 3137bf215546Sopenharmony_cistatic void GLAPIENTRY 3138bf215546Sopenharmony_ciTAG(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) 3139bf215546Sopenharmony_ci{ 3140bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3141bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3142bf215546Sopenharmony_ci ATTR4F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r, (GLfloat) q); 3143bf215546Sopenharmony_ci} 3144bf215546Sopenharmony_ci 3145bf215546Sopenharmony_cistatic void GLAPIENTRY 3146bf215546Sopenharmony_ciTAG(MultiTexCoord4dv)(GLenum target, const GLdouble *v) 3147bf215546Sopenharmony_ci{ 3148bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3149bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3150bf215546Sopenharmony_ci ATTR4F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 3151bf215546Sopenharmony_ci} 3152bf215546Sopenharmony_ci 3153bf215546Sopenharmony_cistatic void GLAPIENTRY 3154bf215546Sopenharmony_ciTAG(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q) 3155bf215546Sopenharmony_ci{ 3156bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3157bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3158bf215546Sopenharmony_ci ATTR4F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r, (GLfloat) q); 3159bf215546Sopenharmony_ci} 3160bf215546Sopenharmony_ci 3161bf215546Sopenharmony_cistatic void GLAPIENTRY 3162bf215546Sopenharmony_ciTAG(MultiTexCoord4iv)(GLenum target, const GLint *v) 3163bf215546Sopenharmony_ci{ 3164bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3165bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3166bf215546Sopenharmony_ci ATTR4F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 3167bf215546Sopenharmony_ci} 3168bf215546Sopenharmony_ci 3169bf215546Sopenharmony_cistatic void GLAPIENTRY 3170bf215546Sopenharmony_ciTAG(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) 3171bf215546Sopenharmony_ci{ 3172bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3173bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3174bf215546Sopenharmony_ci ATTR4F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r, (GLfloat) q); 3175bf215546Sopenharmony_ci} 3176bf215546Sopenharmony_ci 3177bf215546Sopenharmony_cistatic void GLAPIENTRY 3178bf215546Sopenharmony_ciTAG(MultiTexCoord4sv)(GLenum target, const GLshort *v) 3179bf215546Sopenharmony_ci{ 3180bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3181bf215546Sopenharmony_ci GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 3182bf215546Sopenharmony_ci ATTR4F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 3183bf215546Sopenharmony_ci} 3184bf215546Sopenharmony_ci 3185bf215546Sopenharmony_ci 3186bf215546Sopenharmony_cistatic void GLAPIENTRY 3187bf215546Sopenharmony_ciTAG(EvalCoord2dv)(const GLdouble *u) 3188bf215546Sopenharmony_ci{ 3189bf215546Sopenharmony_ci TAG(EvalCoord2f)((GLfloat) u[0], (GLfloat) u[1]); 3190bf215546Sopenharmony_ci} 3191bf215546Sopenharmony_ci 3192bf215546Sopenharmony_cistatic void GLAPIENTRY 3193bf215546Sopenharmony_ciTAG(EvalCoord2d)(GLdouble u, GLdouble v) 3194bf215546Sopenharmony_ci{ 3195bf215546Sopenharmony_ci TAG(EvalCoord2f)((GLfloat) u, (GLfloat) v); 3196bf215546Sopenharmony_ci} 3197bf215546Sopenharmony_ci 3198bf215546Sopenharmony_cistatic void GLAPIENTRY 3199bf215546Sopenharmony_ciTAG(EvalCoord1dv)(const GLdouble *u) 3200bf215546Sopenharmony_ci{ 3201bf215546Sopenharmony_ci TAG(EvalCoord1f)((GLfloat) *u); 3202bf215546Sopenharmony_ci} 3203bf215546Sopenharmony_ci 3204bf215546Sopenharmony_cistatic void GLAPIENTRY 3205bf215546Sopenharmony_ciTAG(EvalCoord1d)(GLdouble u) 3206bf215546Sopenharmony_ci{ 3207bf215546Sopenharmony_ci TAG(EvalCoord1f)((GLfloat) u); 3208bf215546Sopenharmony_ci} 3209bf215546Sopenharmony_ci 3210bf215546Sopenharmony_ci 3211bf215546Sopenharmony_cistatic void GLAPIENTRY 3212bf215546Sopenharmony_ciTAG(Materialf)(GLenum face, GLenum pname, GLfloat param) 3213bf215546Sopenharmony_ci{ 3214bf215546Sopenharmony_ci GLfloat fparam[4]; 3215bf215546Sopenharmony_ci fparam[0] = param; 3216bf215546Sopenharmony_ci TAG(Materialfv)(face, pname, fparam); 3217bf215546Sopenharmony_ci} 3218bf215546Sopenharmony_ci 3219bf215546Sopenharmony_cistatic void GLAPIENTRY 3220bf215546Sopenharmony_ciTAG(Materiali)(GLenum face, GLenum pname, GLint param) 3221bf215546Sopenharmony_ci{ 3222bf215546Sopenharmony_ci GLfloat p[4]; 3223bf215546Sopenharmony_ci p[0] = (GLfloat) param; 3224bf215546Sopenharmony_ci TAG(Materialfv)(face, pname, p); 3225bf215546Sopenharmony_ci} 3226bf215546Sopenharmony_ci 3227bf215546Sopenharmony_cistatic void GLAPIENTRY 3228bf215546Sopenharmony_ciTAG(Materialiv)(GLenum face, GLenum pname, const GLint *params) 3229bf215546Sopenharmony_ci{ 3230bf215546Sopenharmony_ci GLfloat fparam[4]; 3231bf215546Sopenharmony_ci switch (pname) { 3232bf215546Sopenharmony_ci case GL_AMBIENT: 3233bf215546Sopenharmony_ci case GL_DIFFUSE: 3234bf215546Sopenharmony_ci case GL_SPECULAR: 3235bf215546Sopenharmony_ci case GL_EMISSION: 3236bf215546Sopenharmony_ci case GL_AMBIENT_AND_DIFFUSE: 3237bf215546Sopenharmony_ci fparam[0] = INT_TO_FLOAT(params[0]); 3238bf215546Sopenharmony_ci fparam[1] = INT_TO_FLOAT(params[1]); 3239bf215546Sopenharmony_ci fparam[2] = INT_TO_FLOAT(params[2]); 3240bf215546Sopenharmony_ci fparam[3] = INT_TO_FLOAT(params[3]); 3241bf215546Sopenharmony_ci break; 3242bf215546Sopenharmony_ci case GL_SHININESS: 3243bf215546Sopenharmony_ci fparam[0] = (GLfloat) params[0]; 3244bf215546Sopenharmony_ci break; 3245bf215546Sopenharmony_ci case GL_COLOR_INDEXES: 3246bf215546Sopenharmony_ci fparam[0] = (GLfloat) params[0]; 3247bf215546Sopenharmony_ci fparam[1] = (GLfloat) params[1]; 3248bf215546Sopenharmony_ci fparam[2] = (GLfloat) params[2]; 3249bf215546Sopenharmony_ci break; 3250bf215546Sopenharmony_ci default: 3251bf215546Sopenharmony_ci ; 3252bf215546Sopenharmony_ci } 3253bf215546Sopenharmony_ci TAG(Materialfv)(face, pname, fparam); 3254bf215546Sopenharmony_ci} 3255bf215546Sopenharmony_ci 3256bf215546Sopenharmony_ci 3257bf215546Sopenharmony_cistatic void GLAPIENTRY 3258bf215546Sopenharmony_ciTAG(SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue) 3259bf215546Sopenharmony_ci{ 3260bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3261bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, BYTE_TO_FLOAT(red), 3262bf215546Sopenharmony_ci BYTE_TO_FLOAT(green), 3263bf215546Sopenharmony_ci BYTE_TO_FLOAT(blue)); 3264bf215546Sopenharmony_ci} 3265bf215546Sopenharmony_ci 3266bf215546Sopenharmony_cistatic void GLAPIENTRY 3267bf215546Sopenharmony_ciTAG(SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue) 3268bf215546Sopenharmony_ci{ 3269bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3270bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, (GLfloat) red, (GLfloat) green, (GLfloat) blue); 3271bf215546Sopenharmony_ci} 3272bf215546Sopenharmony_ci 3273bf215546Sopenharmony_cistatic void GLAPIENTRY 3274bf215546Sopenharmony_ciTAG(SecondaryColor3i)(GLint red, GLint green, GLint blue) 3275bf215546Sopenharmony_ci{ 3276bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3277bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, INT_TO_FLOAT(red), 3278bf215546Sopenharmony_ci INT_TO_FLOAT(green), 3279bf215546Sopenharmony_ci INT_TO_FLOAT(blue)); 3280bf215546Sopenharmony_ci} 3281bf215546Sopenharmony_ci 3282bf215546Sopenharmony_cistatic void GLAPIENTRY 3283bf215546Sopenharmony_ciTAG(SecondaryColor3s)(GLshort red, GLshort green, GLshort blue) 3284bf215546Sopenharmony_ci{ 3285bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3286bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, SHORT_TO_FLOAT(red), 3287bf215546Sopenharmony_ci SHORT_TO_FLOAT(green), 3288bf215546Sopenharmony_ci SHORT_TO_FLOAT(blue)); 3289bf215546Sopenharmony_ci} 3290bf215546Sopenharmony_ci 3291bf215546Sopenharmony_cistatic void GLAPIENTRY 3292bf215546Sopenharmony_ciTAG(SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue) 3293bf215546Sopenharmony_ci{ 3294bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3295bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, UINT_TO_FLOAT(red), 3296bf215546Sopenharmony_ci UINT_TO_FLOAT(green), 3297bf215546Sopenharmony_ci UINT_TO_FLOAT(blue)); 3298bf215546Sopenharmony_ci} 3299bf215546Sopenharmony_ci 3300bf215546Sopenharmony_cistatic void GLAPIENTRY 3301bf215546Sopenharmony_ciTAG(SecondaryColor3us)(GLushort red, GLushort green, GLushort blue) 3302bf215546Sopenharmony_ci{ 3303bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3304bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, USHORT_TO_FLOAT(red), 3305bf215546Sopenharmony_ci USHORT_TO_FLOAT(green), 3306bf215546Sopenharmony_ci USHORT_TO_FLOAT(blue)); 3307bf215546Sopenharmony_ci} 3308bf215546Sopenharmony_ci 3309bf215546Sopenharmony_cistatic void GLAPIENTRY 3310bf215546Sopenharmony_ciTAG(SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue) 3311bf215546Sopenharmony_ci{ 3312bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3313bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, UBYTE_TO_FLOAT(red), 3314bf215546Sopenharmony_ci UBYTE_TO_FLOAT(green), 3315bf215546Sopenharmony_ci UBYTE_TO_FLOAT(blue)); 3316bf215546Sopenharmony_ci} 3317bf215546Sopenharmony_ci 3318bf215546Sopenharmony_cistatic void GLAPIENTRY 3319bf215546Sopenharmony_ciTAG(SecondaryColor3bv)(const GLbyte *v) 3320bf215546Sopenharmony_ci{ 3321bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3322bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, BYTE_TO_FLOAT(v[0]), 3323bf215546Sopenharmony_ci BYTE_TO_FLOAT(v[1]), 3324bf215546Sopenharmony_ci BYTE_TO_FLOAT(v[2])); 3325bf215546Sopenharmony_ci} 3326bf215546Sopenharmony_ci 3327bf215546Sopenharmony_cistatic void GLAPIENTRY 3328bf215546Sopenharmony_ciTAG(SecondaryColor3dv)(const GLdouble *v) 3329bf215546Sopenharmony_ci{ 3330bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3331bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 3332bf215546Sopenharmony_ci} 3333bf215546Sopenharmony_ci 3334bf215546Sopenharmony_cistatic void GLAPIENTRY 3335bf215546Sopenharmony_ciTAG(SecondaryColor3iv)(const GLint *v) 3336bf215546Sopenharmony_ci{ 3337bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3338bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, INT_TO_FLOAT(v[0]), 3339bf215546Sopenharmony_ci INT_TO_FLOAT(v[1]), 3340bf215546Sopenharmony_ci INT_TO_FLOAT(v[2])); 3341bf215546Sopenharmony_ci} 3342bf215546Sopenharmony_ci 3343bf215546Sopenharmony_cistatic void GLAPIENTRY 3344bf215546Sopenharmony_ciTAG(SecondaryColor3sv)(const GLshort *v) 3345bf215546Sopenharmony_ci{ 3346bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3347bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, SHORT_TO_FLOAT(v[0]), 3348bf215546Sopenharmony_ci SHORT_TO_FLOAT(v[1]), 3349bf215546Sopenharmony_ci SHORT_TO_FLOAT(v[2])); 3350bf215546Sopenharmony_ci} 3351bf215546Sopenharmony_ci 3352bf215546Sopenharmony_cistatic void GLAPIENTRY 3353bf215546Sopenharmony_ciTAG(SecondaryColor3uiv)(const GLuint *v) 3354bf215546Sopenharmony_ci{ 3355bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3356bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, UINT_TO_FLOAT(v[0]), 3357bf215546Sopenharmony_ci UINT_TO_FLOAT(v[1]), 3358bf215546Sopenharmony_ci UINT_TO_FLOAT(v[2])); 3359bf215546Sopenharmony_ci} 3360bf215546Sopenharmony_ci 3361bf215546Sopenharmony_cistatic void GLAPIENTRY 3362bf215546Sopenharmony_ciTAG(SecondaryColor3usv)(const GLushort *v) 3363bf215546Sopenharmony_ci{ 3364bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3365bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, USHORT_TO_FLOAT(v[0]), 3366bf215546Sopenharmony_ci USHORT_TO_FLOAT(v[1]), 3367bf215546Sopenharmony_ci USHORT_TO_FLOAT(v[2])); 3368bf215546Sopenharmony_ci} 3369bf215546Sopenharmony_ci 3370bf215546Sopenharmony_cistatic void GLAPIENTRY 3371bf215546Sopenharmony_ciTAG(SecondaryColor3ubv)(const GLubyte *v) 3372bf215546Sopenharmony_ci{ 3373bf215546Sopenharmony_ci GET_CURRENT_CONTEXT(ctx); 3374bf215546Sopenharmony_ci ATTR3F(VBO_ATTRIB_COLOR1, UBYTE_TO_FLOAT(v[0]), 3375bf215546Sopenharmony_ci UBYTE_TO_FLOAT(v[1]), 3376bf215546Sopenharmony_ci UBYTE_TO_FLOAT(v[2])); 3377bf215546Sopenharmony_ci} 3378bf215546Sopenharmony_ci 3379bf215546Sopenharmony_ci#endif /* HW_SELECT_MODE */ 3380bf215546Sopenharmony_ci 3381bf215546Sopenharmony_ci#undef ATTR1FV 3382bf215546Sopenharmony_ci#undef ATTR2FV 3383bf215546Sopenharmony_ci#undef ATTR3FV 3384bf215546Sopenharmony_ci#undef ATTR4FV 3385bf215546Sopenharmony_ci 3386bf215546Sopenharmony_ci#undef ATTR1F 3387bf215546Sopenharmony_ci#undef ATTR2F 3388bf215546Sopenharmony_ci#undef ATTR3F 3389bf215546Sopenharmony_ci#undef ATTR4F 3390bf215546Sopenharmony_ci 3391bf215546Sopenharmony_ci#undef ATTR_UI 3392bf215546Sopenharmony_ci 3393bf215546Sopenharmony_ci#ifdef SUPPRESS_STATIC 3394bf215546Sopenharmony_ci#undef static 3395bf215546Sopenharmony_ci#endif 3396bf215546Sopenharmony_ci 3397bf215546Sopenharmony_ci#undef MAT 3398