radeon_context.h revision 1090d206de011a67d236d8c4ae32d2d42b2f6337
15df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/**************************************************************************
25df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
35df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulCopyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
45df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul                     VA Linux Systems Inc., Fremont, California.
54d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFaddenCopyright (C) The Weather Channel, Inc.  2002.  All Rights Reserved.
64d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
74d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFaddenThe Weather Channel (TM) funded Tungsten Graphics to develop the
84d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFaddeninitial release of the Radeon 8500 driver under the XFree86 license.
94d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFaddenThis notice must be preserved.
105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulAll Rights Reserved.
125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulPermission is hereby granted, free of charge, to any person obtaining
145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paula copy of this software and associated documentation files (the
155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul"Software"), to deal in the Software without restriction, including
165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulwithout limitation the rights to use, copy, modify, merge, publish,
175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Pauldistribute, sublicense, and/or sell copies of the Software, and to
185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulpermit persons to whom the Software is furnished to do so, subject to
195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulthe following conditions:
205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulThe above copyright notice and this permission notice (including the
225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulnext paragraph) shall be included in all copies or substantial
235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulportions of the Software.
245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulIN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul**************************************************************************/
345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/*
365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * Authors:
375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul *   Gareth Hughes <gareth@valinux.com>
385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul *   Keith Whitwell <keith@tungstengraphics.com>
394d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden *   Kevin E. Martin <martin@valinux.com>
404d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden *   Nicolai Haehnle <prefect_@gmx.net>
415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */
425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#ifndef __RADEON_CONTEXT_H__
445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define __RADEON_CONTEXT_H__
455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
468a1df968627de01d04f3d692fd81108ba6492c18Eric Anholt#include "tnl/t_vertex.h"
475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "dri_util.h"
486ddfdff659196cf4eeb0e5fed70ddd1ced0d16fcJon Smirl#include "drm.h"
496ddfdff659196cf4eeb0e5fed70ddd1ced0d16fcJon Smirl#include "radeon_drm.h"
505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "texmem.h"
51ecadb51bbcb972a79f3ed79e65a7986b9396e757Brian Paul#include "main/macros.h"
52ecadb51bbcb972a79f3ed79e65a7986b9396e757Brian Paul#include "main/mtypes.h"
53ecadb51bbcb972a79f3ed79e65a7986b9396e757Brian Paul#include "main/colormac.h"
545df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "radeon_screen.h"
555df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
56692ca82116485a9c6191e5265c5b369d5b4f82f3Dave Airlie#include "common_context.h"
57d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie#include "common_misc.h"
58692ca82116485a9c6191e5265c5b369d5b4f82f3Dave Airlie
595df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
604637235183b80963536f2364e4d50fcb894886ddDave Airliestruct r100_context;
614637235183b80963536f2364e4d50fcb894886ddDave Airlietypedef struct r100_context r100ContextRec;
624637235183b80963536f2364e4d50fcb894886ddDave Airlietypedef struct r100_context *r100ContextPtr;
635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
644637235183b80963536f2364e4d50fcb894886ddDave Airlie#include "radeon_lock.h"
655df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
665df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
675df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
684637235183b80963536f2364e4d50fcb894886ddDave Airlie#define R100_TEX_ALL 0x7
695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
7030daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger/* used for both tcl_vtx and vc_frmt tex bits (they are identical) */
7130daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger#define RADEON_ST_BIT(unit) \
7230daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger(unit == 0 ? RADEON_CP_VC_FRMT_ST0 : (RADEON_CP_VC_FRMT_ST1 >> 2) << (2 * unit))
735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
7430daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger#define RADEON_Q_BIT(unit) \
7530daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger(unit == 0 ? RADEON_CP_VC_FRMT_Q0 : (RADEON_CP_VC_FRMT_Q1 >> 2) << (2 * unit))
765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
775df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_texture_env_state {
784d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	radeonTexObjPtr texobj;
794d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLenum format;
804d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLenum envMode;
815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul};
825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_texture_state {
844d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_texture_env_state unit[RADEON_MAX_TEXTURE_UNITS];
855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul};
865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
875df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* Trying to keep these relatively short as the variables are becoming
885df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * extravagently long.  Drop the driver name prefix off the front of
895df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * everything - I think we know which driver we're in by now, and keep the
905df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * prefix to 3 letters unless absolutely impossible.
915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */
925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_CMD_0             0
945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_PP_MISC           1
955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_PP_FOG_COLOR      2
965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RE_SOLID_COLOR    3
975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_BLENDCNTL    4
985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_DEPTHOFFSET  5
995df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_DEPTHPITCH   6
1005df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_ZSTENCILCNTL 7
1015df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_CMD_1             8
1025df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_PP_CNTL           9
1035df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_CNTL         10
1045df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_COLOROFFSET  11
1055df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_CMD_2             12
1065df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_COLORPITCH   13
1075df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_STATE_SIZE        14
1085df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
1095df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_CMD_0               0
1105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_SE_CNTL             1
1115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_SE_COORDFMT         2
1125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_CMD_1               3
1135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_SE_CNTL_STATUS      4
1145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_STATE_SIZE          5
1155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
1165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_CMD_0               0
1175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_RE_LINE_PATTERN     1
1185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_RE_LINE_STATE       2
1195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_CMD_1               3
1205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_SE_LINE_WIDTH       4
1215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_STATE_SIZE          5
1225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
1235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSK_CMD_0               0
1245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSK_RB3D_STENCILREFMASK 1
1255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSK_RB3D_ROPCNTL        2
1265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSK_RB3D_PLANEMASK      3
1275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSK_STATE_SIZE          4
1285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
1295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_CMD_0           0
1305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_XSCALE          1
1315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_XOFFSET         2
1325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_YSCALE          3
1335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_YOFFSET         4
1345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_ZSCALE          5
1355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_ZOFFSET         6
1365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_STATE_SIZE      7
1375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
1385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSC_CMD_0               0
1395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSC_RE_MISC             1
1405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSC_STATE_SIZE          2
1415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
1425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_CMD_0                   0
1435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TXFILTER             1
1445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TXFORMAT             2
1455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TXOFFSET             3
1465df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TXCBLEND             4
1475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TXABLEND             5
1485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TFACTOR              6
1495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_CMD_1                   7
1505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_BORDER_COLOR         8
1515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_STATE_SIZE              9
1525df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
1534d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#define TXR_CMD_0                   0	/* rectangle textures */
1544d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#define TXR_PP_TEX_SIZE             1	/* 0x1d04, 0x1d0c for NPOT! */
1554d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#define TXR_PP_TEX_PITCH            2	/* 0x1d08, 0x1d10 for NPOT! */
1565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TXR_STATE_SIZE              3
1575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
158247f3b3e81fffa86c50531070fab573e26ffb452Roland Scheidegger#define CUBE_CMD_0                  0
159247f3b3e81fffa86c50531070fab573e26ffb452Roland Scheidegger#define CUBE_PP_CUBIC_FACES         1
160247f3b3e81fffa86c50531070fab573e26ffb452Roland Scheidegger#define CUBE_CMD_1                  2
161247f3b3e81fffa86c50531070fab573e26ffb452Roland Scheidegger#define CUBE_PP_CUBIC_OFFSET_0      3
162247f3b3e81fffa86c50531070fab573e26ffb452Roland Scheidegger#define CUBE_PP_CUBIC_OFFSET_1      4
163247f3b3e81fffa86c50531070fab573e26ffb452Roland Scheidegger#define CUBE_PP_CUBIC_OFFSET_2      5
164247f3b3e81fffa86c50531070fab573e26ffb452Roland Scheidegger#define CUBE_PP_CUBIC_OFFSET_3      6
165247f3b3e81fffa86c50531070fab573e26ffb452Roland Scheidegger#define CUBE_PP_CUBIC_OFFSET_4      7
166247f3b3e81fffa86c50531070fab573e26ffb452Roland Scheidegger#define CUBE_STATE_SIZE             8
167247f3b3e81fffa86c50531070fab573e26ffb452Roland Scheidegger
1685df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define ZBS_CMD_0              0
1695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define ZBS_SE_ZBIAS_FACTOR             1
1705df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define ZBS_SE_ZBIAS_CONSTANT           2
1715df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define ZBS_STATE_SIZE         3
1725df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
1735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_CMD_0                        0
1745df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_OUTPUT_VTXFMT         1
1755df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_OUTPUT_VTXSEL         2
1765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_MATRIX_SELECT_0       3
1775df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_MATRIX_SELECT_1       4
1785df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_UCP_VERT_BLEND_CTL    5
1795df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_TEXTURE_PROC_CTL      6
1805df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_LIGHT_MODEL_CTL       7
1815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_PER_LIGHT_CTL_0       8
1825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_PER_LIGHT_CTL_1       9
1835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_PER_LIGHT_CTL_2       10
1845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_PER_LIGHT_CTL_3       11
1855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_STATE_SIZE                   12
1865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
1874d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#define MTL_CMD_0            0
1884d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#define MTL_EMMISSIVE_RED    1
1894d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#define MTL_EMMISSIVE_GREEN  2
1904d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#define MTL_EMMISSIVE_BLUE   3
1914d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#define MTL_EMMISSIVE_ALPHA  4
1925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_AMBIENT_RED      5
1935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_AMBIENT_GREEN    6
1945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_AMBIENT_BLUE     7
1955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_AMBIENT_ALPHA    8
1965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_DIFFUSE_RED      9
1975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_DIFFUSE_GREEN    10
1985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_DIFFUSE_BLUE     11
1995df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_DIFFUSE_ALPHA    12
2005df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_SPECULAR_RED     13
2015df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_SPECULAR_GREEN   14
2025df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_SPECULAR_BLUE    15
2035df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_SPECULAR_ALPHA   16
2045df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_SHININESS        17
2055df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_STATE_SIZE       18
2065df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
2075df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VTX_CMD_0              0
2085df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VTX_SE_COORD_FMT       1
2095df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VTX_STATE_SIZE         2
2105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
2115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MAT_CMD_0              0
2125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MAT_ELT_0              1
2135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MAT_STATE_SIZE         17
2145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
2155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_CMD_0                  0
2165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_VERT_GUARD_CLIP_ADJ    1
2175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_VERT_GUARD_DISCARD_ADJ 2
2185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_HORZ_GUARD_CLIP_ADJ    3
2195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_HORZ_GUARD_DISCARD_ADJ 4
2205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_STATE_SIZE             5
2215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
2225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* position changes frequently when lighting in modelpos - separate
2235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * out to new state item?
2245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */
2255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_CMD_0                  0
2265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_AMBIENT_RED            1
2275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_AMBIENT_GREEN          2
2285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_AMBIENT_BLUE           3
2295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_AMBIENT_ALPHA          4
2305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIFFUSE_RED            5
2315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIFFUSE_GREEN          6
2325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIFFUSE_BLUE           7
2335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIFFUSE_ALPHA          8
2345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPECULAR_RED           9
2355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPECULAR_GREEN         10
2365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPECULAR_BLUE          11
2375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPECULAR_ALPHA         12
2385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_POSITION_X             13
2395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_POSITION_Y             14
2405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_POSITION_Z             15
2415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_POSITION_W             16
2425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIRECTION_X            17
2435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIRECTION_Y            18
2445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIRECTION_Z            19
2455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIRECTION_W            20
2465d00e131d8a264498b8d050c3eded093ee5c42f2Michel Dänzer#define LIT_ATTEN_QUADRATIC        21
2475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_ATTEN_LINEAR           22
2485d00e131d8a264498b8d050c3eded093ee5c42f2Michel Dänzer#define LIT_ATTEN_CONST            23
2495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_ATTEN_XXX              24
2505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_CMD_1                  25
2515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPOT_DCD               26
2525df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPOT_EXPONENT          27
2535df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPOT_CUTOFF            28
2545df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPECULAR_THRESH        29
2554d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#define LIT_RANGE_CUTOFF           30	/* ? */
2565d00e131d8a264498b8d050c3eded093ee5c42f2Michel Dänzer#define LIT_ATTEN_CONST_INV        31
2575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_STATE_SIZE             32
2585df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
2595df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* Fog
2605df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */
2615df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_CMD_0      0
2625df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_R          1
2635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_C          2
2645df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_D          3
2655df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_PAD        4
2665df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_STATE_SIZE 5
2675df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
2685df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* UCP
2695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */
2705df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_CMD_0      0
2715df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_X          1
2725df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_Y          2
2735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_Z          3
2745df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_W          4
2755df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_STATE_SIZE 5
2765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
2775df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* GLT - Global ambient
2785df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */
2795df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_CMD_0      0
2805df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_RED        1
2815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_GREEN      2
2825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_BLUE       3
2835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_ALPHA      4
2845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_STATE_SIZE 5
2855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
2865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* EYE
2875df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */
2885df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_CMD_0          0
2895df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_X              1
2905df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_Y              2
2915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_Z              3
2925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_RESCALE_FACTOR 4
2935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_STATE_SIZE     5
2945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
2955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SHN_CMD_0          0
2965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SHN_SHININESS      1
2975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SHN_STATE_SIZE     2
2985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
2991090d206de011a67d236d8c4ae32d2d42b2f6337Dave Airliestruct r100_hw_state {
3004d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	/* Hardware state, stored as cmdbuf commands:
3014d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 *   -- Need to doublebuffer for
3024d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 *           - eliding noop statechange loops? (except line stipple count)
3034d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 */
3044d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom ctx;
3054d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom set;
3064d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom lin;
3074d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom msk;
3084d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom vpt;
3094d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom tcl;
3104d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom msc;
3114d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom tex[3];
3124d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom cube[3];
3134d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom zbs;
3144d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom mtl;
3154d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom mat[6];
3164d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom lit[8];	/* includes vec, scl commands */
3174d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom ucp[6];
3184d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom eye;	/* eye pos */
3194d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom grd;	/* guard band clipping */
3204d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom fog;
3214d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom glt;
3224d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_state_atom txr[3];	/* for NPOT */
3234d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
3245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul};
3255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
3264637235183b80963536f2364e4d50fcb894886ddDave Airlie
327d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airliestruct r100_state {
3284d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_stipple_state stipple;
3294d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_texture_state texture;
3305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul};
3315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
3324d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#define RADEON_CMD_BUF_SZ  (8*1024)
333b584b0728d3a001a142f76dde22f9e8ed7d2dd16Dave Airlie#define R200_ELT_BUF_SZ  (8*1024)
3345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* radeon_tcl.c
3355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */
3365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_tcl_info {
3374d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint vertex_format;
3384d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint hw_primitive;
3394d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
3404d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	/* Temporary for cases where incoming vertex data is incompatible
3414d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 * with maos code.
3424d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 */
3434d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLvector4f ObjClean;
3444d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
3453fafaf8959681cc41c988607bb6e387bab4fe1b5Dave Airlie        struct radeon_aos aos[8];
3464d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint nr_aos_components;
3474d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
3484d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint *Elts;
3494d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
3503fafaf8959681cc41c988607bb6e387bab4fe1b5Dave Airlie	struct radeon_bo *indexed_bo;
3513fafaf8959681cc41c988607bb6e387bab4fe1b5Dave Airlie
3523fafaf8959681cc41c988607bb6e387bab4fe1b5Dave Airlie        int elt_cmd_offset; /** Offset into the cmdbuf */
3533fafaf8959681cc41c988607bb6e387bab4fe1b5Dave Airlie	int elt_cmd_start;
354b584b0728d3a001a142f76dde22f9e8ed7d2dd16Dave Airlie        int elt_used;
3555df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul};
3565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
3575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* radeon_swtcl.c
3585df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */
359b584b0728d3a001a142f76dde22f9e8ed7d2dd16Dave Airliestruct r100_swtcl_info {
3604d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint vertex_format;
3618a1df968627de01d04f3d692fd81108ba6492c18Eric Anholt
3624d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLubyte *verts;
3635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
3644d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	/* Fallback rasterization functions
3654d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 */
3664d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	radeon_point_func draw_point;
3674d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	radeon_line_func draw_line;
3684d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	radeon_tri_func draw_tri;
3695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
3708a1df968627de01d04f3d692fd81108ba6492c18Eric Anholt   /**
3718a1df968627de01d04f3d692fd81108ba6492c18Eric Anholt    * Offset of the 4UB color data within a hardware (swtcl) vertex.
3728a1df968627de01d04f3d692fd81108ba6492c18Eric Anholt    */
3734d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint coloroffset;
3748a1df968627de01d04f3d692fd81108ba6492c18Eric Anholt
3758a1df968627de01d04f3d692fd81108ba6492c18Eric Anholt   /**
3768a1df968627de01d04f3d692fd81108ba6492c18Eric Anholt    * Offset of the 3UB specular color data within a hardware (swtcl) vertex.
3778a1df968627de01d04f3d692fd81108ba6492c18Eric Anholt    */
3784d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint specoffset;
3798a1df968627de01d04f3d692fd81108ba6492c18Eric Anholt
3804d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLboolean needproj;
3815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul};
3825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
3835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
3845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
38530daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger/* A maximum total of 20 elements per vertex:  3 floats for position, 3
38630daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger * floats for normal, 4 floats for color, 4 bytes for secondary color,
38730daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger * 3 floats for each texture unit (9 floats total).
38830daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger *
38930daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger * The position data is never actually stored here, so 3 elements could be
39030daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger * trimmed out of the buffer. This number is only valid for vtxfmt!
39130daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger */
39230daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger#define RADEON_MAX_VERTEX_SIZE 20
39330daa7529331057ecb470efb500152e9c4aa1ae5Roland Scheidegger
3944637235183b80963536f2364e4d50fcb894886ddDave Airliestruct r100_context {
3954637235183b80963536f2364e4d50fcb894886ddDave Airlie        struct radeon_context radeon;
3964d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
3974d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	/* Driver and hardware state management
3984d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 */
3991090d206de011a67d236d8c4ae32d2d42b2f6337Dave Airlie	struct r100_hw_state hw;
400d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie	struct r100_state state;
4014d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
4024d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	/* Vertex buffers
4034d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 */
4044d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_ioctl ioctl;
4054d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_store store;
4064d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
4074d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	/* TCL stuff
4084d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 */
4094d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLmatrix TexGenMatrix[RADEON_MAX_TEXTURE_UNITS];
4104d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLboolean recheck_texgen[RADEON_MAX_TEXTURE_UNITS];
4114d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLboolean TexGenNeedNormals[RADEON_MAX_TEXTURE_UNITS];
4124d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint TexGenEnabled;
4134d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint NeedTexMatrix;
4144d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint TexMatColSwap;
4154d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLmatrix tmpmat[RADEON_MAX_TEXTURE_UNITS];
4164d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint last_ReallyEnabled;
4174d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
4184d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	/* radeon_tcl.c
4194d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 */
4204d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	struct radeon_tcl_info tcl;
4214d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
4224d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	/* radeon_swtcl.c
4234d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 */
424b584b0728d3a001a142f76dde22f9e8ed7d2dd16Dave Airlie	struct r100_swtcl_info swtcl;
4254d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
4264d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLboolean using_hyperz;
4274d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLboolean texmicrotile;
4284d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden
4294d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	/* Performance counters
4304d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	 */
4314d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint boxes;		/* Draw performance boxes */
4324d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint hardwareWentIdle;
4334d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint c_clears;
4344d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint c_drawWaits;
4354d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint c_textureSwaps;
4364d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint c_textureBytes;
4374d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden	GLuint c_vertexBuffers;
4384637235183b80963536f2364e4d50fcb894886ddDave Airlie
4395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul};
4405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
4414637235183b80963536f2364e4d50fcb894886ddDave Airlie#define R100_CONTEXT(ctx)		((r100ContextPtr)(ctx->DriverCtx))
4425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
4435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
4445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_OLD_PACKETS 1
4455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
4464d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFaddenextern void radeonDestroyContext(__DRIcontextPrivate * driContextPriv);
4474d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFaddenextern GLboolean radeonCreateContext(const __GLcontextModes * glVisual,
4484d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden				     __DRIcontextPrivate * driContextPriv,
4495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul				     void *sharedContextPrivate);
4504d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFaddenextern GLboolean radeonMakeCurrent(__DRIcontextPrivate * driContextPriv,
4514d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden				   __DRIdrawablePrivate * driDrawPriv,
4524d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden				   __DRIdrawablePrivate * driReadPriv);
4534d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFaddenextern GLboolean radeonUnbindContext(__DRIcontextPrivate * driContextPriv);
4545df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
4555df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
4565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
4574d5d4e1f97bf8d5c55ef817f7a28f920accc151bOliver McFadden#endif				/* __RADEON_CONTEXT_H__ */
458