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)