1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/************************************************************************** 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgCopyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VA Linux Systems Inc., Fremont, California. 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgCopyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgThe Weather Channel (TM) funded Tungsten Graphics to develop the 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginitial release of the Radeon 8500 driver under the XFree86 license. 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgThis notice must be preserved. 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgAll Rights Reserved. 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgPermission is hereby granted, free of charge, to any person obtaining 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orga copy of this software and associated documentation files (the 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org"Software"), to deal in the Software without restriction, including 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwithout limitation the rights to use, copy, modify, merge, publish, 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgdistribute, sublicense, and/or sell copies of the Software, and to 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgpermit persons to whom the Software is furnished to do so, subject to 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgthe following conditions: 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgThe above copyright notice and this permission notice (including the 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnext paragraph) shall be included in all copies or substantial 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgportions of the Software. 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgIN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org**************************************************************************/ 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Authors: 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Gareth Hughes <gareth@valinux.com> 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Keith Whitwell <keith@tungstengraphics.com> 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Kevin E. Martin <martin@valinux.com> 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Nicolai Haehnle <prefect_@gmx.net> 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef __RADEON_CONTEXT_H__ 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define __RADEON_CONTEXT_H__ 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "tnl/t_vertex.h" 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "dri_util.h" 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "drm.h" 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "radeon_drm.h" 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/macros.h" 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/mtypes.h" 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/colormac.h" 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "radeon_screen.h" 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "radeon_common.h" 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_context; 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct r100_context r100ContextRec; 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct r100_context *r100ContextPtr; 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R100_TEX_ALL 0x7 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* used for both tcl_vtx and vc_frmt tex bits (they are identical) */ 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define RADEON_ST_BIT(unit) \ 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org(unit == 0 ? RADEON_CP_VC_FRMT_ST0 : (RADEON_CP_VC_FRMT_ST1 >> 2) << (2 * unit)) 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define RADEON_Q_BIT(unit) \ 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org(unit == 0 ? RADEON_CP_VC_FRMT_Q0 : (RADEON_CP_VC_FRMT_Q1 >> 2) << (2 * unit)) 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct radeon_texture_env_state { 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org radeonTexObjPtr texobj; 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum format; 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum envMode; 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct radeon_texture_state { 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_texture_env_state unit[RADEON_MAX_TEXTURE_UNITS]; 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Trying to keep these relatively short as the variables are becoming 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * extravagently long. Drop the driver name prefix off the front of 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * everything - I think we know which driver we're in by now, and keep the 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * prefix to 3 letters unless absolutely impossible. 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_CMD_0 0 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_PP_MISC 1 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_PP_FOG_COLOR 2 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RE_SOLID_COLOR 3 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_BLENDCNTL 4 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_DEPTHOFFSET 5 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_DEPTHPITCH 6 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_ZSTENCILCNTL 7 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_CMD_1 8 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_PP_CNTL 9 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_CNTL 10 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_COLOROFFSET 11 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_CMD_2 12 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_RB3D_COLORPITCH 13 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CTX_STATE_SIZE 14 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_CMD_0 0 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_SE_CNTL 1 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_SE_COORDFMT 2 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_CMD_1 3 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_SE_CNTL_STATUS 4 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SET_STATE_SIZE 5 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_CMD_0 0 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_RE_LINE_PATTERN 1 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_RE_LINE_STATE 2 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_CMD_1 3 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_SE_LINE_WIDTH 4 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIN_STATE_SIZE 5 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSK_CMD_0 0 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSK_RB3D_STENCILREFMASK 1 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSK_RB3D_ROPCNTL 2 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSK_RB3D_PLANEMASK 3 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSK_STATE_SIZE 4 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_CMD_0 0 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_XSCALE 1 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_XOFFSET 2 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_YSCALE 3 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_YOFFSET 4 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_ZSCALE 5 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_SE_VPORT_ZOFFSET 6 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VPT_STATE_SIZE 7 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSC_CMD_0 0 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSC_RE_MISC 1 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MSC_STATE_SIZE 2 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_CMD_0 0 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TXFILTER 1 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TXFORMAT 2 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TXOFFSET 3 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TXCBLEND 4 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TXABLEND 5 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_TFACTOR 6 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_CMD_1 7 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_PP_BORDER_COLOR 8 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TEX_STATE_SIZE 9 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TXR_CMD_0 0 /* rectangle textures */ 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TXR_PP_TEX_SIZE 1 /* 0x1d04, 0x1d0c for NPOT! */ 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TXR_PP_TEX_PITCH 2 /* 0x1d08, 0x1d10 for NPOT! */ 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TXR_STATE_SIZE 3 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_CMD_0 0 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_FACES 1 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_CMD_1 2 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_OFFSET_0 3 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_OFFSET_1 4 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_OFFSET_2 5 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_OFFSET_3 6 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_PP_CUBIC_OFFSET_4 7 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CUBE_STATE_SIZE 8 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define ZBS_CMD_0 0 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define ZBS_SE_ZBIAS_FACTOR 1 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define ZBS_SE_ZBIAS_CONSTANT 2 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define ZBS_STATE_SIZE 3 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_CMD_0 0 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_OUTPUT_VTXFMT 1 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_OUTPUT_VTXSEL 2 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_MATRIX_SELECT_0 3 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_MATRIX_SELECT_1 4 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_UCP_VERT_BLEND_CTL 5 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_TEXTURE_PROC_CTL 6 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_LIGHT_MODEL_CTL 7 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_PER_LIGHT_CTL_0 8 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_PER_LIGHT_CTL_1 9 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_PER_LIGHT_CTL_2 10 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_PER_LIGHT_CTL_3 11 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define TCL_STATE_SIZE 12 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_CMD_0 0 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_EMMISSIVE_RED 1 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_EMMISSIVE_GREEN 2 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_EMMISSIVE_BLUE 3 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_EMMISSIVE_ALPHA 4 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_AMBIENT_RED 5 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_AMBIENT_GREEN 6 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_AMBIENT_BLUE 7 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_AMBIENT_ALPHA 8 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_DIFFUSE_RED 9 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_DIFFUSE_GREEN 10 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_DIFFUSE_BLUE 11 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_DIFFUSE_ALPHA 12 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_SPECULAR_RED 13 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_SPECULAR_GREEN 14 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_SPECULAR_BLUE 15 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_SPECULAR_ALPHA 16 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_SHININESS 17 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MTL_STATE_SIZE 18 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VTX_CMD_0 0 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VTX_SE_COORD_FMT 1 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VTX_STATE_SIZE 2 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MAT_CMD_0 0 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MAT_ELT_0 1 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define MAT_STATE_SIZE 17 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_CMD_0 0 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_VERT_GUARD_CLIP_ADJ 1 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_VERT_GUARD_DISCARD_ADJ 2 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_HORZ_GUARD_CLIP_ADJ 3 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_HORZ_GUARD_DISCARD_ADJ 4 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GRD_STATE_SIZE 5 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* position changes frequently when lighting in modelpos - separate 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * out to new state item? 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_CMD_0 0 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_AMBIENT_RED 1 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_AMBIENT_GREEN 2 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_AMBIENT_BLUE 3 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_AMBIENT_ALPHA 4 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIFFUSE_RED 5 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIFFUSE_GREEN 6 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIFFUSE_BLUE 7 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIFFUSE_ALPHA 8 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPECULAR_RED 9 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPECULAR_GREEN 10 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPECULAR_BLUE 11 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPECULAR_ALPHA 12 234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_POSITION_X 13 235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_POSITION_Y 14 236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_POSITION_Z 15 237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_POSITION_W 16 238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIRECTION_X 17 239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIRECTION_Y 18 240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIRECTION_Z 19 241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_DIRECTION_W 20 242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_ATTEN_QUADRATIC 21 243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_ATTEN_LINEAR 22 244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_ATTEN_CONST 23 245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_ATTEN_XXX 24 246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_CMD_1 25 247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPOT_DCD 26 248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPOT_EXPONENT 27 249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPOT_CUTOFF 28 250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_SPECULAR_THRESH 29 251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_RANGE_CUTOFF 30 /* ? */ 252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_ATTEN_CONST_INV 31 253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LIT_STATE_SIZE 32 254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Fog 256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_CMD_0 0 258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_R 1 259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_C 2 260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_D 3 261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_PAD 4 262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FOG_STATE_SIZE 5 263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* UCP 265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_CMD_0 0 267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_X 1 268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_Y 2 269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_Z 3 270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_W 4 271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define UCP_STATE_SIZE 5 272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* GLT - Global ambient 274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_CMD_0 0 276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_RED 1 277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_GREEN 2 278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_BLUE 3 279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_ALPHA 4 280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLT_STATE_SIZE 5 281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* EYE 283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_CMD_0 0 285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_X 1 286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_Y 2 287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_Z 3 288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_RESCALE_FACTOR 4 289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define EYE_STATE_SIZE 5 290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SHN_CMD_0 0 292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SHN_SHININESS 1 293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SHN_STATE_SIZE 2 294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R100_QUERYOBJ_CMD_0 0 296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R100_QUERYOBJ_DATA_0 1 297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R100_QUERYOBJ_CMDSIZE 2 298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define STP_CMD_0 0 300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define STP_DATA_0 1 301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define STP_CMD_1 2 302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define STP_STATE_SIZE 35 303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_hw_state { 305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Hardware state, stored as cmdbuf commands: 306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * -- Need to doublebuffer for 307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * - eliding noop statechange loops? (except line stipple count) 308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom ctx; 310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom set; 311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom lin; 312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom msk; 313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom vpt; 314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom tcl; 315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom msc; 316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom tex[3]; 317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom cube[3]; 318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom zbs; 319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom mtl; 320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom mat[6]; 321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom lit[8]; /* includes vec, scl commands */ 322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom ucp[6]; 323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom eye; /* eye pos */ 324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom grd; /* guard band clipping */ 325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom fog; 326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom glt; 327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom txr[3]; /* for NPOT */ 328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_state_atom stp; 329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct radeon_stipple_state { 332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mask[32]; 333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_state { 336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_stipple_state stipple; 337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_texture_state texture; 338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define RADEON_CMD_BUF_SZ (8*1024) 341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R200_ELT_BUF_SZ (8*1024) 342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* radeon_tcl.c 343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_tcl_info { 345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vertex_format; 346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint hw_primitive; 347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Temporary for cases where incoming vertex data is incompatible 349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * with maos code. 350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLvector4f ObjClean; 352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint *Elts; 354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int elt_cmd_offset; 356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int elt_cmd_start; 357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int elt_used; 358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* radeon_swtcl.c 361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_swtcl_info { 363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vertex_format; 364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLubyte *verts; 366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Fallback rasterization functions 368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org radeon_point_func draw_point; 370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org radeon_line_func draw_line; 371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org radeon_tri_func draw_tri; 372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Offset of the 4UB color data within a hardware (swtcl) vertex. 375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint coloroffset; 377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Offset of the 3UB specular color data within a hardware (swtcl) vertex. 380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint specoffset; 382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLboolean needproj; 384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* A maximum total of 20 elements per vertex: 3 floats for position, 3 389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * floats for normal, 4 floats for color, 4 bytes for secondary color, 390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 3 floats for each texture unit (9 floats total). 391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The position data is never actually stored here, so 3 elements could be 393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * trimmed out of the buffer. This number is only valid for vtxfmt! 394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define RADEON_MAX_VERTEX_SIZE 20 396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r100_context { 398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_context radeon; 399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Driver and hardware state management 401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r100_hw_state hw; 403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r100_state state; 404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Vertex buffers 406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_ioctl ioctl; 408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct radeon_store store; 409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* TCL stuff 411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLmatrix TexGenMatrix[RADEON_MAX_TEXTURE_UNITS]; 413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLboolean recheck_texgen[RADEON_MAX_TEXTURE_UNITS]; 414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLboolean TexGenNeedNormals[RADEON_MAX_TEXTURE_UNITS]; 415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint TexGenEnabled; 416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint NeedTexMatrix; 417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint TexMatColSwap; 418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLmatrix tmpmat[RADEON_MAX_TEXTURE_UNITS]; 419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint last_ReallyEnabled; 420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* radeon_tcl.c 422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r100_tcl_info tcl; 424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* radeon_swtcl.c 426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r100_swtcl_info swtcl; 428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLboolean using_hyperz; 430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLboolean texmicrotile; 431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Performance counters 433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint boxes; /* Draw performance boxes */ 435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint hardwareWentIdle; 436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint c_clears; 437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint c_drawWaits; 438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint c_textureSwaps; 439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint c_textureBytes; 440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint c_vertexBuffers; 441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R100_CONTEXT(ctx) ((r100ContextPtr)(ctx->DriverCtx)) 446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define RADEON_OLD_PACKETS 1 449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern GLboolean r100CreateContext( gl_api api, 451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const struct gl_config *glVisual, 452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org __DRIcontext *driContextPriv, 453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned major_version, 454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned minor_version, 455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t flags, 456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned *error, 457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void *sharedContextPrivate); 458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif /* __RADEON_CONTEXT_H__ */ 461