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