xref: /third_party/mesa3d/src/mesa/vbo/vbo_attrib.h (revision bf215546)
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