r200_context.h revision a7a9a91d7b28e5b5faed509d00f0f951e3136b1b
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Copyright (C) The Weather Channel, Inc.  2002.  All Rights Reserved.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The Weather Channel (TM) funded Tungsten Graphics to develop the
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)initial release of the Radeon 8500 driver under the XFree86 license.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This notice must be preserved.
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)Permission is hereby granted, free of charge, to any person obtaining
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a copy of this software and associated documentation files (the
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Software"), to deal in the Software without restriction, including
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)without limitation the rights to use, copy, modify, merge, publish,
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)distribute, sublicense, and/or sell copies of the Software, and to
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)permit persons to whom the Software is furnished to do so, subject to
14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)the following conditions:
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The above copyright notice and this permission notice (including the
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)next paragraph) shall be included in all copies or substantial
18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochportions of the Software.
19868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
20868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
237dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochIN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**************************************************************************/
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch * Authors:
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) *   Keith Whitwell <keith@tungstengraphics.com>
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
359ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#ifndef __R200_CONTEXT_H__
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __R200_CONTEXT_H__
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "tnl/t_vertex.h"
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "drm.h"
40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "radeon_drm.h"
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "dri_util.h"
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "texmem.h"
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "main/macros.h"
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "main/mtypes.h"
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "main/colormac.h"
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "r200_reg.h"
48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "r200_vertprog.h"
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ENABLE_HW_3D_TEXTURE 1  /* XXX this is temporary! */
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef R200_EMIT_VAP_PVS_CNTL
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#error This driver requires a newer libdrm to compile
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "radeon_screen.h"
57c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "radeon_common.h"
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
59a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "radeon_lock.h"
60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct r200_context;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct r200_context r200ContextRec;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct r200_context *r200ContextPtr;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "main/mm.h"
66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct r200_vertex_program {
685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        struct gl_vertex_program mesa_program; /* Must be first */
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        int translated;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        /* need excess instr: 1 for late loop checking, 2 for
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           additional instr due to instr/attr, 3 for fog */
7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)        VERTEX_SHADER_INSTRUCTION instr[R200_VSF_MAX_INST + 6];
7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)        int pos_end;
7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)        int inputs[VERT_ATTRIB_MAX];
7590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)        GLubyte inputmap_rev[16];
7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)        int native;
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        int fogpidx;
78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        int fogmode;
79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define R200_TEX_ALL 0x3f
8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
8390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
8490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)struct r200_texture_env_state {
8590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   radeonTexObjPtr texobj;
8690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   GLuint outputreg;
87c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch   GLuint unitneeded;
8890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)};
8990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
9090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define R200_MAX_TEXTURE_UNITS 6
9190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
9290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)struct r200_texture_state {
9390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   struct r200_texture_env_state unit[R200_MAX_TEXTURE_UNITS];
9490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)};
9590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
96c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
97c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch/* Trying to keep these relatively short as the variables are becoming
9890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * extravagently long.  Drop the driver name prefix off the front of
9990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * everything - I think we know which driver we're in by now, and keep the
100c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * prefix to 3 letters unless absolutely impossible.
101c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch */
10290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
10390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CTX_CMD_0             0
10490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CTX_PP_MISC           1
10590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CTX_PP_FOG_COLOR      2
10690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CTX_RE_SOLID_COLOR    3
10790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CTX_RB3D_BLENDCNTL    4
10890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CTX_RB3D_DEPTHOFFSET  5
10990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CTX_RB3D_DEPTHPITCH   6
11090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CTX_RB3D_ZSTENCILCNTL 7
11190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CTX_CMD_1             8
112c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define CTX_PP_CNTL           9
113c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define CTX_RB3D_CNTL         10
114c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define CTX_RB3D_COLOROFFSET  11
11590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CTX_CMD_2             12 /* why */
1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CTX_RB3D_COLORPITCH   13 /* why */
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CTX_STATE_SIZE_OLDDRM 14
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CTX_CMD_3             14
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CTX_RB3D_BLENDCOLOR   15
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CTX_RB3D_ABLENDCNTL   16
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CTX_RB3D_CBLENDCNTL   17
1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CTX_STATE_SIZE_NEWDRM 18
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define SET_CMD_0               0
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define SET_SE_CNTL             1
1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define SET_RE_CNTL             2 /* replace se_coord_fmt */
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define SET_STATE_SIZE          3
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VTE_CMD_0               0
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VTE_SE_VTE_CNTL         1
1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VTE_STATE_SIZE          2
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define LIN_CMD_0               0
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define LIN_RE_LINE_PATTERN     1
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define LIN_RE_LINE_STATE       2
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define LIN_CMD_1               3
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define LIN_SE_LINE_WIDTH       4
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define LIN_STATE_SIZE          5
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MSK_CMD_0               0
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MSK_RB3D_STENCILREFMASK 1
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MSK_RB3D_ROPCNTL        2
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MSK_RB3D_PLANEMASK      3
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MSK_STATE_SIZE          4
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VPT_CMD_0           0
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VPT_SE_VPORT_XSCALE          1
1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VPT_SE_VPORT_XOFFSET         2
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VPT_SE_VPORT_YSCALE          3
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VPT_SE_VPORT_YOFFSET         4
1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VPT_SE_VPORT_ZSCALE          5
1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VPT_SE_VPORT_ZOFFSET         6
1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define VPT_STATE_SIZE      7
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define ZBS_CMD_0               0
1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define ZBS_SE_ZBIAS_FACTOR     1
1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define ZBS_SE_ZBIAS_CONSTANT   2
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define ZBS_STATE_SIZE          3
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MSC_CMD_0               0
1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MSC_RE_MISC             1
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MSC_STATE_SIZE          2
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define TAM_CMD_0               0
1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define TAM_DEBUG3              1
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define TAM_STATE_SIZE          2
1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define TEX_CMD_0                   0
1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define TEX_PP_TXFILTER             1  /*2c00*/
1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define TEX_PP_TXFORMAT             2  /*2c04*/
1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define TEX_PP_TXFORMAT_X           3  /*2c08*/
1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define TEX_PP_TXSIZE               4  /*2c0c*/
1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define TEX_PP_TXPITCH              5  /*2c10*/
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define TEX_PP_BORDER_COLOR         6  /*2c14*/
1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define TEX_CMD_1_OLDDRM            7
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TEX_PP_TXOFFSET_OLDDRM      8  /*2d00 */
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TEX_STATE_SIZE_OLDDRM       9
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TEX_PP_CUBIC_FACES          7
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TEX_PP_TXMULTI_CTL          8
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TEX_CMD_1_NEWDRM            9
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TEX_PP_TXOFFSET_NEWDRM     10
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TEX_STATE_SIZE_NEWDRM      11
183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CUBE_CMD_0                  0  /* 1 register follows */ /* this command unnecessary */
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CUBE_PP_CUBIC_FACES         1  /* 0x2c18 */             /* with new enough drm */
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CUBE_CMD_1                  2  /* 5 registers follow */
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CUBE_PP_CUBIC_OFFSET_F1     3  /* 0x2d04 */
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CUBE_PP_CUBIC_OFFSET_F2     4  /* 0x2d08 */
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CUBE_PP_CUBIC_OFFSET_F3     5  /* 0x2d0c */
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CUBE_PP_CUBIC_OFFSET_F4     6  /* 0x2d10 */
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CUBE_PP_CUBIC_OFFSET_F5     7  /* 0x2d14 */
192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define CUBE_STATE_SIZE             8
193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PIX_CMD_0                   0
195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define PIX_PP_TXCBLEND             1
196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define PIX_PP_TXCBLEND2            2
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PIX_PP_TXABLEND             3
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PIX_PP_TXABLEND2            4
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PIX_STATE_SIZE              5
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TF_CMD_0                    0
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TF_TFACTOR_0                1
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TF_TFACTOR_1                2
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TF_TFACTOR_2                3
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TF_TFACTOR_3                4
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TF_TFACTOR_4                5
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TF_TFACTOR_5                6
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TF_STATE_SIZE               7
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ATF_CMD_0                   0
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ATF_TFACTOR_0               1
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ATF_TFACTOR_1               2
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ATF_TFACTOR_2               3
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ATF_TFACTOR_3               4
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ATF_TFACTOR_4               5
216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define ATF_TFACTOR_5               6
2175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define ATF_TFACTOR_6               7
2185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define ATF_TFACTOR_7               8
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ATF_STATE_SIZE              9
220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* ATI_FRAGMENT_SHADER */
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define AFS_CMD_0                 0
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define AFS_IC0                   1 /* 2f00 */
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define AFS_IC1                   2 /* 2f04 */
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define AFS_IA0                   3 /* 2f08 */
22690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define AFS_IA1                   4 /* 2f0c */
22790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define AFS_STATE_SIZE           33
22890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
22990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define PVS_CMD_0                 0
230eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define PVS_CNTL_1                1
23190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define PVS_CNTL_2                2
23290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define PVS_STATE_SIZE            3
23390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
23490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)/* those are quite big... */
235eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define VPI_CMD_0                 0
23690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VPI_OPDST_0               1
23790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VPI_SRC0_0                2
23890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VPI_SRC1_0                3
23990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VPI_SRC2_0                4
240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define VPI_OPDST_63              253
241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define VPI_SRC0_63               254
242c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define VPI_SRC1_63               255
243c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define VPI_SRC2_63               256
244c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define VPI_STATE_SIZE            257
245c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define VPP_CMD_0                0
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define VPP_PARAM0_0             1
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define VPP_PARAM1_0             2
24990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VPP_PARAM2_0             3
25090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VPP_PARAM3_0             4
25190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VPP_PARAM0_95            381
252eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define VPP_PARAM1_95            382
25390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VPP_PARAM2_95            383
25490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VPP_PARAM3_95            384
25590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VPP_STATE_SIZE           385
25690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
25790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCL_CMD_0                 0
25890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCL_LIGHT_MODEL_CTL_0     1
2595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define TCL_LIGHT_MODEL_CTL_1     2
26090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCL_PER_LIGHT_CTL_0       3
26190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCL_PER_LIGHT_CTL_1       4
26290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCL_PER_LIGHT_CTL_2       5
26390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCL_PER_LIGHT_CTL_3       6
26490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCL_CMD_1                 7
26590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCL_UCP_VERT_BLEND_CTL    8
26690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCL_STATE_SIZE            9
26790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
26890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MSL_CMD_0                     0
26990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MSL_MATRIX_SELECT_0           1
27090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MSL_MATRIX_SELECT_1           2
27190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MSL_MATRIX_SELECT_2           3
272eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define MSL_MATRIX_SELECT_3           4
2735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define MSL_MATRIX_SELECT_4           5
27490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MSL_STATE_SIZE                6
27590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
27690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCG_CMD_0                 0
27790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCG_TEX_PROC_CTL_2            1
27890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCG_TEX_PROC_CTL_3            2
27990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCG_TEX_PROC_CTL_0            3
28090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCG_TEX_PROC_CTL_1            4
28190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCG_TEX_CYL_WRAP_CTL      5
28290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define TCG_STATE_SIZE            6
28390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
28490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MTL_CMD_0            0
28590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MTL_EMMISSIVE_RED    1
28690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MTL_EMMISSIVE_GREEN  2
28790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MTL_EMMISSIVE_BLUE   3
28890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MTL_EMMISSIVE_ALPHA  4
2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_AMBIENT_RED      5
2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_AMBIENT_GREEN    6
2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_AMBIENT_BLUE     7
2922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_AMBIENT_ALPHA    8
2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_DIFFUSE_RED      9
2942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_DIFFUSE_GREEN    10
2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_DIFFUSE_BLUE     11
2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_DIFFUSE_ALPHA    12
2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_SPECULAR_RED     13
2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_SPECULAR_GREEN   14
2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MTL_SPECULAR_BLUE    15
300a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define MTL_SPECULAR_ALPHA   16
301a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define MTL_CMD_1            17
302a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define MTL_SHININESS        18
303a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define MTL_STATE_SIZE       19
304a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
305a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VAP_CMD_0                   0
306a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VAP_SE_VAP_CNTL             1
307a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VAP_STATE_SIZE              2
308a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
309a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)/* Replaces a lot of packet info from radeon
310a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) */
311a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_CMD_0                   0
312a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_VTXFMT_0            1
313a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_VTXFMT_1            2
314a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_TCL_OUTPUT_VTXFMT_0 3
315a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_TCL_OUTPUT_VTXFMT_1 4
316a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_CMD_1               5
317a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_TCL_OUTPUT_COMPSEL  6
318a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_CMD_2               7
319a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_STATE_CNTL          8
320a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_STATE_SIZE          9
321a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
322a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)/* SPR - point sprite state
323a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) */
324a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define SPR_CMD_0              0
325a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define SPR_POINT_SPRITE_CNTL  1
326a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define SPR_STATE_SIZE         2
327a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
328a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_CMD_0              0
329a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_VPORT_SCALE_0      1
330a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_VPORT_SCALE_1      2
331a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_VPORT_SCALE_PTSIZE 3
332a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_VPORT_SCALE_3      4
333a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_CMD_1              5
334a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_ATT_CONST_QUAD     6
335a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_ATT_CONST_LIN      7
336a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_ATT_CONST_CON      8
337a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_ATT_CONST_3        9
338a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_EYE_X             10
339a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_EYE_Y             11
340a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_EYE_Z             12
341a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_EYE_3             13
342a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_CLAMP_MIN         14
343a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_CLAMP_MAX         15
344a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_CLAMP_2           16
345a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_CLAMP_3           17
346a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PTP_STATE_SIZE        18
347a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
348a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_COLOR(v,n)   (((v)>>(R200_VTX_COLOR_0_SHIFT+(n)*2))&\
349a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                         R200_VTX_COLOR_MASK)
350a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
351a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)/**
352a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * Given the \c R200_SE_VTX_FMT_1 for the current vertex state, determine
353a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * how many components are in texture coordinate \c n.
354a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) */
355a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define VTX_TEXn_COUNT(v,n)   (((v) >> (3 * n)) & 0x07)
356a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
357a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define MAT_CMD_0              0
358a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define MAT_ELT_0              1
359a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define MAT_STATE_SIZE         17
360a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
361a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define GRD_CMD_0                  0
362a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define GRD_VERT_GUARD_CLIP_ADJ    1
363a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define GRD_VERT_GUARD_DISCARD_ADJ 2
364a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define GRD_HORZ_GUARD_CLIP_ADJ    3
365a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define GRD_HORZ_GUARD_DISCARD_ADJ 4
366a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define GRD_STATE_SIZE             5
3675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
3685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* position changes frequently when lighting in modelpos - separate
3695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * out to new state item?
370a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) */
371effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define LIT_CMD_0                  0
372effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define LIT_AMBIENT_RED            1
373a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_AMBIENT_GREEN          2
374a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_AMBIENT_BLUE           3
375a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_AMBIENT_ALPHA          4
3765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define LIT_DIFFUSE_RED            5
377a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_DIFFUSE_GREEN          6
378a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_DIFFUSE_BLUE           7
379a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_DIFFUSE_ALPHA          8
380a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_SPECULAR_RED           9
381a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_SPECULAR_GREEN         10
382a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_SPECULAR_BLUE          11
383a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_SPECULAR_ALPHA         12
384a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_POSITION_X             13
385a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_POSITION_Y             14
386a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_POSITION_Z             15
387a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_POSITION_W             16
38858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define LIT_DIRECTION_X            17
389a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_DIRECTION_Y            18
390bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define LIT_DIRECTION_Z            19
391a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_DIRECTION_W            20
392a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_ATTEN_QUADRATIC        21
393a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_ATTEN_LINEAR           22
394a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_ATTEN_CONST            23
395a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_ATTEN_XXX              24
396a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_CMD_1                  25
397a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_SPOT_DCD               26
398a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_SPOT_DCM               27
399a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_SPOT_EXPONENT          28
400a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_SPOT_CUTOFF            29
401a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_SPECULAR_THRESH        30
402a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_RANGE_CUTOFF           31 /* ? */
403a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_ATTEN_CONST_INV        32
404a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define LIT_STATE_SIZE             33
405a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
406a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)/* Fog
407a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) */
408a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define FOG_CMD_0      0
409a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define FOG_R          1
410a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define FOG_C          2
411a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define FOG_D          3
4122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define FOG_PAD        4
4132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define FOG_STATE_SIZE 5
4142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)/* UCP
4160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) */
4170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define UCP_CMD_0      0
4180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define UCP_X          1
4190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define UCP_Y          2
4202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define UCP_Z          3
4210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define UCP_W          4
4222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define UCP_STATE_SIZE 5
4230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
4240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)/* GLT - Global ambient
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GLT_CMD_0      0
4270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define GLT_RED        1
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GLT_GREEN      2
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GLT_BLUE       3
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GLT_ALPHA      4
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GLT_STATE_SIZE 5
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* EYE
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EYE_CMD_0          0
436a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define EYE_X              1
437a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define EYE_Y              2
438a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define EYE_Z              3
439a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define EYE_RESCALE_FACTOR 4
440a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define EYE_STATE_SIZE     5
441a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
442a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/* CST - constant state
443a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) */
444a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_CMD_0                             0
445a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_PP_CNTL_X                         1
446a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_CMD_1                             2
447a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_RB3D_DEPTHXY_OFFSET               3
448a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_CMD_2                             4
449a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_RE_AUX_SCISSOR_CNTL               5
450a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_CMD_3                             6
451a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_RE_SCISSOR_TL_0                   7
452a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_RE_SCISSOR_BR_0                   8
453a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_CMD_4                             9
454a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_SE_VAP_CNTL_STATUS                10
455a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CST_CMD_5                             11
4560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define CST_RE_POINTSIZE                      12
4570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define CST_CMD_6                             13
4580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define CST_SE_TCL_INPUT_VTX_0                14
4590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define CST_SE_TCL_INPUT_VTX_1                15
4600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define CST_SE_TCL_INPUT_VTX_2                16
4615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define CST_SE_TCL_INPUT_VTX_3                17
4620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#define CST_STATE_SIZE                        18
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define PRF_CMD_0         0
4652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define PRF_PP_TRI_PERF   1
466c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define PRF_PP_PERF_CNTL  2
467c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define PRF_STATE_SIZE    3
468c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
469c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
470c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define SCI_CMD_0         0
471c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define SCI_RE_AUX        1
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SCI_CMD_1         2
4732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define SCI_XY_1          3
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SCI_CMD_2         4
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SCI_XY_2          5
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SCI_STATE_SIZE    6
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define R200_QUERYOBJ_CMD_0  0
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define R200_QUERYOBJ_DATA_0 1
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define R200_QUERYOBJ_CMDSIZE  2
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STP_CMD_0 0
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STP_DATA_0 1
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STP_CMD_1 2
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STP_STATE_SIZE 35
4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct r200_hw_state {
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   /* Hardware state, stored as cmdbuf commands:
4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    *   -- Need to doublebuffer for
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *           - reviving state after loss of context
4912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    *           - eliding noop statechange loops? (except line stipple count)
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom ctx;
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom set;
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom sci;
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom vte;
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom lin;
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom msk;
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom vpt;
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom vap;
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom vtx;
5022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   struct radeon_state_atom tcl;
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom msl;
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom tcg;
5052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   struct radeon_state_atom msc;
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom cst;
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom tam;
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom tf;
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom tex[6];
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom cube[6];
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom zbs;
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom mtl[2];
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom mat[9];
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom lit[8]; /* includes vec, scl commands */
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom ucp[6];
5162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   struct radeon_state_atom pix[6]; /* pixshader stages */
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom eye; /* eye pos */
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom grd; /* guard band clipping */
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom fog;
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom glt;
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom prf;
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom afs[2];
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom pvs;
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom vpi[2];
5252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   struct radeon_state_atom vpp[2];
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom atf;
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom spr;
528a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)   struct radeon_state_atom ptp;
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct radeon_state_atom stp;
5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
5312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct r200_state {
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   /* Derived state for internal purposes:
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct r200_texture_state texture;
5362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   GLuint envneeded;
53790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)};
53890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
53990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define R200_CMD_BUF_SZ  (16*1024)
54090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define R200_ELT_BUF_SZ  (16*1024)
5425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* r200_tcl.c
5435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */
544c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)struct r200_tcl_info {
545c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   GLuint hw_primitive;
54690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
54790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   int elt_used;
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
550effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
551effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
552effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch/* r200_swtcl.c
553effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch */
554effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochstruct r200_swtcl_info {
555effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
556effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
557effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch   radeon_point_func draw_point;
558a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)   radeon_line_func draw_line;
559a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)   radeon_tri_func draw_tri;
560effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
561effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch   /**
562a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    * Offset of the 4UB color data within a hardware (swtcl) vertex.
563a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    */
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   GLuint coloroffset;
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   /**
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * Offset of the 3UB specular color data within a hardware (swtcl) vertex.
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   GLuint specoffset;
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   /**
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * Should Mesa project vertex data or will the hardware do it?
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   GLboolean needproj;
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   /* A maximum total of 29 elements per vertex:  3 floats for position, 3
581a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    * floats for normal, 4 floats for color, 4 bytes for secondary color,
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * 3 floats for each texture unit (18 floats total).
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * we maybe need add. 4 to prevent segfault if someone specifies
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * GL_TEXTURE6/GL_TEXTURE7 (esp. for the codegen-path) (FIXME: )
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * The position data is never actually stored here, so 3 elements could be
5885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    * trimmed out of the buffer.
5895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    */
590effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
591effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define R200_MAX_VERTEX_SIZE ((3*6)+11)
592effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
593effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochstruct r200_context {
5945c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu   struct radeon_context radeon;
595effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   /* Driver and hardware state management
5975c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    */
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct r200_hw_state hw;
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct r200_state state;
6005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu   struct r200_vertex_program *curr_vp_hw;
601ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
602a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)   /* Vertex buffers
603ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    */
6045c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu   struct radeon_ioctl ioctl;
605ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch   struct radeon_store store;
606a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
607a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)   /* Clientdata textures;
608a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    */
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   GLuint prefer_gart_client_texturing;
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   /* TCL stuff
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   GLmatrix TexGenMatrix[R200_MAX_TEXTURE_UNITS];
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   GLboolean recheck_texgen[R200_MAX_TEXTURE_UNITS];
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   GLboolean TexGenNeedNormals[R200_MAX_TEXTURE_UNITS];
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   GLuint TexMatEnabled;
6177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch   GLuint TexMatCompSel;
618c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   GLuint TexGenEnabled;
619c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   GLuint TexGenCompSel;
620c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   GLmatrix tmpmat;
621c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   /* r200_tcl.c
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct r200_tcl_info tcl;
6252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
626effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch   /* r200_swtcl.c
627effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    */
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   struct r200_swtcl_info swtcl;
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   GLboolean using_hyperz;
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   GLboolean texmicrotile;
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct ati_fragment_shader *afs_loaded;
6342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
6352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define R200_CONTEXT(ctx)		((r200ContextPtr)(ctx->DriverCtx))
6372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern void r200DestroyContext( __DRIcontext *driContextPriv );
6402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern GLboolean r200CreateContext( gl_api api,
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				    const __GLcontextModes *glVisual,
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				    __DRIcontext *driContextPriv,
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				    void *sharedContextPrivate);
6442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern GLboolean r200MakeCurrent( __DRIcontext *driContextPriv,
645c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)				  __DRIdrawable *driDrawPriv,
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				  __DRIdrawable *driReadPriv );
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern GLboolean r200UnbindContext( __DRIcontext *driContextPriv );
6482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
649c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)extern void r200_init_texcopy_functions(struct dd_function_table *table);
650c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
6512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* ================================================================
6522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Debugging:
6532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
6542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
655c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define R200_DEBUG RADEON_DEBUG
6562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
659c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif /* __R200_CONTEXT_H__ */
660c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)