15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Copyright (C) The Weather Channel, Inc.  2002.  All Rights Reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)The Weather Channel (TM) funded Tungsten Graphics to develop the
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)initial release of the Radeon 8500 driver under the XFree86 license.
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)This notice must be preserved.
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Permission is hereby granted, free of charge, to any person obtaining
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)a copy of this software and associated documentation files (the
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"Software"), to deal in the Software without restriction, including
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)without limitation the rights to use, copy, modify, merge, publish,
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)distribute, sublicense, and/or sell copies of the Software, and to
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)permit persons to whom the Software is furnished to do so, subject to
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)the following conditions:
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)The above copyright notice and this permission notice (including the
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)next paragraph) shall be included in all copies or substantial
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)portions of the Software.
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)**************************************************************************/
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Authors:
32f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu *   Keith Whitwell <keith@tungstengraphics.com>
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#ifndef __R200_CONTEXT_H__
36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define __R200_CONTEXT_H__
37f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu
3853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "tnl/t_vertex.h"
3909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "drm.h"
4053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "radeon_drm.h"
4153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "dri_util.h"
4253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
4353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "main/macros.h"
4453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "main/mtypes.h"
4553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "main/colormac.h"
465d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "r200_reg.h"
477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "r200_vertprog.h"
487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
4951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#ifndef R200_EMIT_VAP_PVS_CNTL
507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#error This driver requires a newer libdrm to compile
517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif
52f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu
53f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "radeon_screen.h"
54f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "radeon_common.h"
557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
56f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liustruct r200_context;
57f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liutypedef struct r200_context r200ContextRec;
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef struct r200_context *r200ContextPtr;
5951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "main/mm.h"
6153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)struct r200_vertex_program {
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        struct gl_vertex_program mesa_program; /* Must be first */
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int translated;
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        /* need excess instr: 1 for late loop checking, 2 for
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)           additional instr due to instr/attr, 3 for fog */
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        VERTEX_SHADER_INSTRUCTION instr[R200_VSF_MAX_INST + 6];
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int pos_end;
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int inputs[VERT_ATTRIB_MAX];
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        GLubyte inputmap_rev[16];
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int native;
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int fogpidx;
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int fogmode;
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define R200_TEX_ALL 0x3f
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)struct r200_texture_env_state {
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   radeonTexObjPtr texobj;
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   GLuint outputreg;
825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   GLuint unitneeded;
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define R200_MAX_TEXTURE_UNITS 6
865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)struct r200_texture_state {
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   struct r200_texture_env_state unit[R200_MAX_TEXTURE_UNITS];
897242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci};
907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
927242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci/* Trying to keep these relatively short as the variables are becoming
937242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * extravagently long.  Drop the driver name prefix off the front of
947242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * everything - I think we know which driver we're in by now, and keep the
957242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * prefix to 3 letters unless absolutely impossible.
966f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch */
975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_CMD_0             0
995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_PP_MISC           1
1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_PP_FOG_COLOR      2
1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_RE_SOLID_COLOR    3
1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_RB3D_BLENDCNTL    4
10353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#define CTX_RB3D_DEPTHOFFSET  5
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_RB3D_DEPTHPITCH   6
1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_RB3D_ZSTENCILCNTL 7
1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_CMD_1             8
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_PP_CNTL           9
1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_RB3D_CNTL         10
1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_RB3D_COLOROFFSET  11
11053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#define CTX_CMD_2             12 /* why */
1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_RB3D_COLORPITCH   13 /* why */
11253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#define CTX_STATE_SIZE_OLDDRM 14
1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_CMD_3             14
1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_RB3D_BLENDCOLOR   15
1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_RB3D_ABLENDCNTL   16
1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CTX_RB3D_CBLENDCNTL   17
117d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#define CTX_STATE_SIZE_NEWDRM 18
118d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
119d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#define SET_CMD_0               0
120d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#define SET_SE_CNTL             1
121d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#define SET_RE_CNTL             2 /* replace se_coord_fmt */
1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define SET_STATE_SIZE          3
1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VTE_CMD_0               0
12553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#define VTE_SE_VTE_CNTL         1
12653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#define VTE_STATE_SIZE          2
12753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
12853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#define LIN_CMD_0               0
12953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#define LIN_RE_LINE_PATTERN     1
1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIN_RE_LINE_STATE       2
1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIN_CMD_1               3
1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIN_SE_LINE_WIDTH       4
1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIN_STATE_SIZE          5
1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define MSK_CMD_0               0
1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define MSK_RB3D_STENCILREFMASK 1
1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define MSK_RB3D_ROPCNTL        2
1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define MSK_RB3D_PLANEMASK      3
1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define MSK_STATE_SIZE          4
140e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
141926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define VPT_CMD_0           0
142926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define VPT_SE_VPORT_XSCALE          1
143926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define VPT_SE_VPORT_XOFFSET         2
144926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define VPT_SE_VPORT_YSCALE          3
145926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define VPT_SE_VPORT_YOFFSET         4
14653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#define VPT_SE_VPORT_ZSCALE          5
1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VPT_SE_VPORT_ZOFFSET         6
14853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#define VPT_STATE_SIZE      7
1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ZBS_CMD_0               0
151d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define ZBS_SE_ZBIAS_FACTOR     1
152d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define ZBS_SE_ZBIAS_CONSTANT   2
153d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define ZBS_STATE_SIZE          3
154d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
155d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MSC_CMD_0               0
156d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MSC_RE_MISC             1
157d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MSC_STATE_SIZE          2
158d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
159d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define TAM_CMD_0               0
160d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define TAM_DEBUG3              1
1617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TAM_STATE_SIZE          2
1627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
1637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TEX_CMD_0                   0
1647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TEX_PP_TXFILTER             1  /*2c00*/
1657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TEX_PP_TXFORMAT             2  /*2c04*/
1667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TEX_PP_TXFORMAT_X           3  /*2c08*/
1677242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TEX_PP_TXSIZE               4  /*2c0c*/
1687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TEX_PP_TXPITCH              5  /*2c10*/
1697242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TEX_PP_BORDER_COLOR         6  /*2c14*/
1707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TEX_CMD_1_OLDDRM            7
1717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TEX_PP_TXOFFSET_OLDDRM      8  /*2d00 */
1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TEX_STATE_SIZE_OLDDRM       9
1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TEX_PP_CUBIC_FACES          7
1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TEX_PP_TXMULTI_CTL          8
1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TEX_CMD_1_NEWDRM            9
1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TEX_PP_TXOFFSET_NEWDRM     10
1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TEX_STATE_SIZE_NEWDRM      11
1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CUBE_CMD_0                  0  /* 1 register follows */ /* this command unnecessary */
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CUBE_PP_CUBIC_FACES         1  /* 0x2c18 */             /* with new enough drm */
1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CUBE_CMD_1                  2  /* 5 registers follow */
1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CUBE_PP_CUBIC_OFFSET_F1     3  /* 0x2d04 */
1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CUBE_PP_CUBIC_OFFSET_F2     4  /* 0x2d08 */
1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CUBE_PP_CUBIC_OFFSET_F3     5  /* 0x2d0c */
1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CUBE_PP_CUBIC_OFFSET_F4     6  /* 0x2d10 */
1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CUBE_PP_CUBIC_OFFSET_F5     7  /* 0x2d14 */
1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CUBE_STATE_SIZE             8
1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PIX_CMD_0                   0
1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PIX_PP_TXCBLEND             1
191d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PIX_PP_TXCBLEND2            2
192d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PIX_PP_TXABLEND             3
193d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PIX_PP_TXABLEND2            4
194d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PIX_STATE_SIZE              5
1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TF_CMD_0                    0
1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TF_TFACTOR_0                1
1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TF_TFACTOR_1                2
1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TF_TFACTOR_2                3
2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TF_TFACTOR_3                4
2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TF_TFACTOR_4                5
2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TF_TFACTOR_5                6
2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TF_STATE_SIZE               7
204926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ATF_CMD_0                   0
2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ATF_TFACTOR_0               1
2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ATF_TFACTOR_1               2
2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ATF_TFACTOR_2               3
2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ATF_TFACTOR_3               4
2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ATF_TFACTOR_4               5
2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ATF_TFACTOR_5               6
2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ATF_TFACTOR_6               7
213197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#define ATF_TFACTOR_7               8
2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ATF_STATE_SIZE              9
2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* ATI_FRAGMENT_SHADER */
2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define AFS_CMD_0                 0
2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define AFS_IC0                   1 /* 2f00 */
2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define AFS_IC1                   2 /* 2f04 */
2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define AFS_IA0                   3 /* 2f08 */
221926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define AFS_IA1                   4 /* 2f0c */
2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define AFS_STATE_SIZE           33
2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PVS_CMD_0                 0
2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PVS_CNTL_1                1
2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PVS_CNTL_2                2
2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PVS_STATE_SIZE            3
2286f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch
229e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)/* those are quite big... */
230e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)#define VPI_CMD_0                 0
2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VPI_OPDST_0               1
232e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)#define VPI_SRC0_0                2
2337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define VPI_SRC1_0                3
2347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define VPI_SRC2_0                4
2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VPI_OPDST_63              253
236a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch#define VPI_SRC0_63               254
2377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define VPI_SRC1_63               255
2387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define VPI_SRC2_63               256
2397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define VPI_STATE_SIZE            257
2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VPP_CMD_0                0
2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VPP_PARAM0_0             1
2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VPP_PARAM1_0             2
2447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define VPP_PARAM2_0             3
2457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define VPP_PARAM3_0             4
2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VPP_PARAM0_95            381
247d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VPP_PARAM1_95            382
248d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VPP_PARAM2_95            383
2497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define VPP_PARAM3_95            384
2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VPP_STATE_SIZE           385
25109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
25209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#define TCL_CMD_0                 0
25309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#define TCL_LIGHT_MODEL_CTL_0     1
2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TCL_LIGHT_MODEL_CTL_1     2
2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TCL_PER_LIGHT_CTL_0       3
2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TCL_PER_LIGHT_CTL_1       4
257926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define TCL_PER_LIGHT_CTL_2       5
2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TCL_PER_LIGHT_CTL_3       6
259926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define TCL_CMD_1                 7
260926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define TCL_UCP_VERT_BLEND_CTL    8
2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define TCL_STATE_SIZE            9
2626f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch
263926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define MSL_CMD_0                     0
2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define MSL_MATRIX_SELECT_0           1
2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define MSL_MATRIX_SELECT_1           2
2667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define MSL_MATRIX_SELECT_2           3
2677242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define MSL_MATRIX_SELECT_3           4
2687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define MSL_MATRIX_SELECT_4           5
2697242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define MSL_STATE_SIZE                6
2707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
2717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TCG_CMD_0                 0
2727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TCG_TEX_PROC_CTL_2            1
2737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TCG_TEX_PROC_CTL_3            2
2747242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TCG_TEX_PROC_CTL_0            3
2757242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TCG_TEX_PROC_CTL_1            4
2767242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TCG_TEX_CYL_WRAP_CTL      5
2777242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TCG_STATE_SIZE            6
278d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
279d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_CMD_0            0
280d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_EMMISSIVE_RED    1
281d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_EMMISSIVE_GREEN  2
282d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_EMMISSIVE_BLUE   3
283d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_EMMISSIVE_ALPHA  4
284d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_AMBIENT_RED      5
285d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_AMBIENT_GREEN    6
286d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_AMBIENT_BLUE     7
287d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_AMBIENT_ALPHA    8
288d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_DIFFUSE_RED      9
289d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_DIFFUSE_GREEN    10
290d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_DIFFUSE_BLUE     11
291d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_DIFFUSE_ALPHA    12
292d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_SPECULAR_RED     13
293d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_SPECULAR_GREEN   14
294d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_SPECULAR_BLUE    15
295d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_SPECULAR_ALPHA   16
296d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_CMD_1            17
297d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_SHININESS        18
298d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define MTL_STATE_SIZE       19
299d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
300d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VAP_CMD_0                   0
301d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VAP_SE_VAP_CNTL             1
302d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VAP_STATE_SIZE              2
303197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
304d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/* Replaces a lot of packet info from radeon
305d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */
306d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VTX_CMD_0                   0
307d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VTX_VTXFMT_0            1
308d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VTX_VTXFMT_1            2
309d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VTX_TCL_OUTPUT_VTXFMT_0 3
310d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VTX_TCL_OUTPUT_VTXFMT_1 4
311d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VTX_CMD_1               5
312d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VTX_TCL_OUTPUT_COMPSEL  6
313d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VTX_CMD_2               7
314d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VTX_STATE_CNTL          8
315d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define VTX_STATE_SIZE          9
316d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
317926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/* SPR - point sprite state
3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
319926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define SPR_CMD_0              0
3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define SPR_POINT_SPRITE_CNTL  1
3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define SPR_STATE_SIZE         2
322c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PTP_CMD_0              0
324c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#define PTP_VPORT_SCALE_0      1
325c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#define PTP_VPORT_SCALE_1      2
3262fb29a03d7c71253319f61b77edc6c1e3a8fc8e2Torne (Richard Coles)#define PTP_VPORT_SCALE_PTSIZE 3
3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PTP_VPORT_SCALE_3      4
3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PTP_CMD_1              5
329d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PTP_ATT_CONST_QUAD     6
330d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PTP_ATT_CONST_LIN      7
331d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PTP_ATT_CONST_CON      8
332d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PTP_ATT_CONST_3        9
333d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PTP_EYE_X             10
334d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PTP_EYE_Y             11
3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PTP_EYE_Z             12
3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PTP_EYE_3             13
3372fb29a03d7c71253319f61b77edc6c1e3a8fc8e2Torne (Richard Coles)#define PTP_CLAMP_MIN         14
3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PTP_CLAMP_MAX         15
3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PTP_CLAMP_2           16
340d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#define PTP_CLAMP_3           17
3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PTP_STATE_SIZE        18
342926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
3432fb29a03d7c71253319f61b77edc6c1e3a8fc8e2Torne (Richard Coles)#define VTX_COLOR(v,n)   (((v)>>(R200_VTX_COLOR_0_SHIFT+(n)*2))&\
3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                         R200_VTX_COLOR_MASK)
3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/**
3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Given the \c R200_SE_VTX_FMT_1 for the current vertex state, determine
3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * how many components are in texture coordinate \c n.
3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VTX_TEXn_COUNT(v,n)   (((v) >> (3 * n)) & 0x07)
3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3525d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#define MAT_CMD_0              0
3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define MAT_ELT_0              1
3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define MAT_STATE_SIZE         17
3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GRD_CMD_0                  0
3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GRD_VERT_GUARD_CLIP_ADJ    1
3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GRD_VERT_GUARD_DISCARD_ADJ 2
3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GRD_HORZ_GUARD_CLIP_ADJ    3
3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GRD_HORZ_GUARD_DISCARD_ADJ 4
3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GRD_STATE_SIZE             5
3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* position changes frequently when lighting in modelpos - separate
3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * out to new state item?
3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_CMD_0                  0
3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_AMBIENT_RED            1
3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_AMBIENT_GREEN          2
3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_AMBIENT_BLUE           3
3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_AMBIENT_ALPHA          4
3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_DIFFUSE_RED            5
3725d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#define LIT_DIFFUSE_GREEN          6
3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_DIFFUSE_BLUE           7
3745d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#define LIT_DIFFUSE_ALPHA          8
375f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)#define LIT_SPECULAR_RED           9
3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_SPECULAR_GREEN         10
3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_SPECULAR_BLUE          11
3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_SPECULAR_ALPHA         12
3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_POSITION_X             13
3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_POSITION_Y             14
3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_POSITION_Z             15
3822fb29a03d7c71253319f61b77edc6c1e3a8fc8e2Torne (Richard Coles)#define LIT_POSITION_W             16
3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_DIRECTION_X            17
3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_DIRECTION_Y            18
3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_DIRECTION_Z            19
3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_DIRECTION_W            20
3875d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#define LIT_ATTEN_QUADRATIC        21
3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_ATTEN_LINEAR           22
3895d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#define LIT_ATTEN_CONST            23
3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_ATTEN_XXX              24
3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_CMD_1                  25
3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_SPOT_DCD               26
3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_SPOT_DCM               27
3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_SPOT_EXPONENT          28
3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_SPOT_CUTOFF            29
3963c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch#define LIT_SPECULAR_THRESH        30
3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_RANGE_CUTOFF           31 /* ? */
3983c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch#define LIT_ATTEN_CONST_INV        32
3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define LIT_STATE_SIZE             33
4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* Fog
4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define FOG_CMD_0      0
404926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define FOG_R          1
4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define FOG_C          2
4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define FOG_D          3
4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define FOG_PAD        4
4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define FOG_STATE_SIZE 5
4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* UCP
4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
4125d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#define UCP_CMD_0      0
413d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define UCP_X          1
414d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define UCP_Y          2
4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define UCP_Z          3
4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define UCP_W          4
417926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#define UCP_STATE_SIZE 5
418926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
419926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/* GLT - Global ambient
4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GLT_CMD_0      0
4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GLT_RED        1
4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GLT_GREEN      2
4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GLT_BLUE       3
4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GLT_ALPHA      4
4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GLT_STATE_SIZE 5
4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* EYE
4297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */
4307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define EYE_CMD_0          0
4317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define EYE_X              1
4327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define EYE_Y              2
4337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define EYE_Z              3
4347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define EYE_RESCALE_FACTOR 4
4357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define EYE_STATE_SIZE     5
4367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
4377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci/* CST - constant state
4387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */
4397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define CST_CMD_0                             0
4407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define CST_PP_CNTL_X                         1
4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_CMD_1                             2
4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_RB3D_DEPTHXY_OFFSET               3
4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_CMD_2                             4
4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_RE_AUX_SCISSOR_CNTL               5
4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_CMD_4                             6
4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_SE_VAP_CNTL_STATUS                7
4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_CMD_5                             8
4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_RE_POINTSIZE                      9
4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_CMD_6                             10
4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_SE_TCL_INPUT_VTX_0                11
4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_SE_TCL_INPUT_VTX_1                12
4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_SE_TCL_INPUT_VTX_2                13
4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_SE_TCL_INPUT_VTX_3                14
4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CST_STATE_SIZE                        15
4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#define PRF_CMD_0         0
457#define PRF_PP_TRI_PERF   1
458#define PRF_PP_PERF_CNTL  2
459#define PRF_STATE_SIZE    3
460
461
462#define SCI_CMD_1         0
463#define SCI_XY_1          1
464#define SCI_CMD_2         2
465#define SCI_XY_2          3
466#define SCI_STATE_SIZE    4
467
468#define R200_QUERYOBJ_CMD_0  0
469#define R200_QUERYOBJ_DATA_0 1
470#define R200_QUERYOBJ_CMDSIZE  2
471
472#define STP_CMD_0 0
473#define STP_DATA_0 1
474#define STP_CMD_1 2
475#define STP_STATE_SIZE 35
476
477struct r200_hw_state {
478   /* Hardware state, stored as cmdbuf commands:
479    *   -- Need to doublebuffer for
480    *           - reviving state after loss of context
481    *           - eliding noop statechange loops? (except line stipple count)
482    */
483   struct radeon_state_atom ctx;
484   struct radeon_state_atom set;
485   struct radeon_state_atom sci;
486   struct radeon_state_atom vte;
487   struct radeon_state_atom lin;
488   struct radeon_state_atom msk;
489   struct radeon_state_atom vpt;
490   struct radeon_state_atom vap;
491   struct radeon_state_atom vtx;
492   struct radeon_state_atom tcl;
493   struct radeon_state_atom msl;
494   struct radeon_state_atom tcg;
495   struct radeon_state_atom msc;
496   struct radeon_state_atom cst;
497   struct radeon_state_atom tam;
498   struct radeon_state_atom tf;
499   struct radeon_state_atom tex[6];
500   struct radeon_state_atom cube[6];
501   struct radeon_state_atom zbs;
502   struct radeon_state_atom mtl[2];
503   struct radeon_state_atom mat[9];
504   struct radeon_state_atom lit[8]; /* includes vec, scl commands */
505   struct radeon_state_atom ucp[6];
506   struct radeon_state_atom pix[6]; /* pixshader stages */
507   struct radeon_state_atom eye; /* eye pos */
508   struct radeon_state_atom grd; /* guard band clipping */
509   struct radeon_state_atom fog;
510   struct radeon_state_atom glt;
511   struct radeon_state_atom prf;
512   struct radeon_state_atom afs[2];
513   struct radeon_state_atom pvs;
514   struct radeon_state_atom vpi[2];
515   struct radeon_state_atom vpp[2];
516   struct radeon_state_atom atf;
517   struct radeon_state_atom spr;
518   struct radeon_state_atom ptp;
519   struct radeon_state_atom stp;
520};
521
522struct r200_state {
523   /* Derived state for internal purposes:
524    */
525   struct r200_texture_state texture;
526   GLuint envneeded;
527};
528
529#define R200_CMD_BUF_SZ  (16*1024)
530
531#define R200_ELT_BUF_SZ  (16*1024)
532/* r200_tcl.c
533 */
534struct r200_tcl_info {
535   GLuint hw_primitive;
536
537   int elt_used;
538
539};
540
541
542/* r200_swtcl.c
543 */
544struct r200_swtcl_info {
545
546
547   radeon_point_func draw_point;
548   radeon_line_func draw_line;
549   radeon_tri_func draw_tri;
550
551   /**
552    * Offset of the 4UB color data within a hardware (swtcl) vertex.
553    */
554   GLuint coloroffset;
555
556   /**
557    * Offset of the 3UB specular color data within a hardware (swtcl) vertex.
558    */
559   GLuint specoffset;
560
561   /**
562    * Should Mesa project vertex data or will the hardware do it?
563    */
564   GLboolean needproj;
565};
566
567
568
569
570   /* A maximum total of 29 elements per vertex:  3 floats for position, 3
571    * floats for normal, 4 floats for color, 4 bytes for secondary color,
572    * 3 floats for each texture unit (18 floats total).
573    *
574    * we maybe need add. 4 to prevent segfault if someone specifies
575    * GL_TEXTURE6/GL_TEXTURE7 (esp. for the codegen-path) (FIXME: )
576    *
577    * The position data is never actually stored here, so 3 elements could be
578    * trimmed out of the buffer.
579    */
580
581#define R200_MAX_VERTEX_SIZE ((3*6)+11)
582
583struct r200_context {
584   struct radeon_context radeon;
585
586   /* Driver and hardware state management
587    */
588   struct r200_hw_state hw;
589   struct r200_state state;
590   struct r200_vertex_program *curr_vp_hw;
591
592   /* Vertex buffers
593    */
594   struct radeon_ioctl ioctl;
595   struct radeon_store store;
596
597   /* Clientdata textures;
598    */
599   GLuint prefer_gart_client_texturing;
600
601   /* TCL stuff
602    */
603   GLmatrix TexGenMatrix[R200_MAX_TEXTURE_UNITS];
604   GLboolean recheck_texgen[R200_MAX_TEXTURE_UNITS];
605   GLboolean TexGenNeedNormals[R200_MAX_TEXTURE_UNITS];
606   GLuint TexMatEnabled;
607   GLuint TexMatCompSel;
608   GLuint TexGenEnabled;
609   GLuint TexGenCompSel;
610   GLmatrix tmpmat;
611
612   /* r200_tcl.c
613    */
614   struct r200_tcl_info tcl;
615
616   /* r200_swtcl.c
617    */
618   struct r200_swtcl_info swtcl;
619
620   GLboolean using_hyperz;
621   GLboolean texmicrotile;
622
623  struct ati_fragment_shader *afs_loaded;
624};
625
626#define R200_CONTEXT(ctx)		((r200ContextPtr)(ctx->DriverCtx))
627
628
629extern void r200DestroyContext( __DRIcontext *driContextPriv );
630extern GLboolean r200CreateContext( gl_api api,
631				    const struct gl_config *glVisual,
632				    __DRIcontext *driContextPriv,
633				    unsigned major_version,
634				    unsigned minor_version,
635				    uint32_t flags,
636				    unsigned *error,
637				    void *sharedContextPrivate);
638extern GLboolean r200MakeCurrent( __DRIcontext *driContextPriv,
639				  __DRIdrawable *driDrawPriv,
640				  __DRIdrawable *driReadPriv );
641extern GLboolean r200UnbindContext( __DRIcontext *driContextPriv );
642
643extern void r200_init_texcopy_functions(struct dd_function_table *table);
644
645/* ================================================================
646 * Debugging:
647 */
648
649#define R200_DEBUG RADEON_DEBUG
650
651
652
653#endif /* __R200_CONTEXT_H__ */
654