test version of startmenu root with big icons
[reactos.git] / reactos / lib / mesa32 / src / array_cache / ac_context.h
1
2 /*
3 * Mesa 3-D graphics library
4 * Version: 5.1
5 *
6 * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included
16 * in all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 *
25 * Authors:
26 * Keith Whitwell <keith@tungstengraphics.com>
27 */
28
29 #ifndef _AC_CONTEXT_H
30 #define _AC_CONTEXT_H
31
32 #include "glheader.h"
33 #include "mtypes.h"
34
35 #include "array_cache/acache.h"
36
37 /* These are used to make the ctx->Current values look like
38 * arrays (with zero StrideB).
39 */
40 struct ac_arrays {
41 struct gl_client_array Vertex;
42 struct gl_client_array Normal;
43 struct gl_client_array Color;
44 struct gl_client_array SecondaryColor;
45 struct gl_client_array FogCoord;
46 struct gl_client_array Index;
47 struct gl_client_array TexCoord[MAX_TEXTURE_COORD_UNITS];
48 struct gl_client_array EdgeFlag;
49 struct gl_client_array Attrib[VERT_ATTRIB_MAX]; /* GL_NV_vertex_program */
50 };
51
52 struct ac_array_pointers {
53 struct gl_client_array *Vertex;
54 struct gl_client_array *Normal;
55 struct gl_client_array *Color;
56 struct gl_client_array *SecondaryColor;
57 struct gl_client_array *FogCoord;
58 struct gl_client_array *Index;
59 struct gl_client_array *TexCoord[MAX_TEXTURE_COORD_UNITS];
60 struct gl_client_array *EdgeFlag;
61 struct gl_client_array *Attrib[VERT_ATTRIB_MAX]; /* GL_NV_vertex_program */
62 };
63
64 struct ac_array_flags {
65 GLboolean Vertex;
66 GLboolean Normal;
67 GLboolean Color;
68 GLboolean SecondaryColor;
69 GLboolean FogCoord;
70 GLboolean Index;
71 GLboolean TexCoord[MAX_TEXTURE_COORD_UNITS];
72 GLboolean EdgeFlag;
73 GLboolean Attrib[VERT_ATTRIB_MAX]; /* GL_NV_vertex_program */
74 };
75
76
77 typedef struct {
78 GLuint NewState; /* not needed? */
79 GLuint NewArrayState;
80
81 /* Facility for importing and caching array data:
82 */
83 struct ac_arrays Fallback;
84 struct ac_arrays Cache;
85 struct ac_arrays Raw;
86 struct ac_array_flags IsCached;
87 GLuint start;
88 GLuint count;
89
90 /* Facility for importing element lists:
91 */
92 GLuint *Elts;
93 GLuint elt_size;
94
95 } ACcontext;
96
97 #define AC_CONTEXT(ctx) ((ACcontext *)ctx->acache_context)
98
99 #endif