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