1428d7b3dSmrg/************************************************************************** 2428d7b3dSmrg * 3428d7b3dSmrg * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 4428d7b3dSmrg * All Rights Reserved. 5428d7b3dSmrg * 6428d7b3dSmrg * Permission is hereby granted, free of charge, to any person obtaining a 7428d7b3dSmrg * copy of this software and associated documentation files (the 8428d7b3dSmrg * "Software"), to deal in the Software without restriction, including 9428d7b3dSmrg * without limitation the rights to use, copy, modify, merge, publish, 10428d7b3dSmrg * distribute, sub license, and/or sell copies of the Software, and to 11428d7b3dSmrg * permit persons to whom the Software is furnished to do so, subject to 12428d7b3dSmrg * the following conditions: 13428d7b3dSmrg * 14428d7b3dSmrg * The above copyright notice and this permission notice (including the 15428d7b3dSmrg * next paragraph) shall be included in all copies or substantial portions 16428d7b3dSmrg * of the Software. 17428d7b3dSmrg * 18428d7b3dSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19428d7b3dSmrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20428d7b3dSmrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21428d7b3dSmrg * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22428d7b3dSmrg * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23428d7b3dSmrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24428d7b3dSmrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25428d7b3dSmrg * 26428d7b3dSmrg **************************************************************************/ 27428d7b3dSmrg 28428d7b3dSmrg#ifdef HAVE_CONFIG_H 29428d7b3dSmrg#include "config.h" 30428d7b3dSmrg#endif 31428d7b3dSmrg 32428d7b3dSmrg#include "xorg-server.h" 33428d7b3dSmrg#include "xf86.h" 34428d7b3dSmrg#include "intel.h" 35428d7b3dSmrg#include "intel_uxa.h" 36428d7b3dSmrg 37428d7b3dSmrg#include "i830_reg.h" 38428d7b3dSmrg 39428d7b3dSmrgvoid I830EmitInvarientState(ScrnInfoPtr scrn) 40428d7b3dSmrg{ 41428d7b3dSmrg intel_screen_private *intel = intel_get_screen_private(scrn); 42428d7b3dSmrg 43428d7b3dSmrg assert(intel->in_batch_atomic); 44428d7b3dSmrg 45428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_CUBE | MAP_UNIT(0)); 46428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_CUBE | MAP_UNIT(1)); 47428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_CUBE | MAP_UNIT(2)); 48428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_CUBE | MAP_UNIT(3)); 49428d7b3dSmrg 50428d7b3dSmrg OUT_BATCH(_3DSTATE_DFLT_DIFFUSE_CMD); 51428d7b3dSmrg OUT_BATCH(0); 52428d7b3dSmrg 53428d7b3dSmrg OUT_BATCH(_3DSTATE_DFLT_SPEC_CMD); 54428d7b3dSmrg OUT_BATCH(0); 55428d7b3dSmrg 56428d7b3dSmrg OUT_BATCH(_3DSTATE_DFLT_Z_CMD); 57428d7b3dSmrg OUT_BATCH(0); 58428d7b3dSmrg 59428d7b3dSmrg OUT_BATCH(_3DSTATE_FOG_MODE_CMD); 60428d7b3dSmrg OUT_BATCH(FOGFUNC_ENABLE | 61428d7b3dSmrg FOG_LINEAR_CONST | FOGSRC_INDEX_Z | ENABLE_FOG_DENSITY); 62428d7b3dSmrg OUT_BATCH(0); 63428d7b3dSmrg OUT_BATCH(0); 64428d7b3dSmrg 65428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_TEX_STREAM_CMD | 66428d7b3dSmrg MAP_UNIT(0) | 67428d7b3dSmrg DISABLE_TEX_STREAM_BUMP | 68428d7b3dSmrg ENABLE_TEX_STREAM_COORD_SET | 69428d7b3dSmrg TEX_STREAM_COORD_SET(0) | 70428d7b3dSmrg ENABLE_TEX_STREAM_MAP_IDX | TEX_STREAM_MAP_IDX(0)); 71428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_TEX_STREAM_CMD | 72428d7b3dSmrg MAP_UNIT(1) | 73428d7b3dSmrg DISABLE_TEX_STREAM_BUMP | 74428d7b3dSmrg ENABLE_TEX_STREAM_COORD_SET | 75428d7b3dSmrg TEX_STREAM_COORD_SET(1) | 76428d7b3dSmrg ENABLE_TEX_STREAM_MAP_IDX | TEX_STREAM_MAP_IDX(1)); 77428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_TEX_STREAM_CMD | 78428d7b3dSmrg MAP_UNIT(2) | 79428d7b3dSmrg DISABLE_TEX_STREAM_BUMP | 80428d7b3dSmrg ENABLE_TEX_STREAM_COORD_SET | 81428d7b3dSmrg TEX_STREAM_COORD_SET(2) | 82428d7b3dSmrg ENABLE_TEX_STREAM_MAP_IDX | TEX_STREAM_MAP_IDX(2)); 83428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_TEX_STREAM_CMD | 84428d7b3dSmrg MAP_UNIT(3) | 85428d7b3dSmrg DISABLE_TEX_STREAM_BUMP | 86428d7b3dSmrg ENABLE_TEX_STREAM_COORD_SET | 87428d7b3dSmrg TEX_STREAM_COORD_SET(3) | 88428d7b3dSmrg ENABLE_TEX_STREAM_MAP_IDX | TEX_STREAM_MAP_IDX(3)); 89428d7b3dSmrg 90428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_COORD_TRANSFORM); 91428d7b3dSmrg OUT_BATCH(DISABLE_TEX_TRANSFORM | TEXTURE_SET(0)); 92428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_COORD_TRANSFORM); 93428d7b3dSmrg OUT_BATCH(DISABLE_TEX_TRANSFORM | TEXTURE_SET(1)); 94428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_COORD_TRANSFORM); 95428d7b3dSmrg OUT_BATCH(DISABLE_TEX_TRANSFORM | TEXTURE_SET(2)); 96428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_COORD_TRANSFORM); 97428d7b3dSmrg OUT_BATCH(DISABLE_TEX_TRANSFORM | TEXTURE_SET(3)); 98428d7b3dSmrg 99428d7b3dSmrg OUT_BATCH(_3DSTATE_RASTER_RULES_CMD | 100428d7b3dSmrg ENABLE_POINT_RASTER_RULE | 101428d7b3dSmrg OGL_POINT_RASTER_RULE | 102428d7b3dSmrg ENABLE_LINE_STRIP_PROVOKE_VRTX | 103428d7b3dSmrg ENABLE_TRI_FAN_PROVOKE_VRTX | 104428d7b3dSmrg ENABLE_TRI_STRIP_PROVOKE_VRTX | 105428d7b3dSmrg LINE_STRIP_PROVOKE_VRTX(1) | 106428d7b3dSmrg TRI_FAN_PROVOKE_VRTX(2) | TRI_STRIP_PROVOKE_VRTX(2)); 107428d7b3dSmrg 108428d7b3dSmrg OUT_BATCH(_3DSTATE_SCISSOR_ENABLE_CMD | DISABLE_SCISSOR_RECT); 109428d7b3dSmrg 110428d7b3dSmrg OUT_BATCH(_3DSTATE_SCISSOR_RECT_0_CMD); 111428d7b3dSmrg OUT_BATCH(0); 112428d7b3dSmrg OUT_BATCH(0); 113428d7b3dSmrg 114428d7b3dSmrg OUT_BATCH(_3DSTATE_VERTEX_TRANSFORM); 115428d7b3dSmrg OUT_BATCH(DISABLE_VIEWPORT_TRANSFORM | DISABLE_PERSPECTIVE_DIVIDE); 116428d7b3dSmrg 117428d7b3dSmrg OUT_BATCH(_3DSTATE_W_STATE_CMD); 118428d7b3dSmrg OUT_BATCH(MAGIC_W_STATE_DWORD1); 119428d7b3dSmrg OUT_BATCH(0x3f800000 /* 1.0 in IEEE float */ ); 120428d7b3dSmrg 121428d7b3dSmrg OUT_BATCH(_3DSTATE_COLOR_FACTOR_CMD); 122428d7b3dSmrg OUT_BATCH(0x80808080); /* .5 required in alpha for GL_DOT3_RGBA_EXT */ 123428d7b3dSmrg 124428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_COORD_SETBIND_CMD); 125428d7b3dSmrg OUT_BATCH(TEXBIND_SET3(TEXCOORDSRC_VTXSET_3) | 126428d7b3dSmrg TEXBIND_SET2(TEXCOORDSRC_VTXSET_2) | 127428d7b3dSmrg TEXBIND_SET1(TEXCOORDSRC_VTXSET_1) | 128428d7b3dSmrg TEXBIND_SET0(TEXCOORDSRC_VTXSET_0)); 129428d7b3dSmrg 130428d7b3dSmrg /* copy from mesa */ 131428d7b3dSmrg OUT_BATCH(_3DSTATE_INDPT_ALPHA_BLEND_CMD | 132428d7b3dSmrg DISABLE_INDPT_ALPHA_BLEND | 133428d7b3dSmrg ENABLE_ALPHA_BLENDFUNC | ABLENDFUNC_ADD); 134428d7b3dSmrg 135428d7b3dSmrg OUT_BATCH(_3DSTATE_FOG_COLOR_CMD | 136428d7b3dSmrg FOG_COLOR_RED(0) | FOG_COLOR_GREEN(0) | FOG_COLOR_BLUE(0)); 137428d7b3dSmrg 138428d7b3dSmrg OUT_BATCH(_3DSTATE_CONST_BLEND_COLOR_CMD); 139428d7b3dSmrg OUT_BATCH(0); 140428d7b3dSmrg 141428d7b3dSmrg OUT_BATCH(_3DSTATE_MODES_1_CMD | 142428d7b3dSmrg ENABLE_COLR_BLND_FUNC | 143428d7b3dSmrg BLENDFUNC_ADD | 144428d7b3dSmrg ENABLE_SRC_BLND_FACTOR | 145428d7b3dSmrg SRC_BLND_FACT(BLENDFACTOR_ONE) | 146428d7b3dSmrg ENABLE_DST_BLND_FACTOR | DST_BLND_FACT(BLENDFACTOR_ZERO)); 147428d7b3dSmrg OUT_BATCH(_3DSTATE_MODES_2_CMD | ENABLE_GLOBAL_DEPTH_BIAS | GLOBAL_DEPTH_BIAS(0) | ENABLE_ALPHA_TEST_FUNC | ALPHA_TEST_FUNC(0) | /* always */ 148428d7b3dSmrg ALPHA_REF_VALUE(0)); 149428d7b3dSmrg OUT_BATCH(_3DSTATE_MODES_3_CMD | 150428d7b3dSmrg ENABLE_DEPTH_TEST_FUNC | 151428d7b3dSmrg DEPTH_TEST_FUNC(0x2) | /* COMPAREFUNC_LESS */ 152428d7b3dSmrg ENABLE_ALPHA_SHADE_MODE | 153428d7b3dSmrg ALPHA_SHADE_MODE(SHADE_MODE_LINEAR) | 154428d7b3dSmrg ENABLE_FOG_SHADE_MODE | 155428d7b3dSmrg FOG_SHADE_MODE(SHADE_MODE_LINEAR) | 156428d7b3dSmrg ENABLE_SPEC_SHADE_MODE | 157428d7b3dSmrg SPEC_SHADE_MODE(SHADE_MODE_LINEAR) | 158428d7b3dSmrg ENABLE_COLOR_SHADE_MODE | 159428d7b3dSmrg COLOR_SHADE_MODE(SHADE_MODE_LINEAR) | 160428d7b3dSmrg ENABLE_CULL_MODE | CULLMODE_NONE); 161428d7b3dSmrg 162428d7b3dSmrg OUT_BATCH(_3DSTATE_MODES_4_CMD | 163428d7b3dSmrg ENABLE_LOGIC_OP_FUNC | 164428d7b3dSmrg LOGIC_OP_FUNC(LOGICOP_COPY) | 165428d7b3dSmrg ENABLE_STENCIL_TEST_MASK | 166428d7b3dSmrg STENCIL_TEST_MASK(0xff) | 167428d7b3dSmrg ENABLE_STENCIL_WRITE_MASK | STENCIL_WRITE_MASK(0xff)); 168428d7b3dSmrg 169428d7b3dSmrg OUT_BATCH(_3DSTATE_STENCIL_TEST_CMD | 170428d7b3dSmrg ENABLE_STENCIL_PARMS | 171428d7b3dSmrg STENCIL_FAIL_OP(0) | /* STENCILOP_KEEP */ 172428d7b3dSmrg STENCIL_PASS_DEPTH_FAIL_OP(0) | /* STENCILOP_KEEP */ 173428d7b3dSmrg STENCIL_PASS_DEPTH_PASS_OP(0) | /* STENCILOP_KEEP */ 174428d7b3dSmrg ENABLE_STENCIL_TEST_FUNC | 175428d7b3dSmrg STENCIL_TEST_FUNC(0) | /* COMPAREFUNC_ALWAYS */ 176428d7b3dSmrg ENABLE_STENCIL_REF_VALUE | 177428d7b3dSmrg STENCIL_REF_VALUE(0)); 178428d7b3dSmrg 179428d7b3dSmrg OUT_BATCH(_3DSTATE_MODES_5_CMD | 180428d7b3dSmrg FLUSH_TEXTURE_CACHE | 181428d7b3dSmrg ENABLE_SPRITE_POINT_TEX | SPRITE_POINT_TEX_OFF | 182428d7b3dSmrg ENABLE_FIXED_LINE_WIDTH | FIXED_LINE_WIDTH(0x2) | /* 1.0 */ 183428d7b3dSmrg ENABLE_FIXED_POINT_WIDTH | FIXED_POINT_WIDTH(1)); 184428d7b3dSmrg 185428d7b3dSmrg OUT_BATCH(_3DSTATE_ENABLES_1_CMD | 186428d7b3dSmrg DISABLE_LOGIC_OP | 187428d7b3dSmrg DISABLE_STENCIL_TEST | 188428d7b3dSmrg DISABLE_DEPTH_BIAS | 189428d7b3dSmrg DISABLE_SPEC_ADD | 190428d7b3dSmrg DISABLE_FOG | 191428d7b3dSmrg DISABLE_ALPHA_TEST | ENABLE_COLOR_BLEND | DISABLE_DEPTH_TEST); 192428d7b3dSmrg OUT_BATCH(_3DSTATE_ENABLES_2_CMD | 193428d7b3dSmrg DISABLE_STENCIL_WRITE | 194428d7b3dSmrg ENABLE_TEX_CACHE | 195428d7b3dSmrg DISABLE_DITHER | 196428d7b3dSmrg ENABLE_COLOR_MASK | ENABLE_COLOR_WRITE | DISABLE_DEPTH_WRITE); 197428d7b3dSmrg 198428d7b3dSmrg OUT_BATCH(_3DSTATE_STIPPLE); 199428d7b3dSmrg 200428d7b3dSmrg /* Set default blend state */ 201428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_BLEND_OP_CMD(0) | 202428d7b3dSmrg TEXPIPE_COLOR | 203428d7b3dSmrg ENABLE_TEXOUTPUT_WRT_SEL | 204428d7b3dSmrg TEXOP_OUTPUT_CURRENT | 205428d7b3dSmrg DISABLE_TEX_CNTRL_STAGE | 206428d7b3dSmrg TEXOP_SCALE_1X | 207428d7b3dSmrg TEXOP_MODIFY_PARMS | TEXOP_LAST_STAGE | TEXBLENDOP_ARG1); 208428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_BLEND_OP_CMD(0) | 209428d7b3dSmrg TEXPIPE_ALPHA | 210428d7b3dSmrg ENABLE_TEXOUTPUT_WRT_SEL | 211428d7b3dSmrg TEXOP_OUTPUT_CURRENT | 212428d7b3dSmrg TEXOP_SCALE_1X | TEXOP_MODIFY_PARMS | TEXBLENDOP_ARG1); 213428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_BLEND_ARG_CMD(0) | 214428d7b3dSmrg TEXPIPE_COLOR | 215428d7b3dSmrg TEXBLEND_ARG1 | 216428d7b3dSmrg TEXBLENDARG_MODIFY_PARMS | TEXBLENDARG_DIFFUSE); 217428d7b3dSmrg OUT_BATCH(_3DSTATE_MAP_BLEND_ARG_CMD(0) | 218428d7b3dSmrg TEXPIPE_ALPHA | 219428d7b3dSmrg TEXBLEND_ARG1 | 220428d7b3dSmrg TEXBLENDARG_MODIFY_PARMS | TEXBLENDARG_DIFFUSE); 221428d7b3dSmrg 222428d7b3dSmrg OUT_BATCH(_3DSTATE_AA_CMD | 223428d7b3dSmrg AA_LINE_ECAAR_WIDTH_ENABLE | 224428d7b3dSmrg AA_LINE_ECAAR_WIDTH_1_0 | 225428d7b3dSmrg AA_LINE_REGION_WIDTH_ENABLE | 226428d7b3dSmrg AA_LINE_REGION_WIDTH_1_0 | AA_LINE_DISABLE); 227428d7b3dSmrg} 228