1fa225cbcSrjs/************************************************************************** 2fa225cbcSrjs * 3fa225cbcSrjs * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 4fa225cbcSrjs * All Rights Reserved. 5fa225cbcSrjs * 6fa225cbcSrjs * Permission is hereby granted, free of charge, to any person obtaining a 7fa225cbcSrjs * copy of this software and associated documentation files (the 8fa225cbcSrjs * "Software"), to deal in the Software without restriction, including 9fa225cbcSrjs * without limitation the rights to use, copy, modify, merge, publish, 10fa225cbcSrjs * distribute, sub license, and/or sell copies of the Software, and to 11fa225cbcSrjs * permit persons to whom the Software is furnished to do so, subject to 12fa225cbcSrjs * the following conditions: 13fa225cbcSrjs * 14fa225cbcSrjs * The above copyright notice and this permission notice (including the 15fa225cbcSrjs * next paragraph) shall be included in all copies or substantial portions 16fa225cbcSrjs * of the Software. 17fa225cbcSrjs * 18fa225cbcSrjs * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19fa225cbcSrjs * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20fa225cbcSrjs * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21fa225cbcSrjs * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22fa225cbcSrjs * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23fa225cbcSrjs * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24fa225cbcSrjs * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25fa225cbcSrjs * 26fa225cbcSrjs **************************************************************************/ 27fa225cbcSrjs 28fa225cbcSrjs#ifdef HAVE_CONFIG_H 29fa225cbcSrjs#include "config.h" 30fa225cbcSrjs#endif 31fa225cbcSrjs 3253ba5c8bSmrg#include "xorg-server.h" 33fa225cbcSrjs#include "xf86.h" 34fa225cbcSrjs#include "i830.h" 35fa225cbcSrjs 36fa225cbcSrjs#include "i830_reg.h" 37fa225cbcSrjs 38fa225cbcSrjsvoid I830EmitInvarientState( ScrnInfoPtr pScrn ) 39fa225cbcSrjs{ 40fa225cbcSrjs I830Ptr pI830 = I830PTR(pScrn); 41fa225cbcSrjs 42fa225cbcSrjs BEGIN_BATCH(58); 43fa225cbcSrjs 44fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_CUBE | MAP_UNIT(0)); 45fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_CUBE | MAP_UNIT(1)); 46fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_CUBE | MAP_UNIT(2)); 47fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_CUBE | MAP_UNIT(3)); 48fa225cbcSrjs 49fa225cbcSrjs OUT_BATCH(_3DSTATE_DFLT_DIFFUSE_CMD); 50fa225cbcSrjs OUT_BATCH(0); 51fa225cbcSrjs 52fa225cbcSrjs OUT_BATCH(_3DSTATE_DFLT_SPEC_CMD); 53fa225cbcSrjs OUT_BATCH(0); 54fa225cbcSrjs 55fa225cbcSrjs OUT_BATCH(_3DSTATE_DFLT_Z_CMD); 56fa225cbcSrjs OUT_BATCH(0); 57fa225cbcSrjs 58fa225cbcSrjs OUT_BATCH(_3DSTATE_FOG_MODE_CMD); 59fa225cbcSrjs OUT_BATCH(FOGFUNC_ENABLE | 60fa225cbcSrjs FOG_LINEAR_CONST | 61fa225cbcSrjs FOGSRC_INDEX_Z | 62fa225cbcSrjs ENABLE_FOG_DENSITY); 63fa225cbcSrjs OUT_BATCH(0); 64fa225cbcSrjs OUT_BATCH(0); 65fa225cbcSrjs 66fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_TEX_STREAM_CMD | 67fa225cbcSrjs MAP_UNIT(0) | 68fa225cbcSrjs DISABLE_TEX_STREAM_BUMP | 69fa225cbcSrjs ENABLE_TEX_STREAM_COORD_SET | 70fa225cbcSrjs TEX_STREAM_COORD_SET(0) | 71fa225cbcSrjs ENABLE_TEX_STREAM_MAP_IDX | TEX_STREAM_MAP_IDX(0)); 72fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_TEX_STREAM_CMD | 73fa225cbcSrjs MAP_UNIT(1) | 74fa225cbcSrjs DISABLE_TEX_STREAM_BUMP | 75fa225cbcSrjs ENABLE_TEX_STREAM_COORD_SET | 76fa225cbcSrjs TEX_STREAM_COORD_SET(1) | 77fa225cbcSrjs ENABLE_TEX_STREAM_MAP_IDX | TEX_STREAM_MAP_IDX(1)); 78fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_TEX_STREAM_CMD | 79fa225cbcSrjs MAP_UNIT(2) | 80fa225cbcSrjs DISABLE_TEX_STREAM_BUMP | 81fa225cbcSrjs ENABLE_TEX_STREAM_COORD_SET | 82fa225cbcSrjs TEX_STREAM_COORD_SET(2) | 83fa225cbcSrjs ENABLE_TEX_STREAM_MAP_IDX | TEX_STREAM_MAP_IDX(2)); 84fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_TEX_STREAM_CMD | 85fa225cbcSrjs MAP_UNIT(3) | 86fa225cbcSrjs DISABLE_TEX_STREAM_BUMP | 87fa225cbcSrjs ENABLE_TEX_STREAM_COORD_SET | 88fa225cbcSrjs TEX_STREAM_COORD_SET(3) | 89fa225cbcSrjs ENABLE_TEX_STREAM_MAP_IDX | TEX_STREAM_MAP_IDX(3)); 90fa225cbcSrjs 91fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_COORD_TRANSFORM); 92fa225cbcSrjs OUT_BATCH(DISABLE_TEX_TRANSFORM | TEXTURE_SET(0)); 93fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_COORD_TRANSFORM); 94fa225cbcSrjs OUT_BATCH(DISABLE_TEX_TRANSFORM | TEXTURE_SET(1)); 95fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_COORD_TRANSFORM); 96fa225cbcSrjs OUT_BATCH(DISABLE_TEX_TRANSFORM | TEXTURE_SET(2)); 97fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_COORD_TRANSFORM); 98fa225cbcSrjs OUT_BATCH(DISABLE_TEX_TRANSFORM | TEXTURE_SET(3)); 99fa225cbcSrjs 100fa225cbcSrjs OUT_BATCH(_3DSTATE_RASTER_RULES_CMD | 101fa225cbcSrjs ENABLE_POINT_RASTER_RULE | 102fa225cbcSrjs OGL_POINT_RASTER_RULE | 103fa225cbcSrjs ENABLE_LINE_STRIP_PROVOKE_VRTX | 104fa225cbcSrjs ENABLE_TRI_FAN_PROVOKE_VRTX | 105fa225cbcSrjs ENABLE_TRI_STRIP_PROVOKE_VRTX | 106fa225cbcSrjs LINE_STRIP_PROVOKE_VRTX(1) | 107fa225cbcSrjs TRI_FAN_PROVOKE_VRTX(2) | 108fa225cbcSrjs TRI_STRIP_PROVOKE_VRTX(2)); 109fa225cbcSrjs 110fa225cbcSrjs OUT_BATCH(_3DSTATE_SCISSOR_ENABLE_CMD | 111fa225cbcSrjs DISABLE_SCISSOR_RECT); 112fa225cbcSrjs 113fa225cbcSrjs OUT_BATCH(_3DSTATE_SCISSOR_RECT_0_CMD); 114fa225cbcSrjs OUT_BATCH(0); 115fa225cbcSrjs OUT_BATCH(0); 116fa225cbcSrjs 117fa225cbcSrjs OUT_BATCH(_3DSTATE_VERTEX_TRANSFORM); 118fa225cbcSrjs OUT_BATCH(DISABLE_VIEWPORT_TRANSFORM | DISABLE_PERSPECTIVE_DIVIDE); 119fa225cbcSrjs 120fa225cbcSrjs OUT_BATCH(_3DSTATE_W_STATE_CMD); 121fa225cbcSrjs OUT_BATCH(MAGIC_W_STATE_DWORD1); 122fa225cbcSrjs OUT_BATCH(0x3f800000 /* 1.0 in IEEE float */ ); 123fa225cbcSrjs 124fa225cbcSrjs OUT_BATCH(_3DSTATE_COLOR_FACTOR_CMD); 125fa225cbcSrjs OUT_BATCH(0x80808080); /* .5 required in alpha for GL_DOT3_RGBA_EXT */ 126fa225cbcSrjs 127fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_COORD_SETBIND_CMD); 128fa225cbcSrjs OUT_BATCH(TEXBIND_SET3(TEXCOORDSRC_VTXSET_3) | 129fa225cbcSrjs TEXBIND_SET2(TEXCOORDSRC_VTXSET_2) | 130fa225cbcSrjs TEXBIND_SET1(TEXCOORDSRC_VTXSET_1) | 131fa225cbcSrjs TEXBIND_SET0(TEXCOORDSRC_VTXSET_0)); 132fa225cbcSrjs 133fa225cbcSrjs /* copy from mesa */ 134fa225cbcSrjs OUT_BATCH(_3DSTATE_INDPT_ALPHA_BLEND_CMD | 135fa225cbcSrjs DISABLE_INDPT_ALPHA_BLEND | 136fa225cbcSrjs ENABLE_ALPHA_BLENDFUNC | 137fa225cbcSrjs ABLENDFUNC_ADD); 138fa225cbcSrjs 139fa225cbcSrjs OUT_BATCH(_3DSTATE_FOG_COLOR_CMD | 140fa225cbcSrjs FOG_COLOR_RED(0) | 141fa225cbcSrjs FOG_COLOR_GREEN(0) | 142fa225cbcSrjs FOG_COLOR_BLUE(0)); 143fa225cbcSrjs 144fa225cbcSrjs OUT_BATCH(_3DSTATE_CONST_BLEND_COLOR_CMD); 145fa225cbcSrjs OUT_BATCH(0); 146fa225cbcSrjs 147fa225cbcSrjs OUT_BATCH(_3DSTATE_MODES_1_CMD | 148fa225cbcSrjs ENABLE_COLR_BLND_FUNC | 149fa225cbcSrjs BLENDFUNC_ADD | 150fa225cbcSrjs ENABLE_SRC_BLND_FACTOR | 151fa225cbcSrjs SRC_BLND_FACT(BLENDFACTOR_ONE) | 152fa225cbcSrjs ENABLE_DST_BLND_FACTOR | 153fa225cbcSrjs DST_BLND_FACT(BLENDFACTOR_ZERO)); 154fa225cbcSrjs OUT_BATCH(_3DSTATE_MODES_2_CMD | 155fa225cbcSrjs ENABLE_GLOBAL_DEPTH_BIAS | 156fa225cbcSrjs GLOBAL_DEPTH_BIAS(0) | 157fa225cbcSrjs ENABLE_ALPHA_TEST_FUNC| 158fa225cbcSrjs ALPHA_TEST_FUNC(0) | /* always */ 159fa225cbcSrjs ALPHA_REF_VALUE(0)); 160fa225cbcSrjs OUT_BATCH(_3DSTATE_MODES_3_CMD | 161fa225cbcSrjs ENABLE_DEPTH_TEST_FUNC | 162fa225cbcSrjs DEPTH_TEST_FUNC(0x2) | /* COMPAREFUNC_LESS */ 163fa225cbcSrjs ENABLE_ALPHA_SHADE_MODE | 164fa225cbcSrjs ALPHA_SHADE_MODE(SHADE_MODE_LINEAR) | 165fa225cbcSrjs ENABLE_FOG_SHADE_MODE | 166fa225cbcSrjs FOG_SHADE_MODE(SHADE_MODE_LINEAR) | 167fa225cbcSrjs ENABLE_SPEC_SHADE_MODE | 168fa225cbcSrjs SPEC_SHADE_MODE(SHADE_MODE_LINEAR) | 169fa225cbcSrjs ENABLE_COLOR_SHADE_MODE | 170fa225cbcSrjs COLOR_SHADE_MODE(SHADE_MODE_LINEAR) | 171fa225cbcSrjs ENABLE_CULL_MODE | CULLMODE_NONE); 172fa225cbcSrjs 173fa225cbcSrjs OUT_BATCH(_3DSTATE_MODES_4_CMD | 174fa225cbcSrjs ENABLE_LOGIC_OP_FUNC | 175fa225cbcSrjs LOGIC_OP_FUNC(LOGICOP_COPY) | 176fa225cbcSrjs ENABLE_STENCIL_TEST_MASK | 177fa225cbcSrjs STENCIL_TEST_MASK(0xff) | 178fa225cbcSrjs ENABLE_STENCIL_WRITE_MASK | 179fa225cbcSrjs STENCIL_WRITE_MASK(0xff)); 180fa225cbcSrjs 181fa225cbcSrjs OUT_BATCH(_3DSTATE_STENCIL_TEST_CMD | 182fa225cbcSrjs ENABLE_STENCIL_PARMS | 183fa225cbcSrjs STENCIL_FAIL_OP(0) | /* STENCILOP_KEEP */ 184fa225cbcSrjs STENCIL_PASS_DEPTH_FAIL_OP(0) | /* STENCILOP_KEEP */ 185fa225cbcSrjs STENCIL_PASS_DEPTH_PASS_OP(0) | /* STENCILOP_KEEP */ 186fa225cbcSrjs ENABLE_STENCIL_TEST_FUNC | 187fa225cbcSrjs STENCIL_TEST_FUNC(0) | /* COMPAREFUNC_ALWAYS */ 188fa225cbcSrjs ENABLE_STENCIL_REF_VALUE | 189fa225cbcSrjs STENCIL_REF_VALUE(0)); 190fa225cbcSrjs 191fa225cbcSrjs OUT_BATCH(_3DSTATE_MODES_5_CMD | 192fa225cbcSrjs FLUSH_TEXTURE_CACHE | 193fa225cbcSrjs ENABLE_SPRITE_POINT_TEX | 194fa225cbcSrjs SPRITE_POINT_TEX_OFF | 195fa225cbcSrjs ENABLE_FIXED_LINE_WIDTH | 196fa225cbcSrjs FIXED_LINE_WIDTH(0x2) | /* 1.0 */ 197fa225cbcSrjs ENABLE_FIXED_POINT_WIDTH | 198fa225cbcSrjs FIXED_POINT_WIDTH(1)); 199fa225cbcSrjs 200fa225cbcSrjs OUT_BATCH(_3DSTATE_ENABLES_1_CMD | 201fa225cbcSrjs DISABLE_LOGIC_OP | 202fa225cbcSrjs DISABLE_STENCIL_TEST | 203fa225cbcSrjs DISABLE_DEPTH_BIAS | 204fa225cbcSrjs DISABLE_SPEC_ADD | 205fa225cbcSrjs DISABLE_FOG | 206fa225cbcSrjs DISABLE_ALPHA_TEST | 207fa225cbcSrjs ENABLE_COLOR_BLEND | 208fa225cbcSrjs DISABLE_DEPTH_TEST); 209fa225cbcSrjs OUT_BATCH(_3DSTATE_ENABLES_2_CMD | 210fa225cbcSrjs DISABLE_STENCIL_WRITE | 211fa225cbcSrjs ENABLE_TEX_CACHE | 212fa225cbcSrjs DISABLE_DITHER | 213fa225cbcSrjs ENABLE_COLOR_MASK | 214fa225cbcSrjs ENABLE_COLOR_WRITE | 215fa225cbcSrjs DISABLE_DEPTH_WRITE); 216fa225cbcSrjs 217fa225cbcSrjs OUT_BATCH(_3DSTATE_STIPPLE); 218fa225cbcSrjs 219fa225cbcSrjs /* Set default blend state */ 220fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_BLEND_OP_CMD(0) | 221fa225cbcSrjs TEXPIPE_COLOR | 222fa225cbcSrjs ENABLE_TEXOUTPUT_WRT_SEL | 223fa225cbcSrjs TEXOP_OUTPUT_CURRENT | 224fa225cbcSrjs DISABLE_TEX_CNTRL_STAGE | 225fa225cbcSrjs TEXOP_SCALE_1X | 226fa225cbcSrjs TEXOP_MODIFY_PARMS | 227fa225cbcSrjs TEXOP_LAST_STAGE | TEXBLENDOP_ARG1); 228fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_BLEND_OP_CMD(0) | 229fa225cbcSrjs TEXPIPE_ALPHA | 230fa225cbcSrjs ENABLE_TEXOUTPUT_WRT_SEL | 231fa225cbcSrjs TEXOP_OUTPUT_CURRENT | 232fa225cbcSrjs TEXOP_SCALE_1X | 233fa225cbcSrjs TEXOP_MODIFY_PARMS | TEXBLENDOP_ARG1); 234fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_BLEND_ARG_CMD(0) | 235fa225cbcSrjs TEXPIPE_COLOR | 236fa225cbcSrjs TEXBLEND_ARG1 | 237fa225cbcSrjs TEXBLENDARG_MODIFY_PARMS | 238fa225cbcSrjs TEXBLENDARG_DIFFUSE); 239fa225cbcSrjs OUT_BATCH(_3DSTATE_MAP_BLEND_ARG_CMD(0) | 240fa225cbcSrjs TEXPIPE_ALPHA | 241fa225cbcSrjs TEXBLEND_ARG1 | 242fa225cbcSrjs TEXBLENDARG_MODIFY_PARMS | 243fa225cbcSrjs TEXBLENDARG_DIFFUSE); 244fa225cbcSrjs 245fa225cbcSrjs OUT_BATCH(_3DSTATE_AA_CMD | 246fa225cbcSrjs AA_LINE_ECAAR_WIDTH_ENABLE | 247fa225cbcSrjs AA_LINE_ECAAR_WIDTH_1_0 | 248fa225cbcSrjs AA_LINE_REGION_WIDTH_ENABLE | 249fa225cbcSrjs AA_LINE_REGION_WIDTH_1_0 | 250fa225cbcSrjs AA_LINE_DISABLE); 251fa225cbcSrjs 252fa225cbcSrjs ADVANCE_BATCH(); 253fa225cbcSrjs} 254