r200_context.h revision 48ccaf200940613032dfaaafe71382947f398004
1bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_context.h,v 1.2 2002/12/16 16:18:54 dawes Exp $ */ 2bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl/* 3adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellCopyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. 4adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 5adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellThe Weather Channel (TM) funded Tungsten Graphics to develop the 6adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellinitial release of the Radeon 8500 driver under the XFree86 license. 7adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellThis notice must be preserved. 8adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 9adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellPermission is hereby granted, free of charge, to any person obtaining 10adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwella copy of this software and associated documentation files (the 11adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell"Software"), to deal in the Software without restriction, including 12adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellwithout limitation the rights to use, copy, modify, merge, publish, 13adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwelldistribute, sublicense, and/or sell copies of the Software, and to 14adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellpermit persons to whom the Software is furnished to do so, subject to 15adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellthe following conditions: 16adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 17adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellThe above copyright notice and this permission notice (including the 18adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellnext paragraph) shall be included in all copies or substantial 19adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellportions of the Software. 20adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 21adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 22adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 23adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 24adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellIN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE 25adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 26adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 27adbec39bbf671ad80f6c557801e274cac0d305faKeith WhitwellWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 28adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 29adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell**************************************************************************/ 30adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 31adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* 32adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * Authors: 33adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * Keith Whitwell <keith@tungstengraphics.com> 34adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 35adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 36adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#ifndef __R200_CONTEXT_H__ 37adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define __R200_CONTEXT_H__ 38adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 39adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#ifdef GLX_DIRECT_RENDERING 40adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 41e946688edac5cdf153652defae3ef732a3487416Ian Romanick#include "tnl/t_vertex.h" 42ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl#include "drm.h" 43ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl#include "radeon_drm.h" 44adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "dri_util.h" 45adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "texmem.h" 46adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 47adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "macros.h" 48adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "mtypes.h" 49adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "colormac.h" 50adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "r200_reg.h" 51adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 5295a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick#define ENABLE_HW_3D_TEXTURE 1 /* XXX this is temporary! */ 53adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 54adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_context; 55adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwelltypedef struct r200_context r200ContextRec; 56adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwelltypedef struct r200_context *r200ContextPtr; 57adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 58adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "r200_lock.h" 59adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "r200_screen.h" 60adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "mm.h" 61adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 62adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* Flags for software fallback cases */ 63adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* See correponding strings in r200_swtcl.c */ 64adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_FALLBACK_TEXTURE 0x1 65adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_FALLBACK_DRAW_BUFFER 0x2 66adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_FALLBACK_STENCIL 0x4 67adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_FALLBACK_RENDER_MODE 0x8 68adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_FALLBACK_BLEND_EQ 0x10 69adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_FALLBACK_BLEND_FUNC 0x20 70adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_FALLBACK_DISABLE 0x40 71adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_FALLBACK_BORDER_MODE 0x80 72adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 73adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* The blit width for texture uploads 74adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 75adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define BLIT_WIDTH_BYTES 1024 76adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 77adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* Use the templated vertex format: 78adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 79adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define COLOR_IS_RGBA 80adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TAG(x) r200##x 81adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#include "tnl_dd/t_dd_vertex.h" 82adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#undef TAG 83adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 84adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwelltypedef void (*r200_tri_func)( r200ContextPtr, 85adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200Vertex *, 86adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200Vertex *, 87adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200Vertex * ); 88adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 89adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwelltypedef void (*r200_line_func)( r200ContextPtr, 90adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200Vertex *, 91adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200Vertex * ); 92adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 93adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwelltypedef void (*r200_point_func)( r200ContextPtr, 94adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200Vertex * ); 95adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 96adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 97adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_colorbuffer_state { 98adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint clear; 99adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLint drawOffset, drawPitch; 100273e52f86fa41564f573c8e84d013f995e01a8f0Alan Hourihane int roundEnable; 101adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 102adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 103adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 104adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_depthbuffer_state { 105adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLfloat scale; 106adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 107adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 108adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_pixel_state { 109adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLint readOffset, readPitch; 110adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 111adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 112adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_scissor_state { 113ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_clip_rect_t rect; 114adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean enabled; 115adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 116adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint numClipRects; /* Cliprects active */ 117adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint numAllocedClipRects; /* Cliprects available */ 118ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_clip_rect_t *pClipRects; 119adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 120adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 121adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_stencilbuffer_state { 122adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean hwBuffer; 123adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint clear; /* rb3d_stencilrefmask value */ 124adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 125adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 126adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_stipple_state { 127adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint mask[32]; 128adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 129adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 130adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 131adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 132adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_0 0x1 133adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_1 0x2 13448ccaf200940613032dfaaafe71382947f398004Roland Scheidegger#define TEX_2 0x4 13548ccaf200940613032dfaaafe71382947f398004Roland Scheidegger#define TEX_3 0x8 13648ccaf200940613032dfaaafe71382947f398004Roland Scheidegger#define TEX_4 0x10 13748ccaf200940613032dfaaafe71382947f398004Roland Scheidegger#define TEX_5 0x20 13848ccaf200940613032dfaaafe71382947f398004Roland Scheidegger#define TEX_ALL 0x3f 139adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 140adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwelltypedef struct r200_tex_obj r200TexObj, *r200TexObjPtr; 141adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 142adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* Texture object in locally shared texture space. 143adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 144adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_tex_obj { 145adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell driTextureObject base; 146adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 147adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint bufAddr; /* Offset to start of locally 148adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell shared texture block */ 149adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 150adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint dirty_state; /* Flags (1 per texunit) for 151adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell whether or not this texobj 152adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell has dirty hardware state 153adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (pp_*) that needs to be 154adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell brought into the 155adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell texunit. */ 156adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 157ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_radeon_tex_image_t image[6][RADEON_MAX_TEXTURE_LEVELS]; 158adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Six, for the cube faces */ 159adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 160adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint pp_txfilter; /* hardware register values */ 161adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint pp_txformat; 162adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint pp_txformat_x; 163adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint pp_txoffset; /* Image location in texmem. 164adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell All cube faces follow. */ 165adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint pp_txsize; /* npot only */ 166adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint pp_txpitch; /* npot only */ 167adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint pp_border_color; 168adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint pp_cubic_faces; /* cube face 1,2,3,4 log2 sizes */ 169adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 170adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean border_fallback; 171adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 172adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 173adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 174adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_texture_env_state { 175adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200TexObjPtr texobj; 176adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLenum format; 177adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLenum envMode; 178adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 179adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 18048ccaf200940613032dfaaafe71382947f398004Roland Scheidegger#define R200_MAX_TEXTURE_UNITS 6 181adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 182adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_texture_state { 183adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_texture_env_state unit[R200_MAX_TEXTURE_UNITS]; 184adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 185adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 186adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 187adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_state_atom { 188adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom *next, *prev; 189adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell const char *name; /* for debug */ 190adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int cmd_size; /* size in bytes */ 191adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint idx; 192adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int *cmd; /* one or more cmd's */ 193adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int *lastcmd; /* one or more cmd's */ 194a05b1549f7b6da7d9313b9addf2d01b9c61f34d7Keith Whitwell GLboolean dirty; 195adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean (*check)( GLcontext *, int ); /* is this state active? */ 196adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 197adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 198adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 199adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 200adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* Trying to keep these relatively short as the variables are becoming 201adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * extravagently long. Drop the driver name prefix off the front of 202adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * everything - I think we know which driver we're in by now, and keep the 203adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * prefix to 3 letters unless absolutely impossible. 204adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 205adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 206adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_CMD_0 0 207adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_PP_MISC 1 208adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_PP_FOG_COLOR 2 209adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_RE_SOLID_COLOR 3 210adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_RB3D_BLENDCNTL 4 211adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_RB3D_DEPTHOFFSET 5 212adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_RB3D_DEPTHPITCH 6 213adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_RB3D_ZSTENCILCNTL 7 214adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_CMD_1 8 215adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_PP_CNTL 9 216adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_RB3D_CNTL 10 217adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_RB3D_COLOROFFSET 11 218adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_CMD_2 12 /* why */ 219adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CTX_RB3D_COLORPITCH 13 /* why */ 220033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger#define CTX_STATE_SIZE_OLDDRM 14 221033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger#define CTX_CMD_3 14 222033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger#define CTX_RB3D_BLENDCOLOR 15 223033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger#define CTX_RB3D_ABLENDCNTL 16 224033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger#define CTX_RB3D_CBLENDCNTL 17 225033728555cb2f39d8c77f228e1eccc45329bb40aRoland Scheidegger#define CTX_STATE_SIZE_NEWDRM 18 226adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 227adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define SET_CMD_0 0 228adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define SET_SE_CNTL 1 229adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define SET_RE_CNTL 2 /* replace se_coord_fmt */ 230adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define SET_STATE_SIZE 3 231adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 232adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTE_CMD_0 0 233adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTE_SE_VTE_CNTL 1 234adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTE_STATE_SIZE 2 235adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 236adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIN_CMD_0 0 237adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIN_RE_LINE_PATTERN 1 238adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIN_RE_LINE_STATE 2 239adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIN_CMD_1 3 240adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIN_SE_LINE_WIDTH 4 241adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIN_STATE_SIZE 5 242adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 243adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSK_CMD_0 0 244adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSK_RB3D_STENCILREFMASK 1 245adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSK_RB3D_ROPCNTL 2 246adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSK_RB3D_PLANEMASK 3 247adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSK_STATE_SIZE 4 248adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 249adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VPT_CMD_0 0 250adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VPT_SE_VPORT_XSCALE 1 251adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VPT_SE_VPORT_XOFFSET 2 252adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VPT_SE_VPORT_YSCALE 3 253adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VPT_SE_VPORT_YOFFSET 4 254adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VPT_SE_VPORT_ZSCALE 5 255adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VPT_SE_VPORT_ZOFFSET 6 256adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VPT_STATE_SIZE 7 257adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 258adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define ZBS_CMD_0 0 259adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define ZBS_SE_ZBIAS_FACTOR 1 260adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define ZBS_SE_ZBIAS_CONSTANT 2 261adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define ZBS_STATE_SIZE 3 262adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 263adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSC_CMD_0 0 264adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSC_RE_MISC 1 265adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSC_STATE_SIZE 2 266adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 267adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TAM_CMD_0 0 268adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TAM_DEBUG3 1 269adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TAM_STATE_SIZE 2 270adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 271adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_CMD_0 0 272adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_PP_TXFILTER 1 /*2c00*/ 273adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_PP_TXFORMAT 2 /*2c04*/ 274adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_PP_TXFORMAT_X 3 /*2c08*/ 275adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_PP_TXSIZE 4 /*2c0c*/ 276adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_PP_TXPITCH 5 /*2c10*/ 277adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_PP_BORDER_COLOR 6 /*2c14*/ 278adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_CMD_1 7 279adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_PP_TXOFFSET 8 /*2d00 */ 280adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TEX_STATE_SIZE 9 281adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 282adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CUBE_CMD_0 0 /* 1 register follows */ 283adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CUBE_PP_CUBIC_FACES 1 /* 0x2c18 */ 284adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CUBE_CMD_1 2 /* 5 registers follow */ 285adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CUBE_PP_CUBIC_OFFSET_F1 3 /* 0x2d04 */ 286adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CUBE_PP_CUBIC_OFFSET_F2 4 /* 0x2d08 */ 287adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CUBE_PP_CUBIC_OFFSET_F3 5 /* 0x2d0c */ 288adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CUBE_PP_CUBIC_OFFSET_F4 6 /* 0x2d10 */ 289adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CUBE_PP_CUBIC_OFFSET_F5 7 /* 0x2d14 */ 290adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CUBE_STATE_SIZE 8 291adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 292adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define PIX_CMD_0 0 293adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define PIX_PP_TXCBLEND 1 294adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define PIX_PP_TXCBLEND2 2 295adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define PIX_PP_TXABLEND 3 296adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define PIX_PP_TXABLEND2 4 297adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define PIX_STATE_SIZE 5 298adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 299adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TF_CMD_0 0 300adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TF_TFACTOR_0 1 301adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TF_TFACTOR_1 2 302adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TF_TFACTOR_2 3 303adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TF_TFACTOR_3 4 304adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TF_TFACTOR_4 5 305adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TF_TFACTOR_5 6 306adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TF_STATE_SIZE 7 307adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 308adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_CMD_0 0 309adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_LIGHT_MODEL_CTL_0 1 310adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_LIGHT_MODEL_CTL_1 2 311adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_PER_LIGHT_CTL_0 3 312adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_PER_LIGHT_CTL_1 4 313adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_PER_LIGHT_CTL_2 5 314adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_PER_LIGHT_CTL_3 6 315adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_CMD_1 7 316adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_UCP_VERT_BLEND_CTL 8 317adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCL_STATE_SIZE 9 318adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 319adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSL_CMD_0 0 320adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSL_MATRIX_SELECT_0 1 321adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSL_MATRIX_SELECT_1 2 322adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSL_MATRIX_SELECT_2 3 323adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSL_MATRIX_SELECT_3 4 324adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSL_MATRIX_SELECT_4 5 325adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MSL_STATE_SIZE 6 326adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 327adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCG_CMD_0 0 328adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCG_TEX_PROC_CTL_2 1 329adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCG_TEX_PROC_CTL_3 2 330adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCG_TEX_PROC_CTL_0 3 331adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCG_TEX_PROC_CTL_1 4 332adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCG_TEX_CYL_WRAP_CTL 5 333adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define TCG_STATE_SIZE 6 334adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 335adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_CMD_0 0 336adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_EMMISSIVE_RED 1 337adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_EMMISSIVE_GREEN 2 338adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_EMMISSIVE_BLUE 3 339adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_EMMISSIVE_ALPHA 4 340adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_AMBIENT_RED 5 341adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_AMBIENT_GREEN 6 342adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_AMBIENT_BLUE 7 343adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_AMBIENT_ALPHA 8 344adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_DIFFUSE_RED 9 345adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_DIFFUSE_GREEN 10 346adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_DIFFUSE_BLUE 11 347adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_DIFFUSE_ALPHA 12 348adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_SPECULAR_RED 13 349adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_SPECULAR_GREEN 14 350adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_SPECULAR_BLUE 15 351adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_SPECULAR_ALPHA 16 352adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_CMD_1 17 353adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_SHININESS 18 354adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MTL_STATE_SIZE 19 355adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 356adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VAP_CMD_0 0 357adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VAP_SE_VAP_CNTL 1 358adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VAP_STATE_SIZE 2 359adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 360adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* Replaces a lot of packet info from radeon 361adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 362adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_CMD_0 0 363adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_VTXFMT_0 1 364adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_VTXFMT_1 2 365adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_TCL_OUTPUT_VTXFMT_0 3 366adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_TCL_OUTPUT_VTXFMT_1 4 367adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_CMD_1 5 368adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_TCL_OUTPUT_COMPSEL 6 369adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_CMD_2 7 370adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_STATE_CNTL 8 371adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_STATE_SIZE 9 372adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 373adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 374adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define VTX_COLOR(v,n) (((v)>>(R200_VTX_COLOR_0_SHIFT+(n)*2))&\ 375adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell R200_VTX_COLOR_MASK) 376adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 37795a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick/** 37895a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick * Given the \c R200_SE_VTX_FMT_1 for the current vertex state, determine 37995a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick * how many components are in texture coordinate \c n. 38095a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick */ 38195a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick#define VTX_TEXn_COUNT(v,n) (((v) >> (3 * n)) & 0x07) 38295a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick 383adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MAT_CMD_0 0 384adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MAT_ELT_0 1 385adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define MAT_STATE_SIZE 17 386adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 387adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GRD_CMD_0 0 388adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GRD_VERT_GUARD_CLIP_ADJ 1 389adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GRD_VERT_GUARD_DISCARD_ADJ 2 390adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GRD_HORZ_GUARD_CLIP_ADJ 3 391adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GRD_HORZ_GUARD_DISCARD_ADJ 4 392adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GRD_STATE_SIZE 5 393adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 394adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* position changes frequently when lighting in modelpos - separate 395adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * out to new state item? 396adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 397adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_CMD_0 0 398adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_AMBIENT_RED 1 399adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_AMBIENT_GREEN 2 400adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_AMBIENT_BLUE 3 401adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_AMBIENT_ALPHA 4 402adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_DIFFUSE_RED 5 403adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_DIFFUSE_GREEN 6 404adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_DIFFUSE_BLUE 7 405adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_DIFFUSE_ALPHA 8 406adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_SPECULAR_RED 9 407adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_SPECULAR_GREEN 10 408adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_SPECULAR_BLUE 11 409adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_SPECULAR_ALPHA 12 410adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_POSITION_X 13 411adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_POSITION_Y 14 412adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_POSITION_Z 15 413adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_POSITION_W 16 414adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_DIRECTION_X 17 415adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_DIRECTION_Y 18 416adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_DIRECTION_Z 19 417adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_DIRECTION_W 20 4185d00e131d8a264498b8d050c3eded093ee5c42f2Michel Dänzer#define LIT_ATTEN_QUADRATIC 21 419adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_ATTEN_LINEAR 22 4205d00e131d8a264498b8d050c3eded093ee5c42f2Michel Dänzer#define LIT_ATTEN_CONST 23 421adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_ATTEN_XXX 24 422adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_CMD_1 25 423adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_SPOT_DCD 26 424adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_SPOT_DCM 27 425adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_SPOT_EXPONENT 28 426adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_SPOT_CUTOFF 29 427adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_SPECULAR_THRESH 30 428adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_RANGE_CUTOFF 31 /* ? */ 4295d00e131d8a264498b8d050c3eded093ee5c42f2Michel Dänzer#define LIT_ATTEN_CONST_INV 32 430adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define LIT_STATE_SIZE 33 431adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 432adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* Fog 433adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 434adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define FOG_CMD_0 0 435adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define FOG_R 1 436adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define FOG_C 2 437adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define FOG_D 3 438adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define FOG_PAD 4 439adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define FOG_STATE_SIZE 5 440adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 441adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* UCP 442adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 443adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define UCP_CMD_0 0 444adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define UCP_X 1 445adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define UCP_Y 2 446adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define UCP_Z 3 447adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define UCP_W 4 448adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define UCP_STATE_SIZE 5 449adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 450adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* GLT - Global ambient 451adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 452adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GLT_CMD_0 0 453adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GLT_RED 1 454adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GLT_GREEN 2 455adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GLT_BLUE 3 456adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GLT_ALPHA 4 457adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define GLT_STATE_SIZE 5 458adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 459adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* EYE 460adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 461adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define EYE_CMD_0 0 462adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define EYE_X 1 463adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define EYE_Y 2 464adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define EYE_Z 3 465adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define EYE_RESCALE_FACTOR 4 466adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define EYE_STATE_SIZE 5 467adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 468adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* CST - constant state 469adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 470adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_CMD_0 0 471adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_PP_CNTL_X 1 472adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_CMD_1 2 473adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_RB3D_DEPTHXY_OFFSET 3 474adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_CMD_2 4 475adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_RE_AUX_SCISSOR_CNTL 5 476adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_CMD_3 6 477adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_RE_SCISSOR_TL_0 7 478adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_RE_SCISSOR_BR_0 8 479adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_CMD_4 9 480adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_SE_VAP_CNTL_STATUS 10 481adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_CMD_5 11 482adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_RE_POINTSIZE 12 483adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_CMD_6 13 484adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_SE_TCL_INPUT_VTX_0 14 485adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_SE_TCL_INPUT_VTX_1 15 486adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_SE_TCL_INPUT_VTX_2 16 487adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_SE_TCL_INPUT_VTX_3 17 488adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define CST_STATE_SIZE 18 489adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 490adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 491adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 492adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 493adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_hw_state { 494adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* All state should be on one of these lists: 495adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 496adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom dirty; /* dirty list head placeholder */ 497adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom clean; /* clean list head placeholder */ 498adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 499adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Hardware state, stored as cmdbuf commands: 500adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * -- Need to doublebuffer for 501adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * - reviving state after loss of context 502adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * - eliding noop statechange loops? (except line stipple count) 503adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 504adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom ctx; 505adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom set; 506adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom vte; 507adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom lin; 508adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom msk; 509adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom vpt; 510adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom vap; 511adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom vtx; 512adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom tcl; 513adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom msl; 514adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom tcg; 515adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom msc; 516adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom cst; 517adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom tam; 518adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom tf; 51948ccaf200940613032dfaaafe71382947f398004Roland Scheidegger struct r200_state_atom tex[6]; 52048ccaf200940613032dfaaafe71382947f398004Roland Scheidegger struct r200_state_atom cube[6]; 521adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom zbs; 522adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom mtl[2]; 52348ccaf200940613032dfaaafe71382947f398004Roland Scheidegger struct r200_state_atom mat[9]; 524adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom lit[8]; /* includes vec, scl commands */ 525adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom ucp[6]; 526adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom pix[6]; /* pixshader stages */ 527adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom eye; /* eye pos */ 528adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom grd; /* guard band clipping */ 529adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom fog; 530adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state_atom glt; 531adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 532adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 533adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_state { 534adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Derived state for internal purposes: 535adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 536adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_colorbuffer_state color; 537adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_depthbuffer_state depth; 538adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_pixel_state pixel; 539adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_scissor_state scissor; 540adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_stencilbuffer_state stencil; 541adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_stipple_state stipple; 542adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_texture_state texture; 543adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 544adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 545adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* Need refcounting on dma buffers: 546adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 547adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_dma_buffer { 548adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int refcount; /* the number of retained regions in buf */ 549adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell drmBufPtr buf; 550adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 551adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 552bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl#define GET_START(rvb) (rmesa->r200Screen->gart_buffer_offset + \ 553adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (rvb)->address - rmesa->dma.buf0_address + \ 554adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell (rvb)->start) 555adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 556adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* A retained region, eg vertices for indexed vertices. 557adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 558adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_dma_region { 559adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_buffer *buf; 560adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell char *address; /* == buf->address */ 561adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int start, end, ptr; /* offsets from start of buf */ 562adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int aos_start; 563adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int aos_stride; 564adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int aos_size; 565adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 566adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 567adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 568adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_dma { 569adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Active dma region. Allocations for vertices and retained 570adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * regions come from here. Also used for emitting random vertices, 571adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * these may be flushed by calling flush_current(); 572adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 573adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_region current; 574adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 575adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell void (*flush)( r200ContextPtr ); 576adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 577adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell char *buf0_address; /* start of buf[0], for index calcs */ 578adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint nr_released_bufs; /* flush after so many buffers released */ 579adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 580adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 581adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_dri_mirror { 582adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell __DRIcontextPrivate *context; /* DRI context */ 583adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell __DRIscreenPrivate *screen; /* DRI screen */ 584adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell __DRIdrawablePrivate *drawable; /* DRI drawable bound to this ctx */ 585adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 586c06b25594e5effe34a90c067e1a3da0f61cf2b13Ian Romanick drm_context_t hwContext; 587ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_hw_lock_t *hwLock; 588adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int fd; 589adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int drmMinor; 590adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 591adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 592adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 593adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_CMD_BUF_SZ (8*1024) 594adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 595adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_store { 596adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint statenr; 597adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint primnr; 598adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell char cmd_buf[R200_CMD_BUF_SZ]; 599adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int cmd_used; 600adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int elts_start; 601adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 602adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 603adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 604adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* r200_tcl.c 605adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 606adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_tcl_info { 607adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint vertex_format; 608adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLint last_offset; 609adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint hw_primitive; 610adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 611adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_region *aos_components[8]; 612adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint nr_aos_components; 613adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 614adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint *Elts; 615adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 616adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_region indexed_verts; 617adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_region obj; 618adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_region rgba; 619adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_region spec; 620adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_region fog; 621adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_region tex[R200_MAX_TEXTURE_UNITS]; 622adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_region norm; 623adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 624adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 625adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 626adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* r200_swtcl.c 627adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 628adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_swtcl_info { 629adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint RenderIndex; 630e946688edac5cdf153652defae3ef732a3487416Ian Romanick 631e946688edac5cdf153652defae3ef732a3487416Ian Romanick /** 632e946688edac5cdf153652defae3ef732a3487416Ian Romanick * Size of a hardware vertex. This is calculated when \c ::vertex_attrs is 633e946688edac5cdf153652defae3ef732a3487416Ian Romanick * installed in the Mesa state vector. 634e946688edac5cdf153652defae3ef732a3487416Ian Romanick */ 635adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint vertex_size; 636e946688edac5cdf153652defae3ef732a3487416Ian Romanick 637e946688edac5cdf153652defae3ef732a3487416Ian Romanick /** 638e946688edac5cdf153652defae3ef732a3487416Ian Romanick * Attributes instructing the Mesa TCL pipeline where / how to put vertex 639e946688edac5cdf153652defae3ef732a3487416Ian Romanick * data in the hardware buffer. 640e946688edac5cdf153652defae3ef732a3487416Ian Romanick */ 641e946688edac5cdf153652defae3ef732a3487416Ian Romanick struct tnl_attr_map vertex_attrs[VERT_ATTRIB_MAX]; 642e946688edac5cdf153652defae3ef732a3487416Ian Romanick 643e946688edac5cdf153652defae3ef732a3487416Ian Romanick /** 644e946688edac5cdf153652defae3ef732a3487416Ian Romanick * Number of elements of \c ::vertex_attrs that are actually used. 645e946688edac5cdf153652defae3ef732a3487416Ian Romanick */ 646e946688edac5cdf153652defae3ef732a3487416Ian Romanick GLuint vertex_attr_count; 647e946688edac5cdf153652defae3ef732a3487416Ian Romanick 648e946688edac5cdf153652defae3ef732a3487416Ian Romanick /** 649e946688edac5cdf153652defae3ef732a3487416Ian Romanick * Cached pointer to the buffer where Mesa will store vertex data. 650e946688edac5cdf153652defae3ef732a3487416Ian Romanick */ 6515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLubyte *verts; 652adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 653adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Fallback rasterization functions 654adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 655adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200_point_func draw_point; 656adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200_line_func draw_line; 657adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200_tri_func draw_tri; 658adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 659adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint hw_primitive; 660adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLenum render_primitive; 661adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint numverts; 662adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 663e946688edac5cdf153652defae3ef732a3487416Ian Romanick /** 664e946688edac5cdf153652defae3ef732a3487416Ian Romanick * Offset of the 4UB color data within a hardware (swtcl) vertex. 665e946688edac5cdf153652defae3ef732a3487416Ian Romanick */ 666e946688edac5cdf153652defae3ef732a3487416Ian Romanick GLuint coloroffset; 667e946688edac5cdf153652defae3ef732a3487416Ian Romanick 668e946688edac5cdf153652defae3ef732a3487416Ian Romanick /** 669e946688edac5cdf153652defae3ef732a3487416Ian Romanick * Offset of the 3UB specular color data within a hardware (swtcl) vertex. 670e946688edac5cdf153652defae3ef732a3487416Ian Romanick */ 671e946688edac5cdf153652defae3ef732a3487416Ian Romanick GLuint specoffset; 672e946688edac5cdf153652defae3ef732a3487416Ian Romanick 673e946688edac5cdf153652defae3ef732a3487416Ian Romanick /** 674e946688edac5cdf153652defae3ef732a3487416Ian Romanick * Should Mesa project vertex data or will the hardware do it? 675e946688edac5cdf153652defae3ef732a3487416Ian Romanick */ 676e946688edac5cdf153652defae3ef732a3487416Ian Romanick GLboolean needproj; 677e946688edac5cdf153652defae3ef732a3487416Ian Romanick 678adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma_region indexed_verts; 679adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 680adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 681adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 682adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_ioctl { 683adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint vertex_offset; 684adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint vertex_size; 685adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 686adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 687adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 688adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 689adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_MAX_PRIMS 64 690adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 691adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 692adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* Want to keep a cache of these around. Each is parameterized by 693adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * only a single value which has only a small range. Only expect a 694adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * few, so just rescan the list each time? 695adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 696adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct dynfn { 697adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *next, *prev; 698adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int key[2]; 699adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell char *code; 700adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 701adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 702adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct dfn_lists { 703adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Vertex2f; 704adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Vertex2fv; 705adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Vertex3f; 706adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Vertex3fv; 707adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Color4ub; 708adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Color4ubv; 709adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Color3ub; 710adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Color3ubv; 711adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Color4f; 712adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Color4fv; 713adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Color3f; 714adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Color3fv; 715adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn SecondaryColor3ubEXT; 716adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn SecondaryColor3ubvEXT; 717adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn SecondaryColor3fEXT; 718adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn SecondaryColor3fvEXT; 719adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Normal3f; 720adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn Normal3fv; 72195a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick struct dynfn TexCoord3f; 72295a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick struct dynfn TexCoord3fv; 723adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn TexCoord2f; 724adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn TexCoord2fv; 725adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn TexCoord1f; 726adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn TexCoord1fv; 72795a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick struct dynfn MultiTexCoord3fARB; 72895a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick struct dynfn MultiTexCoord3fvARB; 729adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn MultiTexCoord2fARB; 730adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn MultiTexCoord2fvARB; 731adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn MultiTexCoord1fARB; 732adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn MultiTexCoord1fvARB; 733adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 734adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 735adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct dfn_generators { 736adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Vertex2f)( GLcontext *, const int * ); 737adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Vertex2fv)( GLcontext *, const int * ); 738adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Vertex3f)( GLcontext *, const int * ); 739adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Vertex3fv)( GLcontext *, const int * ); 740adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Color4ub)( GLcontext *, const int * ); 741adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Color4ubv)( GLcontext *, const int * ); 742adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Color3ub)( GLcontext *, const int * ); 743adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Color3ubv)( GLcontext *, const int * ); 744adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Color4f)( GLcontext *, const int * ); 745adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Color4fv)( GLcontext *, const int * ); 746adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Color3f)( GLcontext *, const int * ); 747adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Color3fv)( GLcontext *, const int * ); 748adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*SecondaryColor3ubEXT)( GLcontext *, const int * ); 749adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*SecondaryColor3ubvEXT)( GLcontext *, const int * ); 750adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*SecondaryColor3fEXT)( GLcontext *, const int * ); 751adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*SecondaryColor3fvEXT)( GLcontext *, const int * ); 752adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Normal3f)( GLcontext *, const int * ); 753adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*Normal3fv)( GLcontext *, const int * ); 75495a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick struct dynfn *(*TexCoord3f)( GLcontext *, const int * ); 75595a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick struct dynfn *(*TexCoord3fv)( GLcontext *, const int * ); 756adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*TexCoord2f)( GLcontext *, const int * ); 757adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*TexCoord2fv)( GLcontext *, const int * ); 758adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*TexCoord1f)( GLcontext *, const int * ); 759adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*TexCoord1fv)( GLcontext *, const int * ); 76095a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick struct dynfn *(*MultiTexCoord3fARB)( GLcontext *, const int * ); 76195a0bd6762737bb25bdf5c4147da9d1372f6aac3Ian Romanick struct dynfn *(*MultiTexCoord3fvARB)( GLcontext *, const int * ); 762adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*MultiTexCoord2fARB)( GLcontext *, const int * ); 763adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*MultiTexCoord2fvARB)( GLcontext *, const int * ); 764adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*MultiTexCoord1fARB)( GLcontext *, const int * ); 765adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dynfn *(*MultiTexCoord1fvARB)( GLcontext *, const int * ); 766adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 767adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 768adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 769adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 770adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_prim { 771adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint start; 772adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint end; 773adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint prim; 774adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 775adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 77648ccaf200940613032dfaaafe71382947f398004Roland Scheidegger /* A maximum total of 29 elements per vertex: 3 floats for position, 3 777adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * floats for normal, 4 floats for color, 4 bytes for secondary color, 77848ccaf200940613032dfaaafe71382947f398004Roland Scheidegger * 3 floats for each texture unit (18 floats total). 779adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * 78048ccaf200940613032dfaaafe71382947f398004Roland Scheidegger * we maybe need add. 4 to prevent segfault if someone specifies 78148ccaf200940613032dfaaafe71382947f398004Roland Scheidegger * GL_TEXTURE6/GL_TEXTURE7 (esp. for the codegen-path) (FIXME: ) 782adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * 783adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * The position data is never actually stored here, so 3 elements could be 784adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * trimmed out of the buffer. 785adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 78648ccaf200940613032dfaaafe71382947f398004Roland Scheidegger 78748ccaf200940613032dfaaafe71382947f398004Roland Scheidegger#define R200_MAX_VERTEX_SIZE ((3*6)+11) 78848ccaf200940613032dfaaafe71382947f398004Roland Scheidegger 78948ccaf200940613032dfaaafe71382947f398004Roland Scheideggerstruct r200_vbinfo { 79048ccaf200940613032dfaaafe71382947f398004Roland Scheidegger GLint counter, initial_counter; 79148ccaf200940613032dfaaafe71382947f398004Roland Scheidegger GLint *dmaptr; 79248ccaf200940613032dfaaafe71382947f398004Roland Scheidegger void (*notify)( void ); 79348ccaf200940613032dfaaafe71382947f398004Roland Scheidegger GLint vertex_size; 79448ccaf200940613032dfaaafe71382947f398004Roland Scheidegger 79548ccaf200940613032dfaaafe71382947f398004Roland Scheidegger union { float f; int i; r200_color_t color; } vertex[R200_MAX_VERTEX_SIZE]; 796adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 797adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLfloat *normalptr; 798adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLfloat *floatcolorptr; 799adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200_color_t *colorptr; 800adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLfloat *floatspecptr; 801adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200_color_t *specptr; 80248ccaf200940613032dfaaafe71382947f398004Roland Scheidegger GLfloat *texcoordptr[8]; /* 6 (TMU) + 2 for r200_vtxfmt_c.c when GL_TEXTURE6/7 */ 803adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 804adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 805adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLenum *prim; /* &ctx->Driver.CurrentExecPrimitive */ 806adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint primflags; 807adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean enabled; /* *_NO_VTXFMT / *_NO_TCL env vars */ 808adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean installed; 809adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean fell_back; 810adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean recheck; 811adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLint nrverts; 812adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint vtxfmt_0, vtxfmt_1; 813adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 814adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint installed_vertex_format; 815adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint installed_color_3f_sz; 816adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 817adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_prim primlist[R200_MAX_PRIMS]; 818adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell int nrprims; 819adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 820adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dfn_lists dfn_cache; 821adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct dfn_generators codegen; 822adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLvertexformat vtxfmt; 823adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 824adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 825adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 826adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 827adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 828adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstruct r200_context { 829adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLcontext *glCtx; /* Mesa context */ 830adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 831adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Driver and hardware state management 832adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 833adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_hw_state hw; 834adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_state state; 835adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 836adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Texture object bookkeeping 837adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 838adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell unsigned nr_heaps; 839adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell driTexHeap * texture_heaps[ R200_NR_TEX_HEAPS ]; 840adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell driTextureObject swapped; 841d907a75498360fb96ec2314bb0abb105be74d500Alan Hourihane int texture_depth; 842d3fd7ba8af15bead2f770d68a893449adeb11397Brian Paul float initialMaxAnisotropy; 843adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 844adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Rasterization and vertex state: 845adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 846adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint TclFallback; 847adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint Fallback; 848adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint NewGLState; 849adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 850adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Vertex buffers 851adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 852adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_ioctl ioctl; 853adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dma dma; 854adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_store store; 855adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 856adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Page flipping 857adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 858adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint doPageFlip; 859adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 860adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Busy waiting 861adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 862adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint do_usleeps; 863adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint do_irqs; 864adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint irqsEmitted; 865ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_radeon_irq_wait_t iw; 866adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 867adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Clientdata textures; 868adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 869bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl GLuint prefer_gart_client_texturing; 870adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 871adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Drawable, cliprect and scissor information 872adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 873adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint numClipRects; /* Cliprects for the draw buffer */ 874ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_clip_rect_t *pClipRects; 875adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell unsigned int lastStamp; 876adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean lost_context; 877adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell r200ScreenPtr r200Screen; /* Screen private DRI data */ 878ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_radeon_sarea_t *sarea; /* Private SAREA data */ 879adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 880adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* TCL stuff 881adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 882adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLmatrix TexGenMatrix[R200_MAX_TEXTURE_UNITS]; 883adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean recheck_texgen[R200_MAX_TEXTURE_UNITS]; 884adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLboolean TexGenNeedNormals[R200_MAX_TEXTURE_UNITS]; 885adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint TexMatEnabled; 886adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint TexMatCompSel; 887adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint TexGenEnabled; 888adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint TexGenInputs; 889adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint TexGenCompSel; 890adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLmatrix tmpmat; 891adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 892adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* VBI / buffer swap 893adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 894adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint vbl_seq; 895adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint vblank_flags; 896adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 897afa446db83ecf5dcb38ce46648fb12911628de32Ian Romanick int64_t swap_ust; 898afa446db83ecf5dcb38ce46648fb12911628de32Ian Romanick int64_t swap_missed_ust; 899adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 900adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint swap_count; 901adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLuint swap_missed_count; 902adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 903adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell PFNGLXGETUSTPROC get_ust; 904adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 905adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* r200_tcl.c 906adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 907adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_tcl_info tcl; 908adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 909adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* r200_swtcl.c 910adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 911adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_swtcl_info swtcl; 912adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 913adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* r200_vtxfmt.c 914adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 915adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_vbinfo vb; 916adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 917adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell /* Mirrors of some DRI state 918adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 919adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell struct r200_dri_mirror dri; 920bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl 921bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl /* Configuration cache 922bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl */ 923bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl driOptionCache optionCache; 924adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell}; 925adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 926adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_CONTEXT(ctx) ((r200ContextPtr)(ctx->DriverCtx)) 927adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 928adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 929adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellstatic __inline GLuint r200PackColor( GLuint cpp, 930adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLubyte r, GLubyte g, 931adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell GLubyte b, GLubyte a ) 932adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell{ 933adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell switch ( cpp ) { 934adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell case 2: 935adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell return PACK_COLOR_565( r, g, b ); 936adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell case 4: 937adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell return PACK_COLOR_8888( a, r, g, b ); 938adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell default: 939adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell return 0; 940adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell } 941adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell} 942adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 943adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 944adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellextern void r200DestroyContext( __DRIcontextPrivate *driContextPriv ); 945adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellextern GLboolean r200CreateContext( const __GLcontextModes *glVisual, 946adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell __DRIcontextPrivate *driContextPriv, 947adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell void *sharedContextPrivate); 948adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellextern void r200SwapBuffers( __DRIdrawablePrivate *dPriv ); 949adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellextern GLboolean r200MakeCurrent( __DRIcontextPrivate *driContextPriv, 950adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell __DRIdrawablePrivate *driDrawPriv, 951adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell __DRIdrawablePrivate *driReadPriv ); 952adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellextern GLboolean r200UnbindContext( __DRIcontextPrivate *driContextPriv ); 953adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 954adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell/* ================================================================ 955adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell * Debugging: 956adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell */ 957adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DO_DEBUG 1 958adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 959adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#if DO_DEBUG 960adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwellextern int R200_DEBUG; 961adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#else 962adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define R200_DEBUG 0 963adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#endif 964adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 965adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_TEXTURE 0x001 966adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_STATE 0x002 967adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_IOCTL 0x004 968adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_PRIMS 0x008 969adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_VERTS 0x010 970adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_FALLBACKS 0x020 971adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_VFMT 0x040 972adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_CODEGEN 0x080 973adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_VERBOSE 0x100 974adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_DRI 0x200 975adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_DMA 0x400 976adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_SANITY 0x800 977adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_SYNC 0x1000 978adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_PIXEL 0x2000 979adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#define DEBUG_MEMORY 0x4000 980adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell 981adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#endif 982adbec39bbf671ad80f6c557801e274cac0d305faKeith Whitwell#endif /* __R200_CONTEXT_H__ */ 983