1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/**************************************************************************
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgCopyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org                     VA Linux Systems Inc., Fremont, California.
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgCopyright (C) The Weather Channel, Inc.  2002.  All Rights Reserved.
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgThe Weather Channel (TM) funded Tungsten Graphics to develop the
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginitial release of the Radeon 8500 driver under the XFree86 license.
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgThis notice must be preserved.
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgAll Rights Reserved.
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgPermission is hereby granted, free of charge, to any person obtaining
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orga copy of this software and associated documentation files (the
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org"Software"), to deal in the Software without restriction, including
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwithout limitation the rights to use, copy, modify, merge, publish,
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgdistribute, sublicense, and/or sell copies of the Software, and to
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgpermit persons to whom the Software is furnished to do so, subject to
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgthe following conditions:
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgThe above copyright notice and this permission notice (including the
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnext paragraph) shall be included in all copies or substantial
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgportions of the Software.
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgIN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org**************************************************************************/
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Authors:
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *   Gareth Hughes <gareth@valinux.com>
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *   Keith Whitwell <keith@tungstengraphics.com>
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *   Kevin E. Martin <martin@valinux.com>
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *   Nicolai Haehnle <prefect_@gmx.net>
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef __RADEON_CONTEXT_H__
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define __RADEON_CONTEXT_H__
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "tnl/t_vertex.h"
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "dri_util.h"
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "drm.h"
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "radeon_drm.h"
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/macros.h"
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/mtypes.h"
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/colormac.h"
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "radeon_screen.h"
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "radeon_common.h"
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_context;
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct r100_context r100ContextRec;
60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct r100_context *r100ContextPtr;
61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R100_TEX_ALL 0x7
65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* used for both tcl_vtx and vc_frmt tex bits (they are identical) */
67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define RADEON_ST_BIT(unit) \
68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org(unit == 0 ? RADEON_CP_VC_FRMT_ST0 : (RADEON_CP_VC_FRMT_ST1 >> 2) << (2 * unit))
69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define RADEON_Q_BIT(unit) \
71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org(unit == 0 ? RADEON_CP_VC_FRMT_Q0 : (RADEON_CP_VC_FRMT_Q1 >> 2) << (2 * unit))
72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct radeon_texture_env_state {
74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	radeonTexObjPtr texobj;
75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLenum format;
76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLenum envMode;
77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct radeon_texture_state {
80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_texture_env_state unit[RADEON_MAX_TEXTURE_UNITS];
81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Trying to keep these relatively short as the variables are becoming
84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * extravagently long.  Drop the driver name prefix off the front of
85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * everything - I think we know which driver we're in by now, and keep the
86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * prefix to 3 letters unless absolutely impossible.
87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_CMD_0             0
90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_PP_MISC           1
91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_PP_FOG_COLOR      2
92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RE_SOLID_COLOR    3
93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_BLENDCNTL    4
94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_DEPTHOFFSET  5
95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_DEPTHPITCH   6
96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_ZSTENCILCNTL 7
97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_CMD_1             8
98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_PP_CNTL           9
99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_CNTL         10
100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_COLOROFFSET  11
101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_CMD_2             12
102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_COLORPITCH   13
103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_STATE_SIZE        14
104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_CMD_0               0
106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_SE_CNTL             1
107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_SE_COORDFMT         2
108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_CMD_1               3
109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_SE_CNTL_STATUS      4
110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_STATE_SIZE          5
111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_CMD_0               0
113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_RE_LINE_PATTERN     1
114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_RE_LINE_STATE       2
115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_CMD_1               3
116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_SE_LINE_WIDTH       4
117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_STATE_SIZE          5
118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSK_CMD_0               0
120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSK_RB3D_STENCILREFMASK 1
121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSK_RB3D_ROPCNTL        2
122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSK_RB3D_PLANEMASK      3
123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSK_STATE_SIZE          4
124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_CMD_0           0
126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_XSCALE          1
127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_XOFFSET         2
128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_YSCALE          3
129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_YOFFSET         4
130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_ZSCALE          5
131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_ZOFFSET         6
132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_STATE_SIZE      7
133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSC_CMD_0               0
135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSC_RE_MISC             1
136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSC_STATE_SIZE          2
137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_CMD_0                   0
139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TXFILTER             1
140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TXFORMAT             2
141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TXOFFSET             3
142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TXCBLEND             4
143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TXABLEND             5
144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TFACTOR              6
145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_CMD_1                   7
146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_BORDER_COLOR         8
147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_STATE_SIZE              9
148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TXR_CMD_0                   0	/* rectangle textures */
150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TXR_PP_TEX_SIZE             1	/* 0x1d04, 0x1d0c for NPOT! */
151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TXR_PP_TEX_PITCH            2	/* 0x1d08, 0x1d10 for NPOT! */
152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TXR_STATE_SIZE              3
153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_CMD_0                  0
155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_FACES         1
156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_CMD_1                  2
157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_OFFSET_0      3
158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_OFFSET_1      4
159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_OFFSET_2      5
160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_OFFSET_3      6
161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_OFFSET_4      7
162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_STATE_SIZE             8
163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define ZBS_CMD_0              0
165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define ZBS_SE_ZBIAS_FACTOR             1
166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define ZBS_SE_ZBIAS_CONSTANT           2
167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define ZBS_STATE_SIZE         3
168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_CMD_0                        0
170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_OUTPUT_VTXFMT         1
171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_OUTPUT_VTXSEL         2
172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_MATRIX_SELECT_0       3
173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_MATRIX_SELECT_1       4
174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_UCP_VERT_BLEND_CTL    5
175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_TEXTURE_PROC_CTL      6
176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_LIGHT_MODEL_CTL       7
177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_PER_LIGHT_CTL_0       8
178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_PER_LIGHT_CTL_1       9
179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_PER_LIGHT_CTL_2       10
180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_PER_LIGHT_CTL_3       11
181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_STATE_SIZE                   12
182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_CMD_0            0
184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_EMMISSIVE_RED    1
185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_EMMISSIVE_GREEN  2
186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_EMMISSIVE_BLUE   3
187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_EMMISSIVE_ALPHA  4
188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_AMBIENT_RED      5
189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_AMBIENT_GREEN    6
190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_AMBIENT_BLUE     7
191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_AMBIENT_ALPHA    8
192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_DIFFUSE_RED      9
193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_DIFFUSE_GREEN    10
194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_DIFFUSE_BLUE     11
195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_DIFFUSE_ALPHA    12
196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_SPECULAR_RED     13
197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_SPECULAR_GREEN   14
198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_SPECULAR_BLUE    15
199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_SPECULAR_ALPHA   16
200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_SHININESS        17
201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_STATE_SIZE       18
202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VTX_CMD_0              0
204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VTX_SE_COORD_FMT       1
205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VTX_STATE_SIZE         2
206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MAT_CMD_0              0
208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MAT_ELT_0              1
209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MAT_STATE_SIZE         17
210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_CMD_0                  0
212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_VERT_GUARD_CLIP_ADJ    1
213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_VERT_GUARD_DISCARD_ADJ 2
214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_HORZ_GUARD_CLIP_ADJ    3
215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_HORZ_GUARD_DISCARD_ADJ 4
216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_STATE_SIZE             5
217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* position changes frequently when lighting in modelpos - separate
219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * out to new state item?
220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_CMD_0                  0
222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_AMBIENT_RED            1
223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_AMBIENT_GREEN          2
224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_AMBIENT_BLUE           3
225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_AMBIENT_ALPHA          4
226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIFFUSE_RED            5
227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIFFUSE_GREEN          6
228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIFFUSE_BLUE           7
229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIFFUSE_ALPHA          8
230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPECULAR_RED           9
231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPECULAR_GREEN         10
232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPECULAR_BLUE          11
233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPECULAR_ALPHA         12
234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_POSITION_X             13
235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_POSITION_Y             14
236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_POSITION_Z             15
237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_POSITION_W             16
238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIRECTION_X            17
239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIRECTION_Y            18
240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIRECTION_Z            19
241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIRECTION_W            20
242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_ATTEN_QUADRATIC        21
243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_ATTEN_LINEAR           22
244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_ATTEN_CONST            23
245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_ATTEN_XXX              24
246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_CMD_1                  25
247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPOT_DCD               26
248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPOT_EXPONENT          27
249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPOT_CUTOFF            28
250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPECULAR_THRESH        29
251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_RANGE_CUTOFF           30	/* ? */
252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_ATTEN_CONST_INV        31
253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_STATE_SIZE             32
254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Fog
256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_CMD_0      0
258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_R          1
259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_C          2
260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_D          3
261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_PAD        4
262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_STATE_SIZE 5
263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* UCP
265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_CMD_0      0
267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_X          1
268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_Y          2
269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_Z          3
270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_W          4
271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_STATE_SIZE 5
272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* GLT - Global ambient
274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_CMD_0      0
276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_RED        1
277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_GREEN      2
278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_BLUE       3
279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_ALPHA      4
280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_STATE_SIZE 5
281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* EYE
283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_CMD_0          0
285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_X              1
286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_Y              2
287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_Z              3
288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_RESCALE_FACTOR 4
289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_STATE_SIZE     5
290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SHN_CMD_0          0
292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SHN_SHININESS      1
293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SHN_STATE_SIZE     2
294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R100_QUERYOBJ_CMD_0  0
296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R100_QUERYOBJ_DATA_0 1
297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R100_QUERYOBJ_CMDSIZE  2
298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define STP_CMD_0 0
300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define STP_DATA_0 1
301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define STP_CMD_1 2
302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define STP_STATE_SIZE 35
303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_hw_state {
305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* Hardware state, stored as cmdbuf commands:
306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 *   -- Need to doublebuffer for
307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 *           - eliding noop statechange loops? (except line stipple count)
308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom ctx;
310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom set;
311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom lin;
312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom msk;
313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom vpt;
314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom tcl;
315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom msc;
316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom tex[3];
317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom cube[3];
318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom zbs;
319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom mtl;
320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom mat[6];
321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom lit[8];	/* includes vec, scl commands */
322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom ucp[6];
323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom eye;	/* eye pos */
324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom grd;	/* guard band clipping */
325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom fog;
326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom glt;
327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom txr[3];	/* for NPOT */
328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_state_atom stp;
329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct radeon_stipple_state {
332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint mask[32];
333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_state {
336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_stipple_state stipple;
337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_texture_state texture;
338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define RADEON_CMD_BUF_SZ  (8*1024)
341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R200_ELT_BUF_SZ  (8*1024)
342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* radeon_tcl.c
343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_tcl_info {
345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint vertex_format;
346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint hw_primitive;
347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* Temporary for cases where incoming vertex data is incompatible
349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * with maos code.
350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLvector4f ObjClean;
352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint *Elts;
354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org        int elt_cmd_offset;
356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	int elt_cmd_start;
357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org        int elt_used;
358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* radeon_swtcl.c
361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_swtcl_info {
363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint vertex_format;
364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLubyte *verts;
366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* Fallback rasterization functions
368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	radeon_point_func draw_point;
370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	radeon_line_func draw_line;
371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	radeon_tri_func draw_tri;
372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /**
374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    * Offset of the 4UB color data within a hardware (swtcl) vertex.
375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    */
376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint coloroffset;
377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /**
379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    * Offset of the 3UB specular color data within a hardware (swtcl) vertex.
380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    */
381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint specoffset;
382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLboolean needproj;
384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* A maximum total of 20 elements per vertex:  3 floats for position, 3
389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * floats for normal, 4 floats for color, 4 bytes for secondary color,
390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 3 floats for each texture unit (9 floats total).
391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The position data is never actually stored here, so 3 elements could be
393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * trimmed out of the buffer. This number is only valid for vtxfmt!
394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define RADEON_MAX_VERTEX_SIZE 20
396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_context {
398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org        struct radeon_context radeon;
399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* Driver and hardware state management
401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct r100_hw_state hw;
403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct r100_state state;
404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* Vertex buffers
406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_ioctl ioctl;
408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct radeon_store store;
409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* TCL stuff
411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLmatrix TexGenMatrix[RADEON_MAX_TEXTURE_UNITS];
413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLboolean recheck_texgen[RADEON_MAX_TEXTURE_UNITS];
414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLboolean TexGenNeedNormals[RADEON_MAX_TEXTURE_UNITS];
415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint TexGenEnabled;
416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint NeedTexMatrix;
417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint TexMatColSwap;
418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLmatrix tmpmat[RADEON_MAX_TEXTURE_UNITS];
419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint last_ReallyEnabled;
420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* radeon_tcl.c
422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct r100_tcl_info tcl;
424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* radeon_swtcl.c
426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct r100_swtcl_info swtcl;
428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLboolean using_hyperz;
430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLboolean texmicrotile;
431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* Performance counters
433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint boxes;		/* Draw performance boxes */
435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint hardwareWentIdle;
436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint c_clears;
437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint c_drawWaits;
438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint c_textureSwaps;
439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint c_textureBytes;
440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	GLuint c_vertexBuffers;
441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R100_CONTEXT(ctx)		((r100ContextPtr)(ctx->DriverCtx))
446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define RADEON_OLD_PACKETS 1
449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern GLboolean r100CreateContext( gl_api api,
451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org				    const struct gl_config *glVisual,
452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org				    __DRIcontext *driContextPriv,
453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org				    unsigned major_version,
454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org				    unsigned minor_version,
455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org				    uint32_t flags,
456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org				    unsigned *error,
457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org				    void *sharedContextPrivate);
458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif				/* __RADEON_CONTEXT_H__ */
461