| /* |
| Copyright (C) Intel Corp. 2006. All Rights Reserved. |
| Intel funded Tungsten Graphics to |
| develop this 3D driver. |
| |
| Permission is hereby granted, free of charge, to any person obtaining |
| a copy of this software and associated documentation files (the |
| "Software"), to deal in the Software without restriction, including |
| without limitation the rights to use, copy, modify, merge, publish, |
| distribute, sublicense, and/or sell copies of the Software, and to |
| permit persons to whom the Software is furnished to do so, subject to |
| the following conditions: |
| |
| The above copyright notice and this permission notice (including the |
| next paragraph) shall be included in all copies or substantial |
| portions of the Software. |
| |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
| IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE |
| LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
| WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| |
| **********************************************************************/ |
| /* |
| * Authors: |
| * Keith Whitwell <keithw@vmware.com> |
| */ |
| |
| #ifndef VBO_ATTRIB_H |
| #define VBO_ATTRIB_H |
| |
| /* |
| * Note: The first 32 attributes match the VERT_ATTRIB_* definitions. |
| * However, we have extra attributes for storing per-vertex glMaterial |
| * values. The material attributes get shifted into the generic positions |
| * at draw time. |
| * |
| * One reason we can't alias materials and generics here is display lists. |
| * A display list might contain both generic attributes and material |
| * attributes which are selected at draw time depending on whether we're |
| * using fixed function or a shader. <sigh> |
| */ |
| enum vbo_attrib { |
| VBO_ATTRIB_POS, |
| VBO_ATTRIB_NORMAL, |
| VBO_ATTRIB_COLOR0, |
| VBO_ATTRIB_COLOR1, |
| VBO_ATTRIB_FOG, |
| VBO_ATTRIB_COLOR_INDEX, |
| VBO_ATTRIB_EDGEFLAG, |
| VBO_ATTRIB_TEX0, |
| VBO_ATTRIB_TEX1, |
| VBO_ATTRIB_TEX2, |
| VBO_ATTRIB_TEX3, |
| VBO_ATTRIB_TEX4, |
| VBO_ATTRIB_TEX5, |
| VBO_ATTRIB_TEX6, |
| VBO_ATTRIB_TEX7, |
| VBO_ATTRIB_POINT_SIZE, |
| |
| VBO_ATTRIB_GENERIC0, /* Not used? */ |
| VBO_ATTRIB_GENERIC1, |
| VBO_ATTRIB_GENERIC2, |
| VBO_ATTRIB_GENERIC3, |
| VBO_ATTRIB_GENERIC4, |
| VBO_ATTRIB_GENERIC5, |
| VBO_ATTRIB_GENERIC6, |
| VBO_ATTRIB_GENERIC7, |
| VBO_ATTRIB_GENERIC8, |
| VBO_ATTRIB_GENERIC9, |
| VBO_ATTRIB_GENERIC10, |
| VBO_ATTRIB_GENERIC11, |
| VBO_ATTRIB_GENERIC12, |
| VBO_ATTRIB_GENERIC13, |
| VBO_ATTRIB_GENERIC14, |
| VBO_ATTRIB_GENERIC15, |
| |
| /* XXX: in the vertex program inputs_read flag, we alias |
| * materials and generics and use knowledge about the program |
| * (whether it is a fixed-function emulation) to |
| * differentiate. Here we must keep them apart instead. |
| */ |
| VBO_ATTRIB_MAT_FRONT_AMBIENT, |
| VBO_ATTRIB_MAT_BACK_AMBIENT, |
| VBO_ATTRIB_MAT_FRONT_DIFFUSE, |
| VBO_ATTRIB_MAT_BACK_DIFFUSE, |
| VBO_ATTRIB_MAT_FRONT_SPECULAR, |
| VBO_ATTRIB_MAT_BACK_SPECULAR, |
| VBO_ATTRIB_MAT_FRONT_EMISSION, |
| VBO_ATTRIB_MAT_BACK_EMISSION, |
| VBO_ATTRIB_MAT_FRONT_SHININESS, |
| VBO_ATTRIB_MAT_BACK_SHININESS, |
| VBO_ATTRIB_MAT_FRONT_INDEXES, |
| VBO_ATTRIB_MAT_BACK_INDEXES, |
| |
| VBO_ATTRIB_MAX |
| }; |
| |
| #define VBO_ATTRIB_FIRST_MATERIAL VBO_ATTRIB_MAT_FRONT_AMBIENT |
| #define VBO_ATTRIB_LAST_MATERIAL VBO_ATTRIB_MAT_BACK_INDEXES |
| |
| |
| /** VBO_ATTRIB_POS .. VBO_ATTRIB_POINT_SIZE */ |
| #define VBO_ATTRIBS_LEGACY BITFIELD64_MASK(VBO_ATTRIB_GENERIC0) |
| |
| /** VBO_ATTRIB_MAT_FRONT_AMBIENT .. VBO_ATTRIB_MAT_BACK_INDEXES */ |
| #define VBO_ATTRIBS_MATERIALS BITFIELD64_RANGE(VBO_ATTRIB_MAT_FRONT_AMBIENT, \ |
| VBO_ATTRIB_LAST_MATERIAL - VBO_ATTRIB_FIRST_MATERIAL + 1) |
| |
| /** Shift to move legacy material attribs into generic slots */ |
| #define VBO_MATERIAL_SHIFT \ |
| (VBO_ATTRIB_LAST_MATERIAL - VBO_ATTRIB_FIRST_MATERIAL + 1) |
| |
| |
| |
| #define VBO_MAX_COPIED_VERTS 31 |
| |
| #endif |