1fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell/************************************************************************** 2fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 3fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellCopyright 2002 Tungsten Graphics Inc., Cedar Park, Texas. 451fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieCopyright 2011 Dave Airlie (ARB_vertex_type_2_10_10_10_rev support) 5fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellAll Rights Reserved. 6fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 7fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellPermission is hereby granted, free of charge, to any person obtaining a 8fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellcopy of this software and associated documentation files (the "Software"), 9fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellto deal in the Software without restriction, including without limitation 10fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellon the rights to use, copy, modify, merge, publish, distribute, sub 11fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwelllicense, and/or sell copies of the Software, and to permit persons to whom 12fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellthe Software is furnished to do so, subject to the following conditions: 13fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 14fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellThe above copyright notice and this permission notice (including the next 15fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellparagraph) shall be included in all copies or substantial portions of the 16fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellSoftware. 17fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 18fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellFITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 21fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellTUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 22fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 23fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellOTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 24fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellUSE OR OTHER DEALINGS IN THE SOFTWARE. 25fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 26fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell**************************************************************************/ 27fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 28ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul/* float */ 29492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR1FV( A, V ) ATTR( A, 1, GL_FLOAT, (V)[0], 0, 0, 1 ) 30492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR2FV( A, V ) ATTR( A, 2, GL_FLOAT, (V)[0], (V)[1], 0, 1 ) 31492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR3FV( A, V ) ATTR( A, 3, GL_FLOAT, (V)[0], (V)[1], (V)[2], 1 ) 32492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR4FV( A, V ) ATTR( A, 4, GL_FLOAT, (V)[0], (V)[1], (V)[2], (V)[3] ) 33fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 34492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR1F( A, X ) ATTR( A, 1, GL_FLOAT, X, 0, 0, 1 ) 35492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR2F( A, X, Y ) ATTR( A, 2, GL_FLOAT, X, Y, 0, 1 ) 36492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR3F( A, X, Y, Z ) ATTR( A, 3, GL_FLOAT, X, Y, Z, 1 ) 37492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR4F( A, X, Y, Z, W ) ATTR( A, 4, GL_FLOAT, X, Y, Z, W ) 38fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 39ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul/* int */ 40492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRI( A, N, X, Y, Z, W) ATTR( A, N, GL_INT, \ 41492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák INT_AS_FLT(X), INT_AS_FLT(Y), \ 42492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák INT_AS_FLT(Z), INT_AS_FLT(W) ) 43ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 44492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR2IV( A, V ) ATTRI( A, 2, (V)[0], (V)[1], 0, 1 ) 45492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR3IV( A, V ) ATTRI( A, 3, (V)[0], (V)[1], (V)[2], 1 ) 46492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR4IV( A, V ) ATTRI( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] ) 47492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák 48492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR1I( A, X ) ATTRI( A, 1, X, 0, 0, 1 ) 49492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR2I( A, X, Y ) ATTRI( A, 2, X, Y, 0, 1 ) 50492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR3I( A, X, Y, Z ) ATTRI( A, 3, X, Y, Z, 1 ) 51492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR4I( A, X, Y, Z, W ) ATTRI( A, 4, X, Y, Z, W ) 52ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 53ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 54ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul/* uint */ 55492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRUI( A, N, X, Y, Z, W) ATTR( A, N, GL_UNSIGNED_INT, \ 56492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák UINT_AS_FLT(X), UINT_AS_FLT(Y), \ 57492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák UINT_AS_FLT(Z), UINT_AS_FLT(W) ) 58492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák 59492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR2UIV( A, V ) ATTRUI( A, 2, (V)[0], (V)[1], 0, 1 ) 60492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR3UIV( A, V ) ATTRUI( A, 3, (V)[0], (V)[1], (V)[2], 1 ) 61492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR4UIV( A, V ) ATTRUI( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] ) 62ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 63492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR1UI( A, X ) ATTRUI( A, 1, X, 0, 0, 1 ) 64492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR2UI( A, X, Y ) ATTRUI( A, 2, X, Y, 0, 1 ) 65492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR3UI( A, X, Y, Z ) ATTRUI( A, 3, X, Y, Z, 1 ) 66492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTR4UI( A, X, Y, Z, W ) ATTRUI( A, 4, X, Y, Z, W ) 67ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 68492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define MAT_ATTR( A, N, V ) ATTR( A, N, GL_FLOAT, (V)[0], (V)[1], (V)[2], (V)[3] ) 69fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 709520f483b8f1e45fa474674b415554988de5d8d3Brian Paulstatic inline float conv_ui10_to_norm_float(unsigned ui10) 7151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 7251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie return (float)(ui10) / 1023.0; 7351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 7451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 759520f483b8f1e45fa474674b415554988de5d8d3Brian Paulstatic inline float conv_ui2_to_norm_float(unsigned ui2) 7651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 7751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie return (float)(ui2) / 3.0; 7851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 7951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 80492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRUI10_1( A, UI ) ATTR( A, 1, GL_FLOAT, (UI) & 0x3ff, 0, 0, 1 ) 81492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRUI10_2( A, UI ) ATTR( A, 2, GL_FLOAT, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, 0, 1 ) 82492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRUI10_3( A, UI ) ATTR( A, 3, GL_FLOAT, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, ((UI) >> 20) & 0x3ff, 1 ) 83492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRUI10_4( A, UI ) ATTR( A, 4, GL_FLOAT, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, ((UI) >> 20) & 0x3ff, ((UI) >> 30) & 0x3 ) 8451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 85492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRUI10N_1( A, UI ) ATTR( A, 1, GL_FLOAT, conv_ui10_to_norm_float((UI) & 0x3ff), 0, 0, 1 ) 86492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRUI10N_2( A, UI ) ATTR( A, 2, GL_FLOAT, \ 8751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_ui10_to_norm_float((UI) & 0x3ff), \ 8851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_ui10_to_norm_float(((UI) >> 10) & 0x3ff), 0, 1 ) 89492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRUI10N_3( A, UI ) ATTR( A, 3, GL_FLOAT, \ 9051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_ui10_to_norm_float((UI) & 0x3ff), \ 9151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_ui10_to_norm_float(((UI) >> 10) & 0x3ff), \ 9251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_ui10_to_norm_float(((UI) >> 20) & 0x3ff), 1 ) 93492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRUI10N_4( A, UI ) ATTR( A, 4, GL_FLOAT, \ 9451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_ui10_to_norm_float((UI) & 0x3ff), \ 9551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_ui10_to_norm_float(((UI) >> 10) & 0x3ff), \ 9651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_ui10_to_norm_float(((UI) >> 20) & 0x3ff), \ 9751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_ui2_to_norm_float(((UI) >> 30) & 0x3) ) 9851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 9951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestruct attr_bits_10 {signed int x:10;}; 10051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestruct attr_bits_2 {signed int x:2;}; 10151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 1029520f483b8f1e45fa474674b415554988de5d8d3Brian Paulstatic inline float conv_i10_to_i(int i10) 10351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 10451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie struct attr_bits_10 val; 10551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie val.x = i10; 10651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie return (float)val.x; 10751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 10851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 1099520f483b8f1e45fa474674b415554988de5d8d3Brian Paulstatic inline float conv_i2_to_i(int i2) 11051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 11151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie struct attr_bits_2 val; 11251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie val.x = i2; 11351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie return (float)val.x; 11451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 11551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 1169520f483b8f1e45fa474674b415554988de5d8d3Brian Paulstatic inline float conv_i10_to_norm_float(int i10) 11751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 11851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie struct attr_bits_10 val; 11951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie val.x = i10; 12051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie return (2.0F * (float)val.x + 1.0F) * (1.0F / 511.0F); 12151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 12251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 1239520f483b8f1e45fa474674b415554988de5d8d3Brian Paulstatic inline float conv_i2_to_norm_float(int i2) 12451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 12551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie struct attr_bits_2 val; 12651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie val.x = i2; 12751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie return (float)val.x; 12851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 12951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 130492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRI10_1( A, I10 ) ATTR( A, 1, GL_FLOAT, conv_i10_to_i((I10) & 0x3ff), 0, 0, 1 ) 131492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRI10_2( A, I10 ) ATTR( A, 2, GL_FLOAT, \ 13251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_i((I10) & 0x3ff), \ 13351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_i(((I10) >> 10) & 0x3ff), 0, 1 ) 134492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRI10_3( A, I10 ) ATTR( A, 3, GL_FLOAT, \ 13551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_i((I10) & 0x3ff), \ 13651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_i(((I10) >> 10) & 0x3ff), \ 13751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_i(((I10) >> 20) & 0x3ff), 1 ) 138492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRI10_4( A, I10 ) ATTR( A, 4, GL_FLOAT, \ 13951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_i((I10) & 0x3ff), \ 14051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_i(((I10) >> 10) & 0x3ff), \ 14151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_i(((I10) >> 20) & 0x3ff), \ 14251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i2_to_i(((I10) >> 30) & 0x3)) 14351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 14451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 145492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRI10N_1( A, I10 ) ATTR( A, 1, GL_FLOAT, conv_i10_to_norm_float((I10) & 0x3ff), 0, 0, 1 ) 146492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRI10N_2( A, I10 ) ATTR( A, 2, GL_FLOAT, \ 14751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_norm_float((I10) & 0x3ff), \ 14851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_norm_float(((I10) >> 10) & 0x3ff), 0, 1 ) 149492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRI10N_3( A, I10 ) ATTR( A, 3, GL_FLOAT, \ 15051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_norm_float((I10) & 0x3ff), \ 15151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_norm_float(((I10) >> 10) & 0x3ff), \ 15251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_norm_float(((I10) >> 20) & 0x3ff), 1 ) 153492b69f3be3e355064c67bc6f4a30d40e997ce9dMarek Olšák#define ATTRI10N_4( A, I10 ) ATTR( A, 4, GL_FLOAT, \ 15451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_norm_float((I10) & 0x3ff), \ 15551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_norm_float(((I10) >> 10) & 0x3ff), \ 15651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i10_to_norm_float(((I10) >> 20) & 0x3ff), \ 15751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie conv_i2_to_norm_float(((I10) >> 30) & 0x3)) 15851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 15951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie#define ATTR_UI(val, type, normalized, attr, arg) do { \ 16051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie if ((type) == GL_UNSIGNED_INT_2_10_10_10_REV) { \ 16151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie if (normalized) { \ 16251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTRUI10N_##val((attr), (arg)); \ 16351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie } else { \ 16451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTRUI10_##val((attr), (arg)); \ 16551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie } \ 16651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie } else if ((type) == GL_INT_2_10_10_10_REV) { \ 16751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie if (normalized) { \ 16851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTRI10N_##val((attr), (arg)); \ 16951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie } else { \ 17051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTRI10_##val((attr), (arg)); \ 17151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie } \ 17251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie } else \ 17351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ERROR(GL_INVALID_VALUE); \ 17451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie } while(0) 17551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 17651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie#define ATTR_UI_INDEX(val, type, normalized, index, arg) do { \ 17751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie if ((index) == 0) { \ 17851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(val, (type), normalized, 0, (arg)); \ 17951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie } else if ((index) < MAX_VERTEX_GENERIC_ATTRIBS) { \ 18051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(val, (type), normalized, VBO_ATTRIB_GENERIC0 + (index), (arg)); \ 18151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie } else \ 18251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ERROR(GL_INVALID_VALUE); \ 18351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie } while(0) 184beea704be231ef13edab93a7299efa297039239dBrian Paul 185beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 186beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Vertex2f)(GLfloat x, GLfloat y) 187fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 188beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 189beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR2F(VBO_ATTRIB_POS, x, y); 190fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 191fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 192beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 193beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Vertex2fv)(const GLfloat * v) 194fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 195beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 196beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR2FV(VBO_ATTRIB_POS, v); 197fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 198fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 199beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 200beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Vertex3f)(GLfloat x, GLfloat y, GLfloat z) 201fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 202beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 203beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3F(VBO_ATTRIB_POS, x, y, z); 204fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 205fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 206beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 207beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Vertex3fv)(const GLfloat * v) 208fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 209beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 210beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3FV(VBO_ATTRIB_POS, v); 211fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 212fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 213beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 214beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 215fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 216beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 217beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR4F(VBO_ATTRIB_POS, x, y, z, w); 218fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 219fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 220beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 221beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Vertex4fv)(const GLfloat * v) 222fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 223beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 224beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR4FV(VBO_ATTRIB_POS, v); 225fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 226fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 227beea704be231ef13edab93a7299efa297039239dBrian Paul 228beea704be231ef13edab93a7299efa297039239dBrian Paul 229beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 230beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(TexCoord1f)(GLfloat x) 231fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 232beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 233beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR1F(VBO_ATTRIB_TEX0, x); 234fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 235fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 236beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 237beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(TexCoord1fv)(const GLfloat * v) 238fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 239beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 240beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR1FV(VBO_ATTRIB_TEX0, v); 241fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 242fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 243beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 244beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(TexCoord2f)(GLfloat x, GLfloat y) 245fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 246beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 247beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR2F(VBO_ATTRIB_TEX0, x, y); 248fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 249fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 250beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 251beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(TexCoord2fv)(const GLfloat * v) 252fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 253beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 254beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR2FV(VBO_ATTRIB_TEX0, v); 255fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 256fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 257beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 258beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(TexCoord3f)(GLfloat x, GLfloat y, GLfloat z) 259fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 260beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 261beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3F(VBO_ATTRIB_TEX0, x, y, z); 262fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 263fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 264beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 265beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(TexCoord3fv)(const GLfloat * v) 266fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 267beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 268beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3FV(VBO_ATTRIB_TEX0, v); 269fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 270fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 271beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 272beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(TexCoord4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 273fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 274beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 275beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR4F(VBO_ATTRIB_TEX0, x, y, z, w); 276fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 277fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 278beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 279beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(TexCoord4fv)(const GLfloat * v) 280fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 281beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 282beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR4FV(VBO_ATTRIB_TEX0, v); 283fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 284fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 285beea704be231ef13edab93a7299efa297039239dBrian Paul 286beea704be231ef13edab93a7299efa297039239dBrian Paul 287beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 288beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Normal3f)(GLfloat x, GLfloat y, GLfloat z) 289fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 290beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 291beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3F(VBO_ATTRIB_NORMAL, x, y, z); 292fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 293fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 294beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 295beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Normal3fv)(const GLfloat * v) 296fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 297beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 298beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3FV(VBO_ATTRIB_NORMAL, v); 299fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 300fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 301beea704be231ef13edab93a7299efa297039239dBrian Paul 302beea704be231ef13edab93a7299efa297039239dBrian Paul 303beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 304beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(FogCoordfEXT)(GLfloat x) 305fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 306beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 307beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR1F(VBO_ATTRIB_FOG, x); 308fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 309fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 310beea704be231ef13edab93a7299efa297039239dBrian Paul 311beea704be231ef13edab93a7299efa297039239dBrian Paul 312beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 313beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(FogCoordfvEXT)(const GLfloat * v) 314fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 315beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 316beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR1FV(VBO_ATTRIB_FOG, v); 317fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 318fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 319beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 320beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Color3f)(GLfloat x, GLfloat y, GLfloat z) 321fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 322beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 323beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3F(VBO_ATTRIB_COLOR0, x, y, z); 324fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 325fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 326beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 327beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Color3fv)(const GLfloat * v) 328fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 329beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 330beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3FV(VBO_ATTRIB_COLOR0, v); 331fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 332fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 333beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 334beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Color4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 335fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 336beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 337beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR4F(VBO_ATTRIB_COLOR0, x, y, z, w); 338fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 339fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 340beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 341beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Color4fv)(const GLfloat * v) 342fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 343beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 344beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR4FV(VBO_ATTRIB_COLOR0, v); 345fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 346fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 347beea704be231ef13edab93a7299efa297039239dBrian Paul 348beea704be231ef13edab93a7299efa297039239dBrian Paul 349beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 350beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(SecondaryColor3fEXT)(GLfloat x, GLfloat y, GLfloat z) 351fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 352beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 353beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3F(VBO_ATTRIB_COLOR1, x, y, z); 354fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 355fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 356beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 357beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(SecondaryColor3fvEXT)(const GLfloat * v) 358fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 359beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 360beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3FV(VBO_ATTRIB_COLOR1, v); 361fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 362fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 363fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 364beea704be231ef13edab93a7299efa297039239dBrian Paul 365beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 366beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(EdgeFlag)(GLboolean b) 367fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 368beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 369beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR1F(VBO_ATTRIB_EDGEFLAG, (GLfloat) b); 370fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 371fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 372beea704be231ef13edab93a7299efa297039239dBrian Paul 373beea704be231ef13edab93a7299efa297039239dBrian Paul 374beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 375beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Indexf)(GLfloat f) 376fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 377beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 378beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR1F(VBO_ATTRIB_INDEX, f); 379fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 380fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 381beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 382beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(Indexfv)(const GLfloat * f) 383fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 384beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 385beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR1FV(VBO_ATTRIB_INDEX, f); 386fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 387fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 388fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 389beea704be231ef13edab93a7299efa297039239dBrian Paul 390beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 391beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(MultiTexCoord1f)(GLenum target, GLfloat x) 392fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 393beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 394fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 395beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR1F(attr, x); 396fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 397fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 398beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 399beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(MultiTexCoord1fv)(GLenum target, const GLfloat * v) 400fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 401beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 402fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 403beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR1FV(attr, v); 404fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 405fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 406beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 407beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(MultiTexCoord2f)(GLenum target, GLfloat x, GLfloat y) 408fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 409beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 410fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 411beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR2F(attr, x, y); 412fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 413fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 414beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 415beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(MultiTexCoord2fv)(GLenum target, const GLfloat * v) 416fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 417beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 418fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 419beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR2FV(attr, v); 420fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 421fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 422beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 423beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(MultiTexCoord3f)(GLenum target, GLfloat x, GLfloat y, GLfloat z) 424fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 425beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 426fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 427beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3F(attr, x, y, z); 428fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 429fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 430beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 431beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(MultiTexCoord3fv)(GLenum target, const GLfloat * v) 432fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 433beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 434fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 435beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR3FV(attr, v); 436fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 437fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 438beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 439beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(MultiTexCoord4f)(GLenum target, GLfloat x, GLfloat y, GLfloat z, GLfloat w) 440fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 441beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 442fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 443beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR4F(attr, x, y, z, w); 444fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 445fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 446beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 447beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(MultiTexCoord4fv)(GLenum target, const GLfloat * v) 448fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 449beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 450fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 451beea704be231ef13edab93a7299efa297039239dBrian Paul ATTR4FV(attr, v); 452fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 453fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 454fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 455beea704be231ef13edab93a7299efa297039239dBrian Paul 456beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 457beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib1fARB)(GLuint index, GLfloat x) 458fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 459beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 460beea704be231ef13edab93a7299efa297039239dBrian Paul if (index == 0) 461fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR1F(0, x); 4624a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 463fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR1F(VBO_ATTRIB_GENERIC0 + index, x); 464fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell else 465a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 466fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 467fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 468beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 469beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib1fvARB)(GLuint index, const GLfloat * v) 470fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 471beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 472beea704be231ef13edab93a7299efa297039239dBrian Paul if (index == 0) 473fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR1FV(0, v); 4744a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 475fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR1FV(VBO_ATTRIB_GENERIC0 + index, v); 476fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell else 477a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 478fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 479fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 480beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 481beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y) 482fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 483beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 484beea704be231ef13edab93a7299efa297039239dBrian Paul if (index == 0) 485fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR2F(0, x, y); 4864a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 487fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR2F(VBO_ATTRIB_GENERIC0 + index, x, y); 488fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell else 489a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 490fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 491fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 492beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 493beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib2fvARB)(GLuint index, const GLfloat * v) 494fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 495beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 496beea704be231ef13edab93a7299efa297039239dBrian Paul if (index == 0) 497fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR2FV(0, v); 4984a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 499fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR2FV(VBO_ATTRIB_GENERIC0 + index, v); 500fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell else 501a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 502fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 503fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 504beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 505beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z) 506fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 507beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 508beea704be231ef13edab93a7299efa297039239dBrian Paul if (index == 0) 509fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR3F(0, x, y, z); 5104a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 511fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR3F(VBO_ATTRIB_GENERIC0 + index, x, y, z); 512fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell else 513a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 514fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 515fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 516beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 517beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib3fvARB)(GLuint index, const GLfloat * v) 518fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 519beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 520beea704be231ef13edab93a7299efa297039239dBrian Paul if (index == 0) 521fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR3FV(0, v); 5224a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 523fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR3FV(VBO_ATTRIB_GENERIC0 + index, v); 524fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell else 525a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 526fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 527fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 528beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 529beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) 530fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 531beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 532beea704be231ef13edab93a7299efa297039239dBrian Paul if (index == 0) 533fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR4F(0, x, y, z, w); 5344a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 535fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR4F(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); 536fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell else 537a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 538fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 539fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 540beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 541beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib4fvARB)(GLuint index, const GLfloat * v) 542fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 543beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 544beea704be231ef13edab93a7299efa297039239dBrian Paul if (index == 0) 545fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR4FV(0, v); 5464a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 547fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR4FV(VBO_ATTRIB_GENERIC0 + index, v); 548fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell else 549a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 550fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 551fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 552fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 553ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 554ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul/* Integer-valued generic attributes. 555ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul * XXX: the integers just get converted to floats at this time 556ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul */ 557ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 558ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI1i)(GLuint index, GLint x) 559ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 560ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 561ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 562ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR1I(0, x); 563ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 564ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR1I(VBO_ATTRIB_GENERIC0 + index, x); 565ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 566a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 567ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 568ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 569ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 570ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI2i)(GLuint index, GLint x, GLint y) 571ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 572ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 573ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 574ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR2I(0, x, y); 575ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 576ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR2I(VBO_ATTRIB_GENERIC0 + index, x, y); 577ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 578a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 579ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 580ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 581ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 582ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z) 583ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 584ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 585ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 586ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR3I(0, x, y, z); 587ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 588ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR3I(VBO_ATTRIB_GENERIC0 + index, x, y, z); 589ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 590a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 591ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 592ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 593ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 594ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w) 595ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 596ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 597ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 598ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR4I(0, x, y, z, w); 599ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 600ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR4I(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); 601ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 602a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 603ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 604ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 605ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 606ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI2iv)(GLuint index, const GLint *v) 607ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 608ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 609ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 610ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR2IV(0, v); 611ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 612ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR2IV(VBO_ATTRIB_GENERIC0 + index, v); 613ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 614a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 615ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 616ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 617ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 618ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI3iv)(GLuint index, const GLint *v) 619ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 620ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 621ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 622ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR3IV(0, v); 623ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 624ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR3IV(VBO_ATTRIB_GENERIC0 + index, v); 625ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 626a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 627ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 628ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 629ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 630ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI4iv)(GLuint index, const GLint *v) 631ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 632ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 633ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 634ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR4IV(0, v); 635ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 636ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR4IV(VBO_ATTRIB_GENERIC0 + index, v); 637ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 638a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 639ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 640ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 641ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 642ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 643ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul/* Unsigned integer-valued generic attributes. 644ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul * XXX: the integers just get converted to floats at this time 645ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul */ 646ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 647ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI1ui)(GLuint index, GLuint x) 648ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 649ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 650ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 651ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR1UI(0, x); 652ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 653ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR1UI(VBO_ATTRIB_GENERIC0 + index, x); 654ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 655a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 656ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 657ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 658ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 659ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI2ui)(GLuint index, GLuint x, GLuint y) 660ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 661ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 662ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 663ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR2UI(0, x, y); 664ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 665ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR2UI(VBO_ATTRIB_GENERIC0 + index, x, y); 666ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 667a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 668ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 669ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 670ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 671ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z) 672ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 673ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 674ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 675ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR3UI(0, x, y, z); 676ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 677ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR3UI(VBO_ATTRIB_GENERIC0 + index, x, y, z); 678ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 679a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 680ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 681ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 682ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 683ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) 684ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 685ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 686ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 687ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR4UI(0, x, y, z, w); 688ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 689ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR4UI(VBO_ATTRIB_GENERIC0 + index, x, y, z, w); 690ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 691a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 692ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 693ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 694ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 695ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI2uiv)(GLuint index, const GLuint *v) 696ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 697ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 698ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 699ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR2UIV(0, v); 700ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 701ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR2UIV(VBO_ATTRIB_GENERIC0 + index, v); 702ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 703a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 704ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 705ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 706ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 707ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI3uiv)(GLuint index, const GLuint *v) 708ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 709ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 710ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 711ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR3UIV(0, v); 712ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 713ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR3UIV(VBO_ATTRIB_GENERIC0 + index, v); 714ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 715a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 716ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 717ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 718ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paulstatic void GLAPIENTRY 719ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian PaulTAG(VertexAttribI4uiv)(GLuint index, const GLuint *v) 720ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul{ 721ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul GET_CURRENT_CONTEXT(ctx); 722ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul if (index == 0) 723ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR4UIV(0, v); 724ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else if (index < MAX_VERTEX_GENERIC_ATTRIBS) 725ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul ATTR4UIV(VBO_ATTRIB_GENERIC0 + index, v); 726ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul else 727a2924b488b8d77381779bbb5a0097c467678d39bBrian Paul ERROR(GL_INVALID_VALUE); 728ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul} 729ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 730ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 731ca2618f4b632bf4b357a539a8fb7dafc99b35976Brian Paul 7322421b25dd777ebfd614ae45907fd4af8c2713102Keith Whitwell/* In addition to supporting NV_vertex_program, these entrypoints are 733fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell * used by the display list and other code specifically because of 7342421b25dd777ebfd614ae45907fd4af8c2713102Keith Whitwell * their property of aliasing with other attributes. (See 7352421b25dd777ebfd614ae45907fd4af8c2713102Keith Whitwell * vbo_save_loopback.c) 736fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell */ 737beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 738beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib1fNV)(GLuint index, GLfloat x) 739fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 740beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 741fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell if (index < VBO_ATTRIB_MAX) 742fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR1F(index, x); 743fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 744fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 745beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 746beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib1fvNV)(GLuint index, const GLfloat * v) 747fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 748beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 749beea704be231ef13edab93a7299efa297039239dBrian Paul if (index < VBO_ATTRIB_MAX) 750fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR1FV(index, v); 751fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 752fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 753beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 754beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y) 755fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 756beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 757beea704be231ef13edab93a7299efa297039239dBrian Paul if (index < VBO_ATTRIB_MAX) 758fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR2F(index, x, y); 759fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 760fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 761beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 762beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib2fvNV)(GLuint index, const GLfloat * v) 763fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 764beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 765beea704be231ef13edab93a7299efa297039239dBrian Paul if (index < VBO_ATTRIB_MAX) 766fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR2FV(index, v); 767fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 768fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 769beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 770beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z) 771fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 772beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 773beea704be231ef13edab93a7299efa297039239dBrian Paul if (index < VBO_ATTRIB_MAX) 774fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR3F(index, x, y, z); 775fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 776fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 777beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 778beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib3fvNV)(GLuint index, 779beea704be231ef13edab93a7299efa297039239dBrian Paul const GLfloat * v) 780fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 781beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 782beea704be231ef13edab93a7299efa297039239dBrian Paul if (index < VBO_ATTRIB_MAX) 783fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR3FV(index, v); 784fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 785fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 786beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 787beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) 788fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 789beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 790beea704be231ef13edab93a7299efa297039239dBrian Paul if (index < VBO_ATTRIB_MAX) 791fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR4F(index, x, y, z, w); 792fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 793fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 794beea704be231ef13edab93a7299efa297039239dBrian Paulstatic void GLAPIENTRY 795beea704be231ef13edab93a7299efa297039239dBrian PaulTAG(VertexAttrib4fvNV)(GLuint index, const GLfloat * v) 796fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{ 797beea704be231ef13edab93a7299efa297039239dBrian Paul GET_CURRENT_CONTEXT(ctx); 798beea704be231ef13edab93a7299efa297039239dBrian Paul if (index < VBO_ATTRIB_MAX) 799fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell ATTR4FV(index, v); 800fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} 801fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 802fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 80351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 80451fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexP2ui)(GLenum type, GLuint value) 80551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 80651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 80751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(2, type, 0, VBO_ATTRIB_POS, value); 80851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 80951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 81051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 81151fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexP2uiv)(GLenum type, const GLuint *value) 81251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 81351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 81451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(2, type, 0, VBO_ATTRIB_POS, value[0]); 81551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 81651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 81751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 81851fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexP3ui)(GLenum type, GLuint value) 81951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 82051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 82151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 0, VBO_ATTRIB_POS, value); 82251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 82351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 82451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 82551fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexP3uiv)(GLenum type, const GLuint *value) 82651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 82751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 82851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 0, VBO_ATTRIB_POS, value[0]); 82951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 83051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 83151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 83251fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexP4ui)(GLenum type, GLuint value) 83351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 83451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 83551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(4, type, 0, VBO_ATTRIB_POS, value); 83651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 83751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 83851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 83951fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexP4uiv)(GLenum type, const GLuint *value) 84051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 84151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 84251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(4, type, 0, VBO_ATTRIB_POS, value[0]); 84351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 84451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 84551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 84651fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(TexCoordP1ui)(GLenum type, GLuint coords) 84751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 84851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 84951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(1, type, 0, VBO_ATTRIB_TEX0, coords); 85051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 85151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 85251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 85351fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(TexCoordP1uiv)(GLenum type, const GLuint *coords) 85451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 85551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 85651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(1, type, 0, VBO_ATTRIB_TEX0, coords[0]); 85751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 85851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 85951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 86051fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(TexCoordP2ui)(GLenum type, GLuint coords) 86151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 86251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 86351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(2, type, 0, VBO_ATTRIB_TEX0, coords); 86451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 86551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 86651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 86751fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(TexCoordP2uiv)(GLenum type, const GLuint *coords) 86851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 86951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 87051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(2, type, 0, VBO_ATTRIB_TEX0, coords[0]); 87151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 87251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 87351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 87451fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(TexCoordP3ui)(GLenum type, GLuint coords) 87551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 87651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 87751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 0, VBO_ATTRIB_TEX0, coords); 87851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 87951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 88051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 88151fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(TexCoordP3uiv)(GLenum type, const GLuint *coords) 88251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 88351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 88451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 0, VBO_ATTRIB_TEX0, coords[0]); 88551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 88651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 88751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 88851fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(TexCoordP4ui)(GLenum type, GLuint coords) 88951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 89051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 89151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(4, type, 0, VBO_ATTRIB_TEX0, coords); 89251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 89351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 89451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 89551fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(TexCoordP4uiv)(GLenum type, const GLuint *coords) 89651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 89751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 89851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(4, type, 0, VBO_ATTRIB_TEX0, coords[0]); 89951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 90051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 90151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 90251fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(MultiTexCoordP1ui)(GLenum target, GLenum type, GLuint coords) 90351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 90451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 90551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 90651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(1, type, 0, attr, coords); 90751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 90851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 90951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 91051fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(MultiTexCoordP1uiv)(GLenum target, GLenum type, const GLuint *coords) 91151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 91251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 91351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 91451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(1, type, 0, attr, coords[0]); 91551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 91651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 91751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 91851fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(MultiTexCoordP2ui)(GLenum target, GLenum type, GLuint coords) 91951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 92051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 92151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 92251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(2, type, 0, attr, coords); 92351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 92451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 92551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 92651fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(MultiTexCoordP2uiv)(GLenum target, GLenum type, const GLuint *coords) 92751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 92851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 92951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 93051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(2, type, 0, attr, coords[0]); 93151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 93251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 93351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 93451fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(MultiTexCoordP3ui)(GLenum target, GLenum type, GLuint coords) 93551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 93651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 93751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 93851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 0, attr, coords); 93951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 94051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 94151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 94251fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(MultiTexCoordP3uiv)(GLenum target, GLenum type, const GLuint *coords) 94351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 94451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 94551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 94651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 0, attr, coords[0]); 94751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 94851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 94951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 95051fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(MultiTexCoordP4ui)(GLenum target, GLenum type, GLuint coords) 95151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 95251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 95351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 95451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(4, type, 0, attr, coords); 95551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 95651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 95751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 95851fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(MultiTexCoordP4uiv)(GLenum target, GLenum type, const GLuint *coords) 95951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 96051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 96151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0; 96251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(4, type, 0, attr, coords[0]); 96351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 96451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 96551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 96651fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(NormalP3ui)(GLenum type, GLuint coords) 96751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 96851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 96951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 1, VBO_ATTRIB_NORMAL, coords); 97051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 97151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 97251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 97351fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(NormalP3uiv)(GLenum type, const GLuint *coords) 97451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 97551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 97651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 1, VBO_ATTRIB_NORMAL, coords[0]); 97751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 97851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 97951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 98051fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(ColorP3ui)(GLenum type, GLuint color) 98151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 98251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 98351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 1, VBO_ATTRIB_COLOR0, color); 98451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 98551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 98651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 98751fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(ColorP3uiv)(GLenum type, const GLuint *color) 98851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 98951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 99051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 1, VBO_ATTRIB_COLOR0, color[0]); 99151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 99251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 99351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 99451fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(ColorP4ui)(GLenum type, GLuint color) 99551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 99651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 99751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(4, type, 1, VBO_ATTRIB_COLOR0, color); 99851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 99951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 100051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 100151fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(ColorP4uiv)(GLenum type, const GLuint *color) 100251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 100351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 100451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(4, type, 1, VBO_ATTRIB_COLOR0, color[0]); 100551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 100651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 100751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 100851fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(SecondaryColorP3ui)(GLenum type, GLuint color) 100951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 101051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 101151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 1, VBO_ATTRIB_COLOR1, color); 101251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 101351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 101451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 101551fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(SecondaryColorP3uiv)(GLenum type, const GLuint *color) 101651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 101751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 101851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI(3, type, 1, VBO_ATTRIB_COLOR1, color[0]); 101951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 102051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 102151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 102251fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, 102351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint value) 102451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 102551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 102651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI_INDEX(1, type, normalized, index, value); 102751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 102851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 102951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 103051fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, 103151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint value) 103251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 103351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 103451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI_INDEX(2, type, normalized, index, value); 103551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 103651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 103751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 103851fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, 103951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint value) 104051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 104151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 104251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI_INDEX(3, type, normalized, index, value); 104351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 104451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 104551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 104651fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, 104751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GLuint value) 104851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 104951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 105051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI_INDEX(4, type, normalized, index, value); 105151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 105251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 105351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 105451fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, 105551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie const GLuint *value) 105651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 105751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 105851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI_INDEX(1, type, normalized, index, *value); 105951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 106051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 106151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 106251fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, 106351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie const GLuint *value) 106451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 106551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 106651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI_INDEX(2, type, normalized, index, *value); 106751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 106851fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 106951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 107051fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, 107151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie const GLuint *value) 107251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 107351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 107451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI_INDEX(3, type, normalized, index, *value); 107551fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 107651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 107751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airliestatic void GLAPIENTRY 107851fcf080a342896ea0bc71dce01e948c810a8db9Dave AirlieTAG(VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, 107951fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie const GLuint *value) 108051fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie{ 108151fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie GET_CURRENT_CONTEXT(ctx); 108251fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie ATTR_UI_INDEX(4, type, normalized, index, *value); 108351fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie} 108451fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 1085fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 1086fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR1FV 1087fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR2FV 1088fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR3FV 1089fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR4FV 1090fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 1091fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR1F 1092fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR2F 1093fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR3F 1094fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR4F 1095fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell 109651fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie#undef ATTR_UI 109751fcf080a342896ea0bc71dce01e948c810a8db9Dave Airlie 1098fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef MAT 1099