1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker Copyright (C) Intel Corp. 2006. All Rights Reserved. 3*61046927SAndroid Build Coastguard Worker Intel funded Tungsten Graphics to 4*61046927SAndroid Build Coastguard Worker develop this 3D driver. 5*61046927SAndroid Build Coastguard Worker 6*61046927SAndroid Build Coastguard Worker Permission is hereby granted, free of charge, to any person obtaining 7*61046927SAndroid Build Coastguard Worker a copy of this software and associated documentation files (the 8*61046927SAndroid Build Coastguard Worker "Software"), to deal in the Software without restriction, including 9*61046927SAndroid Build Coastguard Worker without limitation the rights to use, copy, modify, merge, publish, 10*61046927SAndroid Build Coastguard Worker distribute, sublicense, and/or sell copies of the Software, and to 11*61046927SAndroid Build Coastguard Worker permit persons to whom the Software is furnished to do so, subject to 12*61046927SAndroid Build Coastguard Worker the following conditions: 13*61046927SAndroid Build Coastguard Worker 14*61046927SAndroid Build Coastguard Worker The above copyright notice and this permission notice (including the 15*61046927SAndroid Build Coastguard Worker next paragraph) shall be included in all copies or substantial 16*61046927SAndroid Build Coastguard Worker portions of the Software. 17*61046927SAndroid Build Coastguard Worker 18*61046927SAndroid Build Coastguard Worker THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19*61046927SAndroid Build Coastguard Worker EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20*61046927SAndroid Build Coastguard Worker MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21*61046927SAndroid Build Coastguard Worker IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE 22*61046927SAndroid Build Coastguard Worker LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23*61046927SAndroid Build Coastguard Worker OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 24*61046927SAndroid Build Coastguard Worker WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25*61046927SAndroid Build Coastguard Worker 26*61046927SAndroid Build Coastguard Worker **********************************************************************/ 27*61046927SAndroid Build Coastguard Worker /* 28*61046927SAndroid Build Coastguard Worker * Authors: 29*61046927SAndroid Build Coastguard Worker * Keith Whitwell <[email protected]> 30*61046927SAndroid Build Coastguard Worker */ 31*61046927SAndroid Build Coastguard Worker 32*61046927SAndroid Build Coastguard Worker #ifndef VBO_ATTRIB_H 33*61046927SAndroid Build Coastguard Worker #define VBO_ATTRIB_H 34*61046927SAndroid Build Coastguard Worker 35*61046927SAndroid Build Coastguard Worker /* 36*61046927SAndroid Build Coastguard Worker * Note: The first 32 attributes match the VERT_ATTRIB_* definitions. 37*61046927SAndroid Build Coastguard Worker * However, we have extra attributes for storing per-vertex glMaterial 38*61046927SAndroid Build Coastguard Worker * values. The material attributes get shifted into the generic positions 39*61046927SAndroid Build Coastguard Worker * at draw time. 40*61046927SAndroid Build Coastguard Worker * 41*61046927SAndroid Build Coastguard Worker * One reason we can't alias materials and generics here is display lists. 42*61046927SAndroid Build Coastguard Worker * A display list might contain both generic attributes and material 43*61046927SAndroid Build Coastguard Worker * attributes which are selected at draw time depending on whether we're 44*61046927SAndroid Build Coastguard Worker * using fixed function or a shader. <sigh> 45*61046927SAndroid Build Coastguard Worker */ 46*61046927SAndroid Build Coastguard Worker enum vbo_attrib { 47*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_POS, 48*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_NORMAL, 49*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_COLOR0, 50*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_COLOR1, 51*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_FOG, 52*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_COLOR_INDEX, 53*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_TEX0, 54*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_TEX1, 55*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_TEX2, 56*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_TEX3, 57*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_TEX4, 58*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_TEX5, 59*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_TEX6, 60*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_TEX7, 61*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_POINT_SIZE, 62*61046927SAndroid Build Coastguard Worker 63*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC0, /* Not used? */ 64*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC1, 65*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC2, 66*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC3, 67*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC4, 68*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC5, 69*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC6, 70*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC7, 71*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC8, 72*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC9, 73*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC10, 74*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC11, 75*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC12, 76*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC13, 77*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC14, 78*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_GENERIC15, 79*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_EDGEFLAG, 80*61046927SAndroid Build Coastguard Worker 81*61046927SAndroid Build Coastguard Worker /* XXX: in the vertex program inputs_read flag, we alias 82*61046927SAndroid Build Coastguard Worker * materials and generics and use knowledge about the program 83*61046927SAndroid Build Coastguard Worker * (whether it is a fixed-function emulation) to 84*61046927SAndroid Build Coastguard Worker * differentiate. Here we must keep them apart instead. 85*61046927SAndroid Build Coastguard Worker */ 86*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_FRONT_AMBIENT, 87*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_BACK_AMBIENT, 88*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_FRONT_DIFFUSE, 89*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_BACK_DIFFUSE, 90*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_FRONT_SPECULAR, 91*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_BACK_SPECULAR, 92*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_FRONT_EMISSION, 93*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_BACK_EMISSION, 94*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_FRONT_SHININESS, 95*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_BACK_SHININESS, 96*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_FRONT_INDEXES, 97*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAT_BACK_INDEXES, 98*61046927SAndroid Build Coastguard Worker 99*61046927SAndroid Build Coastguard Worker /* Offset into HW GL_SELECT result buffer. */ 100*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_SELECT_RESULT_OFFSET, 101*61046927SAndroid Build Coastguard Worker 102*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_MAX 103*61046927SAndroid Build Coastguard Worker }; 104*61046927SAndroid Build Coastguard Worker 105*61046927SAndroid Build Coastguard Worker #define VBO_ATTRIB_FIRST_MATERIAL VBO_ATTRIB_MAT_FRONT_AMBIENT 106*61046927SAndroid Build Coastguard Worker #define VBO_ATTRIB_LAST_MATERIAL VBO_ATTRIB_MAT_BACK_INDEXES 107*61046927SAndroid Build Coastguard Worker 108*61046927SAndroid Build Coastguard Worker 109*61046927SAndroid Build Coastguard Worker /** VBO_ATTRIB_POS .. VBO_ATTRIB_POINT_SIZE */ 110*61046927SAndroid Build Coastguard Worker #define VBO_ATTRIBS_LEGACY (BITFIELD64_MASK(VBO_ATTRIB_GENERIC0) | \ 111*61046927SAndroid Build Coastguard Worker BITFIELD64_BIT(VBO_ATTRIB_EDGEFLAG)) 112*61046927SAndroid Build Coastguard Worker 113*61046927SAndroid Build Coastguard Worker /** VBO_ATTRIB_MAT_FRONT_AMBIENT .. VBO_ATTRIB_MAT_BACK_INDEXES */ 114*61046927SAndroid Build Coastguard Worker #define VBO_ATTRIBS_MATERIALS BITFIELD64_RANGE(VBO_ATTRIB_MAT_FRONT_AMBIENT, \ 115*61046927SAndroid Build Coastguard Worker VBO_ATTRIB_LAST_MATERIAL - VBO_ATTRIB_FIRST_MATERIAL + 1) 116*61046927SAndroid Build Coastguard Worker 117*61046927SAndroid Build Coastguard Worker /** 118*61046927SAndroid Build Coastguard Worker * Move material attribs to the last generic attribs, moving LAST_MATERIAL 119*61046927SAndroid Build Coastguard Worker * to GENERIC15, etc. 120*61046927SAndroid Build Coastguard Worker */ 121*61046927SAndroid Build Coastguard Worker #define VBO_MATERIAL_SHIFT (VBO_ATTRIB_LAST_MATERIAL - VBO_ATTRIB_GENERIC15) 122*61046927SAndroid Build Coastguard Worker 123*61046927SAndroid Build Coastguard Worker 124*61046927SAndroid Build Coastguard Worker 125*61046927SAndroid Build Coastguard Worker #define VBO_MAX_COPIED_VERTS 31 126*61046927SAndroid Build Coastguard Worker 127*61046927SAndroid Build Coastguard Worker #endif 128