r200_state_init.c revision 0c0a55a21158e1f97cf140c0a1c0531c06751873
1adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* 2adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellCopyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. 3adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 4adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellThe Weather Channel (TM) funded Tungsten Graphics to develop the 5adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellinitial release of the Radeon 8500 driver under the XFree86 license. 6adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellThis notice must be preserved. 7adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 8adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellPermission is hereby granted, free of charge, to any person obtaining 9adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwella copy of this software and associated documentation files (the 10adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell"Software"), to deal in the Software without restriction, including 11adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellwithout limitation the rights to use, copy, modify, merge, publish, 12adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwelldistribute, sublicense, and/or sell copies of the Software, and to 13adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellpermit persons to whom the Software is furnished to do so, subject to 14adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellthe following conditions: 15adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 16adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellThe above copyright notice and this permission notice (including the 17adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellnext paragraph) shall be included in all copies or substantial 18adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellportions of the Software. 19adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 20adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 23adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellIN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE 24adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 25adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 26adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell*/ 28adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 29adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* 30adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * Authors: 31adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * Keith Whitwell <keith@tungstengraphics.com> 32adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 33adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 34ecadb51bbcb972a79f3ed79e65a7986b9396e757Brian Paul#include "main/glheader.h" 35ecadb51bbcb972a79f3ed79e65a7986b9396e757Brian Paul#include "main/imports.h" 36ecadb51bbcb972a79f3ed79e65a7986b9396e757Brian Paul#include "main/enums.h" 37ecadb51bbcb972a79f3ed79e65a7986b9396e757Brian Paul#include "main/colormac.h" 38ecadb51bbcb972a79f3ed79e65a7986b9396e757Brian Paul#include "main/api_arrayelt.h" 39adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 40adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "swrast/swrast.h" 4180c88304fc9d09531b2530b74973821e47b46753Keith Whitwell#include "vbo/vbo.h" 42adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "tnl/tnl.h" 43adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "tnl/t_pipeline.h" 44adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "swrast_setup/swrast_setup.h" 45adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 46adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "r200_context.h" 47adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "r200_ioctl.h" 48adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "r200_state.h" 49adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "r200_tcl.h" 50adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "r200_tex.h" 51adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "r200_swtcl.h" 52adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 53273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane#include "xmlpool.h" 54273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane 55adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* ============================================================= 56adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * State initialization 57adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 58adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 59adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellvoid r200PrintDirty( r200ContextPtr rmesa, const char *msg ) 60adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell{ 61b6e486906968d82c7b8a869d7ab51697a7cce80cDave Airlie struct radeon_state_atom *l; 62adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 63adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell fprintf(stderr, msg); 64adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell fprintf(stderr, ": "); 65adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 660c8f8d3dc9d60ed34eeca7f3606651420a81753cEric Anholt foreach(l, &rmesa->hw.atomlist) { 670c8f8d3dc9d60ed34eeca7f3606651420a81753cEric Anholt if (l->dirty || rmesa->hw.all_dirty) 680c8f8d3dc9d60ed34eeca7f3606651420a81753cEric Anholt fprintf(stderr, "%s, ", l->name); 69adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } 70adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 71adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell fprintf(stderr, "\n"); 72adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell} 73adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 74adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstatic int cmdpkt( int id ) 75adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell{ 76ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_radeon_cmd_header_t h; 77adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.i = 0; 78adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.packet.cmd_type = RADEON_CMD_PACKET; 79adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.packet.packet_id = id; 80adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell return h.i; 81adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell} 82adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 83adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstatic int cmdvec( int offset, int stride, int count ) 84adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell{ 85ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_radeon_cmd_header_t h; 86adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.i = 0; 87adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.vectors.cmd_type = RADEON_CMD_VECTORS; 88adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.vectors.offset = offset; 89adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.vectors.stride = stride; 90adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.vectors.count = count; 91adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell return h.i; 92adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell} 93adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 9498c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger/* warning: the count here is divided by 4 compared to other cmds 9598c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger (so it doesn't exceed the char size)! */ 9698c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheideggerstatic int cmdveclinear( int offset, int count ) 9798c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger{ 9898c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger drm_radeon_cmd_header_t h; 9998c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger h.i = 0; 10098c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger h.veclinear.cmd_type = RADEON_CMD_VECLINEAR; 10198c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger h.veclinear.addr_lo = offset & 0xff; 10298c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger h.veclinear.addr_hi = (offset & 0xff00) >> 8; 10398c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger h.veclinear.count = count; 10498c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger return h.i; 10598c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger} 10698c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger 107adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstatic int cmdscl( int offset, int stride, int count ) 108adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell{ 109ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_radeon_cmd_header_t h; 110adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.i = 0; 111adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.scalars.cmd_type = RADEON_CMD_SCALARS; 112adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.scalars.offset = offset; 113adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.scalars.stride = stride; 114adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.scalars.count = count; 115adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell return h.i; 116adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell} 117adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 118adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstatic int cmdscl2( int offset, int stride, int count ) 119adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell{ 120ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_radeon_cmd_header_t h; 121adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.i = 0; 122adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.scalars.cmd_type = RADEON_CMD_SCALARS2; 123adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.scalars.offset = offset - 0x100; 124adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.scalars.stride = stride; 125adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell h.scalars.count = count; 126adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell return h.i; 127adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell} 128adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 129adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CHECK( NM, FLAG ) \ 1304637235183b80963536f2364e4d50fcb894886ddDave Airliestatic int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom) \ 131adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell{ \ 13236603539ccdb1c507724d8a1c314e6c9cc9863d9Roland Scheidegger r200ContextPtr rmesa = R200_CONTEXT(ctx); \ 13336603539ccdb1c507724d8a1c314e6c9cc9863d9Roland Scheidegger (void) rmesa; \ 1340c0a55a21158e1f97cf140c0a1c0531c06751873Dave Airlie return (FLAG) ? atom->cmd_size : 0; \ 135adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell} 136adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 137adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_CHECK( NM, FLAG ) \ 1384637235183b80963536f2364e4d50fcb894886ddDave Airliestatic int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom) \ 1394637235183b80963536f2364e4d50fcb894886ddDave Airlie{ \ 1404637235183b80963536f2364e4d50fcb894886ddDave Airlie r200ContextPtr rmesa = R200_CONTEXT(ctx); \ 1410c0a55a21158e1f97cf140c0a1c0531c06751873Dave Airlie return (!rmesa->radeon.TclFallback && !ctx->VertexProgram._Enabled && (FLAG)) ? atom->cmd_size : 0; \ 14298c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger} 14398c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger 14498c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger#define TCL_OR_VP_CHECK( NM, FLAG ) \ 1454637235183b80963536f2364e4d50fcb894886ddDave Airliestatic int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom ) \ 14698c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger{ \ 14798c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger r200ContextPtr rmesa = R200_CONTEXT(ctx); \ 1480c0a55a21158e1f97cf140c0a1c0531c06751873Dave Airlie return (!rmesa->radeon.TclFallback && (FLAG)) ? atom->cmd_size : 0; \ 149adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell} 150adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 15198c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger#define VP_CHECK( NM, FLAG ) \ 1524637235183b80963536f2364e4d50fcb894886ddDave Airliestatic int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom ) \ 1534637235183b80963536f2364e4d50fcb894886ddDave Airlie{ \ 1544637235183b80963536f2364e4d50fcb894886ddDave Airlie r200ContextPtr rmesa = R200_CONTEXT(ctx); \ 1554637235183b80963536f2364e4d50fcb894886ddDave Airlie (void) atom; \ 1560c0a55a21158e1f97cf140c0a1c0531c06751873Dave Airlie return (!rmesa->radeon.TclFallback && ctx->VertexProgram._Enabled && (FLAG)) ? atom->cmd_size : 0; \ 15798c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger} 158adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 159adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellCHECK( always, GL_TRUE ) 160bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon SmirlCHECK( never, GL_FALSE ) 161adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellCHECK( tex_any, ctx->Texture._EnabledUnits ) 162f20917de5bd2b1fc152e74304d3649a1f6042422Roland ScheideggerCHECK( tf, (ctx->Texture._EnabledUnits && !ctx->ATIFragmentShader._Enabled) ); 1634637235183b80963536f2364e4d50fcb894886ddDave AirlieCHECK( tex_pair, (rmesa->state.texture.unit[atom->idx].unitneeded | rmesa->state.texture.unit[atom->idx & ~1].unitneeded) ) 1644637235183b80963536f2364e4d50fcb894886ddDave AirlieCHECK( tex, rmesa->state.texture.unit[atom->idx].unitneeded ) 165f20917de5bd2b1fc152e74304d3649a1f6042422Roland ScheideggerCHECK( pix_zero, !ctx->ATIFragmentShader._Enabled ) 1664637235183b80963536f2364e4d50fcb894886ddDave Airlie CHECK( texenv, (rmesa->state.envneeded & (1 << (atom->idx)) && !ctx->ATIFragmentShader._Enabled) ) 167f20917de5bd2b1fc152e74304d3649a1f6042422Roland ScheideggerCHECK( afs_pass1, (ctx->ATIFragmentShader._Enabled && (ctx->ATIFragmentShader.Current->NumPasses > 1)) ) 168f20917de5bd2b1fc152e74304d3649a1f6042422Roland ScheideggerCHECK( afs, ctx->ATIFragmentShader._Enabled ) 1694637235183b80963536f2364e4d50fcb894886ddDave AirlieCHECK( tex_cube, rmesa->state.texture.unit[atom->idx].unitneeded & TEXTURE_CUBE_BIT ) 170014bfda235e5315baf84b1d47329be167dd2ec7fRoland ScheideggerTCL_CHECK( tcl_fog, ctx->Fog.Enabled ) 171adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellTCL_CHECK( tcl, GL_TRUE ) 1724637235183b80963536f2364e4d50fcb894886ddDave AirlieTCL_CHECK( tcl_tex, rmesa->state.texture.unit[atom->idx].unitneeded ) 173adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellTCL_CHECK( tcl_lighting, ctx->Light.Enabled ) 1744637235183b80963536f2364e4d50fcb894886ddDave AirlieTCL_CHECK( tcl_light, ctx->Light.Enabled && ctx->Light.Light[atom->idx].Enabled ) 1754637235183b80963536f2364e4d50fcb894886ddDave AirlieTCL_OR_VP_CHECK( tcl_ucp, (ctx->Transform.ClipPlanesEnabled & (1 << (atom->idx))) ) 17698c791b543c4ba86b8bb54488bd872b33b10b1aaRoland ScheideggerTCL_OR_VP_CHECK( tcl_or_vp, GL_TRUE ) 17798c791b543c4ba86b8bb54488bd872b33b10b1aaRoland ScheideggerVP_CHECK( tcl_vp, GL_TRUE ) 17898c791b543c4ba86b8bb54488bd872b33b10b1aaRoland ScheideggerVP_CHECK( tcl_vp_size, ctx->VertexProgram.Current->Base.NumNativeInstructions > 64 ) 17998c791b543c4ba86b8bb54488bd872b33b10b1aaRoland ScheideggerVP_CHECK( tcl_vpp_size, ctx->VertexProgram.Current->Base.NumNativeParameters > 96 ) 180adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 181adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 182adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* Initialize the context's hardware state. 183adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 184adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellvoid r200InitState( r200ContextPtr rmesa ) 185adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell{ 1864637235183b80963536f2364e4d50fcb894886ddDave Airlie GLcontext *ctx = rmesa->radeon.glCtx; 187adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint color_fmt, depth_fmt, i; 188fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul GLint drawPitch, drawOffset; 189adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 1904637235183b80963536f2364e4d50fcb894886ddDave Airlie switch ( rmesa->radeon.radeonScreen->cpp ) { 191adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell case 2: 192adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell color_fmt = R200_COLOR_FORMAT_RGB565; 193adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell break; 194adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell case 4: 195adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell color_fmt = R200_COLOR_FORMAT_ARGB8888; 196adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell break; 197adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell default: 198adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell fprintf( stderr, "Error: Unsupported pixel depth... exiting\n" ); 199adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell exit( -1 ); 200adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } 201adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 202d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.color.clear = 0x00000000; 203adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 204adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell switch ( ctx->Visual.depthBits ) { 205adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell case 16: 206d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.depth.clear = 0x0000ffff; 207d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.depth.scale = 1.0 / (GLfloat)0xffff; 208adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell depth_fmt = R200_DEPTH_FORMAT_16BIT_INT_Z; 209d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.stencil.clear = 0x00000000; 210adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell break; 211adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell case 24: 212d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.depth.clear = 0x00ffffff; 213d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.depth.scale = 1.0 / (GLfloat)0xffffff; 214adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell depth_fmt = R200_DEPTH_FORMAT_24BIT_INT_Z; 215d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.stencil.clear = 0xffff0000; 216adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell break; 217adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell default: 218adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell fprintf( stderr, "Error: Unsupported depth %d... exiting\n", 219adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Visual.depthBits ); 220adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell exit( -1 ); 221adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } 222adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 223adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Only have hw stencil when depth buffer is 24 bits deep */ 224d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.stencil.hwBuffer = ( ctx->Visual.stencilBits > 0 && 225adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Visual.depthBits == 24 ); 226adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 2274637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.Fallback = 0; 228adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 2294637235183b80963536f2364e4d50fcb894886ddDave Airlie if ( ctx->Visual.doubleBufferMode && rmesa->radeon.sarea->pfCurrentPage == 0 ) { 2304637235183b80963536f2364e4d50fcb894886ddDave Airlie drawOffset = rmesa->radeon.radeonScreen->backOffset; 2314637235183b80963536f2364e4d50fcb894886ddDave Airlie drawPitch = rmesa->radeon.radeonScreen->backPitch; 232fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul } else { 2334637235183b80963536f2364e4d50fcb894886ddDave Airlie drawOffset = rmesa->radeon.radeonScreen->frontOffset; 2344637235183b80963536f2364e4d50fcb894886ddDave Airlie drawPitch = rmesa->radeon.radeonScreen->frontPitch; 235fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul } 236fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul#if 000 237fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul if ( ctx->Visual.doubleBufferMode && rmesa->sarea->pfCurrentPage == 0 ) { 238d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.color.drawOffset = rmesa->radeon.radeonScreen->backOffset; 239d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.color.drawPitch = rmesa->radeon.radeonScreen->backPitch; 240adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } else { 241d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.color.drawOffset = rmesa->radeon.radeonScreen->frontOffset; 242d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.color.drawPitch = rmesa->radeon.radeonScreen->frontPitch; 243adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } 244adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 245d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->state.pixel.readOffset = rmesa->radeon.state.color.drawOffset; 246d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->state.pixel.readPitch = rmesa->radeon.state.color.drawPitch; 247fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul#endif 248adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 2496f3cc6a5226fd4b5d44cca91e2f76216ecaff831Eric Anholt rmesa->hw.max_state_size = 0; 250adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 251adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define ALLOC_STATE( ATOM, CHK, SZ, NM, IDX ) \ 252adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell do { \ 253adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ATOM.cmd_size = SZ; \ 2544637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->hw.ATOM.cmd = (GLuint *)CALLOC(SZ * sizeof(int)); \ 2554637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->hw.ATOM.lastcmd = (GLuint *)CALLOC(SZ * sizeof(int)); \ 256adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ATOM.name = NM; \ 257adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ATOM.idx = IDX; \ 2580c8f8d3dc9d60ed34eeca7f3606651420a81753cEric Anholt rmesa->hw.ATOM.check = check_##CHK; \ 2590c8f8d3dc9d60ed34eeca7f3606651420a81753cEric Anholt rmesa->hw.ATOM.dirty = GL_FALSE; \ 2606f3cc6a5226fd4b5d44cca91e2f76216ecaff831Eric Anholt rmesa->hw.max_state_size += SZ * sizeof(int); \ 261adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } while (0) 262f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger 263f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger 264adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Allocate state buffers: 265adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 2664637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->drmSupportsBlendColor) 267033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger ALLOC_STATE( ctx, always, CTX_STATE_SIZE_NEWDRM, "CTX/context", 0 ); 268033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger else 269033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger ALLOC_STATE( ctx, always, CTX_STATE_SIZE_OLDDRM, "CTX/context", 0 ); 270adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( set, always, SET_STATE_SIZE, "SET/setup", 0 ); 271adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( lin, always, LIN_STATE_SIZE, "LIN/line", 0 ); 272adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( msk, always, MSK_STATE_SIZE, "MSK/mask", 0 ); 273adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( vpt, always, VPT_STATE_SIZE, "VPT/viewport", 0 ); 274adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( vtx, always, VTX_STATE_SIZE, "VTX/vertex", 0 ); 275adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( vap, always, VAP_STATE_SIZE, "VAP/vap", 0 ); 276adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( vte, always, VTE_STATE_SIZE, "VTE/vte", 0 ); 277adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( msc, always, MSC_STATE_SIZE, "MSC/misc", 0 ); 278adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( cst, always, CST_STATE_SIZE, "CST/constant", 0 ); 279adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( zbs, always, ZBS_STATE_SIZE, "ZBS/zbias", 0 ); 280f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tf, tf, TF_STATE_SIZE, "TF/tfactor", 0 ); 2814637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->drmSupportsFragShader) { 2824637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R200) { 283f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger /* make sure texture units 0/1 are emitted pair-wise for r200 t0 hang workaround */ 284f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[0], tex_pair, TEX_STATE_SIZE_NEWDRM, "TEX/tex-0", 0 ); 285f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[1], tex_pair, TEX_STATE_SIZE_NEWDRM, "TEX/tex-1", 1 ); 286f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tam, tex_any, TAM_STATE_SIZE, "TAM/tam", 0 ); 287f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger } 288f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger else { 289f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[0], tex, TEX_STATE_SIZE_NEWDRM, "TEX/tex-0", 0 ); 290f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[1], tex, TEX_STATE_SIZE_NEWDRM, "TEX/tex-1", 1 ); 291f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tam, never, TAM_STATE_SIZE, "TAM/tam", 0 ); 292f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger } 293f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[2], tex, TEX_STATE_SIZE_NEWDRM, "TEX/tex-2", 2 ); 294f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[3], tex, TEX_STATE_SIZE_NEWDRM, "TEX/tex-3", 3 ); 295f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[4], tex, TEX_STATE_SIZE_NEWDRM, "TEX/tex-4", 4 ); 296f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[5], tex, TEX_STATE_SIZE_NEWDRM, "TEX/tex-5", 5 ); 297f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( atf, afs, ATF_STATE_SIZE, "ATF/tfactor", 0 ); 298f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( afs[0], afs_pass1, AFS_STATE_SIZE, "AFS/afsinst-0", 0 ); 299f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( afs[1], afs, AFS_STATE_SIZE, "AFS/afsinst-1", 1 ); 30048ccaf200940613032dfaaafe71382947f398004Roland Scheidegger } 30148ccaf200940613032dfaaafe71382947f398004Roland Scheidegger else { 3024637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R200) { 303f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[0], tex_pair, TEX_STATE_SIZE_OLDDRM, "TEX/tex-0", 0 ); 304f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[1], tex_pair, TEX_STATE_SIZE_OLDDRM, "TEX/tex-1", 1 ); 305f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tam, tex_any, TAM_STATE_SIZE, "TAM/tam", 0 ); 306f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger } 307f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger else { 308f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[0], tex, TEX_STATE_SIZE_OLDDRM, "TEX/tex-0", 0 ); 309f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[1], tex, TEX_STATE_SIZE_OLDDRM, "TEX/tex-1", 1 ); 310f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tam, never, TAM_STATE_SIZE, "TAM/tam", 0 ); 311f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger } 312f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[2], tex, TEX_STATE_SIZE_OLDDRM, "TEX/tex-2", 2 ); 313f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[3], tex, TEX_STATE_SIZE_OLDDRM, "TEX/tex-3", 3 ); 314f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[4], tex, TEX_STATE_SIZE_OLDDRM, "TEX/tex-4", 4 ); 315f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( tex[5], tex, TEX_STATE_SIZE_OLDDRM, "TEX/tex-5", 5 ); 316f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( atf, never, ATF_STATE_SIZE, "TF/tfactor", 0 ); 317f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( afs[0], never, AFS_STATE_SIZE, "AFS/afsinst-0", 0 ); 318f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( afs[1], never, AFS_STATE_SIZE, "AFS/afsinst-1", 1 ); 31948ccaf200940613032dfaaafe71382947f398004Roland Scheidegger } 3204637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->drmSupportsCubeMapsR200) { 32148ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( cube[0], tex_cube, CUBE_STATE_SIZE, "CUBE/tex-0", 0 ); 32248ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( cube[1], tex_cube, CUBE_STATE_SIZE, "CUBE/tex-1", 1 ); 32348ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( cube[2], tex_cube, CUBE_STATE_SIZE, "CUBE/tex-2", 2 ); 32448ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( cube[3], tex_cube, CUBE_STATE_SIZE, "CUBE/tex-3", 3 ); 32548ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( cube[4], tex_cube, CUBE_STATE_SIZE, "CUBE/tex-4", 4 ); 32648ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( cube[5], tex_cube, CUBE_STATE_SIZE, "CUBE/tex-5", 5 ); 327bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl } 328bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl else { 329bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl ALLOC_STATE( cube[0], never, CUBE_STATE_SIZE, "CUBE/tex-0", 0 ); 330bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl ALLOC_STATE( cube[1], never, CUBE_STATE_SIZE, "CUBE/tex-1", 1 ); 33148ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( cube[2], never, CUBE_STATE_SIZE, "CUBE/tex-2", 2 ); 33248ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( cube[3], never, CUBE_STATE_SIZE, "CUBE/tex-3", 3 ); 33348ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( cube[4], never, CUBE_STATE_SIZE, "CUBE/tex-4", 4 ); 33448ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( cube[5], never, CUBE_STATE_SIZE, "CUBE/tex-5", 5 ); 335bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl } 3364637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->drmSupportsVertexProgram) { 33798c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( pvs, tcl_vp, PVS_STATE_SIZE, "PVS/pvscntl", 0 ); 33898c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( vpi[0], tcl_vp, VPI_STATE_SIZE, "VP/vertexprog-0", 0 ); 33998c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( vpi[1], tcl_vp_size, VPI_STATE_SIZE, "VP/vertexprog-1", 1 ); 34098c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( vpp[0], tcl_vp, VPP_STATE_SIZE, "VPP/vertexparam-0", 0 ); 34198c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( vpp[1], tcl_vpp_size, VPP_STATE_SIZE, "VPP/vertexparam-1", 1 ); 34298c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger } 34398c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger else { 34498c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( pvs, never, PVS_STATE_SIZE, "PVS/pvscntl", 0 ); 34598c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( vpi[0], never, VPI_STATE_SIZE, "VP/vertexprog-0", 0 ); 34698c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( vpi[1], never, VPI_STATE_SIZE, "VP/vertexprog-1", 1 ); 34798c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( vpp[0], never, VPP_STATE_SIZE, "VPP/vertexparam-0", 0 ); 34898c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( vpp[1], never, VPP_STATE_SIZE, "VPP/vertexparam-1", 1 ); 34998c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger } 35098c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger /* FIXME: this atom has two commands, we need only one (ucp_vert_blend) for vp */ 35198c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( tcl, tcl_or_vp, TCL_STATE_SIZE, "TCL/tcl", 0 ); 352adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( msl, tcl, MSL_STATE_SIZE, "MSL/matrix-select", 0 ); 353adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( tcg, tcl, TCG_STATE_SIZE, "TCG/texcoordgen", 0 ); 354adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( mtl[0], tcl_lighting, MTL_STATE_SIZE, "MTL0/material0", 0 ); 355a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger ALLOC_STATE( mtl[1], tcl_lighting, MTL_STATE_SIZE, "MTL1/material1", 1 ); 35698c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger ALLOC_STATE( grd, tcl_or_vp, GRD_STATE_SIZE, "GRD/guard-band", 0 ); 357014bfda235e5315baf84b1d47329be167dd2ec7fRoland Scheidegger ALLOC_STATE( fog, tcl_fog, FOG_STATE_SIZE, "FOG/fog", 0 ); 358adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( glt, tcl_lighting, GLT_STATE_SIZE, "GLT/light-global", 0 ); 359adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( eye, tcl_lighting, EYE_STATE_SIZE, "EYE/eye-vector", 0 ); 360adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( mat[R200_MTX_MV], tcl, MAT_STATE_SIZE, "MAT/modelview", 0 ); 361adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( mat[R200_MTX_IMV], tcl, MAT_STATE_SIZE, "MAT/it-modelview", 0 ); 362adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( mat[R200_MTX_MVP], tcl, MAT_STATE_SIZE, "MAT/modelproject", 0 ); 363adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( mat[R200_MTX_TEX0], tcl_tex, MAT_STATE_SIZE, "MAT/texmat0", 0 ); 364adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( mat[R200_MTX_TEX1], tcl_tex, MAT_STATE_SIZE, "MAT/texmat1", 1 ); 36548ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( mat[R200_MTX_TEX2], tcl_tex, MAT_STATE_SIZE, "MAT/texmat2", 2 ); 36648ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( mat[R200_MTX_TEX3], tcl_tex, MAT_STATE_SIZE, "MAT/texmat3", 3 ); 36748ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( mat[R200_MTX_TEX4], tcl_tex, MAT_STATE_SIZE, "MAT/texmat4", 4 ); 36848ccaf200940613032dfaaafe71382947f398004Roland Scheidegger ALLOC_STATE( mat[R200_MTX_TEX5], tcl_tex, MAT_STATE_SIZE, "MAT/texmat5", 5 ); 369adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( ucp[0], tcl_ucp, UCP_STATE_SIZE, "UCP/userclip-0", 0 ); 370adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( ucp[1], tcl_ucp, UCP_STATE_SIZE, "UCP/userclip-1", 1 ); 371adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( ucp[2], tcl_ucp, UCP_STATE_SIZE, "UCP/userclip-2", 2 ); 372adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( ucp[3], tcl_ucp, UCP_STATE_SIZE, "UCP/userclip-3", 3 ); 373adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( ucp[4], tcl_ucp, UCP_STATE_SIZE, "UCP/userclip-4", 4 ); 374adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( ucp[5], tcl_ucp, UCP_STATE_SIZE, "UCP/userclip-5", 5 ); 375adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( lit[0], tcl_light, LIT_STATE_SIZE, "LIT/light-0", 0 ); 376adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( lit[1], tcl_light, LIT_STATE_SIZE, "LIT/light-1", 1 ); 377adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( lit[2], tcl_light, LIT_STATE_SIZE, "LIT/light-2", 2 ); 378adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( lit[3], tcl_light, LIT_STATE_SIZE, "LIT/light-3", 3 ); 379adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( lit[4], tcl_light, LIT_STATE_SIZE, "LIT/light-4", 4 ); 380adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( lit[5], tcl_light, LIT_STATE_SIZE, "LIT/light-5", 5 ); 381adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( lit[6], tcl_light, LIT_STATE_SIZE, "LIT/light-6", 6 ); 382adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ALLOC_STATE( lit[7], tcl_light, LIT_STATE_SIZE, "LIT/light-7", 7 ); 383f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger ALLOC_STATE( pix[0], pix_zero, PIX_STATE_SIZE, "PIX/pixstage-0", 0 ); 38436603539ccdb1c507724d8a1c314e6c9cc9863d9Roland Scheidegger ALLOC_STATE( pix[1], texenv, PIX_STATE_SIZE, "PIX/pixstage-1", 1 ); 38536603539ccdb1c507724d8a1c314e6c9cc9863d9Roland Scheidegger ALLOC_STATE( pix[2], texenv, PIX_STATE_SIZE, "PIX/pixstage-2", 2 ); 38636603539ccdb1c507724d8a1c314e6c9cc9863d9Roland Scheidegger ALLOC_STATE( pix[3], texenv, PIX_STATE_SIZE, "PIX/pixstage-3", 3 ); 38736603539ccdb1c507724d8a1c314e6c9cc9863d9Roland Scheidegger ALLOC_STATE( pix[4], texenv, PIX_STATE_SIZE, "PIX/pixstage-4", 4 ); 38836603539ccdb1c507724d8a1c314e6c9cc9863d9Roland Scheidegger ALLOC_STATE( pix[5], texenv, PIX_STATE_SIZE, "PIX/pixstage-5", 5 ); 3894637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->drmSupportsTriPerf) { 390fbe5296d1463e1052590b744f3d62ebb9e5d5dd4Roland Scheidegger ALLOC_STATE( prf, always, PRF_STATE_SIZE, "PRF/performance-tri", 0 ); 391fbe5296d1463e1052590b744f3d62ebb9e5d5dd4Roland Scheidegger } 392fbe5296d1463e1052590b744f3d62ebb9e5d5dd4Roland Scheidegger else { 393fbe5296d1463e1052590b744f3d62ebb9e5d5dd4Roland Scheidegger ALLOC_STATE( prf, never, PRF_STATE_SIZE, "PRF/performance-tri", 0 ); 394fbe5296d1463e1052590b744f3d62ebb9e5d5dd4Roland Scheidegger } 3954637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->drmSupportsPointSprites) { 39644dace86eaf9eded8e6465adfadf6345658686ddRoland Scheidegger ALLOC_STATE( spr, always, SPR_STATE_SIZE, "SPR/pointsprite", 0 ); 397cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger ALLOC_STATE( ptp, tcl, PTP_STATE_SIZE, "PTP/pointparams", 0 ); 398cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger } 399cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger else { 40044dace86eaf9eded8e6465adfadf6345658686ddRoland Scheidegger ALLOC_STATE (spr, never, SPR_STATE_SIZE, "SPR/pointsprite", 0 ); 401cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger ALLOC_STATE (ptp, never, PTP_STATE_SIZE, "PTP/pointparams", 0 ); 402cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger } 403adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 4040c8f8d3dc9d60ed34eeca7f3606651420a81753cEric Anholt r200SetUpAtomList( rmesa ); 405adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 406adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Fill in the packet headers: 407adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 408adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_CMD_0] = cmdpkt(RADEON_EMIT_PP_MISC); 409adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_CMD_1] = cmdpkt(RADEON_EMIT_PP_CNTL); 410adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_CMD_2] = cmdpkt(RADEON_EMIT_RB3D_COLORPITCH); 4114637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->drmSupportsBlendColor) 412033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger rmesa->hw.ctx.cmd[CTX_CMD_3] = cmdpkt(R200_EMIT_RB3D_BLENDCOLOR); 413adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.lin.cmd[LIN_CMD_0] = cmdpkt(RADEON_EMIT_RE_LINE_PATTERN); 414adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.lin.cmd[LIN_CMD_1] = cmdpkt(RADEON_EMIT_SE_LINE_WIDTH); 415adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msk.cmd[MSK_CMD_0] = cmdpkt(RADEON_EMIT_RB3D_STENCILREFMASK); 416adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vpt.cmd[VPT_CMD_0] = cmdpkt(RADEON_EMIT_SE_VPORT_XSCALE); 417adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.set.cmd[SET_CMD_0] = cmdpkt(RADEON_EMIT_SE_CNTL); 418adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msc.cmd[MSC_CMD_0] = cmdpkt(RADEON_EMIT_RE_MISC); 419adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_CMD_0] = cmdpkt(R200_EMIT_PP_CNTL_X); 420adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_CMD_1] = cmdpkt(R200_EMIT_RB3D_DEPTHXY_OFFSET); 421adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_CMD_2] = cmdpkt(R200_EMIT_RE_AUX_SCISSOR_CNTL); 422adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_CMD_3] = cmdpkt(R200_EMIT_RE_SCISSOR_TL_0); 423adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_CMD_4] = cmdpkt(R200_EMIT_SE_VAP_CNTL_STATUS); 424adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_CMD_5] = cmdpkt(R200_EMIT_RE_POINTSIZE); 425adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_CMD_6] = cmdpkt(R200_EMIT_TCL_INPUT_VTX_VECTOR_ADDR_0); 426adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tam.cmd[TAM_CMD_0] = cmdpkt(R200_EMIT_PP_TAM_DEBUG3); 427f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tf.cmd[TF_CMD_0] = cmdpkt(R200_EMIT_TFACTOR_0); 4284637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->drmSupportsFragShader) { 429f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.atf.cmd[ATF_CMD_0] = cmdpkt(R200_EMIT_ATF_TFACTOR); 430f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[0].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCTLALL_0); 431f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[0].cmd[TEX_CMD_1_NEWDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_0); 432f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[1].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCTLALL_1); 433f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[1].cmd[TEX_CMD_1_NEWDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_1); 434f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[2].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCTLALL_2); 435f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[2].cmd[TEX_CMD_1_NEWDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_2); 436f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[3].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCTLALL_3); 437f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[3].cmd[TEX_CMD_1_NEWDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_3); 438f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[4].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCTLALL_4); 439f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[4].cmd[TEX_CMD_1_NEWDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_4); 440f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[5].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCTLALL_5); 441f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[5].cmd[TEX_CMD_1_NEWDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_5); 442f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger } else { 443f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[0].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXFILTER_0); 444f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[0].cmd[TEX_CMD_1_OLDDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_0); 445f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[1].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXFILTER_1); 446f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[1].cmd[TEX_CMD_1_OLDDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_1); 447f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[2].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXFILTER_2); 448f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[2].cmd[TEX_CMD_1_OLDDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_2); 449f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[3].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXFILTER_3); 450f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[3].cmd[TEX_CMD_1_OLDDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_3); 451f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[4].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXFILTER_4); 452f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[4].cmd[TEX_CMD_1_OLDDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_4); 453f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[5].cmd[TEX_CMD_0] = cmdpkt(R200_EMIT_PP_TXFILTER_5); 454f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[5].cmd[TEX_CMD_1_OLDDRM] = cmdpkt(R200_EMIT_PP_TXOFFSET_5); 455f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger } 456f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.afs[0].cmd[AFS_CMD_0] = cmdpkt(R200_EMIT_PP_AFS_0); 457f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.afs[1].cmd[AFS_CMD_0] = cmdpkt(R200_EMIT_PP_AFS_1); 45898c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger rmesa->hw.pvs.cmd[PVS_CMD_0] = cmdpkt(R200_EMIT_VAP_PVS_CNTL); 459adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cube[0].cmd[CUBE_CMD_0] = cmdpkt(R200_EMIT_PP_CUBIC_FACES_0); 460adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cube[0].cmd[CUBE_CMD_1] = cmdpkt(R200_EMIT_PP_CUBIC_OFFSETS_0); 461adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cube[1].cmd[CUBE_CMD_0] = cmdpkt(R200_EMIT_PP_CUBIC_FACES_1); 462adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cube[1].cmd[CUBE_CMD_1] = cmdpkt(R200_EMIT_PP_CUBIC_OFFSETS_1); 46348ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.cube[2].cmd[CUBE_CMD_0] = cmdpkt(R200_EMIT_PP_CUBIC_FACES_2); 46448ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.cube[2].cmd[CUBE_CMD_1] = cmdpkt(R200_EMIT_PP_CUBIC_OFFSETS_2); 46548ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.cube[3].cmd[CUBE_CMD_0] = cmdpkt(R200_EMIT_PP_CUBIC_FACES_3); 46648ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.cube[3].cmd[CUBE_CMD_1] = cmdpkt(R200_EMIT_PP_CUBIC_OFFSETS_3); 46748ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.cube[4].cmd[CUBE_CMD_0] = cmdpkt(R200_EMIT_PP_CUBIC_FACES_4); 46848ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.cube[4].cmd[CUBE_CMD_1] = cmdpkt(R200_EMIT_PP_CUBIC_OFFSETS_4); 46948ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.cube[5].cmd[CUBE_CMD_0] = cmdpkt(R200_EMIT_PP_CUBIC_FACES_5); 47048ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.cube[5].cmd[CUBE_CMD_1] = cmdpkt(R200_EMIT_PP_CUBIC_OFFSETS_5); 471adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.pix[0].cmd[PIX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCBLEND_0); 472adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.pix[1].cmd[PIX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCBLEND_1); 47348ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.pix[2].cmd[PIX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCBLEND_2); 47448ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.pix[3].cmd[PIX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCBLEND_3); 47548ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.pix[4].cmd[PIX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCBLEND_4); 47648ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.pix[5].cmd[PIX_CMD_0] = cmdpkt(R200_EMIT_PP_TXCBLEND_5); 477adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.zbs.cmd[ZBS_CMD_0] = cmdpkt(RADEON_EMIT_SE_ZBIAS_FACTOR); 478adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcl.cmd[TCL_CMD_0] = cmdpkt(R200_EMIT_TCL_LIGHT_MODEL_CTL_0); 479adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcl.cmd[TCL_CMD_1] = cmdpkt(R200_EMIT_TCL_UCP_VERT_BLEND_CTL); 480adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcg.cmd[TCG_CMD_0] = cmdpkt(R200_EMIT_TEX_PROC_CTL_2); 481adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msl.cmd[MSL_CMD_0] = cmdpkt(R200_EMIT_MATRIX_SELECT_0); 482adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vap.cmd[VAP_CMD_0] = cmdpkt(R200_EMIT_VAP_CTL); 483adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vtx.cmd[VTX_CMD_0] = cmdpkt(R200_EMIT_VTX_FMT_0); 484adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vtx.cmd[VTX_CMD_1] = cmdpkt(R200_EMIT_OUTPUT_VTX_COMP_SEL); 485adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vtx.cmd[VTX_CMD_2] = cmdpkt(R200_EMIT_SE_VTX_STATE_CNTL); 486adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vte.cmd[VTE_CMD_0] = cmdpkt(R200_EMIT_VTE_CNTL); 487fbe5296d1463e1052590b744f3d62ebb9e5d5dd4Roland Scheidegger rmesa->hw.prf.cmd[PRF_CMD_0] = cmdpkt(R200_EMIT_PP_TRI_PERF_CNTL); 48844dace86eaf9eded8e6465adfadf6345658686ddRoland Scheidegger rmesa->hw.spr.cmd[SPR_CMD_0] = cmdpkt(R200_EMIT_TCL_POINT_SPRITE_CNTL); 489adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.mtl[0].cmd[MTL_CMD_0] = 490adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_MAT_0_EMISS, 1, 16 ); 491adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.mtl[0].cmd[MTL_CMD_1] = 492adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdscl2( R200_SS_MAT_0_SHININESS, 1, 1 ); 493a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger rmesa->hw.mtl[1].cmd[MTL_CMD_0] = 494a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger cmdvec( R200_VS_MAT_1_EMISS, 1, 16 ); 495a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger rmesa->hw.mtl[1].cmd[MTL_CMD_1] = 496a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger cmdscl2( R200_SS_MAT_1_SHININESS, 1, 1 ); 497a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger 49898c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger rmesa->hw.vpi[0].cmd[VPI_CMD_0] = 49998c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger cmdveclinear( R200_PVS_PROG0, 64 ); 50098c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger rmesa->hw.vpi[1].cmd[VPI_CMD_0] = 50198c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger cmdveclinear( R200_PVS_PROG1, 64 ); 50298c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger rmesa->hw.vpp[0].cmd[VPP_CMD_0] = 50398c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger cmdveclinear( R200_PVS_PARAM0, 96 ); 50498c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger rmesa->hw.vpp[1].cmd[VPP_CMD_0] = 50598c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger cmdveclinear( R200_PVS_PARAM1, 96 ); 50698c791b543c4ba86b8bb54488bd872b33b10b1aaRoland Scheidegger 507adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.grd.cmd[GRD_CMD_0] = 508adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdscl( R200_SS_VERT_GUARD_CLIP_ADJ_ADDR, 1, 4 ); 509adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.fog.cmd[FOG_CMD_0] = 510adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_FOG_PARAM_ADDR, 1, 4 ); 511adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.glt.cmd[GLT_CMD_0] = 512adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_GLOBAL_AMBIENT_ADDR, 1, 4 ); 513adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.eye.cmd[EYE_CMD_0] = 514adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_EYE_VECTOR_ADDR, 1, 4 ); 515adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 516adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.mat[R200_MTX_MV].cmd[MAT_CMD_0] = 517adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_MATRIX_0_MV, 1, 16); 518adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.mat[R200_MTX_IMV].cmd[MAT_CMD_0] = 519adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_MATRIX_1_INV_MV, 1, 16); 520adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.mat[R200_MTX_MVP].cmd[MAT_CMD_0] = 521adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_MATRIX_2_MVP, 1, 16); 522adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.mat[R200_MTX_TEX0].cmd[MAT_CMD_0] = 523adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_MATRIX_3_TEX0, 1, 16); 524adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.mat[R200_MTX_TEX1].cmd[MAT_CMD_0] = 525adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_MATRIX_4_TEX1, 1, 16); 52648ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.mat[R200_MTX_TEX2].cmd[MAT_CMD_0] = 52748ccaf200940613032dfaaafe71382947f398004Roland Scheidegger cmdvec( R200_VS_MATRIX_5_TEX2, 1, 16); 52848ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.mat[R200_MTX_TEX3].cmd[MAT_CMD_0] = 52948ccaf200940613032dfaaafe71382947f398004Roland Scheidegger cmdvec( R200_VS_MATRIX_6_TEX3, 1, 16); 53048ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.mat[R200_MTX_TEX4].cmd[MAT_CMD_0] = 53148ccaf200940613032dfaaafe71382947f398004Roland Scheidegger cmdvec( R200_VS_MATRIX_7_TEX4, 1, 16); 53248ccaf200940613032dfaaafe71382947f398004Roland Scheidegger rmesa->hw.mat[R200_MTX_TEX5].cmd[MAT_CMD_0] = 53348ccaf200940613032dfaaafe71382947f398004Roland Scheidegger cmdvec( R200_VS_MATRIX_8_TEX5, 1, 16); 534adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 535adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell for (i = 0 ; i < 8; i++) { 536adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.lit[i].cmd[LIT_CMD_0] = 537adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_LIGHT_AMBIENT_ADDR + i, 8, 24 ); 538adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.lit[i].cmd[LIT_CMD_1] = 539adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdscl( R200_SS_LIGHT_DCD_ADDR + i, 8, 7 ); 540adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } 541adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 542adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell for (i = 0 ; i < 6; i++) { 543adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ucp[i].cmd[UCP_CMD_0] = 544adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell cmdvec( R200_VS_UCP_ADDR + i, 1, 4 ); 545adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } 546adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 547cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_CMD_0] = 548cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger cmdvec( R200_VS_PNT_SPRITE_VPORT_SCALE, 1, 4 ); 549cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_CMD_1] = 550cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger cmdvec( R200_VS_PNT_SPRITE_ATT_CONST, 1, 12 ); 551cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger 552adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Initial Harware state: 553adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 554adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_PP_MISC] = (R200_ALPHA_TEST_PASS 555adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* | R200_RIGHT_HAND_CUBE_OGL*/); 556adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 557adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_PP_FOG_COLOR] = (R200_FOG_VERTEX | 558adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_FOG_USE_SPEC_ALPHA); 559adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 560adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_RE_SOLID_COLOR] = 0x00000000; 561adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 562adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_RB3D_BLENDCNTL] = (R200_COMB_FCN_ADD_CLAMP | 563033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger (R200_BLEND_GL_ONE << R200_SRC_BLEND_SHIFT) | 564033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger (R200_BLEND_GL_ZERO << R200_DST_BLEND_SHIFT)); 565033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger 5664637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->drmSupportsBlendColor) { 567033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger rmesa->hw.ctx.cmd[CTX_RB3D_BLENDCOLOR] = 0x00000000; 568033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger rmesa->hw.ctx.cmd[CTX_RB3D_ABLENDCNTL] = (R200_COMB_FCN_ADD_CLAMP | 569033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger (R200_BLEND_GL_ONE << R200_SRC_BLEND_SHIFT) | 570033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger (R200_BLEND_GL_ZERO << R200_DST_BLEND_SHIFT)); 571033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger rmesa->hw.ctx.cmd[CTX_RB3D_CBLENDCNTL] = (R200_COMB_FCN_ADD_CLAMP | 572033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger (R200_BLEND_GL_ONE << R200_SRC_BLEND_SHIFT) | 573033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger (R200_BLEND_GL_ZERO << R200_DST_BLEND_SHIFT)); 574033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger } 575adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 576adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_RB3D_DEPTHOFFSET] = 5774637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.radeonScreen->depthOffset + rmesa->radeon.radeonScreen->fbLocation; 578adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 579adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_RB3D_DEPTHPITCH] = 5804637235183b80963536f2364e4d50fcb894886ddDave Airlie ((rmesa->radeon.radeonScreen->depthPitch & 581adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_DEPTHPITCH_MASK) | 582adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_DEPTH_ENDIAN_NO_SWAP); 583b31b7836d6e7abf80dd4feacce333d4b1fe6e4abRoland Scheidegger 584b31b7836d6e7abf80dd4feacce333d4b1fe6e4abRoland Scheidegger if (rmesa->using_hyperz) 585b31b7836d6e7abf80dd4feacce333d4b1fe6e4abRoland Scheidegger rmesa->hw.ctx.cmd[CTX_RB3D_DEPTHPITCH] |= R200_DEPTH_HYPERZ; 586adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 587adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] = (depth_fmt | 588b31b7836d6e7abf80dd4feacce333d4b1fe6e4abRoland Scheidegger R200_Z_TEST_LESS | 589adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_STENCIL_TEST_ALWAYS | 590adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_STENCIL_FAIL_KEEP | 591adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_STENCIL_ZPASS_KEEP | 592adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_STENCIL_ZFAIL_KEEP | 593adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_Z_WRITE_ENABLE); 594adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 595b31b7836d6e7abf80dd4feacce333d4b1fe6e4abRoland Scheidegger if (rmesa->using_hyperz) { 596b31b7836d6e7abf80dd4feacce333d4b1fe6e4abRoland Scheidegger rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= R200_Z_COMPRESSION_ENABLE | 597b31b7836d6e7abf80dd4feacce333d4b1fe6e4abRoland Scheidegger R200_Z_DECOMPRESSION_ENABLE; 5984637235183b80963536f2364e4d50fcb894886ddDave Airlie/* if (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R200) 599b31b7836d6e7abf80dd4feacce333d4b1fe6e4abRoland Scheidegger rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_Z_HIERARCHY_ENABLE;*/ 600b31b7836d6e7abf80dd4feacce333d4b1fe6e4abRoland Scheidegger } 601b31b7836d6e7abf80dd4feacce333d4b1fe6e4abRoland Scheidegger 602adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_PP_CNTL] = (R200_ANTI_ALIAS_NONE 603adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell | R200_TEX_BLEND_0_ENABLE); 604adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 605adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.ctx.cmd[CTX_RB3D_CNTL] = color_fmt; 6064637235183b80963536f2364e4d50fcb894886ddDave Airlie switch ( driQueryOptioni( &rmesa->radeon.optionCache, "dither_mode" ) ) { 607273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane case DRI_CONF_DITHER_XERRORDIFFRESET: 608273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane rmesa->hw.ctx.cmd[CTX_RB3D_CNTL] |= R200_DITHER_INIT; 609273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane break; 610273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane case DRI_CONF_DITHER_ORDERED: 611273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane rmesa->hw.ctx.cmd[CTX_RB3D_CNTL] |= R200_SCALE_DITHER_ENABLE; 612273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane break; 613273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane } 6144637235183b80963536f2364e4d50fcb894886ddDave Airlie if ( driQueryOptioni( &rmesa->radeon.optionCache, "round_mode" ) == 615273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane DRI_CONF_ROUND_ROUND ) 616d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.color.roundEnable = R200_ROUND_ENABLE; 617273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane else 618d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->radeon.state.color.roundEnable = 0; 6194637235183b80963536f2364e4d50fcb894886ddDave Airlie if ( driQueryOptioni (&rmesa->radeon.optionCache, "color_reduction" ) == 620273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane DRI_CONF_COLOR_REDUCTION_DITHER ) 621273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane rmesa->hw.ctx.cmd[CTX_RB3D_CNTL] |= R200_DITHER_ENABLE; 622273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane else 623d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->hw.ctx.cmd[CTX_RB3D_CNTL] |= rmesa->radeon.state.color.roundEnable; 624273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane 625fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul#if 000 626d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->hw.ctx.cmd[CTX_RB3D_COLOROFFSET] = ((rmesa->radeon.state.color.drawOffset + 6274637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.radeonScreen->fbLocation) 628273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane & R200_COLOROFFSET_MASK); 629adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 630d29e96bf33e91d071770b86d87ffc4ef4dfc2f70Dave Airlie rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] = ((rmesa->radeon.state.color.drawPitch & 631adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_COLORPITCH_MASK) | 632adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_COLOR_ENDIAN_NO_SWAP); 633fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul#else 634fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul rmesa->hw.ctx.cmd[CTX_RB3D_COLOROFFSET] = ((drawOffset + 6354637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.radeonScreen->fbLocation) 636fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul & R200_COLOROFFSET_MASK); 637fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul 638fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] = ((drawPitch & 639fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul R200_COLORPITCH_MASK) | 640fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul R200_COLOR_ENDIAN_NO_SWAP); 641fcbfeb5d28aea87c60f2d02daa213d0c0c2516e8Brian Paul#endif 642a205137423e42010a025c70b05af98a6c0564f28Roland Scheidegger /* (fixed size) sarea is initialized to zero afaics so can omit version check. Phew! */ 6434637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.sarea->tiling_enabled) { 644a205137423e42010a025c70b05af98a6c0564f28Roland Scheidegger rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] |= R200_COLOR_TILE_ENABLE; 645a205137423e42010a025c70b05af98a6c0564f28Roland Scheidegger } 646adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 647fbe5296d1463e1052590b744f3d62ebb9e5d5dd4Roland Scheidegger rmesa->hw.prf.cmd[PRF_PP_TRI_PERF] = R200_TRI_CUTOFF_MASK - R200_TRI_CUTOFF_MASK * 6484637235183b80963536f2364e4d50fcb894886ddDave Airlie driQueryOptionf (&rmesa->radeon.optionCache,"texture_blend_quality"); 649fbe5296d1463e1052590b744f3d62ebb9e5d5dd4Roland Scheidegger rmesa->hw.prf.cmd[PRF_PP_PERF_CNTL] = 0; 650fbe5296d1463e1052590b744f3d62ebb9e5d5dd4Roland Scheidegger 651adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.set.cmd[SET_SE_CNTL] = (R200_FFACE_CULL_CCW | 652adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_BFACE_SOLID | 653adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_FFACE_SOLID | 654adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_FLAT_SHADE_VTX_LAST | 655adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_DIFFUSE_SHADE_GOURAUD | 656adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_ALPHA_SHADE_GOURAUD | 657adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_SPECULAR_SHADE_GOURAUD | 658adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_FOG_SHADE_GOURAUD | 659cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger R200_DISC_FOG_SHADE_GOURAUD | 660adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VTX_PIX_CENTER_OGL | 661adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_ROUND_MODE_TRUNC | 662adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_ROUND_PREC_8TH_PIX); 663adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 664adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.set.cmd[SET_RE_CNTL] = (R200_PERSPECTIVE_ENABLE | 665adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_SCISSOR_ENABLE); 666adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 667adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.lin.cmd[LIN_RE_LINE_PATTERN] = ((1 << 16) | 0xffff); 668adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 669adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.lin.cmd[LIN_RE_LINE_STATE] = 670adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ((0 << R200_LINE_CURRENT_PTR_SHIFT) | 671adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (1 << R200_LINE_CURRENT_COUNT_SHIFT)); 672adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 673adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.lin.cmd[LIN_SE_LINE_WIDTH] = (1 << 4); 674adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 675adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msk.cmd[MSK_RB3D_STENCILREFMASK] = 676adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ((0x00 << R200_STENCIL_REF_SHIFT) | 677adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0xff << R200_STENCIL_MASK_SHIFT) | 678adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0xff << R200_STENCIL_WRITEMASK_SHIFT)); 679adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 680adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msk.cmd[MSK_RB3D_ROPCNTL] = R200_ROP_COPY; 681adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msk.cmd[MSK_RB3D_PLANEMASK] = 0xffffffff; 682adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 683adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tam.cmd[TAM_DEBUG3] = 0; 684adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 685adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msc.cmd[MSC_RE_MISC] = 686adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ((0 << R200_STIPPLE_X_OFFSET_SHIFT) | 687adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0 << R200_STIPPLE_Y_OFFSET_SHIFT) | 688adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_STIPPLE_BIG_BIT_ORDER); 689adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 690adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 691adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_PP_CNTL_X] = 0; 692adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_RB3D_DEPTHXY_OFFSET] = 0; 693adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_RE_AUX_SCISSOR_CNTL] = 0x0; 694adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_RE_SCISSOR_TL_0] = 0; 695adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_RE_SCISSOR_BR_0] = 0; 696adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_SE_VAP_CNTL_STATUS] = 697adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#ifdef MESA_BIG_ENDIAN 698adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VC_32BIT_SWAP; 699adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#else 700adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VC_NO_SWAP; 701adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#endif 70210095c9024efb1767fb3df0b59672299c090ad10Eric Anholt 7034637235183b80963536f2364e4d50fcb894886ddDave Airlie if (!(rmesa->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) { 70410095c9024efb1767fb3df0b59672299c090ad10Eric Anholt /* Bypass TCL */ 70510095c9024efb1767fb3df0b59672299c090ad10Eric Anholt rmesa->hw.cst.cmd[CST_SE_VAP_CNTL_STATUS] |= (1<<8); 70610095c9024efb1767fb3df0b59672299c090ad10Eric Anholt } 70710095c9024efb1767fb3df0b59672299c090ad10Eric Anholt 70844dace86eaf9eded8e6465adfadf6345658686ddRoland Scheidegger rmesa->hw.cst.cmd[CST_RE_POINTSIZE] = 70944dace86eaf9eded8e6465adfadf6345658686ddRoland Scheidegger (((GLuint)(ctx->Const.MaxPointSize * 16.0)) << R200_MAXPOINTSIZE_SHIFT) | 0x10; 710adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_SE_TCL_INPUT_VTX_0] = 711adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0x0 << R200_VERTEX_POSITION_ADDR__SHIFT); 712adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_SE_TCL_INPUT_VTX_1] = 713adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0x02 << R200_VTX_COLOR_0_ADDR__SHIFT) | 714adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0x03 << R200_VTX_COLOR_1_ADDR__SHIFT); 715adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_SE_TCL_INPUT_VTX_2] = 716adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0x06 << R200_VTX_TEX_0_ADDR__SHIFT) | 717adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0x07 << R200_VTX_TEX_1_ADDR__SHIFT) | 718adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0x08 << R200_VTX_TEX_2_ADDR__SHIFT) | 719adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0x09 << R200_VTX_TEX_3_ADDR__SHIFT); 720adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cst.cmd[CST_SE_TCL_INPUT_VTX_3] = 721adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0x0A << R200_VTX_TEX_4_ADDR__SHIFT) | 722adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0x0B << R200_VTX_TEX_5_ADDR__SHIFT); 723adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 724adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 725adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vpt.cmd[VPT_SE_VPORT_XSCALE] = 0x00000000; 726adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vpt.cmd[VPT_SE_VPORT_XOFFSET] = 0x00000000; 727adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vpt.cmd[VPT_SE_VPORT_YSCALE] = 0x00000000; 728adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vpt.cmd[VPT_SE_VPORT_YOFFSET] = 0x00000000; 729adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vpt.cmd[VPT_SE_VPORT_ZSCALE] = 0x00000000; 730adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vpt.cmd[VPT_SE_VPORT_ZOFFSET] = 0x00000000; 731adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 732adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell for ( i = 0 ; i < ctx->Const.MaxTextureUnits ; i++ ) { 733adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tex[i].cmd[TEX_PP_TXFILTER] = R200_BORDER_MODE_OGL; 734adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tex[i].cmd[TEX_PP_TXFORMAT] = 735adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ((i << R200_TXFORMAT_ST_ROUTE_SHIFT) | /* <-- note i */ 736adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (2 << R200_TXFORMAT_WIDTH_SHIFT) | 737adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (2 << R200_TXFORMAT_HEIGHT_SHIFT)); 738adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tex[i].cmd[TEX_PP_BORDER_COLOR] = 0; 739adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tex[i].cmd[TEX_PP_TXFORMAT_X] = 740adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (/* R200_TEXCOORD_PROJ | */ 741adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 0x100000); /* Small default bias */ 7424637235183b80963536f2364e4d50fcb894886ddDave Airlie if (rmesa->radeon.radeonScreen->drmSupportsFragShader) { 743f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[i].cmd[TEX_PP_TXOFFSET_NEWDRM] = 7444637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.radeonScreen->texOffset[RADEON_LOCAL_TEX_HEAP]; 745f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[i].cmd[TEX_PP_CUBIC_FACES] = 0; 746f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[i].cmd[TEX_PP_TXMULTI_CTL] = 0; 747f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger } 748f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger else { 749f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger rmesa->hw.tex[i].cmd[TEX_PP_TXOFFSET_OLDDRM] = 7504637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.radeonScreen->texOffset[RADEON_LOCAL_TEX_HEAP]; 751f20917de5bd2b1fc152e74304d3649a1f6042422Roland Scheidegger } 752adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 753adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.cube[i].cmd[CUBE_PP_CUBIC_FACES] = 0; 754067603db91072fc3b02e1583195641972f81168fMichel Dänzer rmesa->hw.cube[i].cmd[CUBE_PP_CUBIC_OFFSET_F1] = 7554637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.radeonScreen->texOffset[RADEON_LOCAL_TEX_HEAP]; 756067603db91072fc3b02e1583195641972f81168fMichel Dänzer rmesa->hw.cube[i].cmd[CUBE_PP_CUBIC_OFFSET_F2] = 7574637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.radeonScreen->texOffset[RADEON_LOCAL_TEX_HEAP]; 758067603db91072fc3b02e1583195641972f81168fMichel Dänzer rmesa->hw.cube[i].cmd[CUBE_PP_CUBIC_OFFSET_F3] = 7594637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.radeonScreen->texOffset[RADEON_LOCAL_TEX_HEAP]; 760067603db91072fc3b02e1583195641972f81168fMichel Dänzer rmesa->hw.cube[i].cmd[CUBE_PP_CUBIC_OFFSET_F4] = 7614637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.radeonScreen->texOffset[RADEON_LOCAL_TEX_HEAP]; 762067603db91072fc3b02e1583195641972f81168fMichel Dänzer rmesa->hw.cube[i].cmd[CUBE_PP_CUBIC_OFFSET_F5] = 7634637235183b80963536f2364e4d50fcb894886ddDave Airlie rmesa->radeon.radeonScreen->texOffset[RADEON_LOCAL_TEX_HEAP]; 764adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 7651bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger rmesa->hw.pix[i].cmd[PIX_PP_TXCBLEND] = 7661bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger (R200_TXC_ARG_A_ZERO | 7671bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXC_ARG_B_ZERO | 7681bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXC_ARG_C_DIFFUSE_COLOR | 7691bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXC_OP_MADD); 7701bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger 7711bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger rmesa->hw.pix[i].cmd[PIX_PP_TXCBLEND2] = 7721bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger ((i << R200_TXC_TFACTOR_SEL_SHIFT) | 7731bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXC_SCALE_1X | 7741bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXC_CLAMP_0_1 | 7751bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXC_OUTPUT_REG_R0); 7761bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger 7771bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger rmesa->hw.pix[i].cmd[PIX_PP_TXABLEND] = 7781bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger (R200_TXA_ARG_A_ZERO | 7791bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXA_ARG_B_ZERO | 7801bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXA_ARG_C_DIFFUSE_ALPHA | 7811bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXA_OP_MADD); 7821bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger 7831bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger rmesa->hw.pix[i].cmd[PIX_PP_TXABLEND2] = 7841bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger ((i << R200_TXA_TFACTOR_SEL_SHIFT) | 7851bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXA_SCALE_1X | 7861bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXA_CLAMP_0_1 | 7871bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger R200_TXA_OUTPUT_REG_R0); 7881bf9499ee172b25a9021e7b00b766e97faa34ad4Roland Scheidegger } 789adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 790adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tf.cmd[TF_TFACTOR_0] = 0; 791adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tf.cmd[TF_TFACTOR_1] = 0; 792adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tf.cmd[TF_TFACTOR_2] = 0; 793adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tf.cmd[TF_TFACTOR_3] = 0; 794adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tf.cmd[TF_TFACTOR_4] = 0; 795adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tf.cmd[TF_TFACTOR_5] = 0; 796adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 797adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vap.cmd[VAP_SE_VAP_CNTL] = 798adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_VAP_TCL_ENABLE | 799adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (0x9 << R200_VAP_VF_MAX_VTX_NUM__SHIFT)); 800adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 801adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vte.cmd[VTE_SE_VTE_CNTL] = 802adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_VPORT_X_SCALE_ENA | 803adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VPORT_Y_SCALE_ENA | 804adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VPORT_Z_SCALE_ENA | 805adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VPORT_X_OFFSET_ENA | 806adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VPORT_Y_OFFSET_ENA | 807adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VPORT_Z_OFFSET_ENA | 808adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* FIXME: Turn on for tex rect only */ 809adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VTX_ST_DENORMALIZED | 810adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VTX_W0_FMT); 811adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 812adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 813adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vtx.cmd[VTX_VTXFMT_0] = 0; 814adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vtx.cmd[VTX_VTXFMT_1] = 0; 815adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vtx.cmd[VTX_TCL_OUTPUT_VTXFMT_0] = 816adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ((R200_VTX_Z0 | R200_VTX_W0 | 817adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_VTX_FP_RGBA << R200_VTX_COLOR_0_SHIFT))); 818adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vtx.cmd[VTX_TCL_OUTPUT_VTXFMT_1] = 0; 819adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vtx.cmd[VTX_TCL_OUTPUT_COMPSEL] = (R200_OUTPUT_XYZW); 820adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.vtx.cmd[VTX_STATE_CNTL] = R200_VSC_UPDATE_USER_COLOR_0_ENABLE; 821adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 822adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 823adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Matrix selection */ 824adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msl.cmd[MSL_MATRIX_SELECT_0] = 825adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_MTX_MV << R200_MODELVIEW_0_SHIFT); 826adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 827adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msl.cmd[MSL_MATRIX_SELECT_1] = 828adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_MTX_IMV << R200_IT_MODELVIEW_0_SHIFT); 829adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 830adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msl.cmd[MSL_MATRIX_SELECT_2] = 831adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_MTX_MVP << R200_MODELPROJECT_0_SHIFT); 832adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 833adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msl.cmd[MSL_MATRIX_SELECT_3] = 834adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ((R200_MTX_TEX0 << R200_TEXMAT_0_SHIFT) | 835adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_MTX_TEX1 << R200_TEXMAT_1_SHIFT) | 836adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_MTX_TEX2 << R200_TEXMAT_2_SHIFT) | 837adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_MTX_TEX3 << R200_TEXMAT_3_SHIFT)); 838adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 839adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.msl.cmd[MSL_MATRIX_SELECT_4] = 840adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ((R200_MTX_TEX4 << R200_TEXMAT_4_SHIFT) | 841adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_MTX_TEX5 << R200_TEXMAT_5_SHIFT)); 842adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 843adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 844adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* General TCL state */ 845adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL_0] = 846adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_SPECULAR_LIGHTS | 847adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_DIFFUSE_SPECULAR_COMBINE | 848a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger R200_LOCAL_LIGHT_VEC_GL | 849a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger R200_LM0_SOURCE_MATERIAL_0 << R200_FRONT_SHININESS_SOURCE_SHIFT | 850a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger R200_LM0_SOURCE_MATERIAL_1 << R200_BACK_SHININESS_SOURCE_SHIFT); 851adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 852adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcl.cmd[TCL_LIGHT_MODEL_CTL_1] = 853a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger ((R200_LM1_SOURCE_MATERIAL_0 << R200_FRONT_EMISSIVE_SOURCE_SHIFT) | 854a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger (R200_LM1_SOURCE_MATERIAL_0 << R200_FRONT_AMBIENT_SOURCE_SHIFT) | 855a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger (R200_LM1_SOURCE_MATERIAL_0 << R200_FRONT_DIFFUSE_SOURCE_SHIFT) | 856a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger (R200_LM1_SOURCE_MATERIAL_0 << R200_FRONT_SPECULAR_SOURCE_SHIFT) | 857a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger (R200_LM1_SOURCE_MATERIAL_1 << R200_BACK_EMISSIVE_SOURCE_SHIFT) | 858a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger (R200_LM1_SOURCE_MATERIAL_1 << R200_BACK_AMBIENT_SOURCE_SHIFT) | 859a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger (R200_LM1_SOURCE_MATERIAL_1 << R200_BACK_DIFFUSE_SOURCE_SHIFT) | 860a1b9b1a4409729fa8b6714e5847544576fcee404Roland Scheidegger (R200_LM1_SOURCE_MATERIAL_1 << R200_BACK_SPECULAR_SOURCE_SHIFT)); 861adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 862adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcl.cmd[TCL_PER_LIGHT_CTL_0] = 0; /* filled in via callbacks */ 863adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcl.cmd[TCL_PER_LIGHT_CTL_1] = 0; 864adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcl.cmd[TCL_PER_LIGHT_CTL_2] = 0; 865adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcl.cmd[TCL_PER_LIGHT_CTL_3] = 0; 866adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 867adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] = 868adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (R200_UCP_IN_CLIP_SPACE | 869adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_CULL_FRONT_IS_CCW); 870adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 871adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Texgen/Texmat state */ 872b1ebd306bf4fdc4076d3d3daa410b08f477cb4c4Eric Anholt rmesa->hw.tcg.cmd[TCG_TEX_PROC_CTL_2] = 0x00ffffff; 873adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcg.cmd[TCG_TEX_PROC_CTL_3] = 874adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ((0 << R200_TEXGEN_0_INPUT_TEX_SHIFT) | 875adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (1 << R200_TEXGEN_1_INPUT_TEX_SHIFT) | 876adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (2 << R200_TEXGEN_2_INPUT_TEX_SHIFT) | 877adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (3 << R200_TEXGEN_3_INPUT_TEX_SHIFT) | 878adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (4 << R200_TEXGEN_4_INPUT_TEX_SHIFT) | 879adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (5 << R200_TEXGEN_5_INPUT_TEX_SHIFT)); 880adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcg.cmd[TCG_TEX_PROC_CTL_0] = 0; 881adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcg.cmd[TCG_TEX_PROC_CTL_1] = 882adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ((0 << R200_TEXGEN_0_INPUT_SHIFT) | 883adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (1 << R200_TEXGEN_1_INPUT_SHIFT) | 884adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (2 << R200_TEXGEN_2_INPUT_SHIFT) | 885adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (3 << R200_TEXGEN_3_INPUT_SHIFT) | 886adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (4 << R200_TEXGEN_4_INPUT_SHIFT) | 887adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (5 << R200_TEXGEN_5_INPUT_SHIFT)); 888adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.tcg.cmd[TCG_TEX_CYL_WRAP_CTL] = 0; 889adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 890adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 891adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell for (i = 0 ; i < 8; i++) { 892adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct gl_light *l = &ctx->Light.Light[i]; 893adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLenum p = GL_LIGHT0 + i; 894adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell *(float *)&(rmesa->hw.lit[i].cmd[LIT_RANGE_CUTOFF]) = FLT_MAX; 895adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 896adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Lightfv( ctx, p, GL_AMBIENT, l->Ambient ); 897adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Lightfv( ctx, p, GL_DIFFUSE, l->Diffuse ); 898adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Lightfv( ctx, p, GL_SPECULAR, l->Specular ); 8990846e52d46b36c411f79908df010072e03bb6437Brian Paul ctx->Driver.Lightfv( ctx, p, GL_POSITION, NULL ); 9000846e52d46b36c411f79908df010072e03bb6437Brian Paul ctx->Driver.Lightfv( ctx, p, GL_SPOT_DIRECTION, NULL ); 901adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Lightfv( ctx, p, GL_SPOT_EXPONENT, &l->SpotExponent ); 902adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Lightfv( ctx, p, GL_SPOT_CUTOFF, &l->SpotCutoff ); 903adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Lightfv( ctx, p, GL_CONSTANT_ATTENUATION, 904adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell &l->ConstantAttenuation ); 905adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Lightfv( ctx, p, GL_LINEAR_ATTENUATION, 906adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell &l->LinearAttenuation ); 907adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Lightfv( ctx, p, GL_QUADRATIC_ATTENUATION, 908bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl &l->QuadraticAttenuation ); 9095d00e131d8a264498b8d050c3eded093ee5c42f2Michel Dänzer *(float *)&(rmesa->hw.lit[i].cmd[LIT_ATTEN_XXX]) = 0.0; 910adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } 911adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 912adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.LightModelfv( ctx, GL_LIGHT_MODEL_AMBIENT, 913adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Light.Model.Ambient ); 914adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 915adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell TNL_CONTEXT(ctx)->Driver.NotifyMaterialChange( ctx ); 916adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 917adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell for (i = 0 ; i < 6; i++) { 918adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.ClipPlane( ctx, GL_CLIP_PLANE0 + i, NULL ); 919adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } 920adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 9210846e52d46b36c411f79908df010072e03bb6437Brian Paul ctx->Driver.Fogfv( ctx, GL_FOG_MODE, NULL ); 922adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Fogfv( ctx, GL_FOG_DENSITY, &ctx->Fog.Density ); 923adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Fogfv( ctx, GL_FOG_START, &ctx->Fog.Start ); 924adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Fogfv( ctx, GL_FOG_END, &ctx->Fog.End ); 925adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell ctx->Driver.Fogfv( ctx, GL_FOG_COLOR, ctx->Fog.Color ); 9260846e52d46b36c411f79908df010072e03bb6437Brian Paul ctx->Driver.Fogfv( ctx, GL_FOG_COORDINATE_SOURCE_EXT, NULL ); 927adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 928adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.grd.cmd[GRD_VERT_GUARD_CLIP_ADJ] = IEEE_ONE; 929adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.grd.cmd[GRD_VERT_GUARD_DISCARD_ADJ] = IEEE_ONE; 930adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.grd.cmd[GRD_HORZ_GUARD_CLIP_ADJ] = IEEE_ONE; 931adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.grd.cmd[GRD_HORZ_GUARD_DISCARD_ADJ] = IEEE_ONE; 932adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 933adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.eye.cmd[EYE_X] = 0; 934adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.eye.cmd[EYE_Y] = 0; 935adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.eye.cmd[EYE_Z] = IEEE_ONE; 936adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell rmesa->hw.eye.cmd[EYE_RESCALE_FACTOR] = IEEE_ONE; 937adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 938cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.spr.cmd[SPR_POINT_SPRITE_CNTL] = 939cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger R200_PS_SE_SEL_STATE | R200_PS_MULT_CONST; 940cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger 941cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger /* ptp_eye is presumably used to calculate the attenuation wrt a different 942cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger location? In any case, since point attenuation triggers _needeyecoords, 943cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger it is constant. Probably ignored as long as R200_PS_USE_MODEL_EYE_VEC 944cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger isn't set */ 945cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_EYE_X] = 0; 946cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_EYE_Y] = 0; 947cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_EYE_Z] = IEEE_ONE | 0x80000000; /* -1.0 */ 948cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_EYE_3] = 0; 949cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger /* no idea what the ptp_vport_scale values are good for, except the 950cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger PTSIZE one - hopefully doesn't matter */ 951cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_VPORT_SCALE_0] = IEEE_ONE; 952cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_VPORT_SCALE_1] = IEEE_ONE; 953cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_VPORT_SCALE_PTSIZE] = IEEE_ONE; 954cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_VPORT_SCALE_3] = IEEE_ONE; 955cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_ATT_CONST_QUAD] = 0; 956cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_ATT_CONST_LIN] = 0; 957cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_ATT_CONST_CON] = IEEE_ONE; 958cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_ATT_CONST_3] = 0; 959cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_CLAMP_MIN] = IEEE_ONE; 960cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_CLAMP_MAX] = 0x44ffe000; /* 2047 */ 961cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_CLAMP_2] = 0; 962cb977ae5f4c9fab5753c04bfdd8736978ad4feeeRoland Scheidegger rmesa->hw.ptp.cmd[PTP_CLAMP_3] = 0; 96344dace86eaf9eded8e6465adfadf6345658686ddRoland Scheidegger 964adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200LightingSpaceChange( ctx ); 96544dace86eaf9eded8e6465adfadf6345658686ddRoland Scheidegger 9660c8f8d3dc9d60ed34eeca7f3606651420a81753cEric Anholt rmesa->hw.all_dirty = GL_TRUE; 967adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell} 968