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